Cómo crear un Bot de forma sencilla: Probamos con nuestra Datapedia

Thursday, July 5, 2018

Cómo crear un Bot de forma sencilla: Probamos con nuestra Datapedia

Tras unos meses de trabajo, al fin ha visto la luz el Diccionario Tecnológico de LUCA. Nuestra Datapedia particular (Lucapedia para los amigos). Y hemos pensado que una buena forma de presentarla es contaros cómo, a partir de un contenido en formato "Pregunta/Respuesta" como éste, se puede crear un Bot de forma sencilla. ¿Queréis saber cómo se hace?

Figura 0: Portada del Diccionario Tecnológico LUCA.
Figura 0: Portada del Diccionario Tecnológico LUCA.


¿Qué es un bot? ¿Y un chatbot?


Bot, chatbot, talkbot, chatterbot, asistente conversacional, asistente virtual etc no son más que distintas formas de ponerle nombre a programas informáticos que se comunican con nosotros como si fueran humanos. Así, los bots pueden hacer muchas tareas, algunas buenas, como comprar entradas para un concierto, desbloquear la cuenta de un usuario, u ofrecer opciones para reservar una casa de vacaciones en unas fechas concretas;  y otras no tanto, como realizar ciberataques, o provocar una catástrofe financiera realizando operaciones bursátiles a alta velocidad.

Los bots (diminutivo de “robot”) pueden estar diseñados en cualquier lenguaje de programación y funcionar como cliente, como servidor, como agente móvil etc. Cuando se especializan en una función específica se les suele llamar “Sistemas Expertos”.

Al igual que ocurrió en su día con el desarrollo de la interfaz gráfica frente a la línea de comandos pura y dura, los bots suponen una manera de hacer accesible a cualquier usuario, herramientas y servicios que antes requerían un mayor nivel de competencia digital. Además, como veremos más adelante, son capaces de aprender de nosotros, y tomar decisiones basadas en la información que les proporcionemos.

Los chatbots o bots conversacionales son sistemas de inteligencia artificial que simulan una conversación con una persona utilizando el lenguaje natural. Por ejemplo, son capaces de mantener una conversación de mensajería instantánea de forma muy similar a como lo haría un humano. Así, si estás preparando tus vacaciones en una agencia de viajes online, muy probablemente aparezca una ventana de chat en la esquina inferior derecha ofreciéndote ayuda para resolver cualquier duda que tengas.  A tu disposición 24 horas al día, todos los días del año. Es por ello que su potencial es tan grande. Además, el chat es canal preferido por el público en general, y por los Millennials en particular.

Muchos chatbots están orientados a reemplazar las famosas FAQ (Frecuently Asked Questions) y, por tanto, aparentemente no agregan un gran valor diferencial con respecto al uso de otros canales como la página web o aplicación móvil. Pero, como veremos en este caso práctico, incluso los que realizan esta función, son muchas veces capaces de aprender y aportar valor.

Los bots no son sólo capaces de comprender e imitar el lenguaje escrito. Google Duplex, y Microsoft XiaoIce, por ejemplo, son capaces de realizar llamadas telefónicas para hacer una reserva en un restaurante, pedir una cita en el dentista,  etc como lo haría una persona. Aura, el asistente virtual de Movistar+, te hace recomendaciones en base a tus gustos y te permite ver el partido, buscar una serie, o  cambiar de canal simplemente hablando o chateando con ella. Estas tecnologías también tienen un gran campo de aplicación en entornos empresariales, pudiendo usarse para organizar reuniones de negocio, establecer llamadas de ventas, dar soporte técnico de primer nivel etc


¿Es lo mismo un chatbot que un asistente virtual?


Algunos especialistas opinan que lo que diferencia un bot de un asistente virtual es el alto grado de personalización de éste último. De esta forma, mientras que el chat bot es “la cara” de una empresa, a cuyos códigos o particularidades se tiene que adaptar el usuario para conseguir su objetivo, es el asistente personal el que se adapta al usuario y no al revés. Aunque ésta es una frontera algo difusa.

Una forma más clara de diferenciarlo sería plantearlo en términos de Inteligencia Artificial “vertical”, frente a Inteligencia Artificial “horizontal”. Un asistente digital está programado para cubrir tus necesidades de la mejor forma posible. Es un enfoque genérico una IA general (horizontal). Pero para serte realmente útil, necesitará ser capaz de comunicarse con bots más especializados (IA vertical) cuando tus necesidades así lo requieran. Por ejemplo, con un bot especializado en seguros para ayudarte a elegir el que más te convenga, o con otros como Amy Ingram, para que organice una reunión o cambie por ti unos billetes de avión.


En este post, y como presentación de nuestra “Datapedia”, vamos a explicar lo sencillo que resulta crear un chatbot usando Q&Amaker

La idea de crear una “Datapedia” en la web de LUCA surgió cuando nos dimos cuenta de que había muchas dudas sobre terminología y conceptos de Ciencia de Datos, Inteligencia Artificial y Aprendizaje Automático. Nos planteamos ir creando poco a poco un glosario sobre estos conceptos, tanto en español como en inglés. Y aunque todavía es muy joven y tiene que crecer mucho más, nos pareció interesante presentárosla como ejemplo del tipo de contenido a partir del cual se puede generar un bot.


Pongámonos manos a la obra.


En este post vamos a comprobar que crear un chatbot no es tan complicado como parece. Tampoco es necesario ser un “as de la programación”. Daremos los siguientes pasos aunque, para que no se haga demasiado largo, lo dividiremos en dos post:

  • Crearemos los servicios Q&A en the QnAMaker
  • Crearemos un servicio de bot en Azure
  • Publicaremos el bot y lo pondremos a prueba
  • Y ¡fin!

Lo primero que necesita un bot es algo que le permita interaccionar con los usuarios. Un “cerebro”. Si fuéramos programadores, lo podríamos programar a mano. Pero, como no lo somos, vamos a probar un servicio gratuito que permite publicar las típicas FAQs (preguntas y respuestas frecuentes) en forma de servicio conversacional o chatbot. 

¿Y cómo se hace? Muy sencillo. Lo primero es ir a la web de QnA Maker:

    Figura 1: Portal QnA Maker
    Figura 1: Portal QnA Maker


(Si no tenemos suscripción de Azure, previamente habrá que crear una. Puedes ver cómo hacerlo en este enlace)

Creación del servicio QnA


Una vez aquí, debemos crear una nueva base de conocimiento o Knowledge Base (KB): “Create a Knowledge Base”

Figura 2: Creación de una base de datos (KB).
Figura 2: Creación de una base de datos (KB).

Se abre la siguiente ventana que resume los pasos a seguir que son:
  • Crear un servicio QnA en Azure 
  • y después, conectarlo a la base de datos (KB) que vamos a generar.

Creamos el servicio mediante el botón:

Figura 3: Botón para crear el servicio.
Figura 3: Botón para crear el servicio.

Se abre un formulario que nos va a permitir definirlo y publicarlo. Le damos nombre, en este caso “Datapedia_LUCA”. Este servicio se desglosa en tres partes:

  • el frontal web de la API (la “cara” del bot para el usuario)
  • el Backend Azure search que va a almacenar la KB y sus índices (el “cerebro” del bot),
  • los Application Insights, que ofrecen la monitorización del sistema

Con este formulario indicaremos dónde queremos ubicar cada una de ellas. Lo ponemos cerca, en “Oeste de Europa”. También habrá que facilitar la información de pricing, que dependerá de la suscripción que tengamos. 


Figura 4: Formulario (1)
Figura 4: Formulario (1)


Figura 5: Formulario (2-Scroll)
Figura 5: Formulario (2-Scroll)


Una vez completado el formulario, le damos a “Crear” y en un par de minutos obtenemos este mensaje: el servicio se ha creado correctamente.



Figura 6: Mensaje de Implementación correcta.
Figura 6: Mensaje de Implementación correcta.


Para nuestra comodidad, lo anclamos al panel. 


Figura 7: Nuestro servicio QnA en Azure.
Figura 7: Nuestro servicio QnA en Azure.
















Si seleccionamos en el menú de la derecha la opción “Todos los recursos” y una vez dentro filtramos por el nombre del servicio, Datapedia, veremos la lista de recursos asociados indicando su nombre, el tipo de recurso que es, el grupo al que pertenece, dónde está ubicado físicamente, y en qué suscripción. Los puntos suspensivos al final de cada fila nos permiten “anclar” el recurso al panel principal.


Figura 8: Lista de recursos asociados al servicio.
Figura 8: Lista de recursos asociados al servicio.

Conexión del servicio QnA con la KB


Una vez creado el servicio en Azure, volvemos a QnAmaker para el segundo paso que había que dar: conectarlo a la base de datos o KB. En este paso tenemos que indicar el directorio activo de Azure y la suscripción sobre los que vamos a trabajar (dependerá como antes, de los que tengamos configurados), y le indicamos el nombre del servicio (Datapedia_LUCA) y el nombre de la KB (Datapedia_KB)


Figura 9: Formulario para conectar el servicio a la KB.
Figura 9: Formulario para conectar el servicio a la KB.


Ya sólo nos quedan dos pasos más. Indicar dónde está el contenido a partir del cual se generará la base de datos o KB, y crearla. En este momento, si tenemos una página web en formato FAQ (contenido en forma de preguntas y respuestas), podemos cargar el contenido tan sólo introduciendo la URL. (Por ejemplo, esta página) Sin embargo, nuestro caso no va a ser tan fácil, porque nuestro diccionario tecnológico tiene dos niveles (respuestas cortas y respuestas ampliadas), y sólo tiene ese formato en el segundo nivel. Pero no hay problema que no podamos resolver con un poco de Excel.


Figura 10: Formulario para crear la KB a partir de una URL o fichero.
Figura 10: Formulario para crear la KB a partir de una URL o fichero.





Crearemos nuestra KB usando un fichero en formato. tsv (tab separated value). Para ello, necesitamos un fichero Excel con tres columnas. Las cabeceras de éstas se deben nombrar como "Question", "Answer" y "Source"- El contenido de la primera columna debe estar escrito de la forma siguiente:  ¿Qué es *****?, y el de la segunda debe contener la definición del término. En la tercera, simplemente, pondremos "Datapedia". Algo así:


Figura 11: Contenido de la Datapedia en Excel.
Figura 11: Contenido de la Datapedia en Excel.


Para guardarlo en formato tsv hay que hacer lo siguiente. Lo guardamos como txt, pero seleccionamos el menú Herramientas (Tools), Opciones Web (Web Options), y como codificación elegimos “Europeo Occidental Windows” (si no lo hacemos, los acentos salen mal). Una vez guardado, cambiamos manualmente el nombre de la extensión txt por tsv. Con esto, el fichero ya está listo para subir a QnA maker. Lo subimos, y pulsamos el botón “Create your KB”


Figura 12: Subida del fichero DatapediaKB en formato tsv
Figura 12: Subida del fichero DatapediaKB en formato tsv



Un par de minutos de espera mientras se genera la KB:


Figura 13; un par de minutos de espera...
Figura 13: un par de  minutos de espera...



Y listo:


Figura 14: Aspecto de la base de datos creada a partir del fichero.
Figura 14: Aspecto de la base de datos creada a partir del fichero.

Se han cargado todos los términos y sus definiciones de forma automática. Desde esta pantalla podemos editar las parejas de pregunta/respuesta si es necesario. También, con el botón “+ Add QnA pair” podemos crear de forma manual nuevas entradas. Como todo está bien, guardamos y entrenamos “Save and train”.

Una vez entrenada la KB, la ponemos a prueba con el botón “Test”- Si preguntamos, por ejemplo, qué es un algoritmo obtenemos esta respuesta:


Figura 15: Prueba ¿Qué es un algoritmo?
Figura 15: Prueba ¿Qué es un algoritmo?

Si seleccionamos la opción "Inspect" podemos ver más detalles. Por ejemplo, el "Confidence Score" de la respuesta. En este caso, como hemos hecho la pregunta exactamente igual que esta a formulada en nuestra base de preguntas original, el valor es de un 100. Si se formula de otra forma, el Confidence Score tendrá valores inferiores. Desde esta pantalla, incluso podemos seleccionar manualmente cuál es la respuesta más adecuada, o añadir una nueva, no lo hace automáticamente el servicio QnA. También se pueden escribir formas alternativas de plantear la pregunta para cada una de las respuestas ("Add alternative phrasing").


Figura 16: Inspección de la respuesta.
Figura 16: Inspección de la respuesta.


Con esto, ya tenemos creado el servicio de QnA a partir del contenido de nuestro Diccionario Tecnológico LUCA . La semana próxima publicaremos un segundo post donde explicaremos cómo crear en Azure el servicio de Bot que nos permitirá interactuar con él y cómo ponerlo a prueba.  Puede que sea un poco largo pero ¿a que no es tan difícil?. ¡No te lo pierdas!







También puedes seguirnos en nuestras redes sociales: @Telefonica@LUCA_D3@ElevenPaths

No comments:

Post a Comment