.lu ファイル形式
この記事の対象: SDK v4
.lu ファイルには、言語理解モデルが記述されています。 .lu ファイルには、言語理解の概念を表す、Markdown に似た単純なテキスト ベースの定義が含まれています。 1 つ以上の .lu ファイルを使用して、Language Understanding (LUIS) や Orchestrator など、ボットが使用する自然言語理解 (NLU) サービスまたはエンジンの言語モデルをトレーニングできます。 選択した NLU エンジンは、.lu ファイルで記述できる要素のサブセットしか解釈できない可能性があります。
NLU エンジンは言語モデルを利用して、ユーザーの発話を理解します。 エンジンは、機械学習アルゴリズムと同様に、トレーニング例のセットから言語モデルを作成します。 トレーニングが完了すると、エンジンはモデルを使用して発話の意図を予測します。通常は、ユーザーが実行しようとしているタスクまたはアクションを表す 1 つ以上の意図と、その意図に関連する要素を表す 0 個以上のエンティティの形式です。
Bot Framework SDK または Composer を使用して開発された任意のボットで LUIS または Orchestrator を使用できます。
Note
Language Understanding (LUIS) は、2025 年 10 月 1 日に廃止されます。 2023 年 4 月 1 日以降は、新しい LUIS リソースを作成することはできません。 より新しいバージョンの言語理解が、現在、Azure AI Language の一部として提供されています。
Azure AI Language の機能である会話言語理解 (CLU) は、LUIS の更新バージョンです。 Bot Framework SDK での言語理解のサポートの詳細については、「自然言語の理解」を参照してください。
この記事は、.lu ファイル形式で言語モデル要素を表す方法のリファレンスです。 ボットでの言語理解の使用方法については、「Language Understanding」または「Composer での自然言語処理」を参照してください。
サンプル発話を使用して意図を定義する
意図は、ユーザーが実行しようとしているタスクまたはアクションを表します。これは、ユーザーの発話で表現されます。 ボットに意図を追加して、同じユーザーの意図を表す質問またはコマンドのグループを識別できるようにします。
旅行ボットに対して定義する意図の例と、それらの定義元となる発話の例を次に示します。
インテント | 発話の例 |
---|---|
BookFlight | "来週のマウイ島への便を予約して" "17 日に飛行機でマウイ島に行きたい" "次の金曜日、マウイ島への航空券が必要だ" |
あいさつ | "やあ" "こんにちは" "こんにちは" |
CheckWeather | "来週のマウイ島の天気は?" |
なし | "私はクッキーが好き" "ウシガエルは 2 メートル以上ジャンプした記録がある" |
定義する意図に加えて、None はフォールバック意図です。これは、ユーザーの発話から意図を特定できない場合に unknownIntent
イベントを発生させます。 LUIS を使用する場合、None 意図は、ドメイン外の発話で作成する必要がある必須の意図です。 None 意図に関連付けられている発話は、.lu ファイル内の発話全体の約 10% で構成されている必要があります。
サンプル発話が含まれる意図は、次のように宣言されます。
# <intent-name>
- <utterance1>
- <utterance2>
# <intent-name>
は、新しい意図の定義セクションを説明します。 意図の定義の後にある各行は、その意図について - <utterance>
形式で記述している発話例です。
これらの意図を示す .lu ファイルの例と、ユーザーが意図を表現可能な方法をキャプチャする発話の例を次に示します。
> Use ">" to create a comment in your .lu files.
> Use multiple comment ">" characters to define outlining
> sections in the file to help you organize the content.
>> Primary intents
# BookFlight
- Book me a flight to Maui next week
- Fly me to Maui on the 17th
- I need a plane ticket next Friday to Maui
# Greeting
- Hi
- Hello
- Good afternoon
>> Secondary intents
# CheckWeather
- What's the weather like in Maui next week?
Note
-、+、または * 文字を使用してリストを示します。 番号付きのリストはサポートされていません。
> を使用してコメントを作成します。
複数のコメント (">") 文字を使用して、.lu ファイル内のアウトライン セクションを定義すると、コンテンツを整理しやすくなります。 Composer を使用すると、LU ファイルを編集するときにアウトラインを活用できます。
意図と発話の詳細については、LUIS のドキュメントの「LUIS アプリにおける意図」と「LUIS アプリに対して良い発話を理解する」を参照してください。
エンティティ
エンティティは、意図の解釈で使用できるパラメーターと考えることができる発話の一部です。 たとえば、"マウイ島行きのチケットを 1 枚予約して" という発話では、"マウイ島" が FlightDestination エンティティとなっています。
ユーザーの発話例 | 予測される意図 | 抽出されたエンティティ | 説明 |
---|---|---|---|
Hello, how are you? (こんにちは、元気ですか。) | Greeting | - | 抽出するエンティティはありません。 |
"マウイ島行きのフライトを予約して" | BookFlight | "マウイ島" | "FlightDestination" エンティティは "マウイ島" として抽出されます。 |
"来週のマウイ島の天気は?" | CheckWeather | "マウイ島"、"来週" | "WeatherLocation" エンティティは "マウイ島" として抽出され、"DateRange" エンティティは "来週" として抽出されます。 |
"スモール サイズのピザを注文したい" | orderPizza | "small" | "Size" エンティティは "スモール" として抽出されます。 |
"Schedule a meeting at 1pm with Bob in Distribution" (ディストリビューションのボブと午後 1 時にミーティング) | ScheduleMeeting | "午後 1 時"、"ボブ" | "MeetingTime" エンティティは "午後 1 時" として抽出され、"Attendees" エンティティは "ボブ" として抽出されます。 |
ヒント
LUIS でのエンティティの使用に特化した詳細については、LUIS ドキュメントの「LUIS のエンティティ」を参照してください。
エンティティの定義
エンティティの定義では、発話内のスパンをエンティティとして認識し、ボットで使用する方法を定義します。 機械学習エンティティ、事前構築済みエンティティ、リスト エンティティ、正規表現エンティティ、パターン エンティティなど、さまざまな種類のエンティティがあります。
.lu ファイル内のエンティティ定義のエントリは、アット マーク (@
) から始まり、その後にエンティティの種類とエンティティ名が続きます。
@ <entity-type> <entity-name>
必要に応じて、各エンティティに、同じエンティティのさまざまな用途を識別するロールを含めることもできます。 エンティティを認識しやすくなるように、特徴量を追加することもできます。 一般的な構文は次のようになります。
@ <entity-type> <entity-name> [[hasRole[s]] <comma-separated-list-of-roles>] [hasFeature[s] <comma-separated-list-of-features>]
定義を必要とするエンティティ (リスト エンティティや正規表現エンティティなど) は、次の表記を使用して表現されます。
@ <entity-type> <entity1-name> = <definition>
エンティティ宣言のその他の例については、以降のセクションで、適用するエンティティの種類と共に示します。
事前構築済みエンティティを除き、エンティティ名にはスペースを使った複数の単語を含めることができます。 スペースが含まれるエンティティ名は、必ず引用符で囲む必要があります。
@ ml "this is a simple entity" role1, role2 = definition
@ ml 'another simple entity' hasRole role1 hasFeatures feature1, feature2
エンティティの種類
LUIS には、いくつかの種類のエンティティがあります。 以降のセクションでは、これらのエンティティの種類とそれに関連する概念 (ロールや特徴量など)、およびそれらを使用する LU テンプレートの作成方法の例について説明します。
機械学習エンティティ
機械学習エンティティは、サンプル発話でラベルを付ける例を提供できるエンティティです。 これにより、学習に必要なコンテキストが提供されます。 機械学習エンティティは、常に適切な形式とは限らないが、同じ意味を持つデータを識別する場合に最適です。
次の例は、city (@ ml city
) という名前の機械学習エンティティと、エンティティにラベルが付いたサンプル発話を含む bookFlight
意図を示しています。
> Define the city machine-learned entity
@ ml city
> Define the bookFlight intent with sample utterances that contain the machine-learned entities
# bookFlight
- Book a flight from {@city = Cairo} to {@city = Seattle}
- Get me 2 tickets for a flight to {@city = Bengaluru}
- Purchase ticket from {@city = Washington} to {@city = Tampa Bay}
ユーザーが "ロンドンからマドリードへのフライトを予約したい" というようなことを言うと、LUIS は 'bookFlight' の意図を検出し、ロンドンとマドリードの両方を city エンティティとして抽出します。
ロールは基本的に、機械学習エンティティに追加できるコンテキスト情報の追加レイヤであり、コンテキストからも学習できます。 次の発話例は、city エンティティに関連付けられている出発地と目的地のロールを示しています。
- Book a flight from {@city:departure = Cairo} to {@city:destination = Seattle}
機械学習エンティティは、相互に関連するエンティティの階層を持っているように複雑な場合もあります。 たとえば、quantity、size、crust、toppings などの子エンティティを持つ pizzaOrder
エンティティのようなものにすることができます。
次の例に示すように、子エンティティはアット マーク (@) の前にダッシュ (-) を付けてインデントすることで定義します。
@ prebuilt number
@ list sizeList
@ list crustList
@ list toppingList
@ ml pizzaOrder
- @ number Quantity
- @ sizeList Size
- @ crustList Crust
- @ toppingList Topping
上記の例では、number エンティティは事前構築済みエンティティです。 残りのエンティティはすべてリスト エンティティです。
次の例では、address
と fromAddress
という 2 つのロールと子を持つ toAddress
機械学習エンティティの定義を示します。
@ list cityList
@ prebuilt number
@ prebuilt geographyV2
@ regex regexZipcode = /[0-9]{5}/
@ ml address hasRoles fromAddress, toAddress
@ address =
- @ number 'door number'
- @ ml streetName
- @ ml location usesFeature geographyV2
- @ cityList city
- @ regexZipcode zipcode
事前構築済みエンティティ
事前構築済みの LUIS エンティティは、システムによって定義されます。 これにより、高品質で、プログラムで使用しやすい正規化された値が提供されるため、作業の手間を省くことができます。 たとえば、"1,000 と 2" という語句は 1002 という数値になります。 以下の種類の LUIS [事前構築済み][prebuilt-entity] エンティティがサポートされています。
- 年齢
- datetimeV2
- dimension
- メール
- geographyV2
- keyPhrase
- 金額
- 数値
- ordinal (序数)
- ordinalV2
- 割合
- personName
- phonenumber
- 温度
- url
- datetime
以下に、事前構築済みエンティティの定義方法の例をいくつか示します。
@ prebuilt number
@ prebuilt datetimeV2
@ prebuilt age
リスト エンティティ
[リスト エンティティ][list-entity] は、固定かつ限定された関連単語セットとその同意語を表します。 対応する同意語のいずれかが認識されると、正規化された値が返されます。 大文字と小文字は区別され、完全なテキスト一致に基づいて抽出されます。
次の例は、リスト エンティティを定義するための構文を示しています。
@ list <entityName> =
- <normalized-value> :
- <synonym1>
- <synonym2>
- ...
- <normalized-value> :
- <synonym1>, <synonym2>, ...
機械学習エンティティ セクションの pizzaOrder
の例を展開して、size と crust という子エンティティのリストの例を次に示します。
@ list sizeList =
- Extra Large :
- extra large
- XL
- xl
- huge
- massive
- Large:
- large
- big
- Medium :
- medium
- regular
- Small :
- small
- smallest
- individual
@ list crustList =
- Stuffed Crust :
- stuffed crust
- stufffed crust
- Thin :
- thin
- thin crust
- Thick :
- thick
- thick crust
- Deep Dish
- deep dish
ヒント
リスト エンティティでは完全一致を抽出する必要があるため、一般的なスペルミスを追加することで結果が向上する可能性があります。 スペルミスの一般的な原因の 1 つは、上記の例にある "stufffed crust" のように 2 連続の文字が 3 連続になったといった入力エラーによるものです。
リスト エンティティを使用する場合は、リストの値を発話に直接含める必要があります。リスト エンティティにラベルを付ける必要はありませんが、パターンのプレースホルダーとして使用することはできます。 次の例は、リストの値を含む発話を示しています。
- I'd like to order a large pepperoni stuffed crust pizza.
正規表現エンティティ
[正規表現エンティティ][regular-expression-entity] は、指定した正規表現文字パターンに基づいてエンティティを抽出します。 正規表現は、構造化テキスト、または特定の形式で想定される英数字値の定義済みシーケンスに最適です。 次に例を示します。
Entity | 正規表現 | 例 |
---|---|---|
Flight Number (便名) | flight [A-Z]{2} [0-9]{4} | flight AS 1234 |
クレジット カード番号 | [0-9]{16} | 5478789865437632 |
次に、正規表現エンティティ定義の例を示します。
> Flight Number regular expression entity definition
@ regex flightNumber = /flight [A-Z]{2} [0-9]{4}/
> Credit Card Number regular expression entity definition
@ regex creditCardNumber = /[0-9]{16}/
ロール
ロールは、発話内のコンテキストに基づくエンティティの名前付き別名です。 ロールは、任意の事前構築済みまたはカスタムのエンティティ型で使用でき、発話とパターンの両方の例で使用できます。
次の例では、Location エンティティの下に origin
と destination
の 2 つのロールがあります。
エンティティ | ロール | 目的 |
---|---|---|
場所 | 配信元 | 飛行機の出発地 |
場所 | 宛先 | 飛行機の着陸地 |
.lu ファイル形式のロールは、明示的にも暗黙的にも定義できます。 明示的なロールの定義では、次の表記に従います。
@ <entityType> <entityName> [hasRole[s]] role1, role2, ...
以下に、エンティティとそのロールを明示的に定義できるさまざまな方法を示します。
> # ml entity definition with roles
> the following are 4 different approaches to define roles:
@ ml name role1, role2
@ ml name hasRoles role1, role2
@ ml name
@ name hasRoles role1, role2
@ ml name
@ name hasRole role1
@ name hasRole role2
パターン内やラベル付きの発話内では、次の形式を使用して、暗黙的にロールを直接定義できます。
{@<entityName>:<roleName>}
次の例では、ロール userName:firstName
および userName:lastName
の暗黙的な定義の方法を確認できます。
# getUserName
- My first name is {@userName:firstName=vishwac}
- My full name is {@userName:firstName=vishwac} {@userName:lastName=kannan}
- Hello, I'm {@userName:firstName=vishwac}
- {@userName=vishwac} is my name
@ ml userName
パターンでは、{<entityName>:<roleName>}
表記に従ってロールを使用できます。 次に例を示します。
# getUserName
- call me {name:userName}
- I'm {name:userName}
- my name is {name:userName}
パターン内では、以下に示すように、1 つのエンティティに対して複数のロールを定義することもできます。
> Roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below
# BookFlight
- book flight from {city:fromCity} to {city:toCity}
- [can you] get me a flight from {city:fromCity} to {city:toCity}
- get me a flight to {city:toCity}
- I need to fly from {city:fromCity}
$city:Seattle=
- Seattle
- Tacoma
- SeaTac
- SEA
$city:Portland=
- Portland
- PDX
パターン
[パターン][] を使用すると、エンティティが見つかる場所のプレースホルダーを含む発話を作成することで、一致する必要がある多数の例に対応できます。 パターンは、エンティティのプレースホルダーを持つトークン レベルの正規表現です。 発話にエンティティ プレースホルダーまたはパターン構文がある場合、それはパターンとして解釈されます。 それ以外の場合は、機械学習をトレーニングするための発話として解釈されます。
エンティティ プレースホルダーは、任意の種類のエンティティに対応させることも、パターン自体で定義することもできます。たとえば、パターン内のセクションが、周囲の単語を調べることで識別されるエンティティである場合などです。
パターンの構文
.lu ファイル形式では、LUIS [パターン構文][] がサポートされています。 パターンの構文は、発話に埋め込まれたテンプレートです。 テンプレートには、一致させるワードとエンティティの両方と、無視するワードや句読点が含まれている必要があります。 テンプレートは正規表現ではありません。
パターン内のエンティティは中かっこ {} で囲まれます。 パターンにはエンティティ、およびロール付きのエンティティを含めることができます。 [Pattern.any][pattern-any] はパターンにおいてのみ使用されるエンティティです。
機能 | 構文 | 入れ子レベル | 例 |
---|---|---|---|
エンティティ | {} - 中かっこ | 2 | Where is form {entity-name}? |
省略可能 | [] - 角かっこ オプションとグループ化の組み合わせの入れ子レベルは、3 に制限されています |
2 | The question mark is optional [?] |
グループ化 | () - 小かっこ | 2 | is (a \| b) |
または | | - 縦棒 (パイプ) 1 つのグループで使用できる縦棒 (OR) は 2 個に制限されています |
- | Where is form ({form-name-short} \| {form-name-long} \| {form-number}) |
発話の開始または終了 | ^ - キャレット | - | ^begin the utterance the utterance is done^ ^strict literal match of entire utterance with {number} entity^ |
詳細については、LUIS ドキュメントの [パターン構文][] に関する記事を参照してください。
次の例は、パターンによって定義された alarmTime
エンティティを持つパターンとして扱われる定義を示しています。
# DeleteAlarm
- delete the {alarmTime} alarm
"delete the 7am alarm" (午前 7 時のアラームを削除して) という発話はパターンと一致し、"7am" の alarmTime
エンティティを認識します。
これに対し、次の例はラベル付けされた発話です。alarmTime
は、ラベル付けされた値 7AM があるため、機械学習エンティティです。
# DeleteAlarm
- delete the {alarmTime=7AM} alarm
同じ発話内でエンティティ ラベルとエンティティ プレースホルダーを混在させることはできませんが、機械学習エンティティに対応するプレースホルダーを使用することはできます。
ヒント
パターンを追加する前に、ボットがユーザーによる入力にどのように応答するか理解しておく必要があります。パターンは、発話の例よりも高い重み付けがされており、信頼性を歪めることになるためです。 それらをモデル設計の開始時に追加しても害はありませんが、モデルを発話でテストした後のほうが、各パターンがモデルをどのように変えるか確認しやすくなります。
フレーズ リスト
[語句一覧][phrase-list] とは、識別しようとしている概念を見つけやすくするための、単語のリストのことです。 このリストでは大文字と小文字は区別されません。 語句一覧には、次の 2 つの目的があります。
- 辞書を拡張する: これは、語句一覧を定義する場合の既定値であり、交換不可能と呼ばれます。 複数単語の語句は機械学習の特徴量となり、学習に必要な例が少なくなります。 この使用法では、語句一覧のメンバー間にリレーションシップはありません。
- 同意語を定義する: 交換可能な語句一覧は、同じことを意味する同意語を定義するために使用されます。 この使用法は、より少ない例で一般化するのに役立ちます。 一覧内の語句は、機械学習への同じ特徴量になります。 これを使用するには、語句一覧の定義 (
@ phraselist <Name>(interchangeable)
) でinterchangeable
を指定する必要があります。
Note
特徴量は、意図またはエンティティに関連付ける語句一覧またはエンティティであり、ユーザーの意図を正確に検出する際にその特徴量の重要性を強調するためのものです。 詳細については、「語句一覧を特徴量として追加する」を参照してください。
語句一覧を使用する一般的なシナリオを含め、語句一覧を使用するタイミングと方法の詳細については、「[概念の語句一覧を作成する][phrase-list]」を参照してください。
次の表記を使用して、語句一覧を記述します。
@ phraselist <Name>
- <phrase1>
- <phrase2>
辞書を拡張するために使用される語句一覧の例を次に示します。
@ phraseList newTerms=
- surf the sky
- jump on the beam
- blue sky pajamas
語句一覧を使用して、同意語を交換可能としてマークすることで同意語を定義することもできます。
@ phraseList Want(interchangeable) =
- require, need, desire, know
> You can also break up the phrase list values into a bulleted list
@ phraseList Want(interchangeable) =
- require
- need
- desire
- know
既定では、語句一覧は学習されたすべての意図とエンティティで使用できます。 次の 3 種類の可用性状態があります。
可用性状態 | 説明 |
---|---|
enabledForAllModels | (既定値) 語句一覧が enabledForAllModels としてマークされている場合は、特徴量として明示的に一覧に記載しているかどうかに関係なく、すべてのモデルで使用できます。 |
disabledForAllModels | 語句一覧が disabledForAllModels としてマークされている場合、特徴量として明示的に一覧に記載されているときにのみ、モデルで使用されます。 |
disabled | 語句一覧が disabled としてマークされている場合、特徴量として明示的に一覧に記載されているモデルを含め、どの場所でも使用されません。 これにより、語句一覧をオフにして、それがない場合にうまく機能するかどうか簡単に確認できる手段を得ることができます。 |
語句一覧は既定ではグローバルに使用できます。enabledForAllModels
キーワードを使用して明示的に設定することもできます。
@ phraselist abc enabledForAllModels
語句一覧を disabledForAllModels
に設定する 2 つの例:
@ phraselist abc disabledForAllModels
> You can also use this approach
@ phraselist question(interchangeable) =
- are you
- you are
@ question disabledForAllModels
語句一覧を disabled
に設定する場合、特徴量として明示的に一覧に記載されている場合でも、語句一覧は使用されません。
> phrase list definition, temporarily set to disabled to measure its impact
@ phraselist yourPhraseList disabled
> phrase list as feature to intent, won't be used
@ intent yourIntent usesFeature yourPhraseList
次のセクションで説明するように、語句一覧は、特定の意図とエンティティの特徴量として使用できます。
意図とエンティティに特徴量を追加する
機械学習は、特徴量を取得し、発話の例から目的の意図またはエンティティとの関係を学習することによって機能します。 既定では、特徴量は単に発話を構成する単語です。 語句一覧は、複数の単語をまとめて新しい特徴量にグループ化する手段を提供します。これにより、機械学習は少ない例から適切に一般化できます。 既定では、語句一覧はグローバルであり、すべての機械学習モデルに適用されますが、特定の意図やエンティティに関連付けることもできます。 また、意図またはエンティティを特徴量として使用し、他の意図をエンティティとして検出することもできます。 これによりモジュール性を実現できるため、単純な構成要素からより複雑な概念を構築できます。
Note
機械学習では、特徴量はデータの特徴的な特性または属性を記述するテキストであり、システムを使ってその観察と学習を行います。 語句一覧、意図、およびエンティティは、このセクションと次のセクションで説明するように、特徴量として使用できます。
usesFeature
キーワードを使用して、学習した意図またはエンティティに特徴量を追加できます。
語句一覧を特徴量として追加する
意図やエンティティに語句一覧を特徴量として追加できます。 そうすることで、他の意図やエンティティに影響を与えずに、これらの特定の意図またはエンティティに役立ちます。 次に、別のモデルに対する機能としてフレーズ リストを定義する方法の例を示します。
> phrase list definition
@ phraseList PLCity(interchangeable) =
- seattle
- space needle
- SEATAC
- SEA
> phrase list as feature to intent
@ intent getUserProfileIntent usesFeature PLCity
> phrase list as a feature to an ml entity
@ ml myCity usesFeature PLCity
@ regex regexZipcode = /[0-9]{5}/
> a phrase list is used as a feature in a hierarchal entity
@ ml address fromAddress, toAddress
@ address =
- @ number 'door number'
- @ ml streetName
- @ ml location
- @ ml city usesFeature PLCity
- @ regexZipcode zipcode
エンティティまたは意図の機能としての追加
次に、usesFeature
を使用して意図とエンティティを機能として追加する方法の例を示します。
> entity definition - @ <entityType> <entityName> [<roles>]
@ prebuilt personName
@ prebuilt age
> entity definition with roles
@ ml userName hasRoles fistName, lastName
> add an entity as a feature to another entity
@ userName usesFeature personName
> add an entity as feature to an intent
@ intent getUserNameIntent usesFeature personName
> Intent definition
# getUserNameIntent
- utterances
> multiple entities as a feature to a model
@ intent getUserNameIntent usesFeature age, personName
> intent as a feature to another intent
@ intent getUserProfileIntent usesFeature getUserNameIntent
# getUserProfileIntent
- utterances
Metadata
.lu ファイルには、LUIS アプリケーションまたは QnA Maker ナレッジ ベースに関連するメタデータを含めることができます。 これは、LU コンテンツを正しく処理するようパーサーに指示する助けになります。 メタデータは通常、.lu ファイルの先頭に追加されます。
次に、> !# を使用して構成情報を定義する方法を示します。
> !# @<property> = <value>
> !# @<scope>.<property> = <value>
> !# @<scope>.<property> = <semicolon-delimited-key-value-pairs>
CLI 引数で明示的に渡される情報によって、.lu ファイル内の情報がオーバーライドされることに注意してください。
> LUIS application information
> !# @app.name = my luis application
> !# @app.desc = description of my luis application
> !# @app.versionId = 1.0
> !# @app.culture = en-us
> !# @app.luis_schema_version = 7.0.0
> !# @app.settings.NormalizePunctuation = true
> !# @app.settings.NormalizeWordForm = true
> !# @app.settings.UseAllTrainingData = true
> !# @app.tokenizerVersion = 1.0.0
上記の例で使用したアプリケーション メタデータ値の説明については、次の表を参照してください。 LUIS の app.settings の詳細については、LUIS ドキュメントの [アプリとバージョンの設定][luis-metadata] を参照してください。
Metadata | 説明 |
---|---|
Name | アプリケーション名 |
VersionId | その特定のバージョンの名前 |
カルチャ | アプリケーションで使用される言語 |
スキーマ バージョン | LUIS スキーマは、LUIS に新しい特徴量または設定が追加されるたびに更新されます。 LUIS モデルを作成または更新するときに使用したスキーマ バージョン番号を使用します。 |
外部参照
以下のセクションでは、ローカル ファイル参照と URI 参照を作成する方法について詳しく説明します。
ローカル ファイル参照
Note
Azure AI QnA Maker は 2025 年 3 月 31 日に廃止されます。 2022 年 10 月 1 日以降、新しい QnA Maker リソースまたはナレッジ ベースを作成できなくなります。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。
Azure AI Language の機能であるカスタム質問応答は、QnA Maker サービスの更新バージョンです。 Bot Framework SDK での質問と回答のサポートの詳細については、「自然言語の理解」を参照してください。
.lu ファイルを参照します。 Markdown のリンク構文に従います。 サポートされる参照には以下が含まれます。
[link name](<.lu file name>)
を介した別の .lu ファイルへの参照。 参照は、絶対パスでも、格納している .lu ファイルからの相対パスでもかまいません。- 他の .lu ファイルを含むフォルダーへの参照は、以下の方法を通してサポートされます。
[link name](<.lu file path>*)
: 指定した絶対パスまたは相対パスの下にある .lu ファイルが検索されます[link name](<.lu file path>**)
: サブフォルダーを含め、指定した絶対パスまたは相対パスの下にある .lu ファイルが再帰的に検索されます。
- 特定のファイルに定義されている発話への参照を意図セクションの下か、または QnA ペアとして追加することもできます。
[link name](<.lu file path>#<INTENT-NAME>)
: .lu ファイル内の <INTENT-NAME> の下にあるすべての発話が検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.lu file path>#<INTENT-NAME>*utterances*)
: .lu ファイル内の <INTENT-NAME> の下にあるすべての (パターンでない) 発話が検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.lu file path>#<INTENT-NAME>*patterns*)
: .lu ファイル内の <INTENT-NAME> の下にあるすべての (発話でない) パターンが検索され、それらは、参照が指定されているパターンのリストに追加されます。[link name](<.lu file path>#*utterances*)
: .lu ファイル内のすべての発話が検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.lu file path>#*patterns*)
: .lu ファイル内のすべてのパターンが検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.lu file path>#*utterancesAndPatterns*)
: .lu ファイル内のすべての発話とパターンが検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.qna file path>#$name?)
: .qna コンテンツ内の特定の変更定義に含まれるすべての変更が検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.qna file path>#*alterations*?)
: .qna コンテンツ内のすべての変更が検索され、それらは、参照が指定されている発話のリストに追加されます。[link name](<.qna file path>#?question-to-find?)
: 特定の質問に含まれるすべての質問バリエーションが検索され、それらは、参照が指定されている発話のリストに追加されます。 質問に含まれるスペースはすべて、- 文字に置き換える必要があることに注意してください。[link name](<.qna file path>#*answers*?)
: すべての質問が検索され、それらは、参照が指定されている発話のリストに追加されます。
以下に、前述した参照の例を示します。
> You can include references to other .lu files
[All LU files](./all.lu)
> References to other files can have wildcards in them
[en-us](./en-us/*)
> References to other lu files can include subfolders as well.
> /** indicates to the parser to recursively look for .lu files in all subfolders as well.
[all LU files](../**)
> You can include deep references to intents defined in a .lu file in utterances
# None
- [None uttearnces](./all.lu#Help)
> With the above statement, the parser will parse all.lu and extract out all utterances associated with the 'Help' intent and add them under 'None' intent as defined in this file.
> NOTE: This **only** works for utterances as entities that are referenced by the uttearnces in the 'Help' intent won't be brought forward to this .lu file.
# All utterances
> you can use the *utterances* wild card to include all utterances from a lu file. This includes utterances across all intents defined in that .lu file.
- [all.lu](./all.lu#*utterances*)
> you can use the *patterns* wild card to include all patterns from a lu file.
> - [all.lu](./all.lu#*patterns*)
> you can use the *utterancesAndPatterns* wild card to include all utterances and patterns from a lu file.
> - [all.lu](./all.lu#*utterancesAndPatterns*)
> You can include wild cards with deep references to QnA maker questions defined in a .qna file in utterances
# None
- [QnA questions](./*#?)
> With the above statement, the parser will parse **all** .lu files under ./, extract out all questions from QnA pairs in those files and add them under 'None' intent as defined in this file.
> You can include deep references to QnA maker questions defined in a .qna file in utterances
# None
- [QnA questions](./qna1.qna#?)
> With the above statement, the parser will parse qna1.lu and extract out all questions from QnA pairs in that file and add them under 'None' intent as defined in this file.
URI 参照
URI 参照を作成する方法の例を次に示します。
> URI to LU resource
[import](http://.../foo.lu)
# intent1
> Ability to pull in specific utterances from an intent
- [import](http://.../foo.lu#None)
# intent2
> Ability to pull in utterances or patterns or both from a specific intent 'None'
- [import](http://..../foo.lu#None*utterances*)
- [import](http://..../bar.lu#None*patterns*)
- [import](http://..../taz.lu#None*utterancesandpatterns*)
# intent3
> Ability to pull in all utterances or patterns or both across all intents
- [import](http://..../foo.lu#*utterances*)
- [import](http://..../bar.lu#*patterns*)
- [import](http://..../taz.lu#*utterancesandpatterns*)
追加情報
- .qna ファイルの詳細については、「.qna ファイル形式」を参照してください。