/ Proyectos / Negocios / Análisis de sentimiento para social listening
Análisis de sentimiento en tuits para social listening
Un pipeline de social listening sobre tuits, comparando clasificadores clásicos y eligiendo el modelo correcto más allá de la exactitud global.
En 2022, cuando todavía se llamaba Twitter, la plataforma permitía descargar públicamente grandes volúmenes de conversación. Eso abrió la puerta a un tipo de análisis conocido como social listening: escuchar, a escala, lo que la gente opina de un tema.
Este proyecto tomó como caso la conversación pública sobre la vacuna contra covid durante 2021, un ejemplo claro de opinión pública polarizada, con aplicaciones directas en marketing y en análisis político. Se hizo con la mayor ética posible dentro del entendimiento que se tenía sobre manejo de datos públicos en ese momento, sin exponer nunca usuarios reales.
Mapa del casoContenido
- Diagrama de la solución. De la recolección de tuits a la comparación de clasificadores
- Construcción de la solución. Por qué la exactitud global no bastó para elegir el modelo
- Condiciones del proyecto. Restricciones reales y opciones descartadas antes de construir
- Pasos. Qué se dejó al agente y qué criterio se aplicó en cada uno
- Proceso de iteración. La limitación del etiquetado heurístico, documentada sin maquillar
- Descargables. Notebook y repositorio del proyecto
- Lecciones importantes. La lección concreta que deja este caso
Estructura de alto nivelDiagrama de la solución
Pasa el cursor sobre cada bloque para ver qué hace ese paso.
Las tres representaciones de texto se calcularon en paralelo, pero solo Bag of Words llegó a la comparación final de clasificadores, la más simple de las tres exploradas.
Cómo se construyóConstrucción de la solución
Condiciones del proyecto
| Restricción | Dato |
|---|---|
| Dataset propio anotado por personas | No existía para este tema específico |
| Texto de los tuits | Corto, informal, con menciones, hashtags y errores |
| Distribución de opiniones | No pareja entre positivas, negativas y neutras |
| Tema del proyecto | Toca salud pública y política, exige manejo ético explícito de los datos |
| Opción | Por qué se descartó |
|---|---|
| Anotación manual del sentimiento | No había tiempo ni equipo para etiquetar miles de tuits a mano |
| Word2Vec como representación final | No ofreció ventaja clara sobre una representación más simple para este volumen de datos |
| Bag of Words + Regresión Logística | Representación simple, clasificador con mejor balance entre clases, opción elegida |
| Elegir el modelo solo por exactitud global | Ocultaba que dos de los cuatro modelos casi nunca acertaban en la clase minoritaria |
Pasos
Recolectar y limpiar la conversación pública
Agente: propuso quedarse con el texto crudo del tuit.
Criterio aplicado: limpiar menciones, hashtags y URLs, y eliminar duplicados, reduciendo 5.000 tuits a 4.734 únicos con contenido real.
Etiquetar el sentimiento sin anotación humana
Agente: armó un pipeline de traducción y análisis de polaridad sin más comentario.
Criterio aplicado: reconocer desde el diseño que esa etiqueta es una aproximación, no una verdad validada, y decirlo con claridad en el reporte final.
Explorar más de una representación de texto
Agente: sugirió usar directamente la técnica más sofisticada disponible (Word2Vec).
Criterio aplicado: probar también Bag of Words y TF-IDF, y quedarse con la más simple de las tres tras comparar resultados.
Elegir por algo más que la exactitud global
Agente: hubiera recomendado el modelo con mayor exactitud general.
Criterio aplicado: revisar el recall por clase, y descubrir que SVM y Random Forest casi nunca predecían la clase "positivo" (recall de 0.19 y 0.18), mientras Regresión Logística alcanzaba 0.54 con exactitud similar.
Proceso de iteración
Resultado inesperado, no forzado
La etiqueta de sentimiento no es una verdad de campo, es una heurística: cada tuit se tradujo palabra por palabra al inglés y se etiquetó según el signo de la polaridad de TextBlob sobre esa traducción. Los cuatro clasificadores aprendieron a imitar esa heurística, con todo el ruido que una traducción palabra por palabra introduce en español. El modelo elegido, Regresión Logística, tiene una exactitud de 0.71, la mejor de las cuatro comparadas, no un resultado ideal, y así se debe leer.
CierreLecciones importantes
La lección más importante fue de métrica, no de modelo. La exactitud global es fácil de reportar y fácil de malinterpretar. Cuando las clases están desbalanceadas, hay que mirar precisión y recall por clase antes de decidir cuál modelo realmente sirve para el objetivo del proyecto.
Este proyecto se hizo con la mayor ética posible dentro del entendimiento disponible en 2022, y hoy, además, ni el acceso a los datos ni el estándar de manejo responsable de opinión pública se quedaron iguales, ambos cambiaron, y conviene decirlo en vez de dar por hecho que un proyecto de hace unos años se replica igual hoy.
Si quieres ver cómo se modernizaría hoy la parte de etiquetado de sentimiento, evitando la traducción palabra por palabra, un buen punto de partida es un modelo entrenado directamente en tuits en español: pysentimiento, un toolkit de Python para análisis de sentimiento y tareas de NLP social, que incluye RoBERTuito, un modelo entrenado sobre más de 500 millones de tuits en español.
Termina ya tu proyecto
¿Tienes un proyecto de opinión pública o social listening y no sabes cómo validarlo bien? Yo te ayudo a diseñarlo.
El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.
Sin registro. Acceso inmediato