Topic modeling: ¿qué, cómo, cuándo?

Topic modeling es una herramienta de análisis textual proveniente de la rama informática de Minería de datos que desde hace algunos años está cogiendo fuerza y atención en los círculos internacionales de Humanidades Digitales. En concreto en la cátedra de Filología Computacional de Würzburg, donde trabajo, topic modeling es ahora mismo el método más utilizado e investigado por encima de la estilometría o el análisis de rasgos lingüísticos provenientes de herramientas de PLN. Creo que también se utilizará cada vez más en la investigación de textos en español, así que he pensado que podría escribir una breve introducción a topic modeling explicando algunas ideas, artículos, herramientas e implementaciones. Muchas de las ideas o proyectos que aquí menciono las conozco por el trabajo del grupo de investigación CLiGS dirigido por Christof Schöch, y por el seminario de semántica distribucional que actualmente está llevando Fotis Jannidis.

En el principio fueron las colocaciones…

Uno de los frutos más importantes de la lingüística de corpus es el desarrollo del concepto de colocación. No solamente se ha utilizado ampliamente en áreas como la lexicografía o la enseñanza de segundas lenguas. Su investigación ha conseguido separemos dos conceptos diferentes: n-grams (grupos de palabras que coaparecen seguidas) y coocurrencias (palabras que coaparecen a una cierta distancia). Mientras que abrió la puerta es un trigrama y una colocación (nos encontramos esas tres palabras exactamente así en textos), puerta y casa tienden a coocurrir juntas sin un orden exacto estable:

Coocurrencias entre casa y puerta

Coocurrencias entre casa y puerta

Topic modeling: la madre de todas las colocaciones

Puerta coocurre con abrir, casa, cerrar, principal, calleCasa coocurre a su vez con tercera, puerta, calle, blancaVentana coocurre con abrir, cerrar, calle, cuarto… Es decir, puerta, casa y ventana comparten coocurrencias entre ellas, aunque no comparten todas sus coocurrencias. Y esas tres palabras comparten entre sí más coocurrencias que las compartirán con palabras como pobreza, ballena o cataplasma. Imaginemos que consiguiésemos:

  • ir haciendo listas de con qué palabras coocurre cada palabra
  • que esas listas las fuésemos comparando entre sí
  • que fuésemos agrupando aquellas palabras que tienen coocurrencias en común

Eso es básicamente (y explicado de manera muy sencilla e intuitiva) el objetivo de topic modeling. La definición de topic modeling como madre de todas las colocaciones no es mía, es un modificación de la frase de Jockers: «topic models are, to use a familiar idiom, the mother of all collocation tools» (Macroanalysis, p123).

A partir solo de texto (sin utilizar diccionarios, otros corpus o representaciones semánticas) topic modeling usa complejos modelos estadísticos para reconstruir temas, o mejor dicho, topics. El resultado es realmente impresionante. En CLiGS presentamos resultados sobre las colecciones de novelas en español, donde recibimos algunos de los siguientes topics:

Topic enfermedad

Topic enfermedad

Topic escuela

Topic escuela

Es bastante impresionante que una maquina que no sabe español consiga sacar las relaciones que hay entre esas palabras a partir de pura distribución.

David Blei y LDA

El autor más influyente sobre topic modeling es sin duda David Blei, quien en 2011 propuso su modelo sobre topic modeling llamado latent Dirichlet allocation o LDA. Desde entonces este modelo es el más utilizado y la siguiente imagen es utilizada en casi cualquier presentación sobre topic modeling:

Imagen obligatoria sobre Topic Modeling que tenía que mencionar

Imagen obligatoria sobre Topic Modeling que tenía que mencionar

En el artículo donde Blei presenta LDA define topic como «a distribution over a fixed vocabulary» y su punto de partida es intentar recrear de manera inversa el modelo teórico por el que los textos se generan. Según él, los autores tienen a su disposición un conjunto delimitado y cerrado de temas o topics (en la imagen superior, las listas de palabras con fondos de diferentes colores), cada uno de esos topics contiene palabras (algunas más importantes para el topic, otras menos), y el autor va sacando palabras de los diferentes topics para escribir su texto (en la parte derecha de la imagen superior, algunas palabras tienen fondos de diferentes colores señalando su pertenencia al topic). Para rehacer de manera inversa ese proceso generativo hipotético, Blei realiza los siguientes pasos teóricos:

Pasos teóricos de  LDA

Pasos para realizar LDA

Como se puede observar la palabra randomly se repite en tres de los cuatro puntos. Como podemos esperar, esto hace que cada vez que utilizamos topic modeling sobre un corpus, los resultados muestren cierta variación.

Quizás ahora mismo estés pensando: 1) los textos no se generan así; 2) no entiendo eso de «a distribution over a fixed vocabulary»; 3) ¿cómo puede ser que la mayoría de los pasos sean parcialmente random? Si estás pensando eso, ¡enhorabuena!, es el momento de maravillarte de que un método tan ilógico y oscuro funcione tan bien como para extraer que profesor, maestro, libro y escuela están relacionados.

Mallet: la implementación de topic modeling

Que un informático tenga una idea o incluso lo implemente para sí mismo, no quiere decir que el resto de los mortales pueda utilizarlo. Tengamos en cuenta que la matemática detrás de topic modeling hace que la estilometría (que ya de por sí es suficientemente complicada) parezca contar con los deditos. El software más utilizado actualmente es Mallet, diseñado y mantenido por Andrew McCallum.

¿Cómo de difícil es utilizar Mallet? Antes de responderlo, tenemos que llegar al punto donde podemos realmente utilizar Mallet. Porque para que topic modeling funcione necesitas una cantidad relativamente grande de textos: Digamos un par de millones de palabras. No solamente eso, si tus textos son largos (como nuestras novelas), necesitas trocearlos en secciones de digamos un par de páginas (si tu corpus es de cartas, artículos de investigación o periodístico probablemente tus textos ya tienen la longitud correcta). Es decir, en realidad necesitas un corpus de un par de decenas de miles de textos no muy largos. Una vez los tienes, necesitas lematizarlos y filtrar todo aquello que no sean lemas de nombres comunes. Una posible fuente de textos suficientemente grande y ya lematizada es la Textbox de CLiGS, con textos en español y francés, colección que todavía necesitarías fragmentar.

¿Todavía te quedan ganas de utilizar Mallet? ¡Hazlo, porque en realidad es sencillo! La instalación no debería ser demasiado complicada, el programa está muy testado y bien documentado. Una vez instalado necesitas seguir estos pasos en una interfaz de línea de comandos: en primer lugar, importar el corpus:

importar datos en Mallet

Importar datos en Mallet

Y en segundo lugar, crear el topic modeling, definiendo la cantidad de topics que queremos (en el ejemplo: 100):

Crear topic modeling

Crear topic modeling

Probablemente, además de esos argumentos quieres utilizar también los párametros –output-doc-topics y –output-topic-keys. Este último parámetro aporta una tabla csv en la que cada fila es un topic diferente y en cuya tercera columna aparecen las palabras con más importancia para ese topic. Aplicando topic modeling a mi actual colección de novelas de la Edad de Plata, algunos de los topics resultantes son:

algunos topics de mi colección de novelas

Algunos topics de la colección de novelas de la Edad de Plata

Como hablantes podemos reconocer ciertos temas en algunos topics: el 0 sería descripciones de espacios internos; el 1 sería escenas románticas; 5 sería descripciones de cuerpo; el 6 sería vida y más allá; el 7 sería la iglesia en ambiente rural… Pero hay otros que no sabemos definir tan bien: ¿cuál es el tema del 4: amigo cosa idea caso razón?

¿Topic = Tema?

Que un conjunto de palabras tiendan a coaparecer entre ellas no significa que compartan un tema semántico. En artículos de investigación, expresiones que ayudan a estructurar el texto (en primer lugar, en segundo lugar, posteriormente, finalmente…) tenderán a coaparecer sin que compartan un tema semántico, sino más bien una función pragmática o textual. En novelas con mucho diálogo palabras como dijo, respondió, añadió, preguntó tenderán a coaparecer y de nuevo no comparten estrictamente un tema, sino que estructuran la mezcla de texto narrativo y diálogo. En realidad al preprocesar el texto y coger solamente los sustantivos hemos intentado eliminar ese tipo de elementos y quedarnos solamente con los temas. Pero creo que cada investigador que ha utilizado topic modeling sabe que tienden a aparecer una cantidad de topics nada despreciable que uno no sabe qué hacer con ellos (ej. Jockers, Macroanalaysis, p 128). En algunos casos se ha conseguido ver claramente que la relación entre las palabras de un topic no tiene nada que ver con el tema: Borja Navarro Colorado ha aplicado topic modeling a una colección de 5000 sonetos en español y algunos de los topics son palabras que riman entre sí: boca loca toca poca provoca. En ese caso claramente no hay semántica, hay estructura.

Creo que en la comunidad que utiliza topic modeling es compartido que los topics no siempre son temáticos, pero son principalmente temáticos y que, tomando decisiones antes y después de efectuar topic modeling, puede utilizarse como una aproximación semántica a grandes colecciones de texto. Desde luego llamar al método topic modeling lleva implícito que la interpretación de esos grupos de palabras debe ser semántica, una buena estrategia de márketing del método pero injustificada científicamente en mi opinión. Quizás un término que no lleve implícito su interpretación, como clusters de coocurrencias, describiese mejor lo que es. Por supuesto la palabra topic es más sexy que cluster de coocurrencia. Pero, oye, si estamos acostumbrados a utilizar palabras como corpus, ngrams o kwics, ¿porqué nos importa que un concepto sea sexy?

Lingüística y semántica

Consejos lingüísticos sobre semántica

El problema por supuesto es que evaluar topic modeling es complicadísimo:

  1. necesitas una cantidad de textos que no puedes leer ni de los que puedes tener una idea general
  2. los textos los fragmentas y filtras lingüísticamente resultando una representación textual a la que no estás acostumbrado
  3. eliges los valores de parámetros cuyo efecto no sabes predecir
  4. utilizas un complejo modelo estadístico cuya idea intuitiva es algo ilógica, cuya definición técnica no te dice nada y cuyos pasos matemáticos concretos no entiendes
  5. el método escupe una enorme lista de topics y de palabras que te es difícil de aprehender (y que es algo diferente cada vez que lo utilizas)
  6. y eso debes intentar ponerlo en relación con temas, el concepto más amplio de la rama más oscura de la lingüística: la semántica

Aplicaciones de topic modeling

Después de tanta crítica, vamos a ver algunos ejemplos donde la aplicación de topic modeling a grandes corpus permite la navegación o observar relaciones que seríamos incapaces de observar. Ya he mencionado el trabajo de Borja Navarro Colorado y su aplicación de topic modeling a sonetos en español. Aquí algunos topics presentes en los sonetos:

Topics en sonetos en español

Topics en sonetos en español

También he mencionado anteriormente el trabajo que el grupo CLiGS presentó en la conferencia germana de DH sobre el desarrollo de topics en novelas para distinguir géneros literarios. En la imagen podéis ver cómo algunos topics como los que describen ropa, edificiones o que tratan el tema de la escuela son más importantes al principio de la novela que al final:

Desarrollo de topics en novelas españolas

Desarrollo de topics en novelas españolas

Signs es una revista feminista que ha recolectado sus cuarenta años de publicaciones en un corpus sobre el que han aplicado topic modeling y posteriormente han realizado una maravillosa interfaz web que permite la visualización y navegación por las diferentes facetas de los datos:

Topic Modeling de la revista Signs

Topic Modeling de la revista Signs

Con posibilidades más limitadas de navegación y visualización, también han aplicado topic modeling a la revista Vogue. El eje horizontal muestra los años transcurridos, con el fondo de diferentes colores según el editor. En la imagen aparece el desarrollo temporal del tema comida en Vogue:

Topic comida en Vogue

Topic comida en Vogue

Finalmente, Micki Kaufman ha aplicado diferentes técnicas de análisis textual, entre ellas topic modeling, sobre un archivo sobre las conversaciones telefónicas de Henry Kissinger:

Telcons – Stacked Bar Graph

Telcons – Stacked Bar Graph

Complejo con futuro

En mi opinión hay dos aspectos que dificultan el uso de topic modeling: por un lado la dificultad técnica de ser capaz de tener los textos y los conocimientos de programación necesarios para aplicarlo en las HD; por otro lado, la dificultad de entender el modelo teórico y su evaluación semántica.

Ambas dificultades no impiden que los resultados sean espectaculares y que sea una manera de condensar información de colecciones de textos gigantescas. Es posible que en el futuro catálogos (bibliotecas, librerías, Netflix…), medios de prensa o buscadores usen topics para indexar o filtrar búsquedas. Hay terreno industrial que explotar. Y el campo de investigación de HD en español está por sembrar.

3 Responses to “Topic modeling: ¿qué, cómo, cuándo?”

  1. Inda

    Estoy trabajando con Mallet sobre un corpus de seciones del parlamento israeli. Quiero analizar los topicos agrupados en categorias mas amplias. Por ejemplo «Educacion» incluiria tres topicos: educacion primaria, educacion universitaria y el sistema educativo.
    Como es la mejor manera de agrupar distintos topicos en uno?
    Otra pregunta cuando hay topicos no semanticos se pueden obviar y simplemente eliminarlos?
    Muchas Gracias

    Responder

Comenta

  • (will not be published)

XHTML: Puedes utilizar estos tags para que tu comentario tenga estilos o hipervínculos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>