Detección de entidades
En este artículo veremos que los chatbots son capaces de extraer información relevante de los mensajes de los usuarios detectando entidades.
Qué es una entidad
Como mencionamos en el artículo de intenciones, los usuarios comunican sus solicitudes o consultas a través mensajes de texto. Cada mensaje está asociado a una intención, que es el motivo por el cual el usuario escribe el mensaje.
Existen casos en donde el usuario es más específico sobre qué desea obtener información. Por ejemplo, si el usuario pregunta «¿hasta cuándo puedo pagar mis impuestos?», la intención será «solicitar el calendario de pagos de impuestos».
Sin embargo, si pregunta es «¿hasta cuándo puedo pagar el IBI?» o «plazo para pagar el IVTM», su intención será conocer el calendario de pagos de un impuesto en particular. Las entidades son las encargadas de capturar esa información específica. Podemos decir que
las entidades son piezas de información que pueden ser extraídas del mensaje del usuario.
En los ejemplos anteriores, la entidad es impuesto, y la misma toma los valores «IBI» e «IVTM», respectivamente.
Las entidades pueden ser cualquier tipo de información que queramos extraer de un mensaje. Por ejemplo, una ciudad, una fecha, una cantidad de dinero, una duración, el nombre de una persona o el género de una película.
La ventaja de detectar entidades es, principalmente, que el chatbot puede buscar con más precisión la información que le está solicitando el usuario y, así, mejorar la experiencia de la conversación. En otras palabras, nuestro chatbot será más sofisticado.
Cómo detectan entidades los chatbots
En nuestro artículo sobre intenciones, mencionamos que la capacidad del chatbot para interpretar mensajes se basa en técnicas de Inteligencia Artificial, particularmente, en aprendizaje automático. Esto implica que debemos «enseñarle» al chatbot con ejemplos (o datos de entrenamiento). En cada mensaje utilizado para entrenar al chatbot debemos indicar cuál es la intención y cuáles son las entidades, si las hay. Por ejemplo,
- ¿hasta cuándo puedo pagar el [IBI](impuesto)?
- fechas límites de pago de la [recogida de basura](impuesto)
- plazo para pagar el [IVTM](impuesto)
- ¿Cuándo me cargarán el [IBI](impuesto) en la cuenta bancaria?
- ¿hasta cuándo puedo pagar la [recogida de basura](impuesto)?
donde hemos marcado con «[]» las palabras o expresiones que el chatbot debe detectar y asociar a una entidad. En este caso, la intención es «consultar calendario de impuestos» y hay una única entidad, «impuesto», que toma distintos valores.
Pueden ocurrir casos donde haya más de una entidad en el texto. Supongamos que el usuario pregunte «puedo pagar el ibi después del 4 de agosto?». Como vemos en la siguiente figura, el chatbot identificará las entidades «impuesto» y «fecha», que toman los valores «ibi» y «4 de agosto», respectivamente, y la intención «consultar calendario de impuestos».
Sinónimos
Es muy común que nos refiramos a un mismo objeto de distintas formas. Por ejemplo, diciendo «Impuesto a Bienes Inmuebles», «IBI» o «ibi» nos referimos al mismo impuesto. Por eso, es fundamental que los chatbots puedan detectar sinónimos.
Afortunadamente, la detección de sinónimos es muy sencilla. Sólo debemos incluir los sinónimos en nuestros datos de entrenamiento como si fueran un posible valor más de la entidad y definir una lista de sinónimos. Por ejemplo, la lista de sinónimos del valor «IBI», incluirá «Impuesto de Bienes Inmuebles», «ibi», «impuesto sobre inmueble», «impuesto de la casa» y todas las variantes que los usuarios puedan utilizar.
Con esta lista de sinónimos, el chatbot sabrá que cuando el usuario dice, por ejemplo, «impuesto sobre inmueble», se estará refiriendo al valor «IBI», de la entidad «impuesto».
Duckling
Es un motor de detección de entidades de código abierto desarrollado y mantenido por Facebook. Duckling puede ser incorporado como un componente del sistema de detección de entidades.
La ventaja de utilizar Duckling es que simplifica la creación de datos de entrenamiento. Cuando utilizamos Duckling, no es necesario que indiquemos explícitamente en nuestros datos de entrenamiento las entidades que este componente es capaz de detectar.
Otra característica interesante de Duckling es que soporta una gran cantidad de idiomas.
Slots
Los slots (ranura, en inglés) conforman la memoria del chatbot. Es decir, el chatbot puede almacenar la información que extrae de los mensajes en sus slots y hacer uso de ella cuando sea necesario. Es claro que, los valores almacenados en los slots, podrán ir cambiando durante el transcurso de la conversación.
No siempre es necesario almacenar el valor de una entidad, sin embargo, es habitual que cada entidad tenga asociado un slot.
Existen, principalmente, dos ventajas por las cuales resulta útil almacenar los valores de las entidades en slots. La primera de ellas es que permite crear un contexto de la conversación. La segunda es que dependiendo del valor del slot, se puede controlar el flujo de la conversación (ver el artículo de definición de conversaciones para más detalles).
Resumen
En este artículo hemos visto que las entidades son aquellas palabras o expresiones del mensaje con información relevante y cómo son capaces los chatbots de detectarlas. Una entidad siempre está asociada a un concepto, como una ciudad, un nombre o un género de película y puede tomar distintos valores.
Para que el chatbot pueda detectar las entidades, debemos marcarlas en los datos de entrenamiento. En el caso de haber sinónimos, podemos incluirlos como un posible valor más y deberemos definir una lista de sinónimos.
También hemos visto que es posible utilizar herramientas de NLP (siglas en inglés de Procesamiento de Lenguaje Natural) que asisten la detección de entidades. Si bien sólo hemos mencionado Duckling, nos gustaría agregar que, existe una gran variedad de este tipo de herramientas que facilitan la interpretación de los mensajes.
Por otra parte, los chatbots son capaces de almacenar en slots los valores de las entidades extraídas. Los slots conforman la memoria del chatbot y éste puede hacer uso de los primeros cuando sea necesario.
Finalmente, nos gustaría remarcar que es posible diseñar un chatbot que no detecte entidades. Sin embargo, la detección de entidades, permite expandir sin límites el rango de aplicación y las funcionalidades del chatbot. Detectar entidades nos permite desde tener más control sobre el flujo de las conversaciones, a realizar consultas en base de datos. Por ese motivo, consideramos que las entidades son una pieza fundamental en el diseño de un chatbot.
Foto de Google DeepMind: https://www.pexels.com/es-es/foto/18069813/
Xavier Plaza - author
Ingeniero superior en informática y Executive MBA, experiencia en Business Intelligence, Machine Learning, dirección de empresas, desarrollo de proyectos informáticos y experiencia real en la administración pública.
Categorías
- Blog (6)
- Conocimiento (31)
- Gestión (17)
- Historias (24)
- Sectores (17)
- Adm. Pública (16)
- Tecnologías (3)
- Uso de Atlas SBI (5)
- Sectores (17)
- Machine Learning (5)
- LLM/GPT (3)
- Noticias (24)
- Proyectos (33)
- SAPIENS (12)
- SapiensXBot (4)
- Vídeos (20)
- General/Usuario (8)
- Técnico avanzado (5)
- Técnico Básico (7)
Deja un comentario