Dashboard Topic Modeling

La herramienta consiste en un dashboard concebido para analizar, comparar y descubrir tópicos de artículos de noticias a través del tiempo mediante técnicas de procesamiento del lenguaje natural (NLP) y de aprendizaje automático (ML).

En esta guía del usuario se ofrece una visión general de las características de la aplicación con ejemplos y se indican las instrucciones que pueden seguirse paso a paso para realizar diversas tareas. Para acceder a la página de inicio del dashboard se debe ingresar a https://natural.do/topic-modeling.

Utiliza un conjunto de datos públicos de noticias de Harvard Dataverse: dai, tianru, 2017, “NewsArticles.csv”, News Articles, Harvard Dataverse, V1 (https://doi.org/10.7910/DVN/GMFCTR/IZQODZ).

Nuestra solución es lo suficientemente potente como para aplicarse a cualquier otro conjunto de datos de texto no estructurado con miles de instancias, como reclamos y reseñas en cualquier idioma de destino. Actualmente, ya hemos entregado con éxito una versión de este mismo dashboard para reclamos de viajeros en español y portugués para la principal plataforma de viajes de Latam.

Es fácil aprender a usar el tablero, pero se recomienda estudiar detenidamente este documento antes de empezar a probar la herramienta para conocer la dinámica de trabajo junto con las capacidades de los métodos empleados para generar el modelado de temas, y así poder interpretar adecuadamente los resultados obtenidos.

1. Pantalla de inicio

Al ingresar a https://natural.do/topic-modeling se accede a la página de inicio del dashboard (“Documentation”) de modelados de temas de artículos de noticias en inglés. Esta página introduce una breve descripción de las técnicas de utilizadas para generar tópicos. Además, provee un link para acceder a este manual.

En la barra lateral, a la izquierda, se encuentra la opción “Navigation” que permite navegar entre la pantalla de inicio y la página del tablero propiamente (“Topics Dashboard”).

Figura 1 — Página de inicio

1. Tablero de modelado de temas

Cuando se ingresa a la sección del tablero aparece una opción (“Load from Database”) provista para cargar los datos de trabajo.

Figura 2 — Tablero de trabajo

2. Carga de datos

El primer paso que se debe ejecutar en el dashboard, es obtener los artículos de noticias de interés desde la base de datos (bd) dispuesta.

El objetivo del modelado de temas es evaluar la dinámica de las noticias a lo largo del tiempo, por lo tanto, los datos se recuperan de la base de datos a través de dos intervalos temporales establecidos que se denominan “First data range” y “Second data range”. Cada intervalo se configura al desplegar un calendario y elegir las fechas deseadas.

1. Se selecciona un intervalo de tiempo (en “First date range” y en “Second date range”)

2. Se ejecuta “Process” y se recupera la información de la bd.

Figura 3 — Carga de datos por fechas

Nota: Las fechas que se pueden elegir en los calendarios están restringidas a la información de creación de los artículos, es decir, el mensaje más antiguo en la base de datos y el más reciente definen el intervalo temporal que se habilita para seleccionar en los calendarios.

Una vez seleccionadas las fechas de interés se ejecuta el botón “Process” que impulsa dos acciones. Primero se carga de la base de datos información correspondiente a los rangos de tiempo asignados; la misma contiene los textos originales de los artículos, datos con un nivel de pre-procesamiento e información complementaria de interés. Seguidamente, se realiza un post-procesamiento sobre los datos originales cargados.

En los calendarios disponibles hay que establecer correctamente dos fechas para formar el rango “inicio — fin” de lo contrario aparecerá una alerta de error. Si se quiere seleccionar un mismo día como ventana de tiempo hay que hacer un doble click en el calendario en el día elegido para marcarlo como fecha de inicio y fecha final.

Figura 4 — Mensaje de error por rango de fechas incompleto

Nota: Si se elige un rango de fechas en el cual no hay noticias al ejecutar “Process” saldrá una advertencia con el mensaje “Date range does not contain any news. Please select other date range.”

3. Clustering

Al finalizar el post-procesamiento se activa una nueva sección para configurar los parámetros de agrupamiento (“Topics params”).

Figura 5 — Parámetros de generación de clústeres

Hay dos parámetros que influyen en la cantidad de tópicos que se forman:

· “Minimun cluster size”: define la mínima cantidad de documentos que se deben encontrar en un clúster. El mínimo valor posibles es 5.

· “Sensitive coefficient of clusters number”: determina la amplitud de las fronteras de los clústeres, es decir, si un documento pertenece a un grupo u otro. Un valor más grande tiende a ampliar la región de los clústeres, por lo tanto, es posible que se reduzca el número de grupos, y viceversa. El valor debe ser igual o superior a 0,1.

La sección “Manual Stop Words List” se utiliza para agregar manualmente palabras lematizadas que deben omitirse en el momento de calcular las frases más importantes que aparecen en un clúster o tópico. Dichas palabras deben incorporarse a la lista separadas con un espacio en blanco.

Nota: Las palabras agregadas en la opción “Manual Stop Words List” deben estar en formato de lema, consecuentemente se aconseja escribirlas tal como aparecen en los histogramas de frases relevantes.

El botón “Execute” comienza el proceso de clustering; posteriormente se extrae de cada grupo las frases o palabras de mayor relevancia. Este procedimiento devuelve como resultado una serie de gráficos, tablas y textos con información de los tópicos creados en los intervalos de tiempo elegidos.

4. Visualización de los resultados

La sección “Topics graph” presenta dos gráficos en los cuales cada punto representa una noticia y el color que tiene indica a que clúster corresponde de acuerdo con la tabla de referencia. Los puntos se posicionan teniendo en cuenta el contenido semántico de los artículos, entonces se debe interpretar que dos puntos cercanos en las figuras tienen un contexto más “similar” que dos puntos alejados.

Cada gráfico representa los periodos de tiempo seleccionados en “First date range” y “Second date range”. La tabla de referencia muestra para cada clúster un ID único de identificación y el binomio de palabras más relevantes extraído del conjunto de noticias que componen al grupo en ambos rangos de fechas.

Figura 6 — Gráfico de clústeres o tópicos

Nota: El método de extracción de temas desarrollado puede nombrar a los clústeres con binomios de palabras similares. Por ello, se agrega un “ID” único para cada tópico. También al agregar nuevas stop-words en “Manual Stop Words List” las etiquetas (bi-gramas que representan los tópicos) pueden cambiar, pero el “ID” se mantiene inmutable.

Para una correcta interpretación de los resultados, se debe “desactivar” en la tabla de referencias el clúster que se denomina “NOISE” ya que la información que aporta, por la naturaleza del método de clustering usado, se considera irrelevante. Los puntos que “caen” en esta categoría deben interpretarse como ruido o atípicos.

Figura 7 — Gráficos de clústeres sin ruido

El sector “News by date ranges” enseña una tabla con la cantidad de documentos por grupo y por periodo de tiempo (“First” o “Second”). Complementariamente, muestra el cálculo de la cantidad total de éstos y la diferencia de un intervalo a otro, tanto en valor absoluto como en porcentaje. Se puede utilizar la lista desplegable “Select topics” para filtrar los temas deseados.

Figura 8 — Cantidad de noticias por clúster e intervalo de tiempo

El panel “Relevant words” devuelve para cada categoría y rango temporal 2 histogramas, en el primero se observan los 10 bi-gramas más relevantes de palabras que representan a un clúster (en la ventana de tiempo correspondiente) mientras que el segundo enseña los 10 uni-gramas de palabras más significativos. La relevancia de las frases o palabras se define a partir de la frecuencia de ellas en cada grupo ponderada por la medida TF-IDF.

El bi-grama global más relevante que se obtiene juntando los datos de los dos periodos analizados define el tema latente principal del clúster, o sea, el tópico. Éste es el texto que se coloca en la tabla de referencias. El tópico de interés se puede seleccionar en el menú desplegable “Choose topic reference name”.

Figura 9 — Histogramas de palabras relevantes

Puede ocurrir que un clúster no tenga noticias en un rango de fechas determinado, en ese caso, en la tabla de la sección “News numbers comparison” se observará en las columnas “Amount first data range” o “Amount second data range” el valor 0. Debido a que no habrá mensajes para extraer palabras relevantes no se podrán graficar los histogramas del intervalo y tampoco mostrar mensajes de muestras o descargarlos.

Figura 10 — Esquema de un clúster sin noticias en segundo intervalo de tiempo

En la sección “Sample news” se puede elegir una muestra de datos de un tópico para descargarla en formato .xlsx, o bien, previsualizar en pantalla con mayor detalle los artículos de noticias. Así, en “Download topic documents” se debe seleccionar una cantidad predefinida de documentos que se desea descargar en uno de los dos rangos de fechas establecidos. Cuando se elige un valor de muestra 5, 10, 25, 50, etc. se están eligiendo “n” mensajes más característicos del clúster, es decir, las “n” noticias cuya representación vectorial se encuentra más cercana al centroide del grupo.

Figura 11 — Opciones de descarga de documentos

Con el mismo criterio seguido en la descarga de datos se puede visualizar una muestra de noticias en le dashboard. La caja de selección “Select number of rows to show” de “Sample dataset” define el tamaño de la muestra y “Select data date” el rango temporal de preferencia. A su vez, se pueden filtrar los mensajes de la muestra que contengan las palabras establecidas en el área de “Lemmatized words filters”. Los documentos devueltos son los más cercanos al centroide del clúster, es decir, los más característicos del mismo.

Por ejemplo, si en “Select number of rows to show” se establece el valor 5 y en “Select data date” el valor “First data range” se muestra en el dashboard una tabla con los datos de los 5 artículos más representativos, del segundo intervalo de tiempo, pertenecientes al grupo designado en “Choose topic reference name”. Asimismo, en el tablero, se imprimen exclusivamente los textos de las noticias que se encuentran en la columna “text” de la mencionada tabla.

Figura 12 — Visualización de una muestra de documentos, tópico “ID 9: china daily”

Juntos con los textos “crudos” (originales) se visualizan los documentos lematizados y se resaltan algunas palabras con colores. Concretamente, se marcan en color rojo todas las palabras que aparecen dentro de los bi-gramas más relevantes en los histogramas (los 10 más importantes) y en verde los uni-gramas. En caso de que una palabra aparezca tanto a nivel de bi-grama como de uni-grama se colorea en verde. Asimismo, en “Lemmatized words filter” se pueden agregar una o varias palabras para destacar en los documentos lematizados; este resaltado tiene prioridad sobre los otros colores.

Figura 13 — Coloreado de mensajes de muestra lematizados, tópico “ID 0: north korea”

5. Flujo de trabajo

La base de datos utilizada contiene noticias desde el 19 de abril de 2016 hasta el 30 de marzo de 2017. La mayoría de los artículos se concentran en el último año.

Se propone comparar con la herramienta los artículos de noticias en inglés realizados en el primer bimestre de 2017 con los artículos del mes de marzo de ese año; se recupera de la base de datos la información de los siguientes intervalos temporales:

· First data range: 2017/01/01–2017/02/28

· Second data range: 2017/03/01–2017/01/30

Figura 14 — Periodos de análisis de ejemplo

Luego de procesar los datos cargados se accede a las opciones de agrupamiento donde se establece que los clústeres que se formen deben tener como mínimo 40 noticias. Se deja el valor del coeficiente de sensibilidad en 0,15 y las stop-words (palabras lematizadas) definidas por defecto (“to”, “i”, “able”, “the”, “billion”, “euro”).

Figura 15 — Parámetros iniciales de agrupamiento

En este ejemplo se formaron 21 clústeres, incluido el grupo “NOISE” el cual se debe descartar ya que se considera a los datos que lo constituyen como “ruido”, o bien, datos atípicos.

En el gráfico de tópicos se exhiben dos figuras que representan con colores los clústeres en cada ventana de tiempo. Mediante una técnica de procesamiento del lenguaje natural se intenta representar en un binomio de palabras el contexto general de las noticias que componen un grupo. Esta frase se utiliza en las referencias del gráfico para identificar semánticamente las aglomeraciones. Adicionalmente, se incorpora un ID único por tema ya que pueden repetirse los binomios.

Figura 16 — Grupos generados sin ruido (“NOISE”)

Al observar las figuras parece haber en algunos clústeres generados un desbalanceo entre la cantidad de artículos de los periodos elegidos. Sin embargo, no es tan intuitivo comparar visualmente si se mantiene la distribución de noticias en una categoría de un intervalo a otro o, por el contrario, hay alguna diferencia que puede ser interesante conocer.

Hay que tener en cuenta que los grupos se generan juntando los textos de ambos periodos de tiempo en un solo conjunto de datos, luego se grafican los resultados por separado. Lo que puede suceder es que una categoría se forme con documentos de un solo periodo, por ejemplo de “First data range”, entonces en la figura de “Second data range” no habrá ningún punto del tema.

En la tabla de la sección “News by date ranges” se muestra la cantidad de noticias total por clase y temporalidad, o sea, se cuantifican los mensajes de los dos intervalos de fechas que pertenecen a cada tópico. El número de documentos total siempre es igual o mayor al valor definido en “Minimun cluster size” (40).

Figura 17 — Tabla de cantidades de noticias por tópico y rango temporal

5.1. Análisis de un tópico

Se estudia el clúster creado “health care” en forma individual y se nota que hubo un aumento llamativo de un intervalo a otro (aumentó un 58% la cantidad de artículos en el mes de marzo). Primero, se debe evaluar si ello solamente corresponde a un desequilibrio natural debido al tamaño de las ventanas de fechas tomadas o efectivamente en el segundo rango temporal ocurrió algún evento destacado relacionado con la temática de “cuidado de la salud”.

Figura 18 — Tópico “health care”

En el histograma de bi-gramas del primer intervalo de fechas (enero-febrero de 2017) se observan a simple vista frases de las cuales no se puede deducir fácilmente si están relacionadas entre sí o incluso con el siguiente intervalo; en el segundo periodo se aprecian bi-gramas relacionados con los topicos “health” y “care”. A nivel de uni-gramas, se puede encontrar una conexión entre rangos de fechas con las palabras “republican”, “democrats”, “obamacare”, etc. Entonces, la primera hipótesis podría ser que en el mes de marzo de 2017 hubo un incremento de noticias relacionadas con el cuidado de la salud, en Estados Unidos, que involucra a republicanos y demócratas funcionarios (por ejemplo, senadores de ese país).

En la primera ventana temporal hay 1513 documentos y en la segunda 2142, es decir, una diferencia ligeramente superior al 30% en la distribución. Ese valor es menor al 58% (diferencia de noticias en el tópico “health care”) por lo cual se puede pensar que hubo un aumento significativo de noticias en el grupo de un intervalo de fechas a otro. La pregunta que surge es cuáles son los motivos que generan ese incremento.

Figura 19 — Histogramas del tópico “health care”

Desde el tópico se pueden extraer insights, por ejemplo, en el histograma de uni-gramas del segundo intervalo aparece la palabra relevante “obamacare”. Eso sugiere inmediatamente que el eje del tópico está relacionado con la “Ley del Cuidado de Salud a Bajo Precio” promulgada por el presidente Barack Obama en 2010. Por ejemplo, la palabra “obama” se menciona en 74 de los 103 mensajes asignados del grupo “health care” en la segunda ventana temporal designada, o sea, en el 72% de los artículos.

Figura 20 — Noticias con la palabra “obama” en “health care” en el segundo rango de fechas

En la sección “Sample documents” se toma una muestra de las 5 noticias más cercanos al centroide del clúster “health care” y se filtran aquellos que contengan las palabras “obama”.

Figura 21 — Primer documento de muestra del grupo “health care” en el segundo intervalo de fechas filtrado con la palabra “obama”

Los artículos de muestra hablan del fracaso del proyecto de ley de salud impulsado por el presidente Trump redactado para derogar y reemplazar “Obamacare”.

Se hace una nueva verificación reemplazando “obama” por ‘trump” en el campo “Lemmatized words filter”. En este caso se menciona la palabra asignada en 90 de los 103 mensajes asignados del grupo “health care” en la segunda ventana temporal designada, o sea, en el 87% de los textos.

Figura 22 — Noticias con la palabra “trump” en “health care” en el segundo rango de fechas

Investigando con mayor precisión se concluye que en marzo de 2017 el Partido Republicano de Estados Unidos retiró de la Cámara de Representantes este viernes el proyecto de ley impulsado por Donald Trump para derogar el Obamacare, la reforma sanitaria del expresidente Barack Obama. Siendo el presidente de la Cámara Paul Ryan quien aparece en el histograma de bi-gramas del segundo periodo.

En el histograma de bi-gramas del primer periodo, como se explicó, no se aprecia con claridad una temática definida. Una opción es incorporar nuevas stop-words en “Manual Stop Words List” para ir depurando las frases relevantes. Por ejemplo, se agregan las palabras “public” y “school” a la lista.

Figura 23 — Fases relevantes al agregar nuevas stop-words en el primer intervalo temporal

Ahora “confirmation hearing” pasa a ser un bi-grama importante. Si se filtran los mensajes del primer rango con la palabra “hearing” se llega a que 10 de 27 mensajes contienen la frase “hearing confirmation”, es decir, se está hablando sobre la reunión de confirmación de una persona para que ocupe un cargo público en el país, tal vez, el juez Gorsuch.

De esta forma, puede surgir la inquietud de por que se aglomeraron noticias referidas al obamacare con la audiencia que se realiza en Estados Unidos para designar a una persona a un trabajo público. Una opción es que el centro de todas estas noticias (en ambos rangos de fechas) es el expresidente Donald Trump, con el detalle de que el tema “health care” es el más abordado en el conjunto de artículos, principalmente en el segundo periodo designado.

Iterativamente se pueden agregar stop-words para ir depurando el modelado de temas, así como modificar los parámetros de configuración de clustering para tener grupos más específicos o, en cambio, más generales.

6. Consideraciones generales

Si se quiere reducir la cantidad de grupos creados se pueden incrementar los valores de “Minimun clúster size” o de “Sensitivity coefficient of number of clusters”. En contraste, si se desea “partir” algunos clústeres generados en más temas es necesario reducir el valor de uno de los parámetros o incluso el de ambos.

Puede suceder que en la tabla de referencias aparezcan categorías con la misma denominación. Por ejemplo, si surgen dos temas representados con la frase “north korea” significa que hay 2 categorías que tienen un contexto general relacionado con dicha frase, pero si se analizan los artículos de cada grupo con mayor detalle entre ellos se encontraran particularidades que los diferencian. Si se eligen otros parámetros de clustering es posible que los textos formen parte de una misma aglomeración.

Figura 24 — Clústeres con frase más relevante “devolución dinero”

Finalmente, se reitera que nuestra solución es agnóstica del contenido semántico y puede aplicarse a cualquier otro conjunto de datos de texto no estructurado, en cualquier idioma y con diferentes tamaños (textos grandes o breves). Ya hemos utilizado con éxito este enfoque para la extracción de insights de reclamos de turistas en español y portugués para la principal plataforma de viajes de Latam.

NaturalTech is a technology company with a specific goal: make computers understand natural language the way native speakers do.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store