Análisis de sentimientos en Twitter con HMM

emotions-371238_1280Es el título de mi charla en el Comunica 2: un congreso que se celebra todos los años por esas fechas en la EPS de Gandía sobre comunicación y redes sociales. En ella, hablé de un proyecto en el que estamos trabajando: analizar los sentimientos que aparecen en los mensajes en las redes sociales.

La hipótesis de partida es que los tuits no demuestran cual es el sentimiento real de los usuarios. Al menos no siempre. En ocasiones, yo puedo estar con un estado de ánimo determinado, pero escribir un mensaje que expresa una emoción distinta.

Para poder analizarlo, usamos modelos ocultos de Markov (HMM). En estos modelos hay dos tipos de estados: unos ocultos, que no podemos conocer, y otros observables. El ejemplo que se suele poner en estos casos es el siguiente: piensa que nuestro amigo vive en una ciudad distinta. Nosotros no sabemos qué tiempo hace allí (si llueve o hace sol -oculto-), pero sí qué es lo que ha hecho nuestro amigo ese día (correr, ir de compras o hacer las tarea de la casa -observable-). Si conocemos las probabilidades de que nuestro amigo corra o salga de compras en cada caso, podríamos tratar de estimar qué tiempo hace en su ciudad.

Eso mismo hacemos con los sentimientos: nosotros no vemos el sentimiento de la persona (oculto), pero si su expresión a través de un tuit (observable), así que tratamos de determinar el sentimiento de los usuarios a través de la secuencia de tuits que escribe.

El modelo que usamos para determinar el sentimiento es el modelo de Russell, que asocia dos valores: valencia (positivo o negativo) y arousal (activo/pasivo). Estos valores se pueden representar en un sistema de coordenadas y determinar el sentimiento que le corresponde según su posición.

Con todo eso, lo que hacemos es

  1. descargar los tuits de un determinado evento, es decir, los que contienen una determinada etiqueta (hashtag)
  2. extraer de cada tuit las palabras que tienen carga emocional y asignarles el valor de valencia y arousal que le corresponde (usamos el diccionario ANEW).
  3. crear la red que modela la conversación del evento. Si un mensaje es una mención, una respuesta (reply) o un retuit, creamos un enlace entre los dos usuarios (eso se usa luego para inicializar el HMM)
  4. construir las secuencias de tuits para cada usuario. Dividimos estas secuencias en dos partes: el 80% para entrenar el modelo y el 20% para validarlo
  5. entrenar el modelo usando el conjunto de secuencias de entrenamiento. Eso nos da unas probabilidades de pasar de un sentimiento a otro y de, dado un sentimiento, publicar un tuit con una emoción un otra.
  6. validar el modelo con las secuencias de test que quedan

El resultado obtenido muestra que, en general, los HMM funcionan mejor que los modelos de Markov "normales", sin estados ocultos. Es decir, que considerar por separado el sentimiento real del usuario de la emoción que muestra en un tuit explica mejor cómo evolucionan los sentimientos de los  usuarios y qué emoción aparece en los tuits. Además, esta diferencia es mayor en eventos en los que no hay un sentimiento mayoritario.

El artículo completo aparecerá en las actas del congreso. Mientras, te dejo las transparencias que usé en la charla

(imagen: Ryan McGuire, public domain)