Como bien sabemos, un ChatBot es un programa informático diseñado para simular una conversación con usuarios humanos, especialmente a través de Internet. Este componente virtual está destinado a comprender el lenguaje humano, responder a él como un ser humano y aprender a lo largo del camino a comportarse de forma más humana.
Previo había platicado de las 3 tecnologías de construcción e interpretación de lenguajes y que recapitulo:
NLP: Procesamiento de lenguaje natural (Natural Language Processing)
NLU: Comprensión del lenguaje natural (Natural Language Understanding)
NLG: Generación de lenguaje natural (Natural Language Generation)
Los chats son la forma más natural de interacción entre humanos y aplicaciones. No obstante, los Bots le dan esa inmediatez a los Chats y además los hacen interactivos. Es decir; le agregan ese toque humano a cualquier aplicación que construyas. Los bots son interesantes y no so para nada aburridos como llenar un largo formulario.
Ahora bien, quedando establecido que los ChatBots son la forma más natural de interacción entre humanos y aplicaciones, podríamos percibirlos como pedirle ayuda a un amigo en una conversación, pero que con respuestas concisas e inmediatas pueden hacer todas las actividades que se le piden y/o para las que fueron diseñados. Por lo tanto, un ChatBot es como agregar una interfaz conversacional a las aplicaciones, ósea una interfaz que explora las bondades de la inteligencia artificial aplicándolas a los chats de tus aplicaciones.
Usamos una mezcla de IA y algoritmos de aprendizaje automático para hacer que los bots entiendan el lenguaje natural (NLU — comprensión del lenguaje natural), procesen el texto de la conversación y extraigan información (NLP — Procesamiento del lenguaje natural) y respondan al usuario preservando el contexto de la conversación (NLG — Generación de lenguaje natural).
Algunos conceptos que es necesario comprender al construir un ChatBot son:
INTENTO: Un intento es una colección de expresiones (lo que el usuario dice) que significan lo mismo, pero que se construyen de manera diferente. Cada intento corresponde a una acción que su usuario desea realizar. Por ejemplo, un intento de “saludar” tendrá las siguientes expresiones “hola”, “hola”, “hola”, todo lo que significa lo mismo: un saludo o el iniciador de conversación.
ENTIDAD: Una entidad es una información extraída de lo que dice un usuario. Por ejemplo, cuando un robot pregunta por su nombre, la información que el robot espera de su respuesta será su nombre “Mi nombre es {{nombre-de-entidad}}”.
ACCION: Una acción es una tarea que esperas que tu bot haga por ti. En la mayoría de los casos, una API externa realiza esta acción. Dado que las plataformas bot no admiten llamadas API externas, se usa un programa externo para controlar esa funcionalidad. Por ejemplo, cuando le pides a tu bot que te ordene una pizza, el bot extrae toda la información (Entidades) requerida para ordenar la pizza (tamaño, tipo, tienda, etc.) y la envía a una API externa. De esta obtiene una respuesta respecto a si la orden es exitosa o no.
Disponemos de no muchas plataformas de construcción Bot, entre ellas API.ai de Google, Wit.ai de Facebook, Recast.ai y Converse.ai.