Ankur Tomar

Follow

25 de noviembre, 2018 – 9 min read

Créditos: Christine Doig

Hola a todos. Ha pasado mucho tiempo desde que escribí mi último blog sobre los diferentes tipos de sistemas de recomendación. Esta vez, voy a escribir sobre Topic Modelling.

Hay numerosas fuentes por ahí donde se puede aprender lo que es Topic Modelling, pero creo que, la mayoría de ellos son algo técnico y requiere un buen conocimiento de las matemáticas y otras técnicas como las cadenas de Markov. En este artículo, voy a tratar de explicar la idea detrás de Topic Modelling de una manera muy intuitiva con un mínimo de matemáticas y tecnicismos. Escribiré este artículo en dos partes. En la primera parte, voy a tratar de explicar lo que es el modelado de temas y en la segunda parte, voy a proporcionar un tutorial de python de cómo hacer el modelado de temas en el conjunto de datos del mundo real.

Antes de empezar, quiero reconocer que este artículo está fuertemente inspirado en la conferencia de mi análisis de datos exploratorios Prof. Edward McFowland. Edward McFowland, el curso de Coursera sobre Procesamiento del Lenguaje Natural de la Escuela Superior de Economía y la explicación de Jordan Boyd-Graber sobre el muestreo de Gibbs.

¿Qué es el modelado de temas?

El modelado de temas es una rama del procesamiento del lenguaje natural no supervisado que se utiliza para representar un documento de texto con la ayuda de varios temas, que pueden explicar mejor la información subyacente en un documento en particular. Se puede pensar en términos de clustering, pero con una diferencia. Ahora, en lugar de características numéricas, tenemos una colección de palabras que queremos agrupar de tal manera que cada grupo representa un tema en un documento.

¿Por qué necesitamos el modelado de temas?

Bien, ahora surge la pregunta ¿por qué necesitamos el modelado de temas? Si miramos a nuestro alrededor, podemos ver una enorme cantidad de datos textuales a nuestro alrededor en un formato no estructurado en forma de artículos de noticias, documentos de investigación, mensajes de medios sociales, etc. y necesitamos una manera de entender, organizar y etiquetar estos datos para tomar decisiones informadas. El modelado de temas se utiliza en varias aplicaciones, como la búsqueda de preguntas en stack overflow que son similares entre sí, la agregación y el análisis de flujos de noticias, los sistemas de recomendación, etc. Todos estos se centran en la búsqueda de la estructura temática oculta en el texto, ya que se cree que cada texto que escribimos ya sea un tweet, un post o un trabajo de investigación se compone de temas como los deportes, la física, la industria aeroespacial, etc.

¿Cómo hacer el modelado de temas?

Actualmente, hay muchas maneras de hacer el modelado de temas, pero en este post, vamos a discutir un enfoque de modelado probabilístico llamado Latent Dirichlet Allocation (LDA) desarrollado por el profesor David M. Blei en 2003. Se trata de una extensión del Análisis Semántico Latente Probabilístico (PLSA), desarrollado en 1999 por Thomas Hoffman, con una diferencia mínima en cuanto al tratamiento de la distribución por documento. Así que vamos a entrar directamente en cómo funciona el LDA.

Latent Dirichlet Allocation

Empecemos por entender el significado de cada palabra del título, ya que creo que contiene todo lo que necesitamos saber para entender cómo funciona el LDA.

Latent: Se refiere a todo aquello que no conocemos a priori y está oculto en los datos. Aquí se desconocen los temas o tópicos de los que consta el documento, pero se cree que están presentes ya que el texto se genera en base a esos temas.

Dirichlet: Es una «distribución de distribuciones». Sí, has leído bien. Pero, ¿qué significa esto? Pensemos en ello con la ayuda de un ejemplo. Supongamos que hay una máquina que produce dados y podemos controlar si la máquina producirá siempre un dado con el mismo peso para todas las caras, o habrá algún sesgo para algunas caras. Entonces, la máquina que produce dados es una distribución, ya que produce dados de diferentes tipos. Además, sabemos que el propio dado es una distribución, ya que obtenemos múltiples valores cuando lanzamos un dado. Esto es lo que significa ser una distribución de distribuciones y esto es lo que es Dirichlet. Aquí, en el contexto del modelado de temas, el Dirichlet es la distribución de temas en los documentos y la distribución de palabras en el tema. Puede que no esté muy claro en este momento, pero está bien ya que lo veremos con más detalle dentro de un rato.

Asignación: Esto significa que una vez que tenemos a Dirichlet, asignaremos temas a los documentos y palabras del documento a los temas.

Eso es todo. Esto es lo que es el LDA en pocas palabras. Ahora vamos a entender cómo funciona esto en el modelado de temas.

Sólo para recapitular, lo que dice LDA es que cada palabra de cada documento proviene de un tema y el tema se selecciona de una distribución por documento sobre los temas. Así que tenemos dos matrices:

1. ϴtd = P(t|d) que es la distribución de probabilidad de los temas en los documentos

2. Фwt = P(w|t) que es la distribución de probabilidad de las palabras en los temas

Y, podemos decir que la probabilidad de una palabra dado el documento i.e. P(w|d) es igual a:

donde T es el número total de temas. Además, supongamos que hay un número W de palabras en nuestro vocabulario para todos los documentos.

Si asumimos la independencia condicional, podemos decir que

P(w|t,d) = P(w|t)

Y por tanto P(w|d) es igual a:

que es el producto punto de ϴtd y Фwt para cada tema t.

Esto se puede representar en forma de matriz así:

Crédito: Escuela Superior de Economía

Entonces, viendo esto podemos pensar que el LDA es similar al de la factorización matricial o SVD, donde descomponemos la matriz de distribución de probabilidad de la palabra en el documento en dos matrices que consisten en la distribución del tema en un documento y la distribución de las palabras en un tema.

Por tanto, lo que obtendremos es, por ejemplo, esto:

Crédito: David M. Blei

Y para volver a nuestro ejemplo de los dados, podemos decir que cada palabra en la distribución de palabras en un tema es similar a una cara del dado, y tenemos el parámetro de Dirichlet para controlar si todas las palabras tienen la misma probabilidad en un tema o ese tema tendrá un sesgo extremo hacia algunas palabras. La misma intuición es para la distribución de los temas en un documento.

Bien. Ahora viene la parte importante. ¿Cómo aprendemos los pesos de estas dos matrices?

Para empezar, asignemos aleatoriamente los pesos a ambas matrices y supongamos que nuestros datos se generan según los siguientes pasos:

1. Elija al azar un tema de la distribución de temas en un documento basado en sus pesos asignados. En el ejemplo anterior, digamos que elegimos el tema rosa

2. A continuación, basándonos en la distribución de palabras del tema elegido, seleccionamos una palabra al azar y la colocamos en el documento

3. Repetimos este paso para todo el documento

En este proceso, si nuestra suposición de los pesos es errónea, entonces los datos reales que observemos serán muy poco probables bajo nuestros pesos supuestos y el proceso de generación de datos. Por ejemplo, digamos que tenemos el documento D1 que consiste en el siguiente texto:

«Qualcomm® Adreno™ 630 Visual Processing Subsystem featuring room-scale 6DoF with SLAM, Adreno Foveation»

y digamos que asignamos pesos altos al tema T1 que tiene pesos altos para palabras como Spoon, Plates, Onions etc. entonces veremos que dada nuestra suposición de cómo se generan los datos, es muy poco probable que T1 pertenezca a D1 o que estas palabras pertenezcan a T1. Por lo tanto, lo que estamos haciendo es intentar maximizar la probabilidad de nuestros datos dadas estas dos matrices.

Para identificar los pesos correctos, utilizaremos un algoritmo llamado muestreo de Gibbs. Entendamos ahora qué es el muestreo de Gibbs y cómo funciona en el LDA.

El muestreo de Gibbs

El muestreo de Gibbs es un algoritmo para muestrear sucesivamente distribuciones condicionales de las variables, cuya distribución sobre los estados converge a la distribución verdadera a largo plazo. Se trata de un concepto algo abstracto y requiere una buena comprensión de las cadenas de Markov de Monte Carlo y del teorema de Bayes. Estos conceptos y las matemáticas que los sustentan son bastante complejos y están fuera del alcance de este blog. Aquí, voy a tratar de dar una intuición sobre cómo Gibbs Sampling trabajo para identificar los temas en los documentos.

Como he mencionado anteriormente, para empezar, vamos a suponer que sabemos ϴ y Ф matrices. Ahora lo que haremos es, cambiar lentamente estas matrices y llegar a una respuesta que maximice la probabilidad de los datos que tenemos. Haremos esto palabra por palabra cambiando la asignación del tema de una palabra. Asumiremos que no conocemos la asignación de tema de la palabra dada pero conocemos la asignación de todas las otras palabras en el texto y trataremos de inferir qué tema será asignado a esta palabra.

Si miramos esto de manera matemática, lo que estamos haciendo es tratar de encontrar la distribución de probabilidad condicional de la asignación de tema de una sola palabra condicionada al resto de las asignaciones de tema. Ignorando todos los cálculos matemáticos, lo que obtendremos es una ecuación de probabilidad condicional que se parece a esto para una sola palabra w en el documento d que pertenece al tema k:

Crédito: Jordan Boyd-Graber

donde:

n(d,k): Número de veces que el documento d utiliza el tema k

v(k,w): Número de veces que el tema k utiliza la palabra dada

αk: Parámetro de Dirichlet para la distribución documento-tema

λw: Parámetro de Dirichlet para la distribución tema-palabra

Hay dos partes dos esta ecuación. La primera parte nos dice cuánto está presente cada tema en un documento y la segunda parte nos dice cuánto le gusta a cada tema una palabra. Obsérvese que, para cada palabra, obtendremos un vector de probabilidades que explicará la probabilidad de que esta palabra pertenezca a cada uno de los temas. En la ecuación anterior, se puede ver que los parámetros de Dirichlet también actúan como parámetros de suavización cuando n(d,k) o v(k,w) es cero, lo que significa que todavía habrá alguna posibilidad de que la palabra elija un tema en adelante.

Vamos a ver un ejemplo ahora:

Para empezar, supongamos que tenemos un documento con alguna asignación de temas de palabras al azar, por ejemplo, como se muestra a continuación:

También tenemos nuestra matriz de conteo v(k,w) como se muestra a continuación:

Ahora vamos a cambiar la asignación de la palabra mundo en el documento.

  • Primero, reduciremos la cuenta de mundo en el tema 1 de 28 a 27 ya que no sabemos a qué tema pertenece mundo.
  • En segundo lugar vamos a representar la matriz n(d,k) de la siguiente manera para mostrar cuánto un documento utiliza cada tema

– En tercer lugar, vamos a representar v(k,w) de la siguiente manera para mostrar cuántas veces se asigna cada tema a esta palabra

  • Cuarto, multiplicaremos estas dos matrices para obtener nuestras probabilidades condicionales

  • Por último, elegiremos al azar cualquiera de los temas y asignaremos ese tema al mundo y repetiremos estos pasos para todas las demás palabras también. Intuitivamente, el tema con mayor probabilidad condicional debe ser seleccionado, pero como podemos ver otros temas también tienen alguna posibilidad de ser seleccionados

Eso es todo. Esto es lo que el algoritmo de muestreo de Gibbs está haciendo bajo el capó. Aunque nos hemos saltado algunos detalles como el ajuste de los hiperparámetros, pero desde una perspectiva intuitiva, así es como funciona el muestreo de Gibbs para el modelado de temas.

Así que esto es todo para la teoría de la Asignación Latente de Dirichlet. Espero que esto haya sido útil para entender qué es el modelado de temas y cómo usamos LDA con Gibbs para el modelado de temas. En el próximo artículo, publicaré la implementación de LDA usando Python.

¡Gracias!

admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

lg