Prácticas recomendadas para crear modelos de interacción de Amazon Lex

Amazon Lex es un servicio de AWS para crear interfaces conversacionales en cualquier aplicación que utilice voz y texto, lo que permite a las empresas agregar sofisticados chatbots de lenguaje natural a través de diferentes canales. Amazon Lex utiliza el aprendizaje automático (ML) para comprender el lenguaje natural (texto y voz conversacionales normales). En esta publicación, revisamos un conjunto de mejores prácticas para usar ML para crear un bot que hará las delicias de sus clientes al comprenderlos con precisión. Esto le permite a su bot tener conversaciones más naturales que no requieren que el usuario siga un conjunto de instrucciones estrictas. Diseñar y crear una interfaz conversacional inteligente es muy diferente a crear una aplicación o un sitio web tradicional, y esta publicación lo ayudará a desarrollar algunas de las nuevas habilidades requeridas.

Veamos algunos de los términos que usamos con frecuencia en esta publicación:

  • Declaración – La frase que el usuario le dice a tu bot en vivo.
  • Muestra de expresión – Algunos ejemplos de lo que los usuarios podrían decir. Estos se adjuntan a las intenciones y se usan para entrenar al bot.
  • Intención – Esto representa lo que el usuario quiso decir y debe estar claramente conectado a una respuesta o acción del bot. Por ejemplo, una intención que responde a un usuario que dice hola, o una intención que puede responder y tomar medidas si un usuario quiere pedir un café. Un bot tiene una o más intenciones a las que se pueden asignar expresiones.
  • Ranura – Un parámetro que puede capturar tipos específicos de información del enunciado (por ejemplo, la hora de una cita o el nombre del cliente). Las ranuras se adjuntan a las intenciones.
  • Valor de la ranura – Ya sea ejemplos de lo que debe capturar la ranura, o una lista específica de valores para una ranura (por ejemplo, largo, medioy pequeña como valores para una ranura para tamaños de café).

La siguiente imagen muestra cómo encajan todas estas piezas para formar tu bot.

Un diagrama que muestra cómo fluye una interacción con un bot de Amazon Lex a través del reconocimiento de voz automático, la comprensión del lenguaje natural, el cumplimiento (incluida la experiencia del usuario conversacional) y la vuelta al texto a voz.

La creación de un bot bien diseñado requiere varias consideraciones diferentes. Estos incluyen la recopilación y el descubrimiento de requisitos, el diseño conversacional, las pruebas a través de la automatización y con los usuarios, y el monitoreo y la optimización de su bot. Dentro del aspecto del diseño conversacional, hay dos elementos principales: el modelo de interacción y la experiencia de usuario conversacional o de voz (CUX/VUX). CUX y VUX abarcan la personalidad del bot, los tipos de respuestas, el flujo de la conversación, las variaciones de modalidad y cómo el bot maneja entradas o fallas inesperadas. El modelo de interacción es la pieza que puede tomar lo que dijo el usuario (enunciado) y mapearlo a lo que quiso decir (intención). En esta publicación, solo veremos cómo diseñar y optimizar su modelo de interacción.

Debido a que Amazon Lex utiliza el aprendizaje automático, eso coloca al creador del bot en el rol de maestro de la máquina. Cuando construimos un bot, debemos darle todo el conocimiento que necesita sobre los tipos de conversaciones que admitirá. Hacemos esto tanto por la forma en que configuramos el bot (intenciones y espacios) como por los datos de entrenamiento que le proporcionamos (expresiones de muestra y valores de espacio). Luego, el servicio subyacente lo enriquece con conocimientos sobre el idioma en general, lo que le permite comprender frases más allá de los datos exactos que le hemos proporcionado.

Las mejores prácticas que se enumeran en las siguientes secciones pueden ayudarlo a crear un bot que brindará a sus clientes una excelente experiencia de usuario y funcionará bien para su caso de uso.

Creación de intenciones

Cada intención es un concepto que le enseñas a entender a tu bot. Por ejemplo, podría ser una intención que represente a alguien que pide un café o que alguien saluda a tu bot. Debe asegurarse de que sea realmente claro y fácil para que el bot reconozca que una expresión en particular debe coincidir con esa intención.

Imagínese si alguien le diera un conjunto de fichas con frases, cada una ordenada en montones, pero sin otro contexto o detalles. Luego comenzaron a darle tarjetas de índice adicionales con frases y le pidieron que las agregara a la pila correcta, simplemente basándose en las frases de las tarjetas en cada pila. Si cada pila representara un concepto claro con una redacción similar, esto sería fácil. Pero si no hubiera un tema claro en cada uno, sería difícil encontrar la manera de unirlos en una pila. Incluso puede comenzar a usar otras pistas, como «todas son oraciones cortas» o «solo estas tienen puntuación».

Su bot usa técnicas similares, pero recuerde que aunque ML es inteligente, no es tan inteligente como un humano y no tiene todo el conocimiento externo y el contexto que tiene un humano. Si un humano sin contexto de lo que hace su bot puede tener dificultades para entender lo que significa, es probable que su bot también lo haga. Las mejores prácticas en esta sección pueden ayudarlo a crear intenciones que serán reconocibles y más probables de que coincidan con la expresión deseada.

1. Cada intent debe representar un solo concepto

Cada intención debe representar un concepto o idea, y no solo un tema. Está bien tener múltiples intentos que se asignen a la misma acción o respuesta si separarlos les da a cada uno un concepto más claro y cohesivo. Veamos algunos pros y contras:

  • No crear intenciones genéricas que agrupen varios conceptos.

Por ejemplo, la siguiente intención combina frases sobre un producto dañado y frases de quejas más generales:

DamageComplaint
I've received a damaged product
i received a damaged product
I'm really frustrated
Your company is terrible at deliveries
My product is broken
I got a damaged package
I'm going to return this order
I'll never buy from you again

La siguiente intención es otro ejemplo, que combina la actualización de datos personales con la actualización de la aplicación móvil:

UpdateNeeded
I need to update my address
Can I update the address you have for me
How do I update my telephone number
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

  • Hacer intenciones divididas cuando tienen significados muy diferentes. Por ejemplo, podemos dividir el UpdateNeeded intención del ejemplo anterior en dos intenciones:

UpdatePersonalDetails
I need to update my address
Can I update the address you have for me
How do I update my telephone number

UpdateMobileApp
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

  • Hacer divide las intenciones cuando se necesita la misma acción o respuesta, pero usa una redacción muy diferente. Por ejemplo, las siguientes dos intenciones pueden tener el mismo resultado final, pero la primera nos dice directamente que necesitan remolcar su automóvil, mientras que la segunda solo insinúa indirectamente que es posible que necesiten remolcar su automóvil.

RoadsideAssistanceRequested
I need to tow my car

Can I get a tow truck
Can you send someone out to get my car

RoadsideAssistanceNeeded
I've had an accident

I hit an animal
My car broke down

2. Reducir la superposición entre intenciones

Pensemos de nuevo en esa pila de fichas. Si hubiera tarjetas con las mismas (o muy similares) frases, sería difícil saber en qué pila agregar una nueva tarjeta con esa frase. Es lo mismo en este caso. Queremos conjuntos realmente claros de expresiones de muestra en cada intención. Las siguientes son algunas estrategias:

  • No crear intenciones con frases muy similares que tengan significados similares. Por ejemplo, debido a que Amazon Lex generalizará fuera de las expresiones de muestra, las frases que claramente no tienen una intención específica podrían no coincidir, por ejemplo, un cliente que dice «Me gustaría reservar una cita» cuando hay dos intenciones de cita, como el seguimiento:

BookDoctorsAppointment
I’d like to book a doctors appointment

BookBloodLabAppointment
I’d like to book a lab appointment

  • Hacer use espacios para combinar intenciones que estén sobre el mismo tema y tengan una redacción similar. Por ejemplo, al combinar las dos intenciones del ejemplo anterior, podemos capturar con mayor precisión cualquier solicitud de cita y luego usar un espacio para determinar el tipo correcto de cita:

BookAppointment
I’d like to book a appointment

  • No crear intenciones donde una intención es un subconjunto de otra. Por ejemplo, a medida que crece su bot, puede ser fácil comenzar a crear intentos para capturar información más detallada:

BookFlight
I'd like to book a flight
book me a round trip flight
i need to book flight one way

BookOneWayFlight
book me a one-way flight
I’d like to book a one way flight
i need to book flight one way please

  • Hacer use ranuras para capturar diferentes subconjuntos de información dentro de una intención. Por ejemplo, en lugar de usar diferentes intenciones para capturar la información sobre el tipo de vuelo, podemos usar una ranura para capturar esto:

BookFlight
I'd like to book a flight
book me a flight
i need to book flight
I’d like to book a flight

3. Tener la cantidad adecuada de datos

En ML, los datos de entrenamiento son clave. A menudo se necesitan cientos o miles de muestras para obtener buenos resultados. Le alegrará saber que Amazon Lex no requiere una gran cantidad de datos y, de hecho, no desea tener demasiadas expresiones de muestra en cada intención, ya que pueden comenzar a divergir o agregar confusión. Sin embargo, es fundamental que proporcionemos suficientes expresiones de muestra para crear un patrón claro del que pueda aprender el bot.

Considera lo siguiente:

  • Tener al menos 15 enunciados por intención.
  • Agregue expresiones adicionales de forma incremental (lotes de 10 a 15) para que pueda probar el rendimiento por etapas. Un mayor número de enunciados no es necesariamente mejor.
  • Revise las intenciones con una gran cantidad de expresiones (más de 100) para evaluar si puede eliminar expresiones muy similares o si debe dividir la intención en varias.
  • Mantenga el número de expresiones similares en todas las intenciones. Esto permite equilibrar el reconocimiento de cada intención y evita sesgar accidentalmente su bot hacia ciertas intenciones.
  • Revise regularmente sus intenciones en función de los aprendizajes de su bot de producción y continúe agregando y ajustando las expresiones. Diseñar y desarrollar un bot es un proceso iterativo que nunca se detiene.

4. Tenga diversidad en sus datos

Amazon Lex es una IA conversacional: su propósito principal es chatear con humanos. Los humanos tienden a tienen una gran cantidad de variedad en cómo expresan las cosas. Al diseñar un bot, queremos asegurarnos de capturar ese rango en nuestra configuración de intención. Es importante volver a evaluar y actualizar su configuración y los datos de muestra con regularidad, especialmente si está ampliando o cambiando su base de usuarios con el tiempo. Considere las siguientes recomendaciones:

  • Hacer tienen una gama diversa de enunciados en cada intención. Los siguientes son ejemplos de los tipos de diversidad que debe considerar:
    • Longitudes de enunciado – El siguiente es un ejemplo de diferentes longitudes:

BookFlight
book flight
I need to book a flight
I want to book a flight for my upcoming trip

    • Vocabulario – Necesitamos alinear esto con la forma en que hablan nuestros clientes. Puede capturar esto a través de pruebas de usuario o utilizando los registros de conversación de su bot. Por ejemplo:

OrderFlowers
I want to buy flowers
Can I order flowers
I need to get flowers

    • Fraseo – Necesitamos una combinación de enunciados que representen las diferentes formas en que nuestros clientes pueden expresar las cosas. El siguiente ejemplo muestra enunciados que usan “libro” como verbo, “reserva» como sustantivo, «reserva de vuelo” como sujeto, y lenguaje formal e informal:

BookFlight
I need to book a flight
can you help with a flight booking
Flight booking is what I am looking for
please book me a flight
I'm gonna need a flight

    • Puntuación – Deberíamos incluir una gama de uso común. También deberíamos incluir el uso no gramatical si es algo que un cliente usaría (especialmente al escribir). Vea el siguiente ejemplo:

OrderFlowers
I want to order flowers.
i wanted to get flowers!
Get me some flowers... please!!

    • uso de tragamonedas – Proporcione expresiones verbales de muestra que muestren tanto el uso como el no uso de espacios. Use diferentes combinaciones de máquinas tragamonedas en aquellas que las incluyen. Asegúrese de que los espacios tengan ejemplos con diferentes lugares en los que podrían aparecer en el enunciado. Por ejemplo:

CancelAppointment
Cancel appointment
Cancel my appointment with Dr.
Cancel appointment on with Dr.
Cancel my appointment on
Can you tell Dr. to cancel my appointment
Please cancel my doctors appointment

  • No siga agregando expresiones que son solo pequeñas variaciones en la redacción. Amazon Lex puede manejar la generalización de estos por usted. Por ejemplo, no necesitaría cada una de estas tres variaciones ya que las diferencias son menores:

DamagedProductComplaint
I've received a damaged product
I received a damaged product
Received damaged product

  • No agregar diversidad a algunas intenciones pero no a otras. Tenemos que ser coherentes con las formas de diversidad que añadimos. Recuerde las fichas desde el principio: cuando un enunciado no es claro, el bot puede comenzar a usar otras pistas, como la longitud de la oración o la puntuación, para tratar de encontrar una coincidencia. Hay momentos en los que puede querer usar esto a su favor (por ejemplo, si realmente quiere dirigir todas las frases de una palabra a una intención particular), pero es importante que evite hacerlo por accidente.

Creando tragamonedas

Hablamos de algunas buenas prácticas relacionadas con las tragamonedas en la sección anterior, pero veamos algunas mejores prácticas más específicas para las tragamonedas.

5. Use frases cortas de sustantivos o adjetivos para tragamonedas

Las tragamonedas representan algo que se puede capturar definitivamente como un parámetro, como el tamaño del café que desea pedir o el aeropuerto al que vuela. Considera lo siguiente:

  • Usa sustantivos o adjetivos cortos para los valores de tus tragamonedas. No utilice espacios para cosas como frases portadoras («Cómo puedo» o «que podria yo”) porque esto reducirá la capacidad de Amazon Lex para generalizar sus declaraciones. Trate de mantener espacios para los valores que necesita capturar para cumplir su intención.
  • Mantenga las ranuras generalmente para una o dos palabras.

6. Preferir tragamonedas sobre valores explícitos

Puede usar espacios para generalizar las frases que está usando, pero también debemos ceñirnos a las recomendaciones que acabamos de revisar. Para que los valores de nuestros espacios sean lo más fáciles de identificar posible, nunca usamos valores incluidos en el espacio directamente en expresiones de muestra. Ten en cuenta los siguientes consejos:

  • No incluir explícitamente valores que podrían ser espacios en las expresiones de muestra. Por ejemplo:

OrderFlowers
I want to buy roses
I want to buy lilies
I would love to order some orchids
I would love to order some roses

  • Hacer use ranuras para reducir la repetición. Por ejemplo:

OrderFlowers
I want to buy
I would love to order some

flowers
roses
lilies
orchids

  • No mezclar ranuras y valores reales en las expresiones de muestra. Por ejemplo:

OrderFlowers
I want to buy
I want to buy lilies
I would love to order some

flowers
roses
lilies
orchids

  • No tienen intenciones con solo espacios en las expresiones de muestra si los tipos de espacios son AlphaNumeric, Number, Date, GRXML, son ranuras personalizadas muy amplias o incluyen abreviaturas. En su lugar, amplíe los enunciados de muestra agregando frases conversacionales que incluyan el espacio en los enunciados de muestra.

7. Mantén los valores de tus tragamonedas coherentes

El bot tiene que decidir si emparejar una ranura basándose únicamente en lo que puede aprender de los valores que hemos ingresado. Si hay mucha similitud o superposición dentro de las ranuras con la misma intención, esto puede causar problemas con la coincidencia de la ranura correcta.

  • No tienen ranuras con valores superpuestos en la misma intención. Trate de combinarlos en su lugar. Por ejemplo:

pets
cat
dog
goldfish

animals
horse
cat
dog

8. Considere cómo se transcribirán las palabras

Amazon Lex utiliza el reconocimiento de voz automatizado (ASR) para transcribir el habla. Esto significa que todas las entradas de su modelo de interacción de Amazon Lex se procesan como texto, incluso cuando se utiliza un robot de voz. Debemos recordar que una transcripción puede variar de cómo los usuarios pueden escribir lo mismo. Considera lo siguiente:

  • Introduzca siglas u otras palabras cuyas letras deban pronunciarse individualmente, como letras individuales separadas por un punto y un espacio. Esto coincidirá más con la forma en que se transcribirá. Por ejemplo:

A. T. M.
A. W. S.
P. A.

  • Revise el audio y las transcripciones con regularidad, para que pueda ajustar sus expresiones de muestra o tipos de espacios. Para hacer esto, active los registros de conversación y habilite los registros de texto y audio, siempre que sea posible.

9. Usa las opciones correctas disponibles para tus máquinas tragamonedas

Hay muchos tipos diferentes de tragamonedas y opciones disponibles, y usar las mejores opciones para cada una de nuestras tragamonedas puede ayudar a reconocer esos valores de tragamonedas. Siempre queremos tomarnos el tiempo para comprender las opciones antes de decidir cómo diseñar nuestras máquinas tragamonedas:

  • Utilice la opción de restricción para limitar las ranuras a un conjunto cerrado de valores. Puede definir sinónimos para cada valor. Esto podría ser, por ejemplo, los elementos del menú en su restaurante.
  • Utilice la opción de expansión cuando desee poder identificar más que solo los valores de muestra que proporciona (por ejemplo, Nombre).
  • Active la ofuscación para las ranuras que recopilan datos confidenciales para evitar que se registren.
  • Use sugerencias de tiempo de ejecución para mejorar el reconocimiento de ranuras cuando pueda reducir las opciones potenciales en tiempo de ejecución. Elegir un espacio puede reducir las opciones para otro; por ejemplo, es posible que un tipo de mueble en particular no tenga todas las opciones de color.
  • Use estilos de ortografía para capturar palabras poco comunes o palabras con variaciones en la ortografía, como nombres.

10. Usa vocabulario personalizado para dominios especializados

En la mayoría de los casos, no se requiere un vocabulario personalizado, pero puede ser útil si sus usuarios utilizarán palabras especializadas que no son comunes en el lenguaje cotidiano. En este caso, agregar uno puede ser útil para asegurarse de que sus transcripciones sean precisas. Tenga en cuenta lo siguiente:

  • Hacer use un vocabulario personalizado para agregar palabras que Amazon Lex no reconoce fácilmente en conversaciones basadas en voz. Esto mejora la transcripción de voz a texto y la experiencia general del cliente.
  • No use palabras cortas o comunes como «en», «eso», «a», «sí» o «no» en un vocabulario personalizado.
  • Hacer decida cuánto peso dar a una palabra en función de la frecuencia con la que la palabra no se reconoce en la transcripción y la rareza de la palabra en la entrada. Las palabras que son difíciles de pronunciar requieren un mayor peso. Use un conjunto de prueba representativo para determinar si un peso es apropiado. Puede recopilar un conjunto de prueba de audio activando el registro de audio en los registros de conversación.
  • Hacer use tipos de espacios personalizados para listas de valores de catálogo o entidades como nombres de productos o fondos mutuos.

11. Las tragamonedas GRXML necesitan una gramática estricta

Al migrar a Amazon Lex desde un servicio que ya puede tener gramáticas (como los motores tradicionales de reconocimiento automático de voz), es posible reutilizar las gramáticas GRXML durante el nuevo proceso de diseño del bot. Sin embargo, al crear un bot de Amazon Lex completamente nuevo, recomendamos verificar primero si otros tipos de tragamonedas pueden satisfacer sus necesidades antes de usar GRXML. Considera lo siguiente:

  • Hacer use las ranuras GRXML solo para la entrada hablada y no para las interacciones basadas en texto.
  • No agregue las frases portadoras para las ranuras GRXML en el archivo GRXML (gramática) en sí.
  • Hacer coloque frases portadoras en las expresiones de muestra de la ranura, como I live in o is my zip code.
  • Hacer crea la gramática para capturar solo los valores de ranura correctos. Por ejemplo, para capturar un código postal de EE. UU. de cinco dígitos, solo debe aceptar valores que tengan exactamente cinco dígitos.

Resumen

En esta publicación, repasamos un conjunto de mejores prácticas que deberían ayudarlo a diseñar y construir su próximo bot. A medida que retira esta información, es importante recordar que las mejores prácticas siempre dependen del contexto. Estas no son reglas, sino pautas para ayudarlo a crear un chatbot de alto rendimiento. A medida que siga creando y optimizando sus propios bots, encontrará que algunos de estos son más importantes para su caso de uso que otros, y puede agregar sus propios mejores practicas Como creador de bots, tiene mucho control sobre cómo configura su bot de Amazon Lex para obtener los mejores resultados para su caso de uso, y estas mejores prácticas deberían brindarle un excelente punto de partida.

Podemos resumir las mejores prácticas en este post de la siguiente manera:

  • Mantenga cada intención en un solo concepto claro con un conjunto coherente de expresiones
  • Utilice datos de expresión de muestra representativos, equilibrados y diversos
  • Use ranuras para aclarar las intenciones y capturar datos
  • Mantenga cada ranura en un solo tema con un conjunto claro de valores
  • Conozca y use el tipo correcto de ranura para su caso de uso

Para obtener más información sobre Amazon Lex, consulte Primeros pasos con Amazon Lex para obtener documentación, tutoriales, videos instructivos, ejemplos de código y SDK.


Sobre el Autor

Foto de Gillian Armstronggillian amstrong es un arquitecto de soluciones de construcción. Está entusiasmada con la forma en que la nube está abriendo oportunidades para que más personas utilicen la tecnología para resolver problemas, y está especialmente entusiasmada con la forma en que las tecnologías cognitivas, como la IA conversacional, nos permiten interactuar con las computadoras de formas más humanas.

Fuente del artículo

Deja un comentario