パターンを追加して予測精度を改善する方法

重要

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

LUIS アプリでエンドポイント発話を受信したら、単語の順序と選択を示すパターンを使用して、発話の予測精度を改善します。 パターンでは、特定の構文を使用して、エンティティ、エンティティのロール、およびオプションのテキストの場所を示します。

Note

  • パターンを追加、編集、削除、または再割り当てしたら、その変更について、エンドポイントのクエリに影響を与えるようにアプリをトレーニングして公開します。
  • パターンには、機械学習エンティティの親のみが含まれ、サブエンティティは含まれません。

正しい構文を使用してテンプレート発話を追加する

  1. LUIS ポータルにサインインし、自分のサブスクリプション作成リソースを選択して、その作成リソースに割り当てられているアプリを表示します。

  2. [マイ アプリ] ページで自分のアプリの名前を選択して、そのアプリを開きます。

  3. 左側のパネルの [アプリのパフォーマンスを向上させる][パターン] を選択します。

  4. パターンの適切な意図を選択します。

  5. テンプレート テキスト ボックスに、テンプレートの発話を入力し、Enter キーを押します。 エンティティ名を入力する場合は、正しいパターン エンティティ構文を使用します。 エンティティ構文は { で開始します。 エンティティの一覧が表示されます。 正しいエンティティを選択します。

    パターンのエンティティのスクリーンショット

    ご自身のエンティティにロールが含まれる場合、エンティティ名の後ろにコロンを 1 つ付けて:ロールを指定します ({Location:Origin} など)。 エンティティのロールの一覧が表示されます。 ロールを選択し、Enter キーを押します。

    ロールを含むエンティティのスクリーンショット

    正しいエンティティを選択したら、パターンを入力して、Enter キーを押します。 パターンの入力が完了したら、ご自身のアプリをトレーニングします。

    両方の型のエンティティを含む入力済みパターンのスクリーンショット

pattern.any エンティティの作成

Pattern.any エンティティはパターンでのみ有効であり、意図のサンプル発話では無効です。 このエンティティ タイプは、可変長のエンティティの終わりや単語の選択を LUIS が見つけやすくします。 このエンティティがパターンで使用されることにより、発話テンプレート内でエンティティの終わりがどこにあるかを LUIS が認識します。

  1. LUIS ポータルにサインインし、自分のサブスクリプション作成リソースを選択して、その作成リソースに割り当てられているアプリを表示します。

  2. [マイ アプリ] ページで自分のアプリの名前を選択して、そのアプリを開きます。

  3. [ビルド] セクションの左側にあるパネルで [エンティティ] を選択し、 [+ 作成] を選択します。

  4. [Create an entity type](エンティティの種類を作成する) ダイアログ ボックスの [名前] ボックスにエンティティ名を入力し、 [種類] として [Pattern.Any] を選択し、 [作成] を選択します。

    このエンティティを使用してパターン発話を作成すると、機械学習とテキスト照合アルゴリズムの組み合わせによりエンティティが抽出されます。

発話の例をパターンとして追加する

エンティティのパターンを追加する場合、[Intent details] (意図の詳細) ページからパターンを作成するのが 最も簡単な 方法です。 これにより、構文が発話の例と一致することが保証されます。

  1. LUIS ポータルにサインインし、自分のサブスクリプション作成リソースを選択して、その作成リソースに割り当てられているアプリを表示します。

  2. [マイ アプリ] ページで自分のアプリの名前を選択して、そのアプリを開きます。

  3. [Intents](意図) 一覧ページで、テンプレート発話の作成元となる発話の例の意図名を選択します。

  4. [Intent details] (意図の詳細) ページで、テンプレート発話として使用する発話の例の行を選択し、コンテキスト ツール バーから [+ Add as pattern](+ パターンとして追加) を選択します。

    意図の詳細ページで発話の例をテンプレート パターンとして選択するスクリーンショット。

    発話からパターンを作成するには、発話にエンティティが含まれている必要があります。

  5. ポップアップ ボックスで、 [Confirm patterns](パターンの確認) ページの [完了] を選択します。 エンティティのサブエンティティや特徴を定義する必要はありません。 機械学習エンティティのみを一覧にする必要があります。

    意図の詳細ページで発話の例をテンプレート パターンとして確認するスクリーンショット。

  6. テキストを省略可能として選択するなど、[] (角かっこ) を使用してテンプレートを編集する必要がある場合、この編集は [パターン] ページから行う必要があります。

  7. ナビゲーション バーで [トレーニング] を選択して、新しいパターンを使用してアプリをトレーニングします。

OR 演算子とグループを使用する

次の 2 つのパターンは、グループ "( )" と OR "|" の構文を使用して 1 つのパターンに結合できます。

Intent 省略可能なテキストと事前構築済みエンティティを含む発話の例
OrgChart-Manager "who will be {EmployeeListEntity}['s] manager [[in]{datetimeV2}?]"
OrgChart-Manager "who will be {EmployeeListEntity}['s] manager [[on]{datetimeV2}?]"

新しいテンプレート発話は次のようになります。

"who ( was | is | will be ) {EmployeeListEntity}['s] manager [([in]|[on]){datetimeV2}?]" .

ここでは、必須の動詞の時制を囲むグループと、or パイプでつなげた省略可能な 'in' および 'on' を使用しています。

テンプレート発話

サブジェクト ドメインである人事の性質上、組織内の従業員の関係について一般的なたずね方がいくつかあります。 発話の例を次に示します。

  • "Who does Jill Jones report to?"
  • "Who reports to Jill Jones?"

発話の多数の例を提供せずに、それぞれの文脈の一意性を判断するには、これらの発話は類似しすぎています。 意図のパターンを追加することにより、いくつもの発話の例をさらに提供しなくても、LUIS は意図の一般的な発話パターンを学習します。

ヒント

各発話は、レビュー リストから削除できます。 一度削除すると、リストに再び表示されることはなくなります。 ユーザーがエンドポイントから同じ発話を入力したとしても同様です。

この意図のテンプレート発話例には、次のものが含まれます:

テンプレート発話例 構文の意味
Who does {EmployeeListEntity} report to[?] 交換可能: {EmployeeListEntity}
無視: [?]
Who reports to {EmployeeListEntity}[?] 交換可能: {EmployeeListEntity}
無視: [?]

"{EmployeeListEntity}" 構文では、テンプレート発話内でのエンティティの位置とそれがどのエンティティであるかがマークされます。 オプションの構文 "[?]" は、オプションである単語または句読点をマークします。 LUIS は、かっこ内のオプションのテキストを無視し、発話を照合します。

重要

構文は正規表現のように見えますが、正規表現ではありません。 中かっこ "{ }" と角かっこ "[ ]" の構文のみがサポートされています。 これらは 2 階層まで入れ子にすることができます。

パターンが発話に一致するには、"まず"、発話内のエンティティがテンプレート発話内のエンティティに一致している必要があります。 つまり、エンティティを含んだパターンがうまく機能するためには、発話の例に、予測精度の高いエンティティの例が十分に存在していなければなりません。 ただし、テンプレートはエンティティの予測には役立ちません。 テンプレートが予測するのは意図だけです。

Note

パターンを使用すると提供される発話の例を少なくすることができますが、エンティティが検出されない場合、パターンは一致しません。

フレーズ リストを特徴として追加する

特徴は、特定の単語やフレーズがアプリ領域のボキャブラリの一部であるというヒントを提供することで、LUIS を助けます。

  1. LUIS ポータルにサインインし、自分のサブスクリプション作成リソースを選択して、その作成リソースに割り当てられているアプリを表示します。
  2. [マイ アプリ] ページで自分のアプリの名前を選択して、そのアプリを開きます。
  3. [ビルド] を選択し、アプリの左側のパネルで [特徴] を選択します。
  4. [特徴] ページで [+ 作成] を選択します。
  5. [Create new phrase list feature] (新しいフレーズ リストの特徴の作成) ダイアログ ボックスで、Pizza Toppings などの名前を入力します。 [値] ボックスに、Ham などのトッピングの例を入力します。 値は一度に 1 つずつ入力することも、コンマで区切った値のセットを入力することもできます。入力したら Enter キーを押します。

機能 (フレーズ リスト) の都市を追加する方法を示すスクリーンショット

  1. フレーズを交換して使用できる場合は、[これらの値はどれを使っても問題ありません] セレクターを有効のままにします。 交換可能なフレーズ リストの特徴は、トレーニング用の同意語リストとして機能します。 交換不可能なフレーズ リストは、トレーニング用の別個の特徴として機能します。つまり、特徴は似ていますが、フレーズを入れ替えると意図が変わります。
  2. 語句リストは グローバル設定を使用してアプリ全体に適用したり、特定のモデル (意図またはエンティティ) に適用したりできます。 フレーズ リストを作成する場合、意図またはエンティティの "特徴" として、トグルはグローバルに設定されません。 この場合、トグルが示すのは、特徴がそのモデルに対してのみローカルであり、そのため、アプリケーションに対しては "グローバルではない" ということです。
  3. [Done] を選択します。 新しい特徴は [ML の特徴] ページに追加されます。

Note

  • 語句一覧の削除や非アクティブ化は、 [ML の特徴] ページのコンテキスト ツールバーから行うことができます。
  • フレーズ リストは、目的の意図またはエンティティに適用する必要があります。ただし、フレーズ リストをグローバルな特徴としてアプリ全体に適用することが必要になる場合もあります。 機械学習の特徴ページでフレーズ リストを選択し、上部のコンテキスト ツール バーの [Make global] (グローバル化する) を選択します。

エンティティを特徴として意図に追加する

エンティティを特徴として意図に追加するには、[意図] ページから意図を選択し、コンテキスト ツール バーの上にある [+ 特徴の追加] を選択します。 一覧には、特徴として適用できるすべてのフレーズ リストとエンティティが含まれます。

エンティティを特徴として別のエンティティに追加するには、エンティティ パレットを使用して、意図の詳細ページで特徴を追加するか、エンティティの詳細ページで特徴を追加することができます。

次のステップ