共用方式為


預測之前或預測期間變更語句資料

重要

LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議移轉 LUIS 應用程式交談語言理解,以享有產品持續支援和多語言功能的優點。

LUIS 提供可在預測之前或預測期間操作語句的方法。 這些包括修正拼字,以及修正預先建置 datetimeV2 的時區問題。

校正語句中的拼字錯誤

V3 執行階段

預先處理文字進行拼字校正,再將表達傳送至 LUIS。 使用具有正確拼字的範例表達,以確保您取得正確的預測。

使用 Bing 拼字檢查校正文字,再將其傳送至 LUIS。

在 V3 執行階段之前

LUIS 使用 Bing 拼字檢查 API V7 來校正語句中的拼字錯誤。 LUIS 需要與該服務相關的金鑰。 請建立金鑰,然後在端點新增該金鑰作為查詢字串參數。

端點必須有兩個參數,才能讓拼字校正運作:

Param
spellCheck boolean
bing-spell-check-subscription-key Bing 拼字檢查 API V7 端點金鑰

Bing 拼字檢查 API V7 偵測到錯誤時,系統會將原始語句和校正後語句及預測一起從端點傳回。

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

允許的字組清單

LUIS 中使用的 Bing 拼字檢查 API 不支援要在拼字檢查變更期間忽略的字組清單。 如果您需要允許字組或縮略字清單,請處理用戶端應用程式中的表達,再將表達傳送至 LUIS 進行意圖預測。

變更預先建置 datetimeV2 實體的時區

當 LUIS 應用程式使用預先建置的 datetimeV2 實體時,可以在預測回應中傳回日期時間值。 要求的時區會用來判斷要傳回的正確日期時間。 如果要求來自 Bot 或另一個集中式應用程式,請在其抵達 LUIS 之前,先更正 LUIS 使用的時區。

變更時區的 V3 預測 API

在 V3 中,datetimeReference 可判斷時區位移。

變更時區的 V2 預測 API

更正時區的方式是根據 API 版本使用 timezoneOffset 參數將使用者時區新增至端點。 參數的值應該是用以變更時間的正數或負數 (以分鐘為單位)。

V2 預測日光節約範例

如果您需要讓傳回的預先建置 datetimeV2 針對日光節約時間進行調整,則應該針對端點查詢,使用查詢字串參數搭配以分鐘為單位的 +/- 值。

增加 60 分鐘:

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}

減去 60 分鐘:

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}

V2 預測 C# 程式碼可判斷參數的正確值

下列 C# 程式碼使用 TimeZoneInfo 類別的 FindSystemTimeZoneById 方法,根據系統時間判斷正確的位移值:

// 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);

下一步

使用此教學課程來校正拼字錯誤