Analiza nastrojów w mediach społecznościowych może być bardzo przydatna do monitorowania marki, konkurencji lub dowolnego innego interesującego tematu. W tym artykule pokażemy, jak zbudować system, który słucha mediów społecznościowych, takich jak Reddit, Hacker News, Linkedin, Twitter itp. i automatycznie przeprowadza analizę nastrojów na treściach dzięki generatywnej sztucznej inteligencji.
Social listening to czynność polegająca na zwracaniu uwagi i interpretowaniu rozmów na dowolne tematy na platformach mediów społecznościowych, witrynach z recenzjami i innych kanałach online.
Z drugiej strony, analiza sentymentu to proces identyfikacji i kategoryzacji opinii wyrażonych w tekście jako pozytywne, negatywne lub neutralne. Polega ona na wykorzystaniu przetwarzania języka naturalnego, analizy tekstu i lingwistyki komputerowej do systematycznej identyfikacji, wyodrębniania, kwantyfikacji i badania stanów afektywnych i subiektywnych informacji.
Łącząc social listening z analizą sentymentu, można śledzić i analizować sentyment wyrażany w rozmowach związanych z marką lub konkurencją. Jest to również znane jako "analiza sentymentu marki". Analiza sentymentu marki pozwala automatycznie zrozumieć, co konsumenci myślą o Twojej marce lub konkurencji, zidentyfikować obszary wymagające poprawy, wskoczyć do właściwej rozmowy w mediach społecznościowych, aby zaangażować potencjalnych klientów i podejmować decyzje oparte na danych w celu poprawy reputacji marki i lojalności klientów.
Stworzenie platformy nasłuchu społecznościowego wymaga podłączenia się do platformy mediów społecznościowych i pobierania wszystkich nowych postów i komentarzy zawierających słowa kluczowe, które chcesz monitorować.
Jest to łatwiejsze do osiągnięcia, jeśli platforma, którą planujesz monitorować, udostępnia interfejs API. Na przykład Reddit udostępnia API, które można łatwo wykorzystać. Oto proste żądanie cURL, które pobiera 100 ostatnich postów Reddit:
curl https://www.reddit.com/r/all/new/.json?limit=100
A oto typowa odpowiedź zwracana przez ich API:
{
"kind": "Listing",
"data": {
"after": "t3_1asad4n",
"dist": 100,
"modhash": "ne8fi0fr55b56b8a75f8075df95fa2f03951cb5812b0f9660d",
"geo_filter": "",
"children": [
{
"kind": "t3",
"data": {
"approved_at_utc": null,
"subreddit": "GunAccessoriesForSale",
"selftext": "Morning gents. I\u2019m looking to snag up your forgotten factory yellow spring for the 509T. I need to source one for a buddy who lost his and I cannot find any available anywhere! \n\nIf one of you have the yellow spring laying around, looking to pay $50 shipped\u2026 \n\nTo my 509t owners, it\u2019s the \u201clight\u201d spring that comes in a plastic bag in the carrying case. \n\nThanks in advance ",
"author_fullname": "t2_2ezh71n6",
"saved": false,
"mod_reason_title": null,
"gilded": 0,
"clicked": false,
"title": "[WTB] 509T yellow spring",
"link_flair_richtext": [],
"subreddit_name_prefixed": "r/GunAccessoriesForSale",
[...]
"contest_mode": false,
"mod_reports": [],
"author_patreon_flair": false,
"author_flair_text_color": "dark",
"permalink": "/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
"parent_whitelist_status": null,
"stickied": false,
"url": "https://www.reddit.com/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
"subreddit_subscribers": 182613,
"created_utc": 1708094934.0,
"num_crossposts": 0,
"media": null,
"is_video": false
}
},
[...]
]
}
}
Przygotowaliśmy dedykowany samouczek pokazujący, jak monitorować Reddit za pomocą prostego programu Go. Przeczytaj więcej o tym, jak monitorować Reddit za pomocą Go.
Każda platforma mediów społecznościowych ma swoje własne subtelności, których niestety nie możemy omówić w tym artykule. Aby łatwo monitorować platformy mediów społecznościowych (takie jak Reddit, Linkedin, X, Hacker News i inne), warto zasubskrybować dedykowaną platformę social listening, taką jak nasza usługa KWatch.io. Wypróbuj KWatch.io za darmo tutaj.
Dodaj słowa kluczowe w panelu KWatch.io
Niektóre z głównych wyzwań podczas nasłuchiwania mediów społecznościowych to duża ilość danych, które trzeba obsłużyć, fakt, że możesz zostać zablokowany przez platformę mediów społecznościowych, jeśli wykonasz zbyt wiele żądań, oraz fakt, że musisz być sprytny w sposobie obsługi danych.
W następnej sekcji wyjaśnimy, jak zintegrować zebrane dane z systemem.
Po zebraniu danych z platform mediów społecznościowych należy przechowywać je w bazie danych lub hurtowni danych. Pozwoli to analizować dane, przeprowadzać analizę nastrojów i generować spostrzeżenia.
Istnieje kilka sposobów przechowywania danych z mediów społecznościowych (które są w zasadzie czystymi danymi tekstowymi), w zależności od wymagań i ilości danych, z którymi masz do czynienia. Niektóre popularne opcje obejmują:
Jeśli subskrybujesz platformę social listening, powinieneś sprawdzić, czy oferuje ona możliwość przesyłania danych do twojego systemu.
Webhooks, często określane jako "web callbacks" lub "HTTP push API", służą aplikacjom do udostępniania danych w czasie rzeczywistym innym aplikacjom. Osiąga się to poprzez generowanie żądań HTTP POST, gdy wystąpią określone zdarzenia, a tym samym szybkie dostarczanie informacji do innych aplikacji.
Na przykład na naszej platformie, KWatch.io, należy przejść do sekcji "powiadomienia" i ustawić adres URL webhook wskazujący na system.
Webhook API na KWatch.io
Oto jak wygląda webhook KWatch.io (jest to ładunek JSON):
{
"platform": "reddit",
"query": "Keywords: vllm",
"datetime": "19 Jan 24 05:52 UTC",
"link": "https://www.reddit.com/r/LocalLLaMA/comments/19934kd/sglang_new/kijvtk5/",
"content": "sglang runtime has a different architecture on the higher-level part with vllm.",
}
Jeśli dopiero zaczynasz, możesz bez wysiłku odbierać te webhooki w Pythonie za pomocą FastAPI.
Zainstaluj FastAPI z serwerem Uvicorn:
pip install fastapi uvicorn
Teraz utwórz nowy plik Pythona i wklej poniższy kod (może być konieczne dostosowanie tego skryptu):
# Import necessary modules
from fastapi import FastAPI
from pydantic import BaseModel
# Initialize your FastAPI app
app = FastAPI()
# Update the Pydantic model to properly type-check and validate the incoming data
class WebhookData(BaseModel):
platform: str
query: str
datetime: str
link: str
content: str
# Define an endpoint to receive webhook data
@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
# Process the incoming data
# For demonstration, we're just printing it
print("Received webhook data:", webhook_data.dict())
# Return a response
return {"message": "Webhook data received successfully"}
if __name__ == "__main__":
# Run the server with Uvicorn
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
Zapisz plik i uruchom serwer za pomocą następującego polecenia:
uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000
Twój serwer jest teraz uruchomiony i gotowy do odbierania webhooków z KWatch.io.
Po zebraniu i zapisaniu danych z mediów społecznościowych można przeprowadzić na nich analizę nastrojów.
Obecnie najdokładniejszym sposobem przeprowadzenia analizy sentymentu na fragmencie tekstu dotyczącym określonego słowa kluczowego jest użycie generatywnych modeli sztucznej inteligencji, takich jak GPT-4, LLaMA 3, ChatDolphin itp. Te LLM niekoniecznie są szybkie i mogą być kosztowne na dużą skalę, ale gwarantują najnowocześniejsze wyniki. Jeśli musisz analizować bardzo duże ilości słów kluczowych, możesz obniżyć koszty, używając mniejszych modeli lub dostroić własny model.
Możesz wdrożyć własny model sztucznej inteligencji lub podłączyć się do interfejsu API sztucznej inteligencji, takiego jak OpenAI lub NLP Cloud. W tym artykule podłączymy się do NLP Cloud AI API.
Możesz zarejestrować się w NLP Cloud i pobrać klucz API tutaj.Twoja prośba nie musi być zbyt skomplikowana. Na przykład tutaj jest komentarz na Reddit, dotyczący OpenAI:
Komentarz na Reddicie na temat OpenAI
Użyjmy modelu ChatDolphin na NLP Cloud, aby przeanalizować sentyment na temat OpenAI w tym komentarzu na Reddicie. Najpierw zainstaluj klienta NLP Cloud Python:
pip install nlpcloud
Teraz możesz przeanalizować sentyment komentarza Reddit za pomocą następującego kodu Pythona:
import nlpcloud
brand = "OpenAI"
reddit_comment = "Wasn't it the same with all OpenAI products? Amazing and groundbreaking at first, soon ruined by excessive censorship and outpaced by the competitors"
client = nlpcloud.Client("chatdolphin", "your api token", gpu=True)
print(client.generation(f"What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n{reddit_comment}"))
Odpowiedź będzie następująca:
Negative
Teraz podsumujmy i napiszmy ostateczny kod, który nasłuchuje webhook API i przeprowadza analizę sentymentu na danych:
from fastapi import FastAPI
from pydantic import BaseModel
import nlpcloud
client = nlpcloud.Client("dolphin", "your api token", gpu=True)
app = FastAPI()
class WebhookData(BaseModel):
platform: str
query: str
datetime: str
link: str
content: str
@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
brand = "OpenAI"
print(client.generation(f"""What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n
{webhook_data.content}"""))
return {"message": "Webhook data received successfully"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
Jak widać, możliwe jest zautomatyzowanie analizy nastrojów na danych z mediów społecznościowych za pomocą nowoczesnych modeli generatywnej sztucznej inteligencji i wydajnych narzędzi do nasłuchu społecznościowego. Podejście to może być stosowane w różnych scenariuszach monitorowania mediów społecznościowych. Oto kilka pomysłów:
Produkcja takiego programu może jednak stanowić wyzwanie. Po pierwsze dlatego, że media społecznościowe nie są tak łatwe do monitorowania, ale także dlatego, że generatywne modele sztucznej inteligencji mogą być kosztowne w użyciu na dużych ilościach danych.
Jeśli nie chcesz samodzielnie budować i utrzymywać takiego systemu, zalecamy skorzystanie z naszej platformy KWatch.io, która automatycznie monitoruje media społecznościowe i przeprowadza analizę sentymentu wykrytych postów i komentarzy: zarejestrować się na KWatch.io tutaj.
Arthur
CTO w KWatch.io