Jak vytvořit potrubí pro analýzu sentimentu v sociálních médiích

Analýza sentimentu na sociálních sítích může být velmi užitečná pro sledování vaší značky, konkurence nebo jakéhokoli jiného tématu, které vás zajímá. V tomto článku vám ukážeme, jak vytvořit systém, který naslouchá sociálním médiím, jako jsou Reddit, Hacker News, Linkedin, Twitter atd., a automaticky provádí analýzu sentimentu na obsahu díky generativní umělé inteligenci.

Analýza nálad v sociálních médiích

Kombinace sociálního naslouchání s analýzou sentimentu pro analýzu sentimentu značky

Naslouchání na sociálních sítích je činnost, při které se věnuje pozornost a interpretuje konverzace na libovolná témata na platformách sociálních médií, recenzních webech a dalších online kanálech.

Analýza sentimentu je naproti tomu proces identifikace a kategorizace názorů vyjádřených v textu jako pozitivních, negativních nebo neutrálních. Zahrnuje použití zpracování přirozeného jazyka, analýzy textu a počítačové lingvistiky k systematické identifikaci, extrakci, kvantifikaci a studiu afektivních stavů a subjektivních informací.

Když zkombinujete naslouchání na sociálních sítích a analýzu sentimentu, můžete sledovat a analyzovat sentiment vyjádřený v konverzacích týkajících se vaší značky nebo vašich konkurentů. To je také známé jako "analýza sentimentu značky". Analýza sentimentu značky vám umožní automaticky porozumět tomu, co si spotřebitelé myslí o vaší značce nebo o vašich konkurentech, identifikovat oblasti, které je třeba zlepšit, zapojit se do správné konverzace v sociálních médiích a navázat kontakt s potenciálními zákazníky a přijímat rozhodnutí založená na datech, která posílí pověst vaší značky a loajalitu zákazníků.

Vytvoření platformy pro sociální naslouchání

Vytvoření platformy pro naslouchání na sociálních sítích vyžaduje, abyste se připojili k platformě sociálních médií a načítali všechny nové příspěvky a komentáře, které obsahují klíčová slova, jež chcete sledovat.

Toho lze snáze dosáhnout, pokud platforma, kterou plánujete sledovat, zpřístupňuje rozhraní API. Například Reddit vystavuje rozhraní API, které můžete snadno využívat. Zde je jednoduchý požadavek cURL, který načte posledních 100 příspěvků na Redditu:

curl https://www.reddit.com/r/all/new/.json?limit=100

A zde je typická odpověď vrácená jejich rozhraním 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
                    }
                },
            [...]
            ]
        }
    }

Vytvořili jsme speciální výukový program, který ukazuje, jak sledovat Reddit pomocí jednoduchého programu Go. Další informace o sledování Redditu pomocí Go najdete zde.

Každá platforma sociálních médií má své vlastní jemnosti, které bohužel nemůžeme v tomto článku popsat. Pro snadné sledování platforem sociálních médií (jako je Reddit, Linkedin, X, Hacker News a další) si můžete předplatit specializovanou platformu pro naslouchání sociálním sítím, jako je naše služba KWatch.io. KWatch.io si můžete zdarma vyzkoušet zde.

Přidání klíčových slov na řídicí panel KWatch.io Přidání klíčových slov na řídicí panel KWatch.io

Mezi hlavní problémy při naslouchání sociálním médiím patří velký objem dat, který musíte zpracovat, skutečnost, že vás platforma sociálních médií může zablokovat, pokud zadáte příliš mnoho požadavků, a skutečnost, že musíte chytře zacházet s daty.

V další části vysvětlíme, jak shromážděná data integrovat do systému.

Integrace dat sociálních médií do systému

Po shromáždění dat z platforem sociálních médií je třeba je uložit do databáze nebo datového skladu. To vám umožní data analyzovat, provádět analýzu sentimentu a generovat poznatky.

Existuje několik způsobů ukládání dat sociálních médií (což jsou v podstatě čistě textová data), které závisí na vašich požadavcích a objemu dat, s nimiž pracujete. Mezi běžné možnosti patří:

Pokud jste se přihlásili k odběru na platformě pro naslouchání na sociálních sítích, měli byste zkontrolovat, zda nabízí způsob přenosu dat do vašeho systému.

Webhooks, často označované jako "webové zpětné volání" nebo "HTTP push API", slouží aplikacím ke sdílení dat v reálném čase s jinými aplikacemi. Toho je dosaženo generováním požadavků HTTP POST, když dojde k určitým událostem, a tím okamžitým doručením informací ostatním aplikacím.

Například na naší platformě KWatch.io byste měli přejít do sekce "oznámení" a nastavit adresu URL webhooku směřující na váš systém.

Webový háček API na KWatch.io Webový háček API na KWatch.io

Takto vypadá webový háček KWatch.io (jedná se o 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.",
}

Pokud jste v této oblasti nováčci, můžete tyto webové háčky snadno přijímat v jazyce Python pomocí rozhraní FastAPI.

Nainstalujte FastAPI se serverem Uvicorn:

pip install fastapi uvicorn

Nyní vytvořte nový soubor Pythonu a vložte následující kód (možná budete muset tento skript upravit):

# 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)

Uložte soubor a spusťte server následujícím příkazem:

uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000

Váš server je nyní spuštěn a připraven přijímat webové háčky ze služby KWatch.io.

Provádění analýzy sentimentu na datech pomocí generativních modelů umělé inteligence, jako je GPT-4 nebo LLaMA 3

Jakmile shromáždíte a uložíte data ze sociálních médií, můžete na nich provést analýzu sentimentu.

Nejpřesnějším způsobem, jak provést analýzu sentimentu v textu o určitém klíčovém slově, je dnes použití generativních modelů umělé inteligence, jako jsou GPT-4, LLaMA 3, ChatDolphin atd. Tyto LLM nemusí být nutně rychlé a v měřítku mohou být nákladné, ale zaručují nejmodernější výsledky. Pokud potřebujete analyzovat velmi vysoké objemy klíčových slov, můžete snížit náklady použitím menších modelů nebo vyladit vlastní model.

Můžete nasadit vlastní model AI nebo se připojit k rozhraní API AI, jako je OpenAI nebo NLP Cloud. V tomto článku se připojíme k rozhraní NLP Cloud AI API.

Zaregistrovat se do služby NLP Cloud a získat klíč API můžete zde.

Váš požadavek nemusí být příliš složitý. Například zde je komentář na Redditu o OpenAI:

Komentář na Redditu o OpenAI Komentář na Redditu o OpenAI

Použijme model ChatDolphin na NLP Cloud, abychom analyzovali sentiment o OpenAI v tomto komentáři na Redditu. Nejprve nainstalujte klienta NLP Cloud v jazyce Python:

pip install nlpcloud

Nyní můžete analyzovat sentiment komentáře na Redditu pomocí následujícího kódu Pythonu:

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}"))

Odpověď bude znít:

Negative

Nyní to uzavřeme a napíšeme finální kód, který naslouchá webovému háčku API a provádí analýzu sentimentu na datech:

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)
    

Závěr

Jak vidíte, je možné automatizovat analýzu sentimentu na datech sociálních médií pomocí moderních generativních modelů AI a účinných nástrojů pro naslouchání na sociálních sítích. Tento přístup lze použít v různých scénářích monitorování sociálních médií. Zde je několik nápadů:

Produkce takového programu však může být náročná. Jednak proto, že sociální média není tak snadné monitorovat, ale také proto, že použití generativních modelů AI na velké objemy dat může být nákladné.

Pokud nechcete takový systém vytvářet a udržovat sami, doporučujeme vám využít naši platformu KWatch.io, která automaticky monitoruje sociální média a provádí analýzu sentimentu zjištěných příspěvků a komentářů: zaregistrovat se na KWatch.io zde.

Arthur
Technický ředitel společnosti KWatch.io