Skip to content

Latest commit

 

History

History
50 lines (35 loc) · 3.75 KB

diseño+implementación.md

File metadata and controls

50 lines (35 loc) · 3.75 KB

Análisis de sentimientos con Flume, Hive y Spark-NLP

Diseño

Arquitectura

  • Ciclo de Vida: El ciclo de vida de los datos comienza en los Tweets que producen los usurios de Twitter, aquellos tweets deben estar relacionados con unas palabras a las que llamaremos keywords, que para nuestro caso son "Coca-cola" y "Pepsi". Twitter entonces proveera una interfaz por medio de una API (Apps Twitter), dicha API sera accedida por un agente que tomara los datos bajo tecnicas de DataStreaming y lo almacenara en alguna tecnologia de Storage (Para el caso HDFS).

Flujo de Datos desde WebServer hasta hdfs

  • Almacenamiento: Dado que es un proceso constante e inserción de datos, es fundamental tener un sistema de almacenamiento escalable que garantice el acceso a los datos, y que ojalá sea de una manera sencilla. Inicialmente los datos son extraidos con un formato JSON del cual pueden extraerse atributos fundamentales para el análisis.

Esquema de lectura:

hive> describe tweets
OK
 id                      bigint                  from deserializer                                                                    > 
 created_at              string                  from deserializer                                                                     
 source                  string                  from deserializer                                                                     
 favorited               boolean                 from deserializer
 retweet_count           int                     from deserializer 
 retweeted_status        struct<text:string,user:struct<screen_name:string,name:string>> from deserializer
 entities struct<urls:array<struct<expanded_url:string>>,user_mentions:array<struct<screen_name:string,name:string>>,hashtags:array<struct<text:string>>>      from deserializer
 text                    string                  from deserializer
 lang                    string                  from deserializer
 user                       struct<screen_name:string,name:string,friends_count:int,followers_count:int,statuses_count:int,verified:boolean,utc_offset:in
t,time_zone:string>     from deserializer
  in_reply_to_screen_name string                  from deserializer
  
hive>

Para acceder a los datos se requiere un sistema que permita realizar agrupaciones, consultas, y análisis de esos mismos datos.

Arquitectura de Acceso:

  • Procesamiento: Utilizando una plataforma de procesamiento distribuido en memoria como Apache Spark, se recuperan los tweets capturados para procesarlos utilizando tecnologías de procesamiento de lenguaje natural. Mediante este proceso, se realiza un análisis de sentimientos en el conjunto de tweets de manera que se puedan identificar cuantos se pueden identificar como una impresión positiva y una impresión negativa de la marca analizada.

Implementación

La ingesta de datos fue implementada con flume. Se realizó un archivo de configuración que especifica las palabras clave a buscar en los tweets, donde se almacena el resultado, el tamaño de los archivos a almacenar y la conexión con el API de Twitter. Para fácil manejo de los datos se utilizo una biblioteca de flume que permite descargar los datos como JSON. Para la lectura de datos, éstos fueron insertados a una tabla de Hive utilizando una biblioteca llamada serDes para fácil inserción de JSON a tablas. Para el análisis de datos se utilizo Spark, con SparkSQL para fácil acceso a la tabla y Spark-NLP[1] para el análisis de sentimientos.

Referencias