Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
TopiTuit: Una herramienta de apoyo para el análisis de entorno comunicacional en Twitter utilizando técnicas de modelado de tópicos y análisis de sentimiento
Camila Gómez Schrader
Felipe Escobar Avila
Asesora: Haydemar María Núñez Castro
Co-asesora: Anamaría Irmgard Mojica Hanke
Departamento de Ingeniería de Sistemas y Computación
Facultad de Ingeniería
Universidad de los Andes
Enero, 2021
Página 2 de 47
Resumen
La cantidad de información que se produce cada día en los medios de comunicación
es cada vez más grande. Lo anterior ocasiona que la labor de los analistas de entorno
comunicacional, la cual se centra principalmente en el análisis de esta información, se vuelva
cada vez mas tediosa y desgastante. Por esta razón, este proyecto busca facilitar la labor de
estos analistas por medio de una herramienta web que les permite consultar, analizar y extraer
información relevante de grandes volúmenes de información de la red social Twitter. Para
esto, se construye una herramienta a la que se le denomina TopiTuit, por medio de la cual los
analistas pueden realizar búsquedas según las cuentas, fechas y temas de interés.
Posteriormente, teniendo en cuenta estos parámetros, se utilizan técnicas de modelado de
tópicos y de análisis de sentimiento y se construyen tableros de control que permiten
visualizar los resultados de los modelos con el fin de soportar los análisis requeridos. Al
validar el funcionamiento de la aplicación mediante la opinión de un experto en el tema, se
determina que TopiTuit logra, de forma satisfactoria, apoyar el trabajo de los analistas
ayudándoles a visualizar patrones que son difíciles de identificar a simple vista cuando se
debe analizar una gran cantidad de tuits.
Página 3 de 47
Agradecimientos
En primer lugar, quisiéramos agradecer a nuestros padres, pues su esfuerzo nos ha
permitido llegar a ser quien somos hoy en día tanto profesionalmente como personalmente.
En segundo lugar, queremos ofrecer un especial agradecimiento a nuestra asesora Haydemar
Núñez por su constante apoyo y por introducirnos en el área del aprendizaje automático,
cuyos beneficios han venido tomando una mayor relevancia en diferentes áreas. De igual
forma, agradecemos a nuestra co-asesora Anamaría Irmgard, por poner a nuestro servicio sus
diferentes conocimientos en las diferentes temáticas utilizadas.
Página 4 de 47
Contenido 1. Introducción ................................................................................................................. 6
2. Descripción general ...................................................................................................... 8
2.1 Objetivos ................................................................................................................ 8
2.2 Antecedentes ......................................................................................................... 8
2.2.1 Análisis de entorno ........................................................................................ 9
2.2.2 Análisis de sentimiento ................................................................................ 10
2.2.3 Modelado de tópicos .................................................................................... 12
3. Diseño y especificaciones ........................................................................................... 14
3.1 Definición del problema ..................................................................................... 14
3.2 Especificaciones .................................................................................................. 15
3.2.1 Parámetros (entradas) ................................................................................ 15
3.2.2 Resultados (salidas) ..................................................................................... 16
3.2.3 Requerimientos no funcionales .................................................................. 17
3.3 Restricciones ....................................................................................................... 18
4. Desarrollo del diseño .................................................................................................. 18
4.1 Recolección de Información ............................................................................... 19
4.2 Alternativas de diseño ........................................................................................ 19
5. Implementación .......................................................................................................... 22
5.1 Descripción de la implementación ..................................................................... 22
5.1.1 Construcción de la base de datos y extracción de tuits ............................. 23
5.1.2 Implementación de los modelos .................................................................. 24
5.1.3. Desarrollo de la herramienta web .............................................................. 27
5.2. Resultados ........................................................................................................... 28
5.2.1 Personalización de parámetros .................................................................. 29
5.2.2 Modelado de tópicos .................................................................................... 33
5.2.3. Análisis de sentimiento ................................................................................ 39
6. Validación ................................................................................................................... 41
6.1. Método de validación .......................................................................................... 41
6.2. Resultado de la validación .................................................................................. 41
7. Conclusiones ............................................................................................................... 43
Página 5 de 47
7.1. Discusión .............................................................................................................. 43
7.2. Trabajo futuro .................................................................................................... 45
8. Referencias ................................................................................................................. 46
Página 6 de 47
1. Introducción
Desde hace varias décadas atrás, los datos han adquirido mayor relevancia en los
procesos de toma de decisiones y se han convertido en un punto de referencia para la
identificación de problemas y/o soluciones. Los datos e información que se han generado a
través de diferentes medios le han permitido al ser humano esclarecer posibles ordenes
lógicos ante hechos aleatorios y encontrar patrones que anteriormente parecían ocultos
(Dir&Ge, 2019). Por esto, es que una gran diversidad de usuarios, desde un candidato
presidencial hasta una empresa privada, han venido aplicando el análisis de entorno
comunicacional. Con la aplicación de técnicas de análisis de entorno, es posible identificar
la relación que guardan entre sí diferentes eventos de datos. Ahora bien, si incluso antes del
boom de las redes sociales, una persona por sí sola no tenía la capacidad de procesar toda la
información que diariamente se escuchaba en la radio, se veía en televisión o se leía en los
periódicos, pensar que hoy en día es posible es siquiera inútil planteárselo.
La cantidad de información y datos con la que se cuenta hoy en día no tiene
precedentes, y a futuro se prevé que siga creciendo exponencialmente. Para 2025 se estima
que existirá una cantidad de datos aproximada a los 175 ZB, y actualmente cada minuto se
reproducen 4.7 millones de videos en YouTube, se envían 200 millones de correos
electrónicos y se construyen 480 mil tuits (NodeGraph, 2020). Los negocios y
organizaciones se enfrentan a un mundo cada vez más globalizado, más competitivo y
cambiante. La competencia se hace cada día más fuerte y por tanto el desarrollo de nuevas
estrategias que le permitan a las empresas diferenciarse se convierte en una necesidad cada
vez más relevante (Ceballos Agudelo, 2013). Uno de los factores clave para lograr esto es el
análisis de entorno comunicacional de la organización y de las entidades externas al
negocio. Por medio de este análisis, se pueden analizar los diferentes factores relevantes que
puedan brindar una ventaja competitiva a la entidad y además les permite a las organizaciones
tomar mejores decisiones y comprender diferentes escenarios (Licha, 2000).
Ahora bien, este análisis debe ser realizado por un experto en el tema, a los cuales se
les denomina analistas de entorno comunicacional. Estos profesionales realizan, de manera
Página 7 de 47
cotidiana, análisis a partir de los registros temáticos en diarios impresos, radio, televisión y
medios digitales (redes sociales y portales informativos). Cuando se evalúa el contexto de
esta manera, se le denomina análisis del entorno pasivo, o sencillamente análisis o
seguimiento de medios, y se parte del supuesto de que estos medios representan de forma
relevante el estado de la situación actual dentro de una sociedad y un momento determinado
(Licha, 2000).
No obstante, teniendo en cuenta la interminable cantidad de información
disponible, y que estos analistas deben indagar, recopilar, organizar y procesar las fuentes de
información (periódicos, TV, Twitter), es evidente que es necesario construir una
herramienta informática que ayude a realizar gran parte del trabajo, pues resulta imposible
que un analista pueda lograr analizar esta cantidad de información por sí solo.
Con el fin de facilitar la labor de los analistas de entorno comunicacional, el presente
proyecto de grado propone desarrollar una herramienta web que permita analizar grandes
volúmenes de información de la red social Twitter y obtener análisis sintetizados por medio
de herramientas de procesamiento de lenguaje natural y de aprendizaje automático. La
aplicación debe poder ajustarse a los requerimientos del analista permitiéndole así configurar
las cuentas, los periodos y los temas de interés en el análisis. Por otra parte, se buscará realizar
tableros de control que muestren de manera informativa los resultados de un modelo de
tópicos y de un modelo de análisis de sentimiento. Lo anterior, le permitirá al analista
identificar los tópicos latentes de una colección de documentos (tuits) y además poder
visualizar la polaridad (positivo, negativo y neutro) de estos. Para su desarrollo, se propone
utilizar una base de datos MongoDB, desplegar el back-end (desarrollado en Python) con
Django, y realizar la interfaz de usuario con React.
Con el objetivo de poder explicar de forma consistente el proyecto desarrollado, se
propone exponer primero una descripción general del proyecto teniendo en cuenta los
objetivos, antecedentes y la identificación del problema. Seguidamente, se expondrán las
consideraciones y especificaciones del diseño, así como su desarrollo. A continuación, se
hablará del proceso de implementación, así como de la validación de la herramienta y se
terminará con la presentación de las conclusiones del proyecto.
Página 8 de 47
2. Descripción general
2.1 Objetivos
General:
• Realizar una aplicación que apoye los análisis requeridos por los analistas de entorno
comunicacional utilizando técnicas de procesamiento de lenguaje natural y de
aprendizaje automático teniendo como base la red social Twitter.
Específicos:
• Construir una base de datos robusta y escalable para el almacenaje de los tuits
capturados. Construir un mecanismo de extracción de tuits relevantes para el analista
mediante el uso del API (Application Programming Interface) de Twitter.
• Implementar un modelo LDA (Latent Dirichlet Allocation), el cual es un modelo
probabilístico generativo de tópicos, que relaciona palabras para determinar los
tópicos latentes de los tuits.
• Implementar un modelo de análisis de sentimiento para identificar la polaridad
(positivo, neutro o negativo) de los tuits.
• Construir tableros de control con visualizaciones relevantes para el negocio.
2.2 Antecedentes
Con el fin de proporcionar un marco teórico que permita entender de mejor manera los
conceptos aplicados en el proyecto, esta sección busca explicar, bajo la luz de la literatura,
lo que es e análisis de entorno, el modelado de tópicos y el análisis de sentimiento. Así mismo
se mostrarán algunos de los trabajos relacionados con estas áreas.
Página 9 de 47
2.2.1 Análisis de entorno
El análisis de entorno es un instrumento que permite evaluar la incertidumbre del
contexto que es generada principalmente por la impredecibilidad del comportamiento de las
variables (Licha, 2000). Esta herramienta contribuye de forma significativa a comprender el
contexto socioeconómico, político, social, cultural y científico-técnico en que se desarrollará
determinada acción.
Bajo la perspectiva organizacional, el análisis de entorno es una herramienta que ayuda
a las organizaciones a generar alertas sobre posibles riesgos externos que puedan afectar su
operación y, a su vez, a aprovechar e identificar posibles oportunidades (Ceballos Agudelo,
2013). Por otra parte, el análisis de entorno es una herramienta clave de la gerencia social,
pues por medio de ella se puede realizar un examen temprano del contexto donde tendrá lugar
el desarrollo de políticas, programas y proyectos sociales, identificándose las oportunidades
y riesgos del contexto para su ejecución (Licha, 2000).
Existen dos enfoques del análisis de entorno en la literatura: el análisis pasivo y el análisis
activo. En lo que concierna al análisis de entorno pasivo, el estudio de tendencias se hace con
base a la información desplegada en medios de comunicación, pues al analizar un número
relevante y significativo de periódicos, revistas, programas de televisión, libros,
documentales y otras fuentes, a lo largo de un determinado periodo, se puede obtener una
representación apropiada de los eventos y problemas emergentes. Por otra parte, dentro del
análisis de entorno activo se encuentra la metodología QUEST por sus siglas en inglés: Quick
Environmental Scanning Technique. Esta metodología busca orientar a la organización hacía
la identificación de los cambios que generan un mayor impacto sobre ella. La
implementación de esta metodología va desde la identificación de problemas hasta la
elaboración de la estrategia y se soporta en el monitoreo continuo del cambio (Licha, 2000).
El análisis del entorno se ha vuelto cada vez más relevante en la medida en que vivimos
en un mundo cada vez más globalizado y competitivo. Para las organizaciones, esto último
trae consigo amenazas y oportunidades que implican incorporar procesos estratégicos a la
organización, de tal forma que se logre un ajuste adecuado entre variables internas y variables
externas del entorno donde se desenvuelve (Zapata et al., 2015). Por tal razón, es que más
Página 10 de 47
entidades han recurrido al uso de esta herramienta, para así mantenerse competitivas en un
entorno cambiante.
2.2.2 Análisis de sentimiento
El análisis de sentimiento es un campo de investigación dentro del procesamiento del
lenguaje natural que busca extraer de forma automática y utilizando técnicas
computacionales, la información subjetiva expresada en un documento dado y acerca de un
tema determinado (Sande, 2018). En esta medida, este análisis tiene como principal objetivo
determinar si un documento tiene una opinión positiva, negativa o neutra. Teniendo en cuenta
que resulta bastante útil conocer la opinión de las personas sobre cualquier cosa, este tipo de
análisis se ha convertido en una herramienta de apoyo dentro de los procesos de toma de
decisiones en las organizaciones (Tellez et al., 2017).
Tradicionalmente, el análisis de sentimiento se ha abordado como una tarea de
clasificación que enfrenta dos problemas. El primero, consiste en la transformación de los
textos en una representación adecuada y el segundo, consiste en la identificación del
algoritmo de clasificación a utilizar en la tarea. El algoritmo más utilizado para esta
clasificación es el de máquinas de soporte vectorial (SVM) (Tellez et al., 2017).
El análisis de sentimiento presenta beneficios múltiples al momento de su aplicación. Por
esto mismo es que los principales interesados en el avance de este campo de investigación
son los gobiernos y las empresas. Poder identificar lo que las personas piensan de productos,
medidas y/o políticas es una herramienta valiosa, y su uso puede ofrecer ventajas
competitivas que eran impensables hasta hace pocos años (Sande, 2018). Algunos de los usos
de este tipo de análisis son: la validación de opinión de productos y servicios, corrección de
puntuación según los mensajes expresados, mejoras de los sistemas de recomendación,
posicionamiento de publicidad online según la percepción de las páginas, conocer la
percepción de reputaciones políticas y análisis del mercado financiero.
Página 11 de 47
2.2.2.1 Casos de aplicación e investigaciones del análisis de sentimiento
Dentro del análisis de sentimiento se han realizado diferentes casos de aplicación, así
como proyectos de investigación que buscan mejorar su rendimiento bajo diferentes
contextos. Por ejemplo, Tellez et al. en el 2017 realizaron un caso de estudio sobre la
transformación de textos en español para el análisis de sentimiento en Twitter. El propósito
de esta investigación consistía en identificar el conjunto de transformaciones (lematización,
derivación, eliminación de entidades, entre otros), tokenizadores (ej. n-gramas de palabras)
y los esquemas de ponderación de tokens, que proporcionaran un mejor desempeño en la
exactitud de un clasificador SVM (Máquina de Soporte Vectorial) entrenado con dos
conjuntos de datos en español. Dentro de esta investigación, Tellez et al. proponen una
combinación de n-gramas basados en palabras y q-gramas basados en caracteres que logra
mejorar el tradicional uso de combinaciones de palabras en los conjuntos de datos utilizados.
Por otra parte, Sande (2018) elabora un proyecto de investigación en el que busca entrenar
varios modelos haciendo uso de un “corpus” de tuits y utilizando diferentes técnicas de tal
forma que se pueda identificar cuál de todas las combinaciones es la mejor. En sus resultados,
así como lo manifestado en otros proyectos de investigación, es posible ver que el algoritmo
que obtiene un mejor desempeño corresponde a las máquinas de soporte vectorial.
Adicionalmente, el uso de ponderaciones normalizadas como TF y TF-IDF y el uso de
stemming (derivación) contribuyen a aumentar le eficacia del modelo aportando así al
rendimiento global.
Otro proyecto desarrollado utilizando análisis de sentimiento, es el de García (2014). En
este se buscaba estudiar los principales métodos utilizados en la literatura para realizar un
caso de aplicación del análisis de sentimiento sobre las elecciones presidenciales primarias
realizadas en Alianza por Chile, entre los candidatos Andrés Allamand y Pablo Longueira.
Haciendo uso de este tipo de análisis se buscó predecir los resultados de las primarias
identificando las personas que estaban a favor de los candidatos respectivos, así como
aquellos que se posicionaban en contra de uno o ambos candidatos. Al comparar los
resultados obtenidos con el modelo y los resultados de las elecciones en urnas realizadas en
Página 12 de 47
Julio de 2013 en Chile, se evidenció que el análisis realizado logró predecir el resultado final
con un margen de error bajo.
Un último ejemplo de un proyecto de investigación acerca del análisis de sentimiento es
el realizado por Diaz-Galeano et al. (2019). Este proyecto fue desarrollado en la octava
edición del taller TASS (Task of Sentiment Analysis at SEPLIN) en Bilbao, España, y se
propuso trabajar el análisis de sentimiento a nivel de un tuit. La propuesta incluía dos
subtareas principales: análisis de sentimiento monolingüe y multilingüe sobre conjuntos en
español de España, Uruguay, Perú, Costa Rica y México. Esta edición del taller atrajo la
participación de alrededor de 13 sistemas que seguían y demostraban los resultados
presentados en talleres similares. La mayoría de los modelos evaluados se fundamentaban en
el aprendizaje profundo y en el uso de características lingüísticas personalizadas.
2.2.3 Modelado de tópicos
El modelado de tópicos es básicamente encontrar los temas/tópicos de mayor relevancia
en un conjunto de documentos al que se le denomina “corpus” (Hammoe, 2018). Estas
técnicas han sido utilizadas durante años para determinar los tópicos en documentos como
artículos, novelas, noticias, etc, y de forma más reciente se han utilizado en contextos como
Twitter, donde se aplica la misma idea, pero teniendo en cuenta diferencias sustanciales como
el tamaño de los documentos (tuits) y el tipo de contenido (Vilares et al., 2014).
Ahora bien, el tipo de modelo que se utiliza para esta tarea es generalmente matemático
y estocástico, lo que implica que los resultados son probabilidades (Chandía, 2016). Los
tópicos generalmente se definen como una función de densidad 𝑝!(𝑤) donde 𝑤 es una palabra
y 𝑝! es la función de densidad para el tópico 𝑖. Por lo tanto, 𝑝!(𝑤) es la probabilidad de 𝑤
dado el tópico 𝑖. Un modelo de tópicos generativo es un modelo que permite la clasificación
de documentos nuevos (no vistos) una vez el modelo ha sido entrenado, sin tener que ir a
través de todo el “corpus” algo útil cuando se tiene un flujo constante de documentos (Risch,
2016).
Página 13 de 47
Uno de los modelos más utilizados y reconocidos para modelado de tópicos, y el cúal su
utilizó en este proyecto es el Latent Dirichlet Allocation (LDA). Este es un modelo generativo
de tópicos, y asume que cada palabra en un documento es generada a partir de un tópico que
a su vez es seleccionado a partir de la distribución de tópicos de cada documento. La
distribución de tópicos para cada documento es generada a partir de una distribución
Dirichlet, ocasionando que el modelo LDA le permita a un documento estar conformado por
multiples tópicos en diferentes proporciones. (Risch, 2016). Cabe mencionar que este modelo
se puede considerar como una evolución de la técnica LSA (Latent semantic analysis), que
asume que palabras con significado similar tendrán ocurrencia en documentos similares o del
mismo contexto, y del PLSA (Probabilistic latent semantic analysis), el cual tiene como
principal objetivo modelar las coocurrencias bajo un marco estadístico para poder encontrar
la estructura semántica de los datos (Chandía, 2016).
2.2.3.1 Casos de aplicación e investigaciones del modelado de tópicos
En el trabajo realizado por Hammoe (2018), el autor busca brindarle una solución a una
empresa que se dedica a dar soluciones de Big Data a otras empresas, construyendo un
modelo LDA para identificar los tópicos en un conjunto de tuits relevantes para la compañía,
específicamente trabajando con datos de empresas de telecomunicaciones. En el trabajo,
concluye que la herramienta desarrollada puede realmente dar cuenta de los tópicos
significativos entre los comentarios y opiniones de los usuarios, para así entender las
necesidades de la compañía. Una limitación encontrada fue que se debe mejorar la detección
de stop words para mejorar el modelo, y tener en cuenta que este debe ser entrenado
constantemente, dada la gran diversidad y cantidad de nueva información en la red social a
diario. Para esto último se debe entender que los parámetros, en especial el número de
tópicos, deben ser dinámicos en el tiempo (Hammoe, 2018).
Por otra parte, el proyecto de investigación presentado por Risch (2016) busca evaluar el
modelo LDA para detectar tópicos en un flujo (stream) de mensajes cortos (tuits). En este,
se plantean, entre otras, dos preguntas de investigación relevantes para este proyecto: ¿Cómo
el denominado spam afecta el desempeño del modelo LDA? Y ¿Un vocabulario estático
Página 14 de 47
implica que el modelo LDA va a tener un peor desempeño con un vocabulario viejo que con
un vocabulario nuevo creado para el conjunto de datos? En los resultados encuentra que el
spam si afecta el desempeño del algoritmo y se deben implementar técnicas para reducirlo, e
incluso aumentar el número de tópicos, para que el modelo por si solo detecte el spam en
algunos tópicos. Además, encontró que un vocabulario viejo no necesariamente afecta el
desempeño del modelo, pero se debe tener en cuenta el contexto y las cuentas de las que se
leen los tuits, pues esto diversifica en gran proporción el vocabulario (Risch, 2016).
3. Diseño y especificaciones
3.1 Definición del problema
El análisis de entorno comunicacional se ha convertido en una herramienta necesaria para
diferentes tipos de organizaciones y personas naturales. Este tipo de análisis ha venido siendo
utilizado por una gran variedad de usuarios, desde un candidato presidencial hasta empresas
privadas, para así poder desarrollar estrategias que les permitan cumplir sus objetivos y
prevenir riesgos.
Como se mencionó anteriormente, para poder realizar el análisis de manera pasiva, se
debe analizar una gran cantidad de fuentes de información, incluyendo periódicos, revistas y
redes sociales. Esta tarea es desarrollada normalmente por un analista de entorno, en cuyo
caso debe analizar, por sí solo, grandes volúmenes de información que se presentan en estos
medios y generar reportes que sean de utilidad para el negocio. Debido a lo anterior, esta
tarea puede tomar mucho tiempo, ser desgastante e incluso causar que haya cierta
desinformación, pues la capacidad de un analista sin una herramienta adecuada es limitada.
Adicionalmente, realizar su trabajo de forma manual, hace que los analistas del entorno
comunicacional inviertan su tiempo consultando grandes cantidades de información en lugar
de enfocarse en las tareas analíticas, las cuales son, en última instancia, las que agregan valor
a las organizaciones.
Página 15 de 47
Teniendo esto en cuenta, la herramienta web desarrollada, a la cual se le atribuye el
nombre de TopiTuit, busca apoyar el trabajo de los analistas del entorno comunicacional para
que estos puedan ser más eficientes. Esta herramienta es capaz de analizar grandes volúmenes
de información de la red social Twitter y además proveer hallazgos acerca de polaridades y
tópicos respectivos del conjunto de documentos (tuits), ahorrándoles tiempo y permitiéndoles
concentrarse en lo sustancial del análisis.
3.2 Especificaciones
Ahora bien, es pertinente definir las especificaciones exactas del proyecto. En primer
lugar, se establecen los requerimientos funcionales de la herramienta, es decir, los
requerimientos que debe cumplir en cuanto a la entrada y la salida de datos e información.
Más adelante, se analizan los requerimientos no funcionales.
3.2.1 Parámetros (entradas)
• Cuentas de Twitter de interés: El parámetro de mayor relevancia en este caso es el
listado de cuentas de Twitter que resulten de interés para el analista. Esto es
sencillamente, definir que personas, organizaciones o movimientos quiere analizar y
obtener su nombre de usuario en Twitter, por ejemplo “@eltiempo” o “@ivanduque”.
Estas cuentas serán las tenidas en cuenta para generar el análisis y los reportes. La
herramienta debe pedirle al analista esta información de manera sencilla y por interfaz
gráfica.
• Periodo de análisis: Otro parámetro esencial es el periodo de análisis. Para esto, el
analista debe definir una fecha de inicio y una fecha final para el análisis. Luego, el
análisis se podrá realizar teniendo en cuenta los tuits que se publicaron después o en
la fecha inicial definida, y antes o en la fecha final definida. Esto le permite al analista
analizar periodos de tiempo definidos y de interés. De igual forma que las cuentas, la
Página 16 de 47
herramienta debe pedirle estas fechas en la interfaz gráfica y de forma sencilla (ej. un
calendario).
• Temas/palabras clave: El analista debe poder, de forma opcional, seleccionar un
listado de palabras clave de interés. De esta forma, se tendrán en cuenta únicamente
tuits que cumplan los parámetros anteriores, y que además incluyan al menos una de
las palabras clave. Si no se especifica ninguna palabra clave, solo se toman en cuenta
los tuits que cumplan las demás restricciones. Nuevamente, estas palabras clave
deben poder ser ingresadas por el analista en la interfaz gráfica de forma sencilla.
• Número de tópicos: Como fue mencionado anteriormente, el modelo LDA para el
modelado de tópicos requiere que una entrada sea el número de tópicos a modelar.
Para esto, se define que lo más cómodo para el analista es que este parámetro se
determine automáticamente como una recomendación, y luego el analista tenga la
opción de modificar este parámetro e ingresar el número de tópicos que quiere
modelar.
3.2.2 Resultados (salidas)
Luego de ingresar los parámetros definidos en la sección anterior, la herramienta debe
tomarlos y utilizarlos para construir los modelos pertinentes, para finalmente obtener los
resultados finales que el analista de entorno utilizará como insumo para su trabajo. Estos
resultados son:
• Importancia de palabras por tópico: El analista debe poder ver gráficamente la
importancia de las palabras en cada tópico modelado. Es decir, poder ver qué palabras
y en qué proporción conforman cada tópico.
• Visualización de temas y sus palabras: El analista debe poder visualizar de forma
sencilla y rápida los diferentes tópicos y las palabras que lo conforman.
• Proporción de tópicos en el conjunto de tuits: El analista debe poder ver la
proporción de tópicos presente en el conjunto de tuits analizados. Es decir, visualizar
cuántos tuits fueron clasificados en cada tópico.
Página 17 de 47
• Tuits por tópico: El analista debe poder visualizar de forma sencilla a qué tópico
pertenece cada tuit analizado.
• Proporción de polaridades en el conjunto de tuits: El analista debe poder ver la
proporción de polaridades presente en el conjunto de tuits analizados. Es decir,
visualizar cuantos tuits fueron clasificados en cada polaridad posible (positivo, neutro
o negativo).
• Polaridad de los tuits: El analista debe poder visualizar de forma sencilla qué
polaridad se le asignó a cada tuit analizado, y darle la oportunidad al analista de
cambiar esa polaridad.
3.2.3 Requerimientos no funcionales
Ahora, es pertinente analizar los requerimientos no funcionales de la herramienta. En
este punto es esencial entender las necesidades del usuario. En este caso, y cómo se
mencionó anteriormente, el usuario será un analista de entorno comunicacional.
Generalmente estos analistas son periodistas o psicólogos, entre otros profesionales
similares, y por lo tanto hay que tener en cuenta que no son expertos en sistemas,
algoritmos o modelos de aprendizaje automático. En este sentido, es indispensable que
las acciones que tenga que realizar sean lo más sencillas posibles y con vocabulario
común. Además, los resultados deben ser visuales, sencillos de entender, y sin
vocabulario o figuras que puedan no ser comprendidas o generar confusión para el
usuario. Teniendo esto en mente, los principales requerimientos no funcionales de la
aplicación están relacionados con la usabilidad, específicamente:
• La herramienta debe ser intuitiva y el usuario debe poder aprender a usarla de
forma rápida (aproximadamente en menos de 30 minutos).
• Se deben prevenir los errores cometidos por el usuario al máximo, y si se
cometen, se deben poder arreglar de forma inmediata.
• El sistema no debe presentar figuras o vocabulario ajeno al conocimiento del
usuario, por ejemplo, elementos especializados de los algoritmos.
Página 18 de 47
3.3 Restricciones
El desarrollo de la herramienta cuenta principalmente con tres restricciones de diseño. En
primer lugar, el acceso a los tuits se debe realizar por medio del API de Twitter para
desarrolladores utilizando el servicio de statuses/user_timeline. Este servicio cuenta con un
límite de 100,000 peticiones por día, ocasionando que el número de tuits que se pueden pedir
por medio del API sea restringido. Adicionalmente, el método de user_timeline únicamente
puede retornar, como máximo, los últimos 3200 tuits de un usuario, incluyendo los retuits
(Twitter, Inc., 2020). Por lo tanto, si se desea adquirir una gran cantidad de tuits, de una gran
cantidad de cuentas, de tal forma que se supere cualquiera de estos límites, esto se deberá
realizar de forma periódica. Es decir, el usuario deberá realizar estas peticiones
paulatinamente y además deberá tener en cuenta que al adicionar una cuenta nueva no se
tiene acceso a los tuits de periodos muy antiguos. Por lo tanto, una buena estrategia es
mantener el uso de las cuentas relativamente constante en el tiempo.
Por otra parte, se tiene como restricción de usabilidad, que los tiempos de carga y
limpieza de los tuits en la base de datos son elevados, pues estos deben sufrir varias
transformaciones para poder ser utilizados en el modelo y tener un buen desempeño. En
último lugar, teniendo en cuenta que para el desarrollo de los análisis se deben utilizar
librerías de gran tamaño y complejidad relacionadas con el procesamiento de lenguaje
natural, el aprendizaje automático y la limpieza de datos, el tiempo de inicialización de la
aplicación puede verse afectado significativamente. Debido a lo anterior, existen tiempos en
los procesos que inevitablemente pueden ser percibidos por el usuario como tiempos
demorados.
4. Desarrollo del diseño
El proceso de diseño se estructuró principalmente en cinco partes. En primer lugar, se
determinó la base de datos a utilizar que se ajustara de mejor manera a los requerimientos del
proyecto. En segundo lugar, se establecieron las librerías de soporte en Python que se
Página 19 de 47
utilizarían para la extracción y limpieza de los tuits, la implementación del modelo de tópicos
y la realización del análisis de sentimiento. En tercer lugar, se analizaron diferentes
herramientas para el desarrollo del back-end de la aplicación web de tal forma que soportara
los métodos desarrollados en Python. Por último, se realizó el diseño de los tableros de
control analizando las posibles librerías que se podrían utilizar al momento de realizar la
interfaz de usuario.
4.1 Recolección de Información
La fuente principal de información de la herramienta corresponde a Twitter. Esta es una
red social en la que grupos de amigos, familiares, compañeros de trabajo, entre otros, pueden
comunicarse por medio de mensajes rápidos que pueden contener fotos, videos, enlaces y
texto. A estos mensajes cortos se les denomina tuits y contienen un límite de 140 caracteres
como máximo.
Twitter ha tomado cada vez mayor relevancia dentro del análisis del entorno
comunicacional, pues es una plataforma dentro de la cual diariamente se expresan grandes
volúmenes de opiniones sobre diversos temas. De hecho, cada minuto se estima que se
construyen alrededor de 480 mil tuits (NodeGraph, 2020).
Ahora bien, Twitter permite el acceso a la información de la plataforma por medio de un
API para desarrolladores, pero primero es fundamental registrarse en su portal y crear una
aplicación con el fin de obtener unas credenciales con las cuales se puede adquirir acceso
limitado a sus servicios.
4.2 Alternativas de diseño
Con el fin de proponer una herramienta que cumpliera con los objetivos planteados se
tomaron varias decisiones de diseño. Lo primero a tener en cuenta fue la elección de la base
de datos. Para esto, era preciso considerar que se debía guardar una gran cantidad de tuits y
Página 20 de 47
poder acceder a ellos de forma rápida y sencilla. MongoDB es una base de datos de tipo
documental, con gran trayectoria y amplia documentación. En este caso, fue sencillo ver
cómo se podía implementar una colección de tuits donde cada documento sería un tuit
diferente. Además, MongoDB es una base de datos que permite gran escalabilidad y
flexibilidad, pues tiene fácil adaptación si surge algún cambio en la estructura y necesidades
de la aplicación. Otra ventaja de este tipo de base de datos es que necesita menos recursos,
por lo general, que otras como por ejemplo de tipo relacional. También es relevante que
MongoDB tiene grandes optimizaciones para consultas grandes. Por estas razones, y por su
sencillez en su uso e integración con otras herramientas, se decidió utilizar MongoDB como
base de datos.
La siguiente alternativa de diseño fue seleccionar las librerías a utilizar para desarrollar
la extracción de los tuits, la limpieza de los tuits, el modelo LDA y el análisis de sentimiento.
• Extracción de tuits: Para realizar la extracción de los tuits y poder guardarlos en
la base de datos se decidió utilizar la librería Tweepy, la cual permite, en lenguaje
Python, acceder al API de Twitter (con credenciales válidas de desarrollador de
Twitter) (Tweepy, 2020).
• Limpieza de tuits: Ahora bien, la limpieza de los tuits es fundamental para el
correcto funcionamiento de los modelos. Para realizar esto, se encontró una
librería llamada Tweet-Preprocessor, la cual tiene posibles configuraciones para
quitar elementos como hashtags, URLs, menciones a otros usuarios, entre otros.
(Özcan, 2020). Además de esto, se halló una librería para quitar los emoticones
de los tuits, pues estos son codificaciones que pueden ensuciar el texto. Esta
librería se llama Demoji, y permite encontrar los emoticones presentes en un texto
y reemplazarlos por algún valor especificado (Solomon, 2020). Además de esto,
se decidió utilizar la librería Stanza para tokenizar y lematizar los textos, lo cual
es indispensable para el modelo LDA. Esta es una librería desarrollada por el NLP
Group de la Universidad de Stanford (Peng et al., 2020). Por último, es necesario
eliminar las palabras vacías (sin significado), algo que se realiza con la librería
NTLK, que se especializa en programas que manejan y procesan el lenguaje
natural (NLTK Project, 2020), y además con una lista de palabras vacías para
Página 21 de 47
español creada por Gene Diaz que se encuentra en un repositorio en Github (Diaz,
2020).
• Modelo LDA: Una vez los tuits están limpios, pueden ser procesados para
construir el modelo de tópicos. Para construir este modelo, se decidió utilizar la
librería Gensim, especializada en modelado de tópicos, incluyendo una
implementación de LDA. Esta es una librería bastante utilizada para realizar estas
tareas en Python, y cuenta con documentación extensa. (Řehůřek, 2020)
• Análisis de sentimiento: Otra parte esencial de la aplicación es realizar un
análisis de sentimiento. Para esto, se decidió utilizar la librería SentiLeak, la cual
otorga un valor numérico a un texto representando la polaridad de este. Si el valor
es negativo, significa que el texto tiene una polaridad (sentimiento) negativa, si el
valor es cero implica que es neutro, y si el valor es positivo implica un sentimiento
positivo. Es una librería de gran utilidad especializada en textos en español y pre-
entrenada ampliamente (Ortega, 2020). Teniendo en cuenta que para entrenar un
modelo de estos es necesario tener un gran número de textos (tuits) etiquetados
por un experto, lo mejor en este caso fue utilizar una librería de este estilo donde
el entrenamiento ya se realizó.
Una vez definidas las librerías y herramientas principales para el desarrollo como tal
de la extracción y limpieza de los tuits y de los modelos de tópicos y de sentimiento, fue
pertinente definir qué herramienta o framework utilizar para construir la aplicación web, de
manera que se pudiera estructurar el código en python como back-end. Para esto, se
propusieron dos opciones: Django y Flask. Ambas son bastante utilizadas y con amplia
documentación, pero Django soporta aplicaciones un poco más complejas y viene lista para
trabajar en el desarrollo, mientras que Flask es para aplicaciones un poco más sencillas, y se
debe construir prácticamente desde cero. Debido a que se tenía un previo conocimiento de
Django y a que este tiene una mayor trayectoria, se decidió utilizar este framework para el
back-end de la aplicación, pues además tiene múltiples herramientas para acelerar el
desarrollo (Django Project, 2020).
Página 22 de 47
Luego de esto, fue pertinente decidir cuál sería la herramienta o framework para
realizar el front-end que utilizaría el API construido en Django. Teniendo en cuenta que la
aplicación se podía diseñar como una SPA (Single Page Application) y que se tenían fuertes
conocimientos en el framework React, además de su gran popularidad hoy en día y su amplia
documentación, se decidió utilizar esta herramienta para construir el front-end (Facebook,
2020).
5. Implementación
A continuación, se muestra el diagrama de despliegue de la aplicación con el fin de
visualizar los diferentes componentes de la herramienta y sus interacciones.
Figura 1. Diagrama de despliegue
5.1 Descripción de la implementación
El proceso de implementación se realizó principalmente en tres fases. En la primera fase
se realizó la estructuración de la base de datos, así como los métodos de extracción de tuits.
La segunda fase consistió principalmente en la implementación de los métodos de limpieza
Página 23 de 47
de los tuits, del modelado de tópicos y del análisis de sentimiento. Por último, se realizó la
elaboración de la herramienta web con la interfaz de usuario.
5.1.1 Construcción de la base de datos y extracción de tuits
La base de datos desarrollada en MongoDB consta de tres colecciones, una para
almacenar las cuentas de Twitter que han sido de interés para el analista, otra para almacenar
los tuits de las cuentas y la última que almacena los parámetros de búsqueda establecidos por
el analista por medio de la interfaz gráfica.
Un documento en la colección de cuentas consta de los siguientes campos: id, nombre,
cuenta de Twitter, ubicación, descripción, número de seguidores, id del tuit almacenado más
reciente, un booleano indicando si la cuenta se encuentra activa en este momento y la URL
de la imagen.
Por otra parte, un documento en la colección de tuits tiene los siguientes atributos: id,
fecha de creación, texto, texto semi limpio, arreglo con las palabras del texto limpio, id de la
cuenta, URL de la imagen de la cuenta, cuenta de Twitter, nombre de la cuenta y polaridad.
Cabe mencionar que el texto semi limpio corresponde al texto del tuit transformado a
minúscula y después de eliminar URLs, palabras reservadas, números, emoticones, emojis y
la puntuación. Por otra parte, el texto limpio consiste en el texto semi limpio tokenizado,
lematizado y sin palabras vacías o stop words. El procedimiento de limpieza se describe con
mayor detalle en la sección 5.1.2.1.
En cuanto a la colección de parámetros, esta únicamente almacena un documento que
busca mantener los últimos parámetros de búsqueda del usuario. Este documento tiene como
atributos los campos: id, fecha de inicio del periodo de interés, fecha de fin del periodo de
interés y un arreglo de temas de interés.
Ahora bien, como se mencionó en la sección anterior, la extracción de tuits se realiza
utilizando la librería Tweepy y por medio del API para desarrolladores de Twitter. Una vez
se obtienen los tuits, estos son almacenados en la base de datos MongoDB utilizando la
Página 24 de 47
librería Pymongo. De manera concreta los métodos implementados en esta fase corresponden
a:
• Adquisición de cuentas activas: Se obtienen aquellas cuentas cuyo atributo “activa”
en la base de datos se encuentre en verdadero.
• Activar una cuenta: Se actualiza el atributo “activa” con un valor de verdadero para
una cuenta especifica. Si esta no existe en la base de datos, se utiliza el API de Twitter
para obtenerla mediante el nombre de usuario y luego se almacena en la base de datos.
• Desactivar una cuenta: Se actualiza el atributo “activa” con valor de falso para una
cuenta especifica.
• Recolección de tuits nuevos de las cuentas activas: Se buscan los tuits nuevos de
las cuentas que se encuentran activas en la base de datos, teniendo en cuenta el id del
último tuit almacenado para esa cuenta, de tal forma que no se traigan tuits repetidos
de Twitter. De igual forma, se descartan aquellos tuits que sean re-tuits y
seguidamente, se almacenan en la base de datos.
• Extracción de un conjunto de tuits teniendo en cuenta parámetros: Se extraen de
la base de datos los tuits que se encuentren dentro de un periodo especifico, que sean
de las cuentas activas en el momento y que finalmente contengan en su texto alguna
de las palabras clave o temas.
• Adquisición de los parámetros: Se obtiene el documento de parámetros de la base
de datos con los últimos valores.
• Actualización de parámetros: Se actualiza el documento de parámetros con nuevas
configuraciones.
5.1.2 Implementación de los modelos
5.1.2.1 Limpieza de tuits
Una vez que se tienen los mecanismos para obtener los tuits de Twitter y almacenarlos
en la base de datos, es necesario implementar métodos que permitan preparar los textos para
que puedan ser utilizados en los modelos. Realizar estos procedimientos es necesario, pues
Página 25 de 47
los tuits generalmente vienen bastante contaminados y esto afecta directamente el desempeño
de los modelos. El procedimiento de limpieza que se llevó a cabo es el siguiente:
1. Eliminación de URLs, palabras reservadas, números y emoticones: Se utiliza la
librería Tweet-Preprocessor para remover los enlaces, palabras reservadas como “rt”
o “fav”, los números y los emoticones. Estos últimos hacen referencia a cuando se
utilizan elementos de puntuación para percibir expresiones (ej. “:)”).
2. Transformación a minúscula: Se convierten todas las letras del texto a minúscula
para estandarizar.
3. Eliminación de puntuación: Se remueven todos lo símbolos asociados a puntuación
del texto.
4. Eliminación de emojis: Se utiliza la librería Demoji para quitar las imágenes o
pictogramas que se utilizan para expresar emociones. Estos difieren de los emoticones
al ser imágenes y no contener caracteres de texto.
5. Tokenización y lematización: Se divide el texto del tuit en palabras para así poder
tratar cada una individualmente. Adicionalmente, se reemplazan las palabras por su
respectivo lema, con el fin de no tener palabras separadas cuyo significado sea el
mismo. Estos dos pasos se realizaron utilizando la librería Stanza de Stanford.
6. Eliminación de palabras vacías: Se eliminan aquellas palabras que no contribuyen
al análisis como lo son artículos, pronombres, preposiciones, etc. Esto se realiza por
medio de una mezcla de varios diccionarios de palabras vacías. Uno de los
diccionarios corresponde al proporcionado por la librería NLTK. También se utiliza
la lista construida por Gene Diaz y, además, se proporciona una lista de palabras
brindada por la asesora del proyecto: la profesora Haydemar Núñez.
El proceso de limpieza de los tuits se decide hacer al momento de introducir los tuits
traídos de Twitter en la base de datos. Lo anterior, con el fin de evitar un mayor tiempo de
ejecución de los modelos.
Página 26 de 47
5.1.2.2 Implementación del modelado de tópicos
En primer lugar, con el fin de obtener un mejor modelo se computaron los bigramas en
el conjunto de tuits que recibe el modelo. Los bigramas son parejas de palabras que aparecen
frecuentemente juntas y pueden tener un significado más significativo que las palabras por sí
solas (ej. Aprendizaje automático). Lo anterior se realizó utilizando el componente Phrases
de Gensim. Los bigramas se adicionan al arreglo de palabras del tuit respectivo para que
puedan ser tenidos en cuenta en el análisis.
Seguidamente se crea un diccionario a partir de los tuits utilizando el componente
Dictionary de la librería Gensim. Luego, a este diccionario se le realiza un filtro y se eliminan
aquellas palabras o bigramas que aparecen en menos de 5 documentos o en más del 70% de
los textos, pues en este caso, estas palabras no representan un contenido significativo.
Seguido a esto, se forma el “corpus”, el cual es una representación de bolsa de palabras de
los documentos. Esto se realiza aplicando la función doc2bow al diccionario.
A continuación, con el fin de obtener un mejor desempeño en el modelo, se realiza un
ciclo en el que se calcula el valor de coherencia para el modelo con diferente número de
tópicos. Esto se realiza utilizando la función CoherenceModel de la librería Gensim. Una vez
calculado esto, es posible determinar el número de tópicos adecuado para el modelo. Lo
anterior se hace encontrando el valor máximo de coherencia obtenido, pero también
limitando a que haya palabras suficientes (5 como mínimo) para cada tópico, pues la
repetición de palabras en los tópicos puede simbolizar una similitud indeseada.
Establecido el número óptimo de tópicos, se procede a construir el modelo LDA
utilizando la función LdaModel de la librería Gensim. La función utilizada permite que el
modelo aprenda los hiperparámetros alpha y beta a partir del “corpus”. Por medio de esto,
se obtienen los tópicos junto con las palabras que lo componen y su nivel de importancia.
Es pertinente mencionar que se habilitó la posibilidad de correr el modelo con un número
de tópicos especifico, sin realizar la optimización, en caso tal de que el usuario desee
establecer por sí mismo este número.
Página 27 de 47
5.1.2.3 Implementación del análisis de sentimiento
Ahora bien, en relación con la implementación del análisis de sentimiento, se determinó
que la forma más eficiente de realizarlo era al momento de almacenar los tuits en la base de
datos. Es decir, una vez se obtiene el tuit de Twitter, se utiliza la función compute_sentiment
de la librería SentiLeak para determinar la polaridad presente en el texto. El modelo da como
resultado un valor numérico, pero se determinó que, en el contexto de este proyecto, lo
relevante era definir si existía una polaridad positiva, neutra o negativa. Por lo tanto, se aplica
un condicional en donde si el valor resultante es menor a 0, se asigna una polaridad negativa
al tuit, si el valor es igual a 0 la polaridad se toma como neutra y finalmente si esta es mayor
a 0 se asigna una polaridad positiva. De este modo, al obtener los tuits de la base de datos ya
se cuenta con el sentimiento.
5.1.3. Desarrollo de la herramienta web
Para el desarrollo de la herramienta web se decidió utilizar React para la interfaz de
usuario y Django con el fin de exponer un API que permita acceder a los resultados de los
modelos. El API implementado expone los siguientes servicios:
• Activar cuenta (POST): Permite activar una cuenta por medio de su nombre de
cuenta en Twitter. Si el nombre de cuenta no existe, se le informa al usuario. Si la
cuenta ya existía en la base de datos, su atributo “activa” se cambia a “verdadero”.
• Desactivar cuenta (PUT): Cambia el estado de una cuenta, modificando su atributo
“activa” a “falso”.
• Cambiar fechas de búsqueda (PUT): Permite modificar el rango de fechas que se
tendrá en cuenta para la búsqueda de tuits y posterior construcción de los modelos.
• Modificar temas/palabras clave (PUT): Permite agregar/eliminar palabras clave,
las cuales se tendrán en cuenta para obtener los tuits que se utilizarán para construir
los modelos.
Página 28 de 47
• Construir modelos (POST): Una vez el usuario establece los parámetros (cuentas,
fechas y palabras clave), puede confirmar para construir el modelo de tópicos y
estructurar los datos que se enviarán al front-end para visualizar los resultados.
• Modificar el número de tópicos (PUT): El modelo se construye con el número de
tópicos que mejor coherencia resulta, pero el usuario tiene la oportunidad de
modificar este parámetro y reconstruir el modelo de tópicos.
• Filtrar los tuits por tópico: El usuario puede visualizar los tuits analizados y
asignados a un tópico. En esta interfaz tiene la oportunidad de filtrar los tuits por
tópico, es decir, mostrar los tuits de un tópico específico que escoja.
• Modificar la polaridad de un tuit (PUT): La aplicación asigna una polaridad
(positivo, neutro o negativo) a cada tuit utilizando un modelo de sentimiento, pero el
usuario tiene la posibilidad de cambiar la polaridad de un tuit según su criterio en la
interfaz de análisis de sentimiento.
• Filtrar los tuits por polaridad: El usuario puede visualizar los tuits analizados y su
polaridad asignada. En esta interfaz tiene la oportunidad de filtrar los tuits por
polaridad, es decir, mostrar los tuits de una polaridad específica que escoja.
En cuanto a las imágenes, donde se puede apreciar el aspecto de la herramienta, estas se
encuentran en la sección de resultados.
5.2. Resultados
Los resultados del proyecto corresponden a una herramienta web que facilita el análisis
de un gran volumen de tuits utilizando técnicas de modelado de tópicos y de análisis de
sentimiento. A continuación, se explica de forma detallada las funcionalidades ofrecidas por
la herramienta.
Página 29 de 47
5.2.1 Personalización de parámetros
Esta pestaña de la aplicación corresponde a la pantalla de inicio de la herramienta y tiene
como finalidad permitirle al analista seleccionar los parámetros de selección de los tuits para
el desarrollo de los modelos. Cabe mencionar que se decidió utilizar una plantilla, con el fin
de tener un aspecto visual de la herramienta agradable. La plantilla fue desarrollada por
Creative Tim para su libre uso (Creative Tim, 2020)
Figura 2. Vista selección de parámetros
Se pueden seleccionar, inicialmente, tres parámetros para la selección de tuits. A
continuación, se busca explicar cada uno de ellos y mostrar en que partes de esta vista pueden
ser seleccionados.
Página 30 de 47
5.2.1.1 Selección de cuentas activas
Figura 3. Selección de cuentas activas
La selección de cuentas para el análisis según los intereses del analista puede realizarse
en la sección de “Cuentas de interés”. Esta sección se puede ver en la Figura 3, Como se ve
en la imagen, se cuenta con una barra buscadora en la cual el analista puede ingresar una
cuenta nueva que desee tener en cuenta para el análisis. Seguidamente se muestra una lista
de las cuentas que se encuentran activas actualmente y se le da la opción al usuario de
desactivar cada cuenta utilizando el botón “desactivar”.
Página 31 de 47
5.2.1.2 Selección del periodo de interés
Figura 4. selección del periodo de interés
La selección del periodo de interés puede realizarse en la sección de “Periodo de
Análisis”. Esta sección se puede ver en la Figura 4. En esta, se cuenta con dos calendarios,
uno para la selección de la fecha de inicio del periodo, y otro para la selección de la fecha fin
del periodo.
5.2.1.3 Selección de temas de interés
Figura 5. Selección de temas de interés
Página 32 de 47
La selección de temas de interés/palabras clave se puede realizar en la sección llamada
“Temas”, y se puede apreciar en la figura 5. En esta, el usuario puede insertar los temas que
quiera que se tengan en cuenta para la búsqueda de tuits y/o eliminarlos de manera sencilla.
5.2.1.4 Actualización de los parámetros
Figura 6. Actualización de parámetros
En la figura 6 se puede apreciar la parte inferior de la interfaz de parámetros. Una vez el
usuario seleccionó las cuentas, fechas y temas de interés, debe oprimir el botón “Actualizar
parámetros y modelos”, de forma que se tomen los parámetros, se seleccionen los tuits
correspondientes y se construyan los modelos para poder generar las visualizaciones. Cabe
aclarar que entre más cuentas y mayor el periodo de análisis, el tiempo de ejecución
incrementará.
Página 33 de 47
5.2.2 Modelado de tópicos
Figura 7. Vista modelado de tópicos
Una vez el usuario actualiza los parámetros y construye los modelos, puede acceder a
la pestaña “Tópicos”. Al ingresar a esta, encontrará una interfaz que se puede apreciar en la
figura 7. El detalle de esta interfaz se explica a continuación.
5.2.2.1 Modificación del número de tópicos
Figura 8. Modificación del número de tópicos
Como se explicó anteriormente, la aplicación determina el número de tópicos que
resulta en una mayor coherencia del modelo y lo construye utilizando ese número de tópicos.
Página 34 de 47
En la figura 8 se puede observar la parte superior de la interfaz de modelado de tópicos. En
esta, se le informa al usuario cuantos tópicos se modelaron, y le da la opción de seleccionar
un nuevo número de tópicos utilizando un deslizador. Una vez elige el número de tópicos
que quiere modelar, oprime el botón “Re-calcular modelo”, y la aplicación vuelve a construir
el modelo con el número de tópicos especificado. Una vez termina, las vistas de esta interfaz
se actualizan automáticamente.
5.2.2.2 Visualización de palabras por tópico y su importancia
Figura 9. Visualización de palabras por tópico y su importancia
Una vez el usuario está satisfecho con el número de tópicos, puede proceder a observar
y analizar las vistas. La primera de ellas es “Análisis de tópicos”, y se puede observar en la
figura 9. En esta, se visualiza una gráfica de barras por cada tópico modelado. Cada una de
estas gráficas muestra la importancia de las principales palabras dentro del tópico respectivo.
De esta forma, el analista puede entender de qué palabras y en qué medida está construido
cada tópico.
Página 35 de 47
5.2.2.3 Nubes de palabras
Figura 10. Nubes de palabras
La siguiente pestaña de la interfaz de modelado de tópicos es “Nubes de palabras”, y
se puede observar en la figura 10. En esta vista, se encuentra una nube de palabras por cada
tópico modelado, al igual que en la primera pestaña. Aunque la información es similar a la
pestaña anterior, es una forma mucho más sencilla y rápida de entender de qué palabras se
conforma cada tópico. Entre más grande la palabra, más importancia tiene dentro del tópico.
Esta visualización es una gran manera de entender los diferentes tópicos de forma intuitiva.
Página 36 de 47
5.2.2.4 Discriminación por tuit
Figura 11. Discriminación por tuit tópicos
La última pestaña de la interfaz de modelado de tópicos es “Discriminación por tuit”,
y se puede observar en la figura 11. En esta vista se encuentran los tuits analizados
catalogados por el tópico que le fue asignado. Esto es, discriminados según el tópico al que
con mayor probabilidad pertenecen. El detalle de esta vista se describe a continuación.
Página 37 de 47
5.2.2.4.1 Distribución de tuits por tópico
Figura 12. Distribución de tuits por tópico
En la parte superior de la vista de “Discriminación por tuit” se encuentra la gráfica
que se observa en la figura 12. En esta se observa la distribución del conjunto de tuits
analizado según el tópico al que pertenece. Es decir, se puede ver la proporción de tuits de
cada tópico sobre el total de tuits analizados. Si se pasa el puntero por encima, se muestra el
número exacto de tuits de ese tópico. Además, si el usuario hace click en algún tópico, se
aplica un filtro y se muestran solo los tuits de ese tópico en la parte baja, que será descrita a
continuación.
Página 38 de 47
5.2.2.4.2 Detalle de distribución de tuits por tópico
Figura 13. Detalle tuits por tópico
En la parte inferior de la vista “Discriminación por tuit” se encuentra un listado de los
tuits analizados, el cual se puede apreciar en la figura 13. Cada tuit tiene un borde y una
especificación en la parte inferior que indican a que tópico pertenece. Además, las palabras
principales de los diferentes tópicos son resaltadas en los tuits, con el color del tópico en el
que tienen mayor relevancia. Si hay un filtro determinado, solo se visualizan los tuits
asignados a ese tópico específico.
Página 39 de 47
5.2.3. Análisis de sentimiento
Figura 14. Vista análisis de sentimiento
Una vez el usuario actualiza los parámetros y oprime el botón para construir los
modelos, puede acceder a la pestaña “Sentimiento” en la interfaz principal. En este se
visualiza una gráfica en la parte superior y un listado de tuits en la parte inferior. El detalle
de estas vistas se explica a continuación.
5.2.3.1. Distribución de tuits por sentimiento
Figura 15. Distribución de tuits por sentimiento
Página 40 de 47
En la parte superior de esta vista se encuentra la gráfica que se observa en la figura
15. En esta gráfica se observa la proporción de tuits de cada polaridad sobre el total de tuits
analizados. Además, si se pasa el mouse sobre una polaridad, se puede ver el número de tuits
que tienen esa polaridad asignada. Adicionalmente, el usuario puede dar click en una
polaridad y se aplicará un filtro a los tuits que se visualizan en la vista que se describe a
continuación.
5.2.3.2. Detalle de distribución de tuits por sentimiento
Figura 16. Detalle de distribución de tuits por sentimiento
En la parte inferior de la interfaz de “Sentimiento” se encuentra el listado de tuits
analizados. Este listado se puede observar en la figura 16, y cada tuit tiene el borde del color
respectivo a su polaridad para una fácil identificación. Adicionalmente, el usuario tiene la
posibilidad de cambiar la polaridad de un tuit según su criterio utilizando el botón a la derecha
del tuit. Al cambiar la polaridad se actualiza inmediatamente en la interfaz, así como en la
base de datos para futura referencia. Por otra parte, si hay algún filtro aplicado desde la
gráfica superior, en este listado solo estarán presentes aquellos tuits que tengan esa polaridad
específica.
Página 41 de 47
6. Validación
Luego de la construcción de la aplicación, es importante validarla con un experto. En este
caso, se acudió al Licenciado Francisco Vallenilla, un experto en el análisis de entorno
comunicacional. El detalle y los resultados de este proceso de validación se describen a
continuación.
6.1. Método de validación
Para validar la aplicación con el experto, se utiliza el cuestionario PSSUQ (Post Study
System Usability Questionnaire). Este es un cuestionario de 16 preguntas estandarizadas con
gran trayectoria y frecuentemente utilizado para medir la satisfacción percibida por un
usuario de un sitio web, software o producto. Este cuestionario se originó de un proyecto de
IBM en 1988, y tras algunos cambios y mejoras se llegó a la versión 3, la cual se utiliza hoy
en día y se utiliza en este estudio (UX Research, s.f.). En este caso específico, se utilizó un
subconjunto de preguntas del PSSUQ de 9 preguntas, teniendo en cuenta la funcionalidad de
la herramienta.
6.2. Resultado de la validación
El cuestionario aplicado consiste en 9 preguntas, cada una con una escala con 7
opciones para elegir (y adicionalmente la opción N/A). La escala se define de la siguiente
manera:
Totalmente de acuerdo (1) – Totalmente en desacuerdo (7)
Los resultados, una vez el experto probó la aplicación, fueron los siguientes:
Página 42 de 47
Figura 17. Cuestionario PSSUQ
PSSUQ 1 2 3 4 5 6 7 NA
1. En general, estoy satisfecho con lo fácil que es usar este sistema.
X
2. Fue sencillo usar este sistema. X
3. Pude completar la tarea y escenario rápidamente usando este sistema.
X
4. Cada vez que cometía un error al usar el sistema, podía recuperarme fácil y rápidamente.
X
5. Fue fácil encontrar la información que necesitaba.
X
6. La información fue efectiva para ayudarme a completar las tareas y los escenarios.
X
7. La organización de la información en las pantallas del sistema fue clara.
X
8. Este sistema tiene todas las funciones y capacidades que espero que tenga.
X
9. En general, estoy satisfecho con este sistema.
X
Página 43 de 47
De manera general es posible ver que el experto se encuentra satisfecho con la
herramienta desarrollada, las funcionalidades implementadas, la información expuesta y la
organización del sistema. El resultado final es un promedio de 2.11, lo cual se considera
satisfactorio en una escala de 1 a 7, pero dejando ver que hay detalles que pueden ser
mejorados. En cuanto a aspectos a mejorar, el experto presentó una sugerencia la cuál es
mostrar los tuits completos en la sección de discriminación por tuit en la interfaz del
modelado de tópicos. Actualmente, se exponen los tuits después de pasar por el proceso de
limpieza, tokenización y lematización, sin embargo, el experto recalca que es de vital
importancia mostrar el texto original del tuit, de la misma forma que se realiza en la sección
de análisis de sentimiento.
7. Conclusiones
7.1. Discusión
El objetivo de este proyecto fue construir una herramienta para facilitar el trabajo de
los analistas de entorno comunicacional, utilizando técnicas de modelado de tópico y de
análisis de sentimiento. El resultado fue una aplicación web que tiene la capacidad de
procesar grandes volúmenes de datos, en este caso de la red social Twitter, para construir
visualizaciones que le permitan al analista entender la información. La gran ventaja de esta
herramienta es que le ahorra tiempo y trabajo al analista, pues capturar, procesar, entender y
visualizar la información de un gran número de tuits es una tarea que es muy dispendiosa de
forma manual, y prácticamente imposible de realizar con la gran cantidad de datos que se
generan en la red social. Además, la herramienta brinda la posibilidad de ser personalizable
según las necesidades del análisis, pues permite elegir las cuentas y fechas que quiere
analizar, así como incluir temas/palabras clave para realizar un análisis de mayor precisión.
Específicamente, se buscó realizar dos grandes tareas en el análisis. En primer lugar, se
buscó implementar una tarea de modelado de tópicos, la cual básicamente toma los tuits
resultantes de la búsqueda según los parámetros y determina los tópicos latentes y las
palabras que componen el tópico. Para mostrar los resultados de este modelo al analista, se
Página 44 de 47
construye una visualización en donde se tiene una gráfica por tópico mostrando la
importancia de las principales palabras dentro del tópico. Además, se construyeron unas
nubes de palabras para la rápida y fácil identificación de los tópicos modelados. Adicional a
esto, se muestra una gráfica con la proporción de tuits de cada tópico dentro del conjunto de
tuits analizado, así como un listado de estos tuits donde, para cada uno, se visualiza el tópico
al que pertenece con mayor probabilidad y las palabras más representativas de cada tópico
resaltadas. Por otra parte, se buscó implementar un análisis de sentimiento. En este sentido,
se clasifica cada tuit como positivo, neutro o negativo utilizando un modelo pre-entrenado.
En cuanto a visualización, se construye una gráfica con la proporción de tuits de cada
polaridad respecto al total de tuits analizados, y se muestra un listado de los tuits donde se
aprecia la polaridad de cada uno. Para complementar esto, se da la opción al usuario de
modificar la polaridad asignada de cada tuit según su criterio para futura referencia.
Con esto, se pretendió apoyar al analista de entorno de manera que pueda identificar
patrones de lo que se está publicando en Twitter según sus parámetros de búsqueda, bien sea
acerca de los tópicos latentes o del sentimiento (polaridad) presente. Ahora bien, para
entender si la herramienta realmente cumple sus objetivos y es de utilidad a los analistas del
entorno comunicacional, se le solicitó a un experto en el tema probarla y diligenciar una
versión adaptada del cuestionario PSSUQ para medir su satisfacción. A partir de esto se
identificó que la herramienta cumple su objetivo y el experto se encuentra bastante satisfecho
con, pues el resultado del cuestionario fue un promedio de 2.11 en una escala de 1 a 7 (1
siendo lo mejor), aunque es importante tener en cuenta que hay oportunidades de mejora para
hacer la experiencia del usuario más satisfactoria. Además, el experto sugirió que en la
interfaz de modelado de tópicos se muestre el texto original del tuit, y no solo el texto
tokenizado y lematizado como se hace actualmente. Esta sugerencia, y lo que se discutirá en
la siguiente sección (trabajo futuro), permitirá que la satisfacción de los usuarios pueda
mejorar.
Página 45 de 47
7.2. Trabajo futuro
Finalmente, es pertinente identificar el trabajo futuro que se puede realizar. En primer
lugar, se debe tomar en cuenta el resultado del cuestionario para realizar mejoras en la
aplicación como por ejemplo mejorar la facilidad para encontrar la información. Para esto,
se puede incluir una sección en la cual se describa las funcionalidades de la herramienta y su
ubicación, de tal forma que sea más fácil la manipulación por parte de los analistas. Además,
se deben tener en cuenta las recomendaciones brindadas por el experto, pues su experiencia
y conocimiento son muy valiosos para el mejoramiento de la herramienta. Específicamente
se debe realizar la modificación de la exhibición del texto del tuit en la discriminación de
tuits en la sección del modelado de tópicos, para que se pueda visualizar el texto original y
completo del tuit como se hace en la sección de análisis de sentimiento.
Además de esto, se considera que TopiTuit es una herramienta base para el análisis de
entorno comunicacional, a la que se le pueden adicionar múltiples funcionalidades y
visualizaciones. En primer lugar, construir más visualizaciones con la información, como
análisis temporal o visualizaciones específicas de cada cuenta analizada pueden hacer la
herramienta más robusta. También es pertinente tener en cuenta que la implementación de la
herramienta puede realizarse con plataformas o herramientas de mejor desempeño, lo cual
probablemente resultará en algunos costos, pero permitirá una ejecución más rápida y
robusta. Por otra parte, entendiendo el gran volumen de información que existe hoy en día,
la herramienta se puede extender para utilizar información de varias redes sociales más como
Facebook o Instagram, así como portales web como por ejemplo páginas de noticieros o
revistas. De esta forma, se tendría una perspectiva más global de lo que se piensa y comenta
y se obtendrían resultados más amplios y completos. De igual forma, se podrían utilizar más
técnicas de modelado de tópicos y de análisis de sentimiento y cruzar los resultados para
obtener información más precisa y robusta. Por último, sería interesante construir
recomendaciones al analista de cuentas relacionadas a otras o que tengan contenido de un
tópico específico, así como recomendaciones de fechas y palabras clave teniendo en cuenta
sucesos importantes que ocurran en la región.
Página 46 de 47
8. Referencias
Dir&Ge. (10 de septiembre de 2019). La importancia de los datos en las empresas. Obtenido de https://directivosygerentes.es/innovacion/noticias-innovacion/aplazame-datos#:~:text=Los%20datos%20permiten%20dejar%20a,acciones%20seg%C3%BAn%20la%20informaci%C3%B3n%20disponible&text=En%20Aplazame%2C%20los%20datos%20son,%2C%20operaciones%2C%20ventas%2C%2
NodeGraph. (26 de Marzo de 2020). How much data is on the internet? The Big Data Facts Update 2020. Obtenido de NodeGraph: https://www.nodegraph.se/how-much-data-is-on-the-internet/
Ceballos Agudelo, E. J. (2013). El análisis del entorno y su relación con la Estrategia Gerencial y la Prospectiva. Revista CIES –ISSN 22116-0167. Volumen4. Número01, 9-18.
Licha, I. (2000). EL ANÁLISIS DEL ENTORNO: HERRAMIENTA DE LA GERENCIA SOCIAL.
García, L. M. (Agosto de 2014). Análisis de sentimientos y predicción de eventos en Twitter. Santiago de Chile, Chile: Universidad de Chile.
Sande, J. C. (Junio de 2018). Análisis de Sentimientos en Twitter. Catalunya, España: Universitat Oberta de Catalunya.
Chandía, B. (Marzo de 2016). Aplicación y evaluación LDA para asignación de tópicos en datos de Twitter. Valparaíso, Chile.
Risch, J. (Enero de 2016). Detecting Twitter topics using Latent Dirichlet Allocation. Uppsala, Suecia.
Hammoe, L. (2018). DETECCIÓN DE TÓPICOS Utilizando el Modelo LDA. Buenos Aires, Argentina.
Twitter, Inc. (2020). Get Tweet timelines. Obtenido de Twitter Developer: https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline
Tweepy. (2020). Obtenido de Tweepy: https://www.tweepy.org/
Özcan, S. (2020). Obtenido de Tweet-Preprocessor: https://pypi.org/project/tweet-preprocessor/
Solomon, B. (2020). Obtenido de demoji: https://pypi.org/project/demoji/
Řehůřek, R. (2020). Obtenido de Gensim. Topic modelling for humans: https://radimrehurek.com/gensim/
Ortega, F. (2020). Obtenido de SentiLeak: https://pypi.org/project/SentiLeak/
Django Project. (2020). Obtenido de django: https://www.djangoproject.com/
Facebook. (2020). Obtenido de React: https://es.reactjs.org/
NLTK Project. (2020). Obtenido de Natural Language Toolkit: https://www.nltk.org/
Página 47 de 47
Diaz, G. (2020). Obtenido de Stopwords Spanish (ES): https://github.com/stopwords-iso/stopwords-es
Creative Tim. (2020). Paper Dashboard React. Obtenido de Creative Tim: https://www.creative-tim.com/product/paper-dashboard-react
UX Research. (s.f.). PSSUQ (Post-Study System Usability Questionnaire). Obtenido de UIUX Trend: https://uiuxtrend.com/pssuq-post-study-system-usability-questionnaire/#:~:text=The%20PSSUQ%20(Post%2DStudy%20System,System%20Usability%20Metrics)%20in%201988.
Vilares, D., Alonso, M. A., & Gómez-Rodríguez, C. (2014). A linguistic approach for determining the topics of Spanish Twitter messages. Journal of Information Science, 1-20.
Tellez, Eric & Miranda-Jiménez, Sabino & Graff, Mario & Moctezuma, Daniela & S. Siordia, Oscar & Villaseñor García, Elio. (2017). A case study of Spanish text transformations for twitter sentiment analysis. Expert Systems with Applications. 81. 457-471. 10.1016/j.eswa.2017.03.071.
Zapata Rotundo, Gerardo J., & Mirabal, Alberto, & Canet Giner, María Teresa (2015). EL ENTORNO DE LA ORGANIZACIÓN: UN ESTUDIO DE SUS TIPOLOGÍAS Y SU VINCULACIÓN CON LA PERCEPCIÓN DIRECTIVA Y EL DISEÑO ORGANIZATIVO. Ciencia y Sociedad, 40(4),785-822. ISSN: 0378-7680. Obtenido de: https://www.redalyc.org/articulo.oa?id=870/87043449006
Peng Qi, Yuhao Zhang, Yuhui Zhang, Jason Bolton and Christopher D. Manning. (2020). Stanza: A Python Natural Language Processing Toolkit for Many Human Languages. In Association for Computational Linguistics (ACL) System Demonstrations. 2020.