Procedimientos recomendados para compilar una aplicación de reconocimiento de lenguaje con Cognitive ServicesBest practices for building a language understanding app with Cognitive Services

Use el proceso de creación de aplicaciones para compilar la aplicación de LUIS:Use the app authoring process to build your LUIS app:

  • Compilar el modelo de lenguajeBuild language model
  • Agregar algunas expresiones de ejemplo de entrenamiento (10-15 por intención)Add a few training example utterances (10-15 per intent)
  • PublicarPublish
  • Probar desde el punto de conexiónTest from endpoint
  • Agregar característicasAdd features

Una vez que la aplicación esté publicada, use el ciclo de creación para agregar características, publicar y probar desde el punto de conexión.Once your app is published, use the authoring cycle to add features, publish, and test from endpoint. No comience el siguiente ciclo de creación al agregar más expresiones de ejemplo,Do not begin the next authoring cycle by adding more example utterances. ya que, de esta forma, LUIS no aprende el modelo con expresiones reales del usuario.That does not let LUIS learn your model with real-world user utterances.

Para que LUIS sea eficaz en su trabajo de aprendizaje, no expanda las expresiones hasta que el conjunto actual de expresiones de ejemplo y punto de conexión devuelva resultados seguros y con predicciones altas.In order for LUIS to be efficient at its job of learning, do not expand the utterances until the current set of both example and endpoint utterances are returning confident, high prediction scores. Mejore las puntuaciones mediante un aprendizaje activo, patrones y listas de frases.Improve scores using active learning, patterns, and phrase lists.

Qué se debe hacer y qué noDo and Don't

En la lista siguiente, se incluyen los procedimientos recomendados para las aplicaciones de LUIS:The following list includes best practices for LUIS apps:

Do NoDon't
Definir diferentes intencionesDefine distinct intents Agregar varias expresiones de ejemplo a las intencionesAdd many example utterances to intents
Buscar un punto óptimo entre ser demasiado genérico y demasiado específico para cada intenciónFind a sweet spot between too generic and too specific for each intent Usar LUIS como una plataforma de aprendizajeUse LUIS as a training platform
Compilar la aplicación de forma iterativaBuild your app iteratively Agregar varias expresiones de ejemplo del mismo formato, omitiendo otros formatosAdd many example utterances of the same format, ignoring other formats
Agregar listas de frases y patrones en iteraciones posterioresAdd phrase lists and patterns in later iterations Combinar la definición de intenciones y entidadesMix the definition of intents and entities
Equilibrar las expresiones en todas las intenciones, excepto en la intención None.Balance your utterances across all intents except the None intent.
Agregar expresiones de ejemplo a la intención NoneAdd example utterances to None intent
Crear listas de frases con todos los valores posiblesCreate phrase lists with all possible values
Aprovechar la característica de sugerencia para un aprendizaje activoLeverage the suggest feature for active learning Agregar demasiados patronesAdd too many patterns
Supervisar el rendimiento de la aplicaciónMonitor the performance of your app Entrenar y publicar al agregar cada expresión de ejemploTrain and publish with every single example utterance added
Usar versiones para cada iteración de la aplicaciónUse versions for each app iteration

Definir diferentes intencionesDo define distinct intents

Asegúrese de que el vocabulario de cada intención sea solo para esa intención y no se superponga con otra intención.Make sure the vocabulary for each intent is just for that intent and not overlapping with a different intent. Por ejemplo, si quiere que una aplicación controle preparativos de viaje como vuelos y hoteles, puede elegir que estas áreas de asuntos sean intenciones independientes o que tengan una misma intención con entidades de datos específicos dentro de la expresión.For example, if you want to have an app that handles travel arrangements such as airline flights and hotels, you can choose to have these subject areas as separate intents or the same intent with entities for specific data inside the utterance.

Si el vocabulario entre dos intenciones es el mismo, combine la intención y use entidades.If the vocabulary between two intents is the same, combine the intent, and use entities.

Considere las siguientes expresiones de ejemplo:Consider the following example utterances:

Expresiones de ejemploExample utterances
Reservar un vueloBook a flight
Reservar un hotelBook a hotel

"Book a flight" ("Reservar un vuelo") y "Book a hotel" ("Reservar un hotel") usan el mismo vocabulario: "book a" (“reservar un”)."Book a flight" and "Book a hotel" use the same vocabulary of "book a ". Este formato es el mismo, por lo que debería tratarse de la misma intención con las diferentes palabras extraídas de las entidades "flight" (“vuelo”) y "hotel".This format is the same so it should be the same intent with the different words of flight and hotel as extracted entities.

Para obtener más información:For more information:

Buscar un punto óptimo para las intencionesDo find sweet spot for intents

Use datos de predicción de LUIS para determinar si las intenciones se superponen.Use prediction data from LUIS to determine if your intents are overlapping. Las intenciones que se superponen confunden a LUIS.Overlapping intents confuse LUIS. El resultado es que la intención con mayor puntuación es demasiado cercana a otra intención.The result is that the top scoring intent is too close to another intent. Dado que LUIS no usa exactamente la misma ruta a través de los datos para el aprendizaje todas las veces, una intención que se superpone tiene una posibilidad de ser la primera o segunda en el aprendizaje.Because LUIS does not use the exact same path through the data for training each time, an overlapping intent has a chance of being first or second in training. Quiere que la puntuación de la expresión de cada intención esté más alejada para que esto no suceda.You want the utterance's score for each intention to be farther apart so this flip/flop doesn't happen. Una buena distinción de las intenciones debería dar como resultado cada vez la intención superior que se esperaba.Good distinction for intents should result in the expected top intent every time.

Compilar la aplicación de forma iterativaDo build the app iteratively

Mantenga un conjunto de expresiones que no se use como expresiones de ejemplo o de punto de conexión.Keep a separate set of utterances that isn't used as example utterances or endpoint utterances. Siga mejorando la aplicación del conjunto de pruebas.Keep improving the app for your test set. Adapte el conjunto de pruebas para que refleje expresiones de usuarios reales.Adapt the test set to reflect real user utterances. Use este conjunto de pruebas para evaluar cada iteración o versión de la aplicación.Use this test set to evaluate each iteration or version of the app.

Los desarrolladores deben tener tres conjuntos de datos.Developers should have three sets of data. El primero incluye las expresiones de ejemplo para compilar el modelo.The first is the example utterances for building the model. El segundo es para probar el modelo en el punto de conexión.The second is for testing the model at the endpoint. El tercero incluye los datos de prueba ocultos usados en las pruebas por lotes.The third is the blind test data used in batch testing. Este último conjunto no se usa en el aprendizaje de la aplicación ni se envía al punto de conexión.This last set isn't used in training the application nor sent on the endpoint.

Para obtener más información:For more information:

Agregar listas de frases y patrones en iteraciones posterioresDo add phrase lists and patterns in later iterations

Un procedimiento recomendado es no aplicar estas prácticas antes de que la aplicación se haya probado.A best practice is to not apply these practices before your app has been tested. Es necesario entender cómo se comporta la aplicación antes de agregar listas de frases y patrones, ya que estas características tienen mayor peso que las expresiones de ejemplo y sesgarán la confianza.You should understand how the app behaves before adding phrase lists and patterns because these features are weighted more heavily than example utterances and will skew confidence.

Una vez comprenda cómo se comporta sin estas características, agregue cada una de ellas a la aplicación según corresponda.Once you understand how your app behaves without these, add each of these features as they apply to your app. No es necesario agregar estas características con cada iteración ni cambiarlas con cada versión.You do not need to add these features with each iteration or change the features with each version.

No existe ningún inconveniente en agregarlas al principio del diseño del modelo, pero es más fácil ver cómo resulta cada cambio de la característica después de que el modelo se haya probado con expresiones.There is no harm adding them in the beginning of your model design but it is easier to see how each feature changes results after the model is tested with utterances.

Una práctica recomendada consiste en probar a través del punto de conexión para obtener la ventaja adicional del aprendizaje activo.A best practice is to test via the endpoint so that you get the added benefit of active learning. El panel prueba interactiva también es una metodología de pruebas válida.The interactive testing pane is also a valid test methodology.

Listas de frasesPhrase lists

Las listas de frases permiten definir diccionarios de palabras relacionadas con el dominio de la aplicación.Phrase lists allow you to define dictionaries of words related to your app domain. Inicie la lista de frases con unas pocas palabras y después use la característica de sugerencia para que LUIS conozca más palabras en el vocabulario específicas de la aplicación.Seed your phrase list with a few words then use the suggest feature so LUIS knows about more words in the vocabulary specific to your app. Una lista de frases mejora la detección de intención y la clasificación de entidad incrementando la señal asociada con palabras o frases que son importantes para la aplicación.A Phrase List improves intent detection and entity classification by boosting the signal associated with words or phrases that are significant to your app.

No agregue cada palabra al vocabulario, puesto que la lista de frases no es una coincidencia exacta.Don't add every word to the vocabulary since the phrase list isn't an exact match.

Para obtener más información:For more information:

PatronesPatterns

Las expresiones de usuarios reales del punto de conexión, muy similares entre sí, pueden revelar patrones de elección y ubicación de las palabras.Real user utterances from the endpoint, very similar to each other, may reveal patterns of word choice and placement. La característica del patrón toma esta elección y ubicación de las palabras junto con expresiones regulares para mejorar la precisión de la predicción.The pattern feature takes this word choice and placement along with regular expressions to improve your prediction accuracy. Una expresión regular en el patrón permite palabras y puntuación que pretende ignorar, mientras que sigue coincidiendo con el patrón.A regular expression in the pattern allows for words and punctuation you intend to ignore while still matching the pattern.

Use una sintaxis opcional del patrón para la puntuación, para que esta se pueda omitir.Use pattern's optional syntax for punctuation so punctuation can be ignored. Use la lista explícita para compensar los problemas de sintaxis de pattern.any.Use the explicit list to compensate for pattern.any syntax issues.

Para obtener más información:For more information:

Equilibrio de las expresiones en todas las intencionesBalance your utterances across all intents

Para que las predicciones de LUIS sean precisas, la cantidad de expresiones de ejemplo en cada intención (excepto para la intención None), debe ser relativamente igual.In order for LUIS predictions to be accurate, the quantity of example utterances in each intent (except for the None intent), must be relatively equal.

Si tiene una intención con 100 expresiones de ejemplo y una intención con 20 expresiones de ejemplo, la intención de las 100 expresiones tendrá una mayor tasa de predicción.If you have an intent with 100 example utterances and an intent with 20 example utterances, the 100-utterance intent will have a higher rate of prediction.

Agregar expresiones de ejemplo a la intención NoneDo add example utterances to None intent

Esta es la intención de reserva, que indica todo lo que está fuera de la aplicación.This intent is the fallback intent, indicated everything outside your application. Agregue una expresión de ejemplo en la intención None por cada 10 expresiones de ejemplo del resto de la aplicación de LUIS.Add one example utterance to the None intent for every 10 example utterances in the rest of your LUIS app.

Para obtener más información:For more information:

Aprovechar la característica de sugerencia para un aprendizaje activoDo leverage the suggest feature for active learning

Use la revisión de las expresiones del punto de conexión del aprendizaje activo de forma habitual, en lugar de agregar más expresiones de ejemplo a las intenciones.Use active learning's Review endpoint utterances on a regular basis, instead of adding more example utterances to intents. Dado que la aplicación recibe de forma constante expresiones de punto de conexión, esta lista crece y cambia.Because the app is constantly receiving endpoint utterances, this list is growing and changing.

Para obtener más información:For more information:

Supervisar el rendimiento de la aplicaciónDo monitor the performance of your app

Supervise la precisión de las predicciones mediante un conjunto de pruebas de lote.Monitor the prediction accuracy using a batch test set.

Agregar varias expresiones de ejemplo a las intencionesDon't add many example utterances to intents

Una vez publicada la aplicación, agregue solo expresiones de aprendizaje activo en el proceso iterativo.After the app is published, only add utterances from active learning in the iterative process. Si las expresiones son demasiado similares, agregue un patrón.If utterances are too similar, add a pattern.

No usar LUIS como una plataforma de aprendizajeDon't use LUIS as a training platform

LUIS es específico de un dominio de modelo de lenguaje.LUIS is specific to a language model's domain. Esto no está pensado para que funcione como una plataforma general de aprendizaje de lenguaje natural.It isn't meant to work as a general natural language training platform.

No agregar varias expresiones de ejemplo del mismo formato, omitiendo otros formatosDon't add many example utterances of the same format, ignoring other formats

LUIS espera variaciones en las expresiones de una intención.LUIS expects variations in an intent's utterances. Las expresiones pueden variar y conservar el mismo significado general.The utterances can vary while having the same overall meaning. Las variaciones pueden incluir la longitud de la expresión, así como la elección y ubicación de las palabras.Variations can include utterance length, word choice, and word placement.

No usar el mismo formatoDon't use same format Usar un formato diferenteDo use varying format
Comprar un billete a SeattleBuy a ticket to Seattle
Comprar un billete a ParísBuy a ticket to Paris
Comprar un billete a OrlandoBuy a ticket to Orlando
Comprar 1 billete a SeattleBuy 1 ticket to Seattle
Reservar dos asientos en el vuelo nocturno a París el próximo lunesReserve two seats on the red eye to Paris next Monday
Quiero adquirir 3 billetes a Orlando para las vacaciones de primaveraI would like to book 3 tickets to Orlando for spring break

La segunda columna usa diferentes verbos (comprar, reservar y adquirir), distintas cantidades (1, dos y 3) y diferentes colocaciones de las palabras, pero todas tienen la misma intención de comprar billetes de avión para viajar.The second column uses different verbs (buy, reserve, book), different quantities (1, two, 3), and different arrangements of words but all have the same intention of purchasing airline tickets for travel.

No combinar la definición de intenciones y entidadesDon't mix the definition of intents and entities

Cree una intención para cualquier acción que llevará a cabo el bot.Create an intent for any action your bot will take. Use entidades como parámetros que hacen posible esa acción.Use entities as parameters that make that action possible.

Para un bot de chat que reservará vuelos, cree una intención BookFlight.For a chatbot that will book airline flights, create a BookFlight intent. No cree una intención para cada compañía aérea o destino.Do not create an intent for every airline or every destination. Use esos datos como entidades y márquelos en las expresiones de ejemplo.Use those pieces of data as entities and mark them in the example utterances.

No crear listas de frases con todos los valores posiblesDon't create phrase lists with all the possible values

Proporcione algunos ejemplos en las listas de frases, pero no todas las palabras.Provide a few examples in the phrase lists but not every word. LUIS generaliza y tiene en cuenta el contexto.LUIS generalizes and takes context into account.

No agregar muchos patronesDon't add many patterns

No agregue demasiados patrones.Don't add too many patterns. LUIS está pensado para aprender rápidamente con pocos ejemplos.LUIS is meant to learn quickly with fewer examples. No sobrecargue el sistema innecesariamente.Don't overload the system unnecessarily.

No entrenar y publicar con cada expresión de ejemploDon't train and publish with every single example utterance

Agregue 10 o 15 expresiones antes de entrenar y publicar.Add 10 or 15 utterances before training and publishing. De esta forma, puede ver el impacto en la precisión de la predicción.That allows you to see the impact on prediction accuracy. Si agrega una única expresión, puede que no vea ningún impacto en la puntuación.Adding a single utterance may not have a visible impact on the score.

Uso de versiones para cada iteración de la aplicaciónDo use versions for each app iteration

Cada ciclo de creación debe estar en una nueva versión, clonada de una versión existente.Each authoring cycle should be within a new version, cloned from an existing version. LUIS no tiene ningún límite para las versiones.LUIS has no limit for versions. El nombre de una versión se usa como parte de la ruta de la API, por lo que es importante elegir los caracteres permitidos en una dirección URL y usar un máximo de 10 caracteres.A version name is used as part of the API route so it is important to pick characters allowed in a URL as well as keeping within the 10 character count for a version. Desarrolle una estrategia de nombres para las versiones para mantenerlas organizadas.Develop a version name strategy to keep your versions organized.

Para obtener más información:For more information:

Pasos siguientesNext steps