Averigua lo que tus usuarios quieren con LUIS: Language Understanding Intelligent Service

Una de las necesidades que surge a día de hoy es saber interpretar, con un alto grado de certeza, lo que los usuarios intentan decir a nuestras aplicaciones. Este tipo de problematicas surgen cuando utilizas un sistema desatendido que debe ser capaz de determinar cuál es la intención del usuario cuando intenta transmitir sus deseos a través de una sentencia u orden. Por ello hoy me gustaría hablarte de LUIS (Language Understanding Intelligent Service) un servicio que surge de Microsoft Research y que te da la posibilidad de generar un modelo que te permita consultar para entender a tus usuarios.

En este post vamos a montar un simple ejemplo para que entiendas como funciona. Lo primero que debes hacer es darte de alta en https://www.luis.ai

luis.ai
luis.ai

En esta página es donde puedes crear tus aplicaciones donde se almacenará el modelo que quieres entrenar para que sea lo suficientemente inteligente para interpretar lo que tus usuarios quieren. Ahora crea una aplicación a través de New App > New Application

luis.ai - New App - New Application
luis.ai – New App – New Application

Elige un nombre para tu aplicación, una descripción y el lenguaje en el que va a ser entrenado.

luis.ai - new application
luis.ai – new application

Por cada aplicación puedes ver los siguientes apartados:

luis.ai - sections
luis.ai – sections
  • Intents: es la intención que tiene el usuario con la frase que ha enviado, lo cual se asocia a acciones. Por ejemplo, si un usuario dice «Who is 0gis0?» en un contexto relacionado con Twitter es posible que su intención sea buscar el perfil de dicho usuario, por lo que la acciones podría ser SearchUser.

    luis.ai - New Intent
    luis.ai – New Intent
  • Entities: siguiendo el ejemplo anterior, las entidades son los valores que de alguna forma nos van servir como parámetro en la frase que el usuario ha lanzado. En este ejemplo, donde la frase es «Who is 0gis0?» tendríamos como entidad UserName donde 0gis0 sería el valor candidato.

    luis.ai - Add a new Entity
    luis.ai – Add a new Entity
  • Pre-built Entities: son entiedades que nos permiten agilizar la asignación de un valor a un tipo, que pueden ser números, fechas, temperatura, dimensiones, porcentajes, edad, etcétera.

    luis.ai - Pre-built entities
    luis.ai – Pre-built entities
  • Regex Features: como su propio nombre indica se pueden gestionar expresiones regulares sobre las peticiones de los usuarios. Se suele utilizar para seguir patrones, como pueden ser el código de productos, vuelos, etcétera.
  • Phrase List Features: puedes hacer saber a LUIS que un determinado conjunto de palabras se deben tratar de una determinada forma, como puede ser una lista de contactos, nombres de productos, etcétera.

El objetivo es que el servicio cada vez sea más inteligente a la hora de determinar cuál es la acción que el usuario espera conseguir. Para ello se utiliza el apartado New utterances con el tipo de frases que esperas recibir de tus usuarios.

luis.ai - New utterances
luis.ai – New utterances

Cada vez que introduces una frase, LUIS analizará el contenido de la misma e intentará determinar qué intención le corresponde. Además, como puedes ver en la imagen anterior, puedes seleccionar palabras dentro de la sentencia y asignarle la entidad a la que debería asignarse. Cuantas más frases introduzcas más inteligente será tu servicio y la fiablidad en su respuesta será mayor. En este ejemplo he añadido las siguientes:

  • who is 0gis0?
  • show me 0gis0 profile
  • I don’t know 0gis0
  • I would like to follow 0gis0

Una vez introducidas y etiquetado 0gis0 como valor para la entidad UserName en cada una de las sentencias, haz clic en el botón inferior izquierdo Train

luis.ai - Training
luis.ai – Training

Como puedes ver, el proceso es bastante sencillo: añades intenciones y entidades, utilizas la caja de texto de utterances con las típicas frases que esperas recibir y entrenas a LUIS para que aprenda el tipo de preguntas que le van a llegar y cómo resolverlas. Voy a añadir una nueva intención que será SearchKeyword para reconocer cuándo un usuario quiere buscar en Twitter sobre un tema determinado. Además añadiré la entidad Keyword para almacenar el qué quiero buscar.

  • what about Madrid
  • looking for Microsoft Azure
  • who is talking about HTML5

Vuelve a pulsar el botón Train para que LUIS procese la nueva información. Una vez que tienes un conjunto de intenciones, entidades y frases con las que LUIS ya puede trabajar es el momento de probar su fiabilidad. Haz clic en la opción Publish para que el servicio esté disponible.

luis.ai - Publish
luis.ai – Publish

Una vez publicado puedes probar el servicio con las típicas consultas que esperarás de los usuarios.

luis.ai - HTTP service - Query
luis.ai – HTTP service – Query

Al pulsar la tecla intro verás que se abre una nueva ventana con la respuesta en formato JSON:

luis.ai - HTTP Service - JSON response
luis.ai – HTTP Service – JSON response

El resultado será la frase que se ha enviado al servicio y a cuál intención de las que tienes dada de alta se cree que corresponde, ordenadas por probabilidad. ¿te imaginas integrar un servicio así con Microsoft Bot Framework?

¡Saludos!