Free Trial

Blog

Visiones e ideas de las mentes más brillantes en el campo del análisis.
Garabujo7
Alteryx
Alteryx

Bloques analíticos para Procesamiento de Lenguaje Natural

 

Identificación de tópicos

 

Esos son muchos datos sin estructura, pero no te preocupes.

 

 

 

 

Tomado de Giphy y creado con online-image-editorTomado de Giphy y creado con online-image-editor

 

 

 

Cuando te das cuenta de la amplitud y variedad de posibilidades que Alteryx te ofrece con la Minería de Texto.

 

Los siguientes 3 bloques analíticos tienen que ver más con el tema de procesamiento de lenguaje natural (NLP).

 

El primero que revisaremos será el proceso de identificación de tópicos para el que utilizaremos 3 bloques analíticos:

 

 

 

Garabujo7_1-1596836063179.png

 

  • Preprocesamiento de textos

 

  • Modelado de tópicos

 

  • Nube de palabras

 

 

 

Tomado de giphyTomado de giphy

 

 

Modelado de tópicos

 

Es un tipo de modelo estadístico que barre documentos e identifica patrones de uso de palabras y las agrupa en temas. Los modelos de tópicos ayudan a organizar y ofrecen información para comprender una gran colección de texto no estructurado, ayuda a los analistas a dar sentido a las colecciones de documentos (conocidos como corpus en el mundo del procesamiento de lenguaje natual) identificando temas y organizando los textos en grupos.

 

 

Para llevarlo a cabo el primer paso es:

 

Limpieza de datos previa

 

 

Antes de empezar es buena práctica hacer una limpieza del texto usando el bloque analítico de Limpieza de datos para eliminar los espacios en blanco al principio y al final, los números, signos de puntuación y cambiar todo el texto a minúsculas.

 

 

 

Garabujo7_3-1596836063614.png

 

Preprocesamiento de texto

 

 

Garabujo7_4-1596836063614.png

 

 

Este bloque analítico nos presenta varias opciones para preparar los datos antes de hacer la identificación de tópicos.

 

 

 

Garabujo7_5-1596836063617.png

 

 

El primer paso es escoger el idioma entre:

 

 

  • Inglés

 

  • Alemán

 

  • Español

 

  • Francés

 

  • Portugués

 

  • Italiano

 

 

El siguiente es el campo de texto que preprocesaremos.

 

 

 

Garabujo7_6-1596836063619.png

 

 

A continuación, seleccionamos si queremos aplicar lematización.

 

Lematizar

 

 

Lematizar es el proceso que estandariza el texto, convierte las palabras a su raíz para facilitar su agrupación y análisis si tenemos, por ejemplo:

 

Corriendo, corrí, corrimos, corrieron, corran, corramos. Si lematizamos ese verbo, quedaría como correr, en infinitivo.

 

Tokenización

 

 

Otro proceso importante que ocurre en el preprocesamiento es la tokenización, es decir agregarle símbolos individuales a cada componente del texto para poder procesarlo fácilmente.

El proceso tiene que ver con separar cada palabra en una lista de tokens para que el proceso de análisis de texto lo trate como elemento independiente cada palabra.

 

 

 

 

Garabujo7_7-1596836063625.png

 

 

 

Posteriormente aplicamos filtros a los dígitos y signos de puntuación.

 

 

 

Garabujo7_8-1596836063632.png

 

Palabras vacías

 

El último paso es remover las palabras vacías o stop words.

 

 

 

 

Garabujo7_9-1596836063653.png

 

 

 

Son palabras que se filtran antes de procesar el texto para su análisis pero, aunque estás se refieren a las palabras más comunes del lenguaje como las preposiciones y los pronombres que son frecuentes pero no aportan al significado del texto, sólo le aportan validez gramatical, no es posible filtrar todas ni todas las que se remueven necesariamente no tienen utilidad.

Debido a la complejidad del lenguaje, incluso hay palabras que pueden ser útiles como dependiendo del objetivo que se busca.

 

Si tomamos por ejemplo nombres de películas, podríamos filtrar Eso pero dejaríamos de fuera un título o si quitamos números podríamos dejar de considerar libros como 1984 de George Orwell por citar algunos.

Para eso se utiliza la librería SpaCy. Si una palabra se cuela en tu análisis quiere decir que no está incluida en la lista de palabras vacías de la librería, es ahí donde puedes agregarla manualmente para filtrarla. Si son varias las puedes separar con comas.

 

 

 

 

Garabujo7_10-1596836063656.png

 

 

 

Este proceso no dará un nuevo campo con el texto preprocesado y listo para utilizarlo en el modelado de tópicos.

 

 

Modelado de tópicos

 

 

 

Garabujo7_11-1596836063657.png

 

 

 

Para modelar o identificar temas dentro de documentos, utilizamos el algoritmo LDA (Latent Dirichlet Allocation).

 

Para hacerlo, básicamente crea grupos o clusters de palabras de acuerdo a los patrones de uso de palabras que tienen.

 

Es muy útil para organizar y aportar hallazgos para la comprensión de grandes cantidades de texto no estructurado y darles sentido a colecciones de documentos, identificando temas y organizando los textos en grupos.

 

Las opciones de configuración son las siguientes:

 

Comenzamos seleccionando el campo de texto que procesaremos y el número de tópicos que queremos generar. Típicamente este es un paso que requiere varias iteraciones y un proceso de prueba y error para encontrar el número óptimo de temas de acuerdo al objetivo que estamos buscando.

 

Requiere un proceso iterativo porque el proceso utiliza un modelo no supervisado y difuso, que hace más fácil comenzar a usarlo ya que no requiere entrenamiento pero que necesita interpretación de los tópicos por parte del usuario.

 

 

Garabujo7_12-1596836063661.png

 

 

Opciones de salida.

 

  • Gráfico interactivo

 

  • Resumen de relevancia de palabras

 

Más adelante las explicaré.

 

 

 

Garabujo7_13-1596836063662.png

 

 

 

A continuación, tenemos las opciones de diccionario. Aquí podemos escoger las palabras que queremos considerar para nuestro análisis.

 

 

  • Frecuencia mínima, en la imagen nos quedamos con las palabras que aparecen al menos en el 5% de los documentos

 

  • La frecuencia máxima específica el limite superior para incluir una palabra, en el caso de la imagen sólo consideraremos las que aparezcan en menos del 75% de los documentos

 

  • Máximo de palabras es para limitar la cantidad de palabras que usaremos para el análisis.

 

 

La recomendación cuando estamos comenzando es dejar los valores por omisión que tiene el bloque analítico para así obtener el mejor resultado.

 

 

 

Garabujo7_14-1596836063663.png

 

Y finalmente las opciones de LDA.

 

 

  • Alpha: Es la densidad de tópicos dentro de cada documento, si aumentamos el parámetro, reconocerá más tópicos y viceversa.

 

  • Eta: Representa la densidad de palabras que se requieren para crear un tópico, con un mayor valor aumentará la cantidad de palabras necesarias para identificar un tópico.

 

Aquí también la recomendación es mantener las opciones recomendadas para un resultado óptimo.


Resultados

 

Seleccionando la salida R (resultados), podemos ver el gráfico interactivo con los resultados.

 

 

 

 

Garabujo7_15-1596836063665.png

 

 

Gráfico interactivo

 

 

El gráfico interactivo tiene dos partes, un mapa con la distancia entre los tópicos, que nos muestra que tan similares son los temas que se identificaron, podemos ver si hay traslape en algunos términos si son lo suficientemente separados para nuestro análisis.

 

Eso quiere decir que los tópicos que están más cerca uno de otro, tienen más palabras en común.

Para graficarlo se usa componentes principales para reducir las dimensiones y poder visualizarlo en una gráfica bidimensional.

En la imagen tenemos un mapa con 3 tópicos y podemos ver que están claramente diferenciados entre sí, el tamaño del circulo representa la cantidad de palabras que contiene cada tópico.

 

Si seleccionamos un tópico, cambia de color y nos presenta las palabras que contiene en la parte izquierda de la pantalla.

 

 

Garabujo7_16-1596836063669.png

 

 

 

 

En la parte izquierda del reporte interactivo nos muestra las 30 palabras más relevantes para cada tópico, donde podemos evaluar el contenido de cada tópico y seleccionar las palabras que consideremos más convenientes para asignar como tópico para hacerlo más sencillo de consumir para los usuarios finales.

 

Las barras indican la qué tanto aparece una palabra dentro del total de documentos.

 

 

 

 

Garabujo7_17-1596836063674.png

 

 

 

Prominencia (saliency) es una métrica específica que se define al final de la visualización y se puede pensar como la métrica usada para identificar las palabras que sean más informativas o útiles para identificar tópicos. Una prominencia mayor indica que la palabra es más útil para identificar un tópico específico.

 

 

 

 

 

Garabujo7_18-1596836063677.png

 

 

 

 

Cuando se selecciona un tópico en el mapa de distancia entre temas, o se específica un tópico en el panel superior, la gráfica de barras cambia para mostrar las palabras más prominentes incluidas en el tópico seleccionado.

 

Una segunda barra más oscura se muestra encima de la frecuencia total de la palabra y muestra la frecuencia específica por tópico de palabras que pertenecen al tópico seleccionado. Si la barra oscura se sobrepone por completo a la barra clara, la palabra pertenece casi exclusivamente al tópico seleccionado.

 

 

 

 

Garabujo7_19-1596836063686.png

 

 

 

 

 

Cuando se selecciona una palabra en la gráfica de barras, los tópicos y probabilidades por cada tópico de esa palabra se muestran en el mapa de distancia entre tópicos, de esta forma puedes ver qué otros tópicos comparten esa palabra.

 

Por ejemplo, la palabra atender aparece abajo en los tres temas.

 

 

 

 

Garabujo7_20-1596836063701.png

 

 

 

 

Mientras que la palabra recordar a continuación solo aparece en el tópico 1.

 

 

 

 

Garabujo7_21-1596836063708.png

 

 

 

 

Esto quiere decir que podemos usar las palabras que tienen mayor frecuencia dentro de cada tópico para etiquetarlo, como en caso anterior, el tópico 3 sería Recordar/Verificar.

 

Si ajustamos la barra con la métrica de relevancia, nos mostrará los términos que sean potencialmente más raros y exclusivos para el tópico seleccionado.

 

 

 

 

Garabujo7_22-1596836063714.png

 

 

 

 

Resumen de palabras por relevancia

 

Este resumen es una versión con los datos de la visualización, nos devuelve dos métricas: relevancia (relevance) y prominencia (saliency).

 

Prominencia

 

Nos ayuda a identificar las palabras que son más informativas para identificar tópicos dentro de los documentos. Un valor de prominencia mayor indica que una palabra es más útil para identificar un tópico específico.

 

La prominencia es siempre un valor positivo y no tiene un máximo. Un valor de 0 nos indica que una palabra está presente en todos los tópicos. La prominencia está diseñada para ver palabras específicas en relación a la totalidad de documentos que estamos analizando.

 

Relevancia

 

Es una métrica usada para ordenar palabras dentro de los tópicos. Nos ayuda a identificar las palabras más relevantes para cada tópico, es un reflejo del nivel en el que una palabra pertenece a un tópico. Entre mayor sea el valor para un tópico dado, esa palabra será más exclusiva para ese tópico.

 

Ambas métricas muestran valores relativos que podemos utilizar para describir y entender un tópico específico.

 

 

 

 

Garabujo7_23-1596836063716.png

 

 

Asignar etiquetas a los tópicos

 

 

Para facilitar el proceso de asignar etiquetas a los tópicos podemos seleccionar la salida R del modelado de tópicos, ejecutarla y agregarle un bloque analítico de formula a continuación para poder tomar el tópico al que pertenece cada palabra.

 

 

 

 

Garabujo7_24-1596836063717.png

 

 

Garabujo7_25-1596836063718.png

 

 

Garabujo7_26-1596836063720.png

 

 

 

 

La formula MaxIDX nos dará como resultado el número máximo entre los 3 campos, para que sea un entero el resultado, al final le sumamos 1.

 

De esta forma tendremos asignado un tópico para cada palabra, junto con su prominencia.

 

 

 

Garabujo7_27-1596836063726.png

 

 

 

 

El siguiente paso es agregar un bloque analítico de muestreo que nos permita seleccionar solo las primeras N palabras de cada tópico que creamos.

 

 

 

Garabujo7_28-1596836063728.png

 

 

Garabujo7_29-1596836063735.png

 

 

 

 

Y así obtenemos las 3 palabras más prominentes y relevantes.

 

 

 

 

Garabujo7_30-1596836063739.png

 

 

 

 

El siguiente paso es crear las etiquetas basados en los términos. Para hacerlo de forma automatizada podemos crear un sumarizado que concatene las 3 palabras para que sirvan de etiqueta para el tópico.

 

Usando un bloque analítico de sumarizado lo haremos.

 

 

 

 

Garabujo7_31-1596836063740.png

 

 

 

Utilizando un bloque de buscar y reemplazar podemos cambiar los números de tópico por etiquetas que tengan más sentido para los usuarios de negocio que consuman este análisis.

 

 

 

 

Garabujo7_32-1596836063741.png

 

 

 

Garabujo7_33-1596836063746.png

 

 

 

Garabujo7_34-1596836063751.png

 

 

 

Ahora ya tenemos cada documento etiquetado con el tópico que le pertenece. Con eso podemos sumarizar los tópicos para contar cuántos documentos pertenecen a cada categoría.

 

 

 

Garabujo7_35-1596836063751.png

 

Visualizar cada tema en una nube de palabras personalizada

 

 

Ahora para categorizar cada documento dentro de su tópico, haremos un proceso similar.


Tomando la salida D del modelado de tópicos, le agregamos un bloque de formula.

 

 

 

 

Garabujo7_36-1596836063753.png

 

 

 

Aplicamos la formula para obtener el tópico que tenga la mayor relevancia para cada documento.

 

 

 

 

Garabujo7_37-1596836063757.png

 

 

 

Filtramos cada tópico para poder visualizarlo de forma independiente.

 

 

 

 

Garabujo7_38-1596836063758.png

 

 

 

Utilizando el bloque analítico nube palabras, configuramos la visualización.

 

 

 

 

Garabujo7_39-1596836063760.png

 

 

 

Primero seleccionamos el campo que queremos visualizar. Si queremos personalizar la nube de palabras, seleccionamos la opción correspondiente.

 

 

 

 

Garabujo7_40-1596836063764.png

 

 

 

Para personalizar la nube tenemos varias posibilidades.

 

Podemos elegir un color para el fondo.

 

Seleccionar el máximo de palabras que tomará.

 

Cambiar el tamaño.

 

Y enmascararla, eso quiere decir que podemos una imagen como un logotipo para que la nube se muestre con esa forma.

 

 

 

 

Garabujo7_41-1596836063769.png

 

 

 

Para que tome una imagen como plantilla tenemos que agregar un bloque de entrada BLOB (binary large object) de la categoría desarrollador y seleccionar la ruta donde se encuentra el archivo.

 

 

 

 

Garabujo7_42-1596836063770.png

 

 

 

 

Garabujo7_43-1596836063771.png

 

 

Una vez hecho esto, en la configuración de la nube de palabras nos aparecerá la opción de Blob en la opción de enmascarar. Una vez ejecutado el flujo, la nube de palabras se presenta.

 

En este caso yo utilicé una imagen de twitter para darle forma al reporte.

 

 

 

Garabujo7_44-1596836063784.png

 

 

 

 

La imagen que utilicé como plantilla es la siguiente.

 

 

 

Garabujo7_45-1596836063786.png

 

 

 

 

De esta forma es más sencillo de consumir el análisis de tópicos y hacerlo de forma automática para aprovechar todo el potencial de la plataforma para Automatización de Procesos Analíticos.

 

Espero este artículo sea interesante y de utilidad para ustedes.

 

Ahora, bailemos un poco.

 

 

 

 

Tomado de GiphyTomado de Giphy

 

 

 

 

 

Etiquetas