Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Conociendo a LUIS (CLU) II ¿Qué son los entities?

Si todavía no has matado tu curiosidad sobre cómo Language Underestanding hace para entenderse contigo, éste es tu artículo…Tras leer esta nueva publicación conocerás algo más acerca de la forma de trabajar de este servicio, entendiendo el papel que juega un elemento clave como es el entitie (o entidad).

Conozcamos LUIS (CLU)

LUIS, acrónimo de Lenguage Underestanding Inteligence Service, se trata de un servicio actualmente ya más por conocido por otras siglas como CSL (Cognitive Service for Language) o CLU (Conversational Language Understanding), se trata de un servicio de inteligencia artificial conversacional basado en la nube que hace uso del aprendizaje automático o Machine Learning (ML). Este servicio personalizado a una conversación o entrada de texto basada en la comprensión del lenguaje natural del usuario o Natural Language Underestanding (NLU), nos permitirá interpretar, o predecir, cuál es el significado global y el propósito del mensaje.

Actualmente trabajamos con esta tecnología para la creación de bots que brinden un servicio de ayuda o consulta a modo conversacional al usuario, o incluso para interpretación de instrucciones que puedan implementarse en un RPA.

 

En esta ocasión comenzamos con los entities o entidades. ¿Qué es una entitie?

Los entities son los términos que hemos de declarar con tal de identificar datos específicos dentro de un mensaje.

Una entidad nos va a permitir identificar el valor de un dato específico que sea necesario para procesar la información que nos llega en el utterance (o entrada de texto por parte del usuario), tanto para tomar y hacer uso de esa información, como para dar forma a una intención del mensaje; la cual puede a ir relacionada con alguna entidad específica, pudiendo incluso establecer patrones de identificación de intención mediante el uso de los patterns o patrones:

 

Y ahora te estarás preguntando ¿Cómo entrenamos CLU mediante entities? y sobre todo… ¿De qué tipos de entities disponemos?

Entities de tipo List

 

Comenzamos hablando de las entidades de tipo lista. Los entities de este tipo permiten englobar un conjunto fijo y determinado de palabras relacionadas por cada tipo de valor, y reforzarlo con posibles sinónimos.

En el caso de nuestra POC teníamos que identificar, por ejemplo, la periodicidad que el usuario solicitaba realizar el pago. Siendo esto así consensuamos declarar un entitie de tipo lista; Frecuencia, que contemplará las distintas opciones de periodicidad con tal de que el servicio pudiera identificarlas, así como sus sinónimos (o distintas formas de referirse a un mismo valor).

En la siguiente captura podemos ver alguno de los distintos valores en la periodicidad, reforzados por sus correspondientes sinónimos:

 

En este punto, hemos de explicar que el hecho de añadir un mayor número de sinónimos sobre cada valor, hace posible que el servicio identifique de manera segura los posibles valores de la entidad dentro del utterance, independientemente de que el usuario se refiera a ellos de distintas formas.

Por ejemplo, para el valor de periodicidad Mensual, debemos identificarlo igualmente si el usuario lo solicitara mediante las siguientes palabras:

Mensualmente, Cada mes, Mes a mes, Al mes, Por mes…

Recordemos el principio de un buen entrenamiento: registrar el mayor número posible de formas distintas de expresar un mismo valor. Siendo este el concepto principal en el cual nos basamos para cualquier tipo de entrenamiento en torno a un bot.

Una vez finalizada la declaración de valores en este tipo de entidad veríamos como el servicio identifica la periodicidad dentro del mensaje:

 

Entities de tipo ML (Machine Learned)

Continuamos hablando de un tipo de entidad que hace uso directamente del aprendizaje automático; el entitie Machine learned, del cual trataremos más en profundidad en próximos publicaciones.

No obstante, estad tranquilos… con tal de no perder la noción sobre las entidades ML, también hablaremos de ellas en este artículo 🙂

Muy por encima, definiremos este tipo,  como una clase de entidad con el propósito de clasificar entidades, ya reconocidas, aportando más información acerca de éstas.

Podemos ver cómo en su definición es necesario dotar al registro de un nombre identificativo, así como establecer relación con una entidad registrada sobre la que trabajar. En la siguiente captura vemos cómo definimos una entidad ML de nombre “Definitivo”, y que se asocia a la entidad Frecuencia (de tipo Lista y detallada en el punto anterior):

 

Tras declarar la entidad, entra en juego el entrenamiento; donde se dará de alta el mayor número de entradas de texto posible aplicando (a mano) la entidad ML definida. Una vez este entrenamiento sea consistente, se logrará que el CLU termine identificando de forma autónoma la entidad en aquellos valores de frecuencia/periodicidad que realmente aplique.

Finalmente, y con tal de que se llegue a entender mejor el ejemplo de este entitie, debemos contextualizarnos un poco antes:

En nuestro caso, la necesidad de definir esta entidad ML de nombre “Definitivo” (así como otra de nombre “Inicial” de la misma índole que veremos en la siguiente captura), es la de clasificar distintos registros de una misma entidad identificada, puesto que es posible que en algunos casos existan utterances en los que se identifique más de un valor de la misma entidad; Frecuencia en nuestro caso.

Siendo esto así, y recordando que el propósito de la POC es reconocer la periodicidad con la que un usuario solicita realizar un pago; en caso de recibir una instrucción con más de una frecuencia/periodicidad identificada, podremos conocer el valor con el cual quedarnos gracias a este tipo de entidad:

 

Entities de tipo Regex

En este tipo de entidad recurrimos a las expresiones regulares con tal de identificar el valor de un dato o información determinada.

 

Para ello, una vez seleccionado el tipo de entitie y tras darle un nombre, podremos definir bajo qué expresión queremos identificar la entidad en cuestión.

En el caso del ejemplo que muestro a continuación, debemos definir una entidad que identifique y recoja el valor de un número IBAN (el de la cuenta con la que el usuario quiera costear un pago, en nuestro caso). Para ello se definió la siguiente expresión regular:

 

Una vez publicada, vemos que ya comienza a identificar valores que se ajusten a la expresión, catalogándolos como un número de cuenta IBAN:

 

Entities de tipo Pattern.any

Este tipo de entidad es quizás el más complejo, y consiste en un marcador de posición de longitud variable que sólo se usa en la expresión de plantilla de un patrón, con tal de marcar dónde empieza y acaba la entidad, y poder, de esta manera, identificar y clasificar el entitie.

 

mm

Sobre Adrián Prats

Experto en Administración de Sistemas Informáticos en Red, Sharepoint y Windows Server 2012R2 (MCP 70-410 y MCP 70-497). Tengo amplia experiencia como Analista QA, realizando pruebas funcionales, test de carga y rendimiento, automatización de pruebas, pruebas unitarias (unit test), pruebas de integración, pruebas exploratorias, elaboración del test plan, etc. Actualmente soy Quality Assurance Specialist en ENCAMINA.
Esta entrada ha sido publicada en Asistentes, LUIS, Microsoft Bot Framework, Microsoft Cognitive Services. Enlace permanente.
Suscríbete a Piensa en Sofware desarrolla en Colores

Suscríbete a Piensa en Sofware desarrolla en Colores

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores