カスタム語彙による音声認識の向上 - Amazon Lex

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタム語彙による音声認識の向上

特定の言語でカスタム語彙を作成することで、ボットとの音声会話を処理する方法についてより多くの情報を Amazon Lex V2 に提供することができます。カスタム語彙は、音声入力で Amazon Lex V2 に認識させる特定の語句のリストです。これらは通常、Amazon Lex V2 では認識されない固有名詞またはドメイン固有の単語です。

たとえば、テクニカルサポートボットがあるとします。カスタム語彙に「バックアップ」を追加すると、音声が「パックアップ」のように聞こえたとしても、ボットが音声を「バックアップ」として正しく文字起こしできるようになります。カスタム語彙は、金融サービス向けの「ソルベンシー」や「Cognito」や「Monitron」などの固有名詞など、音声に含まれるまれな単語の認識にも役立ちます。

カスタム語彙の基本

  • カスタム語彙は、ボットへの音声入力の文字起こしに役立ちます。インテントやスロット値を認識するには、サンプル発話を提供する必要があります。

  • カスタム語彙は特定の言語に固有のものです。カスタムボキャブラリーは言語ごとに個別に設定する必要があります。カスタムボキャブラリーは、英語 (UK) と英語 (US) の言語でのみサポートされています。

  • カスタムボキャブラリーは、Amazon Lex V2 がサポートするコンタクトセンターインテグレーションで利用できます。Amazon Lex V2 コンソールのテストウィンドウは、2022 年 7 月 31 日以降に構築されたすべての Amazon Lex V2 ボットのカスタムボキャブラリーをサポートしています。テストウィンドウでカスタムボキャブラリーに関する問題が発生した場合は、ボットを再構築してやり直してください。

Amazon Lex V2 はカスタムボキャブラリーを使用してインテントとスロットの両方を誘発します。インテントとスロットには同じカスタム語彙ファイルが使用されます。スロットタイプを追加するときに、スロットのカスタム語彙機能を選択的にオフにできます。

インテントの誘発 — インテントを誘発するためのカスタム語彙を作成できます。これらのフレーズは、ボットがユーザーのインテントを判断する際の書き起こしに使用されます。たとえば、カスタム語彙に「バックアップ」というフレーズを設定した場合、音声が「写真をパックアップしてくれませんか」と聞こえても。Amazon Lex V2 はユーザー入力を「写真をバックアップしてくれませんか?」と書き起こします。重みを 0、1、2、3 に設定することで、各フレーズのブーストの程度を指定できます。displayAs フィールドを追加して、最終的な音声テキスト変換出力のフレーズの代替表現を指定することもできます。

インテントを誘発する際の文字起こしを改善するために使用されるカスタム語彙フレーズは、スロットを誘発する際の文字起こしには影響しません。インテント誘発のためのカスタム語彙の作成方法については、「インテントやスロットを誘発するためのカスタム語彙の作成」を参照してください。

カスタムスロットの誘発 — カスタム語彙を使用して、音声会話のスロット認識を向上させることができます。Amazon Lex V2 ボットがスロット値を認識しやすくするには、カスタムスロットを作成し、そのカスタムスロットにスロット値を追加してから、[スロット値をカスタム語彙として使用] を選択します。スロット値の例には、製品名、カタログ、固有名詞などがあります。カスタムボキャブラリーでは、「はい」や「いいえ」などの一般的な単語やフレーズを使用しないでください。

スロット値を追加すると、ボットがカスタムスロットへの入力を予想しているとき、スロット認識を向上させるためにこれらの値を使用します。これらの値は、インテントを誘発する際の文字起こしには使用されません。詳細については、「スロットタイプの追加」を参照してください。

カスタム語彙を作成するためのベストプラクティス

インテントの誘発

  • カスタムボキャブラリーは、特定の単語や句をターゲットにしている場合に最も効果的です。Amazon Lex V2 ですぐに認識されない単語だけをカスタム語彙に追加してください。

  • 文字起こしでその単語が認識されない頻度と、入力された単語がどれだけまれであるかに基づいて、単語にどの程度の重みを与えるかを決定します。発音しにくい単語の場合は重みを高くする必要があります。

  • 代表的なテストセットを使用して、重みが適切かどうかを判断してください。会話ログのオーディオログをオンにすると、音声テストセットを収集できます。

  • カスタム語彙には、「on」、「it」、「to」、「yes」、「no」などの短い単語を使用しないでください。

カスタムスロットの誘発

  • 認識が予想されるカスタムスロットタイプに値を追加します。そのスロット値がどれほど一般的または珍しいものであっても、カスタムスロットタイプで使用できるすべてのスロット値を加算します。

  • カスタムスロットタイプにカタログ値または商品名や投資信託などのエンティティのリストが含まれている場合にのみ、このオプションを有効にします。

  • スロットタイプが「はい」、「いいえ」、「わからない」、「多分」などの一般的なフレーズや、「1」、「2」、「3」などの一般的な語句をキャプチャするために使用される場合は、このオプションを無効にしてください。

  • 最高のパフォーマンスを得るには、スロット値とシノニムの数を 500 以下に制限してください。

頭字語など、1 文字ずつ個別に発音する単語は、ピリオドとスペースで区切って 1 文字で入力します。「J. P. Morgan」や「A. W. S.」など、フレーズの一部でない限り、個々の文字は使用しないでください。 頭字語の入力には、大文字と小文字のどちらでも使用できます。

インテントやスロットを誘発するためのカスタム語彙の作成

Amazon Lex V2 コンソールを使用してカスタム語彙を作成および管理することも、Amazon Lex V2 API オペレーションを使用することもできます。コンソールを使用してカスタム語彙を作成する方法は 2 つあります。

カスタム語彙をコンソールにインポートする:
  1. https://console.aws.amazon.com/lexv2/home から Amazon Lex V2 コンソールを開きます。

  2. ボットの一覧から、カスタム語彙を追加するボットを選択します。

  3. ボットの詳細ページの [言語の追加] セクションで、[言語を表示] を選択します。

  4. 言語のリストから、カスタム語彙を入力する言語を選択します。

コンソールから直接新しいカスタム語彙を作成します。
  1. 言語詳細ページの [カスタム語彙] セクションで [作成] をクリックします。編集ウィンドウが開きますが、カスタム語彙は表示されません。

  2. 必要に応じて、フレーズ、DisplayAs、重みの入力を追加します。フィールドを更新するか、リストから削除することで、追加した項目をさらにインライン編集できます。

  3. [保存] をクリックします。注意: 新しいカスタム語彙は、[保存] をクリックした後にのみボットに保存されます。

  4. このページで引き続きインライン編集を行い、編集が完了したら [保存] をクリックします。

  5. このページでは、右上のドロップダウンメニューから、カスタム語彙ファイルのインポート、エクスポート、削除を行うこともできます。

ListCustomVocabularyItems API を使用してカスタム語彙のエントリを表示します。
  1. ListCustomVocabularyItems オペレーションを使用してカスタム語彙のエントリを表示します。リクエスト本文は以下のようになります。

    { "maxResults": number, "nextToken": "string" }
  2. maxResultsnextToken はリクエスト本文のオプションフィールドであることに注意してください。

  3. ListCustomVocabularyItems オペレーションからのレスポンスは次のようになります。

    { "botId": "string", "botVersion": "string", "localeId": "string", "customVocabularyItems": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
BatchCreateCustomVocabularyItem API を使用してカスタム語彙のエントリを作成します。
  1. ボットのロケールにまだカスタム語彙が作成されていない場合は、StartImport を使用してカスタム語彙を作成する手順に従ってください。

  2. カスタム語彙を作成したら、BatchCreateCustomVocabularyItem オペレーションを使用して新しいカスタム語彙エントリを作成します。リクエスト本文は以下のようになります。

    { "customVocabularyItemList": [ { "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. weightdisplayAs はリクエスト本文のオプションフィールドであることに注意してください。

  4. BatchCreateCustomVocabularyItem のレスポンスは次のようになります。

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. これはバッチオペレーションであるため、いずれかの項目の作成に失敗してもリクエストは失敗しません。エラーリストには、その特定のエントリでオペレーションが失敗した理由に関する情報が含まれます。リソースリストには、正常に作成されたすべてのエントリが含まれます。

  6. BatchCreateCustomVocabularyItem では、次のようなエラーが表示されることが考えられます。

    • RESOURCE_DOES_NOT_EXIST: カスタム語彙が存在しません。このオペレーションを呼び出す前に、カスタム語彙の作成手順に従ってください。

    • DUPLICATE_INPUT: 入力リストに重複するフレーズが含まれています。

    • RESOURCE_ALREADY_EXISTS: エントリに指定されたフレーズが、カスタム語彙にすでに存在します。

    • INTERNAL_SERVER_FAILURE: リクエストの処理中、バックエンドでエラーが発生しました。これはサービスの停止または別の問題を示している可能性があります。

BatchDeleteCustomVocabularyItem API を使用して既存のカスタム語彙エントリを削除します。
  1. ボットのロケールにまだカスタム語彙が作成されていない場合は、StartImport を使用してカスタム語彙を作成する手順に従ってください。

  2. カスタム語彙を作成したら、BatchDeleteCustomVocabularyItem オペレーションを使用して既存のカスタム語彙エントリを削除します。リクエスト本文は以下のようになります。

    { "customVocabularyItemList": [ { "itemId": "string" } ] }
  3. BatchDeleteCustomVocabularyItem のレスポンスは次のようになります。

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  4. これはバッチオペレーションであるため、いずれかの項目の削除に失敗してもリクエストは失敗しません。エラーリストには、その特定のエントリでオペレーションが失敗した理由に関する情報が含まれます。リソースリストには、正常に削除されたすべてのエントリが含まれます。

  5. BatchDeleteCustomVocabularyItem では、次のようなエラーが表示されることが考えられます。

    • RESOURCE_DOES_NOT_EXIST: 削除しようとしているカスタム語彙エントリは存在しません。

    • INTERNAL_SERVER_FAILURE: リクエストの処理中、バックエンドでエラーが発生しました。これはサービスの停止または別の問題を示している可能性があります。

BatchUpdateCustomVocabularyItem API を使用して既存のカスタム語彙エントリを更新します。
  1. ボットのロケールにまだカスタム語彙が作成されていない場合は、StartImport を使用してカスタム語彙を作成する手順に従ってください。

  2. カスタム語彙を作成したら、BatchUpdateCustomVocabularyItem オペレーションを使用して既存のカスタム語彙エントリを更新します。リクエスト本文は以下のようになります。

    { "customVocabularyItemList": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  3. weightdisplayAs はリクエスト本文のオプションフィールドであることに注意してください。

  4. BatchUpdateCustomVocabularyItem のレスポンスは次のようになります。

    { "botId": "string", "botVersion": "string", "localeId": "string", "errors": [ { "itemId": "string", "errorMessage": "string", "errorCode": "string" } ], "resources": [ { "itemId": "string", "phrase": "string", "weight": number, "displayAs": "string" } ] }
  5. これはバッチオペレーションであるため、いずれかの項目の削除に失敗してもリクエストは失敗しません。エラーリストには、その特定のエントリでオペレーションが失敗した理由に関する情報が含まれます。リソースリストには、正常に更新されたすべてのエントリが含まれます。

  6. BatchUpdateCustomVocabularyItem では、次のようなエラーが表示されることが考えられます。

    • RESOURCE_DOES_NOT_EXIST: 更新しようとしているカスタム語彙エントリは存在しません。

    • DUPLICATE_INPUT: 入力リストに重複する itemIds が含まれています。

    • RESOURCE_ALREADY_EXISTS: エントリに指定されたフレーズが、カスタム語彙にすでに存在します。

    • INTERNAL_SERVER_FAILURE: リクエストの処理中、バックエンドでエラーが発生しました。これはサービスの停止または別の問題を示している可能性があります。

カスタム語彙ファイルの作成

カスタム語彙ファイルは、認識するフレーズ、強調するための重み、および音声文字起こし内のフレーズを置き換える displayAs フィールドを含む値をタブで区切ったリストです。ブースト値が高いフレーズは、音声入力に表示されるときに使用される可能性が高くなります。

カスタム語彙ファイルの名前は CustomVocabulary.tsv とし、インポートする前に zip ファイルに圧縮する必要があります。zip ファイルは 300 MB 未満である必要があります。カスタム語彙の語句の最大文字数は 500 です。

  • フレーズ: 認識する必要がある 1~4 単語。フレーズ内の単語はスペースで区切ります。ファイル内のボキャブラリーが重複することは許可されません。フレーズフィールドは必須です。

  • 重み - フレーズ認識をブーストする度合いを指定します。値は整数 0、1、2、3 です。重みを指定しない場合、デフォルト値は 1 です。文字起こしでその単語が認識されない頻度と、入力された単語がどれだけまれであるかに基づいて、重みを決定します。重みが 0 の場合、ブーストは適用されず、エントリは displayAs フィールドを使った置換を行う場合にのみ使用されます。

  • displayAs – 文字起こし出力におけるフレーズの表示方法を定義します。これはカスタム語彙のオプションフィールドです。

カスタム語彙ファイルには、「phrase」、「weight」、および「displayAs」というヘッダーを含むヘッダー行が含まれている必要があります。ヘッダーはどのような順序でもかまいませんが、上記の命名法に従う必要があります。

次はカスタム語彙ファイルの例です。phrase、weight、displayAs を区切るのに必要なタブ文字は、「[TAB]」というテキストで表されます。この例を使用する場合は、テキストをタブ文字に置き換えてください。

phrase[TAB]weight[TAB]displayAs Newcastle[TAB]2 Hobart[TAB]2[TAB]Hobart, Australia U. Dub[TAB]1[TAB]University of Washington, Seattle W. S. U.[TAB]3 Issaquah Kennewick