Crea tu primera conversación con Watson Assistant

Kevin Javier Reyes
My Bots Latam
Published in
7 min readDec 29, 2018

Actualmente es frecuente toparse con asistentes virtuales que te facilitan la solución de algún problema o te ayudan con preguntas frecuentes sobre algún producto o servicio. Y una de las características de estos es que pueden entender el lenguaje natural, saber nuestras intenciones al preguntar algo y entender lo que deseamos.

Pues, aunque suene a algo sacado de ciencia ficción ya es posible acceder a esta tecnología de manera fácil y barata, actualmente hay empresas que ofrecen esos tipos de servicios cognitivos y una de ellas es IBM que ofrecen Watson Assistant. Un servicio de NLP (Procesamiento de lenguaje natural) dentro de su IA Watson.

Este servicio es uno de los tops actualmente. Ya que su precisión al momento de entender es muy alta, su dashboard muy amigable y la flexibilidad al momento de crear flujos de conversación es muy sencilla.

En este Post te guiare por algunas de las características que te ofrece Watson Assistant y para ello crearemos un flujo de conversación muy sencillo.

Importante:

  • El post pretende llegar a cualquier persona que se les hace difícil dar el primer paso o que quieren una base para iniciar a explorar sobre NLP.
  • Debes de tener una cuenta bluemix para acceder a este servicio ( http://console.bluemix.net)
  • El JSON del flujo que se creara lo puedes encontrar en github https://github.com/DevSylar/MiPrimerFlujoWatsonAssistant una ves descargado solo se tendrá que exportar al Skill.

Crear el servicio y lanzar la herramienta

Una ves iniciado la sesión en bluemix tenemos que ir al catalogo, buscar la sección de “IA” y seleccionar el servicio de “Watson Assistant”.

Cuando termine de cargar la pagina nos pedirán asignarle un nombre a nuestro servicio y luego lo podremos crear en modo LITE (Obvio que tiene restricciones, pero sirve mucho para pruebas).

Una ves creado nos dirigimos a “Manage” y lanzamos la herramienta.

Creando un skill de conversas

Una ves lanzada la herramienta observaremos una pestañas nombrada “Skills”, en el cual al presionarlo nos dara la opcion de poder crear un skill de conversacion. Siguiente completamos los campos indicados para crear el skill. Veremos una nueva vista con tambien pestañas de Intents, Entities, Dialog y Content Dialog.

Creando Intents

¿Qué es una intención?, pues una inteción en assistant es la forma de expresarte (Hablando o escribiendo) sobre una acción en especifica. Para intentar referirte a un saludo tú puedes decirlo de muchas formas (hola, que tal, buenos días, buenas tardes, etc), pero al final lo que intentas expresar es un saludo y para ello el dashboard de assistant te permite agregar intents. Una ves presiondado “agregar intent” podras darle un nombre a tu intención y posteriormente agregarle formas de referirte a esa intención.

Si aun no te queda claro la función que pueden tener los intent no te preocupes en la parte de creación de un dialogo tendra mas sentido

Creando Entities

¿Qué es una entidad?, una entidad abstractamente puede ser cualquier cosa que agrupe tipos. Por ejemplo si quiero tener la entidad abarrotes a este se le agrupan los tipos de abarrotes como (Bebidas, Piqueos, etc). Si bien parece simple la agrupación del ejemplo, watson assistant te permite agregar sinonimos de estos tipos de abarrotes, cuando nos referimos a bebidas podemos no referirnos genéricamente a bebida si no a gaseosas, aguas minerales o ect. Pero al final nos referimos al tipo bebida detro de la entidad abarrotes.

Watson Assistant te ayuda sugiriéndote algunos sinónimos para los tipos de tu entidad.

También puedes habilitar a tu skill entities que ya fueron creados, como en este caso exportare @sys-number que contiene la formas de expresar a un numero en especifico(se habilita solo cambiando off).

Creando un Dialogo

Sin dudad los dialog son uno de los componentes mas poderosos en assistant y si bien esta de mas explicar que es un dialogo, bueno en assistant un dialogo es el camino que puede tomar la conversacion pasando de nodo a nodo y saltando entre ellos teniendo estos como llaves de entradas la validación de intents, entities y contexto de la conversaciòn.

Por defecto al crear el dialogo se crean 2 nodos(Bienvenido y En otras cosas).El que nos importa conservar es “En otras cosas” ya que cuando no se pueda validar la entrada en ninguno de los nodos automáticamente entrara a este nodo.

Modificaremos el nodo Bienvenido para modificar “if assistant recognizes” de la acción “welcome” a nuestro intent de Saludo que creamos .

Ya modificado, creamos un nodo hijo presionando los 3 círculos de la derecha del nodo.

Cuando el flujo ingrese al nodo padre el flujo tendrá mas prioridad de ingresar a los nodos hijos.

A este hijo le agregamos el intent Comprar(este intent no muestro como lo cree por tiempo, pero básicamente contiene ejemplos de las formas de referirse alguien a comprar algo).

Aquí viene una característica muy interesante que son los “Slots” que se tienen que habilitar en la opción “Customize” y luego habilitarlos cambiando off a on.

Una ves habilitado podremos ver una nueva sección que te permite validar si en el input encontramos la entidad @abarrote ,que si se encuentra se guardara el tipo en la variable $abarrote y si no te hará un repregunta pediendo que ingreses un tipo de barrote.Y agregaremos dos respuesta de tipo texto la primera con “Ok, asì que quieres comprar $abarrote” y la otra preguntado “cuantas unidades necesitas?”.

Por ultimo queda crear un nodo hijo dentro del nodo “Comprar” en donde esperara “anything_else” es decir cualquier input entrara y validaremos por Slots que en dicho input exista la entidad @sys-number que nos ayuda a saber la cantidad que desea el cliente. y también agregamos un mensaje final “Entonces tu pedido es de $number unidades de $abarrote.

Con esos terminamos nuestro flujo básico y solo resta probar en la opción “Try it”. Empezamos saludando con “Hola”, se valida con el intent #Saludo del nodo Bienvenido y nos imprime la respuesta.Seguidamente indicamos que “queremos comprar cervezas“ y esto con prioridad se valida con el nodo hijo Comprar, validando que el input corresponde a el intent #Comprar y a la ves se encuentra un entitie Abarrote del tipo bebida(ya que “cerveza ” corresponde al tipo bebida).Validado esto se imprime la respuesta y se observa que la palabra que empezaba con “$” fue cambiada por la variable del mismo nombre en los slots.

Por ultimo ingresamos un número que indica la cantidad de unidades que deseamos, igualmente con prioridad ingresa al nodo Cantidad validando que existe en el input la entitie @sys-number y imprimimos el ultimo mensaje indicando la cantidad de unidades y el tipo de abarrote que compraremos.

--

--