Los chatbots son tecnologías que se conocen desde los 50, pero a penas en los últimos tres años se han desarrollado e incorporado a diversos sistemas laborales con la ayuda de la inteligencia artificial, el procesamiento de lenguaje natural (PLN) y el aprendizaje automático.
Todo esto, los hace mucho más humanos, y como humanos, estamos encantados con eso.
Por otro lado, la combinación de respuesta inmediata y conectividad constante los convierte en una forma atractiva de extender o reemplazar la tendencia de las aplicaciones web. Por eso, ahora la mayoría de servicios de atención al cliente usan o planean usar chatbots.
También los servicios de soporte técnico y otros similares que requieren una plataforma de información. Todos estos sistemas se automatizan con los chatbots y tanto las empresas como los clientes lo agradecen.
¿Cómo pueden los chatbots procesar lenguajes humanos?
Lo que a muchas empresas les preocupa es que los chatbots no puedan entender las intenciones del cliente. Ciertamente, los bots se entrenan primero con datos reales. Los registros de las conversaciones por lo general se guardan, y los desarrolladores más adelante analizan esos registros para averiguar qué es lo que el cliente quiere preguntar.
Ayudados por el aprendizaje automático, los desarrolladores unen las preguntas que los clientes hacen y dan con la respuesta más adecuada. Por ejemplo, si un cliente pregunta “¿Dónde está mi recibo de pago?” y “No he recibido un recibo de pago”, tienen una respuesta equivalente en el chatbot.
El trabajo de los desarrolladores es entrenar a los chatbots para que conecten ambas preguntas, corregir la intención y dar con la respuesta correcta. Y cuando no hay datos extensos disponibles, se pueden usar diferentes datos API para entrenar al chatbot.
Cómo funcionan los chatbots
Los chatbots funcionan adoptando 3 métodos de clasificación, que son:
Coincidencias de patrón:
Los bots utilizan la coincidencia de patrones para clasificar el texto y generar una respuesta adecuada para los clientes. La estructura más utilizada para estos patrones es “Lenguaje de marcado de inteligencia artificial” (AIML). Por ejemplo:
Esto se traduce en:
Humano: ¿Sabes quién es Abraham Lincoln?
Robot: Abraham Lincoln fue el presidente de los Estados Unidos durante la guerra civil estadounidense.
El bot puede dar esta respuesta solo porque su nombre está en el patrón asociado. La limitación, sin embargo, es que el bot no puede ir más allá del patrón asociado.
Pero la incorporación de algunos algoritmos puede ayudar a que el bot sea más avanzado.
Algoritmos
Para cada tipo de pregunta debe existir un patrón único, para así dar con la respuesta adecuada. Con mucha combinación en los patrones, crea una estructura jerárquica. Los algoritmos sirven para reducir los clasificadores y generar la estructura más manejable. Es lo que los científicos informáticos llaman enfoque “reduccionista”.
La multinacional Naive Bayes es el algoritmo clásico para la clasificación de texto y PLN. El algoritmo se organiza de la siguiente manera:
Ejemplo de conjunto de entrenamiento de muestra:
Clase: saludo
"¿Cómo estás?"
"Buenos días"
"hola"
Ejemplo de clasificación de oraciones de entrada:
Entrada: "Hola buenos días"
Término: "hola" (sin coincidencias)
Término: "buenos" (clase: saludo)
Término: "días" (clase: saludo)
Clasificación: saludo (puntuación = 2)
Con la ayuda de la ecuación, se encuentran coincidencias de palabras para algunas frases de ejemplo en cada clase. Si notas el puntaje del ejemplo, es la que identifica la clase con las coincidencias más altas en el término.
Pero las limitaciones de esta puntuación índica es que no garantiza que sea la coincidencia perfecta.
Redes neuronales artificiales
Las redes neuronales son una forma de calcular la interacción utilizando conexiones ponderadas que se toman a partir de repeticiones mientras se entrena los datos. Con cada repetición se mejora la precisión del mensaje de salida.
Al igual que con el ejemplo anterior, cada oración se divide en palabras diferentes, pero cada palabra se usa como entrada para las redes neuronales. Las conexiones ponderadas se calculan luego mediante diferentes iteraciones a través de los datos de entrenamiento miles de veces. El algoritmo mejora con cada interacción hasta que la respuesta es más precisa.
Este tipo de algoritmo es comparable a un código. Por ejemplo, cuando hay una muestra comparativamente pequeña, donde las oraciones de entrenamiento tienen 200 palabras diferentes y 20 clases, entonces eso sería una matriz de 200 × 20.
Pero también hay que tener en cuenta que cuando el tamaño de la matriz aumenta n veces se puede generar gran cantidad de errores. Es por eso que la velocidad de procesamiento debe ser muy alta.
Tipos de arquitectura de chatbots
El modelo de arquitectura de un chatbot corresponde al propósito central del desarrollo. Pero principalmente, hay dos tipos de modelos posibles: los que generan respuestas desde cero a través del aprendizaje automático, y los que usan la heurística para seleccionar una respuesta adecuada de una serie de respuestas predefinidas.
Modelos generativos
Es un modelo bastante avanzado, se usa muy poco porque requiere algoritmos complejos. Son difíciles de construir y desarrollar. El entrenamiento de este bot requiere de mucho tiempo y esfuerzos, creando millones de ejemplos.
Se basa en un modelo de aprendizaje profundo para crear respuestas durante una conversación. Sin embargo, nunca se sabe qué va a responder el bot.
Modelos basados en la recuperación
Es un modelo de arquitectura mucho más fácil de construir y también más confiable. Claro, las respuestas no son 100% precisas, pero se pueden conocer los tipos de respuestas y asegurarse de que el chatbot no envíe respuestas inapropiadas o incorrectas.
Actualmente, es el modelo más usado. Varios algoritmos y API están disponibles para que los desarrolladores creen chatbots en este modelo arquitectónico. Es un tipo de bot que considera tanto el mensaje como el contexto para dar con el tipo de respuesta.
Mecanismo de generación de respuesta
Como antes habíamos mencionado, hay dos formas diferentes mediante las cuales los chatbots entienden el mensaje o la intención del usuario.
Heurística basada en patrones
La salida más simple para generar respuestas es definir un conjunto de reglas con patrones predefinidos que actúen como la condición para las reglas enmarcadas.
El lenguaje de marcado de inteligencia artificial (AIML, por sus siglas en inglés) es el más utilizado para escribir patrones y respuestas en el proceso de desarrollo de chatbot. Se ejecuta de la siguiente manera:
<categoría>
<pattern> ¿Cómo te llamas? </pattern>
<template> Mi nombre es Albert Smith </template>
</category>
AIML puede construir un chatbot inteligente si cuenta con un canal rico en patrones y procesamiento de lenguaje natural. Lo que hacen estos bots es analizar el mensaje del usuario, luego encuentran sinónimos y conceptos, etiquetan partes del discurso y descubren cuál es la regla que coincide con la consulta del usuario.
Pero lamentablemente no pueden ejecutar algoritmos de aprendizaje automático a menos que pasen por un proceso de programación especial.
Clasificación de intenciones utilizando el aprendizaje automático
El problema con la heurística es que requiere que todos los patrones se programen manualmente. Si el chatbot tiene que definir cientos de intentos para diferentes escenarios es demasiado complicado. Pero por su lado, la clasificación de intenciones se basa completamente en la tecnología de aprendizaje automático.
A partir de un conjunto de miles de ejemplos de capacitación que probablemente se enfrentará el chatbot, se puede entrenar para recoger patrones de datos y aprender de ellos.
Para ello existen bibliotecas de aprendizaje automático como scikit-learn y también hay una serie de opciones API en la nube como api.ai, wit.ai y Microsoft LUIS. wit.ai, que recientemente fue comprada por Facebook, fue la primera API de aprendizaje automático para chatbots.
Generación de respuestas
Una vez que el bot entiende la pregunta, es momento de generar una respuesta. Hay dos formas: generar una respuesta estática simple y obtener una plantilla basada en la intención y poner algunas variables. Dependiendo el propósito del chatbot, la compañía decide el método de respuesta.
Por ejemplo, un chatbot de pronóstico del tiempo que utiliza API puede responder a cada usuario la misma información pero de diferente manera, de acuerdo a la intención de la pregunta.
El bot estudia y utiliza los chats anteriores y sus métricas asociadas para adaptar las respuestas personalizadas para el usuario.
Con todo esto, es evidente que para crear un chatbot desde cero se necesita de la ayuda de un profesional. Quienes pueden hacer este trabajo son los programadores y desarrolladores, con experiencia en bots. Y lo cierto es que mientras más humano parezca el chatbot, mejor desarrollado estará.