Procesamiento de lenguaje natural en el Congreso de la Nación

Martín Elías Costa, nuestro investigador de datos y doctor en Física, nos cuenta cómo usamos el procesamiento del lenguaje natural para agilizar los tiempos de respuesta de la Jefatura de Gabinete de la Nación.

Hace poco repasamos algunas letras de Serú Girán y hablamos sobre procesamiento de lenguaje natural en las computadoras. Quizás se preguntaron cómo eso, que parece abstracto, puede ser útil en la Administración Pública Nacional (APN). Hoy vamos a hablar de eso.

Para responderte mejor

Todos los meses, el equipo de la Secretaría de Relaciones Parlamentarias y Administración, de la Jefatura de Gabinete de Ministros, recibe las preguntas que los legisladores hacen en el Congreso dirigidas al jefe de Gabinete, las clasifica y finalmente reenvía a la persona más adecuada dentro de la APN para responderlas.

Más tarde, las respuestas a esas preguntas se compilan en un Informe al Congreso. Este equipo tiene apenas 5 días para procesar unas 1.000 preguntas de temas extremadamente variados y aquí es donde las herramientas de procesamiento del lenguaje natural pueden ayudar a agilizar la tarea.

El flujo de las preguntas Del Congreso a la Jefatura de Gabinete de Ministros y viceversa.

Entender los problemas de fondo

Primer paso: entender cómo ayudar al equipo de Jefatura. Desde el equipo de Datos Argentina, trabajamos con ellos y llegamos a dos problemas que teníamos que resolver para optimizar el proceso.

Por una parte, había que recuperar preguntas similares de informes anteriores. Esto era útil porque:

  • Es posible que parte de la respuesta de esa pregunta similar tenga información relevante para la nueva pregunta.
  • Permite evaluar los cambios relacionados con una dada temática (por ejemplo, seguir el grado de avance de una obra).
  • Puede ayudar a decidir cuál es el enlace correcto al que reenviar la pregunta.

El segundo problema: cómo clasificar las preguntas. Cada pregunta es rotulada por el equipo de Jefatura con etiquetas de dos niveles: un área general y un área específica a la que pertenece. Esta tarea involucra elegir entre cientos de combinaciones posibles de etiquetas.

De textos a vectores

La dificultad principal, a la hora de encarar cualquiera de estos dos problemas, es convertir las preguntas, que están escritas en lenguaje natural por los legisladores, en algo que una computadora pueda entender.

En este otro post estuvimos contando algunas de las ideas que nos permiten convertir textos en números. Allí vimos que cada texto puede convertirse en un vector, un conjunto ordenado de números (0, 1.3, 3.44, 2, 0 …) con el que la PC puede hacer cuentas. Cada coordenada de ese vector, en lugar de ser una dirección física (3 pasos al norte, 2 al oeste) es una dirección en el espacio semántico, es la dirección correspondiente a una palabra.

Metafóricamente, podríamos decir que ese vector nos da las instrucciones para encontrar un texto. Si damos 2 pasos en la dirección de “enero”, 5 en la dirección de “playa” y 3 en la dirección de “reposera”, seguramente lleguemos a un texto que hable sobre las vacaciones.

Transformar las palabras en vectores Eso nos permite tener direcciones para encontrar un texto.

Primer problema resuelto. Porque para encontrar preguntas similares solo tenemos que calcular la distancia de la pregunta nueva a todas las anteriores y revisar las que queden más cerca. ¿Cómo se calcula la distancia entre dos vectores? ¡Con Pitágoras! ¿Quién hubiera imaginado que el trabajo de un grupo de personas delirando sobre algo tan poco aplicado como las propiedades abstractas de los números tendría las ramificaciones que tuvo? Es que la inversión en ciencia sigue rindiendo sus frutos aún miles de años después.

Ahora, intentemos resolver el segundo problema, el de clasificar las preguntas. Para esto combinamos esta idea de los vectores de texto con herramientas de aprendizaje automático que permiten aprender a dividir el espacio en regiones a partir de ejemplos.

¿Cómo es eso? Supongamos que tenemos un grupo de preguntas ya etiquetadas (algo que, de hecho, teníamos de informes anteriores que ya estaban siendo etiquetados a mano). Para simplificar el ejemplo, supongamos que hay sólo dos etiquetas. Hay preguntas de “economía” y hay preguntas de “salud”, por decir algo. Si pintamos a las de “economía” de rojo y a las de “salud” de azul, esperamos que dentro de ese espacio-vectorial-semántico que creamos, las preguntas se ubiquen más o menos así:

Separar las preguntas en “barrios” temáticos A través de algoritmos que marcan una barrera.

Entonces es sólo cuestión de encontrar la separación entre los barrios (esa recta de la figura). Hay justamente un algoritmo que hace exactamente eso. Tiene un nombre un poco extraño. Se llama Support Vector Machine o Máquina de Vectores-Soporte.

Lo que hace es encontrar la mejor separación entre las categorías, donde mejor quiere decir que el límite, la pared, queda lo más lejos posible de cualquiera de los conjuntos. De esta manera, si aparece una pregunta nueva que no sabemos a qué tema corresponde sólo tenemos que fijarnos de qué lado de la pared queda. Si queda del lado de los puntos azules, diremos que seguramente es una pregunta de “salud”. Si queda del lado de los rojos, diremos que probablemente se trate de “economía”.

Primeras pruebas

Con estas ideas, creamos una pequeña plataforma de prueba para ofrecerle al equipo de Jefatura la posibilidad de buscar preguntas similares y recibir sugerencias de etiquetas para cada pregunta nueva. Los resultados de las primeras pruebas son alentadores. Bajaron los tiempos de procesamiento de cada informe y, al mismo tiempo, aumentó la precisión y la cantidad de preguntas similares recuperadas en comparación con el anterior sistema de búsqueda por palabras clave.
Si te resultó interesante, quedate atento, pronto te vamos a contar más sobre la implementación del proyecto.

Prototipo Una pequeña muestra de cómo se ve la interfaz para ayudar a responder preguntas de los legisladores.

¿Te gusta lo que hacemos? ¡Bien ahí! ¡Unite hoy a nuestra comunidad! Podés seguirnos en Twitter, ver nuestros repositorios en Github y escribirnos por mail.

Si te sirvió este post, hacé clic en el ❤ acá abajo, así más personas se suman a #DatosArgentina.