1. INTRODUCCIÓN
El desarrollo de los modelos de inteligencia artificial, más en concreto de reconocimiento y procesado del lenguaje natural (NLU y NLP) ha hecho que de un tiempo a esta parte se comience a tratar ampliamente en las esferas técnicas y de negocio sobre el uso de los chatbots o bots conversacionales.
¿Qué son exactamente y para qué se están utilizando los chatbots?
Un bot es una aplicación capaz de efectuar tareas de forma autónoma, interactuando con humanos a través de un canal de comunicación. Puede efectuar una búsqueda, una reserva, o lanzar un proceso automático a petición de un usuario y habitualmente se comunica con él en lenguaje natural.
Los Chatbot son “conversadores” automáticos diseñados para utilizar una interfaz de chat entre el bot y el usuario humano.
Para que un chatbot pueda ser una herramienta útil, es fundamental que tanto el reconocimiento de la voluntad del usuario como la respuesta configurada sean correctas.
Microsoft, Slack e IBM principalmente, están apuntando numerosos esfuerzos al desarrollo de esta tecnología.
Numerosas compañías integran ya chats automáticos con distintos propósitos. Por ejemplo en Slack, el servicio de mensajería para la comunicación interna en empresas, los chatbots ayudan a gestionar tareas relacionadas con el trabajo, como gastos o tareas pendientes.
Por su parte, la plataforma Kik Mssenger, que cuenta con 275 millones de usuarios, acaba de lanzar una tienda de bots con diversas funcionalidades.
Los ayudantes virtuales enmarcados dentro de esta tecnología son ya un clásico en compañías como Ikea, o Renfe a nivel estatal.
¿Qué perspectivas abren?
Hemos escuchado hablar últimamente de cambios de paradigmas en las aplicaciones móviles, directamente relacionados con las interfaces de usuario. ¿Qué necesidad hay de mantener en memoria unas aplicaciones pesadas de banca, de seguros, salud… que habitualmente son complejas y muy poco usadas? Sería razonable en este caso sustituir este modelo de aplicaciones por un software mucho más ligero, que permita acceso a funcionalidades específicas y que además no requiera actualizaciones para completar nuevas demandas en caso de que aparezcan.
Los bots abren aquí un nuevo camino en el desarrollo de aplicaciones. Interfaces complejas y pesadas pueden ser sustituidas por “gestores virtuales” en la medida en que éstos sean capaces de actuar como canal para la búsqueda, el procesado y el acceso a información.
Los ayudantes virtuales en el caso de las aplicaciones web también permiten un acceso guiado o directo a contenido sin necesidad de buscarlo a través de diversos menús. Si estas aplicaciones son capaces de tramitar con éxito acciones más complejas, como pedidos, búsquedas o soporte, el terreno está abonado para el desarrollo de chatbots en lugar (o como complemento) de interfaces gráficas.
¿Qué riesgos sufren?
Los bots encarnan también una serie de riesgos bastante obvios relacionados con la experiencia de usuario, y es que en el fondo, a nadie le gusta hablar con una máquina salvo que ésta reaccione de una manera razonablemente inteligente. En este ámbito es donde parece que la IA relacionada con el procesamiento del lenguaje natural ha avanzado lo suficiente como para comenzar a ofrecer propuestas comerciales, aunque se sigue requiriendo de una evaluación en detalle de los riesgos que provoca la interacción con estas herramientas.
¿Quién está implicado en la tecnología?
La multinacional Microsoft y la plataforma Slack son dos de la compañías que más están apostando en la creación de estos modelos. También destaca Google, una de las empresas que cuenta con más servicios para ejercer la inteligencia artificial. IBM está apostando de una manera decisiva por las aplicaciones cognitivas a través de su plataforma Watson.
En decide hemos trabajado fundamentalmente con Watson tanto en prototipos como en aplicaciones comerciales, por disponer del modelo más sencillo de diseño de conversaciones sumado al motor NLU que incluye la plataforma.
2. FUNCIONALIDADES
Los chatbots tienen una amplia gama de posibilidades en todos los sectores. Se ha detectado una serie de modelos genéricos de uso, entre los que se incluyen:
- Asistencia de procesos. Los chatbots han sido probados en distintas plataformas comerciales con éxito en el ámbito de la ayuda a operaciones. En el caso de aplicaciones corporativas pueden reducir considerablemente el tiempo de aprendizaje de sistemas complejos. Estos bots pueden ser completados con información de contexto sobre la transacción que se está efectuando en la página padre para precisar la información concreta que el usuario necesita. Multitud de aplicaciones web tienen sistemas de ayuda y consulta desplegadas.
- Repositorio de conocimiento. Usando un modelo plano de conversación pregunta-respuesta en el que las conversaciones tienen poca profundidad se aprovecha la comprensión del lenguaje natural minimizando el riesgo de problemas de contexto o cambios de tema por parte del usuario. Este caso aplicaría a un asistente para búsqueda en páginas, o en un caso más extremo la demostración que realizó IBM con Watson en el concurso americano Jeopardy.Una aplicación que incluya un repositorio general de conocimiento puede usar un sistema NLU para precisar búsquedas o incluso aprender de las necesidades de los usuarios
- Plataformas interactivas. Los bots capaces de realizar acciones en segundo plano en función de las demandas de usuario permiten ejecutar transacciones complejas bajo petición. Podríamos poner aquí el ejemplo de determinados asistentes que permiten comprar productos desde el propio chat. Este modelo permite prácticamente prescindir de determinados interfaces gráficos.
3. CONSIDERACIONES GENERALES DE DISEÑO
La tecnología base de los chatbots suele consistir en una aplicación que ejerce de orquestador para las conversaciones, y un sistema NLP usado como servicio (IBM Watson, Microsoft Luis, API.AI…)
El orquestador se encarga de gestionar el canal de comunicación, así como de intervenir en la conversación y procesar las acciones relevantes en cada momento, dependiendo de las funcionalidades implementadas. Los canales más frecuentes son Slack, FacebookMesenger, Skype o clientes web directos.
Los mensajes de usuario se analizan en la parte que aplica el NLP.
Estos modelos separan principalmente dos conceptos fundamentales en el análisis del lenguaje; la “intención”, que es el sintagma relacionado con la acción o de forma más genérica con el concepto general de frase y las entidades, que son los objetos o especificidades que son detectados de forma automática.
Los NLP devuelven una respuesta en función del análisis de los elementos anteriores que puede estar organizada por el propio servicio (Caso de Watson Conversation), o devuelven directamente los elementos analizados para que nuestro sistema orquestador sea el encargado de responder en función de este análisis previo que se ha realizado. (Este caso sería el que aplicaría si nos decidimos por tecnologías que no dispongan de gestores de diálogo como Microsoft Luis).
El ciclo de una conversación seguiría por tanto el siguiente camino:
1. El usuario envía un mensaje al canal.
2. La aplicación orquestadora recibe el mensaje, y puede tratarlo, invocar con él a un servicio externo (por ejemplo, un api de Sentiment para detectar antes de continuar si el usuario está extremadamente cabreado) o directamente entregarlo al NLP al que está conectado.
3. El NLP detecta el mensaje de usuario y lo interpreta. Señala cual es la intención del mensaje, que entidades contiene y devuelve el análisis o la respuesta.
4. La aplicación orquestadora puede interceptar el mensaje de vuelta para reprocesarlo, o generarlo directamente con la información del NLP.
4. SISTEMAS COMERCIALES
Existe en el mercado una amplia oferta de APIs públicas que permiten dotar a nuestro chatbot de características técnicas y analíticas y pueden conseguir que un ayudante casi tan poco hábil como el clip de Word se convierta en un asistente útil. Comentamos a continuación dos modelos genéricos de API que hemos utilizado en nuestros proyectos y prototipos de manera habitual.
Cómo decidir que enseñar al bot contando con la experiencia del usuario (Text Clustering)
Supongamos que disponemos de una gran aplicación corporativa relativamente compleja, que utilizan centenares de gestores. El conocimiento relativo al uso y manejo de la aplicación se encuentra a disposición de los usuarios a través de un chatbot. Al igual que los humanos, este sistema no cuenta con absolutamente todas las respuestas. ¿Cómo podríamos encontrar sus puntos débiles para completarlos? Mediante la aplicación orquestadora, hemos diseñado un sistema que permita a los usuarios añadir sus preguntas (a las que no han encontrado respuesta) y que el bot las almacene en una base de datos. Sirviéndonos después de la inteligencia analítica, podemos volcar todas las preguntas sobre un proceso de clústering de texto, que nos agrupará las dudas por temas, palabras clave, relevancia, etc.
De esta manera y de una forma rápida, podemos almacenar todas las dudas que surgen del uso del bot, y descubrir después cuales son los puntos débiles de su conocimiento para poder completarlo.
Cómo tomar decisiones distintas en función del estado de ánimo del usuario (Sentiment Analysis)
Dentro de las aplicaciones corporativas, el análisis del tono del mensaje puede ser una cuestión menor, pero con vistas a establecer un canal de comunicación con clientes, esta herramienta adquiere una importancia crucial. Hablar con una AI puede llegar a ser desesperante, y esto está en la mente de cualquiera que lo haya intentado.
Si colocamos un filtro previo de análisis de sentimiento de los mensajes de usuario podremos darnos cuenta de la necesidad de un usuario concreto en una situación específica de hablar directamente con un gestor, evitando así los problemas derivados de una experiencia negativa de usuario.
5. SISTEMAS AVANZADOS
Trabajando sobre la inteligencia de los sistemas cognitivos en conversaciones nos hemos hecho una pregunta: “¿Cómo podemos añadir características más avanzadas de inteligencia artificial y nuevos modelos de aprendizaje?”
Los modelos NLU privados tienen a nuestro juicio algunas restricciones. En primer lugar son modelos de “caja negra” en el sentido en que no permiten operar sobre las estrategias de comprensión de frases o entidades. En segundo lugar, la habilidad de comprender una intención a partir de una frase,depende del nivel de completitud.
Sobre la primera restricción no se puede avanzar en la medida en que se requiera usar estos sistemas. Sin embargo, para el problema que surge de la necesidad de que el gestor técnico de la aplicación sea capaz de corregir las respuestas menos satisfactorias, hemos encontrado un diseño interesante.
- Aprendizaje supervisado-correctivo sobre el conocimiento del bot. Si tenemos un chatbot que gestiona la atención a usuarios, o el acceso a un repositorio de conocimientos, es habitual que esté gestionado por un experto en la materia.Manteniendo una comunicación efectiva con los usuarios, o directamente haciendo uso del chat bot, estos gestores pueden detectar que aparecen respuestas incorrectas en función de la formulación de la pregunta. Cuando se da este caso habilitaremos un modo “supervisor” en el que el bot devuelve las respuestas estándar, pero pregunta si la respuesta es correcta, permitiendo a su vez señalar otra respuesta como más precisa y manteniendo este aprendizaje a futuro.
- Aprendizaje directo desde la interfaz. De la misma manera, un bot puede ser configurado en un modo “maestro” para aprender directamente nuevos conocimientos. El gestor solicita añadir una pregunta, puede formularla de una o varias maneras para mejorar el entendimiento, y añade una respuesta que formará desde ese momento parte del aprendizaje del chatbot. A este mecanismo se le puede añadir un punto más de inteligencia para que el usuario pueda añadir una única pregunta en lugar de varias formulaciones, como veremos en el punto siguiente.
6. NUESTRO BOT
En decide hemos implementado todas las funcionalidades y opciones que hemos tratado en este artículo. Algunas de ellas están incluidas en el ayudante de esta página.
Este chatbot ofrece información sobre la compañía como, que hacemos, nuestros valores y objetivos, que tecnologías usamos, etc. Además ofrece una serie de datos generales sobre proyectos y muestra información sobre soluciones que ofrecemos en cada uno de los distintos sectores en que hemos trabajado cuando detecta que le estamos preguntando sobre alguno de ellos. También permite solicitar información para trabajar con nosotros, enviar preguntas para ofrecer una respuesta personal por parte de RRHH o pedir información de contacto. Tiene también la capacidad de aclarar conceptos específicos pidiéndole que lo busque («busca optimización» por ejemplo).
En cada mensaje que recibe establece un análisis de sentimiento sobre el texto, y contesta de manera distinta si encuentra un estado muy negativo en la frase del usuario (independientemente de que tuviera otra respuesta preparada)
Guarda todas las preguntas que no entiende para poder hacer un análisis posterior de las interacciones, y permite a su vez enviar preguntas directas, que quedan registradas con el correo del usuario para poder contestar de forma personal.
Por otro lado, al hilo del punto anterior, este chatbot tiene la capacidad de aprender de forma directa nuevos conocimientos desde la propia interfaz. Hemos añadido un modo “maestro” en el que un usuario puede añadir una cuestión nueva y que ésta sea aprendida de forma casi inmediata por el bot*. (La carga es inmediata, pero es necesario contar con el tiempo de entrenamiento del NLU, en este caso Watson invierte algo menos de un minuto en entrenar).
Distinguir una pregunta concreta que solamente se verbaliza una vez es un trabajo complicado, así que hemos añadido otra capa de procesamiento neuronal de la pregunta que se va a introducir en el sistema, permitiendo así hacer un análisis sintáctico para añadir más elementos en la entrada de Watson, que serán los que luego clasifiquen la intención.
Supongamos que el usuario quiere añadir la pregunta ”Como distinguir una bici de un coche”
La capa que hemos introducido como servicio, enviaría una nueva intención a Watson que contará con las siguientes entradas:
- Como distinguir una bici de un coche
- distinguir
- bici
- bicicleta
- biciclo
- coche
- auto
- automóvil
De esta manera el usuario (en modo maestro) introducirá también una respuesta, que será la que entregue el bot a la pregunta, “Como distinguir una bici de un coche” aunque también sabrá responder de igual forma si se plantea “Quiero saber de que manera puedo distinguir una bicicleta de un automóvil”
* Para entrar en el modo maestro y enseñar conocimientos al bot teclee «master», para salir «stop-master». Por motivos de seguridad, cada usuario solo puede ver las respuestas que él mismo le enseñe durante un periodo de dos días.
7. CONCLUSIONES
El campo del procesamiento natural y las tecnologías relacionadas con la comprensión del lenguaje está comenzando a despegar. Numerosas compañías están implicadas con multitud de recursos en su desarrollo, y el campo de estudio es amplio y complejo. Es probable que en los próximos tiempos encontremos grandes avances técnicos, y esto a su vez permita nuevas funcionalidades y posibilidades de implementación.
Nosotros por nuestra parte, ya nos hemos lanzado a la tarea de descubrir los entresijos de esta tecnología, y ha resultado tan provechoso como entretenido.
Javier Martínez Valbuena, Adrián Bueno Jiménez