Amazon Lexで組み込みスロットタイプAMAZON.Currencyが日本語をサポートするようになったので試してみた
はじめに
Amazon LexのAWSドキュメントのDocument historyでは、8月に組み込みスロットタイプAMAZON.Currency
がすべてのロケールでサポートされるようになったと記載されていました。
AMAZON.Currency and AMAZON.Confirmation built-in slot types now support all locales. For more information, see Built-in slot types.
AMAZON.Currency
は、通貨を表す単語を通貨コードおよび数値に変換します。
通貨を認識しますが、ある通貨から別の通貨に変換はしません。
表される通貨は、次のように構造化されます。
{Unit} {Amount}
- {Unit} は、特定の通貨単位 (USD など) を指します。
- {Amount} は、小数点以下 2 桁 (300.00 など) の形式の金額を示します。
今回は、日本語で試してみます。
インテントの追加
Currencyというインテントを以下の通り追加しました。
Assisted NLU機能の有効化
大規模言語モデル(LLM)を用いてインテント分類とスロット解決の精度を向上させるAssisted NLU機能を有効化しています。
Assisted NLU機能についての詳細は、以下の記事をご参照ください。
動作検証
前提条件
入力内容 | スロット値 | 判定 |
---|---|---|
500 | 500.00 | ◯ |
100円 | JPY 100.00 | ◯ |
120万円 | JPY 1200000.00 | ◯ |
三千円 | JPY 3000.00 | ◯ |
0円 | JPY 0.00 | ◯ |
100 yen | 100.00 | ✗(JPY 100.00が正) |
100 JPY | JPY 100.00 | ◯ |
¥500 | JPY 500.00 | ◯ |
10USD | USD 10.00 | ◯ |
$100 | USD 100.00 | ◯ |
500円の半額 | JPY 500.00 | ✗ |
-500円 | JPY 500.00 | ✗ |
無料 | インテントがトリガーされず | ✗ |
5千円から1万円 | JPY 5000.00 | ✗ |
アメリカに300ドル送金したい | USD 300.00 | ◯ |
昼食代800円を登録して | JPY 800.00 | ◯ |
家賃8万円くらいの物件を探して | JPY 80000.00 | ◯ |
検証結果の分析
検証の結果、以下のような特徴が見られました。
正常に認識されるケース
- 基本的な数値表記(「100円」「¥500」など)
- 漢数字表記(「三千円」「120万円」など)
- 英語での通貨表記(「$100」「10USD」など)
- 自然な文章に含まれる通貨表現(「昼食代800円を登録して」など)
認識されない・期待と異なる表現
- 計算が必要な表現(「500円の半額」)は元の数値のみが抽出される
- 負の値(「-500円」)は正の値として認識される
- 範囲指定(「5千円から1万円」)は最初の値のみが抽出される
- 「無料」などの概念的な表現はインテント自体がトリガーされない
- 「yen」の表記では通貨コードが抽出されない
最後に
Amazon Lexの組み込みスロットタイプAMAZON.Currency
の日本語サポートにより、通貨に関する情報を効率的に抽出できることが確認できました。
基本的な通貨表現や自然な文章中の金額については高い精度で認識されるため、料金ヒアリングや支払い関連のチャットボットなどで活用できそうです。
ただし、計算を伴う表現や概念的な表現には対応していないため、より柔軟な通貨処理が必要な場合は、Amazon Q in Connectセルフサービス(AMAZON.QinConnectIntent)など、高度な自然言語理解機能を持つ他のインテントタイプの利用を検討する必要があります。