Cloud

Reconocimiento de Lenguaje Natural con LUIS

En los últimos meses hemos podido comprobar un interés creciente en temas de inteligencia artificial. Cada vez más se nos solicita desarrollar aplicaciones con bots dotados de cierta inteligencia, como la comprensión del lenguaje natural. Además, crece el número de frameworks especializados en este tipo de tecnologías, mientras su dificultad disminuye de forma notable.

Gracias a los servicios en la nube, existen plataformas que nos abstraen del difícil trabajo de desarrollar motores de este tipo. Una de las plataformas más extendidas es Microsoft Cognitive Services, pensada para dotar a nuestras aplicaciones de capacidades como visión artificial, reconocimiento de voz, y otras muchas funcionalidades muy interesantes.

Como una de tantas muestras de la apuesta del sector por este tipo de herramientas, podemos señalar la compra, hace apenas unos días, de la startup canadiense Maluuba por parte de Microsoft. Se trata de una empresa muy interesante que está desarrollando productos capaces de entender el lenguaje humano y, por decirlo de alguna manera, razonar sobre él. Seguro que pronto oiremos hablar de algún servicio nuevo con esta tecnología. Puedes consultar más detalles sobre esta transacción en el blog de la propia compañía, en http://www.maluuba.com/blog/2017/1/13/maluuba-microsoft

Con este post iniciamos una serie que hablará de estas tecnologías. En este breve artículo vamos a aprender lo más básico de reconocimiento de lenguaje natural.

Para que nuestro bot sea capaz de comprender el lenguaje natural, es necesario utilizar un servicio que pueda analizar e interpretar nuestras palabras. Para ello podemos utilizar el Language Understanding Intelligence Service (LUIS) de Microsoft. Se trata de un servicio en la nube que nos provee de todo lo necesario para que nuestra aplicación comprenda el lenguaje natural. En la práctica, simplificando mucho, se trata de un API que admite frases y genera una salida en forma de “intenciones”. Nosotros nos ocuparemos, en nuestra aplicación, de enlazar esas intenciones a diferentes acciones en nuestro código.

Antes de empezar a trabajar con LUIS debemos crear una aplicación. Para ello, podemos darla de alta en el sitio web de LUIS (https://www.luis.ai), seleccionando “New App” en los botones del panel que aparece con nuestras aplicaciones. Después rellenamos un formulario con datos básicos sobre ella, como su nombre, tipo de aplicación y, muy importante, cultura. Esto último determinará varios aspectos del reconocimiento, como fechas, monedas, etc.

newapp

Ahora que hemos creado una aplicación básica, nos encontraremos en la pantalla en la que podremos instruir al motor de inteligencia para que reconozca nuestras frases.

La instrucción básica de LUIS se realiza principalmente en dos fases: en primer lugar, y según los requisitos de nuestra aplicación, se deben definir una serie de acciones que serán reconocidas en los diferentes enunciados que proporcionemos al servicio. Estos serán reconocidos y devueltos a nuestra aplicación, de forma que podremos ejecutar el código necesario. Por otro lado, debemos hacer posible que LUIS aprenda a reconocer estas acciones, proporcionando ejemplos de frases que tengan sentido en cada una de esas acciones.

1.- Creación de intenciones

En primer lugar indicaremos las posibles intenciones que debe interpretar nuestro bot. En este ejemplo desarrollaremos un bot básico que nos ofrecerá información meteorológica.

Las intenciones que vamos a necesitar serán tres:

  • GetWeather: El usuario desea obtener información meteorológica
  • Greetings: Saludos. Si el usuario saluda a nuestro bot, no queda bien que responda diciendo que no entiende lo que queremos. En su lugar, haremos que responda a nuestro saludo.
  • None: Para todas las demás solicitudes, responderá indicando que no entiende lo que queremos pedirle. Por ejemplo, si le preguntamos a qué hora es nuestro programa favorito en la televisión, ya que no es el objetivo de nuestro bot. Esta intención se crea automáticamente.

Para ello, pulsaremos sobre el signo “+” que aparece junto a Intents. En el cuadro de diálogo que nos aparece, introducimos el nombre de la intención (GetWeather) y, muy importante, un enunciado de ejemplo muy claro y conciso sobre lo que queremos obtener. Por ejemplo, ¿Qué tiempo hará hoy?

newintent

Haremos los mismos pasos para las siguientes intenciones.

2.- Entidades

Las entidades son unidades mínimas de información, que nuestro bot utilizará para concretar la información solicitada. Por ejemplo, en el enunciado “¿qué tiempo hará hoy?” tenemos una entidad (hoy) de fecha y hora. Al devolver el análisis de este enunciado, LUIS nos informará que la intención del usuario es obtener información meteorológica (intento) para hoy (entidad). De esta manera dispondremos en nuestra aplicación de toda la información necesaria para hacer nuestra solicitud a un servicio de meteorología, y devolverla al usuario.

Vamos a añadir dos entidades a nuestro sistema:

  • Location: Representará el lugar de donde queremos obtener dicha información. Se añade pulsando sobre el botón “+” a la derecha de “entities”. Tan sólo debemos teclear su nombre.
  • Datetime: Es una entidad predefinida. Es impresionante, ya que reconoce datos de fecha y hora de una multitud de formatos diferentes. Por ejemplo, reconocerá como datetime fragmentos de enunciado como “hoy”, “dentro de una hora”, “el día 7 de agosto”, etc.

Para agregar esta entidad pulsaremos sobre el botón “+” ubicado junto a “Pre-built Entities” y seleccionamos “datetime” de la lista que aparece.

newentity

3.- Introducción de enunciados de ejemplo

Ahora que ya tenemos lo necesario para identificar la intención de usuario y las diferentes entidades que vamos a necesitar, llega el momento de preparar varios enunciados de ejemplo, para facilitar el aprendizaje de nuestro bot.

Para ello usaremos la opción “New utterances” de la barra superior. Aquí iremos introduciendo, una a una, diferentes frases de ejemplo con la intención que queramos transmitir. En primer lugar tecleamos la frase que queremos analizar y pulsamos el botón naranja de la derecha. Aquí el sistema reconocerá (y etiquetará) las entidades predefinidas, y nos permitirá etiquetar las nuestras. Para ello, seleccionamos la palabra (o palabras) que representan la entidad que queremos etiquetar, y aparecerá un desplegable con las entidades para que seleccionemos la que corresponda.

newutterance

Se trata de un proceso laborioso, pero es imprescindible para que el motor de IA aprenda lo necesario. Cuantas más frases y entidades etiquetemos, mejor funcionará todo.

Se deben facilitar varios ejemplos para cada intención y entidades. Se aconseja cinco o seis de cada uno.

4.- Instrucción del sistema

Al fin, una vez hayamos facilitado suficientes elementos, podemos solicitar el aprendizaje para que el motor estudie nuestro sistema y se prepare para la publicación. Para ello, pulsaremos el botón “train” que aparece en la parte inferior izquierda de la ventana. Hecho esto, el sistema estudiará el modelo en cuanto tenga recursos disponibles. No suele tardar mucho, y se nos informará de ello junto a este botón.

5.- Publicación del modelo, y pruebas

Por último, publicaremos el modelo, para que LUIS genere un servicio REST y nos facilite una URL de consulta. Debemos tener en cuenta esta para hacer la consulta desde una aplicación de Bot Framework.

Para hacer pruebas, podemos pulsar sobre el botón “publish” en la parte superior derecha del menú. En el recuadro que nos aparece podemos teclear una pregunta, y pulsamos ENTER. El sistema nos devolverá un objeto JSON con el resultado del análisis.

publish

En este objeto JSON aparece el intento más probable, (el que tenga más puntuación según el aprendizaje de LUIS), acompañado de las entidades relevantes según nuestra pregunta. De esta manera dispondremos de suficientes datos para que nuestra aplicación haga el resto del trabajo.

json

En próximas entregas complicaremos un poco más los tipos de entidades, para hacer un bot más inteligente, y haremos un ejemplo de uso con una aplicación de Bot Framework.

Para saber más sobre el concepto de inteligencia artificial, conoce nuestros informes!

jose-manuel-morillas-foto

José Manuel Morillas Navarro

.NET Senior Developer| Soluciones Microsoft | SOGETI ESPAÑA

 

 

 

 

 

1 comment on “Reconocimiento de Lenguaje Natural con LUIS

  1. Jose Antonio Pizarro

    Enhorabuena por el post José Manuel. Te animo a que continúes con más entregas. Un saludo.

    Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: