lunes, 26 de noviembre de 2018

La arquitectura básica de una interfaz conversacional (chatbot)


Los chatbots y las interfaces conversacionales incluyen en su interior tecnología avanzada, tecnología con frecuencia procedente del campo de la inteligencia artificial y que es la que le permite tratar el lenguaje natural o reconocer la voz humana. Sin embargo, la arquitectura básica de una interfaz conversacional, entendida como un diagrama de bloques genérico, no es difícil de entender.

En su libro 'Hands-On Chatbots and Conversational UI Development', Srini Janarthanam propone una arquitectura básica con los principales bloques de este tipo de soluciones. No he podido conseguir la imagen original, pero los bloques son los que se muestran en la figura de abajo:


¿Qué tenemos?

En primer lugar, dos bloques para el tratamiento de la voz, dos bloques que sólo tienen sentido cuando nuestra interfaz conversacional, nuestro chatbot, se comunica por voz. En ese caso tendremos un módulo de reconocimiento de voz, para atender a lo que dice el usuario y un módulo de síntesis de voz para que el chatbot pueda 'hablar'.

Luego tenemos el gestor de la conversación, es decir, el módulo que de alguna forma decide el flujo de la conversación o qué contestar ante lo que el usuario exprese. Es de alguna forma el elemento central, el que define la conversación, la personalidad, el estilo y lo que el chatbot es en el fondo capaz de ofrecer.

Además, existe un módulo para el entendimiento del lenguaje natural (NLU, Natural Language Understanding), es decir, para sacar el sentido de lo que el usuario ha querido decir, sea por voz o por escritura de texto.

Además, existe un módulo de integración con el backend. Los chatbots normalmente se apoyan en informaciones y servicios que exponen otros sistemas o aplicaciones mediante APIs. El módulo de integración con el backend se encarga de interaccionar con esas aplicaciones o sistemas vía las APIs que éstos ofrecen para poner a disposición del chatbot y, a través de éste, a disposición del usuario todo tipo de informaciones y servicios: tiempo atmosférico, horarios de autobuses o aviones o reserva de entradas para un espectáculo, por poner algún ejemplo.

Finalmente, tenemos el canal, es decir, el medio en el que habita y a través del cual se comunica el chatbot. Canales habituales son sistemas de mensajería como Facebook Messenger, Skype o Slack, aplicaciones web, Twitter, SMSs, etc

****

Como se puede ver, una arquitectura fácil de comprender lo cual es afortunado. Sin embargo, eso no debe hacernos olvidar que hay mucha tecnología por detrás de esta arquitectura sencilla, tecnología especialmente para el tratamiento del lenguaje natural y la voz. También mucho diseño y trabajo en lo que tiene que ver con definir la personalidad del chatbot y los flujos de conversación y, finalmente, mucha funcionalidad e información a la que normalmente accedemos como servicios de terceros vía la integración.

Un afortunado equilibro entre complejidad subyacente unido a una relativa sencillez para disponibilizar estos chatbots e interfaces conversacionales gracias al esfuerzo y buen hacer de los creadores de este tipo de tecnologías.