QnA Chatbot con las preguntas más frecuentes sobre Coronavirus COVID19

Durante la pandemia que está viviendo el mundo, hasta la fecha de publicación de este post, la OMS ha recibido más de 5000 preguntas relacionadas con el Coronavirus. En una época donde las noticias falsas o fake news se propagan más rápido que el mismo virus COVID19, es importante informarse por medios confiables y no dar nada por hecho sin antes contrastarlo o confirmar la fuente.

En mi afán de contribuir a frenar la desinformación -y entretenerme mientras pasan estos días de incertidumbre- tomé las preguntas más frecuentes publicadas en el sitio de la OMS y desarrollé un Chatbot para que pueda contestar estas preguntas de la gente.

Para crear un chatbot desde cero y publicarlo en un sitio web usaremos tres componentes.

  • El servicio cognitivo de Microsoft QnA Maker para crear la base de conocimientos.
  • Un Bot Service de Azure para el chatbot como tal.
  • Un App service en Azure para publicar el chatbot en un sitio web.

Primero debemos crear un recurso QnA Maker en el portal de Azure.

Crear QnA Maker Service

Luego de creado el recurso lo utilizaremos en el portal del servicio cognitivo QnA Maker. Debemos entrar al portal, iniciar sesión con la misma cuenta con la que creamos el recurso en el portal de Azure, y crear una nueva base de conocimientos.

El sitio nos guiará por cinco pasos.

El paso 1 lo vamos a omitir ya que el QnA service lo acabamos de crear en el portal de Azure previamente.

En el paso 2 vamos a seleccionar justamente el QnA service creado y el idioma en el que vamos a crear la base de conocimientos.

En el paso 3 le damos un nombre a la base y en el paso 4 vamos a ingresar los documentos con los que se creará la base de conocimientos y se entrenará nuestro chatbot. En este caso usaremos dos páginas de la OMS como documentos fuentes para crear la base de conocimientos y entrenar nuestro chatbot. No es necesario que la página o el documento tenga un formato específico, siempre y cuando la información contenida en él esté clara y bien redactada el servicio lo entenderá.

Azure QnA Maker

En el paso 5 finalmente terminamos de crear la base de conocimientos.

A continuación veremos todas las respuestas que el servicio logró detectar. En este paso podemos ver qué partes del texto el servicio lo entendió y qué partes no. También lo podemos mejorar ingresando nuevas frases similares para las preguntas y enlazar la respuesta de una pregunta con otra.

Una vez preparadas las preguntas y respuestas podemos grabar y entrenar la base de conocimiento, también podemos probar los resultados en el mismo portal.

Una vez tengamos lista la base publicamos el servicio y creamos un bot conectado al mismo.

Chatbot Coronavirus
Chatbot Coronavirus

En este punto nuestro chatbot sobre el Coronavirus ya está creado y listo para usarse un cualquier canal. Si queremos personalizarlo o agregarle más funcionalidad podemos descargar el código y modificarlo usando el Bot Framework de Microsoft

En este caso publicaré el chatbot en un sitio web y lo publicaré en un App service de Azure.

Existen dos formas para publicar el chatbot en un sitio web. La primera es agregar el Web Chat en un iFrame y la segunda es agregar una linea directa para poder llamarla desde el sitio con más opciones de personalización.

El código en JavaScript para invocar al chatbot por linea siguiente es el siguiente:

<!DOCTYPE html>
<html>
   <head>
      <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
      <style>
         html,
         body {
            height: 100%;
         }
         body {
            margin: 0;
         }

         #webchat {
            height: 100%;
            width: 100%;
         }
      </style>
   </head>
   <body>
      <div id="webchat" role="main"></div>
      <script>
         window.WebChat.renderWebChat(
            {
               directLine: window.WebChat.createDirectLine({
                  token: 'YOUR_DIRECT_LINE_TOKEN'
               }),
               userID: 'YOUR_USER_ID',
               username: 'Web Chat User',
               locale: 'en-US',
               botAvatarInitials: 'WC',
               userAvatarInitials: 'WW'
            },
            document.getElementById('webchat')
         );
      </script>
   </body>
</html>

Al código debemos especificarle el código secreto de la linea directa que se puede consultar en el portal.

El paso final es crear un App service en Azure y publicar un sitio web simple con el chatbot implementado con Web Chat o Direct Line.

Nuestro chatbot luce de la siguiente manera y está publicado en esta url.

Chatbot preguntas frecuentes sobre el Coronavirus COVID19

Publicado por Diego Zumarraga Mera

Experto en transformación digital, Machine Learning, Desarrollo Web, Arquitecto Azure

A %d blogueros les gusta esto: