ちょっと話題の記事

[日本語Alexa] 新登場スロット(フレーズ/Phrase)で自由な検索ワードを受け取る

2018.02.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

Alexaスキルキットにフレーズ(Phrase)と呼ばれる新しいカテゴリのスロットタイプが発表されました。
Enhance Speech Recognition of Your Alexa Skills with Phrase Slots and AMAZON.SearchQuery

フレーズスロットを使用すると、スキルの音声認識精度を向上させ、より自然なユーザーエクスペリエンスを提供できます。

現在のこのカテゴリで使用できるスロットはAMAZON.SearchQueryだけです。まだ、日本語のドキュメントには記載がありませんが、日本語スキルで使用するスキルビルダーでも選択可能になっていました。

2 フレーズスロット

フレーズスロットを使用すると、カスタムリストのように値を網羅したリストを作成する必要がなくなります。フレーズスロットは、ユーザーが言える可能性のあるすべての値を予測できない場合や、カスタムスロットで取り込めないパターンがある場合に有効です。

AMAZON.Numberや、AMAZON.Timeのような組み込みのスロットが無い種類のデータを受け取るスロットでは、今まで、カスタムスロットを作成するしかありませんでした。

例えば、名前をスロットとして受け取るインテントがあった場合、サンプル発話の例は次のようになります。

そして nameスロットのタイプは、組み込みで対応出来ないため、その一覧をリストする必要があります。

そして、それをタイプとして指定するわけです。

しかし、カスタムリストの場合、シノニム等を駆使しても、予めリストしたものしか受け取れないことになります。

フレーズスロットは、ここでのカスタムスロットの代わりに使用するもので、リストの制限を取り払って、より自然なユーザーの発話を受け入れることができるようになります。

3 AMAZON.SearchQuery

非常に強力なフレーズスロットですが、現時点で利用可能なのは、AMAZON.SearchQueryのみです。

USのドキュメントには、次の図があり、サポート言語にJapaneseもあります。

AMAZON.SearchQueryは、ユーザーが情報を検索する際に使用する可能性のある単語やフレーズに合わせて調整されています。

4 使ってみる

それでは、早速使ってみます。 最初に、検索を要求するインテントとしてSearchIntentを定義しました。

そして、スロットのタイプをAMAZON.SearchQueryにします。 これだけです。

サービスシミュレーターで試してみると、次のようになっていました。

「武者小路実篤」を検索して下さい

「火星までの距離」を調べて下さい

5 エラー表示

現時点で、AMAZON.SearchQueryを含むモデルをビルドすると、最後に次のようなエラーが出るのですが、そのまま使えてます。 これは、一時的なものかも知れません。

6 最後に

どうでしょう、今までカスタムスロットでリスト化するしか無かったところが、キレイに置き換わることに感動を覚えます。 AMAZON.SearchQueryだけでなく、色々と増えてくると、本当に自然な発話が可能になるでしょう。本当に楽しみです。

7 参考資料


Enhance Speech Recognition of Your Alexa Skills with Phrase Slots and AMAZON.SearchQuery
Slot Type Reference(英語ドキュメントにしか記載はありません)