Sentimentanalyse op sociale media kan erg nuttig zijn om je merk, je concurrenten of elk ander onderwerp van belang te monitoren. In dit artikel laten we zien hoe je een systeem kunt bouwen dat luistert naar sociale media zoals Reddit, Hacker News, Linkedin, Twitter, etc., en automatisch een sentimentanalyse uitvoert op de inhoud dankzij generatieve AI.
Social listening is het letten op en interpreteren van gesprekken over een bepaald onderwerp op sociale mediaplatforms, reviewsites en andere online kanalen.
Sentimentanalyse daarentegen is het proces van het identificeren en categoriseren van meningen die in een stuk tekst worden uitgedrukt als positief, negatief of neutraal. Hierbij worden natuurlijke taalverwerking, tekstanalyse en computationele linguïstiek gebruikt om systematisch affectieve toestanden en subjectieve informatie te identificeren, extraheren, kwantificeren en bestuderen.
Als je social listening en sentimentanalyse combineert, kun je het sentiment in conversaties over je merk of je concurrenten volgen en analyseren. Dit wordt ook wel "merksentimentanalyse" genoemd. Met merksentimentanalyse kun je automatisch begrijpen hoe consumenten over je merk of je concurrenten denken, verbeterpunten identificeren, in de juiste conversatie op sociale media springen om in gesprek te gaan met potentiële klanten en gegevensgestuurde beslissingen nemen om de reputatie van je merk en de klantloyaliteit te verbeteren.
Om een social listening platform te maken, moet u verbinding maken met een social media platform en alle nieuwe berichten en commentaren ophalen die de sleutelwoorden bevatten die u wilt monitoren.
Dit is gemakkelijker te bereiken als het platform dat je wilt monitoren een API beschikbaar stelt. Reddit stelt bijvoorbeeld een API beschikbaar die je gemakkelijk kunt gebruiken. Hier is een eenvoudig cURL verzoek dat de laatste 100 Reddit berichten ophaalt:
curl https://www.reddit.com/r/all/new/.json?limit=100
En hier is een typische respons die door hun API wordt geretourneerd:
{
"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
}
},
[...]
]
}
}
We hebben een speciale tutorial gemaakt die laat zien hoe je Reddit kunt monitoren met een eenvoudig Go-programma. Lees hier meer over hoe je Reddit kunt monitoren met Go.
Elk social media platform heeft zijn eigen subtiliteiten die we helaas niet in dit artikel kunnen behandelen. Om sociale mediaplatformen (zoals Reddit, Linkedin, X, Hacker News en meer) gemakkelijk te kunnen monitoren, kunt u zich misschien beter abonneren op een speciaal social listening platform zoals onze service KWatch.io. Probeer KWatch.io hier gratis uit.
Trefwoorden toevoegen in je KWatch.io Dashboard
Enkele van de grootste uitdagingen bij het luisteren naar sociale media zijn de grote hoeveelheid gegevens die je moet verwerken, het feit dat je geblokkeerd kunt worden door het sociale mediaplatform als je te veel verzoeken doet en het feit dat je slim moet zijn over de manier waarop je met de gegevens omgaat.
In het volgende gedeelte leggen we uit hoe je de verzamelde gegevens in je systeem kunt integreren.
Zodra je de gegevens van sociale mediaplatforms hebt verzameld, moet je deze opslaan in een database of een datawarehouse. Hierdoor kun je de gegevens analyseren, sentimentanalyses uitvoeren en inzichten genereren.
Er zijn verschillende manieren om gegevens van sociale media (in principe pure tekstgegevens) op te slaan, afhankelijk van uw vereisten en de hoeveelheid gegevens waarmee u te maken hebt. Enkele veelgebruikte opties zijn:
Als je je hebt geabonneerd op een social listening platform, moet je controleren of ze een manier bieden om de gegevens over te zetten naar je systeem.
Webhooks, vaak 'web callbacks' of 'HTTP push API' genoemd, dienen als middel voor applicaties om real-time gegevens te delen met andere applicaties. Dit wordt bereikt door HTTP POST verzoeken te genereren wanneer specifieke gebeurtenissen plaatsvinden, waardoor informatie onmiddellijk aan andere applicaties wordt geleverd.
Op ons platform, KWatch.io, moet je bijvoorbeeld naar het gedeelte "meldingen" gaan en een webhook URL instellen die naar jouw systeem verwijst.
API Webhook op KWatch.io
Hier zie je hoe de KWatch.io webhook eruit ziet (het is een JSON payload):
{
"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.",
}
Als dit nieuw voor je is, kun je deze webhooks moeiteloos in Python ontvangen met FastAPI.
Installeer FastAPI met de Uvicorn-server:
pip install fastapi uvicorn
Maak nu een nieuw Python-bestand en plak de volgende code (misschien moet je dit script aanpassen):
# 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)
Sla het bestand op en start de server met het volgende commando:
uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000
Je server draait nu en is klaar om webhooks te ontvangen van KWatch.io.
Zodra je de gegevens van sociale media hebt verzameld en opgeslagen, kun je er sentimentanalyse op uitvoeren.
Vandaag de dag is de meest nauwkeurige manier om een sentimentanalyse uit te voeren op een stuk tekst over een specifiek trefwoord het gebruik van generatieve AI-modellen zoals GPT-4, LLaMA 3, ChatDolphin, enz. Deze LLM's zijn niet noodzakelijk snel en kunnen duur zijn op schaal, maar ze garanderen state of the art resultaten. Als je zeer grote hoeveelheden trefwoorden moet analyseren, kun je de kosten verlagen door kleinere modellen te gebruiken of je eigen model te verfijnen.
Je kunt je eigen AI-model implementeren of gebruik maken van een AI API zoals OpenAI of NLP Cloud. In dit artikel pluggen we in de NLP Cloud AI API.
U kunt zich hier registreren op NLP Cloud en uw API-sleutel ophalen.Je verzoek hoeft niet al te complex te zijn. Hier is bijvoorbeeld een reactie op Reddit, over OpenAI:
Een reactie op Reddit over OpenAI
Laten we het ChatDolphin-model op NLP Cloud gebruiken om het sentiment over OpenAI in dit Reddit-commentaar te analyseren. Installeer eerst de NLP Cloud Python-client:
pip install nlpcloud
Nu kun je het sentiment van het commentaar op Reddit analyseren met de volgende Python-code:
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}"))
Het antwoord zal zijn:
Negative
Laten we nu afronden en de uiteindelijke code schrijven die luistert naar de API webhook en sentimentanalyse uitvoert op de gegevens:
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)
Zoals je kunt zien, is het mogelijk om sentimentanalyse op sociale mediagegevens te automatiseren met behulp van moderne generatieve AI-modellen en efficiënte tools voor social listening. Deze aanpak kan worden toegepast in verschillende scenario's voor het monitoren van sociale media. Hier volgen enkele ideeën:
Het produceren van een dergelijk programma kan echter een uitdaging zijn. Ten eerste omdat sociale media niet zo gemakkelijk te monitoren zijn, maar ook omdat generatieve AI-modellen duur kunnen zijn om te gebruiken op grote hoeveelheden gegevens.
Als je zo'n systeem niet zelf wilt bouwen en onderhouden, raden we je aan om in plaats daarvan ons platform KWatch.io te gebruiken, omdat we sociale media automatisch monitoren en sentimentanalyse uitvoeren op de gedetecteerde berichten en commentaren: registreer je hier op KWatch.io.
Arthur
CTO bij KWatch.io