Amazon Lexの組み込みインテントのAMAZON.CancelIntentが日本語でどこまで認識するか試してみた
はじめに
Amazon Lexでチャットボットを実装する場合、ユーザーから以下のようにキャンセルや終了などを聞き取る機会があります。
- 注文の取り消し
- チャットボットとの会話の中断
- 進行中の操作の中止
Lexでは、組み込みインテントという、一般的なアクションに対して、AWS側で用意されている組み込みインテントライブラリが利用できます。
組み込みインテントの場合、インテントのトリガーとなるサンプル発話やスロットは、AWS側で設定されており、開発者側で追加や変更はできません。
組み込みインテントのうちAMAZON.CancelIntent
は、ユーザーが現在の対話をキャンセルしたいことを示す以下のような単語やフレーズに応答します。
- キャンセル
- 取り消し
- やめて
- 忘れて
今回は、AMAZON.CancelIntent
が日本語でどこまで認識するか試してみました。
https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/built-in-intent-cancel.html
前提
- 2024年6月18日時点での検証内容です。
- 今後のバージョンアップによって、改善される可能性があり、恒久的な結果ではありません。
Lexボット構築
Amazon Lex のコンソールから「ボットの作成」をクリック後、ボット名を入力し、以下の設定通り次へ進みます。
日本語を選択し、[完了]をクリックします。これでボットは完成です。
インテント
AMAZON.CancelIntent用のインテントを作成します。
[インテントを追加]から[組み込みインテントを使用]をクリックします
組み込みインテントは、AMAZON.CancelIntent
を指定します。インテント名は、cancel_intent
とします。
そのままインテントを保存し、ビルドします。
検証
以下の2つのインテントのうち、どちらのインテントがトリガーされるか検証しました。
- cancel_intent
- FallbackIntent
FallbackIntentは、組み込みインテントの一種であり、ユーザーの発話がボットの想定するインテントと一致しない場合に誘発される組み込みインテントです。詳細は以下の記事をご参考下さい。
テスト方法は、以下のように言葉を入れて、どちらインテントがトリガーされたかで判定します。
言葉としては、キャンセルなど「否定に関する言葉」と、同意など「肯定に関する言葉」の2つで試してみます。
検証結果
否定に関する言葉
以下の言葉は、cancel_intentがトリガーされました。
入力内容 | Lexの認識 |
---|---|
いいえ | cancel_intent |
違います | cancel_intent |
取り消す | cancel_intent |
撤回します | cancel_intent |
中止する | cancel_intent |
差し戻す | cancel_intent |
無視します | cancel_intent |
拒否します | cancel_intent |
断る | cancel_intent |
却下する | cancel_intent |
否定する | cancel_intent |
結構です | cancel_intent |
要りません | cancel_intent |
必要ありません | cancel_intent |
遠慮します | cancel_intent |
遠慮いたします | cancel_intent |
控えさせていただきます | cancel_intent |
辞退する | cancel_intent |
お断りします | cancel_intent |
受け入れられません | cancel_intent |
同意できません | cancel_intent |
賛成できません | cancel_intent |
反対する | cancel_intent |
無理です | cancel_intent |
嫌です | cancel_intent |
問題になります | cancel_intent |
以下の言葉は、FallbackIntentがトリガーされました。
入力内容 | Lexの認識 |
---|---|
ノー | FallbackIntent |
嫌だ | FallbackIntent |
ほげ | FallbackIntent |
「いいえ」、「違います」、「取り消す」など、多くの否定的な言葉が適切にcancel_intentとしてトリガーされています。これは期待通りの動作といえます。
肯定に関する言葉
肯定は、FallbackIntentがトリガーすべきですが、cancel_intent
がトリガーされました。
入力内容 | Lexの認識 |
---|---|
同意します | cancel_intent |
イエース | cancel_intent |
続けて下さい | cancel_intent |
問題ない | cancel_intent |
それでお願いいたします | cancel_intent |
構わない | cancel_intent |
気にしない | cancel_intent |
賛成です | cancel_intent |
okです | cancel_intent |
オーケーです | cancel_intent |
その通りですう | cancel_intent |
キャンセルや否定に関する言葉を認識した一方で、肯定に関する言葉も多くトリガーされる結果となりました。
ちなみに、cancel_intentがトリガーとなる場合、信頼度スコアはおおよそ80~95%を推移しました。
「キャンセル」など事前にトリガーさせたい言葉が決まっている場合は、組み込みインテントではなく、トリガーとなるサンプル発話がカスタムできるカスタムインテントを利用する方がよいと考えます。
最後に
今回は、Amazon Lexの組み込みインテントのAMAZON.CancelIntentが日本語でどこまで認識するか試してみました。
検証の結果、キャンセルなどの多くの否定的な言葉を適切に認識できることが確認できました。一方で、肯定的な言葉については、期待通りの動作とはならず、個人的には日本語で利用するのは限定的であると感じました。