acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170wp-user-avatar domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170The post Cómo construir un chatbot «sin código» first appeared on Planeta Chatbot.
]]>Después de esa «fase chatbot» inicial, empecé a fijarme en los modelos ML y en otras técnicas relacionadas con el ámbito de la Data Science. Ahí es donde he estado durante un año más o menos. Hace poco, tuve una conversación con alguien sobre las herramientas que utilizamos en el trabajo. Entramos en una discusión sobre Slack, y cómo funcionaba (o no funcionaba) con otras herramientas y repositorios de información que utilizamos. Mi amigo dijo: «Si hubiera una forma de consolidar todas las mejores fuentes de información…«. DING, DING, DING. Cuando oí eso, volví a mi antigua mentalidad de chatbot.
Pensé en cómo el conocimiento institucional en nuestro entorno parece estar capturado por Slack, que tiene un montón de preguntas del tipo «con quién hablo…», y «dónde está el proceso para…». Muchas de esas preguntas las responden los responsables técnicos de la comunidad. También tenemos varias bases de conocimientos con distintos tipos de información técnica. ¿No sería estupendo poder encontrar rápidamente esa información? De repente, esto suena como el tipo de caso de uso en el que solía trabajar con mis clientes, cuando utilizábamos chatbots y asistentes virtuales para resolver sus problemas de comunicación e intercambio de conocimientos.
He creado MUCHOS chatbots, casi todos basados en el motor de Watson Assistant. Con cualquier buen chatbot, siempre es de ayuda tener una idea del dominio de conocimiento que quieres abordar, y una idea de cómo te gustaría que fuera tu experiencia de usuario. Te ayuda a tomar decisiones más adelante y a mantenerte centrado. En este momento tenía un par de «requisitos» que me rondaban la cabeza. Eran más o menos así:
Mi proceso de pensamiento era que el usuario final quería hacer una pregunta, con la esperanza de que alguien hubiera hecho una pregunta similar antes en Slack, o que tuviéramos contenido sobre el mismo tema general en algún repositorio de conocimiento. Si el usuario final recibía un conjunto de enlaces con una breve descripción, podía determinar si el enlace devuelto era algo en lo que valía la pena profundizar para buscar una respuesta, o si estaba escrito por un experto que podría ayudarle a responder a su pregunta. Nos interesa el CONTEXTO (quién es el autor de un artículo, quién ha formulado una pregunta, quién ha respondido a una pregunta, etc.) tanto como la respuesta.
Este fue un punto importante para mí. Me permitió tener éxito por varias razones:
Una vez definido el ámbito de aplicación, mi proyecto fue bastante fácil de imaginar. Toda la arquitectura se reducía a esto:
Tendría un Watson Assistant front-end para proporcionar soporte de integración y soporte para una variedad de posibles experiencias de usuario final (Slack-bot, chatbot, móvil, etc.). Empezaría con un bot de Slack. Watson Discovery sería el motor que devolvería resultados de búsqueda basados en la pregunta del usuario final. Discovery puede extraer palabras clave, relaciones y conceptos, y debería ser capaz de devolver una lista de materiales relevantes. El «músculo» de la solución sería la minería de la amplia variedad de repositorios, de modo que podamos ingerir el contenido, enriquecerlo y proporcionar la información básica para el usuario final.
Esta minería de repositorios necesitaría código (adiós a mi chatbot «sin código»). Una vez configurado, quería que fuera fácil de mantener para cualquiera, no sólo para alguien que supiera Python.
El primer paso fue empezar a implementar las piezas de Watson Assistant. Para mis pruebas, podía utilizar la capacidad de prueba de «sample website» disponible en Watson Assistant. También pude utilizar la integración con Slack para ofrecer una interfaz coherente (y fácil de usar) a mis usuarios finales. Hacer todo esto fue bastante fácil y sencillo.
Lo siguiente fue configurar la integración de Watson Discovery. Esto también es muy fácil. En la documentación se denomina «deploying a search skill«. Se trata de proporcionar un nodo de diálogo «catch all» que dirija la pregunta del usuario directamente a una búsqueda en una colección de Watson Discovery. La parte más difícil de esto es saber cómo configurar esta habilidad. Compartiré cómo hacerlo más adelante, así que por ahora, simplemente despliega esa habilidad de búsqueda y utiliza la configuración por defecto.
Toda esta configuración es bastante similar a la del Chatbot de Preguntas Frecuentes que se cubre en la documentación del producto. Sólo hacemos algunas cosas diferentes en torno a lo que proporcionamos al usuario final, y cómo ingerimos el contenido en la colección Watson Discovery.
La parte difícil es obtener la información que necesitamos en nuestra colección Discovery. Intenté utilizar un rastreador web en un par de repositorios diferentes, pero tuve muy poca suerte con ellos porque la mayoría ofrecían contenido dinámico, y el rastreador web no podía acceder al contenido dinámico. También tuve problemas para proporcionar un enlace correcto al contenido de la página. Los rastreadores web no funcionaban para la minería de canales de Slack.
Así que me quedaba hacer algo de código Python. Uno de mis compañeros me proporcionó un código muy bueno para acceder a un canal en particular en Slack, durante un período de tiempo determinado. Esto fue genial – me permitió obtener el contenido de un mensaje de Slack, así como un enlace a la propia publicación.
A continuación, desarrollé un par de rutinas que me permitían obtener información de markdown y de páginas de un repositorio de GitHub, junto con un enlace a la fuente de información. Esto cubría mi capacidad de «rastrear» repositorios de GitHub.
La parte clave aquí fue un pequeño cambio que hice en el repositorio Discovery. Es clave para todo mi caso de uso. Añado algunos campos a los metadatos con CADA elemento que añado a mi corpus Discovery (la colección que utilizo). Con cada elemento, añado metadatos para la URL donde se encuentra el contenido original (para que pueda proporcionar enlaces al contenido original para mis usuarios), una fecha de ingestión (para que pueda «envejecer» o eliminar los datos antiguos en mi corpus), y un tipo de repositorio (porque voy a manejar diferentes repositorios de manera diferente). Con este sencillo paso, puedo podar los datos de mi corpus y hacer que los datos devueltos por Watson Discovery se ajusten a la forma que quiero mostrar con mi Watson Assistant.
Al principio del diseño de mi robot de conocimiento, supe que la reducción de los datos de mi corpus sería fundamental. El problema era que el conocimiento tiende a cambiar con bastante rapidez: cosas que hoy pueden ser ciertas, mañana son falsas. Las buenas prácticas cambian con el tiempo. Así que tenía que asegurarme de que mi corpus contuviera sólo los mejores datos y los más oportunos. Afronté el problema desde dos direcciones distintas.
En primer lugar, creé un algoritmo rápido que recorría todo el contenido de mi corpus (la colección Watson Discovery) y lo clasificaba por tiempos. Como algunos de mis repositorios eran más fluidos que otros, establecí un tiempo de caducidad específico para cada repositorio. Así, mientras que en un repositorio sólo podía tener en cuenta las cosas que tenían 90 días o menos, en otro repositorio sólo podía confiar en las cosas que tenían 45 días. Esto me dio la flexibilidad de adaptar mis criterios de retención para cada repositorio.
La segunda dirección desde la que abordé esta cuestión fue más estratégica. La mayoría de las aplicaciones de inteligencia artificial ingieren tantos datos como pueden, en un intento de «aprender» todo lo posible. Yo iba a hacer lo contrario. Iba a ser muy específico en mi selección de repositorios de datos. Sólo quería canales de Slack ESPECÍFICOS, los que tuvieran los mejores debates y el mayor número de expertos participantes. También quería únicamente repositorios de información ESPECÍFICOS. No iba a indexar toda la información que encontrara. Quería los repositorios que tuvieran reputación de tener materiales precisos y de alta calidad. Esto significaba que podría obtener menos respuestas, pero tenía el efecto de proporcionar resultados más específicos y de mayor calidad a mis usuarios finales.
La otra pieza que es un poco diferente es la configuración de la habilidad de búsqueda en Watson Assistant. Dado que mis resultados se mostrarían en Slack o en una página web, quería asegurarme de que los usuarios de ambas plataformas pudieran acceder fácilmente a ellos. Así que acabé devolviendo información muy específica.
Fui a la parte de integración de búsqueda de Watson Assistant y elegí metadata: repository_type para el título devuelto, seleccioné metadata:summary para el cuerpo y devolví metadata: URL para la URL devuelta. A continuación, configuré la cantidad para que devolviera sólo los tres primeros resultados.
Esto probablemente parezca muy extraño, ya que en realidad devuelvo muy poco texto (el resumen debe configurarse explícitamente durante la ingesta) o información al usuario final. Cuando se utiliza esto en Slack, o en un navegador web, lo que se devuelve es un conjunto de tres enlaces, con el título del repositorio del que proviene la respuesta, un pequeño resumen y un enlace a la fuente de información. A continuación, Slack ampliará uno o dos de los enlaces devueltos y el usuario final obtendrá una buena serie de enlaces que podrá utilizar para encontrar las respuestas o las personas que podrían ayudarle. Recuerda que, cuando analizamos nuestros requisitos, nos preocupaba más la ORIENTACIÓN que las respuestas. En el futuro, si veo que estamos devolviendo respuestas relevantes con un alto grado de precisión, puede que sólo devuelva los dos primeros enlaces.
Una vez que lo tuve todo listo, solo tuve que dirigirlo a los repositorios adecuados, vincularlo a una instancia de Slack disponible, seleccionar los canales de Slack apropiados para recopilar conocimientos y ponerlo en marcha. Lo desplegué en una instancia de Watson Studio en la nube de IBM y lo convertí inmediatamente en una tarea que se ejecutaría una vez al día. El resultado fue que, una vez que todo estaba conectado, tenía una tarea por lotes que se ejecutaba una vez al día y actualizaba automáticamente mi corpus en función de los repositorios que quería consultar. Incorporaba nuevos contenidos, actualizaba los actuales si habían cambiado y eliminaba los datos antiguos. Se mantenía solo, exactamente lo que yo quería.
Así que ahora todo lo que tengo que hacer es echar un vistazo a mi proyecto en Watson Studio una vez cada pocos días, y asegurarme de que los registros de mis trabajos nocturnos son agradables y limpios. Una vez al mes, más o menos, revisaré la lista de fuentes de información «fiables» y añadiré o eliminaré repositorios en función de lo que me digan mis expertos en la materia.
Escribí esto como una manera de capturar lo que aprendí a través de este proceso, y como una manera de compartir algunos enfoques que funcionaron para mí. Hice esto porque veo un montón de organizaciones que luchan por conseguir que el aprendizaje automático y la IA trabajen para ellos de una manera muy real o significativa. Muchas organizaciones tratan erróneamente de seguir el consejo y el enfoque de las personas que crean las GRANDES aplicaciones de IA (como GPT-3). Esas aplicaciones y enfoques son válidos para las áreas problemáticas a las que se dirigen, pero la mayoría de las personas tendrán problemas DIFERENTES que están tratando de resolver, y por lo tanto necesitan adoptar enfoques DIFERENTES.
Si estás buscando algo similar a esto, y te gustaría ver el código que he utilizado para este proyecto, por favor ponte en contacto conmigo. Estaré encantado de discutir el enfoque aquí, y para compartir mi cuaderno de Python y el código con todos vosotros.
The post Cómo construir un chatbot «sin código» first appeared on Planeta Chatbot.
]]>The post Los asistentes de voz y la detección de nombres propios no siempre funciona first appeared on Planeta Chatbot.
]]>Uno de mis clientes deseaba que un asistente de voz entendiera y respondiera preguntas sobre personas, y que tuviera la capacidad de reconocer los nombres de las personas sobre las que se preguntaba. Esto requeriría un modelo de Speech-to-Text (STT) personalizado que pudiera escuchar las declaraciones del usuario y traducirlas en nombres de personas. En este escenario, mi cliente quería poder manejar una amplia variedad de nombres y apellidos diferentes. También querían poder manejar una variedad de diferentes acentos en inglés.
Este cliente en particular ha estado escuchando a una variedad de “expertos” de la industria y profesionales comerciales sobre cómo la IA responderá a todas sus preguntas y resolverá todos sus problemas… si tan solo le dieran una oportunidad. Las personas a cargo del negocio analizan las cosas que pueden hacer los asistentes domésticos y otras aplicaciones comerciales, y sienten que este tipo de cosas deberían ser factibles, fáciles de hacer y relativamente rápidas de implementar.
Podrías estar lidiando con algo similar. Si es así, haz que tu equipo lea este artículo. Les ayudará a comprender las dificultades para hacer algunas de estas cosas y les dará expectativas más realistas.
Esto es EXTREMADAMENTE difícil de lograr para un servicio Speech-to-Text (STT), debido a la variabilidad casi infinita en la pronunciación y la ortografía de los nombres de las personas.
La mayor parte de esto no es exclusivo de ninguna subcultura de nombres (las personas a menudo luchan con los nombres indios, árabes y asiáticos), sucede con los nombres en general. Recuerda que el contenido que leerás a continuación, está pensado para nombres en inglés, pero que se puede aplicar a cualquiera de estos idiomas.
Piensa en un nombre como «Dawn». Las pronunciaciones comunes del nombre podrían traducirse en el nombre Dawn (lo que quieras), o en el concepto de «amanecer», el nombre del producto «Dawn», el apellido masculino «Don», la dirección «abajo», la acción de » dibujado ”, el ruido“ din ”, etc. (es decir, todas las cosas que no quieres que sean). Esa confusión es toda por un nombre de una sola sílaba, femenino, anglosajón.
Ahora considera las complejidades de un nombre de varias sílabas. ¿Y qué hay del revoltijo aparentemente aleatorio de letras que parecen ser algunos nombres? Como seres humanos, a menudo abreviamos los nombres de las personas para evitar situaciones como esta, solo para no estropear constantemente los nombres de las personas. Hacemos esto con mi apodo, «Tox», para que la gente no pronuncie mal mi apellido de «Toczala» (que se pronuncia TOKS ALLA). Lo hacemos por Bob, Cindy, Mike, Candy, Joe y otros, y la base de esos nombres es bastante común.
Otro factor que puede dificultar la diferenciación de nombres es la estructura de muchos nombres, independientemente del idioma de origen. Algunos nombres son términos de una sola palabra o compuestos del idioma. Nombres como Cooper, Hammersmith, Wordsworth, Ginger, Penny y otros. También tiene problemas al tratar con algunos de los nombres «más nuevos» y las convenciones de nomenclatura que se han seguido en los últimos años. ¿Cómo esperas que tu servicio STT traduzca “M. Night Shyamalan ”? ¿Qué pasa con «North West«? ¿O «Daisy Bloom«? Peor aún, ¿qué hay de los nombres con acciones incrustadas en ellos? ¿Como «Christopher Walken«? o «Paige Turner»? ¿Cómo reconoces los nombres, los verbos y la puntuación en esto? Ni siquiera me refiero a «búfalo búfalo búfalo búfalo búfalo búfalo búfalo«. Nuestros sistemas necesitan algunas pautas a seguir, algunas reglas y patrones básicos a seguir. Cuando se trata de nombres y títulos de personas, las reglas del idioma parecen quedar suspendidas, lo que hace que sea extremadamente difícil para un asistente de voz hacerlo bien.
Entonces, con todos los desafíos que mencioné anteriormente, puedes ver por qué este caso de uso es difícil de implementar. Aumentamos esa dificultad cuando pedimos hacer esto con una amplia variedad de acentos del habla. Tienes múltiples variedades de inglés americano (acento común del Medio Oeste, acento de Brooklyn, acento de Boston, etc.), así como el inglés británico más refinado que la mayoría de los hablantes de la India utilizarán. Luego están los diversos acentos en inglés con tintes latinos (algunos podrían llamarlo spanglish) que escuchas de las personas que tienen el español como primer idioma y el inglés como segundo idioma. Comencemos con la frase, «Estacione el auto, tome el boleto y pague la tarifa». Ahora imagina entender esto como lo dicen cuatro personas diferentes:
Obtendrás cuatro traducciones muy diferentes. Las primeras tres palabras pueden ser todas diferentes entre estos cuatro hablantes diferentes. Incluso un modelo de lenguaje altamente personalizado como Siri (que está altamente especializado para el habla general y una variedad de acentos), lucha constantemente con los nombres y los acentos de las personas.
El último factor de complicación (como si lo anterior no fuera lo suficientemente difícil) es la idea completa de la ortografía. Los nombres se escriben de una manera que no se parece a la forma en que se pronuncian. Los ejemplos típicos de esto incluyen nombres como «Nguyen», «McConaughey», «Weinstein», «Jesús», «Baughman» y otros. Estos nombres están escritos de una manera que no podría predecirse por la forma en que se pronuncian. Y los nombres tienen múltiples grafías por todas partes: ¿es “Andy”, “Andi” o “Andee”? ¿»Tony», «Toni» o «Tone»?
Entonces, ¿por qué todas estas excusas sobre lo difícil que es el reconocimiento de nombres en general? ¿Por qué nos esforzamos tanto en personalizar nuestros asistentes de voz? ¿Cuál es la recompensa? ¿Cuál es el valor de llamar a Tox por su nombre de pila?
Teniendo en cuenta todos estos desafíos, construir y mantener un modelo de lenguaje altamente eficiente y preciso para algo como esto sería costoso (en términos de tiempo y dinero). Y todavía sufriría inexactitudes y fallas en cosas como homófonos (nuevo, conocido, gnu), colisiones de nombres (smith, smythe) y todos los otros casos que he descrito anteriormente. En el panorama general, ¿vale la pena todo el trabajo y la complejidad? ¿No sería todo ese esfuerzo más productivo si estuviera dirigido a otra cosa que tuviera un impacto más definido en el rendimiento de tu asistente de voz y en la satisfacción general de tus usuarios finales? ¿Quizás gastar ese esfuerzo en configurar algunas pruebas automatizadas?
Te sugiero que leas el artículo Why The Overall Voicebot Solution And User Experience Are More Important Than Speech Accuracy de Marco Noel. Es una excelente descripción general de cómo un asistente de voz es más que un servicio de Speech-to-Text, y cómo debe ver tu experiencia de usuario final de manera integral, desde la perspectiva de tu usuario final.
Un enfoque que valdría la pena explorar es hacer que las personas intenten deletrear los nombres de las personas que les interesan y luego dejar que los usuarios «filtren y seleccionen» a la persona que desean. A menudo, los asistentes humanos requerirán que deletree un nombre para ellos; estamos acostumbrados a hacerlo.
Debes tener MUCHO cuidado con la cantidad de información (y el tipo de información) que proporcionas; divulgar información personal sin ningún control puede ser arriesgado (y contraviene el RGPD y restricciones regulatorias similares).
Los clientes con sistemas que devolverán información personal a los usuarios, a menudo requerirán algún tipo de validación de cuenta o inicio de sesión, momento en el que ya SABES el nombre de la persona (y cómo se escribe). También tienden a no depender de los nombres, sino que utilizan números de identificación o alguna otra información clave única para identificar a los usuarios. Los nombres no son únicos, ni tampoco las direcciones.
Otro enfoque sería intentar traducir los nombres e inmediatamente fallar al deletrearlos. A medida que pasa el tiempo, tu modelo STT puede mejorar y tu bot solicitará la ortografía con menos frecuencia. Pero esto requeriría el compromiso de trabajar constantemente para mejorar y administrar tus modelos personalizados STT específicos para nombres. Deberías agregar continuamente datos de personalización en forma de un nombre y la pronunciación fonética del nombre. Parece mucho trabajo y costo para algo con un valor limitado.
Entonces, la verdadera conclusión aquí es la siguiente: no intentes obtener los nombres de las personas de los motores de voz a texto. Es demasiado difícil y requiere demasiado esfuerzo para soportarlo. No hay nada de malo en personalizar la experiencia de tus usuarios finales, pero obtén esa información de nombre de otro modo, así será más sencillo y el resultado será óptimo.
The post Los asistentes de voz y la detección de nombres propios no siempre funciona first appeared on Planeta Chatbot.
]]>The post Nace el grupo de usuarios de la Watson Chatbot first appeared on Planeta Chatbot.
]]>Una de las solicitudes más comunes que he estado recibiendo últimamente son las preguntas sobre “¿Cómo nos va en comparación con…?”. Mis usuarios y clientes están ansiosos por descubrir y compartir las mejores prácticas para el desarrollo de sus chatbots. Algo de esto es de naturaleza más técnica y de codificación, centrado en cómo se ve el chatbot, cómo incluirlo en una página web, cómo integrarlo en Facebook o cómo interactúa el chatbot con los usuarios. Algunas de estas preguntas sobre mejores prácticas se centran más en la información que se comparte y cuáles han sido algunas de las solicitudes más populares de los usuarios finales.
También escucho de otras personas dentro de IBM, que necesitamos una forma para que nuestros usuarios puedan compartir sus experiencias, sus victorias, sus frustraciones y otra información importante. Así que he decidido que es hora de crear un grupo de usuarios de Watson Chatbot (WCUG).

El grupo de usuarios de Watson Chatbot (WCUG) será una reunión semanal, con una agenda determinada por el propio grupo de usuarios. Proporcionaré algunos temas potenciales para el debate, pero quiero dejar la agenda y la priorización de la lista de temas semanales hasta el propio grupo de usuarios. Si al grupo le gustaría tener una presentación de un experto en la materia de IBM, en alguna área de la tecnología de chatbot, haré todo lo posible para que esas personas se presenten al grupo de usuarios.
Los objetivos principales de este grupo de usuarios son proporcionar un foro abierto para que las personas discutan las mejores prácticas y técnicas que funcionan en el mundo real, para el desarrollo de soluciones basadas en chatbot. Quiero promover el intercambio de conocimiento y contenido que permitirá a todos los miembros de la comunidad proporcionar soluciones de mayor calidad y mayor valor para sus propios usuarios finales.
Este no va a ser una charla centrada en los pros de los productos de IBM, no se trata de un encuentro comercial. Los temas y la agenda serán conducidos por la comunidad. Estoy interesado en lo que tú quieres resolver, aprender o compartir. Solo quiero proporcionar un lugar seguro para compartir conocimientos, comunicarse y colaborar.
En este momento, este grupo de usuarios se está despegando. Por lo tanto, no
tenemos ningún tipo de registro automático o ubicación permanente para alojar los activos aprobados por la comunidad. Entonces, si deseas participar en estas llamadas, envíame tu nombre y tu correo electrónico a dtoczala@us.ibm.com. Te agregaré a la invitación a la reunión semanal.
Una vez que comencemos, proporcionaremos un hogar más permanente para la comunidad, así como algunas áreas donde la comunidad puede colaborar y compartir información.
The post Nace el grupo de usuarios de la Watson Chatbot first appeared on Planeta Chatbot.
]]>The post ¿Cómo hacer cambios en tu chatbot en Watson Assistant? first appeared on Planeta Chatbot.
]]>Para comprobar qué tal funciona tu chatbot, debes realizar algunas pruebas automáticas. Esto te ayudará a obtener algunas medidas objetivas de la precisión y el rendimiento del chatbot, y también te dará una idea de las áreas en las que tu chatbot podría mejorar. Ten en cuenta que probar aplicaciones cognitivas es fundamentalmente diferente de probar aplicaciones más tradicionales. Las aplicaciones tradicionales se basaban en pruebas de ruta y cobertura de código. Debido a la naturaleza no determinista de las aplicaciones cognitivas, terminamos teniendo que usar modelos estadísticos para nuestras pruebas.
Permíteme recomendarte SERIAMENTE el uso de los cuadernos de Python que destaco en las siguientes líneas. Se pueden ejecutar en tu consola o desde Watson Studio. Son un excelente punto de partida para el análisis automatizado de tu chatbot. Con el tiempo, puedes mejorar estos cuadernos y ampliar algunas de las técnicas de prueba que contienen:
¿Tienes la sensación de que necesitas saber un poco de Python? Yo también. No tienes que ser un experto en Python para hacer nada de esto, pero al menos debes entender los conceptos básicos de Python y cómo usar y manipular los portátiles de Python. No te dejes intimidar, no necesitas saber TODO antes de comenzar, simplemente entra y aprende cosas sobre la marcha.
Algunos escenarios de administración de cambios se habilitan utilizando la nueva capacidad de control de versiones de Watson Assistant. Esta versión es un poco diferente a algunas versiones a las que podrías estar acostumbrado: no es como un típico desarrollo de software, paradigma de verificación. En cambio, es más como un paradigma de establecimiento de línea base, donde se crea una versión (o baseline) como una instantánea del modelo en algún momento. El estado actual del modelo (que se ve en la interfaz de usuario) es siempre la punta o la versión de desarrollo.
Entonces, si entras en tu Watson Assistant Plus y adquieres tu habilidad, simplemente tienes que hacer clic en “Versiones” en la barra de navegación de la izquierda, y verás la pantalla de versiones.


Para soltar una nueva versión (o baseline), simplemente haz clic en el enlace “Save a new versión”, ubicado en la esquina superior derecha. Luego debes completar algo útil (¡piense en convenciones de nombres!) para la descripción, antes de presionar “Save”. Hablaremos más sobre las convenciones de nomenclatura a continuación, cuando comencemos a hablar sobre algunos flujos de trabajo de gestión de cambios típicos.
Un flujo de trabajo de gestión de cambios te permitirá examinar, contener y luego implementar cambios fácilmente en tu chatbot. Lo que propongo aquí es algo que podría no satisfacer a un “DevOps Purist”, ya que tenemos recursos de producción y desarrollo / prueba que residen en el mismo servicio.
Ten en cuenta que este enfoque PUEDE modificarse fácilmente para que, en lugar de mover las versiones dentro de una instancia de Watson Assistant, podamos exportar el modelo de un entorno de Watson Assistant (digamos el entorno de prueba) y luego importarlo a otro entorno (digamos El entorno de producción). Estos entornos podrían ubicarse en diferentes grupos de recursos, con acceso individualizado y permisos personalizados para cada entorno / grupo de recursos.
Entonces, sin más explicaciones, aquí hay una vista de alto nivel de un proceso de administración de cambios simple y típico para tu chatbot Watson Covid-19:
Ten en cuenta que no he sido específico sobre los tickets / problemas / herramientas que utilizaré. Solo confío en que estás utilizando algún tipo de control de cambios, no importa cuán simple sea. Recuerda que es necesario tener un espacio en el que se vayan subiendo las posibles actualizaciones y cambios para luego APROBAR esas solicitudes. El objetivo de este proceso es evitar la pregunta: “¿Por qué hiciste eso?”. Puedes implementar esto en la nube de IBM (una versión gratuita de GitHub alojada en la nube de IBM), donde puedes hacer una gestión de cambios real, o puedes usar tus herramientas e infraestructura de gestión de cambios existentes. Depende únicamente de ti.
El simple proceso de administración de cambios descrito anteriormente funcionará para implementaciones simples, y probablemente sea lo suficientemente robusto para un chatbot que no se espera que se implemente a largo plazo. ¿Qué pasa con la gestión de cambios para chatbots más establecidos? ¿O para los chatbots que forman parte de un sistema más grande que actualmente se encuentra bajo algún tipo más formal de gestión de cambios? ¿Qué podemos hacer en esos casos?
En esos casos, y para los usuarios que desean una gestión de cambios más sólida y formal o una infraestructura DevOps, querrán leer este artículo de Williamson de Leigh. Leigh es un compañero mío que ha invertido mucho tiempo pensando en esto y, lo que es más importante, ha pasado algún tiempo implementando este tipo de sistemas de gestión de cambios.
Entonces, si has estado siguiendo esta serie de publicaciones, es que estás implementado un longtale chatbot que responde las preguntas de Covid-19. Has aprendido cómo actualizar ese chatbot y cómo probar y controlar la versión de los cambios que quieras implementar. ¿Qué queda por hacer? En este punto, ya sabes lo suficiente como para ser peligroso: puede ser el momento de llenar algunos de esos vacíos de aprendizaje. Las publicaciones de mi blog te dicen exactamente lo que necesitas saber, pero hay muchas otras técnicas y capacidades de Watson que puedes usar para mejorar aún más la experiencia del usuario final. Tal vez deberías consultar algunos de los recursos de aprendizaje específicos de Watson Covid-19 que están disponibles.
The post ¿Cómo hacer cambios en tu chatbot en Watson Assistant? first appeared on Planeta Chatbot.
]]>The post Claves para aumentar el potencial de tu Watson Chatbot first appeared on Planeta Chatbot.
]]>Los primeros dos casos son implementaciones clásicas de la tecnología Watson Assistant, representan asistentes inteligentes que responden preguntas frecuentes. Estos se manejan con bastante facilidad y se pueden implementar con bastante rapidez utilizando las capacidades existentes de Watson Assistant. Llegar a este primer nivel es bueno. Pero, ¿qué pasa con ir al siguiente nivel: llegar a ese caso de uso de asistencia de agente y esas preguntas más complejas?
El tercer conjunto de casos de uso de uso de chatbots requiere responder preguntas más complejas. Esto es a lo que algunas personas podrían definir como “long tale chatbot”. Este tipo de chatbots requerían en el pasado algún tipo de aplicación de colaboración, que transmitiría estas preguntas de cola larga a una instancia del servicio Watson Discovery.
Aunue este sistema funcionaba, requería de habilidades técnicas y la coordinación de servicios entre dos servicios diferentes de Watson (Watson Assistant y Watson Discovery). Esta realidad era un problema para algunos de nuestros clientes más pequeños, o nuestros clientes que tenían equipos de desarrollo más pequeños. Lo mismo podría decirse de los clientes que habían subcontratado el desarrollo de su chatbot.
Respondiendo a estas preguntas más difíciles es donde se pueden obtener algunas de las partes más importantes de esos beneficios económicos (¿recuerdas esos cinco dólares por conversación?). También puede ayudar a proporcionar niveles mucho más altos de satisfacción del cliente y compromiso del cliente. ¿Imaginas poder guiar a tus clientes a encontrar sus propias respuestas a los problemas que tienes en tu base de conocimiento interna? ¿No ayudaría esto a acelerar la resolución de los problemas del cliente y mejorar la satisfacción del cliente?
Ahora con Watson Assistant Plus, puedes hacer esta integración de Watson Assistant y Watson Discovery sin escribir ningún código. Funciona bien y las mejoras se pueden obtener rápidamente. El concepto clave para entender el funcionamiento de esta nueva funcionalidad es la skill de búsqueda. Esta se utiliza para enrutar consultas complejas de clientes al servicio IBM Watson Discovery, por lo que puedes considerarla como la habilidad requerida para buscar una respuesta en un conjunto de documentos. Esto contrasta con la habilidad de diálogo, que es la estructura de un diálogo que se utiliza para determinar la intención del usuario y responder los tipos de preguntas short tale (FAQ).
Conectarse al servicio Discovery es solo una parte de la solución. Aún debes configurar y crear un conjunto de documentos que se utilizarán para alimentar la skill de búsqueda en el servicio Watson Discovery. Deberás crear una nueva colección en Watson Discovery e ingerir algunos documentos que sean relevantes para proporcionar las respuestas que te interesan. Debes pensar qué tipo de información tienes disponible y dónde reside esa información. ¿Puedes acceder a ella fácilmente para incluirla? ¿Puedes mantener las cosas actualizadas y continuar ingiriendo nuevos datos?
Entonces, conocer la disponibilidad de esta sencilla integración es positivo, pero ¿cómo se ve exactamente? Si eres un usuario estrictamente comercial sin interés en cómo funciona esto, puedes dejar de leer aquí. Aquí es donde comienzan todos los aburridos detalles técnicos…
Pero si eres un developer que quiere saber cómo configurar esta herramienta, te recomiendo que sigas leyendo. En este caso, comencé con una instancia de Watson Assistant Plus (pero también funciona con instancias Premium), y tenía un chatbot simple que respondía muchas preguntas diferentes del tipo short tale. Teníamos una habilidad de diálogo bastante compleja, con un par de docenas de intents diferentes y unas pocas docenas de entidades diferentes.
Al entrar y chequear tu instancia de Watson Assistant, se verá así:

Página de inicio de Watson Assistant Plus
Tendrás la opción de crear un nuevo Asistente presionando el botón “Create Assistant” y, seguidamente, deberás proporcionarle un nombre. Además, deberás incluir una breve descripción de lo que tu asistente es capaz de hacer.
Crear pantalla de asistente
En este punto, estás listo para comenzar a extender tu chatbot original. Verás una nueva pantalla que te permite elegir una skill de diálogo, así como una skill de búsqueda. Para la skill de Diálogo, elegirás la misma skill que habías estado utilizando en el pasado. Si haces clic para entrar en la skill, ahora verás algunas capacidades nuevas (como Desambiguación) que están disponibles para implementarlas en el asistente. Puedes obtener más información sobre estas capacidades adicionales y las implicaciones de fijación de precios al consultar los planes de fijación de precios de Watson Assistant.
Agregar sus habilidades de diálogo y búsqueda
Lo que va a diferenciar nuestro chatbot y hacerlo “más inteligente” es la inclusión de la integración de Watson Discovery para abordar esas preguntas de “long tale”. Así que ahora vamos y agregamos una skill de búsqueda. Para ello, haz clic en el botón para agregar una skill de búsqueda y se abrirá un cuadro de diálogo donde ahora puedes elegir entre una skill de búsqueda existente (si ya había creado una) o una nueva Crearemos una nueva y le daremos el nombre adecuado.

Luego presionamos el botón Continuar, y ahora necesitaremos seleccionar una instancia de Discovery (debes tener una buena estrategia de clasificación y nomenclatura de tus servicios; en momentos como este, las razones se vuelven obvias) y una colección dentro de esa instancia de Discovery. En este punto, yo ya había creado una colección en mi instancia de Discovery, por lo que podía seleccionar la instancia y la colección correctas, y seguir adelante y configurar mi chatbot. Si lo necesitas, es posible que debas hacer una pausa aquí e ir a crear una nueva instancia de Discovery, así como una colección para mantener tu base de conocimiento. Asegúrate de crear la colección Discovery del tamaño correcto (consulta mi artículo sobre este tema) . No queremos tener gastos inesperados.
Entonces, una vez que hayas creado tus instancia y colección Discovery, y la hayas seleccionado como tu skill de búsqueda, ahora se le presentará la pantalla de configuración final para tu skill de búsqueda. Aquí es donde tu relación con el servicio de Discovery es esencial. Todos los enriquecimientos de datos y metadatos que se recopilaron cuando ingresaste los documentos en tu colección Discovery ahora estarán disponibles para ayudarte a configurar tu integración.
Buscar configuración de habilidades
Veamos las cosas que puedes configurar aquí y analicemos el impacto que tienen en tu chatbot. Un gran impulsor de lo que ves aquí son los enriquecimientos que has seleccionado hacer a medida que ingresas documentos en su colección Discovery. Estos enriquecimientos se aplican a medida que se ingiere su contenido y proporcionarán más contexto para los datos.
En mi caso, agregué categorías, conceptos, palabras clave y entidades como enriquecimientos para buscar en el contenido que estaba ingiriendo. También quería proporcionar una URL al artículo original para mis usuarios del chatbot, por lo que tuve que terminar usando una pequeña utilidad (más sobre eso en el futuro; era una pequeña rutina agradable escrita por un CSM)).
Entonces, el primer campo para configurar es el título. Para esto, seleccioné el título del artículo ingerido. Ese es el título que mis usuarios verán devuelto como una respuesta potencial para su consulta de “long tale”. El segundo campo es el cuerpo de tu respuesta. Como nuestro chatbot era un Slack-bot, optamos por mantenerlo en blanco, ya que nuestras respuestas comenzaban a ser demasiado largas para la típica interfaz de usuario de Slack. Luego elegimos la URL del artículo original para devolverla como URL. Esto significa que cualquier pregunta que se enrute a nuestra skill de búsqueda devolverá los tres títulos de artículos mejor clasificados (con enlaces) que se relacionan con una pregunta del usuario.
Los tres ajustes de configuración en la parte inferior también son importantes. Estas son las respuestas que se devuelven para una variedad de condiciones. El campo “Mensaje” es el texto conversacional que se devuelve cuando encuentra información relevante. El campo “No se encontraron resultados” es el texto de conversación devuelto donde no se pueden encontrar respuestas relevantes en tu colección Discovery. Finalmente, el campo “Problema de conectividad” es el texto conversacional que se devuelve cuando no se puede acceder al servicio. Es importante tener diferentes mensajes para cada uno de estos, para que puedas determinar rápidamente cómo la colección Discovery responde a las entradas de tu chatbot.
Entonces, ahora que tienes esto configurado, ¿cómo funciona? El resumen en la documentación en línea proporciona una visión general de cómo funciona esto, pero puedes cambiar parte del comportamiento cambiando las cosas en tu skill de diálogo. Si observas tu skill de diálogo, notarás que la respuesta en la celda “Cualquier otra cosa” ahora es “skill de búsqueda”. Tiene la capacidad de acercarse y utilizar tu skill de búsqueda (e incluso modificar la consulta y el filtro utilizados para extraer información de la colección Discovery) desde cualquier parte de tu diálogo.
Los chatbots pueden tener un gran impacto financiero en una organización, y uno de los casos de uso más típicos (el caso de uso de asistencia de agente) es mucho más impactante y efectivo cuando el chatbot tiene sus capacidades ampliadas para poder manejar preguntas de “long tale”. Watson Assistant ahora proporciona una integración fácil, “sin código”, al servicio de Watson Discovery, para permitir que una organización extienda fácilmente las capacidades de sus chatbots controlados por Watson Assistant.
The post Claves para aumentar el potencial de tu Watson Chatbot first appeared on Planeta Chatbot.
]]>