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: