Amazon Lexは、カスタム語彙機能の日本語をサポートしました
はじめに
Amazon Lexのカスタム語彙機能が日本語をサポートしました。
従来は、日本語はサポートされていませんでしたが、日本語を含め、韓国語、ポルトガル語、カタロニア語、フランス語、ドイツ語、スペイン語などの複数の言語が今回サポートされました。
カスタム語彙機能では、ドメイン固有の用語、固有名詞、希少語の音声認識精度を向上させることができます。
いくつか注意点がありますので、その点を踏まえて実際に試してみます。
注意点
-
カスタム語彙は、Amazon Connectから呼び出すなどLexボットへの音声入力の書き起こしに使用されます。テキストベースでは利用できません。
-
カスタム語彙は、インテントとカスタムスロットの認識時に利用されます。AWSから用意されている組み込みスロットタイプではカスタム語彙機能は利用できません。
-
カスタム語彙の設定方法は以下の2つがあります。
- カスタム語彙ファイルを作成し、コンソール上でインポートする方法
- コンソール上で直接カスタム語彙の単語を入力して作成する方法
-
日本語のLexボットの場合、カスタム語彙として設定できるのは日本語のみです。英語などは設定できません。
-
重みは0、1、2、または3に設定できます。書き起こしで認識されなかった単語の頻度と、入力データでその単語がどの程度稀に出現するかに基づいて、単語に与える重みを決定します。発音が難しい単語には、より高い重みが必要です。
その他、カスタム語彙を作成するためのベストプラクティスなどもありますので、詳細はAWSドキュメントをご参照ください。
試してみる
今回はカスタムスロットタイプを利用して、カスタム語彙の設定を試してみます。
カスタム語彙なし
まず、カスタムスロットタイプに「クラメソ」というワードを設定します。
インテントのスロットには、作成したカスタムスロットを設定します。
この状態で、Amazon ConnectからAmazon Lexを呼び出し、「クラメソ」と発話してみると、聞き取れませんでした。
ログを確認すると、「暗めそう」と認識されていました。「クラメソ」しかスロットに入らないため、エラーになってしまいます。
"interpretations": [
{
"intent": {
"name": "NewIntent",
"state": "InProgress",
"slots": {
"test": null
},
"confirmationState": "None"
},
"interpretationSource": "Lex",
"nluConfidence": "0.95"
},
{
"intent": {
"name": "FallbackIntent",
"slots": {}
},
"interpretationSource": "Lex"
}
],
"developerOverride": false,
"bot": {
"name": "cm-hirai-CustomVocabulary",
"version": "DRAFT",
"id": "OWOCFDLF18",
"aliasName": "TestBotAlias",
"aliasId": "TSTALIASID",
"localeId": "ja_JP"
},
"inputTranscript": "暗めそう",
"missedUtterance": true,
"utteranceContext": {}
}
カスタム語彙あり
次に、カスタム語彙を設定します。
フレーズに暗めそう
や暗めそ
、表示形式にクラメソ
と入力して保存します。
カスタムスロットタイプの「スロット値をカスタムボキャブラリとして使用」にチェックを入れて保存後、ビルドします。
再度、Amazon ConnectからAmazon Lexを呼び出し、「クラメソ」と発話してみると、今度は正しく聞き取ることができました。
なお、カスタムスロットではなく、インテントの場合は、サンプル発話に「クラメソ」を記載するだけです。
日本語以外の言語について
なお、日本語でボットを設定している場合、フレーズや表示形式に英語は設定できません。
例えば、電話で「Cognito」と発話すると、「国ニート」と文字起こしされました。カスタム語彙設定で対応しようと考えましたが、日本語ボットでは英語の設定ができないため対応できませんでした。
まとめ
Amazon Lexのカスタム語彙機能が日本語をサポートしました。
これにより、日本語の固有名詞やドメイン固有の用語の音声認識精度を向上させることが可能になりました。
カスタム語彙は、カスタムスロットタイプとインテントでのみサポートされています。
個人的には、組み込みスロットタイプの以下の3つを使用する場面が多く、カスタムスロットタイプを使用する場面はあまりありません。
- AMAZON.QnAIntent
- AMAZON.FallbackIntent
- AMAZON.FreeFormInput
また、AMAZON.QnAIntent
やAMAZON.FallbackIntent
は、どのような発話でもインテントとしてトリガーできるため、今回のカスタム語彙の恩恵は限定的です。
ただし、他のスロットタイプを利用する際、インテントをトリガーするワードが誤認識される場合には、十分活用できる機能です。
カスタム語彙機能が単純な文字起こし精度の向上として、上記の組み込みスロットタイプにも対応されれば、より積極的に活用したい機能です。
そのような機能をご希望の場合は、AWSにフィードバックしてみてください。