Chatbot, bot conversacional, asistente de Inteligencia Artificial, asistente virtual inteligente, agente conversacional, asistente digital, interfaz conversacional… encontramos un sinfín de nombres, algunos más acertados que otros, para denominar a esta tecnología. Los expertos no se ponen de acuerdo en cuál es el mejor ni qué sutiles diferencias hay entre cada uno, pero lo que está claro es que están por todos lados.
Los asistentes conversacionales dan respuesta a infinidad de dudas y tareas, como pueden ser comprar un billete de tren, saber el stock de un producto en una tienda, comprar entradas para el cine, pedir comida a un restaurante o consultar el clima de tu ciudad con el móvil. Es frecuente utilizar Machine Learning y Procesamiento del Lenguaje Natural (PLN), para crear estos chatbots, logrando que, en base a ejemplos, sean capaces de detectar lo que el usuario necesita a través del texto y de mantener una conversación con respuestas concretas y coherentes.
Tipos de chatbots
Aunque está claro que estas máquinas tienen el propósito de hacernos la vida un poquito más fácil, existen diferentes tipos de chatbots según la finalidad que tengan:
- Algunos asistentes tienen como fin mantener una conversación no estructurada, imitando a las de las personas. Un buen ejemplo de ello es BlenderBot, de Facebook, diseñado para ser capaz de mantener una conversación como si fuera un humano: con personalidad propia, mostrando empatía, conocimiento, sentimientos, etc.
- Otros están diseñados para mantener conversaciones cortas y, además, son capaces de resolver determinadas tareas concretas. Por ejemplo, Siri de Apple, que es capaz de seguir diálogos cortos y de responder a tareas como enviar un mensaje, poner una alarma o buscar una canción.
- Otro tipo son los chatbots especializados en tareas concretas de dominios determinados. Se trata de herramientas que dan solución a problemas complejos acotados, como reservar un vuelo, pedir comida, analizar problemas de salud o, por ejemplo, comprar un billete de tren, que es la tarea en la que ayuda Irene, la asistente de Renfe.
Normalmente estos chatbots se sirven del Machine Learning o aprendizaje automático y del Procesamiento del Lenguaje Natural (PLN) para dar solución y responder a las necesidades del usuario.
Dentro del PLN, necesitan de la comprensión del lenguaje natural (NLU, natural language understanding) para entender lo que el usuario ha dicho y poder dar contestación a ello (para esto, se sirven de las intenciones, las entidades y los flujos de diálogo que más adelante veremos). Por otro lado, mediante la generación de lenguaje natural (NLG, natural language generation) son capaces de devolver respuestas prefabricadas o respuestas personalizadas a través, por ejemplo, de consultas en bases de datos.
Pasos para crear un chatbot
¿Y cómo se crea un chatbot? Existen plataformas que ayudan a diseñar un agente conversacional, analizar los datos de las conversaciones, buscar en bases de datos o entrenar los chatbots de una manera relativamente sencilla. Algunas de las muchas disponibles en la web son Language Understanding (LUIS) de Microsoft, Google Dialogflow o Watson Assistant de IBM.
Estas herramientas suelen basarse en intenciones, entidades y flujos de diálogo para construir los agentes conversacionales. Para entenderlo mejor, veremos estos elementos mediante un ejemplo concreto del último tipo de chatbots, especializado en tareas concretas, puesto que están muy demandados y son para los que más están pensadas las herramientas.
En este caso, vamos a crear un asistente para una floristería. Este chatbot va a dar respuesta a tres posibles consultas de los clientes sobre la floristería, las llamadas intenciones, que serán:
- El horario de apertura (#horario)
- La dirección (#dirección)
- Realizar un pedido (#pedido)
Entrenar las intenciones del chatbot
En primer lugar, es necesario entrenar al bot para que detecte la intención en la entrada de texto del usuario. Para ello, proporcionaremos a la herramienta ejemplos de frases que los usuarios podrían formular cuando tengan esa intención. A partir de esas frases, el chatbot será capaz de inferir la intención, aunque el usuario no diga exactamente alguna de las oraciones del entrenamiento.
Por ejemplo, #horario va a ser entrenada con oraciones como “¿Cuál es el horario de la floristería?”, “Quisiera saber qué horario tenéis”, “¿A qué hora cierra?” o “Me gustaría saber hasta qué hora está abierta”, y sabrá detectar esta intención cuando el cliente diga “¿Hasta cuándo está abierta?”.
Cuando el chatbot detecte alguna de las dos primeras intenciones, dará una respuesta concreta y directa. Es decir, cuando se detecta #horario o #dirección, se satisface la pregunta del cliente con la información requerida. Sin embargo, si el usuario desea hacer un pedido, el chatbot debe recabar alguna información adicional para poder satisfacer la intención del cliente.
El bot necesita saber qué tipo de producto se le está requiriendo (ramo, corona o centro) y qué tipo de flores va a llevar ese producto (margaritas, rosas, claveles, lilas, lirios, hortensias o tulipanes); o dicho de otra manera, para poder llevar a cabo la tarea que el usuario requiere, el bot necesita tener la información de dos entidades: @producto y @flores.
A diferencia de las intenciones, las entidades no se entrenan como tal, sino que es preciso proporcionar todos los valores posibles de cada una de ellas (por ejemplo, en el caso de @flores, los valores serán “margarita”, “rosa”, “clavel”, etc.) y sinónimos o variantes de esos valores (siguiendo el mismo ejemplo, “rositas” “syringa”, “tulipa”, “ortensia”, etc.).
Flujo de diálogo del chatbot
Una vez sabemos cuáles son las intenciones y entidades que vamos a necesitar, tenemos que estructurar la conversación en el flujo de diálogo. El flujo de diálogo es el que va guiando la conversación en función del input del usuario y de las entidades e intenciones que se detecten en esos inputs.
En este caso, estará compuesto por cuatro nodos (Figura 1). Los tres primeros se corresponderán, cada uno, con una intención; y aquí entra en juego el llamado umbral de confianza que se asigna a cada intención en cada uno de estos nodos.

Figura 01
El chatbot siempre va a intentar encontrar una intención en cada texto que el usuario escriba; por eso, a través del umbral de confianza, intentaremos que el asistente no detecte intenciones donde no las hay. De este modo, si ponemos un umbral de confianza muy alto, el bot solo entrará por el nodo correspondiente a una intención cuando esté muy muy seguro de que el input del usuario quería expresar tal intención (mayor precisión). Si, en cambio, el umbral de confianza es bajo, entrará por el nodo de una intención aunque no esté totalmente seguro de si el usuario pretendía tal intención (mayor cobertura).
Debemos entrenar muy bien las intenciones y probar mucho el chatbot para llegar a un umbral de confianza ideal (en las figuras ilustrativas está puesto, como ejemplo, en un 0.8).
Aparte de los tres nodos mencionados, un último nodo servirá para recuperar la conversación cuando el chatbot detecte alguna de las intenciones con un umbral de confianza bajo o que no detecte ninguna (las respuestas de este nodo suelen ser de tipo “No te he entendido, vuelve a formular tu pregunta con otras palabras”).
Esquemáticamente, podemos ver cómo se estructura el flujo de diálogo. Por un lado, como ya hemos comentado, para las intenciones #horario y #dirección, nuestra herramienta va a dar una respuesta concreta, y así va a estar reflejado en el flujo de diálogo (Figuras 2 y 3).
Por otro lado, cuando la intención detectada sea #pedido, si el usuario, al formular su pregunta, ha dado información que permita reconocer las entidades @producto y @flores, entonces el chatbot devolverá una respuesta en la que se confirma que el pedido está realizado (Figura 4). Sin embargo, cuando el cliente, al formular la intención, no aporte información suficiente y, por tanto, alguna o ninguna de las entidades @producto o @flores se detecten, el chatbot redirigirá la conversación, mediante el flujo de diálogo, para que el usuario responda sobre qué producto y qué flores quiere (Figura 5).
¡Ya tendríamos el chatbot para nuestra floristería! Resumidamente, estos son los elementos básicos a tener en cuenta a la hora de desarrollar un bot: las intenciones, las entidades y el flujo de diálogo, donde se guía la conversación a través de los nodos y subnodos, donde las intenciones (con umbral de confianza) y las entidades intentan detectar lo que el usuario necesita.
Gracias Helena. El texto proporciona una buena introducción al tema de los chatbots y su uso en diferentes campos. La descripción de los tipos de chatbots y los pasos necesarios para crear uno son informativos y fáciles de seguir. Sin embargo, el texto podría beneficiarse de una mayor profundidad en cuanto a los detalles técnicos y algunos de los problemas comunes asociados con la creación de chatbots. En general, es un buen punto de partida para aquellos que quieran aprender más sobre los chatbots y su potencial.
¡Hola, Héctor!
Gracias por tu comentario y me alegro de que te parezca interesante el contenido. Efectivamente, como dices, se trata de un texto introductorio al tema chatbots que, además, se enmarca en este blog, donde las entradas tienen un carácter divulgativo, pensadas para un público general, por eso igual echas en falta detalles técnicos si ya tienes cierto conocimiento de bots.
Por si fuera de tu interés, te paso un par de links de artículos sobre temas más concretos de chatbots que tenemos en el bog:
– https://www.iic.uam.es/procesamiento-del-lenguaje-natural/estrategias-conversacionales-chatbots-variables-contexto-y-slots/
– https://www.iic.uam.es/procesamiento-del-lenguaje-natural/como-gestionar-digresiones-conversacionales-chatbot/
De todas formas, estamos disponibles en contacto@iic.uam.es para cualquier cosa o más información.
¡Un saludo!