予測前または予測中に発話データに変更を加える
重要
LUIS は 2025 年 10 月 1 日に廃止され、2023 年 4 月 1 日から新しい LUIS リソースを作成できなくなります。 継続的な製品サポートと多言語機能のベネフィットを得るために、LUIS アプリケーションを会話言語理解に移行することをお勧めします。
LUIS では、予測前または予測中に発話を操作する方法が用意されています。 これらには、スペルの修正や、事前構築済み datetimeV2 でのタイム ゾーンの問題の修正が含まれます。
発話内のスペル ミスの修正
V3 ランタイム
発話を LUIS に送信する前に、スペルを修正するためにテキストを前処理します。 正しい予測が得られるように、正しいスペルで発話の例を使用してください。
LUIS に送信する前に、Bing Spell Check を使用してテキストを修正してください。
V3 ランタイムより前
LUIS では、Bing Spell Check API V7 を使用して、発話内のスペル ミスを修正します。 LUIS には、このサービスに関連付けられているキーが必要です。 キーを作成し、エンドポイントにクエリ文字列パラメーターとして追加します。
スペル修正が機能するためには、エンドポイントに 2 つのパラメーターが必要です。
Param | 値 |
---|---|
spellCheck |
boolean |
bing-spell-check-subscription-key |
Bing Spell Check API V7 エンドポイント キー |
Bing Spell Check 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 エンティティを使用している場合、予測の応答で datetime 値が返されることがあります。 要求のタイム ゾーンを使用して、返すべき正しい datetime が決定されます。 要求元がボットであったり、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);