Planear la aplicación de LUIS

Un esquema de aplicación de Language Understanding (LUIS) contiene intenciones y entidades pertinentes para el dominio del sujeto. Las intenciones clasifican las expresiones de usuario y las entidades extraen los datos de esas expresiones. Intenciones y entidades pertinentes para el dominio del sujeto. Las intenciones clasifican las expresiones del usuario.

Una aplicación de LUIS aprende y funciona de forma más eficaz cuando se desarrolla de forma iterativa. Este es un ciclo de iteración típico:

  1. Creación de una nueva versión
  2. Edición del esquema de aplicación de LUIS Esto incluye:
    • Intenciones con expresiones de ejemplo
    • Entidades
    • Características
  3. Entrenamiento, prueba y publicación
  4. Prueba del aprendizaje activo mediante la revisión de las expresiones enviadas al punto de conexión de predicción
  5. Recopilación de datos de consultas del punto de conexión

A screenshot showing the authoring cycle

Identificar el dominio

Una aplicación de LUIS se centra en un dominio de sujeto. Por ejemplo, podría darse el caso de que tuviera una aplicación de viajes que controla la reserva de billetes, vuelos, hoteles y alquiler de vehículos. Otra aplicación podría proporcionar contenido relacionado con el ejercicio, el seguimiento de resultados de fitness y el establecimiento de objetivos. Identificar el dominio le ayuda a buscar palabras o frases que son importantes para su dominio.

Sugerencia

LUIS ofrece dominios creados previamente para muchos escenarios comunes. Compruebe si puede usar un dominio creado previamente como punto de partida para su aplicación.

Identificar las intenciones

Piense en las intenciones que son importantes para la tarea de la aplicación.

Veamos el ejemplo de una aplicación de viajes, que dispone de funciones para reservar un vuelo y consultar el tiempo del destino del usuario. Puede definir dos intenciones, ReservarVuelo y ObtenerClima, para estas acciones.

En una aplicación más compleja con más funciones, probablemente tenga más intenciones y debe definirlas cuidadosamente para que no sean demasiado específicas. Por ejemplo, es posible que ReservarVuelo y ReservarHotel deban ser intenciones diferentes, pero ReservarVueloInternacional y ReservarVueloNacional podrían resultar demasiado parecidas.

Nota

Se recomienda usar únicamente las intenciones que necesite para llevar a cabo las funciones de la aplicación. Si define demasiadas intenciones, a LUIS le resultará más difícil clasificar las expresiones correctamente. Si define demasiado pocas, podrían ser tan generales que se superpongan.

Si no necesita identificar la intención general del usuario, agregue todas las expresiones de usuario de ejemplo a la intención None. Si la aplicación necesita más intenciones, puede crearlas más adelante.

Creación de expresiones de ejemplo para cada intención

Para empezar, evite crear demasiadas expresiones para cada intención. Cuando haya determinado las intenciones que necesita para la aplicación, cree 15 o 30 expresiones de ejemplo por cada intención. Cada expresión debe ser diferente de la expresión anteriormente proporcionada. Incluya una variedad de recuentos de palabras, opciones de palabras, tiempos verbales y signos de puntuación.

Para más información, consulte Comprender cuáles son las expresiones correctas para la aplicación de LUIS.

Identificar las entidades

En las expresiones de ejemplo, identifique las entidades que desea extraer. Para reservar un vuelo necesita información como el destino, la fecha, la aerolínea, el tipo de billete y la clase del viaje. Cree las entidades para estos tipos de datos y, a continuación, marque las entidades en las expresiones de ejemplo, ya que son importantes para llevar a cabo una intención.

A la hora de determinar las entidades que va a usar en la aplicación, recuerde que hay distintos tipos de entidades para capturar las relaciones entre los tipos de objetos. Consulte Entidades en LUIS para más información sobre los distintos tipos.

Sugerencia

LUIS ofrece entidades pregeneradas para escenarios comunes de usuarios de conversación. Considere la posibilidad de usar entidades pregeneradas como punto de partida para el desarrollo de aplicaciones.

Intenciones frente a entidades

Una intención es el resultado deseado de una expresión completa, mientras que las entidades son fragmentos de datos extraídos de la expresión. Normalmente, las intenciones están relacionadas con acciones que la aplicación cliente debe realizar. Las entidades son la información necesaria para realizar esta acción. Desde la perspectiva de la programación, una intención desencadenaría una llamada al método y las entidades se utilizarían como parámetros para esa llamada al método.

Esta expresión debe tener una intención y puede incluir entidades:

"Comprar un billete de avión de Seattle a El Cairo"

Esta expresión tiene una única intención:

  • Comprar un boleto de avión

Esta expresión puede tener varias entidades:

  • Ubicaciones de Seattle (origen) y Cairo (destino);
  • La cantidad de un boleto.

Resolución de expresiones con más de una función o intención

En muchos casos, especialmente cuando se trabaja con la conversación natural, los usuarios proporcionan una expresión que puede contener más de una función o intención. Para solucionar esto, una estrategia general es comprender que la salida se puede representar mediante intenciones y entidades. Esta representación se debe poder asignar a las acciones de la aplicación cliente, y no es necesario que se limite a las intenciones.

Int-ent-ties es el concepto de que las acciones (normalmente se entienden como intenciones) también se pueden capturar como entidades en la salida de la aplicación y asignarse a acciones específicas. La negación,por ejemplo, se basa normalmente en la intención y la entidad para la extracción completa. Tenga en cuenta las dos expresiones siguientes, que son muy parecidas en la elección de palabras, pero que tienen resultados diferentes:

  • "Programar mi vuelo de El Cairo a Seattle"
  • "Cancelar mi vuelo de El Cairo a Seattle"

En lugar de tener dos intenciones independientes, debe crear una única intención con la entidad de aprendizaje automático AcciónDeVuelo. Esta entidad de aprendizaje automático debe extraer los detalles de la acción para una solicitud de programación y una solicitud de cancelación, así como una ubicación de origen o de destino.

Esta entidad AcciónDeVuelo se estructuraría con la siguiente entidad de aprendizaje automático de nivel superior y las entidades secundarias:

  • FlightAction
    • Acción
    • Origen
    • Destination

Para ayudar con la extracción, se agregarían características a las entidades secundarias. Las características se elegirían según el vocabulario que espera ver en las expresiones de usuario y los valores que desea que se devuelvan en la respuesta de predicción.

Procedimientos recomendados

Planeamiento del esquema

Antes de empezar a crear el esquema de la aplicación, debe identificar cómo y dónde planea usar esta aplicación. Cuanto más exhaustivo y específico sea el planeamiento, mejor será la aplicación.

  • Analice los usuarios de destino
  • Defina los roles en su totalidad para representar la aplicación: voz, avatar y tratamiento de problemas (proactivo, reactivo)
  • Identifique los canales de las interacciones de los usuarios (por ejemplo, texto o voz), la entrega a las soluciones existentes o la creación de una nueva solución para esta aplicación.
  • Recorrido completo del usuario
    • ¿Qué se espera que haga y que no haga esta aplicación? ¿Cuáles son las prioridades de lo que debe hacer?
    • ¿Cuáles son los principales casos de uso?
  • Recopile datos: obtenga información acerca de la recopilación y preparación de los datos

No entrenar y publicar con cada expresión de ejemplo

Agregue 10 o 15 expresiones antes de entrenar y publicar. De esta forma, puede ver el impacto en la precisión de la predicción. Si agrega una única expresión, puede que no vea ningún impacto en la puntuación.

No usar LUIS como una plataforma de aprendizaje

LUIS es específico de un dominio de modelo de lenguaje. Esto no está pensado para que funcione como una plataforma general de aprendizaje de lenguaje natural.

Compilar la aplicación de forma iterativa con versiones

Cada ciclo de creación debe estar en una nueva versión, clonada de una versión existente.

No publique demasiado rápido

Publicar la aplicación demasiado rápido, sin un planeamiento adecuado, puede dar lugar a varios problemas como, por ejemplo:

  • La aplicación no funcionará en su escenario real con un nivel aceptable de rendimiento.
  • El esquema (intenciones y entidades) podría no ser adecuado y, si ha desarrollado la lógica de la aplicación cliente según el esquema, puede que tenga que volver a hacerlo. Esto puede provocar retrasos inesperados y costos adicionales para el proyecto en el que está trabajando.
  • Las expresiones que agregue al modelo podrían provocar un sesgo hacia las expresiones de ejemplo que es difícil de depurar e identificar. Esto también dificultará la eliminación de ambigüedades una vez que se haya confirmado un esquema determinado.

Supervisar el rendimiento de la aplicación

Supervise la precisión de las predicciones mediante un conjunto de pruebas de lote.

Mantenga un conjunto de expresiones que no se use como expresiones de ejemplo o de punto de conexión. Siga mejorando la aplicación del conjunto de pruebas. Adapte el conjunto de pruebas para que refleje expresiones de usuarios reales. Use este conjunto de pruebas para evaluar cada iteración o versión de la aplicación.

No crear listas de frases con todos los valores posibles

Proporcione algunos ejemplos en las listas de frases, pero no todas las palabras o frases. LUIS generaliza y tiene en cuenta el contexto.

Pasos siguientes

Intenciones