/ 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.

10 min de lectura Python · scikit-learn · TextBlob · gensim Datos: conversación pública sobre vacunación, 2021 Aplicable a tesis y proyectos aplicados
Pipeline de social listening clasificando el sentimiento de conversación pública en redes sociales

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


Estructura de alto nivelDiagrama de la solución

Fuente Tuits recolectados 5.000 → 4.734 tras limpieza Limpieza y deduplicación Menciones, hashtags, URLs, duplicados Etiquetado heurístico Traducción + polaridad (TextBlob) A favor / Neutro / En contra Representación de texto Word2Vec, TF-IDF exploradas Bag of Words, la usada en clasificación Comparación de clasificadores Regresión Logística · SVM Random Forest · Naive Bayes Exactitud: 0.71 · 0.61 · 0.62 · 0.56 Modelo elegido Regresión Logística, 0.71 exactitud Mejor recall en clase minoritaria

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ónDato
Dataset propio anotado por personasNo existía para este tema específico
Texto de los tuitsCorto, informal, con menciones, hashtags y errores
Distribución de opinionesNo pareja entre positivas, negativas y neutras
Tema del proyectoToca salud pública y política, exige manejo ético explícito de los datos
OpciónPor qué se descartó
Anotación manual del sentimientoNo había tiempo ni equipo para etiquetar miles de tuits a mano
Word2Vec como representación finalNo ofreció ventaja clara sobre una representación más simple para este volumen de datos
Bag of Words + Regresión LogísticaRepresentación simple, clasificador con mejor balance entre clases, opción elegida
Elegir el modelo solo por exactitud globalOcultaba que dos de los cuatro modelos casi nunca acertaban en la clase minoritaria

Pasos

1

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.

2

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.

3

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.

4

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.

53
proyectos
8
sectores
100%
aplicado

Sin registro. Acceso inmediato