Kā izveidot sociālo mediju noskaņojuma analīzes cauruļvadu

Sentimentu analīze sociālajos plašsaziņas līdzekļos var būt ļoti noderīga, lai uzraudzītu savu zīmolu, konkurentus vai jebkuru citu interesējošu tematu. Šajā rakstā mēs parādīsim, kā izveidot sistēmu, kas klausās sociālos medijus, piemēram, Reddit, Hacker News, Linkedin, Twitter u. c., un automātiski veic satura noskaņojuma analīzi, izmantojot ģeneratīvo mākslīgo intelektu.

Sociālo mediju noskaņojuma analīze

Sociālās klausīšanās apvienošana ar noskaņojuma analīzi zīmola noskaņojuma analīzei

Sociālo tīklu klausīšanās ir uzmanības pievēršana sarunām un to interpretēšana par jebkuru tematu sociālo mediju platformās, atsauksmju vietnēs un citos tiešsaistes kanālos.

Savukārt noskaņojuma analīze ir process, kurā tiek identificēti un kategorizēti tekstā paustie viedokļi kā pozitīvi, negatīvi vai neitrāli. Tā ietver dabiskās valodas apstrādes, teksta analīzes un datorlingvistikas izmantošanu, lai sistemātiski identificētu, iegūtu, kvantificētu un pētītu afektīvus stāvokļus un subjektīvu informāciju.

Apvienojot sociālo tīklu klausīšanos un noskaņojuma analīzi, varat izsekot un analizēt noskaņojumu, kas izteikts sarunās, kuras saistītas ar jūsu zīmolu vai konkurentiem. To dēvē arī par "zīmola noskaņojuma analīzi". Zīmola noskaņojuma analīze ļauj automātiski saprast, ko patērētāji domā par jūsu zīmolu vai konkurentiem, noteikt jomas, kurās nepieciešami uzlabojumi, iesaistīties pareizajās sarunās sociālajos plašsaziņas līdzekļos, lai iesaistītu potenciālos klientus, un pieņemt uz datiem balstītus lēmumus, lai uzlabotu jūsu zīmola reputāciju un klientu lojalitāti.

Sociālās klausīšanās platformas izveide

Lai izveidotu sociālo pakalpojumu klausīšanās platformu, ir nepieciešams pieslēgties sociālo mediju platformai un iegūt katru jaunu ziņu un komentāru, kas satur vēlamos pārraudzīt atslēgvārdus.

To ir vieglāk izdarīt, ja platformā, kuru plānojat uzraudzīt, ir pieejams API. Piemēram, Reddit piedāvā API, ko varat viegli izmantot. Šeit ir vienkāršs cURL pieprasījums, kas iegūst pēdējos 100 Reddit ierakstus:

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

Un šeit ir redzama tipiska API atgrieztā atbilde:

{
    "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
                    }
                },
            [...]
            ]
        }
    }

Mēs izveidojām īpašu pamācību, kurā parādīts, kā uzraudzīt Reddit ar vienkāršu Go programmu. Vairāk par to, kā pārraudzīt Reddit, izmantojot Go, lasiet šeit.

Katrai sociālo mediju platformai ir savas nianses, kuras diemžēl šajā rakstā nevaram aplūkot. Lai viegli uzraudzītu sociālo mediju platformas (piemēram, Reddit, Linkedin, X, Hacker News u. c.), iespējams, vēlaties abonēt īpašu sociālo mediju klausīšanās platformu, piemēram, mūsu pakalpojumu KWatch.io. Izmēģiniet KWatch.io bez maksas šeit.

Pievienojiet atslēgvārdus savā KWatch.io paneļa panelī Pievienojiet atslēgvārdus savā KWatch.io paneļa panelī

Dažas no galvenajām problēmām, veicot sociālo plašsaziņas līdzekļu klausīšanos, ir lielais datu apjoms, kas jums jāapstrādā, tas, ka sociālo plašsaziņas līdzekļu platforma var jūs bloķēt, ja veicat pārāk daudz pieprasījumu, un tas, ka jums ir jābūt gudram attiecībā uz datu apstrādi.

Nākamajā sadaļā mēs izskaidrosim, kā savāktos datus integrēt jūsu sistēmā.

Sociālo mediju datu integrēšana jūsu sistēmā

Kad esat apkopojis datus no sociālo mediju platformām, tie ir jāglabā datu bāzē vai datu noliktavā. Tas ļaus jums analizēt datus, veikt noskaņojuma analīzi un gūt ieskatu.

Ir vairāki veidi, kā glabāt sociālo mediju datus (kas būtībā ir tīri teksta dati), atkarībā no jūsu prasībām un datu apjoma, ar ko strādājat. Dažas izplatītākās iespējas ir šādas:

Ja esat pierakstījies uz sociālo pakalpojumu klausīšanās platformu, jums jāpārbauda, vai tā piedāvā iespēju pārsūtīt datus savā sistēmā.

Webhooks, ko bieži dēvē par "tīmekļa izsaukumiem" vai "HTTP push API", ir līdzeklis, ar kura palīdzību lietojumprogrammas var kopīgot reāllaika datus ar citām lietojumprogrammām. Tas tiek panākts, ģenerējot HTTP POST pieprasījumus, kad notiek konkrēti notikumi, tādējādi nekavējoties piegādājot informāciju citām lietojumprogrammām.

Piemēram, mūsu platformā KWatch.io jums jādodas uz sadaļu "Paziņojumi" un jāiestata tīmekļa āķa URL, kas norāda uz jūsu sistēmu.

API Webhook par KWatch.io API Webhook par KWatch.io

Lūk, kā izskatās KWatch.io tīmekļa āķis (tā ir JSON ielāde):

{
    "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.",
}

Ja esat iesācējs, šos tīmekļa āķus varat bez pūlēm saņemt Python, izmantojot FastAPI.

Instalējiet FastAPI ar Uvicorn serveri:

pip install fastapi uvicorn

Tagad izveidojiet jaunu Python failu un ielīmējiet šādu kodu (iespējams, šo skriptu būs nepieciešams pielāgot):

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

Saglabājiet failu un palaidiet serveri ar šādu komandu:

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

Tagad jūsu serveris darbojas un ir gatavs saņemt tīmekļa āķus no KWatch.io.

Sentimentu analīzes veikšana datiem, izmantojot tādus ģeneratīvos mākslīgā intelekta modeļus kā GPT-4 vai LLaMA 3

Kad esat apkopojis un saglabājis sociālo plašsaziņas līdzekļu datus, varat veikt to noskaņojuma analīzi.

Šobrīd visprecīzākais veids, kā veikt teksta daļas noskaņojuma analīzi par konkrētu atslēgvārdu, ir izmantot ģeneratīvos mākslīgā intelekta modeļus, piemēram, GPT-4, LLaMA 3, ChatDolphin u. c. Šie LLM ne vienmēr ir ātri un var būt dārgi mērogā, taču tie garantē mūsdienīgus rezultātus. Ja jums ir jāanalizē ļoti liels atslēgvārdu apjoms, iespējams, vēlēsieties samazināt izmaksas, izmantojot mazākus modeļus vai precīzi pielāgojot savu modeli.

Varat izvietot savu mākslīgā intelekta modeli vai izmantot kādu mākslīgā intelekta API, piemēram, OpenAI vai NLP Cloud. Šajā rakstā mēs izmantosim NLP Cloud AI API.

Jūs varat reģistrēties NLP Cloud un iegūt savu API atslēgu šeit.

Jūsu pieprasījumam nav jābūt pārāk sarežģītam. Piemēram, šeit ir komentārs vietnē Reddit par OpenAI:

Komentārs Reddit par OpenAI Komentārs Reddit par OpenAI

Izmantosim ChatDolphin modeli NLP Cloud, lai analizētu noskaņojumu par OpenAI šajā Reddit komentārā. Vispirms instalējiet NLP Cloud Python klientu:

pip install nlpcloud

Tagad varat analizēt Reddit komentāra noskaņojumu, izmantojot šādu Python kodu:

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

Atbilde būs šāda:

Negative

Tagad pabeigsim un uzrakstīsim galīgo kodu, kas klausās API tīmekļa āķi un veic datu noskaņojuma analīzi:

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)
    

Secinājums

Kā redzat, ir iespējams automatizēt sociālo mediju datu noskaņojuma analīzi, izmantojot mūsdienīgus ģeneratīvos mākslīgā intelekta modeļus un efektīvus sociālās klausīšanās rīkus. Šo pieeju var izmantot dažādos sociālo mediju monitoringa scenārijos. Šeit ir dažas idejas:

Tomēr šādas programmas producēšana var būt sarežģīta. Pirmkārt, tāpēc, ka sociālos plašsaziņas līdzekļus nav tik viegli uzraudzīt, kā arī tāpēc, ka ģeneratīvo mākslīgā intelekta modeļu izmantošana lieliem datu apjomiem var būt dārga.

Ja nevēlaties paši veidot un uzturēt šādu sistēmu, iesakām izmantot mūsu KWatch.io platformu, jo mēs automātiski uzraugām sociālos medijus un veicam konstatēto ierakstu un komentāru noskaņojuma analīzi: reģistrēties KWatch.io šeit.

Arthur
KWatch.io tehniskais direktors