Qué son las entities en Dialogflow y por qué son útiles

Tiempo de lectura: 5 minutos
Tras el concepto de intent, el de entity en Dialogflow es otro de los más complejos de entender. Echa un ojo a este post en el que te contamos todo lo que necesitas saber sobre las entities.

El concepto de entity en Dialogflow es uno de los más útiles que puedes encontrar a la hora de desarrollar un asistente virtual. Sin embargo, para quienes llegan por primera vez a la consola de Dialogflow suele ser complejo de entender.

Las entities se hacen visible pronto: cuando creas tu primer intent y empiezas a introducir frases de entrenamiento, Dialogflow empieza a etiquetar algunas palabras sugiriéndote estas entidades. En la mayoría de los casos estas sugerencias no se ajustan a la naturaleza del proyecto que estás desarrollando o a la intención. Probablemente tendrás que eliminarlas. Sin embargo, si comprendes la utilidad de las entities, las distintas opciones que existen en Dialogflow y las funciones que ofrecen, podrás sacarle gran provecho.

Crear una entity en Dialogflow puede ayudarte a simplificar el traininig de un asistente, haciéndolo por un lado más eficiente y, por otro, ahorrándote bastantes horas de trabajo en la consola. Por ello es importante que conozcas qué son las entidades y todo lo que se relaciona con ellas.

Qué es una entity en Dialogflow

En Dialogflow se conoce como entidad al concepto o palabra clave al que se le asigna un valor, de manera que se puede identificar la solicitud de un usuario para emparejarla con un intent. Las entidades suelen coincidir con categorías como ubicación, nombre, fecha, cantidad…

Estos parámetros que extrae Dialogflow también reciben el nombre de tipos de entidad y alude al tipo de información que es necesario extraer de la solicitud del usuario.

Existe una serie de entidades predeterminadas (o entidades de sistema) que detectan las coincidencias más comunes. Pero también se pueden crear entidades personalizadas que se ajusten a los datos concretos que atenderá el asistente virtual.

Por otro lado, cada tipo de entidad puede contener a su vez varias “entradas de entidad”, es decir, aquellas palabras o frases que pueden considerarse equivalentes. Cuando esto ocurre, es necesario asignar un valor de referencia que incluya algunos sinónimos.

En esta web puedes jugar con DiFi

Empezar

Opciones de entidades

A diferencia de las entidades del sistema, la plataforma ofrece varias opciones para las entidades personalizadas que permiten ajustar cómo se detectan las coincidencias de entidades y la extracción de datos. En este sentido, encontrarás:  entidades de mapa, entidades de lista, entidad compuesta y entidades de expresión regular.

Entidades de mapa

Este tipo de entidad proporcionan un “mapeo” entre los valores de referencia y sus sinónimos. Lo entenderás mejor con un ejemplo: para el valor de referencia “M” de una entidad “talla” (size) puedes asignar sinónimos como “mediano, regular, normal…”. De este modo, cuando un usuario utiliza alguno de estos términos, la consola puede extraer el valor de referencia y asociarlo a un intent.

Gracias a las entidades de mapa, puedes simplificar el training de un intent: solo tienes crear un listado de sinónimos y elaborar diferentes estructuras sintácticas para que el entrenamiento sea lo más variado posible, pero no será necesario introducir cada uno de esos sinónimos. Por ejemplo, para el small talk de DiFi hemos creado entidades relativas a insultos, piropos y halagos.

En concreto, el mapeo de «halago» incluye sinónimos como: gracioso, inteligente, listo, chistoso, cómico, bueno, profesional, increíble, espectacular, cielo e impresionante.

Una vez creada la entidad y sus sinónimos, el training se optimiza aportando sólo una muestra representativa de estructuras variadas en las que, cada vez, se incluye uno de estos sinónimos:


Las palabras subrayadas en amarillo son las identificadas con la entidad @halago

Entidad de lista

A diferencia del anterior, las entidades de lista proporcionan inventario de entidades de valor único, es decir, de aquellas que no tienen ni sinónimos ni valores de referencia. Por ejemplo, para la entidad “color”  podría considerarse una entidad de lista ya que cada una de sus entradas es única: azul, amarillo, rojo, verde…

Entidad compuesta

En ocasiones, las entidades de lista pueden hacer referencia a más de un valor, es decir, a otros tipos de entidad (alias). De esta forma, cuando una entidad de lista contiene alias de otros tipos de entidades, recibe el nombre de entidad compuesta. El ejemplo más claro es el de @sys.unit-curreny: con esta entidad se extrae el valor “cantidad de dinero”, pero también el nombre de la moneda.

Entidad de expresión regular

Hay veces que es difícil anticiparse a los términos específicos que pueden integrarse en una entidad. Por ello, la consola permite también crear “entidades de expresión regular” que detectan patrones. De esta forma, Dialogflow puede identificar, por ejemplo, que un conjunto de 4 números y 3 letras es una matrícula.

Funciones para entidades

Dialogflow permite habilitar dos funciones en relación a las entidades:

  1. Expansión automática (para un tipo de entidad personalizada). Con esta función, el proyecto creado en Dialogflow puede reconocer valores que no se especifican de forma explícita. Por ejemplo, para una lista de animales, cada elemento será un valor de referencia (gato, perro, vaca, caballo…) de forma que si un usuario utiliza la expresión “qué es un elefante” se asigna “elefante” a este tipo de entidad. Aunque explícitamente no se le haya proporcionado ese valor, el agente reconoce que “elefantes” es similar a los otros valores enumerados. En cierta medida los agrupa por valor semántico y función sintáctica en la frase. Si tenemos la expresión “me duele la cabeza” y un usuario expresa “me duele el pie”, el agente reconocerá que “el pie” cumple la misma función que “la cabeza” sin necesidad de que previamente haya sido etiquetado con el mismo valor. Por este motivo es importante proporcionar muchos ejemplos de valores de entidad en las frases de entrenamiento. Así, se ayuda al agente a expandir un tipo de entidad y hacer que la expansión automática funcione según lo previsto. 
  2. Coincidencia Parcial. En la configuración predeterminada de Dialogflow, la coincidencia entre entradas y una de las entidades ha de ser exacta. Sin embargo, cuando existen sinónimos o valores de varias palabras pueden aparecer fallos. La función “coincidencia parcial” permite que el orden de las palabras en un valor o sinónimo no sea importante, sin necesidad de haber definido previamente un valor de entrada para cada una de las variaciones posibles. Lo verás más fácil en este ejemplo: 
Expresión del usuario finalCoincidencia parcial
“mesa”
“mesa marrón”
“marrón mesa”
“mesa de madera”
“de madera mesa”
“mesa marrón de madera”
“marrón mesa de madera”
“mesa de madera marrón”
“de madera mesa marrón”
“de madera marrón mesa”
“marrón de madera mesa”
“mesa”
“mesa marrón”
“mesa de madera”
“mesa de madera marrón”

Sin embargo, la coincidencia parcial tiene algunas limitaciones:

  • No puede habilitarse para entidades de expresión regular porque son funciones mutuamente excluyentes.
  • No es recomendable en entidades que se usan para coincidir con valores estrictos como, por ejemplo, números de identificación.

Más sobre las entities

Ahora, ya sabes lo básico sobre las entities en Dialogflow. No obstante, aún nos queda conocer cómo se crean en la consola y, lo más importante, que criterios seguir para poder agrupar conceptos bajo esta posibilidad que nos ofrece la herramienta de Google para asistentes virtuales.

Recuerda que en nuestra web puedes leer otros artículos relacionados o preguntarle a nuestro asistente virtual DiFi. cualquier otro concepto que no entiendas 😉

Deja un comentario

1 comentario en «Qué son las entities en Dialogflow y por qué son útiles»