De ciencia y música: procesamiento del lenguaje natural
Martín Elías Costa, nuestro investigador de datos y doctor en Física, nos cuenta a través de temas de rock nacional, qué es el procesamiento del lenguaje natural, una técnica que usamos en Datos Argentina.
Nos acostumbramos. Primero nos pareció normal que una computadora nos corrija alguna que otra falta de ortografía en un texto. Fue sutil. Apenas un subrayado rojo ondulando debajo del término que no se corresponde con la versión estándar, definida por la Real Academia Española. Después nos pareció normal que los buscadores empezaran a ser cada vez más precisos en respuesta a nuestros pedidos y comenzaron a notar diferencias en el significado de la palabra banco, según se use en frases como “los horarios del banco” o “comprar banco de madera”. Casi ni notamos cuando empezaron a sugerirnos qué era lo que realmente queríamos buscar (y a adivinar correctamente). No nos dimos cuenta y un día nos despertamos en un mundo en el que las PC’s nos oyen, nos transcriben, nos leen, nos corrigen, nos traducen, nos interpretan, nos sugieren y nosotros apenas si nos damos por enterados.
¿Cómo pasó esto? Fue el resultado del trabajo constante de grupos de investigadores de ciencias básicas y aplicadas, en la Argentina y alrededor de todo el mundo; lingüistas, científicos de la computación y matemáticos que imaginan y crean algoritmos, programas de computadora, cada vez más potentes a la hora de manejar el lenguaje.
Vamos a dar una pequeña muestra del tipo de ideas con las que ellos encaran estos problemas. Y vamos a navegar un poco las bases de las herramientas que usamos en proyectos concretos del equipo de Datos Argentina.
¿De qué habla esta canción?
Hay infinitos ángulos desde los que se puede estudiar el procesamiento del lenguaje con una computadora. Por ejemplo podríamos concentrarnos en la gramática; es decir, en las reglas que nos permiten ir apilando los bloques básicos del lenguaje para ir formando estructuras más y más complejas. O en la fonética, permitiéndole a una computadora trabajar con los sonidos de una lengua. O en un montón de cosas más.
Concentrémonos en la semántica: vamos a estudiar el significado. Y vamos a tratar de aplicarlo a un problema bien concreto. ¿Cómo podemos saber si dos textos hablan de lo mismo? ¿O de cosas parecidas? ¿O de temas completamente distintos? Para eso tendríamos que encontrar alguna manera de hacer que la computadora pueda compararlos.
Teniendo en cuenta que sus circuitos trabajan esencialmente con números, parece razonable tratar de buscar la forma de convertir un texto en números. De esta forma el procesador de nuestra máquina puede hacer lo que sabe mejor: sumar, restar y comparar. Quizá lo primero que se nos venga a la cabeza cuando pensamos en convertir cosas en números es contar. Es una buena intuición, pero ¿contar qué? ¿Letras? ¿Palabras? ¿Frases enteras? En otras palabras, ¿cuál es el nivel más adecuado para capturar mejor el sentido detrás del texto?
Una cuestión de zoom
Podemos pensarlo como el nivel de zoom que queremos tener. Si elegimos contar letras va a ser un poco como tratar de entender la tierra viéndola desde Marte. La vamos a ver como un punto que, quizá con cierto esfuerzo notemos que es levemente azulado. Por ejemplo para la canción Cinema Vérité de Serú Girán la cuenta quedaría:
Difícilmente podamos extraer alguna información acerca de lo que dice esa canción a partir de esta representación. Con suerte podríamos adivinar en qué idioma está escrita.
Ahora podríamos irnos al otro extremo y contar frases. Es como ir a mirar los planetas en detalle y tratar de comparar Marte y la Tierra por el color de ojos de las moscas que viven en cada uno. Y en Marte, que sepamos, no hay moscas. Lo mismo pasa con los textos, si quisiéramos comparar la canción de Serú con una de los Redondos no lo vamos a poder hacer contando la cantidad de veces que aparece la frase “Anteojos negros de carey auriculares en la sien, no me escucha, no me ve” en los temas de los Redondos porque la respuesta es fácil: ninguna.
La magia combinatoria del lenguaje hace que con la elección de unas pocas palabras podamos decir frases que estamos casi seguros de que nadie nunca dijo en la historia de la humanidad.
Palabras con peso
Hay que buscar un punto intermedio, un nivel de zoom que no borre todo sentido pero tampoco nos pierda en el detalle. Ese nivel intermedio son las palabras. Vamos a contar palabras. En ese caso, así quedarían tres canciones distintas:
Inmediatamente notamos algo: las palabras más frecuentes no parecen ser las más informativas. Dicho de otra forma, si tuviésemos que elegir solo 5 palabras dentro de cada canción para representarla lo más fielmente, no diríamos que la letra de Cinema Vérité habla de {la, el, del, yo, y} mientras que Viernes 3AM habla de {y, de, un, tu, él}. El problema es que las palabras más frecuentes son, valga la redundancia, comunes. Son genéricas, están poco cargadas de significado. Son necesarias, aportan cierto sentido pero son más como el pegamento con el que se unen otras palabras más suculentas. Es lo que pasa con las vocales: son necesarias para poder decir la palabra, pero no es donde está la mayor cantidad de información. Si no, traten de adivinar esta palabra, sin consonantes: OIUIO, o esta sin vocales: CNSTTCN.
Esto nos da una pista para entender lo que pasa. Las vocales son pocas y aparecen mucho, son promiscuas, andan un poco por todas las palabras. Las consonantes, en cambio, son más específicas. Ahí está la solución. Tenemos que darle un peso alto a palabras que aparecen en pocos textos. Esta idea, que acabamos de construir, es la base detrás de la técnica de TF-IDF (por la sigla en inglés Term Frequency — Inverse Document Frequency).
Es decir: pesamos las palabras por la cantidad de veces que aparecen en un texto pero también por la inversa de la cantidad de veces que aparecen en la colección de textos que vayamos a comparar. Un gran trabalenguas. En resumen, vamos a pesar como importantes, dentro de un texto, a palabras que aparecen mucho en ese texto pero que son raras en general. Escrito en lenguaje matemático esto sería:
Si hacemos eso, ahora las mismas canciones quedan:
De un texto a un vector
Encontramos una manera de elegir las palabras más “representativas” de un texto y les pudimos dar un peso. Arriba sólo mostramos las más importantes, pero todas las palabras que aparecen tienen un peso, un número, asociado. Es decir que ahora un texto se convirtió en una colección de números, en un vector:
Y entonces podemos hacer cuentas con estos vectores. Podemos tratar de encontrar barrios por donde viven muchos textos juntos y decidir que se trata de textos de la misma categoría. También podemos ver cuáles son los vecinos más cercanos de un texto dado. Ahora sí, podríamos preguntarnos: ¿qué canción de Los Redondos tiene la letra más parecida a Viernes 3 AM ?
A partir de una idea sencilla, como contar, logramos armarnos un espacio abstracto del mundo de los textos. Un espacio que una computadora puede entender. Esta técnica, TF-IDF, está establecida hace ya varios años en el campo y por lo tanto su uso es muy difundido. Seguramente muchas de las búsquedas que hicieron en internet usaron, de fondo, ideas parecidas a estas (en versiones probablemente más complejas).
Magia, ciencia y sorpresa
A diferencia de lo que pasa con la magia, en ciencia, conocer el truco aumenta la sorpresa. Conocer el truco alimenta la curiosidad y nos impulsa a querer saber más. Nos empuja a formular lo que es el motor del desarrollo científico, la pregunta.
Por eso hay que estar atentos. Mirar con más sorpresa y curiosidad los avances en las habilidades “cognitivas” de las computadoras. No sea cosa que nos dé lo mismo cuando las máquinas empiecen a escribir poesía por voluntad propia. O que pase desapercibido el día en que una CPU, atormentada por el encierro eterno de su circuito, se despeñe desde una escollera de Mar del Plata.