El análisis de sentimiento en las redes sociales puede ser muy útil para monitorizar tu marca, tus competidores, o cualquier otro tema de interés. En este artículo te mostramos cómo construir un sistema que escucha medios sociales como Reddit, Hacker News, Linkedin, Twitter, etc., y realiza automáticamente análisis de sentimiento sobre el contenido gracias a IA generativa.
La escucha social es el acto de prestar atención e interpretar las conversaciones en torno a cualquier tipo de tema en plataformas de medios sociales, sitios de reseñas y otros canales en línea.
El análisis de sentimientos, por su parte, es el proceso de identificar y clasificar las opiniones expresadas en un texto como positivas, negativas o neutras. Consiste en utilizar el procesamiento del lenguaje natural, el análisis de textos y la lingüística computacional para identificar, extraer, cuantificar y estudiar sistemáticamente los estados afectivos y la información subjetiva.
Cuando se combinan la escucha social y el análisis del sentimiento, se puede rastrear y analizar el sentimiento expresado en las conversaciones relacionadas con su marca o con sus competidores. Esto también se conoce como "análisis del sentimiento de marca". El análisis del sentimiento de marca le permite comprender automáticamente qué opinan los consumidores sobre su marca o sus competidores, identificar áreas de mejora, saltar a la conversación adecuada en las redes sociales para relacionarse con clientes potenciales y tomar decisiones basadas en datos para mejorar la reputación de su marca y la fidelidad de sus clientes.
La creación de una plataforma de escucha social requiere que se conecte a una plataforma de medios sociales y recupere todas las nuevas publicaciones y comentarios que contengan las palabras clave que desea supervisar.
Esto es más fácil de conseguir si la plataforma que estás planeando monitorizar expone una API. Por ejemplo, Reddit expone una API que puedes consumir fácilmente. Aquí tienes una simple petición cURL que recupera las últimas 100 publicaciones de Reddit:
curl https://www.reddit.com/r/all/new/.json?limit=100
Y aquí está una respuesta típica devuelta por su 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
}
},
[...]
]
}
}
Hemos hecho un tutorial dedicado que muestra cómo monitorizar Reddit con un simple programa Go. Lee más aquí sobre cómo monitorizar Reddit con Go.
Cada plataforma de medios sociales tiene sus propias sutilezas que, por desgracia, no podemos cubrir en este artículo. Para monitorizar fácilmente las plataformas de medios sociales (como Reddit, Linkedin, X, Hacker News, y más), es posible que desee suscribirse a una plataforma de escucha social dedicada como nuestro servicio KWatch.io. Prueba KWatch.io gratis aquí.
Añadir palabras clave en el panel de control de KWatch.io
Algunos de los principales retos que plantea la escucha de las redes sociales son el gran volumen de datos que hay que manejar, el hecho de que la plataforma de las redes sociales puede bloquearte si realizas demasiadas solicitudes y el hecho de que tienes que ser inteligente a la hora de manejar los datos.
En la próxima sección, le explicaremos cómo integrar los datos recogidos en su sistema.
Una vez recopilados los datos de las plataformas de redes sociales, hay que almacenarlos en una base de datos o un almacén de datos. Esto le permitirá analizar los datos, realizar análisis de sentimiento y generar ideas.
Hay varias formas de almacenar los datos de las redes sociales (que son básicamente datos de texto puro), en función de tus necesidades y del volumen de datos que manejes. Algunas opciones habituales son:
Si se ha suscrito a una plataforma de escucha social, debe comprobar si ofrece una forma de transferir los datos a su sistema.
Los webhooks, a menudo denominados "web callbacks" o "HTTP push API", sirven para que las aplicaciones compartan datos en tiempo real con otras aplicaciones. Esto se consigue generando peticiones HTTP POST cuando se producen eventos específicos, entregando así información a otras aplicaciones de forma inmediata.
Por ejemplo, en nuestra plataforma, KWatch.io, debe ir a la sección "notificaciones" y establecer una URL de webhook que apunte a su sistema.
Webhook API en KWatch.io
Este es el aspecto del webhook de KWatch.io (es una carga 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.",
}
Si eres nuevo en esto, puedes recibir sin esfuerzo estos webhooks en Python usando FastAPI.
Instale FastAPI con el servidor Uvicorn:
pip install fastapi uvicorn
Ahora crea un nuevo archivo Python y pega el siguiente código (puede que necesites adaptar este script):
# 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 el archivo y ejecute el servidor con el siguiente comando:
uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000
Su servidor ya está en funcionamiento y listo para recibir webhooks de KWatch.io.
Una vez que haya recopilado y almacenado los datos de las redes sociales, puede realizar un análisis de sentimiento sobre ellos.
Hoy en día, la forma más precisa de realizar un análisis de sentimientos en un fragmento de texto sobre una palabra clave específica es utilizar modelos generativos de IA como GPT-4, LLaMA 3, ChatDolphin, etc. Estos LLM no son necesariamente rápidos y pueden ser costosos a escala, pero garantizan resultados de vanguardia. Si necesita analizar volúmenes muy elevados de palabras clave, quizá le interese reducir los costes utilizando modelos más pequeños, o afinar su propio modelo.
Puedes desplegar tu propio modelo de IA, o conectarte a una API de IA como OpenAI o NLP Cloud. En este artículo nos conectaremos a la API de IA de NLP Cloud.
Puede registrarse en NLP Cloud y recuperar su clave API aquí.Su petición no tiene por qué ser demasiado compleja. Por ejemplo, aquí tienes un comentario en Reddit sobre OpenAI:
Un comentario en Reddit sobre OpenAI
Vamos a utilizar el modelo ChatDolphin en NLP Cloud para analizar el sentimiento sobre OpenAI en este comentario de Reddit. En primer lugar, instala el cliente Python de NLP Cloud:
pip install nlpcloud
Ahora puedes analizar el sentimiento del comentario de Reddit con el siguiente 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}"))
La respuesta será:
Negative
Ahora vamos a terminar y escribir el código final que escucha el webhook de la API y realiza el análisis de sentimiento de los datos:
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 puede ver, es posible automatizar el análisis de sentimientos en los datos de las redes sociales con la ayuda de modernos modelos generativos de IA y eficaces herramientas de escucha social. Este enfoque puede aplicarse en varios escenarios de monitorización de redes sociales. He aquí algunas ideas:
Sin embargo, producir un programa de este tipo puede resultar complicado. En primer lugar, porque las redes sociales no son tan fáciles de monitorizar, pero también porque los modelos generativos de IA pueden ser costosos de utilizar en grandes volúmenes de datos.
Si no desea construir y mantener un sistema de este tipo por sí mismo, le recomendamos que utilice nuestra plataforma KWatch.io en su lugar, ya que supervisamos automáticamente las redes sociales y realizamos análisis de sentimiento de las publicaciones y comentarios detectados: regístrese en KWatch.io aquí.
Arthur
Director Técnico de KWatch.io