パターンの構文

重要

LUIS は 2025 年 10 月 1 日に廃止され、2023 年 4 月 1 日から新しい LUIS リソースを作成できなくなります。 継続的な製品サポートと多言語機能のベネフィットを得るために、LUIS アプリケーション会話言語理解に移行することをお勧めします。

パターンの構文は、発話のテンプレートです。 テンプレートには、一致させるワードとエンティティのほか、無視するワードや句読点が含まれている必要があります。 正規表現ではありません

注意事項

パターンには、機械学習エンティティの親のみが含まれ、サブエンティティは含まれません。 パターン内のエンティティは中かっこ ({}) で囲まれます。 パターンにはエンティティ、およびロール付きのエンティティを含めることができます。 pattern.any はパターンにおいてのみ使用されるエンティティです。

パターン構文では、次の構文がサポートされています。

機能 構文 入れ子レベル
エンティティ {} - 中かっこ 2 フォーム {エンティティ名} はどこですか?
省略可能 [] - 大かっこ

省略可能とグループ化の組み合わせの入れ子レベルは、3 に制限されています
2 疑問符は省略可能です [?]
グループ化 () - 小かっこ 2 は (a | b)
または | - 縦棒 (パイプ)

1 つのグループで使用できる縦棒 (または) は 2 個に制限されています
- フォーム ({短いフォーム名} | {長いフォーム名} | {フォーム番号}) はどこですか
発話の開始または終了 ^ - キャレット - ^発話を開始します
発話を終了します^
^{number} 個のエンティティとの発話全体の厳密なリテラル一致^

パターンでの入れ子構文

角かっこの省略可能構文は、2 レベルまで入れ子にできます。 (例: [[this]is] a new form)。 この例では、次の発話が許容されます。

入れ子になった省略可能な発話の例 説明
this is a new form (これは新しいフォームです) パターン内のすべての単語と一致します
is a new form (新しいフォームです) 外部の省略可能な単語およびパターン内の省略可能ではない単語と一致します
a new form (新しいフォーム) 必要な単語のみと一致します

かっこによるグループ化構文は、2 レベルまで入れ子にできます。 (例: (({Entity1:RoleName1} | {Entity1:RoleName2} ) | {Entity2} ))。 この機能により、3 つのエンティティのどれとでも一致できます。

Entity1 が出発地 (Seattle) や到着地 (Cairo) などの役割を持つ場所であり、Entity 2 がリスト エンティティの既知のビル名 (RedWest-C) である場合、次の発話はこのパターンにマップされます。

入れ子になったグループ化の発話の例 説明
RedWest-C 外側のグループ化エンティティと一致します
Seattle 内側のグループ化エンティティの 1 つと一致します
カイロ 内側のグループ化エンティティの 1 つと一致します

省略可能構文でのグループに対する入れ子の制限

グループ化省略可能の構文の組み合わせでは、入れ子レベルは 3 に制限されます。

許可
はい ( [ ( test1 | test2 ) ] | test3 )
いいえ ( [ ( [ test1 ] | test2 ) ] | test3 )

"または" 構文を含むグループの入れ子の制限

グループ化と "または" の構文の組み合わせでは、縦棒は 2 個に制限されます。

許可
はい ( test1 | test2 | ( test3 | test4 ) )
いいえ ( test1 | test2 | test3 | ( test4 | test5 ) )

パターン テンプレートにエンティティを追加する構文

パターン テンプレートにエンティティを追加するには、エンティティ名を Who does {Employee} manage? のように中かっこで囲みます。

エンティティのあるパターン
Who does {Employee} manage?

パターン テンプレートにエンティティとロールを追加する構文

エンティティのロールは、{entity:role} のようにエンティティ名、コロン、ロール名の順に記述します。 パターン テンプレートにロール付きのエンティティを追加するには、エンティティ名とロール名を Book a ticket from {Location:Origin} to {Location:Destination} のように中かっこで囲みます。

エンティティ ロールのあるパターン
Book a ticket from {Location:Origin} to {Location:Destination}

パターン テンプレートに pattern.any を追加する構文

Pattern.any エンティティでは、パターンに可変長のエンティティを追加することができます。 パターン テンプレートが後に続く限り、pattern.any は任意の長さで指定できます。

Pattern.any エンティティをパターン テンプレートに追加するには、Pattern.any エンティティを How much does {Booktitle} cost and what format is it available in? のように中かっこで囲みます。

Pattern.any エンティティのあるパターン
How much does {Booktitle} cost and what format is it available in?
パターン内の書籍のタイトル
How much does steal this book cost and what format is it available in? (steal this book (この本を盗む) の価格はいくらで、どの形式で購入できますか。)
How much does ask cost and what format is it available in? (ask (質問) の価格はいくらで、どの形式で購入できますか。)
How much does The Curious Incident of the Dog in the Night-Time cost and what format is it available in? (The Curious Incident of the Dog in the Night-Time (夜間の犬に関する面白い事件) の価格はいくらで、どの形式で購入できますか。)

LUIS は Pattern.any エンティティに基づいて書籍のタイトルの終了を認識するので、書籍のタイトルの単語で LUIS が混乱することはありません。

明示的なリスト

オーサリング API で次のときの例外を許可することで明示的なリストを作成します。

  • パターンに Pattern.any が含まれている
  • そのパターン構文で、発話に基づいて正しくないエンティティ抽出の可能性が許可されている。

たとえば、オプションの構文 [] とエンティティ構文 {} の両方が含まれるパターンがあり、データを正しくない方法で抽出するように結合されているとします。

'[find] email about {subject} [from {person}]' というパターンを考えてみます。

次の発話では subject エンティティと person が一方では正しく抽出されており、もう一方では正しく抽出されていません。

発話 Entity 正しい抽出
email about dogs from Chris (クリスから犬に関する電子メール) subject=dogs (犬)
person=Chris (クリス)
email about the man from La Mancha (ラ・マンチャからその男に関する電子メール) subject=the man (その男)
person=La Mancha (ラ・マンチャ)
X

前の表では、subject は the man from La Mancha (書籍のタイトル) である必要がありますが、subject にオプションのワード from が含まれているため、タイトルが間違って予測されています。

このパターンの例外を修正するには、明示的なリストのオーサリング API を使用して、the man from la mancha を {subject} エンティティに対する明示的なリストの一致として追加します。

テンプレートの発話でオプションのテキストをマークする構文

正規表現の角かっこの構文 [] を使用して、発話内のオプションのテキストをマークします。 オプションのテキストは、最大で 2 つの角かっこのみを入れ子にできます。

省略可能なテキストのあるパターン 意味
[find] email about {subject} [from {person}] findfrom {person} は省略可能です
助けていただけますか[?] 句読点は省略可能です

句読点 (?!.) は無視しなければならず、パターンで角かっこ構文を使用してそれらを無視する必要があります。

次のステップ

パターンについて学習する:

.json の応答でのセンチメントの返され方について理解します。