発話の例のセットを使用したバッチ テスト

重要

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

バッチ テストでは、アクティブなトレーニング済みバージョンを検証して、その予測精度を測定します。 バッチ テストは、アクティブなバージョンに含まれる各意図やエンティティの精度を確認するのに役立ちます。 バッチ テストの結果を確認して、アプリが正しい意図の識別に頻繁に失敗する場合は意図により多くの発話の例を追加したり、発話内のエンティティをラベル付けしたりするなど、精度を向上させるための適切なアクションを実行します。

バッチ テスト用のグループ データ

バッチ テストに使用される発話が、LUIS にとって初めてであることが重要です。 発話のデータ セットがある場合は、発話を 3 つのセットに分割します。意図に追加されるサンプルの発話、公開されているエンドポイントから受信した発話、およびトレーニング後に LUIS をバッチ テストするために使用される発話です。

使用するバッチ JSON ファイルには、発話と共に、開始位置と終了位置を含むラベル付けされた機械学習エンティティが最上位に存在する必要があります。 既にアプリに存在する例の一部を発話に使用することは避けてください。 意図やエンティティを肯定的に予測したいと考える発話を使用する必要があります。

テストは意図やエンティティごとに分けてもかまいませんし、すべてのテスト (発話の数は 1,000 個まで) を同じファイルに含めてもかまいません。

バッチ インポートでの一般的なエラー

バッチ ファイルを LUIS にアップロードするときにエラーが発生した場合は、次の一般的な問題について確認してください。

  • 1 つのバッチ ファイルに 1,000 を超える発話がある。
  • エンティティ プロパティがない発話 JSON オブジェクト。 プロパティは空の配列でもかまいません。
  • 複数のエンティティにラベルが付いている単語
  • 先頭または末尾がスペースであるエンティティ ラベル。

バッチのエラーの修正

バッチ テストでエラーがある場合は、より多くの発話を意図に追加したり、LUIS が意図を区別する助けとなるエンティティを使用して、より多くの発話にラベル付けしたりできます。 発話を追加し、それらにラベル付けしてもバッチ テストで予測エラーが発生する場合は、LUIS がより迅速に学習する助けになるように、ドメイン固有のボキャブラリを含む語句一覧機能を追加することを検討してください。

LUIS ポータルを使用したバッチ テスト

サンプル アプリをインポートしてトレーニングする

ピザの注文 (例: 1 pepperoni pizza on thin crust) を受け付けるアプリをインポートします。

  1. アプリの JSON ファイルをダウンロードして保存します。

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

  3. [新しいアプリ] の横にある矢印を選択し、 [JSON としてインポート] をクリックして新しいアプリに JSON をインポートします。 アプリに Pizza app という名前を付けます。

  4. ナビゲーションの右上隅にある [Train](トレーニング) を選択して、アプリのトレーニングを行います。

バッチ テストでのロール

注意事項

エンティティ ロールは、バッチ テストではサポートされていません。

バッチ テスト ファイル

サンプル JSON には、テスト ファイルの体裁を示すために、ラベル付けされたエンティティを含む発話が 1 つ含まれています。 実際のテストでは、適切な意図と機械学習エンティティがラベル付けされた発話を多数含める必要があります。

  1. テキスト エディターで pizza-with-machine-learned-entity-test.json を作成するか、またはダウンロードします。

  2. JSON 形式のバッチ ファイルで、テストで予測されるようにしたい意図を持つ発話を追加します。

    [
        {
            "text": "I want to pick up 1 cheese pizza",
            "intent": "ModifyOrder",
            "entities": [
                {
                    "entity": "Order",
                    "startPos": 18,
                    "endPos": 31
                },
                {
                    "entity": "ToppingList",
                    "startPos": 20,
                    "endPos": 25
                }
            ]
        }
    ]
    

バッチを実行する

  1. 上部のナビゲーション バーの [Test](テスト) を選択します。

  2. 右側のパネルで、 [Batch testing panel](バッチ テスト パネル) を選択します。

    バッチ テストのリンク

  3. [インポート] を選択します。 表示されるダイアログ ボックスで、 [ファイルの選択] を選択し、テスト対象の "1,000 個以下" の発話を含む、正しい JSON 形式の JSON ファイルを見つけます。

    インポート エラーは、ブラウザーの上部にある赤い通知バーで報告されます。 インポートでエラーが発生した場合、データセットは作成されません。 詳細については、一般的なエラーに関するトピックをご覧ください。

  4. pizza-with-machine-learned-entity-test.json ファイルのファイルの場所を選択します。

  5. データセットに pizza test という名前を付け、 [完了] を選択します。

  6. [実行] ボタンを選択します。

  7. バッチテストが完了すると、次の列が表示されます。

    説明
    State テストの状態。 [結果の表示] はテストが完了した後にのみ表示されます。
    名前 テストに指定した名前。
    サイズ このバッチ テスト ファイル内のテスト数。
    [最終実行] このバッチ テスト ファイルを最後に実行した日付。
    最終結果 テスト内の成功した予測数。
  8. テストの詳細な結果を表示するには、 [結果の表示] を選択します。

    ヒント

    • [ダウンロード] を選択すると、アップロードしたものと同じファイルがダウンロードされます。
    • バッチ テストが失敗したと表示された場合は、少なくとも 1 つの発話の意図が予測と一致していません。

意図のバッチ結果を確認する

バッチ テストの結果を確認するには、 [See results](結果の表示) を選択します。 このテスト結果は、アクティブなバージョンで、テストの発話がどのように予測されるかをグラフィカルに示しています。

バッチのグラフには、結果の 4 つのセクションが表示されます。 グラフの右側にはフィルターがあります。 このフィルターには意図とエンティティが含まれています。 グラフのセクションまたはグラフ内の点を選択すると、関連付けられた発話がグラフの下に表示されます。

グラフの上にカーソルを置いている間は、マウス ホイールでグラフ内の表示を拡大または縮小できます。 これは、まとめて緊密にクラスタ化されたグラフ上に多数の点が存在する場合に役立ちます。

このグラフには 4 つのセクションがあり、そのうちの 2 つのセクションは赤色で表示されます。

  1. フィルター一覧の ModifyOrder 意図を選択します。 発話は真陽性として予測されます。つまり発話が、バッチ ファイルにリストされたその陽性の予測と適切に一致したことを意味します。

    発話がその陽性の予測と適切に一致

    フィルター一覧内の緑色のチェックマークでも、それぞれの意図のテストの成功が示されます。 その他の意図はすべて 1/1 の正のスコアで表示されています。これは、それぞれの意図に対する発話のテストが、バッチ テストにリストされていない意図に対する陰性テストとして実行されたためです。

  2. Confirmation 意図を選択します。 この意図はバッチ テストにはリストされていません。つまりこれは、バッチ テストにリストされた発話の陰性テストとなります。

    バッチ ファイルにリストされていない意図について、発話が正常に陰性と予測された

    グリッドとフィルター内の緑色のテキストが示すように、陰性テストは成功しています。

エンティティのバッチ テスト結果を確認する

ModifyOrder エンティティは、サブエンティティを伴ったマシン エンティティとして、最上位のエンティティが一致したかどうかを表示すると共に、サブエンティティがどのように予測されたかを表示します。

  1. フィルター一覧の ModifyOrder エンティティを選択し、グリッド内の円を選択します。

  2. エンティティの予測がグラフの下に表示されます。 期待と一致する予測は実線で、期待と一致しない予測は点線で表示されます。

    バッチ ファイルでエンティティの親が正常に予測された

グラフの結果のフィルター処理

特定の意図またはエンティティでグラフをフィルター処理するには、右側のフィルター処理パネルで意図またはエンティティを選択します。 グラフのデータ ポイントとその分布が、選択した内容に応じて更新されます。

視覚化されたバッチ テストの結果

グラフ結果の例

LUIS ポータルのグラフでは、次の操作を実行できます。

単一ポイントの発話データの表示

グラフで、データ ポイントの上にポインターを置くと、その予測の確実性を示すスコアが表示されます。 データ ポイントを選択すると、ページ下部にある発話一覧で、そのデータ ポイントに対応する発話を確認できます。

選択した発話

セクション データの表示

4 つのセクションで構成されるグラフで、セクション名を選択します。たとえば、グラフの右上のセクションの [False Positive](誤検知) を選択します。 そのセクションのすべての発話が、グラフの下に一覧表示されます。

セクションで選択した発話

前の画像では、発話 switch on に TurnAllOn 意図のラベルが付いていますが、None 意図の予測を受け取りました。 つまり、想定される予測を得るには、TurnAllOn 意図に発話の例がさらに必要であるということです。

グラフ上で赤で示されている 2 つのセクションは、想定される予測と一致しなかった発話を示します。 これらのセクションが示す発話については、LUIS でのトレーニングがさらに必要であることを示します。

グラフ上で緑色で示されている 2 つのセクションは、想定される予測と一致しました。

次のステップ

ご自身の LUIS アプリで正しい意図とエンティティが認識されないことがテストによって示されている場合、LUIS アプリのパフォーマンスを向上させるには、発話にさらに多くのラベルを付けるか、機能を追加します。