-
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