Kako zgraditi cevovod za analizo čustev v družabnih medijih

Analiza čustev v družabnih medijih je lahko zelo koristna za spremljanje vaše blagovne znamke, konkurentov ali katere koli druge zanimive teme. V tem članku vam pokažemo, kako zgraditi sistem, ki posluša družbene medije, kot so Reddit, Hacker News, Linkedin, Twitter itd., in na podlagi generativne umetne inteligence samodejno izvaja analizo čustev na vsebini.

Analiza razpoloženja v družabnih medijih

Združevanje socialnega poslušanja z analizo čustev za analizo čustev blagovne znamke

Družabno poslušanje je pozorno spremljanje in interpretiranje pogovorov o različnih temah na platformah družabnih medijev, spletnih straneh s pregledi in drugih spletnih kanalih.

Analiza razpoloženja pa je postopek prepoznavanja in razvrščanja mnenj, izraženih v besedilu, kot pozitivnih, negativnih ali nevtralnih. Vključuje uporabo obdelave naravnega jezika, analize besedila in računalniškega jezikoslovja za sistematično prepoznavanje, pridobivanje, kvantificiranje in preučevanje afektivnih stanj in subjektivnih informacij.

Če združite poslušanje družabnih omrežij in analizo čustev, lahko spremljate in analizirate čustva, izražena v pogovorih, povezanih z vašo blagovno znamko ali konkurenti. To je znano tudi kot "analiza čustev blagovne znamke". Analiza čustev blagovne znamke vam omogoča, da samodejno razumete, kaj potrošniki menijo o vaši blagovni znamki ali vaših konkurentih, prepoznate področja za izboljšave, se vključite v pravi pogovor v družabnih medijih in navežete stik s potencialnimi strankami ter sprejmete na podatkih temelječe odločitve za izboljšanje ugleda vaše blagovne znamke in zvestobe strank.

Izgradnja platforme za družbeno poslušanje

Za vzpostavitev platforme za poslušanje družabnih omrežij je treba vzpostaviti povezavo s platformo družabnih medijev ter pridobiti vse nove objave in komentarje, ki vsebujejo ključne besede, ki jih želite spremljati.

To je lažje doseči, če platforma, ki jo nameravate spremljati, razkriva API. Reddit na primer razkriva API, ki ga lahko preprosto uporabite. Tukaj je preprosta zahteva cURL, ki pridobi zadnjih 100 objav v Redditu:

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

Tukaj je tipičen odziv, ki ga vrne njihov 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
                    }
                },
            [...]
            ]
        }
    }

Izdelali smo namensko vadnico, v kateri prikazujemo, kako spremljati Reddit s preprostim programom Go. Več o tem, kako spremljati Reddit z Go, preberite tukaj.

Vsaka platforma družabnih medijev ima lastne finese, ki jih v tem članku žal ne moremo opisati. Če želite preprosto spremljati platforme družbenih medijev (kot so Reddit, Linkedin, X, Hacker News in druge), se lahko naročite na namensko platformo za poslušanje družbenih medijev, kot je naša storitev KWatch.io. KWatch.io lahko brezplačno preizkusite tukaj.

Dodajanje ključnih besed v nadzorno ploščo KWatch.io Dodajanje ključnih besed v nadzorno ploščo KWatch.io

Med glavnimi izzivi pri poslušanju družabnih medijev so velika količina podatkov, ki jih morate obdelati, dejstvo, da vas lahko platforma družabnega medija blokira, če pošljete preveč zahtev, in dejstvo, da morate pametno ravnati s podatki.

V naslednjem razdelku bomo razložili, kako zbrane podatke vključiti v sistem.

Vključevanje podatkov iz družabnih medijev v sistem

Ko zberete podatke s platform družbenih medijev, jih morate shraniti v podatkovno zbirko ali podatkovno skladišče. To vam bo omogočilo analizo podatkov, analizo čustev in ustvarjanje vpogledov.

Obstaja več načinov shranjevanja podatkov iz družabnih omrežij (ki so pravzaprav čisti besedilni podatki), odvisno od vaših zahtev in količine podatkov, s katerimi se ukvarjate. Nekatere pogoste možnosti vključujejo:

Če ste se naročili na platformo za poslušanje družabnih omrežij, preverite, ali ponuja način za prenos podatkov v vaš sistem.

Spletne kljuke, pogosto imenovane "spletne povratne klice" ali "HTTP push API", služijo aplikacijam za izmenjavo podatkov v realnem času z drugimi aplikacijami. To se doseže z ustvarjanjem zahtevkov HTTP POST ob določenih dogodkih, s čimer se informacije takoj posredujejo drugim aplikacijam.

V naši platformi KWatch.io morate na primer iti v razdelek "obvestila" in nastaviti URL spletne kljuke, ki kaže na vaš sistem.

Spletna ključavnica API na KWatch.io Spletna ključavnica API na KWatch.io

Tukaj je videti spletna ključavnica KWatch.io (gre za uporabniški tovor 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.",
}

Če se s tem še ne ukvarjate, lahko te spletne kljuke brez težav sprejmete v Pythonu z uporabo vmesnika FastAPI.

Namestite FastAPI s strežnikom Uvicorn:

pip install fastapi uvicorn

Ustvarite novo datoteko Python in prilepite naslednjo kodo (morda boste morali to skripto prilagoditi):

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

Shranite datoteko in zaženite strežnik z naslednjim ukazom:

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

Vaš strežnik zdaj deluje in je pripravljen za prejemanje spletnih kljuk iz KWatch.io.

Analiza sentimenta na podatkih z generativnimi modeli umetne inteligence, kot sta GPT-4 ali LLaMA 3

Ko ste zbrali in shranili podatke iz družabnih medijev, lahko na njih opravite analizo čustev.

Danes je najnatančnejši način za izvajanje analize čustev v besedilu o določeni ključni besedi uporaba generativnih modelov umetne inteligence, kot so GPT-4, LLaMA 3, ChatDolphin itd. Ti modeli LLM niso nujno hitri in so lahko v velikem obsegu dragi, vendar zagotavljajo najsodobnejše rezultate. Če morate analizirati zelo velike količine ključnih besed, boste morda želeli znižati stroške z uporabo manjših modelov ali natančno prilagoditi svoj model.

Lahko namestite svoj model umetne inteligence ali se priključite na API umetne inteligence, kot sta OpenAI ali NLP Cloud. V tem članku se bomo priključili na API umetne inteligence NLP Cloud.

Registrirajte se v NLP Cloud in pridobite ključ API tukaj.

Vaša zahteva ni nujno preveč zapletena. Tukaj je na primer komentar na Redditu o OpenAI:

Komentar na Redditu o OpenAI Komentar na Redditu o OpenAI

Uporabimo model ChatDolphin v oblaku NLP Cloud, da analiziramo mnenje o OpenAI v tem komentarju na Redditu. Najprej namestite odjemalca NLP Cloud Python:

pip install nlpcloud

Sedaj lahko analizirate mnenje v komentarju Reddit z naslednjo kodo Python:

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

Odgovor bo:

Negative

Zdaj zaključimo in napišimo končno kodo, ki posluša spletno kljuko API in izvaja analizo čustev na podatkih:

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)
    

Zaključek

Kot lahko vidite, je mogoče avtomatizirati analizo čustev v podatkih družbenih medijev s pomočjo sodobnih generativnih modelov umetne inteligence in učinkovitih orodij za poslušanje družbenih omrežij. Ta pristop je mogoče uporabiti v različnih scenarijih spremljanja družbenih medijev. Tukaj je nekaj idej:

Produkcija takega programa je lahko zahtevna. Najprej zato, ker družbenih medijev ni tako enostavno spremljati, pa tudi zato, ker je uporaba generativnih modelov umetne inteligence za velike količine podatkov lahko draga.

Če takšnega sistema ne želite vzpostaviti in vzdrževati sami, vam priporočamo, da namesto tega uporabite našo platformo KWatch.io, saj samodejno spremljamo družbene medije in izvajamo analizo čustev na zaznanih objavah in komentarjih: registrirajte se na KWatch.io tukaj.

Arthur
Tehnični direktor v podjetju KWatch.io