Introducción

En lo relacionado con las herramientas y los entornos de desarrollo de chatbot disponibles actualmente, hay tres problemas que requieren solución:

  • Entidades contextuales compuestas.
  • Descomposición de la entidad.
  • Desactivación de los que se conoce como “Rigid State Machine”, gestión de cuadros de diálogo.

En esta historia me voy a centrar solo en las Entidades. Y cómo se gestionan las entidades en tres entornos de tecnología conversacional.

Entidades 101

¿Qué es una entidad?

Las tres palabras que se utilizan con mayor frecuencia en relación con los chatbots son:

  • declaraciones o utterances,
  • intenciones y
  • entidades.

Una declaración o utterance es realmente cualquier cosa que diga el usuario. El enunciado puede ser una oración, en algunos casos unas pocas oraciones, o simplemente una palabra o una frase. Durante la fase de diseño, se anticipa lo que sus usuarios podrían decirle a su bot.

Una intención es la intención del usuario con su expresión o interacción con su bot. Piense en las intenciones como verbos o palabras funcionales. Una expresión o un diálogo único de un usuario debe destilarse en una intención.

Microsoft LUIS — Nuevas entidades aprendidas por máquina — Descomposición de entidades

Las entidades pueden verse como sustantivos, a menudo se las conoce como slots. Suelen ser datos como la fecha, la hora, las ciudades, los nombres, las marcas, etc. La captura de estas entidades es fundamental para tomar medidas según la intención del usuario.

Piensa en un robot de viaje, que captura las ciudades de salida, destino, modo de viaje, precio, fechas y horas que son la base de la interfaz. Sin embargo, esta es la parte más difícil de la interfaz conversacional. Ten en cuenta que el usuario ingresa los datos al azar y sin ningún orden en particular.

Las entidades compuestas y contextuales están siendo implementadas por más plataformas de chatbot. La opción de anotar entidades contextualmente también está en aumento. Los ejemplos aquí son Rasa, IBM Watson Assistant y, en menor grado, Amazon Lex.

Entidades compuestas y contextuales

Se han logrado grandes avances en este área y muchos ecosistemas de chatbot se adaptan a ellos.

Entidades contextualesEl proceso de anotar las expresiones del usuario es una forma de identificar entidades por su contexto dentro de una oración

Anotación de entidad contextual en IBM Watson Assistant

A menudo, las entidades tienen un conjunto finito de valores que se definen. Luego están las entidades que no se pueden representar mediante una lista finita; como ciudades del mundo o nombres o direcciones. Estos tipos de entidad tienen demasiadas variaciones para enumerarse individualmente.

Para estas entidades, debe utilizar anotaciones; entidades definidas por su uso contextual. Las entidades se definen y detectan a través de su contexto dentro del enunciado del usuario.

Entidades compuestas

La premisa básica es que los usuarios pronunciarán múltiples entidades en una oración.

Lo más probable es que los usuarios expresen múltiples entidades dentro de un enunciado; denominadas entidades compuestas.

En el siguiente ejemplo, hay cuatro entidades definidas

  • modo_viaje
  • de ciudad
  • to_cyt
  • fecha y hora

Rasa: Extracto del archivo NLU.md en el proyecto Rasa

Estas entidades pueden detectarse en el primer paso y solicitarse la confirmación del usuario.

Echemos un vistazo a estructuras de entidades más complejas y cómo se implementan en Rasa, Microsoft Luis y Amazon Alexa…

Rasa

Contextual y compuesto

Desde el principio, uno de los puntos fuertes de Rasa fueron las entidades compuestas y contextuales.

Contextualmente significa que el chatbot no reconoce las entidades al pedirle al usuario directamente la entrada o que las encuentra a través de una lista de búsqueda finita. Más bien, las entidades se detectan en función de su contexto dentro del enunciado u oración.

Esto está más alineado con la forma en que nosotros, como humanos, detectamos entidades en una conversación

 

Rasa ~ Entidades compuestas y contextuales en Rasa-X

Las entidades compuestas significan que puedo capturar varias entidades por intención o expresión del usuario. En un escenario en el que el usuario te brinda toda la información en un solo enunciado, tienes la capacidad de capturar todos esos valores de una vez.

Esto se traduce en menos turnos de diálogo y un chatbot más eficiente.

Roles de entidad

El punto de partida de las entidades es que puedes agregar etiquetas a las palabras. Por lo tanto, puedes definir conceptos en tus datos.

En el siguiente ejemplo, tienes diferentes tipos de ciudades definidos con otras entidades.

##intent:travel_details– I want to travel by [train](travel_mode) from [Berlin](from_city) to [Stuttgart](to_city) on [Friday](date_time)

Esto no es elegante, ya que es necesario crear varias entidades para un objeto de palabra real, a saber, ciudad.

Y en este ejemplo, la ciudad tiene dos roles; la ciudad de salida y la ciudad de llegada. Con Rasa, puedes definir estas entidades con roles específicos en el archivo nlu.md de tu proyecto.

##intent:travel_details   — I want to travel by [train](travel_mode) from [Berlin]{“entity”: “city”, “role”: “depart”} to [Stuttgart]{“entity”: “city”, “role”: “arrive”} on [Friday](date_time)La salida se ve así:I want to travel by train from Berlin to Stuttgart on next week Wednesday.   {   “intent”: {   “name”: “travel_details”,   “confidence”: 0.9981381893157959   },   “entities”: [   {  “entity”: “travel_mode”,   “start”: 20,   “end”: 25,   “value”: “train”,   “extractor”: “DIETClassifier”   },   {   “entity”: “city”,   “start”: 31,   “end”: 37,  “role”: “depart”,   “value”: “Berlin”,   “extractor”: “DIETClassifier”   },   {  “entity”: “city”,   “start”: 41,   “end”: 49,  “role”: “arrive”,   “value”: “Stuttgart”,   “extractor”: “DIETClassifier”   }   ],   “intent_ranking”: [   {   “name”: “travel_details”,   “confidence”: 0.9981381893157959   },

Grupos de entidades

Esta función permite que las entidades se agrupen con una etiqueta de grupo específica. La mejor manera de explicar esto es con un ejemplo…

Nuevamente, definido en tu archivo /data/nlu.md:

## intent:teams  — The first team will be [John]{“entity”: “teamMember”, “group”: “1”}, [Mary]{“entity”: “teamMember”, “group”: “1”} and [Geoff]{“entity”: “teamMember”, “group”: “1”} and the second groupto travel will be [Martha]{“entity”: “teamMember”, “group”: “2”}, [Adam]{“entity”: “teamMember”, “group”: “2”} and [Frank]{“entity”: “teamMember”, “group”: “2”}.

Y la salida de Rasa NLU:

The first team will be John, Mary and Geoff and the second group to travel will be Martha, Adam and Frank.   {   “intent”: {   “name”: “teams”,   “confidence”: 0.9999754428863525   },   “entities”: [   {   “entity”: “teamMember”,   “start”: 23,   “end”: 33,  “group”: “1”,   “value”: “John, Mary”,   “extractor”: “DIETClassifier”   },   {   “entity”: “teamMember”,   “start”: 38,   “end”: 43,  “group”: “1”,   “value”: “Geoff”,   “extractor”: “DIETClassifier”   },   {   “entity”: “teamMember”,   “start”: 83,   “end”: 95,  “group”: “2”,   “value”: “Martha, Adam”,   “extractor”: “DIETClassifier”   },   {   “entity”: “teamMember”,   “start”: 100,  “end”: 105,   “group”: “2”,   “value”: “Frank”,   “extractor”: “DIETClassifier”   }

Microsoft LUIS

Descomposición

Las entidades de aprendizaje automático se introdujeron en LUIS en noviembre de 2019. La descomposición de entidades es importante tanto para la predicción de intenciones como para la extracción de datos con la entidad.

Comenzamos definiendo una sola entidad, llamada

  • Detalle de viaje.

Dentro de esta entidad, definimos tres subentidades. Puedes pensar en esto como entidades o subtipos anidados. Los tres subtipos definidos son:

  • Periodo de tiempo
  • Modo
  • Ciudad

A partir de aquí, tenemos un subtipo de Ciudad:

  • De ciudad
  • A la ciudad
Definición de una entidad con subtipos que se pueden descomponer

Esto puede parecer confuso, pero el proceso es extremadamente intuitivo y permite la expansión natural de los elementos conversacionales.

Los datos se presentan en un formato fácil de entender. Administrar tu entorno de conversación será más fácil que antes.

Adición de subentidades: entidad de ML compuesta por subentidades más pequeñas

Ahora podemos volver a nuestra intención y anotar una nueva expresión. Solo queda por definir From City.

Ejemplo de enunciado de anotaciones con elementos de entidad

A continuación, se muestran los ejemplos de intenciones, que se utilizan para entrenar el modelo con la entidad, los subtipos y los subtipos; Totalmente contextualizado.

Annotated Intent Examples

Conversaciones de Alexa

Los cinco componentes del tiempo de compilación de Alexa Conversationsson:

  • Diálogos
  • Slots
  • Conjuntos de expresiones
  • Plantillas de respuesta
  • Definiciones de API

En cuanto a las entidades, las Conversaciones tienen una opción similar, aunque no tan completa y completa como LUIS o Rasa. Dentro de las conversaciones, puedes definir entidades, a las que Amazon se refiere como Slots.

Dos tipos de slots: slots de valor y propiedades

Slots

Alexa Conversations presenta un nuevo tipo de tragamonedas personalizado con propiedades (PCS).

Dentro de las conversaciones de Alexa, puedes crear un slot con múltiples propiedades adjuntas. Estas propiedades pueden verse como sub-slots o subcategorías que juntas constituyen la entidad de orden superior.

Constituyendo una colección de slots jerárquicos. Esto se puede usar para pasar datos estructurados entre componentes en tiempo de compilación, como definiciones de API y plantillas de respuesta.

Nuevamente, los espacios son realmente las entidades que te gustaría completar durante la conversación. Si el usuario pronuncia los tres espacios requeridos en el primer enunciado, la conversación solo tendrá un turno de diálogo.

Dos tipos de slots: slots de valor y propiedades

La conversación puede ser más larga, por supuesto, si se necesitan más turnos de conversación para solicitar la información relativa al usuario para completar los campos vaciones. La parte interesante son los dos tipos de espacios o entidades. Los slots personalizados definidos con valores y el que tiene propiedades.

Conclusión

A medida que las plataformas de chatbots vayan creciendo y el desarrollo definitivo en estas áreas clave será inevitable. El desafío será presentar estos elementos de una manera sencilla y que sea fácil de gestional.

Por Cobus Greyling

Rasa Hero. NLP / NLU, Chatbots, Voz, UI / UX conversacional, Diseñador CX, Desarrollador, Interfaces de usuario ubicuas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *