Análisis de sentimientos de tweets. JIT-CITA 2013 Resumen Un sensor de sentimientos de tweets para identificar los mensajes positivos, negativos y neutros sobre cualquier trend que se tome sobre esta red social. Key words: Big data, Hadoop, MapReduce, tweets, análisis de sentimientos 1. Introducción Las herramientas de Big Data[1] (de forma particular para este trabajo se utiliza Hadoop[2], Cloudera CDH[3], MapReduce[4]) son hoy en día herramientas en constante crecimiento a nivel mundial para procesamiento de grandes volúmenes de datos. Por ello en el siguiente trabajo de investigación desarrollamos de forma inextensa todo lo concerniente al tratamiento de grandes cantidades de datos, en este caso, realizamos el análisis sentimental de los tweets. 2. Motivaciones Big Data hoy en día acarrea una enorme cantidad de problemas, relacionados con el volumen, velocidad y la variedad de los datos (comúnmente denominados las tres V s de Big Data), la cantidad de información que se genera hoy en día es mayor a la capacidad de procesamiento, como ejemplo tenemos, de acuerdo con la propia investigación de Twitter a principios de 2012, se ven más o menos 175 millones tweets de todos los días, y tiene más de 465 millones de cuentas [5], así también tenemos a Youtube, según estudios los usuarios de YouTube sube 48 horas de video nuevo cada minuto del día [6], y por último tenemos a otro de los colosos de internet, Facebook, quien revela que se suben 100 terabytes de datos por día al mismo, se comparten 30 mil millones de posts cada mes [6]. Estas estadísticas nos dan una pauta sobre el nivel de información extremadamente alto con el que se lidia, y todo esto viene de forma diversa, los datos no se encuentran completamente estructurados, se debe tratar con archivos de texto, imágenes, videos entre otros, todo esto es lo que Big Data intenta abordar y tratar. Esto conlleva al motivo de este proyecto, el tratamiento de datos tanto estructurados como no estructurados con un gran volumen de datos utilizando metodologías y arquitecturas tales como Hadoop y MPP[7], con lo cual esperamos obtener de forma eficiente y efectiva resultados sobre los sentimientos en las expresiones de los tweets. Otro motivo fue tener una idea sobre la complejidad real de implementar este tipo de arquitecturas en la vida real, así como la medición de la perfomance del mismo.
2 3. Descripción del problema El tratamiento de datos es el problema principal. Tres pilares caracterizan este problema: Volumen: Los datos ocupan Gigabytes a Terabytes de espacio en disco. Es común que incluso ocupen más espacio del que se puede almacenar en un disco físico. Se necesitan mecanismos para almacenar los datos de forma eficiente y tolerante a fallos. Velocidad: La latencia en el procesado de los datos, contra la demanda por interactividad requerida. Variedad: Diversidad de fuentes, formatos, calidad y estructura de los datos. Específicamente, nos enfrentaremos a estos problemas al analizar los tweets que contengan cierta información que particularmente nos resulte interesante, como son los trending topics de Twitter. Necesitamos encontrar mecanismos que nos ayuden a tratar esta masiva cantidad de datos. Una vez obtenidos estos datos, realizar el analisis de sentimientos (ya sea negativo, positivo o neutro) sobre el tema obtenido, de esta manera, obtener una tendencia general negativa o positiva sobre el tópico estudiado. 4. Descripción esquemática de la solución planteada Hipótesis. El análisis de sentimientos de los tweets (masiva cantidad de información) en conjunto con el framework Hadoop, para obtener una tendencia sentimental de si el hashtag obtenido está siendo debatido de forma positiva o negativa. Utilizacion de herramientas de Big Data para efectuar las pruebas. La estructura de la solución planteada se basa principalmente en la recolección de datos de tweets referentes a un tema especificado por un hashtag, como primera fase del experimento, el cual fue realizado mediante la utilización de la API de twitter, llamada Streaming API. Este proceso de recolección tuvo una duración aproximada de 4 horas ininterrumpidas, durante el cual se llegó a recolectar más 500.000 tweets para el experimento. La siguiente fase, el análisis de los datos recolectados guardados dentro de el sistema de ficheros HDFS de Hadoop[8], el cual posibilitó la obtención de los resultados haciendo uso del motor de procesamiento Map Reduce [4]. 5. Resolución Fase 1 - Recoleccion de datos - Streaming API La forma en que los investigadores y otras personas pueden obtener grandes cantidades de datos públicos disponibles en Twitter es mediante su API 1. La API de Twitter tiene dos enfoques o formas de trabajo : RESTful y Streaming. REST API ofrece a los desarrolladores el acceso al core de los 1 API, Interfaz de Programación de Aplicación (Application Programming Interface)
Análisis de sentimientos de tweets. 3 datos de Twitter. Todas las operaciones que se pueden hacer vía web son posibles realizarlas desde el API. Streaming API proporciona un subconjunto del flujo total de tweets en tiempo real. Para el experimento usamos Streaming API, lo que nos permitió recolectar los datos en tiempo real. Optamos por esta API porque a diferencia del RESTful, no existe una limitación de 150 peticiones/hora por usuario o por IP si la conexión no está autenticada. Luego de 4 horas de recolección, obtuvimos aproximadamente 500.000 tweets sobre el tópico twitter. Fase 2 - Tratamiento de los datos Los datos recolectados están codificados en JSON 2, el cual es una forma elegante de codificar complejas estructuras de datos. En el caso de un tweets, la estructura de datos o la información disponible en ella, es muy completa. Para fines del experimento, el cual es analizar el sentimiento de un tweet, solo nos interesa el campo que posee el mensaje en sí. Para ello, la información recolectada pasa por un filtro, el cual permite obtener solo aquellos campos que nos interesa del tweet (mensaje y tiempo de generación del tweet), desechando la información restante. Fase 3 - Función de Evaluación Para analizar el sentimiento de un tweets, se analiza el mensaje en sí del tweet contra una lista de palabras calificadas según el sentimiento, los cuales poseen un peso según expresen sentimientos negativos o positivos, del -5 (más negativo) al +5 (más positivo). A cada tweet se le asigna un puntaje basado en la suma del puntaje del sentimiento asociado a cada palabra que compone el tweet. Fase 4 - Analisis - Map Reduce La función map toma como entrada un tweet y devuelve como salida una tupla compuesta por la clave ([sentimiento], [timestamp]) y valor [score] Map(tweet) (([sentimiento], [timestamp]), [score]) donde sentimiento es negativo si es puntaje es menor a 0, neutral si el puntaje es 0 y positivo si el puntaje es mayor a 0. La función reduce acepta como entrada la tupla producida por map y devuelve una tupla Reduce(([sentimiento], [timestamp]), [score]) (([sentimiento], [timestamp]), [total]) Reduce utiliza como clave de agrupamiento ([sentimiento], [timestamp]), sumando los puntajes cuyas claves sean iguales para obtener el resultado total. Fase5 - Obtención de resultados Los resultados presentan una clasificación del total de tweets recolectados según el sentimiento (o tendencia) que tuvieron hacia lo positivo, negativo o neutral. 2 JavaScript Object Notation
4 6. Conclusiones Hemos podido observar como con herramientas de procesamiento podemos mejorar de forma substancial el procesamiento de los datos. Una de las ventajas que obtenemos tratando los problemas a través de Hadoop es que los datos no deben ser estructurados de forma tradicional (no es un requisito tenerlos en forma de entradas en una base de datos) ya que justamente esta versatilidad de Hadoop nos permite trabajar con fuentes heterogéneas de datos (archivos de texto, listas, entradas de una base de datos). Por otro lado, concerniente al trabajo realizado, hemos podido lleguar a las siguientes conclusiones, primeramente el costo de desarrollo fue relativamente bajo, ya que las herramientas se encuentran documentadas de forma extensa, son de uso simple y la configuración no involucra mayores complicaciones, lo cual es sumamente importante para la incorporación de este tipo de soluciones a problemas similares. En cuanto a los resultados obtenidos podemos ver, si bien el tema es bastante genérico, al utilizar como hashtag twitter, que constantemente tenemos resultados mayormente positivos o neutrales por sobre los negativos, esto puede ser observado a lo largo de periodo de recolección, con esto podemos pensar de forma razonable que los usuarios que escriben esto están hablando positivamente sobre el Twitter, es decir están contentos con el sistema o lo encuentran interesante. Podemos ver la importancia de este tipo de análisis, ya que a través de los sentimientos de estos tweets podemos concluir acerca del nivel de aceptación que está teniendo la herramienta Twitter sobre sus usuarios, por lo tanto es una forma indirecta de hacer censo a los usuarios para obtener datos relevantes sobre la aceptación del servicio. Referencias 1. http://en.wikipedia.org/wiki/big_data: (Big data) 2. http://hadoop.apache.org/: (Apache hadoop) 3. http://www.cloudera.com/content/cloudera/en/products/cdh.html: (Cloudera cdh) 4. http://research.google.com/archive/mapreduce.html: (Mapreduce: Simplified data processing on large clusters) 5. Dawson, K., Ziv, D.D.: (A conversation on the role of big data in marketing and customer service) 6. http://wikibon.org/blog/big-data-statistics/: (A comprehensive list of big data statistics) 7. http://en.wikipedia.org/wiki/massively_parallel_(computing): (Massive parallel computing) 8. http://hadoop.apache.org/docs/stable/hdfs_design.html: (Apache hadoop)
Análisis de sentimientos de tweets. Integrantes Jorge José Jara Ruiz charijara@gmail.com +595 981 514767 JIT-CITA 2013 Manuel Antonio Nuñez Gonzalez 03.manu@gmail.com +595 981 484860 Stefano Leonardo Pezzino Castro spezzino.13@gmail.com +595 981 477155 Profesor: Iván Prieto Materia: Sistemas Paralelos y Distribuidos Departamento: Departamento de Electrónica e Informática Universidad: Universidad Católica Nuestra Señora de la Asunción Resumen El trabajo consiste en la investigación de tecnologías de Big Data (Hadoop, utilizado en conjunto con Cloudera, MapReduce e implementado en Python) implementando un análisis de sentimientos sobre tweets obtenidos en tiempo real desde internet, utilizando la API de Twitter para obtener los tweets en tiempo real, los cuales son distribuidos en ciertos nodos (que realizan el trabajo de evaluación de cada uno de los tweets), para, de forma final, sacar un resultado sobre el conceso de todos los tweets analizados de forma independiente. Se utiliza Hadoop que es el framework que permite trabajar con los nodos creados y es utilizado para realizar aplicaciones distribuidas. Se muestra el proceso de análisis, de segmentación y distribución de las tareas mediante estas herramientas mencionadas previamente). Key words: Big data, Hadoop, MapReduce, tweets, análisis de sentimientos Áreas de trabajo 5. redes, sistemas y/o arquitectura, y 8. algoritmos, lenguajes y programación.