Hace unas semanas estuve dando un worskop: Dandole un Lado Humano a tus Apps Con LUIS, fue bastante interesante, si quieres enterarte puedes checar este link: Worshop Dale un lado Humano a tus Apps.

Luego de concluido el evento un joven se me acercó con la siguiente duda:

  • En mi lugar de trabajo tenemos implementando un bot de FAQ(Frecuente Asked Questions) Pero ciertamente, esto no posee análisis de Intenciones ni puede sostener un diálogo con usuarios como LUIS, existe la posibilidad de integrar nuestro modelo existente con un Modelo de LUIS como el que creamos hoy?

Afortunadamente la respuesta es SI!!

Conociendo mi naturaleza, saben que haré un tuto sobre esto y lo subiré a Github, para dichos fines! Poniendo a los demás en contexto vamos a hablar un poquito de LUIS y finalmente manos a la obra.


El link de dicho repo clic aquí. En este repositorio vas a encontrar mi presentación usada en el workshop: Dale un Lado Humano a tus aplicaciones con LUIS.  Ademas de Documentación super interesante.


Iniciemos…

QUIEN ES LUIS?

Language Understanding Intelligence Service  (LUIS).Procesamiento de lenguaje natural para  extraer la intención e información relevante de  acuerdo a la entrada del usuario.

En este JSON si estamos familiarizados con LUIS y este formato podremos identificar entidades, intents-Inteciones y otras cositas más que discutiremos al rato.

Para ello he decidido describirlo como 3 secretos sobre LUIS con esta imagen.

Qué necesitas?
  1. Una cuenta de LUIS
  2. Una cuenta de Azure.


preguntas frecuentes:

  1. Que cosas puedo integrar con LUIS?

LUIS tiene muchas aplicaciones, recuerda que el trata de analizar las intenciones del la entrada de texto u audio. Estas intenciones son definidas por tu modelo.

2. Cuál es nivel de  LUIS?

Todo depende de que tan bien entrenes el modelo, LUIS es multi-lenguaje, Tu defines tu modelo, entidades y un montón de expresiones que el puede interpretar.

De ti depende de que LUIS PASE de :

a  esto:

 

3. Qué hay de integrar diferentes modelos de LUIS?

En el caso más común de integrar un modelo de LUIS con QnA en un bot.  Necesitamos tener ambos modelos publicados,


Partiendo de este Punto

Necesitamos Crear un app Dispatch

Dispatch es una herramienta para crear y evaluar modelos LUIS utilizados para enviar intenciones a través de múltiples módulos de bot, como modelos LUIS, bases de conocimiento de QnA y otros (agregados al envío como tipo de archivo).

Utilice el modelo de despacho en los casos en que:

  • Su bot consta de múltiples módulos y necesita ayuda para enrutar las declaraciones del usuario a estos módulos y evaluar la integración del bot.
  • Evaluar la clasificación de calidad de intentos de un solo modelo LUIS.
  • Necesitas crear un modelo de clasificación de texto a partir de archivos de texto.

Requisitos:

  • Node.js versión 8.5 o superior.
  •  .NET Core runtime.

 

Como Funciona?

Dispatch, como ya mencionamos nos permite combinar diferentes modelos en una App LUIS padre. Esto nos da versatilidad y hace posible que tengamos un dominio padre que incluya todos los sujetos y diferentes dominios de sujetos secundarios en aplicaciones separadas.

Conceptual image of dispatch architecture

El dominio padre aparece como Dispatch en la lista de apps.

El chat bot recibe la expresión (utterance) y luego lo envía a la aplicación LUIS principal para su predicción. La intención prevista superior de la aplicación principal determina qué aplicación secundaria LUIS se llama a continuación. El chat bot envía el enunciado a la aplicación secundaria para una predicción más específica.

AND BEGIN!

A continuación las instrucciones para crear nuestra app Dispatch.

Necesitas tener ciertos paquetes instalados:

  • Microsoft.Bot.Builder
  • Microsoft.Bot.Builder.AI.Luis
  • Microsoft.Bot.Builder.AI.QnA

Y actualizar el Appsetting.json manualmente. El template de esta aplicación lo puedes  ver aqui.

Connectar tus servicios con el bot es simple solo necesitas editar esto:

Finalmente solo nos queda llamar  nuestros servicios desde tu bot. Es decir, para cada entrada de usuario el bot necesita encontrar la intención principal y enviarlo al servicio apropiado.

En el siguiente código, donde sea que el método OnMessageActivityAsync sea llamado, debemos verificar el mensaje de usuario  contra el modelo Dispatch. Luego es cuando *topIntent* y *recognizerResult* llaman el servicio y retornar un resultado.

Finalmente, solo nos queda en rootearlo al servicio correspondiente.

QUE QUEDA?

Testear tu bot!!!

Si eres nuevo, o te gustaría aprender más sobre LUIS, déjame tus preguntas en la sección de comentarios. Hay un montón de cosas que puedes hacer con LUIS esto es solo en la parte de creación de Bot Framework como podemos integrar múltiples servicios.

Gran parte de este artículo esta  basado en la documentación oficial de Microsoft Sigue este link para saber más.