¿Cuáles son las frases de entrenamiento?

Frases de Entrenamiento: Clave de Chatbots

31/03/2022

Valoración: 4.29 (8102 votos)

Antes de sumergirte en el fascinante mundo de la creación de interfaces conversacionales y sus diversos frameworks, es fundamental que domines una serie de conceptos básicos que te permitirán comprender a fondo su mecánica interna. Uno de estos pilares, y quizás el más crucial, son las frases de entrenamiento. Estas no son meras oraciones; son el alma y la base sobre la que se construye la capacidad de un chatbot para entender, procesar y responder de manera inteligente a los usuarios.

¿Cuál es el mensaje principal para un entrenador?
El mensaje principal para el entrenador es: a pesar de que no podrá hacer que todos sus atletas se sientan talentosos, podrá lograr que se sientan más competentes. A pesar de que no podrá hacer que todos sus atletas sientan que han alcanzado muchos logros, advertirá que cada uno de ellos tiene cierta sensación de éxito real.

Imagina un chatbot como un aprendiz incansable. Para que aprenda a interactuar eficazmente, necesita ejemplos, y estos ejemplos son precisamente las frases de entrenamiento. Sin ellas, el bot sería una cáscara vacía, incapaz de interpretar el lenguaje humano en sus múltiples variantes. En este artículo, desglosaremos qué son exactamente estas frases, cómo se utilizan en el corazón de un sistema conversacional y por qué su correcta elaboración es la clave para el éxito de cualquier asistente virtual.

Índice de Contenido

El Cerebro de un Chatbot: NLU y CORE

Para entender la función vital de las frases de entrenamiento, primero debemos comprender la arquitectura esencial de un chatbot. En su núcleo, un asistente conversacional se compone de dos grandes partes interconectadas, cada una con una función específica pero complementaria:

  • Comprensión del Lenguaje Natural (NLU - Natural Language Understanding): Esta es la parte que se encarga de descifrar el significado del mensaje del usuario. Es el oído y la mente del chatbot, responsable de interpretar lo que el usuario quiere decir, independientemente de cómo lo diga.
  • Gestión del Flujo de Diálogo (CORE): Una vez que el NLU ha entendido el mensaje, el CORE toma el relevo. Es el cerebro que decide cómo responder al usuario, basándose en el significado del mensaje, el contexto de la conversación y el estado actual del diálogo. Es el responsable de la lógica y la coherencia de la interacción.

Ambas partes, NLU y CORE, se basan fundamentalmente en algoritmos de clasificación para llevar a cabo sus tareas. Estos algoritmos forman parte del campo del aprendizaje automático y, más específicamente, pertenecen al subgrupo de algoritmos de tipo supervisado. Su funcionamiento, a grandes rasgos, puede entenderse como una función que recibe diversas variables de entrada y devuelve una variable de salida.

Algoritmos de Clasificación: La Base del Aprendizaje Supervisado

El término “supervisado” se les acuña porque estos algoritmos extraen conocimiento de forma automática a partir del procesamiento de una serie de muestras de entrenamiento. Estas muestras han sido previamente vinculadas a una determinada clase o categoría bajo la supervisión de una persona. Es decir, un humano “etiqueta” los datos para que el algoritmo aprenda de ellos.

Una vez completada esta fase de entrenamiento, el algoritmo adquiere la capacidad de predecir (o calcular) la clase (variable de salida) a la que pertenece una nueva muestra de entrada, que no fue utilizada durante el entrenamiento, con un alto grado de fiabilidad. Esta capacidad de generalización es lo que permite a los chatbots responder a frases que nunca antes han “visto”.

NLU en Detalle: De Frases a Intenciones

En el contexto del NLU, las muestras con las que entrenamos el algoritmo (las variables de entrada) son precisamente las frases de ejemplo que esperamos recibir por parte del usuario. Estas frases pueden ser "Quiero reservar una mesa", "Necesito información sobre mi pedido", "Hola", o cualquier otra expresión que un usuario podría utilizar para interactuar con el chatbot.

La salida, una vez que el algoritmo ha sido entrenado, será la intención del usuario con mayor afinidad a la frase que ha recibido como entrada, según el criterio del algoritmo. Por ejemplo, si el usuario dice "Quiero pedir una pizza", la intención predicha podría ser "RealizarPedidoComida".

Desde un punto de vista matemático, para que el algoritmo pueda interpretarlas, estas frases se convierten a un vector numérico. De manera similar, cada una de las clases o intenciones con las que se “etiqueta” el mensaje del usuario también se “traducen” a un vector. De esta manera, el entrenamiento para cualquier algoritmo geométrico supervisado consiste en un ajuste de los parámetros del modelo, orientado a reducir la distancia o el “error” entre el vector de entrada (la frase) y el vector de salida (la intención). Cuanto menor sea este error, mejor será la capacidad del NLU para clasificar correctamente las intenciones del usuario.

El CORE: Gestionando el Flujo de la Conversación y el Contexto

A menudo, los mensajes de los usuarios pueden ser ambiguos o requerir una respuesta específica en función del contexto de la conversación en ese instante. Aquí es donde el CORE entra en juego, complementando la labor del NLU.

En primer lugar, el NLU predice la intención más probable. Por ejemplo, si un usuario dice "Adiós", el NLU podría predecir la intención "Despedir". Sin embargo, el CORE no se limita a esta predicción. Procede a analizar el contexto para escoger la acción idónea con la que responder al usuario. Para ello, además de la intención predicha por el NLU, se fija en otros elementos como:

  • Palabras clave (entidades): Información específica dentro del mensaje del usuario.
  • Estado de variables contextuales: Datos de procesos externos o internos de la conversación (ej. ¿se ha completado un formulario?).
  • Últimas acciones del bot: Qué ha dicho o hecho el bot en los mensajes inmediatamente anteriores.

Retomando el ejemplo del "Adiós" ambiguo: si el objetivo de la conversación es completar un formulario y este aún está incompleto, el CORE, al detectar la intención "Despedir", podría decidir que la respuesta adecuada no es simplemente un "Adiós" final, sino una frase que cierre la conversación actual pero invite a continuar el proceso más tarde, como "¡Hasta pronto! Recuerda que aún tienes un formulario pendiente por completar." Si el formulario ya estuviera completo, la respuesta sería un "Adiós" definitivo. Este ejemplo ilustra cómo el CORE utiliza el contexto para afinar la respuesta.

Las muestras de entrada con las que entrenamos el algoritmo del CORE son, por lo tanto, combinaciones de palabras clave, otras variables contextuales y las acciones que se han ido seleccionando en los mensajes anteriores. La salida, una vez entrenado, será la acción más apropiada con la que responder al usuario en un contexto dado.

Es importante recordar que no es obligatorio basar el flujo de diálogo en un algoritmo. Algunos servicios de interfaces conversacionales, como IBM Watson Assistant, construyen el flujo de diálogo mediante reglas, a partir de una ramificación de nodos que contemplan todas las variantes posibles en una conversación. Estos nodos actúan como estados y se activan cuando se cumple una condición específica, compuesta por una combinación de intenciones, entidades y variables de contexto.

Intenciones: El Propósito Detrás de las Palabras

Hemos aludido a las intenciones (o intents en inglés) en numerosas ocasiones. Ya sabemos que son el resultado predicho por el algoritmo del NLU. En concreto, para un mensaje de entrada, el NLU calculará un porcentaje de afinidad o confianza (confidence) con el que considera que la frase se aproxima a cada intención para las que ha sido entrenado a identificar.

Por ejemplo, imagina un chatbot diseñado para asistir a usuarios en un departamento de servicios técnicos de una empresa. Este chatbot podría estar diseñado para atender a los trabajadores en dos dominios principales: "Resolver incidencia" y "Solicitar un dispositivo". Por lo tanto, tendría al menos dos intenciones principales, una por cada área de conocimiento que se espera que domine.

Si un usuario abre el canal de conversación y dice: "Mi ordenador no se conecta con la impresora", el chatbot debería predecir la intención "Resolver incidencia". Sin embargo, el usuario podría haber utilizado muchas otras variantes para expresar la misma necesidad: "El PC no detecta la impresora", "La impresora no responde al mandar imprimir", "No encuentro la impresora en la lista de dispositivos", etc.

Los matices de todas estas muestras de frases son los que se irán almacenando en los parámetros del algoritmo utilizado. Por lo tanto, cuantas más frases de ejemplo y más variadas sean, mayor será la probabilidad de que el bot acierte la intención del usuario. Estas frases de entrenamiento deben ser las más representativas de una determinada intención, es decir, las peticiones más frecuentes y diversas que esperamos recibir por parte del usuario para esa intención específica.

Entidades: Reconociendo los Detalles Clave

Si las intenciones nos dicen "qué quiere hacer el usuario", las entidades nos informan sobre "sobre qué lo quiere hacer" o "con qué detalles". Las entidades (entities) son palabras o expresiones clave dentro del mensaje del usuario que el chatbot está programado para reconocer y que activan determinadas acciones cuando se detecta su presencia. Son la información específica que el bot necesita extraer del mensaje.

Para cubrir todas aquellas posibles variantes de esas entidades que puede escribir el usuario para referirse a lo mismo, estas se pueden complementar con un grupo de sinónimos (si aluden a palabras como "móvil", "celular", "teléfono") o bien con expresiones regulares (regex) para códigos alfanuméricos como un número de teléfono, un DNI, un número de error, etc.

Continuando con el ejemplo del soporte técnico: si un usuario dice al chatbot: "Mi navegador ha volcado un error 403 cuando he introducido la página web, ¿a qué se debe?". En primer lugar, el NLU predecirá la intención "Resolver incidencia". Después, comprobará si reconoce alguna entidad en el mensaje. Supongamos que previamente hemos creado estas dos entidades:

  1. "Navegador": que incluye sinónimos como "Chrome", "Firefox", "Edge", "Internet Explorer".
  2. "Error": configurada con una expresión regular para detectar códigos de tres dígitos (ej. \b\d{3}\b).

Así, el chatbot no solo sabrá que el usuario tiene una incidencia, sino que el problema está relacionado con un "navegador" y, de manera muy específica, con un "error 403". Esta tupla "intención-entidades" es vital para que el CORE pueda predecir la acción más precisa y personalizada.

Historias: Mapeando el Camino de la Conversación

Las historias (stories) son otro recurso fundamental utilizado por el CORE, especialmente en frameworks como Rasa. En concreto, son la información de la que se nutre el algoritmo a la hora de entrenarse para gestionar el flujo del diálogo. Las historias aúnan todos los posibles contextos por los que se contempla que se desarrolle la conversación.

En otras palabras, son los esqueletos de todas las conversaciones previstas entre el usuario y el chatbot. Estos esqueletos están compuestos por una secuencia de intenciones del usuario, entidades detectadas y otras variables contextuales (a menudo llamadas slots). Al entrenar el CORE con estas historias, el algoritmo aprende los patrones de diálogo y cómo debe responder en cada situación específica.

Un ejemplo de formato para una historia podría ser:

## camino feliz * saludo - utter_saludo * contactar_ventas - form_ventas - slot{"producto": "X"} * agradecimiento - utter_agradecimiento 

En este fragmento, "## camino feliz" es el nombre de la historia. Las líneas con "*" representan las intenciones del usuario ("saludo", "contactar_ventas", "agradecimiento"), y las líneas con "-" representan las respuestas o acciones del bot ("utter_saludo", "form_ventas", "utter_agradecimiento"). Los "slot{}" indican la extracción de entidades o el almacenamiento de información contextual. Al aprender de estas secuencias, el bot puede anticipar y guiar la conversación de manera más natural y eficiente.

Tabla Comparativa: NLU vs. CORE

Para solidificar la comprensión de estos dos componentes esenciales, a continuación, se presenta una tabla comparativa de sus roles principales:

CaracterísticaNLU (Natural Language Understanding)CORE (Gestión del Flujo de Diálogo)
Función PrincipalComprender el significado del mensaje del usuario.Gestionar el flujo de la conversación y decidir la respuesta.
Entrada PrincipalFrases de entrenamiento (ejemplos de mensajes del usuario).Intención predicha por NLU, entidades, variables contextuales, acciones previas del bot.
Salida PrincipalIntención del usuario (y entidades).Acción o respuesta más apropiada para el usuario.
ObjetivoClasificar el propósito del usuario.Mantener una conversación coherente y contextual.
Base de AprendizajeAsociación de frases a intenciones y extracción de entidades.Patrones de conversación y secuencias de diálogo (historias).

Preguntas Frecuentes sobre las Frases de Entrenamiento y Chatbots

¿Cuántas frases de entrenamiento necesito para una intención?

No hay un número mágico, pero cuantas más frases de entrenamiento, y más diversas y representativas sean, mejor. Se recomienda un mínimo de 5 a 10 frases por intención para empezar, pero en sistemas robustos, se pueden necesitar cientos o miles para cubrir todas las variaciones posibles de una intención.

¿Qué sucede si mi chatbot no entiende una frase?

Si el chatbot no entiende una frase, generalmente significa que la confianza del NLU en cualquier intención es demasiado baja. Esto puede deberse a que no hay suficientes frases de entrenamiento para esa intención, las frases son ambiguas, o la frase del usuario es completamente nueva y no se parece a nada para lo que el bot ha sido entrenado. La solución es revisar las frases de entrenamiento existentes, añadir nuevas que sean representativas de lo que el usuario quiere decir, y asegurarse de que no haya solapamiento entre intenciones.

¿Puedo usar las mismas frases para entrenar diferentes intenciones?

No, esto es una mala práctica. Utilizar la misma o frases muy similares para entrenar diferentes intenciones introduce ambigüedad y confunde al algoritmo de clasificación. Cada frase de entrenamiento debe estar claramente asociada a una única intención para garantizar la precisión del NLU.

¿Es lo mismo una intención que una entidad?

No, son conceptos relacionados pero distintos. Una intención representa el objetivo o propósito general del mensaje del usuario (ej., "quiero reservar"). Una entidad es una pieza de información específica y relevante dentro de ese mensaje que añade detalles a la intención (ej., "la fecha", "el número de personas", "el tipo de comida"). La intención es el "qué", la entidad es el "con qué" o "sobre qué".

¿Es obligatorio basar el flujo de diálogo (CORE) en un algoritmo?

No, como se mencionó anteriormente, algunos sistemas permiten construir el CORE mediante reglas o un árbol de decisiones predefinido. Sin embargo, los enfoques basados en algoritmos (especialmente aquellos que utilizan historias) ofrecen mayor flexibilidad y escalabilidad para manejar conversaciones complejas y dinámicas, ya que el bot puede aprender a navegar por el diálogo sin una codificación explícita de cada posible ruta.

Conclusión

Las frases de entrenamiento son mucho más que simples ejemplos; son el combustible que alimenta la inteligencia de un chatbot. Son la materia prima a partir de la cual el NLU aprende a interpretar las intenciones del usuario y el CORE aprende a gestionar el flujo de la conversación de manera coherente. La calidad, diversidad y representatividad de estas frases, junto con la correcta definición de intenciones, entidades e historias, son factores determinantes para el éxito de cualquier interfaz conversacional.

Invertir tiempo y esfuerzo en la creación de un conjunto robusto y bien estructurado de frases de entrenamiento es fundamental. Esto no solo mejora la precisión del chatbot, sino que también enriquece la experiencia del usuario, permitiendo interacciones más naturales, fluidas y satisfactorias. Comprender estos conceptos básicos te posiciona en una ventaja para diseñar y optimizar chatbots que realmente "entiendan" y "conversen" con eficacia.

Si quieres conocer otros artículos parecidos a Frases de Entrenamiento: Clave de Chatbots puedes visitar la categoría Entrenamiento.

Subir