Modificación de datos de expresiones antes o durante la predicción

Importante

LUIS se retirará el 1 de octubre de 2025. Además, a partir del 1 de abril de 2023, ya no se podrán crear recursos de este servicio. Se recomienda migrar las aplicaciones de LUIS al reconocimiento del lenguaje conversacional para aprovechar el soporte continuo del producto y las capacidades multilingües.

LUIS proporciona distintos métodos para manipular la expresión antes o durante la predicción. Entre ellos se incluyen la corrección de la ortografía y la solución de los problemas de la zona horaria para elementos datetimeV2 creados previamente.

Corregir errores de ortografía de una expresión

Runtime V3

Preprocese el texto por correcciones ortográficas antes de enviar la expresión a LUIS. Use expresiones de ejemplo con la ortografía correcta para asegurarse de obtener las predicciones correctas.

Utilice Bing Spell Check para corregir el texto antes de enviarlo a LUIS.

Antes de runtime V3

LUIS usa Bing Spell Check API V7 para corregir los errores de ortografía de la expresión. LUIS necesita la clave asociada a ese servicio. Cree la clave y agréguela como parámetro de cadena de consulta en el punto de conexión.

El punto de conexión requiere dos parámetros para que las correcciones ortográficas funcionen:

Parámetro Value
spellCheck boolean
bing-spell-check-subscription-key Clave de punto de conexión de Bing Spell Check API V7

Cuando Bing Spell Check API V7 detecta un error, se devuelven la expresión original y la expresión corregida junto con las predicciones del punto de conexión.

{
  "query": "Book a flite to London?",
  "alteredQuery": "Book a flight to London?",
  "topScoringIntent": {
    "intent": "BookFlight",
    "score": 0.780123
  },
  "entities": []
}

Lista de palabras permitidas

Bing Spell Check API que se utiliza en LUIS no admite una lista de palabras para omitir durante las alteraciones de la corrección ortográfica. Si necesita admitir una lista de palabras o acrónimos, procese la expresión en la aplicación cliente antes de enviar la expresión a LUIS para la predicción de intenciones.

Cambiar la zona horaria de la entidad datetimeV2 creada previamente

Cuando una aplicación de LUIS usa la entidad datetimeV2 creada previamente, se puede devolver un valor de fecha y hora en la respuesta de la predicción. La zona horaria de la solicitud se usa para determinar la fecha y hora correctas que se van a devolver. Si la solicitud procede de un bot o de otra aplicación centralizada antes de llegar a LUIS, corrija la zona horaria que usa LUIS.

API de predicción V3 para modificar la zona horaria

En la versión 3, datetimeReference determina el desplazamiento de la zona horaria.

API de predicción V2 para modificar la zona horaria

La zona horaria se puede corregir agregando la zona horaria del usuario al punto de conexión mediante el parámetro timezoneOffset basado en la versión de la API. El valor del parámetro debe ser un número positivo o negativo (en minutos) para modificar la hora.

Ejemplo de horario de verano de predicción V2

Si necesita que la entidad datetimeV2 creada previamente que se ha devuelto se ajuste al horario de verano, debe usar el parámetro de cadena de consulta con un valor +/- en minutos para la consulta del punto de conexión.

Agregar 60 minutos:

https://{region}.api.cognitive.microsoft.com/luis/v2.0/apps/{appId}?q=Turn the lights on?timezoneOffset=60&verbose={boolean}&spellCheck={boolean}&staging={boolean}&bing-spell-check-subscription-key={string}&log={boolean}

Quitar 60 minutos:

https://{region}.api.cognitive.microsoft.com/luis/v2.0/apps/{appId}?q=Turn the lights on?timezoneOffset=-60&verbose={boolean}&spellCheck={boolean}&staging={boolean}&bing-spell-check-subscription-key={string}&log={boolean}

El código en C# de la predicción de V2 determina el valor correcto del parámetro

El siguiente código de C# usa el método FindSystemTimeZoneById de la clase TimeZoneInfo para determinar el valor de desplazamiento correcto según la hora del sistema:

// Get CST zone id
TimeZoneInfo targetZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");

// Get local machine's value of Now
DateTime utcDatetime = DateTime.UtcNow;

// Get Central Standard Time value of Now
DateTime cstDatetime = TimeZoneInfo.ConvertTimeFromUtc(utcDatetime, targetZone);

// Find timezoneOffset/datetimeReference
int offset = (int)((cstDatetime - utcDatetime).TotalMinutes);

Pasos siguientes

Corregir errores de ortografía con este tutorial