A análise de sentimentos nas redes sociais pode ser muito útil para monitorizar a sua marca, os seus concorrentes ou qualquer outro tópico de interesse. Neste artigo, mostramos-lhe como construir um sistema que ouve as redes sociais, como o Reddit, Hacker News, Linkedin, Twitter, etc., e efectua automaticamente a análise de sentimentos no conteúdo graças à IA generativa.
A escuta social é o ato de prestar atenção e interpretar conversas sobre qualquer tipo de tópicos em plataformas de redes sociais, sites de avaliação e outros canais online.
A análise de sentimentos, por outro lado, é o processo de identificação e categorização das opiniões expressas num texto como positivas, negativas ou neutras. Envolve a utilização de processamento de linguagem natural, análise de texto e linguística computacional para identificar, extrair, quantificar e estudar sistematicamente estados afectivos e informações subjectivas.
Quando combina a escuta social e a análise de sentimentos, pode seguir e analisar o sentimento expresso nas conversas relacionadas com a sua marca ou com os seus concorrentes. Isto também é conhecido como "análise do sentimento da marca". A análise do sentimento da marca permite-lhe compreender automaticamente o que os consumidores pensam da sua marca ou dos seus concorrentes, identificar áreas a melhorar, entrar na conversa certa nas redes sociais para interagir com potenciais clientes e tomar decisões baseadas em dados para melhorar a reputação da sua marca e a fidelidade dos clientes.
A criação de uma plataforma de escuta social exige que se ligue a uma plataforma de redes sociais e recupere todas as novas mensagens e comentários que contenham as palavras-chave que pretende monitorizar.
Isto é mais fácil de conseguir se a plataforma que está a planear monitorizar expuser uma API. Por exemplo, o Reddit expõe uma API que pode ser facilmente consumida. Aqui está uma solicitação cURL simples que recupera as últimas 100 postagens do Reddit:
curl https://www.reddit.com/r/all/new/.json?limit=100
E aqui está uma resposta típica devolvida pela sua 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
}
},
[...]
]
}
}
Criámos um tutorial dedicado que mostra como monitorizar o Reddit com um simples programa Go. Leia mais aqui sobre como monitorizar o Reddit com Go.
Cada plataforma de redes sociais tem as suas próprias subtilezas que, infelizmente, não podemos abordar neste artigo. Para monitorizar facilmente as plataformas de redes sociais (como o Reddit, o Linkedin, o X, o Hacker News, entre outras), pode querer subscrever uma plataforma de escuta social dedicada, como o nosso serviço KWatch.io. Experimente o KWatch.io gratuitamente aqui.
Adicionar palavras-chave no seu painel do KWatch.io
Alguns dos principais desafios, ao realizar a escuta das redes sociais, são o elevado volume de dados que tem de tratar, o facto de poder ser bloqueado pela plataforma das redes sociais se fizer demasiados pedidos e o facto de ter de ser inteligente na forma como trata os dados.
Na secção seguinte, explicaremos como integrar os dados recolhidos no seu sistema.
Depois de recolher os dados das plataformas de redes sociais, é necessário armazená-los numa base de dados ou num armazém de dados. Isto permitir-lhe-á analisar os dados, efetuar análises de sentimentos e gerar informações.
Existem várias formas de armazenar dados de redes sociais (que são basicamente dados de texto puro), dependendo dos seus requisitos e do volume de dados com que está a lidar. Algumas opções comuns incluem:
Se subscreveu uma plataforma de escuta social, deve verificar se esta oferece uma forma de transferir os dados para o seu sistema.
Os webhooks, muitas vezes referidos como "web callbacks" ou "HTTP push API", servem como meio para as aplicações partilharem dados em tempo real com outras aplicações. Isto é conseguido através da geração de pedidos HTTP POST quando ocorrem eventos específicos, fornecendo assim prontamente informações a outras aplicações.
Por exemplo, na nossa plataforma, KWatch.io, deve ir à secção "notificações" e definir um URL de webhook que aponte para o seu sistema.
Webhook da API no KWatch.io
Aqui está o aspeto do webhook do KWatch.io (é uma carga útil 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.",
}
Se é novo neste domínio, pode receber sem esforço estes webhooks em Python utilizando FastAPI.
Instalar FastAPI com o servidor Uvicorn:
pip install fastapi uvicorn
Agora, crie um novo ficheiro Python e cole o seguinte código (pode ser necessário adaptar este guião):
# 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)
Guarde o ficheiro e execute o servidor com o seguinte comando:
uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000
Seu servidor agora está em execução e pronto para receber webhooks do KWatch.io.
Depois de ter recolhido e armazenado os dados das redes sociais, pode efetuar uma análise de sentimentos sobre os mesmos.
Atualmente, a forma mais precisa de efetuar uma análise de sentimentos num texto sobre uma palavra-chave específica é utilizando modelos de IA generativos como o GPT-4, LLaMA 3, ChatDolphin, etc. Estes LLMs não são necessariamente rápidos e podem ser dispendiosos à escala, mas garantem resultados de ponta. Se precisar de analisar volumes muito elevados de palavras-chave, poderá querer reduzir os custos utilizando modelos mais pequenos ou afinar o seu próprio modelo.
Pode implementar o seu próprio modelo de IA ou ligar-se a uma API de IA como a OpenAI ou a NLP Cloud. Neste artigo, vamos ligar-nos à API de IA do NLP Cloud.
Pode registar-se no NLP Cloud e obter a sua chave API aqui.O seu pedido não tem de ser demasiado complexo. Por exemplo, aqui está um comentário no Reddit sobre o OpenAI:
Um comentário no Reddit sobre a OpenAI
Vamos usar o modelo ChatDolphin no NLP Cloud para analisar o sentimento sobre o OpenAI neste comentário do Reddit. Primeiro, instale o cliente Python do NLP Cloud:
pip install nlpcloud
Agora pode analisar o sentimento do comentário do Reddit com o seguinte código 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}"))
A resposta será:
Negative
Agora vamos terminar e escrever o código final que ouve o webhook da API e efectua a análise de sentimentos nos dados:
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)
Como pode ver, é possível automatizar a análise de sentimentos nos dados das redes sociais com a ajuda de modelos modernos de IA generativa e ferramentas eficientes de escuta social. Esta abordagem pode ser aplicada em vários cenários de monitorização das redes sociais. Eis algumas ideias:
No entanto, a produção de um programa deste tipo pode ser um desafio. Em primeiro lugar, porque as redes sociais não são fáceis de monitorizar, mas também porque os modelos de IA generativa podem ser dispendiosos para utilizar em grandes volumes de dados.
Se não quiser criar e manter um sistema deste tipo, recomendamos que utilize a nossa plataforma KWatch.io, uma vez que monitorizamos automaticamente as redes sociais e efectuamos análises de sentimento nas mensagens e comentários detectados: registar-se no KWatch.io aqui.
Arthur
CTO da KWatch.io