TFG Jesús Castañón Rincón

192
ESCUELA DE INGENIERÍA DE TELECOMUNICACIÓN Y ELECTRÓNICA TRABAJO FIN DE GRADO ANÁLISIS DE SENTIMIENTO EN REDES SOCIALES EN EL CONTEXTO DE BIGDATA Titulación: Grado en Ingeniería en Tecnologías Mención: de la Telecomunicación Telemática Autor: Jesús Castañón Rincón Tutor: Dr. Luis Hernández Acosta Fecha: Junio 2015

description

TFG Grado en Ingeniería en Tecnologías de la Telecomunicación (ULPGC)

Transcript of TFG Jesús Castañón Rincón

  • ESCUELA DE INGENIERA DE

    TELECOMUNICACIN Y ELECTRNICA TRABAJO FIN DE GRADO

    ANLISIS DE SENTIMIENTO EN REDES SOCIALES EN EL CONTEXTO DE BIGDATA

    Titulacin: Grado en Ingeniera en Tecnologas

    Mencin: de la Telecomunicacin Telemtica

    Autor: Jess Castan Rincn

    Tutor: Dr. Luis Hernndez Acosta

    Fecha: Junio 2015

  • ESCUELA DE INGENIERA DE

    TELECOMUNICACIN Y ELECTRNICA

    TRABAJO FIN DE GRADO ANLISIS DE SENTIMIENTO EN REDES SOCIALES

    EN EL CONTEXTO DE BIGDATA HOJA DE FIRMAS

    Alumno Tutor Fdo.: Jess Castan Rincn Fdo.: Dr. Luis Hernndez Acosta

    Las Palmas de Gran Canaria, junio de 2015

  • ESCUELA DE INGENIERA DE

    TELECOMUNICACIN Y ELECTRNICA

    TRABAJO FIN DE GRADO ANLISIS DE SENTIMIENTO EN REDES SOCIALES

    EN EL CONTEXTO DE BIGDATA

    HOJA DE EVALUACIN Calificacin: ___________________________ Presidente Vocal Secretario Fdo.: Fdo.: Fdo.: Las Palmas de Gran Canaria, junio de 2015

  • RESUMEN Este Trabajo Fin de Grado muestra el proceso para el anlisis del sentimiento con datos obtenidos de redes sociales (Twitter y Facebook), aplicando tcnicas y herramientas propias de Big Data. Para ello se describe la secuencia lgica del proceso de anlisis, comenzando con la elaboracin de los protocolos para la obtencin de los datos a analizar, y continuando con el propio anlisis del sentimiento utilizando estos datos obtenidos. La sistemtica empleada ha sido anloga para el caso de Twitter y de Facebook. Para cada una de estas redes sociales se sigue un nico flujo de trabajo que culmina en la visualizacin de la informacin extrada tras el anlisis. Con esta finalidad, en cada apartado se remite al Anexo correspondiente donde se desarrollan las posibilidades de los mtodos utilizados. En este sentido, se han utilizado mtodos, herramientas y tecnologas alternativos para desarrollar el proceso, sealando qu instrumento es ms conveniente para diferentes propsitos. Tambin se ha pretendido dotar de un componente didctico al Trabajo Fin de Grado explicando, con ejemplos y de manera prctica, los distintos modos, cada uno con sus ventajas e inconvenientes, de realizar cada una de las etapas y tareas, conectndolos entre s para adaptarlos a las necesidades y exigencias de este estudio. Este trabajo permite disponer de una idea global del estadio actual de Big Data en general, y del anlisis del sentimiento en particular. Por ltimo, he querido aplicar en el presente Trabajo los conocimientos adquiridos durante mi estancia en la Universidad de Nueva Caledonia a travs del programa Erasmus+ Prcticas; por lo que se ha desarrollado un Anexo relativo a minera de datos, que se nutrir de los resultados obtenidos de las tareas previamente desarrolladas.

  • SUMMARY This Final Degree Project shows the sentiment analysis process achieved from social networks data (Twitter and Facebook), applying Bid Data techniques and tools. The logical processing sequence is described in order to develop the task. It starts elaborating the protocols to get the data that will be analysed. It continues analysing the intrinsic sentiment value. Facebook and Twitter have been evaluated in a similar way. For each of them only one workflow is used, which ends with the display of information related to the previous analysis. Each step of the process refers to the related annex where the methods are developed. Alternative methods, tools and technologies have been used in order to develop the process. In each of the step the most appropriate instrument for different purposes is indicated. I also wanted to provide a didactic element to my Final Degree Project. For that firstly, I explained in a practical way the different methods for developing each step with examples. Secondly, I indicated the advantages and disadvantages for each method. Finally, I connected all the methods to complete the process. This project gives a global idea about the current Big Data and the sentiment analysis status. To conclude, I wanted to apply in my Project the knowledge achieved during my stay in New Caledonia University through the Erasmus+ Prctics program. For that I developed an annex related to data mining which used the previous steps achievements.

  • NDICE 1. INTRODUCCIN Y ANTECEDENTES 1.1. Big Data ....... 1 a) Componentes de una plataforma BigData: Hadoop y su arquitectura .. 2 b) El ecosistema de Hadoop 4 1.2. Por qu redes sociales? 5 1.3. Qu es el anlisis del sentimiento? 6 1.4. Herramientas y Tecnologas utilizadas . 7 2. OBJETIVOS ....................................................................... 8 3. TRATAMIENTO DE DATOS DE TWITTER 3.1. Mtodos de captura de datos de Twitter .. 9 3.2. Anlisis de los datos capturados de Twitter 9 4. TRATAMIENTO DE DATOS DE FACEBOOK 4.1. Mtodos para la captura de datos de Facebook . 12 4.2. Anlisis de los datos capturados de Facebook . 13 5. MINERA DE DATOS (DATA MINING) .. 14 6. VISUALIZACIN DE LOS RESULTADOS OBTENIDOS .. 15 7. CONCLUSIONES .. 23 7.1. Lneas futuras de trabajo .. 24 8. BIBLIOGRAFA .... 25 9. PRESUPUESTO 27

  • ANEXOS ... 28 I. Herramientas y tecnologas utilizadas. Glosario de trminos . 29 II. Captura de datos de Twitter desde Horntonworks Sandbox con Flume .. 42 III. Mtodos alternativos para la captura de datos de Twitter: Carga de datos en local y Carga de datos en KNIME .. 58 IV. Anlisis de los datos capturados de Twitter mediante el mtodo del diccionario .... 73 V. Mtodos alternativos para el anlisis de datos de Twitter: API externa Sentiment 140, Interfaz web propia y Anlisis en KNIME 78 VI. Captura de datos de Facebook en KNIME con la extensin PALLADIAN y basado en RSS 104 VII. Anlisis de los datos capturados de la FanPage de Facebook mediante RSS y la API externa MeaningCloud ... 113 VII. Anlisis de datos de Facebook utilizando la API externa Datasift 123 IX. Minera de datos (Data mining) .. 128 XI. Tutorial de KNIME .. 160

  • 1

    1. INTRODUCCIN Y ANTECEDENTES Los Datos son Informacin. La Informacin es Poder

    1.1. Big Data. Cada da en el mundo se generan mas de 2.5 exabytes de datos. Para tener una idea de la inmensidad de esta cifra, 5 exabytes equivalen a todas las palabras pronunciadas por todos los seres humanos a lo largo de la Historia. La generacin de datos no solo crece, explota. El crecimiento exponencial es tan grande que el 90% de los datos guardados en la actualidad han sido creados en los dos ltimos aos. Estos datos vienen de diferentes fuentes: vdeos, imgenes, redes sociales, transacciones de comercio electrnico, bsquedas en internet, comunicaciones 3G, 4G y GPS, y sensores del internet de las cosas, por mencionar algunos ejemplos. Estos datos ya son big data [6]. Desde el amanecer de la civilizacin hasta el 2003, se crearon ms de 5

    Exabytes de informacin. En la actualidad, esta cantidad se est generando cada

    2 das. (Eric Schmidt, Google CEO, 2010) Qu es Big Data? Big Data se refiere comnmente a un montn de datos [10] [11] (expresados en trminos de petabytes (1015) o exabytes (1018)), que tomara demasiado tiempo y sera muy costoso cargar en un base de datos relacional para analizarlos; es decir, que una base de datos tradicional no podra manejar tal cantidad de datos [1]. Pero Big Data es mucho ms que eso, es una tendencia en el avance de la tecnologa que permite un nuevo enfoque de entendimiento y toma de decisiones para obtener, describir y analizar esta enorme informacin; sacando conclusiones tiles y valiosas [12]. Para definir y explicar Big Data se suele recurrir a las tres uves (Volumen, Variedad y Velocidad) [2] [3]: - Volumen: Actualmente somos testigos del crecimiento exponencial del almacenamiento de datos, que hoy en da son mucho ms que texto. Esto hace que las compaas tengan que almacenar grandes cantidades de datos (del

  • 2

    orden de Terabytes o Petabytes). Con el aumento de los datos, es necesario una arquitectura potente y nuevas aplicaciones capaces de almacenar y tratar estos datos. - Velocidad: La explosin de las redes sociales y el aumento de la informacin en la red ha cambiado el enfoque en que observamos los datos. Haba un tiempo en el que creamos que los datos o noticias de ayer eran recientes. Sin embargo, las radios y televisiones cambiaron lo rpido que recibimos nueva informacin. Hoy en da, las redes sociales estn en constante acrualizacin y, a veces, un mensaje o dato de unos segundos de antigedad ya no resulta til para los usuarios; que lo descartan para prestar atencin a las actualizaciones ms recientes. El manejo de datos es por tanto hoy en da casi a tiempo real y las actualizaciones se producen a cada segundo. - Variedad: Los datos pueden ser guardados en mltiples formatos. Por ejemplo, bases de datos, EXCEL, CSV, o en un simple archivo de texto. Tambin en otros formatos no tan frecuentes, como video, SMS, etc. A esta variedad es a la que hay que tratar para obtener un significado al conjunto de datos, tarea complicada cuando se tratan datos que provienen de distintas fuentes (lo que sucede en la vida real) a) Componentes de una plataforma BigData: Hadoop y su arquitectura. Apache Hadoop aparece en el mercado entre otras plataformas y tecnologas [13] como una solucin para solventar uno de los grandes problemas de Big Data, que es el analizar e interpretar datos de naturaleza muy dispar entre s. Se estima que, de la gran cantidad de datos que se genera a nuestro alrededor, slo el 20% es informacin estructurada, siendo el 80% restante datos no estructurados. Hadoop es un framework que permite el procesamiento de grandes volmenes de datos a travs de clusters, usando un modelo simple de programacin. Adems su diseo permite pasar de pocos nodos a miles de nodos de forma gil. Hadoop es un sistema distribuido con una arquitectura Master-Slave, usando para almacenar Hadoop Distributed File System (HDFS); y para hacer los clculos, algoritmos de MapReduce [4].

  • 3

    i) Hadoop Distributed File System (HDFS) fue creado a partir del Google File System (GFS) y es el sistema de ficheros de almacenamiento distribuido usado en Hadoop. HDFS se encuentra optimizado para grandes flujos y para trabajar con ficheros grandes en sus lecturas y escrituras. Los elementos importantes del cluster son el NameNode, nico en el cluster que regula el acceso a los ficheros por los clientes y mantiene la metadata y el control; y los DatasNode, responsables de leer y escribir las peticiones de los clientes.

    Figura 1. Ejemplo de HDFS ii) Hadoop MapReduce es un proceso batch creado para el proceso distribuido de los datos. El modelo de MapReduce simplifica el procesamiento en paralelo, abstrayndonos de la complejidad que hay en los sistemas distribuidos. Bsicamente las funciones Map transforman un conjunto de datos a un nmero de pares key/value. Cada uno de estos elementos se encontrar ordenado por su clave; la funcin reduce es usada para combinar los valores (con la misma clave) en un mismo resultado. Un programa en MapReduce, se suele conocer como Job; la ejecucin de un Job empieza cuando el cliente manda la configuracin de Job al JobTracker, esta configuracin especifica las funciones Map, Combine (shuttle) y Reduce, adems de la entrada y salida de los datos.

  • 4

    Figura 2. Ejemplo de MapReduce

    b) El ecosistema de Hadoop. Con Hadoop interactan diversas herramientas y proyectos de caractersticas y finalidades muy diversas (su nmero crece, y se actualizan da a da). Las ms comunes son [5] [7]: - Apache Flume: es un sistema distribuido para capturar de forma eficiente, agregar y mover grandes cuantidades de datos de diferentes orgenes (diferentes servidores) a un repositorio central, simplificando el proceso de recolectar estos datos para almacenarlos en Hadoop y poder analizarlos. - Hive: es un sistema de Data Warehouse que facilita la agregacin de los datos, su consulta, y el anlisis de grandes datasets almacenados en Hadoop. Hive proporciona mtodos de consulta de los datos usando un lenguaje parecido al SQL, llamado HiveQL. - HBase: se trata de la base de datos de Hadoop. HBase es el componente a usar, cuando se requiere escrituras/lecturas en tiempo real y acceso aleatorio para grandes conjuntos de datos. Es una base de datos orientada a la columna, eso quiere decir que no sigue el esquema relacional ni admite SQL - Apache Pig: inicialmente desarrollado por Yahoo. Para simplificar el anlisis de datos, proporciona un lenguaje de alto nivel. Est pensado para trabajar con cualquier tipo de datos Otros como: Chukwa, Apache Mahout, Apache Sqoop, Apache ZooKeeper, Apache Lucene, Jaql, Apache Avro, Apache UIMA.

  • 5

    Compaas como Hortonworks [8] o Cloudera [9] ofrecen distribuciones que combinan stas y otras herramientas, poniendo a disposicin del usuario un ecosistema de Hadoop completo y funcional.

    Figura 3. Ejemplo de ecosistema Hadoop

    1.2. Por qu redes sociales? En Facebook, con sus 1.200 millones de usuarios, que emplean 20 mil millones de minutos al da en esta red social; se comparten ms de 10 millones de fotos cada hora, y se producen al cabo del da unos 3.000 millones de comentarios o Me gusta; adems cuenta con un almacenamiento total de 100 Petabytes de fotos y videos. Por su parte, en Twitter, con casi 7 millones de usuarios diarios activos, se originan ms de 400 millones de tuits cada da, lo que suponen 12 Terabytes diarios. Ante estas cifras, el campo de las redes sociales parece un buen nicho en el que profundizar para experimentar el potencial de Big Data en su mximo esplendor. En efecto, uno de los casos ms referenciados de Big Data es recopilar interacciones social media para un mejor entendimiento del sentimiento sobre un tema, marca o compaa. Hadoop es una plataforma ideal para realizar este tipo de anlisis ya que puede almacenar y tratar grandes cantidades de datos y, adems, es especialmente eficaz para trabajar con datos no estructurados.

  • 6

    1.3. Qu es el anlisis de sentimiento?

    Data sentiment son datos no estructurados que representan actitudes, emociones y pensamientos en fuentes como redes sociales, blogs, anlisis de productos o interacciones comerciales con el cliente. Mediante el anlisis del sentimiento se aspira a entender, en primer lugar, con qu materia guarda relacin el texto que se analiza. Una vez que el sistema conoce la materia, el segundo objetivo es conocer el sentido (bsicamente positivo o negativo), as como la intensidad de esa opinin. Aplicado al mundo empresarial, las marcas que cuentan con un buen motor de anlisis del sentimiento, extraen conclusiones y toman decisiones concretas basadas en la informacin que les proporcionan los datos: modificar elementos de su oferta, lanzar acciones correctivas cuando detectan un problema con la experiencia del cliente o construir sus mensajes de marketing. Por ejemplo, es posible tomar decisiones sabiendo que hay muchos clientes que se quejan sobre el envase del producto, o que lo ms valorado de un hotel es el desayuno. Las organizaciones utilizan el anlisis del sentimiento para entender como el pblico se siente sobre algo en particular en un momento y tiempo determinado, y seguir la evolucin de esas opiniones durante el tiempo. En este sentido, una empresa puede analizar sentimiento, entre otros, sobre: - Un producto: Por ejemplo, cmo respondi el segmento objetivo al lanzamiento de un producto concreto?, qu productos estn asociados en la compra de los consumidores? cmo evoluciona la valoracin de un producto? - Un servicio: Por ejemplo, una tienda de ropa o un restaurante puede averiguar en cul de sus localizaciones o franquicias se est ofreciendo un servicio deficiente. - Competidores: En qu reas el pblico ve nuestra compaa mejor que la competencia? - Reputacin: Qu piensa realmente la gente sobre nuestra compaa? Nuestra reputacin es positiva o negativa?

  • 7

    1.4. Herramientas y Tecnologas utilizadas. Los medios materiales utilizados durante el desarrollo del TFG han sido: - Ordenador Personal MacBook: o Procesador Intel Core i7 2.5 GHz o Memoria 16GB DDR3 o Disco Duro 500GB o Sistema Operativo OS X 10.10.2

    - Software de virtualizacin: o VirtualBox 4.3.20

    - Software de visualizacin: o Tableau 8.3

    - Software para minera de datos: o KNIME 2.11.2

    - Acceso a Internet de Banda Ancha: o Documentacin de las herramientas software Adems, en el Anexo I se describen brevemente otras herramientas y tecnologas utilizadas en este trabajo fin de grado: HORTONWORKS SANDBOX, MAPREDUCE, HIVE, PIG, FLUME, KNIME, PALLADIAN y TABLEAU. Finalmente, en el Anexo I tambin se incluye un glosario de trminos frecuentemente utilizados en el contexto de este trabajo fin de grado.

  • 8

    2. OBJETIVOS El objetivo de esta Trabajo Fin de Grado consiste en hacer compatibles diversas herramientas con la finalidad de disear e implementar un sistema capaz de obtener, extraer y procesar distintos datos procedentes de las redes sociales ms utilizadas (tuits de Twitter y posts de Facebook); estos datos se emplearn para hacer un anlisis del sentimiento asociado a una palabra concreta o un conjunto de ellas. Se conocer de este modo la valoracin global que tienen los usuarios (mediante la deteccin de indicadores positivos, negativos o neutros) del tema analizado. Ser posible analizar la evolucin de la valoracin a lo largo del tiempo y en base a distintos parmetros (pas de procedencia, idioma utilizado, tipo de publicacin), as como realizar una lectura y anlisis de la informacin obtenida que permita obtener un valor aadido respecto a los datos originales. Finalmente, los resultados se podrn visualizar grficamente para acceder, de forma simple e interactiva, a la informacin analizada. Adems, sobre estos datos se realizarn distintas tareas tpicas de minera de datos, realizando el tratamiento de los datos para posteriormente aplicar funciones de clustering, clasificacin y asociacin, etapas clsicas y fundamentales del proceso de minera de datos.

  • 9

    3. TRATAMIENTO DE DATOS DE TWITTER

    3.1. Mtodos de captura de datos de Twitter. Para capturar los datos de Twitter se va a utilizar la herramienta Flume; este trabajo fin de grado adapta esta herramienta para obtener los datos provenientes de Twitter y almacenarlos en el sistema de archivos HDFS de nuestra mquina virtual, y facilitar as su posterior anlisis. En el Anexo II se detalla el procedimiento para capturar datos de Twitter desde Horntonworks Sandbox con Flume; el procedimiento desarrollado configura Flume para la bsqueda de datos en Twitter y permite la visualizacin de los resultados en tablas. Adems, en el Anexo III se detallan los procedimientos elaborados para cargar datos en otros dos entornos: a) La carga de datos en local es til para el anlisis de datos predefinidos, esto es, datos brutos suministrados por un tercero; por ejemplo, una empresa ya dispone de datos descargados de Twitter y pretende analizarlos. Este procedimiento permite analizar los datos previamente descargados sin necesidad de configurar Flume; el principal inconveniente asociado a este mtodo es la imposibilidad de personalizar los parmetros de bsqueda, pues los datos ya estn descargados. b) La carga de datos en KNIME, que puede hacerse con la extensin PALLADIAN, permite descargar los datos en un formato de origen RSS tras definir previamente una query de bsqueda. Si no se utiliza la extensin PALLADIAN, los tuits son descargados directamente en KNIME tras definir una cadena de bsqueda. Este mtodo permite que los datos obtenidos se empleen para realizar tareas de minera de datos, como se mostrar en el anexo IX. 3.2. Anlisis de los datos capturados de Twitter. El anlisis de los datos capturados de Twitter se ha realizado mediante el mtodo del diccionario. Este mtodo analiza el texto de los tuits buscando palabras predefinidas asociadas a un valor (positivo o negativo); posteriormente, en base al nmero de ocurrencias, el mtodo asigna un valor de sentimiento al tuit (positivo, negativo o

  • 10

    neutro). Por ejemplo un tuit dice Mi asignatura preferida es ; el mtodo del diccionario analiza el texto y, al descubrir la palabra favorita (que est predefinida con valor positivo en el diccionario) asigna valor positivo al tuit. Adems, el mtodo del diccionario asigna a cada palabra un valor (dbil, fuerte); por ejemplo, a la palabra triunfo le asigna un valor positivo y fuerte, mientras que a la palabra guerra le asigna un valor negativo y dbil. La principal ventaja del mtodo es la facilidad de uso (ya que diccionario valora ms de 8.000 palabras); adems, el diccionario puede ser complementado con otras palabras que introduzca el usuario, y se puede personalizar, esto es, el usuario puede asignar su propia valoracin a las palabras. El principal inconveniente de este mtodo es que no considera el contexto del tuit. En el Anexo IV se desarrolla el script para aplicar el mtodo del diccionario en el anlisis de los tuits y crear las correspondientes tablas de visualizacin de resultados. Adems, en el Anexo V se especifican las adaptaciones realizadas para utilizar otros posibles entornos para analizar los datos obtenidos de Twitter; en efecto, existen servicios online encargados de analizar el sentimiento basados en algoritmos de clasificacin y machine learning. Los mtodos alternativos utilizados han sido: 1. Sentiment 140 es un servicio online especfico para el anlisis del sentimiento en Twitter que, tras introducir una cadena de bsquedas, nos ofrece como resultado los tuits encontrados con el sentimiento asociado. Es un mtodo inmediato, pero tiene los inconvenientes de que slo muestra los ltimos tuits y no es posible la descarga de los tuits para su posterior manejo y tratamiento. 2. Tambin se ha desarrollado el mtodo consistente en combinar una API externa (Datumbox) y la propia API de Twitter, haciendo la bsqueda desde una interfaz web propia. El inters de este mtodo se basa en que Datumbox simplifica el proceso de usar machine learning al ofrecer funciones API que permiten construir herramientas de monitorizacin de social media personalizadas (en este sentido, cada vez ms compaas usan social media marketing para promocionar sus marcas y es necesario poder evaluar la efectividad de estas campaas). 3. Finalmente se crea un proyecto en KNIME para, conociendo una valoracin previa (positiva, negativa, neutra) de los tuits, desarrollar un diccionario

  • 11

    que incorpora palabras caractersticas con un peso relevante en el anlisis del sentimiento. Este mtodo descubre reglas de clasificacin para estimar la valoracin de nuevos tuits segn las palabras caractersticas que contenga.

  • 12

    4. TRATAMIENTO DE DATOS DE FACEBOOK

    4.1. Mtodos para la captura de datos de Facebook La captura de datos de Facebook presenta dificultades especficas. En efecto, Facebook actualiz su API a la versin 2.0 el 30 de Abril de 2015, y desde su API pblica ya no se permiten las bsquedas de mensajes, post, estados, ; s es posible capturar los datos mediante servicios de pago que ofrecen APIs para acceder a los datos de Facebook (por ejemplo, la API Datasift que se analiza en el Anexo VIII). Por lo tanto, salvo uso de servicios de acceso privado asociados a Facebook, no se puede emplear un procedimiento anlogo al desarrollado para capturar datos de Twitter desde Horntonworks Sandbox con Flume; tampoco se puede acceder a la API de Facebook en el entorno KNIME con Palladian.

    Para poder acceder a los datos se ha de crear una FanPage en Facebook. Por este motivo, los datos obtenidos de Facebook son mucho ms limitados que los de Twitter, ya que nicamente se tiene acceso a los posts que hayan sido escritos en la FanPage. No obstante, aunque parezca que este tipo de bsquedas tiene un alcance relativo, es indudable el inters que puede tener para evaluar las opiniones y sugerencias que los usuarios de los productos y servicios pueden dejar en la FanPage de una gran empresa; por ejemplo, las opiniones en la FanPage de Apple sobre un nuevo dispositivo, o las sugerencias en la FanPage de Mercadona o El Corte Ingls. En el Anexo VI se detalla el procedimiento seguido para la captura de datos de Facebook en KNIME con la extensin PALLADIAN y basado en RSS.

  • 13

    4.2. Anlisis de los datos capturados de Facebook. En el Anexo VII se desarrolla el mtodo para analizar los datos capturados de la Fan Page utilizando el SDK que ofrece MeaningCloud; mediante la ejecucin de un script desde la Sandbox se enviar a la API de MeaningCloud los mensajes de la FanPage previamente almacenados en formato CSV en la Sandbox, y se obtendr una respuesta con el sentimiento tanto asociado a cada mensaje como el sentimiento global de la FanPage. Adems, en el Anexo VIII, se aplicar un mtodo para analizar la informacin de Facebook que ya no se limita exclusivamente a una FanPage, sino que se analizar la informacin utilizando servicios asociados (de pago) a Facebook, en concreto la API externa que provee Datasift; esta API se conecta con Facebook y aplica los filtros preestablecidos para obtener los mensajes que se ajusten a nuestra bsqueda y a la vez, realiza un anlisis del sentimiento para cada tem. Una vez finalizado el anlisis, los resultados son importados en KNIME, desde donde se realizan tareas de minera de datos sobre los mismos, como se desarrolla en el Anexo IX.

  • 14

    5. MINERA DE DATOS (DATA MINING)

    La minera de datos consiste en la bsqueda de patrones que estn ocultos entre todo el entramado de informacin asociado a grandes volmenes de datos. En el Anexo IX se desarrolla el procedimiento en KNIME para analizar los tuits descargados con Flume en el Anexo II; para ello se han definido intervalos discretos de los atributos estudiados para realizar posteriormente una tarea de clustering que permite hacer grupos de usuarios con atributos ubicados en los mismos intervalos; una vez desarrollado este proceso se pueden descubrir las reglas de asociacin entre los distintos atributos analizados y su representacin mediante un rbol de decisin. Adems, en el Anexo IX se muestra tambin el procedimiento para representar grficamente, mediante una nube de etiquetas (tag cloud), los resultados de una bsqueda en Twitter (con los tuits descargados con Flume en el Anexo II) y Facebook (con los mensajes descargados con Datasift en el Anexo VIII). En el ltimo apartado del Anexo IX se utiliza la extensin PALLADIAN en KNIME para analizar la repercusin que una bsqueda en Google, una noticia en Google News o un artculo en un blog asociado a Google Blogs han tenido en las redes sociales Twitter (nmero de veces que se ha tuiteado) y Facebook (nmero de likes, comments y shares que ha tenido cada uno de los resultados de la bsqueda, noticia o artculo de blog). Finalmente, a este Trabajo Fin de Grado se le ha aadido un Anexo X que incluye un manual sobre el uso de KNIME para realizar minera de datos; este manual (en ingls) fue elaborado durante mis prcticas fin de grado en la Universidad de Nueva Caledonia financiadas con una beca del programa Erasmus+ Prcticas.

  • 15

    6. VISUALIZACIN DE LOS RESULTADOS OBTENIDOS Para visualizar los resultados obtenidos mediante el anlisis del sentimiento se a utilizar el software TABLEAU; para realizar este Trabajo Fin de Grado se ha obtenido una licencia de la edicin profesional para uso exclusivamente acadmico [33]. Las etapas para visualizar los resultados obtenidos utilizando Tableau son: i) Conexin de Tableau con la Sandbox ii) Representacin del sentimiento iii) Lneas de tendencia y pronsticos iv) Visualizacin on line en el servidor de Tableau v) Visualizacin on line en un servidor propio

    i) Conexin de Tableau con la Sandbox El primer paso para obtener la visualizacin de los resultados es conectar el software Tableau con nuestra sandbox. Para ello se ha de especificar en Tableau la fuente de origen de los datos (en este caso nuestro servidor Hortonworks), y se ha de seleccionar la tabla cuyo contenido se desea visualizar, en este caso la tabla tweetsbi_mining creada en el Anexo IV.

  • 16

  • 17

    ii) Representacin del sentimiento Es posible representar sobre un mapamundi el atributo contenido en la tabla asociado al sentimiento de los tuits analizados sobre un determinado asunto (en el ejemplo, sobre germanwings); los nmeros indican el total de registros (tuits) que provienen de cada pas y el color representa el sentimiento medio de los tuits analizados, siendo el verde claro el extremo negativo; y el verde oscuro, el positivo.

    Estos resultados tambin pueden visualizarse en forma de tabla que indica el nmero de registros y el sentimiento medio para cada pas.

  • 18

    Tambin es posible realizar diferentes vistas, por ejemplo, el tamao del crculo est en proporcin con el nmero de tuits que ha generado cada pas; y el color, con el sentimiento promedio.

  • 19

    iii) Lneas de tendencia y pronsticos Una vez elegido un marco temporal (eje x), es posible visualizar una lnea de tendencia del nmero de tuits con respecto al tiempo (grfico inferior) y del sentimiento promedio asociado (grfico superior). Estas lneas de tendencia permiten pronosticar a corto plazo la evolucin de estos atributos.

  • 20

    iv) Visualizacin on line en el servidor de Tableau Los resultados y vistas creadas se pueden publicar en el servidor Tableau para que sean accesibles desde cualquier navegador. Para ello se ha de crear un sitio on line en el servidor de Tableau; este sitio alojar los proyectos creados utilizando este software.

    Para subir el proyecto creado, se ha de iniciar la sesin en el servidor de Tableau y posteriormente se publica el libro de trabajo desde el entorno de Tableau.

  • 21

  • 22

    Una vez publicado el proyecto desde Tableau, es accesible desde la web asociada al servidor de Tableau.

    v) Visualizacin on line en un servidor propio

    Finalmente es posible, mediante un cdigo html generado por Tableau, acceder al contenido del proyecto publicado desde un sitio web del cual seamos administradores para visualizar los contenidos deseados en nuestra web.

  • 23

    7. CONCLUSIONES En este Trabajo Fin de Grado se han desarrollado herramientas para realizar las siguientes actividades: 1. Obtener datos de Twitter y de Facebook utilizando distintos mtodos. - Para Twitter se ha hecho uso del sistema Flume y del software KNIME y su extensin Palladian. - Para Facebook se ha hecho uso del software KNIME basado en fuente web RSS. 2. Analizar los datos capturados para averiguar el sentimiento asociado. - Para Twitter se ha hecho uso del mtodo de diccionario, de las API externas Sentiment 140 y Datumbox, y de KNIME y su extensin Palladian. - Para Facebook se ha hecho uso de la API MeaningCloud basado en fuente web RSS y de la API Datasift. 3. Aplicar tareas de minera de datos sobre los resultados, con el software KNIME. 4. Visualizar los resultados obtenidos a travs del software Tableau. Dado el amplio uso de recursos utilizados se ha podido obtener una idea general del estado actual del sector. En este sentido, los principales aspectos que deben ser desarrollados para el progreso del anlisis del sentimiento en el contexto de Big Data son desde mi punto de vista: - Mejorar la integracin y compatibilidad de las distintas herramientas (Flume, KNIME, Datasift, MeaningCloud, ). - Mejorar los procedimientos existentes actualmente (herramientas, algoritmos, software, ) para el anlisis de los datos capturados en Twitter y Facebook, ya que en ocasiones se obtienen resultados incoherentes y discordantes con la realidad.

  • 24

    7.1. Lneas futuras de trabajo. El desarrollo de las diferentes tareas realizadas durante este Trabajo Fin de Grado incluye varias funcionalidades y usos que alcanzan los objetivos previstos planteados en el apartado 2 de esta Memoria. Pero tambin se han dejado abiertas varias lneas futuras de desarrollo sobre las que se puede profundizar para mejorar los mtodos o ampliar su campo de actuacin. Algunas sugerencias sobre lneas de trabajo relacionadas con la temtica de este TFG que pueden ser seguidas en el futuro son: - Desarrollo de un sistema que agrupe todos los mtodos del flujograma principal para que, de una sola vez, se realice la captura de datos, anlisis y visualizacin en relacin a una query determinada. - Desarrollo de una interfaz web que permita realizar directamente todas las etapas del flujograma (desde la obtencin de los datos hasta la visualizacin, pasando por el anlisis, introduciendo una query por el usuario), de manera que todo el proceso quede oculto para el usuario. La mejora de los mtodos tambin est asociada a la aparicin de nuevas versiones de las herramientas o tecnologas que componen cada mdulo, pudiendo as incrementar las funciones disponibles en el sistema global. Aparte de estas posibles incorporaciones a los mtodos descritos, tambin quedan abiertas otras puertas con diversas opciones que se puedan presentar, existiendo siempre la posibilidad de sustituir las tecnologas que integran cada uno de los mdulos por otras con la misma funcionalidad, pero que den mejores prestaciones.

  • 25

    8. BIBLIOGRAFA [1] Hadoop for Dummies (2012) Robert D. Schneider. Ed John Wiley & Sons [2] Hadoop. The Definitive Guide (2012) Tom White. Ed OReilly [3] Big Data Application Architecture Q&A (2013) Nitin Sawant and Himanshu Shah. Ed Apress [4] Hadoop in Action (2011) Chuck Lam. Ed Manning [5] Hadoop MapReduce Cookbook (2013) Srinath Perera. Ed Packt Publishing [6] Big Data University. http://bigdatauniversity.com/bdu-wp/bdu-course/big-data-analytics-demos/ [7] Fundacin Big Data. http://fundacionbigdata.org/glosario-big-data/ [8] Hortonworks. http://hortonworks.com/ [9] Cloudera. http://www.cloudera.com/ [10] Freebase. http://www.freebase.com/ [11] Public data. http://publicdata.eu/ [12] Bidoop. http://www.bidoop.es/casos_estudio?language=es [13] Texata. http://www.texata.com/resources/directory/wpbdp_category/platforms/ [14] Hortonworks Sandbox. http://hortonworks.com/products/hortonworks-sandbox/#install [15] Hortonworks Sandbox. http://hortonworks.com/wp-content/uploads/2015/05/Import_on_Vbox_5_11_2015.pdf [16] Hortonworks Sandbox. http://es.wikipedia.org/wiki/VirtualBox [17] Mapreduce. http://hortonworks.com/hadoop/mapreduce/ [18] Mapreduce. http://www.franciscojavierpulido.com/2013/07/bigdata-hadoop-ii-mapreduce.html [19] Hive. http://java4developers.com/2013/introduccion-a-hive/ [20] Hive. http://hortonworks.com/hadoop/HIVE/ [21] Hive. http://www.franciscojavierpulido.com/2013/11/hive-consultas-tipo-sql-sobre-hadoop.html [22] Pig. http://www.ibm.com/developerworks/ssa/data/library/bigdata-apachepig/ [23] Pig. http://hortonworks.com/hadoop/pig/ [24] Flume. https://unpocodejava.wordpress.com/2012/10/25/que-es-apache-flume/ [26] Flume. http://java4developers.com/2013/apache-flume-y-apache-sqoop/

  • 26

    [27] Flume. http://hortonworks.com/hadoop/flume/ [28] Sentiment 140. http://cs.stanford.edu/people/alecmgo/papers/TwitterDistantSupervision09.pdf [29] Datumbox. http://www.datumbox.com/ [30] Knime. https://www.knime.org/blog/sentiment-analysis [31] Datasift. https://dev.datasift.com/docs/csdl/operators [32] Extensin Big Data para KNIME. https://tech.knime.org/knime-store [33] Tableau. http://www.tableau.com/products/desktop Nota: Las pginas de internet han sido visitadas por ltima vez el 8 de junio de 2015.

  • 27

    9. PRESUPUESTO

    El presupuesto para llevar a cabo este Trabajo Fin de Grado es de 7.380 (incluido el IGIC de los recursos de hardware y software) y consta de las partidas que se describen a continuacin. 1. Coste de los Recursos Humanos: se estiman necesarios 4 meses de trabajo de un ingeniero junior, 7 horas diarias en das laborales, con un coste bruto para la empresa de 1.500 mensuales: 1 mes de formacin y documentacin: 1.500 3 meses de desarrollo: 4.500 Coste total durante 4 meses: 6.000 2. Coste de los Recursos Hardware: se estiman necesarios un ordenador personal porttil dedicado a la elaboracin del proyecto (cuyo coste es de 1.200 , con un periodo de amortizacin es de 24 meses) y acceso a Internet de banda ancha; el coste mensual del hardware, incluido un 7% de IGIC, es: Ordenador personal: 50 Conexin a banda ancha: 40 Coste total durante 4 meses: 360 3. Coste de los Recursos Software: aunque se utilizar principalmente software opensource (por ejemplo KNIME), es necesario disponer de licencias para realizar algunas tareas especficas; el coste mensual de las licencias, incluido el 7% de IGIC, es: Licencia Windows 8: 10 Licencia Extensin BigData para KNIME: 45 Licencia Datasift: 50 Licencia Tableau: 150 Coste total durante 4 meses: 1.020

  • 28

    ANEXOS

  • 29

    ANEXO I Herramientas y tecnologas utilizadas Glosario de trminos

  • 30

    1. Herramientas y tecnologas utilizadas NOTA: En el apartado de fuentes de documentacin de la memora se sealan los principales recursos on line sobre estas herramientas y tecnologas. 1. HORTONWORKS SANDBOX Sandbox es una mquina virtual independiente con Hadoop preconfigurado que, junto con un conjunto de herramientas y utilidades, crea un ecosistema idneo para el trabajo en BigData [14,15]. Para ejecutar este dispositivo virtual es necesario tener un software de virtualizacin en nuestra mquina, en este trabajo fin de grado se utiliza VirtualBox [16]. 2. MAPREDUCE MapReduce [17] es el framework original para escribir aplicaciones que manejan grandes cantidades de datos, tanto estructurados como no estructurados, almacenados en HDFS. Fue introducido por Google en 2004. Alguno de los beneficios de MapReduce son los siguientes: - Simplicidad: MapReduce puede ser ejecutado sobre aplicaciones en cualquier lenguaje de programacin. - Escalabilidad: MapReduce puede procesar petabytes de informacin almacenada en un cluster. - Velocidad: El procesamiento paralelo significa que MapReduce puede resolver en horas o minutos tareas que llevaran das. - Recuperacin: MapReduce toma cuidado de los fallos. Si una mquina con una copia de los datos no est disponible, hay otra con una copia con los mismos pares key/value que pueden ser usados para resolver la misma sub-tarea. El JobTracker maneja todo este proceso. - Mnimo movimiento de datos: MapReduce mueve los procesos a HDFS, donde los datos residen. Las tareas de procesamiento pueden ocurrir en el nodo fsico donde se encuentran los datos; lo que reduce significativamente a reducir los tiempos y velocidades de procesamiento Hadoop.

  • 31

    El objetivo principal de MapReduce es permitir la computacin paralela sobre grandes colecciones de datos permitiendo abstraerse de los grandes problemas de la computacin distribuida. Cmo funciona MapReduce? Un proceso MapReduce divide un gran conjunto de datos en pequeas porciones independientes, y las organiza en pares key/value para procesamiento paralelo. Este procesamiento paralelo mejora la velocidad y confiabilidad del cluster, devolviendo soluciones ms rpidamente y con gran precisin: - La funcin Map divide la entrada en rangos por el formato de entrada y crea una tarea map para cada rango. El JobTracker distribuye estas tareas a los nodos workers. La salida de cada tarea map es particionado en un grupo de pares key-value. - La funcin Reduce recoge estos resultados y los combina para solucionar el problema que el master node necesito resolver. Cada tarea reduce extrae la particin relevante desde la mquina donde la tarea map fue ejecutada; luego escribe la salida de vuelta en HDFS. As, la tarea reduce es capaz de recoger los datos desde todos los maps por los keys, combinndolos para resolver el problema [18]. 3. HIVE Hive [19, 20] es un sistema de almacenamiento de datos que facilita el manejo sencillo de datos, consultas ad-hoc, y el anlisis de grandes conjuntos de datos almacenados en sistemas de ficheros compatibles con Hadoop. Hive provee un mecanismo para dotar de estructura a los datos y realizar consultas sobre los mismos con el lenguaje tipo SQL llamado HiveQL, que es un lenguaje de consultas a base de datos muy similar a SQL [21]. Algunas de las principales caractersticas de Hive y de su lenguaje HiveQL son las siguientes: - HiveQL es un lenguaje tipo SQL que permite realizar consultas de grandes volmenes de datos almacenados en HDFS.

  • 32

    - Las consultas realizadas desde HiveQL se ejecutan siguiendo el modelo Map/Reduce. - Hive necesita almacenar metadatos y los esquemas de datos mediante un servicio metastore, que es el lugar donde se almacena la informacin relacionada con las operaciones en Hive. - La latencia de las consultas suele ser mayor que las realizadas en las bases de datos relacionales debido a la inicializacin de Map/Reduce. 4. PIG Pig [22, 23] fue originalmente desarrollado por Yahoo en el ao 2006, y adoptado por la Apache Software Foundation a partir del ao 2007. Apache Pig es una plataforma para el anlisis de grandes conjuntos de datos que consta de un lenguaje de alto nivel para realizar programas de anlisis, junto con la infraestructura para la evaluacin de los mismos. La caracterstica sobresaliente de Pig es que su estructura es susceptible a la paralelizacin, lo que a su vez le permite manejar enormes cantidades de informacin. La capa de infraestructura de Pig se compone de un compilador que produce secuencias MapReduce, lo que facilita que los usuarios de Hadoop se centren ms en analizar los datos y dedicar menos tiempo en desarrollar aplicaciones MapReduce. El lenguaje de programacin que utiliza Pig, Pig Latin, crea estructuras tipo SQL (SQL-like), de manera que, en lugar de escribir aplicaciones separadas de MapReduce, que podran consistir en ms de cien lneas de cdigo en Java, se pueda crear un script de Pig Latin en no ms de 10 lneas, el cual es automticamente paralelizado y distribuido a travs de un clster. Una de las principales ventajas que ofrece Pig es que, al igual que un cerdo que come cualquier cosa, Pig puede operar con cualquier tipo de datos, sea este estructurado o no estructurado. Adems Pig puede asimilarse a una herramienta ETL (Extract Transform Load) ya que permite operaciones enfocadas a procesar distintos tipos de datos, almacenarlos en una base de datos, y posteriormente ejecutar queries sobre ellos.

  • 33

    5. FLUME Apache Flume [24, 25, 26] es un sistema distribuido para recoger, agregar y mover grandes volmenes de datos provenientes de logs desde distintas fuentes a un almacn de datos centralizado, como puede ser HDFS. El uso de Apache Flume no slo se cie a la agregacin de datos desde logs, ya que debido a que las fuentes de datos son configurables, Flume permite ser usado para recoger datos desde eventos ligados al trfico de red, redes sociales, mensajes de correo electrnico a casi cualquier tipo de fuente de datos posibles. La arquitectura de Flume puede ser diferenciada: Evento: Un payload de bytes con encabezados opcionales que representan la unidad de datos que Flume puede transportar desde su punto de origen hasta su destino final. Flujo: Movimiento de eventos desde el punto de origen hasta su destino final. Cliente: Implementacin que opera en el punto de origen de los eventos y los entrega a un agente Flume. Fuente (Source): Implementacin que puede consumir eventos entregados a l a travs de un mecanismo. Cuando una fuente recibe un evento, se lo entrega a uno o ms canales. Canal (Channel): es un almacenamiento temporal para eventos, donde los eventos se entregan al canal a travs de fuentes que operan con el agente. Un evento puesto en un canal permanece en ese canal hasta que un Sumidero (Sink) lo elimina. Sumidero (Sink): Implementacin que puede eliminar eventos de un canal y transmitirlos al siguiente agente en el flujo, o hasta el destino final del evento.

  • 34

    Estos elementos se relacionan de la siguiente manera:

    El agente Flume es el proceso que gestiona este flujo de datos, para lo que se debe especificar un fichero de configuracin de los parmetros de los distintos componentes de la arquitectura. 6. KNIME NIME es un entorno gratuito para el desarrollo y ejecucin de tcnicas de minera de datos. KNIME fue desarrollado originalmente en el departamento de bioinformtica y minera de datos de la Universidad de Constanza, Alemania. En la actualidad, la empresa KNIME.com, radicada en Zrich, contina su desarrollo, adems de prestar servicios de formacin y consultora. KNIME est desarrollado sobre la plataforma Eclipse y programado, esencialmente, en Java. Como otros entornos de este tipo su uso se basa en el diseo de un flujo de ejecucin que plasme las distintas etapas de un proyecto de minera de datos. A travs de diferentes nodos es posible ejecutar operaciones de lectura y escritura, acceso a

  • 35

    base de datos locales o remotas, o realizar tareas de data mining como clustering y ejecutar algoritmos de clasificacin o de asociacin. 7. PALLADIAN Palladian es un proyecto desarrollado con la intencin de integrar en KNIME la interaccin con diferentes servicios y herramientas de la red. Fue creado en 2009 y actualmente da soporte con un kit de herramientas basadas en Java. Entre las funcionalidades que ofrece cabe destacar clasificacin de texto, ranking de contenido, reconocimiento de entidades, extraccin de geolocalizacin; y la que se utilizar en el presente Trabajo, bsqueda de queries en Twitter. 8. TABLEAU Tableau es una herramienta de visualizaciones interactiva de datos, desarrollada en Seattle (EEUU). Su objetivo es analizar base de datos a travs de diferentes sistemas de representacin visual que facilitarn el anlisis de dichos datos. Las ventajas de esta herramienta son la gran diversidad de fuentes que pueden ser sincronizadas con el software y las grandes posibilidades de visualizacin, que permiten crear distintas vistas con los datos que interesa representar.

  • 36

    2. Glosario de trminos 1. VOCABULARIO BSICO DE TWITTER - Favorito: son los tweets preferidos por los usuarios. Al ser marcados pueden ser accedidos en cualquier momento. - Follower o seguidor: usuario que lee tus tuits en su pgina principal de Twitter. - Following o seguido: Usuario al que lees sus tuits en tu pgina principal de Twitter. - Hashtag (#) o etiqueta: se utiliza en Twitter para clasificar los tweets por temas. Se forman con el smbolo almohadilla (#) seguido del tema (#tema). El uso de hashtag permite organizar debates con multitud de usuarios. - Retweet (RT) o Retuiteo: Es la accin de compartir un tweet de un usuario con tus seguidores. La forma manual de hacerlo es poniendo RT @usuario Tweet-de-usuario. Twitter tiene la opcin de hacerlo automticamente. - Tweet (Tuit): mensaje de 140 caracteres como mximo que publicas en Twitter. - Twittear: accin de escribir tweets. 2. VOCABULARIO BSICO DE FACEBOOK - Me Gusta (Like): El botn ms popular creado por Facebook. Es til para indicar que un tipo de contenido es del gusto de quien lo ve. Su uso se ha extendido a sitios web externos, los que utilizan este botn para que quienes tengan una cuenta en Facebook puedan compartir el contenido de ella con sus amigos. - Comentar (Comment): Es la accin de comentar, ya sea una pgina, un artculo o cualquier publicacin de cualquier amigo. - Compartir (share): Es la accin de poner a disposicin a otro usuario, a travs un mensaje directo, su muro, o un grupo, un elemento (video, foto, etc) o texto.

  • 37

    3. JSON JSON (JavaScript Object Notation) es un formato para el intercambios de datos que describe los datos con una sintaxis especfica que se usa para identificar y gestionar los datos. JSON naci como una alternativa a XML. Una de las mayores ventajas que tiene el uso de JSON es que puede ser ledo por cualquier lenguaje de programacin y, por lo tanto, puede ser usado para el intercambio de informacin entre distintas tecnologas. Para asignar a un nombre un valor debemos usar los dos puntos (:); este separador es el equivalente al igual (=) de cualquier lenguaje. Los tipos de valores que podemos encontrar en Json son los siguientes: Un nmero (entero o float) Un string (entre comillas simples) Un booleano (true o false) Un array (entre corchetes [] ) Un objeto (entre llaves {}) Null Los objetos JSON se identifican entre llaves. En un Json se pueden incluir arrays, para ellos el contenido del array debe ir entre corchetes []. 4. SCRIPT Un script es un programa usualmente simple que por lo regular se almacena en un archivo de texto plano. Los script son casi siempre interpretados. El uso habitual de los scripts es realizar diversas tareas como combinar componentes, interactuar con el sistema operativo o con el usuario. Un script compuesto por comandos SQL llevar a cabo un proceso de acceso a una base de datos relacionales para obtener informacin y realizar operaciones sobre ella.

  • 38

    5. RSS Un Archivo RSS o Feed RSS es un archivo generado por algunos sitios web que contiene una versin especfica de la informacin publicada en esa web. Cada elemento de informacin contenido dentro de un archivo RSS se llama "tem". Cada tem consta normalmente de un ttulo, un resumen y un enlace o URL a la pgina web de origen o que contiene el texto completo. Adems puede contener informacin adicional como la fecha de publicacin o el nombre del autor del texto. Cada feed o canal de informacin dispone de su propia direccin en Internet o URL del mismo modo que las pginas HTML convencionales. 6. MINERA DE DATOS (DATA MINING) La minera de datos o exploracin de datos es un campo de las ciencias de la computacin referido al proceso que intenta descubrir patrones en grandes volmenes de conjuntos de datos. Utiliza los mtodos de la inteligencia artificial, aprendizaje automtico, estadstica y sistemas de bases de datos. El objetivo general del proceso de minera de datos consiste en extraer informacin de un conjunto de datos y transformarla en una estructura comprensible para su uso posterior. Adems de la etapa de anlisis en bruto, que involucra aspectos de bases de datos y de gestin de datos, de procesamiento de datos, del modelo y de las consideraciones de inferencia, de mtricas de Intereses, de consideraciones de la Teora de la complejidad computacional, de post-procesamiento de las estructuras descubiertas, de la visualizacin y de la actualizacin en lnea. La tarea de minera de datos real es el anlisis automtico o semi-automtico de grandes cantidades de datos para extraer patrones interesantes hasta ahora desconocidos, como los grupos de registros de datos (anlisis cluster), registros poco usuales (la deteccin de anomalas) y dependencias (minera por reglas de asociacin). 7. PALABRAS VACAS (STOP WORDS) Palabras vacas es la denominacin que reciben las palabras sin significado como artculos, pronombres, preposiciones, etc. que son filtradas antes o despus del procesamiento de datos en lenguaje natural (texto). A Hans Peter Luhn, uno de los

  • 39

    pioneros en recuperacin de informacin, se le atribuye la acuacin de la locucin inglesa stop words y el uso del concepto en su diseo. No hay una lista definitiva de palabras vacas que todas las herramientas de procesamiento de lenguajes naturales incorporen. No todas las herramientas usan una lista de palabras vacas. Algunas herramientas evitan usarlo especficamente para soportar bsquedas por frase. 8. PREPROCESAMIENTO DE DATOS (DATA PRE-PROECSSING) El preprocesamiento de datos en un paso importante en el proceso de minera de datos. En esta fase se filtran valores fuera de rango, combinaciones de datos imposibles, se gestionan valores perdidos (missing values), etc. Analizar datos que no han sido preprocesados anteriormente puede producir resultados incoherentes y distorsionar el resultado obtenido y la calidad de los parmetros. Si existe muchos datos irrelevantes o redundantes, o inaccesibles, o ruido en la informacin, el descubrimiento de conocimiento durante la fase de entrenamiento es ms difcil. 9. TAG CLOUD Una nube de palabras o nube de etiquetas es una representacin visual de las palabras que conforman un texto, en donde el tamao es mayor para las palabras que aparecen con ms frecuencia. Uno de sus usos principales es la visualizacin de las etiquetas de un sitio web, de modo que los temas ms frecuentes en el sitio se muestren con mayor prominencia. Las etiquetas son palabras clave que suelen estar ordenadas alfabticamente o, en ocasiones, agrupadas semnticamente. La importancia de una etiqueta se muestra con el tamao de la fuente y/o color. 10. CLUSTERING Un algoritmo de agrupamiento es un procedimiento de agrupacin de una serie de vectores de acuerdo con un criterio. Esos criterios son por lo general distancia o similitud. La cercana se define en trminos de una determinada funcin de

  • 40

    distancia, como la eucldea, aunque existen otras ms robustas o que permiten extenderla a variables discretas. Generalmente, los vectores de un mismo grupo (o clusters) comparten propiedades comunes. El conocimiento de los grupos puede permitir una descripcin sinttica de un conjunto de datos multidimensional complejo. De ah su uso en minera de datos. Esta descripcin sinttica se consigue sustituyendo la descripcin de todos los elementos de un grupo por la de un representante caracterstico del mismo. En algunos contextos, como el de la minera de datos, se lo considera una tcnica de aprendizaje no supervisado puesto que busca encontrar relaciones entre variables descriptivas pero no la que guardan con respecto a una variable objetivo. 11. NAIVE BAYES En teora de la probabilidad y minera de datos, un clasificador bayesiano ingenuo es un clasificador probabilstico fundamentado en el teorema de Bayes y algunas hiptesis simplificadoras adicionales. Es a causa de estas simplificaciones, que se suelen resumir en la hiptesis de independencia entre las variables predictoras, que recibe el apelativo de ingenuo. En trminos simples, un clasificador de Bayes ingenuo asume que la presencia o ausencia de una caracterstica particular no est relacionada con la presencia o ausencia de cualquier otra caracterstica, dada la clase variable. Por ejemplo, una fruta puede ser considerada como una manzana si es roja, redonda y de alrededor de 7 cm de dimetro. Un clasificador de Bayes ingenuo considera que cada una de estas caractersticas contribuye de manera independiente a la probabilidad de que esta fruta sea una manzana, independientemente de la presencia o ausencia de las otras caractersticas. Para otros modelos de probabilidad, los clasificadores de Bayes ingenuo se pueden entrenar de manera muy eficiente en un entorno de aprendizaje supervisado. En muchas aplicaciones prcticas, la estimacin de parmetros para los modelos

  • 41

    Bayes ingenuo utiliza el mtodo de mxima verosimilitud, en otras palabras, se puede trabajar con el modelo ingenuo de Bayes sin aceptar probabilidad bayesiana o cualquiera de los mtodos bayesianos. Una ventaja del clasificador de Bayes ingenuo es que solo se requiere una pequea cantidad de datos de entrenamiento para estimar los parmetros (las medias y las varianzas de las variables) necesarias para la clasificacin. Como las variables independientes se asumen, solo es necesario determinar las varianzas de las variables de cada clase y no toda la matriz de covarianza. 12. REGLAS DE ASOCIACIN En minera de datos y aprendizaje automtico, las reglas de asociacin se utilizan para descubrir hechos que ocurren en comn dentro de un determinado conjunto de datos. Por ejemplo, la siguiente regla: {cebollas, vegetales} {carne} encontrada en los datos de ventas de un supermercado, indicara que un consumidor que compra cebollas y verdura a la vez, es probable que compre tambin carne. Esta informacin se puede utilizar como base para tomar decisiones sobre marketing como precios promocionales para ciertos productos o dnde ubicar stos dentro del supermercado. Adems del ejemplo anterior aplicado al anlisis de la cesta de la compra, hoy en da, las reglas de asociacin tambin son de aplicacin en otras muchas reas como el Web mining, la deteccin de intrusos o la bioinformtica. 13. ALGORTIMO A PRIORI El algoritmo a priori se usa en minera de datos para encontrar reglas de asociacin en un conjunto de datos. Este algoritmo se basa en el conocimiento previo o a priori de los conjuntos frecuentes, esto sirve para reducir el espacio de bsqueda y aumentar la eficiencia.

  • 42

    ANEXO II Captura de datos de Twitter desde Horntonworks Sandbox con Flume

  • 43

    Es posible acceder remotamente a la API de Twitter, lanzando la bsqueda desde nuestra mquina virtual Hortonworks y descargar el contenido en el almacn de archivos HDFS. Para ello, se va a emplear la herramienta Flume, que se adapta mejor a este trabajo fin de grado que otros mtodos similares como Kafka o Spring-xd. La captura de datos de Twitter se desarrolla mediante 8 etapas: i) Crear una aplicacin Twitter ii) Instalar Flume y complementos iii) Configurar el agente Flume iv) Ejecutar el agente Flume v) Crear las tablas vi) Ejecutar el script vii) Visualizar las tablas viii) Borrar tablas. i) Creacin de una aplicacin Twitter Es necesario acceder a una cuenta en Twitter y disponer de una aplicacin en el portal Twitter Developers. Una vez se cuenta con la aplicacin, Twitter provee una serie de credenciales nicas que sern necesarias para que nuestro agente Flume pueda acceder a la API Twitter desde nuestra mquina virtual Hortonworks; estas credenciales son API key, API secret, Access token y Access token secret.

  • 44

    ii) Instalacin de Flume y complementos Es necesario instalar Flume en el cluster node que lanzar el agente. El agente se conecta al namenode (que en este caso es el mismo que el cluster node porque se ejecuta en localhost) y enva los archivos desde Twitter al almacn HDFS, haciendo un streaming de los datos. Para ello, mediante el comando Yum install flume, se instala la librera necesaria para que el agente Flume se conecte a la fuente de datos: http://files.cloudera.com/samples/flume-sources-1.0-SNAPSHOT.jar, que es

    copiada en el directorio /usr/lib/flume/lib. iii) Configuracin del agente Flume Una vez se dispone del sistema configurado para conectar remotamente a la API de Twitter, es necesario establecer los parmetros de configuracin que permitan al agente Flume a acceder a los datos de Twitter. Para esto se crea el archivo

    flume.conf en /etc/flume/conf/, donde se especificarn las claves nicas de nuestra aplicacin de Twitter obtenidas anteriormente. Adems, se define en TwitterAgent.sources.Twitter.keywords la lista de palabras separadas por comas que se desean buscar en Twitter. En TwitterAgent.sinks.hdfs.path se establece la ruta del namenode para que los tuits que contengan estas palabras sen guardados en el sistema HDFS de nuestro sistema Hadoop.

  • 45

  • 46

    iv) Ejecucin del agente Flume

    Al terminar el proceso que ejecuta flume, se obtienen los tuits guardados en formato JSON en el directorio HDFS de nuestro Sandbox especificado previamente en el archivo de configuracin. Vista desde la interfaz web:

  • 47

  • 48

    Vista desde terminal:

  • 49

    v) Creacin de tablas mediante script Se crea un script SQL que es transferido a Hortonworks Sandbox. El script hiveddl.sql, al ser ejecutado, crea varias tablas desde los tuits anteriores guardados en formato JSON. La primera tabla a crear es tweets_raw, que contendr los datos que definen un tuit que se quieran conservar por considerarse tiles; se ha de especificar un nombre para el valor, y el tipo: CREATE EXTERNAL TABLE tweets_raw ( id BIGINT, created_at STRING, source STRING, favorited BOOLEAN, retweet_count INT, retweeted_status STRUCT< text:STRING, user:STRUCT>, entities STRUCT< urls:ARRAY, user_mentions:ARRAY, hashtags:ARRAY>, text STRING, user STRUCT< screen_name:STRING, name:STRING, friends_count:INT, followers_count:INT, statuses_count:INT, verified:BOOLEAN, utc_offset:STRING, -- was INT but nulls are strings time_zone:STRING>, in_reply_to_screen_name STRING, year int, month int, day int, hour int ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION '/user/hue/upload/upload/data/tweets_raw' ;

  • 50

    Adems, se crea una tabla auxiliar que contiene los pases del mundo segn su huso horario: CREATE EXTERNAL TABLE time_zone_map ( time_zone string, country string, notes string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hue/upload/upload/data/time_zone_map';

    Para hacer ms simple la visualizacin, se crea una vista simple con la nica informacin del id del tuit, fecha de publicacin, texto, y huso horario del usuario: CREATE VIEW tweets_simple AS SELECT id, cast ( from_unixtime( unix_timestamp(concat( '2013 ', substring(created_at,5,15)), 'yyyy MMM dd hh:mm:ss')) as timestamp) ts, text, user.time_zone FROM tweets_raw ; Desde esta vista, en combinacin con la tabla anterior, se crea la vista definitiva de los tuits, que va a contener el id de cada tuit, la fecha de publicacin, el texto y el pas desde donde se publica: CREATE VIEW tweets_clean AS SELECT id, ts, text, m.country FROM tweets_simple t LEFT OUTER JOIN time_zone_map m ON t.time_zone = m.time_zone;

  • 51

    Una vez se tiene el script, mediante SCP se transfiere por terminal a nuestra Sandbox. vi) Ejecutar el script hiveddl.sql desde Sandbox Se ejecuta el script una vez que ya se ha transferido a Sandbox.

  • 52

  • 53

    Se ejecutan varios procesos MapReduce (ver Anexo I) con el objetivo de refinar los datos, y los tuits en bruto son convertidos a formato tabular para poder ser accedidos por los comandos Hive en el momento de crear las tablas desde la interfaz web. Se observa como las tablas han sido correctamente creadas: Primero en terminal:

    Y despus en interfaz grfica:

  • 54

    vii) Visualizacin del contenido de las tablas creadas Mediante la herramienta Beeswax (Hive UI) en la interfaz web de la Sandbox, es posible acceder a las tablas creadas y visualizar sus contenidos.

    Tambin mediante Pig es posible realizar una visualizacin similar:

  • 55

    Visualizacin utilizando Beeswax (Hive UI):

  • 56

    Visualizacin utilizando Pig:

  • 57

    viii) Borrar tablas y vistas creadas Con el script drop_all_sentiment_views_and_tables.sql es posible borrar las vistas y tablas creadas; esto es til cuando queremos volver a ejecutar el procedimiento anterior, ya que la tarea MapReduce dar error si existen las tablas que se tienen que crear con el mismo nombre. Este script utiliza los comandos SQL Drop table y Drop view.

  • 58

    ANEXO III Mtodos alternativos para la captura de datos de Twitter

  • 59

    1. Carga de datos en local Este mtodo es til para analizar un conjunto de tuits predeterminado. En este trabajo fin de carrera se va a desarrollar este mtodo para aplicarlo a un conjunto de tuits descargados previamente de http://s3.amazonaws.com/hw-sandbox/tutorial13/SentimentFiles.zip; estos tuits contienen texto referente a la pelcula Iron Man 3. Estudiando la informacin que aportan se podr conocer la opinin general de los usuarios, y en base a ella, la productora de la pelcula podra adaptar las polticas de marketing y promocin oportunas. Para aplicar este mtodo de captura se desarrollan varias etapas: i) Descarga de tuits ii) Carga en mquina virtual iii) El resto de etapas son anlogas a las sealadas en el procedimiento desarrollado para capturar datos empleando la herramienta Flume. i) Descarga de tuits Se descarga el data set de tuits sobre la pelcula Iron Man 3.

  • 60

    Los tuits se obtienen en formato JSON.

  • 61

    En la siguiente imagen se muestra el contenido de un tuit en formato JSON; se puede observar que, adems del texto del tuit, es posible conocer ms informacin relativa a este, como el nmero de veces que ha sido retuiteado, si ha sido marcado como favorito, si contiene hashtags, fecha de creacin y coordenadas, etc.

    ii) Se cargan los ficheros a Hortonworks Sandbox Mediante la interfaz web se procede a subir los archivos que contienen los tuits a la plataforma Hortonworks.

  • 62

    iii) Resto del proceso anlogo a la captura de datos con Flume La creacin de tablas mediante script, la ejecucin del script hiveddl.sql desde Sandbox, la visualizacin del contenido de las tablas creadas y el borrado de tablas sigue el mismo procedimiento sealado en el Anexo II cuando se emplea Flume para capturar los datos.

  • 63

    2. Carga de datos desde KNIME En KNIME existen varios nodos relativos a Twitter; para cargar los datos de la aplicacin Twitter creada se han de especificar las claves de la aplicacin.

    Se usar el nodo Search, que permite buscar queries especficas a travs de la API de Twitter. Es posible configurar parmetros de esta bsqueda, como el nmero mximo de tuits a descargar, as como el tipo de bsqueda que se realizar (tuits ms recientes, populares, o mixta). Tambin es posible cargar las imgenes de perfil, lo que har ocupar ms espacio en el almacenamiento posterior.

  • 64

    A la hora de establecer una bsqueda a realizar en Twitter es posible utilizar operadores para tener ms posibilidades y personalizar la bsqueda. En este sentido, Twitter proporciona las siguientes alternativas:

  • 65

    La bsqueda realizada de este modo es similar a la hecha directamente en la interfaz que ofrece la API de Twitter:

    Mediante este procedimiento se consigue cargar los tuits en KNIME y listos para ser tratados. En otro apartado de este proyecto fin de grado se volver a KNIME para realizar un tratamiento de los datos descargados.

  • 66

    Mtodo 1: Acceso a Twitter desde KNIME El nodo WebSearcher de KNIME permite buscar queries especficas en distintos motores de bsqueda y redes sociales. Para ello es necesario especificar las claves de nuestra aplicacin de Twitter en la configuracin de Palladian en KNIME.

  • 67

    Una vez definida la aplicacin de Twitter se definen en el nodo Table Creator las queries que se desean buscar y se elige en el nodo WebSearcher el motor de bsqueda o red social donde se realizar la bsqueda (en este caso Twitter), y el nmero de tuits a cargar.

  • 68

    Finalmente, se pueden visualizar los resultados obtenidos con el nodo Interactive Table.

  • 69

    Mtodo 2: Acceso a Twitter desde KNIME con extensin PALLADIAN y RSS Otra opcin, tambin desde KNIME y usando la extensin PALLADIAN, es leer los tuits en formato feed RSS. Para ello se especifica la query que se desea buscar en www.queryfeed.net. En otros apartados de este trabajo fin de grado se realizarn tareas de data mining utilizando estos datos provenientes de feed RSS.

  • 70

    Con este mtodo se obtienen los tuits en forma de tems y el enlace URL que se ha de usar en KNIME para acceder a los feeds RSS.

  • 71

    El enlace suministrado ha de copiarse en el nodo Table Creator:

    Con los nodos http Retriever y FeedParser los tems RSS se descargan va http; y son transformamos a una tabla en forma de filas para ser ledos.

  • 72

  • 73

    ANEXO IV Anlisis de los datos capturados de Twitter mediante el mtodo del diccionario

  • 74

    El anlisis de los datos capturados de Twitter mediante el mtodo del diccionario se realiza en 3 etapas: i) Definicin del diccionario a utilizar ii) Crear el script para crear la tabla de resultados iii) Visualizar la tabla de resultados.

    i) Definicin del diccionario a utilizar

    En este trabajo fin de grado se utilizar el diccionario facilitado por Hortonworks en sus tutoriales; como se ha sealado en la Memoria, este diccionario se podra modificar segn las necesidades particulares de cada usuario.

  • 75

    ii) Creacin de tablas mediante script Al ejecutar el script hiveddl.sql en nuestra mquina virtual se asigna un valor negativo (0), neutro (1) o positivo (2) a cada tuit basndose a las palabras que se encuentren en el texto, y se crean las tablas y vistas que facilitan la visualizacin de los datos y su sentimiento asociado. -- crear tabla diccionario CREATE EXTERNAL TABLE dictionary ( type string, length int, word string, pos string, stemmed string, polarity string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hue/upload/upload/data/dictionary'; -- computar sentimiento create view l1 as select id, words from tweets_raw lateral view explode(sentences(lower(text))) dummy as words; create view l2 as select id, word from l1 lateral view explode( words ) dummy as word ; create view l3 as select id, l2.word, case d.polarity when 'negative' then -1 when 'positive' then 1 else 0 end as polarity from l2 left outer join dictionary d on l2.word = d.word; create table tweets_sentiment stored as orc as select id, case when sum( polarity ) > 0 then 'positive' when sum( polarity ) < 0 then 'negative' else 'neutral' end as sentiment from l3 group by id; -- tabla final CREATE TABLE tweetsbi STORED AS ORC AS SELECT t.*, case s.sentiment when 'positive' then 2 when 'neutral' then 1 when 'negative' then 0 end as sentiment FROM tweets_clean t LEFT OUTER JOIN tweets_sentiment s on t.id = s.id;

  • 76

    iii) Visualizacin del contenido de las tablas creadas Finalmente se accede a la tabla tweetsbi, que contiene el identificador de cada tuit, la fecha de creacin, el texto, el pas y su sentimiento asociado

  • 77

  • 78

    ANEXO V Mtodos alternativos para el anlisis de datos de Twitter

  • 79

    1. API externa Sentiment 140 Sentiment 140 es un servicio online especfico para el anlisis del sentimiento en Twitter basado en algoritmos de clasificacin y machine learning [28]; se trata de un entorno abierto creado por tres estudiantes de la Universidad de Stanford. Tras introducir una cadena de bsquedas, nos ofrece como resultado los tuits encontrados con un sentimiento asociado y una estadstica bsica sobre tuits positivos/negativos.

  • 80

  • 81

    Ya se ha sealado en la memoria que desde la interfaz de Sentiment 140 no es posible la descarga directa de tuits para su posterior anlisis. En en este trabajo fin de grado se ha desarrollado un mtodo para analizar los tuits descargados con Flume utilizando el servicio Sentiment 140 y almacenando los resultados obtenidos en nuestra Sandbox. Este mtodo consta de 3 etapas: i) Creacin de una tabla con el texto del tuit ii) Descarga de la tabla en formato CSV iii) Procesado de los datos mediante la API externa iv) Almacenamiento de la respuesta en la Sandbox v) Creacin de la tabla de respuestas

    i) Creacin de tabla mediante script El primer paso es ejecutar el script hddlsimpe.sql que crea la tabla tweets_text con solamente el texto del tuit previamente descargado con Flume. El script utilizado es el siguiente:

    Al ejecutar el script se crea la tabla.

  • 82

    ii) Descarga de la tabla en formato CSV Una vez creada la tabla se accede a su contenido desde la interfaz HIVE .

  • 83

    La tabla creada se descarga en formato CSV para que la API externa pueda leer los datos y procesarlos.

  • 84

    Este fichero CSV generado es transferido al almacenamiento HDFS de nuestra Sandbox.

    iii) Procesado de los datos en la API externa El fichero CSV es enviado desde nuestra Sanbox a la API externa para evaluar el sentimiento asociado de cada tuit; el fichero se enva mediante curl segn las indicaciones del servicio web de Sentiment 140: curl --data-binary @nombre_de_archivo.txt

    "http://www.sentiment140.com/api/bulkClassify?query=germanwings" La respuesta obtenida del sistema Sentiment 140 es: Se observa que la respuesta de Sentiment 140 ha aadido un nmero al principio de cada fila, que es la valoracin del sentimiento para cada tuit,.

  • 85

    iv) Almacenamiento de la respuesta en la Sandbox La informacin obtenida se muestra por pantalla pero no se almacena; si se adiciona el trmino O a la orden curl, la respuesta de Sentiment 140 es almacenada en el fichero que se especifique, para ser utilizado posteriormente en el anlisis. El fichero creado que contiene los tuits descargados y el sentimiento asociado por la API externa, es guardado en el sistema HDFS de nuestra Sandbox.

  • 86

    v) Creacin de la tabla de respuestas Se crea la tabla desde el fichero HDFS; esta tabla se podr importar en KNIME para anlisis del sentimiento (ver apartado 3 de este Anexo) y Data Mining (ver Anexo IX).

  • 87

    2. Creacin de una interfaz web propia Como se seala en la Memoria, es posible construir una herramienta propia para el anlisis del sentimiento combinando una API externa de anlisis del sentimiento (en este caso Datumbox) y la propia API de Twitter. Para construir una herramienta propia se necesitan realizar dos acciones: - en primer lugar, conectar con Twitter para buscar tuits que contengan una query particular. - en segundo lugar evaluar el sentimiento (positivo, negativo, neutro) de los tuits, para lo que se utilizar la API de Datumbox. El procedimiento consta de 3 etapas: i) Registro y obtencin de credenciales de Datumbox ii) Interaccin Twitter y Datumbox iii) Establecimiento de la interfaz web

    i) Registro y obtencin de credenciales de Datumbox Para utilizar Datumbox [29] es preciso registrarse y obtener las credenciales de la API para uso propio.

  • 88

    ii) Interaccin Twitter con Datumbox

    El elemento fundamental de este apartado es la clase PHP que contiene el cdigo capaz de conectar la API de Twitter y a la API de Datumbox, para asignarle una polaridad a cada tuit. Esta clase es TwitterSentimentAnalysis, que se ha adaptado de Datumbox para este trabajo fin de grado:

  • 89

    $tweets=$this->getTweets($twitterSearchParams); return $this->findSentiment($tweets); } /** * Calls the Search/tweets method of the Twitter API for particular Twitter Search Parameters and returns the list of tweets that match the search criteria. * * @param mixed $twitterSearchParams The Twitter Search Parameters that are passed to Twitter API. Read more here https://dev.twitter.com/docs/api/1.1/get/search/tweets * * @return array $tweets */ protected function getTweets($twitterSearchParams) { $Client = new TwitterApiClient(); //Use the TwitterAPIClient $Client->set_oauth ($this->consumer_key, $this->consumer_secret, $this->access_key, $this->access_secret); $tweets = $Client->call('search/tweets', $twitterSearchParams, 'GET' ); //call the service and get the list of tweets unset($Client); return $tweets; } protected function findSentiment($tweets) { $DatumboxAPI = new DatumboxAPI($this->datumbox_api_key); //initialize the DatumboxAPI client $results=array(); foreach($tweets['statuses'] as $tweet) { //foreach of the tweets that we received if(isset($tweet['metadata']['iso_language_code']) && $tweet['metadata']['iso_language_code']=='en') { //perform sentiment analysis only for the English Tweets $sentiment=$DatumboxAPI->TwitterSentimentAnalysis($tweet['text']); //call Datumbox service to get the sentiment if($sentiment!=false) { //if the sentiment is not false, the API call was successful. $results[]=array( //add the tweet message in the results 'id'=>$tweet['id_str'], 'user'=>$tweet['user']['name'], 'text'=>$tweet['text'], 'url'=>'https://twitter.com/'.$tweet['user']['name'].'/status/'.$tweet['id_str'], 'sentiment'=>$sentiment, ); } } } unset($tweets); unset($DatumboxAPI); return $results; } }

  • 90

    La clase TwitterSentimentAnalysis pasa al constructor las claves de la aplicacin de Twitter. La funcin SentimentAnalysis llama al mtodo que busca los tuits en la API de Twitter e inicializa el cliente Datumbox, que analiza el sentimiento de cada tuit. En el archivo config se han de establecer las claves de acceso a la API de Twitter creadas (en el Anexo II) y a la API de Datumbox (en el apartado i de este Anexo) .

  • 91

    iii) Establecimiento de la interfaz web Ahora es necesario subir este fichero a nuestra Sandbox y hacer la interfaz accesible desde internet. Para ello se han de seguir 5 pasos: 1. Instalar httpd (ver Glosario en Anexo I), que permite que el directorio definido sea accesible en localhost a travs de un navegador web. 2. Aadir al directorio var/www/html la clase TwitterSentimentAnalysis y los archivos de configuracin: 3. Aadir el directorio en el archivo etc/httpd/conf.d/hue.conf para hacerlo accesible a travs del navegador: 4. Ejecutar el comando service httpd restart 5. Introducir la URL 127.0.0.1:42080/twitter en el navegador y aparece:

  • 92

    Para el ejemplo iphone (verde son tuits positivos, rojo son tuits negativos y blanco son tuits neutros; el enlace view redirecciona hacia el tuit en Twitter):

  • 93

    3. Anlisis en KNIME

    Mtodo 1: Mtodo propio de anlisis de sentimiento en KNIME Este mtodo utiliza la tabla query_results creada en la etapa v del apartado 1 de este Anexo y almacenada en nuestra Sandbox, que contiene los tuits y el sentimiento asignado a cada uno de ellos (positivo, negativo o neutro). El sistema KNIME no utiliza una API externa (de ah el nombre de mtodo propio KNIME), sino que utiliza una parte de los tuits para el aprendizaje supervisado del sistema, y otra parte para testar el sistema mismo [30]. El aprendizaje supervisado consiste en analizar las palabras de una parte de los tuits y asignarles ms o menos peso segn su influencia en la caracterizacin del sentimiento asociado; se obtienen as las reglas de la clasificacin. Estas reglas se aplican sobre los tuits utilizados para testar el sistema, lo que permite calcular la precisin del anlisis realizado.

  • 94

    El mtodo se desarrolla en 6 etapas: 1. Conexin a la Sandbox. Los dos primeros nodos (Hive connector y Database Reader) gestionan la conexin a nuestra Sandbox y permiten el acceso a la tabla query_results. 2. Lectura de datos. El nodo Number to String convierte los datos numricos id y sentiment al tipo string. Despus, el nodo String to Document crea un documento asociado para cada atributo de tipo string. El nodo Column Filter filtra todos los atributos salvo los de tipo documento, que ser con los que se trabajar a partir de ahora.

    3. Preprocesado de texto. El texto es preprocesado por varios nodos que KNIME provee con la extensin Text Preprocessing. Primero, los signos de puntuacin son eliminados con el nodo Punctuation Erasure, los nmeros y palabras vacas son filtrados por los correspondientes nodos, y todos los trminos son convertidos a letras minsculas. Despus, el nodo Snowball Stemmer gestiona y elimina temas duplicados, agrupando los trminos que se refieran al mismo concepto lxico; el tema es, en morfologa lingstica, el conjunto constituido por un lexema o radical y sus afijos, pero sin las desinencias.

  • 95

    4. Extraccin de trminos. Tras completar las etapas anteriores, el texto est preparado para ser procesado. El punto central del anlisis de sentimiento es extraer las palabras que caracterizarn los vectores de documentos, y que despus sern tenidas en cuenta para la clasificacin de los documentos. Para crear los vectores de documentos, usando el nodo Document vector, primero debe ser creada una tabla basada en el modelo bolsa de palabras (bag of words), usando el nodo BoW creator. El nodo Document vector requiere una bolsa de palabras como tabla de entrada, y toma todos los trminos en ella contenidos para crear los vectores del documento. Despus de crear esta bolsa de palabras, se filtran todos los trminos que ocurran en menos de 20 documentos. Esto se logra agrupando los trminos, contando todos los documentos nicos que contienen estos trminos y filtrando esta lista de trminos; finalmente se filtra la bolsa de palabras con el nodo Reference Row Filter. Con este proceso se logra reducir el nmero de palabras caractersticas de varias decenas de miles de palabras a un par de miles, consiguiendo mayor precisin y manejabilidad.

  • 96

    5. Pre-Clasificacin. Basado en estas palabras extradas (palabras caractersticas) se crean los vectores del documento, que son representaciones numricas de los documentos y son usados posteriormente para la clasificacin del sentimiento mediante rboles de decisin. El nodo Document vector crea un bitvector desde las frecuencias de las palabras caractersticas calculadas anteriormente mediante el nodo TF. 6. Clasificacin. Para la clasificacin puede usarse cualquier algoritmo de clasificacin disponible en KNIME. Como para todos los algoritmos de aprendizaje supervisado, se necesita una variable objetivo. En este caso, esta variable es el sentimiento, que ha sido guardada como categora en los documentos. Esta columna objetivo es extrada de los documentos y anexada como columna string, con el nodo Category to Class. Ahora la categora puede ser usada como atributo objetivo para el procedimiento de clasificacin. Basado en esta categora (sentimiento), un color es asignado a cada documento con el nodo Color Manager. Los documentos con etiqueta positiva son coloreados en verde, los documentos negativos en rojo, y los neutros en azul.

  • 97

    El aprendizaje supervisado se realiza mediante un rbol de decisin basado en el algoritmo C4.5, que se centra en la bsqueda de las reglas que regulan un conjunto de datos y las aplica a nuevas instancias (ver Glosario del Anexo I). En el rbol de decisin que se muestra a continuacin, la cadena que tiene ms peso a la hora de clasificar si un tuit tiene valor positivo o negativo es insur. Se observa que si insur>0.5 (es decir, si insur se encuentra en el tuit), el tuit que lo contiene tiene valor 2 (es decir, es positivo en el 100% de los casos). Si la expresin insur no se encuentra en el tuit (insur

  • 98

  • 99

    Una vez completado este aprendizaje, la otra parte de los datos sern pasados por el predictor, que aplicar las reglas descubiertas por el learner, y se compararn los resultados obtenidos en ambos nodos. Se observa que en este caso particular se obtiene una precisin de nuestro sistema de clasificacin del sentimiento de ms del 90%.

  • 100

    Mtodo 2. Mtodo propio de anlisis de sentimiento en KNIME con la extensin PALLADIAN

    Es un mtodo anlogo al anterior, pero usando nodos PALLADIAN especficos para el caso.

    Los nodos Hive Conector y Database Reader permiten la conexin a nuestra Sandbox y hacen que los tuits de la tabla tweetsbi (con su sentimiento asignado, creada en el Anexo II) sean accesibles desde KNIME.

  • 101

    El nodo Interactive Table muestra de manera grfica la tabla tweetsbi, ya importada a KNIME.

    El nodo Number to String, correspondiente a la etapa de preprocessing, transforma los nmeros a string. Ahora, los datos sern divididos en dos partes; tras esta divisin, cada parte es filtrada para eliminar missing values mediante el nodo Missing Value. El nodo TextClassifier Learner construye un diccionario analizando las palabras de los tuits, asignando pesos a stas, segn sean influyentes o no a la hora de categorizar un tuit como positivo o negativo. El nodo TextClassifier Preditor usa este diccionario para analizar la otra parte de los datos, clasificando los tuits restantes como positivos o negativos. Finalmente se obtienen los resultados que se muestran en la siguiente tabla: - La penltima columna corresponde al sentimiento propio de cada tuit segn la tabla de origen tweetsbi. - La ltima columna representa el sentimiento asignado por este sistema tras el anlisis por los nodos