アプリのデータ収集

重要

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

Language Understanding (LUIS) アプリには、アプリ開発の一環としてデータが必要です。

LUIS で使用されるデータ

LUIS では、テキストをデータとして使って LUIS アプリをトレーニングして、意図の分類やエンティティの抽出を行います。 トレーニング用とテスト用の別々のデータ セット (以下で具体的に説明している多様性と分散を備えたもの) を作成するのに十分な量のデータを含む、十分な大きさのデータ セットが必要です。 これらの各セット内のデータは重複してはなりません。

発話の例でのトレーニング データの選択

次の基準に基づいてトレーニング セット用の発話を選択します。

  • 実際のデータが最適:

    • クライアント アプリケーションからの実際のデータ: クライアント アプリケーションからの実際のデータである発話を選択します。 顧客が今日、問い合わせを含む Web フォームを送信してきて、あなたがボットを構築中である場合は、その Web フォームのデータを使って作業を開始できます。
    • クラウドソーシングされたデータ: 既存のデータがない場合は、発話をクラウドソーシングすることを検討してください。 現在のシナリオの実際のユーザー集団からの発話をクラウドソーシングして、アプリケーションで使用される実際のデータに最も近似するものを取得します。 クラウドソーシングされた人間の発話の方が、コンピューターで生成された発話よりも適しています。 特定のパターンで生成された合成発話のデータ セットを作成すると、発話をしている人々に見られる自然なバリエーションの多くが失われ、運用環境でうまく一般化できません。
  • データの多様性:

    • 地域の多様性: 各意図のデータには、"言い回し" (単語の選択) や "文法" を含め、可能な限り多様性を持たせるようにします。 休暇の日数についての HR ポリシーに関する意図を教える場合は、サービス提供するすべての地域で使用されているすべての用語を表す発話を用意するようにしてください。 たとえば、ヨーロッパの人々は taking a holiday について尋ね、米国の人々は taking vacation days について尋ねる可能性があります。
    • 言語の多様性: 母語の異なるさまざまなユーザーが第二言語でコミュニケーションを行っている場合は、ネイティブでない話者を表す発話が含まれるようにしてください。
    • 入力の多様化: データの入力パスを検討してください。 1 人の人物や 1 つの部門または入力装置 (マイク) からデータを収集している場合は、あらゆる入力パスについてアプリが学習するうえで重要となる多様性が欠如する可能性が高くなります。
    • 句読点の多様性: テキスト アプリケーションでさまざまなレベルの句読点が使用されていることを考慮し、句読点の使用方法に関して多様性を持たせるようにしてください。 音声から得たデータを使用している場合には句読点はないため、ユーザーのデータにも含めるべきではありません。
  • データ分散: 複数の意図に分散されたデータが、クライアント アプリケーションが受け取るのと同じデータ分散を表すようにします。 LUIS アプリが発話を分類するときに、休暇申請 (50%)、残りの休暇日数に関する質問 (20%)、休暇の承認 (20%)、その他の雑談 (10%) がある場合は、それぞれの発話の種類のサンプルのパーセンテージがデータ セットに含まれている必要があります。

  • すべてのデータ形式を使用: LUIS アプリが複数の形式でデータを取得する場合は、それらの形式を必ずトレーニングの発話に含めるようにしてください。 たとえば、クライアント アプリケーションが、テキストの音声入力とタイプ入力の両方を受け入れる場合は、音声テキスト変換で生成された発話と、タイプ入力された発話を含める必要があります。 話し方やタイプ入力の方法、音声認識でのさまざまなエラーやタイポまで、さまざまなバリエーションがあります。 トレーニング データは、このすべてのバリエーションを表わしている必要があります。

  • 正の例と負の例: LUIS アプリを教育するには、意図していること (正) と意図していないこと (負) について教える必要があります。 LUIS では、発話が正になるのは、1 つの意図に対してのみです。 発話が意図に追加されると、LUIS は自動的に、その同じ発話の例を、他のすべての意図で負の例にします。

  • アプリケーションの範囲外のデータ: 定義されている意図の範囲外の発話にアプリケーションが遭遇することになる場合は、それらを必ず提供するようにしてください。 定義されている特定の意図に割り当てられていない例には、None 意図のラベルが付けられます。 定義されている意図の範囲外の発話を適切に予測するには、None 意図の現実的な例を用意することが重要です。

    たとえば、休暇期間に焦点を絞った HR ボットを作成する場合で、次の 3 つの意図があるとします。

    • 休暇をスケジュールまたは編集する
    • 利用可能な休暇日数について問い合わせる
    • 休暇を承認する/承認しない

    これらの意図をカバーしつつ、アプリケーションの目的の範囲外の、次のような潜在的な発話もカバーする発話を用意したいと考えています。

    • What are my medical benefits?
    • Who is my HR rep?
    • tell me a joke
  • まれな例: アプリには、一般的な例に加えて、まれな例も含める必要があります。 アプリがまれな例に遭遇したことがなければ、運用環境でそれらを特定できません。 実際のデータを使用していれば、運用環境での LUIS アプリの動作をより正確に予測できます。

量より質

データを追加する前に、既存のデータの質を検討してください。 LUIS では、機械教示を使用しています。 LUIS アプリは、定義されているラベルと機械学習機能を組み合わせて使用します。 単にラベルの数量に基づいて最良の予測を行うわけではありません。 例の多様性と、それらが LUIS アプリの運用環境でどのような表現で現れるかが最も重要な部分になります。

データの前処理

次の前処理手順は、より良い LUIS アプリを構築するのに役立ちます。

  • 重複の削除: 発話が重複していても害はありませんが、役に立つわけでもないため、それらを削除するとラベル付けの時間が節約されます。
  • 同じクライアント アプリの前処理を適用する: LUIS 予測エンドポイントを呼び出すクライアント アプリケーションが実行時にデータ処理を適用してから LUIS にテキストを送信する場合は、LUIS アプリをトレーニングする際にデータを同じ方法で処理してください。
  • クライアント アプリで使用されない新しいクリーンアップ プロセスを適用しない: クライアント アプリが、音声で生成されたテキストを、文法や句読点などのクリーンアップなしに直接受け入れる場合は、欠落している句読点や、考慮する必要があるその他の誤認識を含めて、発話では同じ内容を反映する必要があります。
  • データをクリーンアップしない: 不明瞭な音声認識、キーの押し間違い、または入力ミスやスペル ミスから起こる可能性がある誤入力を取り除かないでください。 このような入力が予想される場合は、それについてアプリをトレーニングおよびテストすることが重要です。 アプリで理解されないと予想される場合は、"誤入力" の意図を追加します。 LUIS アプリが実行時に正しい応答を予測できるように、このデータにラベルを付けます。 クライアント アプリケーションは、理解できない発話には適切な応答 (Please try again など) を選択できます。

データのラベル付け

  • 正しいものとしてテキストにラベルを付ける: 発話の例には、ラベルの付いたエンティティのすべての形式が含まれている必要があります。 これには、スペルミス、タイプミス、変換ミスなどのテキストが含まれます。

LUIS アプリの運用開始後のデータ レビュー

エンドポイント発話をレビューして、アプリを運用環境にデプロイした後で実際の発話のトラフィックを監視します。 これにより、実際のデータを使ってトレーニング発話を更新でき、アプリが改善されます。 クラウドソーシングや現実ではないシナリオを使って構築されたアプリは、実際の使用に基づいて改善する必要があります。

バッチ テスト用のテスト データの選択

発話をトレーニングするための上記の原則はすべて、テスト セットに使用する発話に適用されます。 意図とエンティティの分散は、できる限り、実際の分散を反映するようにしてください。

トレーニング セットの発話をテスト セットで再利用しないでください。 結果が不適切に偏って、運用環境での LUIS アプリの実際の動作が正しく示されなくなります。

アプリの最初のバージョンを公開後、実際のトラフィックの発話でテスト セットを更新して、テスト セットが運用ディストリビューションに反映されるようにしてください。それにより、長期にわたって実際的なパフォーマンスを観察できます。

次のステップ

LUIS が予測の前にデータを変更する方法について学習する