Chatbots, hablando con la IA

Rubén Rodríguez Abril

Unos de los principales usos de los algoritmos de generación de texto han sido los chatbots. En este artículo veremos algunos de las aplicaciones chatbot más conocidas, muchas de las cuales han sido la inspiración y el fundamento de los modernos modelos de IA generativa.

Chatbots de texto

En el año 1747 el filósofo francés Julien Offray de la Mettrie consideraba en su libro “El hombre máquina” que un autómata parlante era, ciertamente, “una máquina que no puede ya considerarse imposible de realizar, especialmente por la obra de un nuevo Prometeo”. Casi trescientos años después, el advenimiento de los chatbots, que son algoritmos especializados en charlar con usuarios (a menudo creando diálogos bastante realistas), está comenzando por fin a materializar estas predicciones.

Un chatbot es, como su propio nombre indica, un programa de ordenador especializado en charlar (chat) con usuarios, generando respuestas coherentes a los mensajes que éstos envían.

La creación de interfaces capaces de intercambiar con sentido frases con humanos ha sido una de las principales metas del Procesamiento del Lenguaje Natural, y en general de la IA, durante las últimas décadas. Tanto es así que el famoso Test de Turing (denominado inicialmente Imitation Game) fue concebido inicialmente por Alan Turing en el ámbito de los algoritmos parlantes. Consistía en un experimento mental en el que un usuario humano (A) conversaba a la vez con otro humano (B) y con un chatbot (C). Este último aprobaba el test cuando A era incapaz de determinar cuál de los dos usuarios era una máquina. Desde 1991 a 2020, el Premio Loebner, galardonó a aquellos algoritmos que fueran capaces de satisfacer en el mayor grado posible los criterios de indistinguibilidad de este test.

Tipos de chatbots

Aunque los chatbots a menudo incorporan contenido multimedia y son capaces de reconocer voz humana, en el presente artículo nos centraremos exclusivamente en aquellos que funcionan exclusivamente mediante mensajes de texto. Por su funcionamiento, los chatbots de texto pueden clasificarse en tres grandes categorías:

  • Sistemas basados en búsqueda de patrones.
  • Sistemas basados en diagramas de flujo.
  • Sistemas basados en predicción de la siguiente palabra

Chatbots basados en búsqueda de patrones

Históricamente, son los más antiguos. El primero de ellos fue ELIZA, creado por Joseph Weizenbaum entre 1964 y 1966 con el objetivo de proporcionar terapia psicológica a pacientes para el caso de que no hubiese ningún profesional humano disponible. En ELIZA, el algoritmo busca patrones a lo largo del texto de entrada y cuando encuentra uno de ellos una regla predeterminada le señala cuál es la respuesta adecuada.

Los patrones y las respuestas pueden ser redactados en diversas lenguas y son almacenados en un archivo o en una base de datos convencional.

Un ejemplo de conversación con Eliza, uno de los primeros chatbots y que simulaba ser una psicoterapeuta.

Ejemplo de conversación con ELIZA.

Sistemas similares a ELIZA aparecieron en años posteriores. Entre ellos podemos citar PARRY, que simulaba el comportamiento de una persona con esquizofrenia paranoide, o A.L.I.C.E,, que inspiró la película Her y en el que los patrones lingüísticos son almacenados por medio de un dialecto de XML, específicamente diseñado para la Inteligencia Artificial, denominado AIML (Artificial Intelligence Markup Language).

Fotograma de la película "Her"

Fotograma de la película Her.

Potencia de la búsqueda de patrones

Aquellos lectores que hayan consultado nuestro artículo de esta misma serie sobre la Jerarquía de Chomsky se habrán percatado de que los chatbots basados en patrones sólo pueden reconocer (y crear) estructuras lingüísticas pertenecientes a lenguajes regulares, que son los que más bajo se sitúan dentro de la jerarquía de lenguajes formales. Esto tiene la ventaja de que pueden aceptados (esto es, “reconocidos”) por autómatas de estado finito, sin necesidad de que éstos dispongan de pila o de memoria externa (lo que se traduce en menores exigencias de poder computacional). Pero en cambio, no pueden capturar estructuras lingüísticas como las oraciones subordinadas (que involucran recursión) o el contexto.

Chatbots basados en diagramas de flujo

Un diagrama de flujo (en inglés, flowchart) es un gráfico que describe las diferentes estados en que puede encontrarse un proceso y las posibles ramificaciones que se pueden abrir en el mismo. Este concepto tiene una amplia aplicación en ámbitos como la programación o las finanzas, si bien en este apartado nos centraremos en su utilización en el marco de los algoritmos conversacionales.

En cada diagrama de flujo pueden encontrarse cuatro grandes tipos de símbolos:

-Símbolo terminador (óvalo o rectángulo redondeado): Señalan el inicio y el fin del proceso.

-Símbolo de decisión (diamante): El algoritmo debe decidir qué paso y qué nuevo camino tomar. En programación, suele coincidir con instrucciones condicionales de flujo, como bucles o el par de instrucciones if…then.

-Símbolo de acción (rectángulo): Ejecutan, como su propio nombre indica, una acción tras la decisión.

-Símbolo de flujo (flecha): Señalan la transición de un estado a otro.

Ejemplo de un chatbot que funciona siguiendo un diagrama de flujo

En su forma más primitiva, el diagramas de flujo de los chatbots puede estructurarse como un simple árbol de diálogo, en el que a cada paso el usuario debe elegir una de entre las varias opciones que se le ofrecen, hasta que finalmente el programa llega a término y la conversación concluye.

DialogFlow

Como el lector habrá podido comprobar, la versatilidad de este tipo de diálogos es muy baja, en la medida en que el usuario no teclea frase alguna, sino que se limita a hacer clic entre las diferentes opciones planteadas.

Por este motivo, los más modernos interfaces, auxiliados por redes neuronales, permiten que los usuarios transmitan frases a la máquina. Uno de estos interfaces es DialogFlow, de Google, cuyo sistema de diálogo se articula en torno a los siguientes conceptos:

– Agentes conversacionales: Se trata de personas virtuales creadas por el programador que interactúan con los usuarios. Son los chatbots propiamente dichos.

Intents: Son las diferentes posibilidades de actuación del chatbot. En diagrama de flujo se representarían con un símbolo de acción. Cuando el usuario escribe una frase, una pequeña red neuronal la asigna a uno de los intentos (rombo amarillo, símbolo de decisión). Seguidamente, el sistema ejecuta la acción asociada al intento con los parámetros introducidos por el usuario.

– Contextos de entrada y salida: Permiten al agente conversar con el usuario solicitándole más información o incluso reenviarlo a otro intento. En el caso del ejemplo de la figura tres, el agente puede preguntar al usuario qué localización prefiere.

Chatbots basados en predicción de tokens

Estos sistemas son muy parecidos a las traducciones automáticas analizadas en los artículos anteriores: una red neuronal lee una cadena de entrada, almacenando su significado en su estado interno. Cuando lee el símbolo <end>, comienza a imprimir, palabra por palabra, la cadena de salida. Durante la impresión, la entrada de la red es el token (palabra) inmediatamente anterior, así como el propio estado interno de la máquina (red recurrente). La capa de salida señala, por medio de una función softmax, la probabilidad que la red atribuye a cada una de las palabras de su vocabulario. Por lo general, la palabra más probable es escogida e incorporada a la cadena.

En una traducción automática, la red recibe por entrada una cadena en la lengua de origen y debe imprimir otra con significado semejante en la lengua de salida. Un chatbot, por el contrario, no debe traducir, sino imprimir una respuesta coherente a la cadena de entrada. Por este motivo, las bases de datos de entrenamiento de los chatbots no consisten en textos bilingües, sino en conversaciones realistas.

Entre las bases de datos más utilizadas en la actualidad, podemos citar las siguientes:

Persona-Chat

Creada por Facebook AI Research, y compuesta de 162.064 frases de conversación pronunciadas por 1.155 personas diferentes. Cada uno de los partícipes en el proyecto debe describir su perfil por medio de una serie de frases, que son reescritas de diferentes maneras. Seguidamente, los participantes son emparejados al azar y se les anima a conocerse online y a tener conversaciones entre ellos. Estas conversaciones son indexadas. Por medio de esta base de datos, la máquina aprende, no sólo a pronunciar frases en el contexto de una charla, sino también a mostrar un perfil consistente durante múltiples conversaciones.

Ubuntu Dialogs Corpus

Compuesto de siete millones de frases estructurados en un millón de diálogos, contabilizando cien millones de palabras en total. Estas conversaciones, extraídas de de los chat logs de Ubuntu, tuvieron lugar para resolver problemas técnicos derivados del uso de dicho sistema operativo.

Cornell Movie Dialogs Corpus

Como su propio nombre indica contiene diálogos de guiones de películas, cargados de metadatos. En total, la base de datos almacena 220.579 intercambios de conversación entre 10.292 parejas de personajes, que aparecen en 617 películas. Entre los metadatos de los films se incuyen su género, su rating en IMDB y su año de estreno.

DailyDialog

Construido a partir de diálogos obre cuestiones cotidianas, ofrecidos por webs de idiomas a estudiantes de inglés, con el objetivo de que practiquen esta lengua. Se compone de 13.118 diálogos, en los que hay una media de 7,9 turnos de conversación por persona y 114,7 tokens por persona. Se trata de una base de datos interesante por varias razones: Las conversaciones no se insertan dentro obras dramáticas, cinematográficas o literarias, sino que pretenden ser cotidianas. El diálogo es a menudo bidireccional. Cada frase es clasificada en una de las siguientes seis categorías de emociones: enojo, disgusto, miedo, alegría, tristeza, sorpresa. Desde el punto de vista temático, las categorías son: cotidiano, vida escolar, cultura y educación, actitudes y emociones, relaciones, turismo, salud, trabajo, política, finanzas.

Gráficas que muestran las emociones reconocidas y los temas que abarca el chatbot DailyDialog
Categorías de emociones y temáticas de DailyDialog. La imagen está tomada de la publicación DailyDialog: A Manually Labelled Multi-turn Dialogue Dataset.

En todos estos casos, la función de pérdida es la entropía cruzada -log(P), es decir, el logaritmo de la probabilidad que la red atribuye al token que efectivamente aparece en la cadena de destino. Esta expresión es, por lo demás, equivalente a la información de Shannon o sorpresa léxica del token impreso.

¿Un sueño hecho realidad?

La creación de autómatas con capacidades de hablar similares a las de los seres humanos ha sido una posibilidad que ha alimentado los sueños de filósofos y literatos a lo largo de la Historia. Célebres relatos como El hombre de arena, de E.T.A. Hoffman, Metrópolis, de Thea von Harbou o R.U.R de Karel Čapek, entre muchos otros, son una prueba palmaria de ello. Los impresionantes desarrollos de la NLP a lo largo de las dos últimas décadas han propiciado que, finalmente y tras siglos de espera, estén desarrollándose algoritmos capaces de imitar las capacidades lingüísticas humanas. Un hito en este desarrollo lo constituyó la llegada del bot Eugene Goostman, desarrollado por Vladimir Veselov y Eugene Sevchenko, que en el año 2014 hizo creer a la tercera parte de los jueces de un concurso organizado por la Universidad de Reading que se trataba de un niño ucraniano de 14 años. En la actualidad (desde 2017 en adelante), la llegada de los transformers, una arquitectura basada en las unidades de atención, está introduciendo cambios revolucionarios en el ámbito de la NLP, y se ha convertido en el fundamento de chatbots como el célebre ChatGPT. A dicha arquitectura dedicaremos los próximos artículos de esta serie.