Maratón Behind the Code Latinoamérica: Sé parte del Desafío. Inscríbete antes del 7 de Setiembre.

Un enfoque híbrido para integrar Watson Assistant en un sitio existente

Watson Assistant, anteriormente conocido como Watson Conversation, brinda unas excelentes bases técnicas para construir aplicaciones que pueden entender y responder utilizando lenguaje natural, como los canales de mensajería, las aplicaciones web y los asistentes virtuales. Gracias a la popularidad de este tipo de tecnología, los chatbots se pueden encontrar virtualmente en todos los lugares.

Sin embargo, no todos los chatbots son iguales, así que las expectativas de los usuarios pueden variar enormemente. Algunos chatbots pueden parecer como el famoso Watson Jeopardy AI, mientras que otros pueden parecer más unas preguntas y respuestas interactivas, que solo ofrecen respuestas largas y genéricas para preguntas específicas. Los usuarios pueden sentirse entusiasmados o abrumados según su primera interacción, y esa experiencia influye en si van a volver. Lamentablemente, no siempre es posible realizar una capacitación amplia en un chatbot naciente. Cuando no se capacita lo suficiente a los chatbots, sólo hablarán al usuario sobre lo que están capacitados, lo que no siempre va a ayudar a un usuario que tenga una pregunta específica. O pueden degradarse para realizar una búsqueda peor de la que una interfaz de búsqueda adecuada puede proporcionar.

Para muchas personas, la búsqueda sigue siendo un medio efectivo de encontrar respuestas, y los usuarios pueden enfrentarse a la desconcertante elección entre descubrir un chatbot nuevo o permanecer con la búsqueda. Estas son dos soluciones diferentes en la que su funcionalidad puede solaparse, especialmente si el chatbot es frecuentemente forzado a degradarse para buscar. Si el chatbot no satisface sus expectativas iniciales, pueden volver a la búsqueda y evitar usar el chatbot de nuevo. Cuando se ofrece una elección, las primeras impresiones son críticas para la adopción a largo plazo. Si hay otras alternativas al chatbot abandonado, es posible que los usuarios no vuelvan incluso si posteriormente se realizan enormes mejoras.

Otra consideración es el rol del lenguaje natural. Los chatbots requieren de un abundante vocabulario que incluye sinónimos, frases hechas y términos técnicos en la base de conocimiento adecuada. Los usuarios se pueden ver forzados a adivinar y, después, memorizar un vocabulario específico, y se pueden producir malentendidos. El soporte para lenguaje natural es una valiosa herramienta, pero el reconocimiento de sus limitaciones puede proporcionar una mejor experiencia general al usuario. Por ejemplo, no permita que el soporte de lenguaje natural se interponga en el uso de palabras clave. En las manos adecuadas, una búsqueda de palabras clave que utiliza características avanzadas, como comillas, variables booleanas, exclusiones e inclusiones, puede ser increíblemente efectiva. La solución ideal permite la utilización adecuada de términos de búsqueda de palabras clave y del lenguaje natural.

Cuando estábamos considerando integrar esta tecnología en una aplicación existente, exploramos un enfoque nuevo que podría superar muchas de sus carencias mientras sacamos el máximo provecho de esta emocionante tecnología nueva.

Búsqueda híbrida: un enfoque diferente para el chatbot con el que usted creció

Nuestro enfoque evita estos problemas al integrar las tecnologías de búsqueda y del chatbot en una interfaz de usuario única basada en un paradigma de búsqueda típico, eliminando la necesidad de elegir entre sistemas competidores. El sistema de búsqueda existente tiene un robusto motor de búsqueda basado en palabras clave que utiliza Apache Solr y que ha sido ajustado para ser considerada como una solución por sí misma. Basándonos en esto, utilizamos Watson Assistant junto con los resultados de Solr. Este enfoque de «búsqueda híbrida» alinea las expectativas de los usuarios con lo que pueden esperar de un motor de búsqueda tradicional. Sin embargo, cuando Watson Assistant es capacitado con un propósito específico, además de ser capaz de entender el lenguaje natural, puede responder al usuario con algo que usualmente no esperaba, una respuesta a una pregunta que puede ir más allá de lo que puede entregar un motor de búsqueda tradicional o un formulario de autoservicio.

Este enfoque tiene muchas ventajas. Usando como base un paradigma de búsqueda tradicional, siempre se devuelven resultados de la búsqueda, pero Watson sólo ofrece una solución cuando ha sido capacitado específicamente para ello.Esto es extremadamente útil para escalar el componente Watson con más capacitación a lo largo del tiempo. Aunque los chatbots tradicionales se degradan para buscar, el enfoque de búsqueda híbrida evoluciona para hacerse más inteligente a medida que pasa el tiempo según es capacitado para más soluciones.

Otro punto de divergencia es limitar el uso del lenguaje natural para identificar el propósito correcto de Watson y, en su lugar, proporcionar un enfoque restringido o de semiguía para la presentación del diálogo de la conversación. Por ejemplo, el usuario introduce la frase, «quiero restablecer mi teléfono móvil» en un chatbot tradicional, el diálogo puede presentar una lista y preguntar al usuario cual quiere restablecer. En este punto, el usuario puede introducir una respuesta válida o algo totalmente diferente que puede causar problemas al flujo de la conversación. Como poco, puede restablecer la conversación al punto inicial y seguir una ruta diferente o hacer que Watson pregunte de nuevo.

Nuestro enfoque fue restringir para que el usuario eligiese de un conjunto de selecciones para las que Watson había recibido capacitación. Para la misma indicación acerca de restablecer un dispositivo, nuestra búsqueda híbrida responde con un conjunto de alternativas predefinidas, una para cada dispositivo que esté registrado y una para «no está en la lista». Esto reduce el riesgo de un malentendido que se podría presentar si se hubiese aprovechado el lenguaje natural, elimina las conjeturas.

reiniciar mi iOS

Para ampliar la idea de sólo proporcionar opciones válidas, también añadimos inteligencia al frontal para detectar los diferentes tipos de respuestas que se pueden devolver desde Watson. Por ejemplo, si determinamos que la respuesta es una «opción de soporte» (por ejemplo, un número de teléfono, crear un ticket o iniciar un chat con un humano), la información se mostraría en un formato tipo tarjeta con la que el usuario puede interactuar. Además, si se devuelve una lista de documentos, la UI recupera información acerca de los documentos, para que el usuario pueda elegir mejor sin tener que abrirlos. Watson puede notificar a la UI que introduzca texto con formato (por ejemplo, un número de serie) o en forma libre. Estos tipos de controles son los básicos para los formularios interactivos que pueden proporcionar una experiencia de soporte más rica.

Escritura anticipada (resultados rápidos) cuando se busca con Watson

Nuestra aplicación implementa un patrón de resultados de escritura anticipada donde se muestra una lista rápida de los principales resultados a medida que el usuario introduce información en la barra de búsqueda. Cuando empezamos a integrar Watson en la búsqueda nos encontramos con algunas limitaciones. A medida que un usuario está escribiendo una cadena de caracteres de búsqueda, la aplicación verifica con cada carácter que se escribe para ver si hay un resultado al que pueda llevarle directamente. Esta llamada se tiene que realizar muy rápido. La aplicación no puede esperar a que Watson devuelva la respuesta después de que estando en IBM Cloud cree una sesión, realice una coincidencia de intenciones y, después, componga la respuesta. Otro problema es que la respuesta que Watson devuelve puede ser un formulario, un documento, una definición de soporte una solicitud de más información. Esto no encaja en el paradigma de búsqueda rápida o de escritura anticipada. Finalmente, está el factor costo. Watson es un servicio medido, en el que se paga según su uso. Es aproximadamente un ratio de 10-20 veces las búsquedas de escritura avanzada en lugar de la búsqueda completa.

restablecer contraseña notes

Para permitirnos incluir intenciones basadas en Watson en los resultados rápidos, desarrollamos un servicio personalizado que extrae información del corpus de Watson Assistant que la aplicación utiliza. En este servicio, utilizamos las APIs existentes de Watson para recuperar todas las intenciones y la información del diálogo para cada corpus. La información del diálogo se utiliza para extraer las intenciones de más alto nivel (es decir, los puntos de entrada a un flujo de la conversación de un usuario). Este conjunto se puede restringir aún más eliminando las intenciones no críticas, como «conversation_start» y «anything_else.» Después de filtrar las intenciones principales, extraemos los ejemplos de Watson para las interacciones. Lógicamente, consideramos que una intención y sus ejemplos son un «documento». Los documentos resultantes se almacenan en Solr junto con el otro contenido que ya ha sido indexado. Este proceso se ejecutó por la noche.

diagrama watson conversation

Ahora, cuando el usuario empieza a escribir una consulta de búsqueda, demostramos resultados del contenido original que está en Solr junto con las principales interacciones que pueden iniciar una conversación con Watson. Para nuestros propósitos, añadimos la marca a las intenciones de Watson y las potenciamos por encima del otro contenido para demostrar la nueva tecnología. Desde el punto de vista de un usuario, en el área de resultados de la escritura anticipada ve la primera intención del ejemplo como un resultado positivo. Si la selecciona en el menú desplegable, le llevamos a los resultados de la búsqueda completamente híbrida con la intención ya pasada a Watson como si el usuario la hubiese introducido. Esto permite crear una sesión de Watson y garantizar resultados positivos.

Soporte para el procesado de lenguaje natural con búsqueda basada en palabras clave

A medida que los usuarios se familiarizan cada vez más con la integración de Watson en nuestra aplicación, esperamos que empiecen a realizar más búsquedas con procesamiento de lenguaje natural (NLP). Anteriormente, un usuario podía introducir una búsqueda basada en palabras clave como «conectar a vpn» para encontrar ayuda sobre cómo conectarse a la VPN corporativa. Cuando se empiecen a dar cuenta de que Watson también observa lo que ellos introducen, los usuarios inteligentes podrán empezar a introducir frases completas como «no me puedo conectar a la VPN desde mi casa».

La utilización de frases de NLP crea un problema con la potencial degradación de la calidad de los resultados de búsqueda. A partir de las búsquedas que hemos realizado, hemos llegado a la conclusión de que Solr no funciona bien con las frases NLP. Para ayudar a equilibrar los resultados, añadimos funciones del componente OpenNLP. Este componente puede leer una frase y extraer las diferentes partes del discurso. Utilizamos esta capacidad para extraer las frases del nombre y del verbo, con lo que en la práctica creamos una búsqueda de palabras clave a partir de la frase introducida. Al introducir el ejemplo NLP previo en el procesador, los resultados serían parecidos a lo siguiente:

I_PRP can't_MD connect_VB to_TO VPN_NNP from_IN home_NN

Observe en el resultado anterior que el prefijo es una abreviatura del tipo de expresión en el que está la palabra.

Con sólo extraer las frases del nombre y del verbo, obtendríamos un conjunto de palabras clave «conectar IBM casa». Esta lógica sólo se aplicaría si la cadena de caracteres de entrada superase un umbral específico de palabras (por ejemplo, 5 o más). Este nuevo conjunto de palabras clave se utilizaría con la cadena de caracteres original para construir un resultado combinado que incluiría las coincidencias exactas y las palabras clave. Observe que solo enviaríamos la cadena original a Watson, quien realizaría su propia coincidencia de intenciones con NLP. En la práctica, desde el punto de vista del usuario obtenemos lo mejor de ambos mundos.

Solución técnica

Ahora, algunos antecedentes sobre la aplicación. Es una arquitectura de microservicios que se implementa utilizando imágenes de Docker. Cada servicio se aloja en una imagen de Docker diferente y se implementa en un entorno de alta disponibilidad. Para facilitar el soporte de las opciones que se han comentado anteriormente, hemos hecho los siguientes cambios a la arquitectura de la aplicación. Observe que lo que se muestra representa una vista simplificada de la arquitectura, y que tiene un número de servicios no afectados que no se muestran por razones de claridad.

arquitectura para integrar watson

Lo siguiente es una descripción rápida de los componentes que se muestran arriba:

  • UI del sitio de soporte: esta es la aplicación web del frontend que el empleado utiliza para interactuar con el sistema.
  • Servicio de contenido: este microservicio se utiliza para realizar búsquedas y para recuperar información del almacén de contenido en diferentes tipos de documentos. Para facilitarlo, utiliza una combinación de CouchDB y Solr.
  • Apache Solr: motor de indexado de búsquedas de código abierto y rápido.
  • Servicio de agregación: este es un servicio nuevo que permite que una interfaz compuesta única para la UI haga llamadas para recuperar y combinar información de Watson y de orígenes de aplicaciones existentes. Incluimos esto como punto de expansión para cuando integremos más servicios de Watson y datos externos de otros sistemas.
  • Servicio de orquestación: creamos esta capa para ser un servicio de envoltorio y de integración de Watson Assistant porque utilizaremos los mismos espacios de trabajo para otras capas de la presentación (por ejemplo, chatbot o unidades de respuesta de voz). Nos permite aumentar y mejorar las respuestas desde un flujo de diálogos con información que se almacena fuera de la conversación.
  • Apache OpenNLP: un componente de procesamiento de lenguaje natural que utilizamos para identificar partes del discurso.

Cuando un usuario entra en un término de búsqueda, se utilizan los siguientes flujos. El primero representa el flujo de escritura anticipada. Observe que toda la búsqueda ocurre dentro de la aplicación y que los intentos indexados representan los puntos de entrada potenciales a Watson Assistant.

diagrama de busqueda por tecleo
  1. La UI envía la consulta de entrada actual introducida junto con otra información pertinente acerca del usuario (personalización, nivel de autenticación, etc.) al punto de entrada del servicio de escritura anticipada.
  2. El servicio de agregación determina el tamaño de la frase de entrada. Si supera el tamaño especificado para el número de palabras, se llama a OpenNLP para extraer la frase nombre-verbo principal.
  3. El servicio de agregación llama a Solr para ver si la frase actual coincide con algunos de los ejemplos de intenciones indexadas. La respuesta tiene que ser rápida y la consulta Solr sólo es de las 2 o 3 principales coincidencias de intenciones, porque esto es para ser usado desde el punto de vista del usuario.
  4. El servicio de agregación también llama en paralelo al punto de entrada del servicio de contenido existente para recuperar los resultados de la escritura anticipada. Luego, pasa la cadena de búsqueda original o la frase nombre-verbo dependiendo de lo que ocurrió en el Paso 2 anterior. Este conjunto de resultados también se limita a los 2 o 3 principales.
  5. El resultado para este flujo es que el usuario verá un conjunto de los principales aciertos potenciales tanto del contenido existente como de los principales intentos (el usuario ve el primer ejemplo de la intención) como punto de entrada a una conversación. Si el usuario selecciona la intención de Watson, lanza el proceso de búsqueda híbrida que se describe a continuación.

En el flujo de búsqueda híbrida se invoca a Watson como parte del proceso. Si Watson vuelve con un nivel de confianza lo suficientemente alto con algo que puede ayudar a la consulta del usuario, el usuario es orientado a través de la interacción junto con los resultados existentes de una búsqueda heredada.El flujo es el siguiente:

diagrama de busqueda hibrida
  1. La UI envía la consulta de entrada junto con otra información pertinente acerca del usuario (por ejemplo, personalización o nivel de autenticación) al punto de entrada del servicio de escritura anticipada.
  2. El servicio de agregación llama al servicio de orquestación para iniciar una sesión con Watson.
  3. El servicio de orquestación llama a Watson y crea una sesión.
  4. El servicio de orquestación determina si Watson tiene un nivel de confianza suficiente para la respuesta, después, aumenta la información con cualquier dato necesario. Si el nivel de confianza no es lo suficientemente alto, el servicio de orquestación dice al servicio de agregación que Watson no tiene nada para el usuario.
  5. El servicio de agregación determina el tamaño de la frase de entrada. Si supera el tamaño especificado para el número de palabras, se llama a OpenNLP para extraer la frase nombre-verbo principal.
  6. El servicio de agregación también llama al punto de entrada del servicio de contenido existente para recuperar los resultados basados en las palabras clave. Luego, pasa la cadena de búsqueda original o la frase nombre-verbo dependiendo de lo que ocurrió en el Paso 2 anterior.
  7. El resultado para este flujo es que el usuario ve un conjunto de los principales aciertos potenciales tanto del contenido existente como de los principales intentos (el usuario ve el primer ejemplo de la intención) como punto de entrada a una conversación. Si el usuario selecciona la intención de Watson, lanza el proceso de búsqueda híbrida.

Conclusión

La búsqueda híbrida es una nueva forma de utilizar IBM Watson Assistant sin algunas de las limitaciones de los chatbot tradicionales. Este enfoque le permite tener lo mejor de ambos mundos: un motor de búsqueda robusto, que está acompañado por la tecnología de la IA que es capaz de evolucionar a medida que Watson recibe más entrenamientos según pasa el tiempo. Los usuarios avanzados retienen el poder de las palabras clave y de las técnicas de búsqueda avanzada, mientras que otros pueden simplemente preguntar con lenguaje natural. Aunque la integración con la búsqueda y los resultados rápidos haya presentado algunos desafíos únicos para la arquitectura, hemos destacado algunas soluciones técnicas que pueden ayudar a que otras personas que lo adopten hagan despegar su propia aplicación de búsqueda híbrida.