Alexaのリストスロットタイプが追加されていたので触ってみる
こんなツイートが流れてきました。 これは触るしかないですね。 リストスロットタイプの一覧 2018年4月27日時点で日本語スキルが利用可能なリストスロットタイプの一覧をまとめてみました。 スロットタイプ名 説明 AMAZ […]
目次
こんなツイートが流れてきました。
これは触るしかないですね。
リストスロットタイプの一覧
2018年4月27日時点で日本語スキルが利用可能なリストスロットタイプの一覧をまとめてみました。
スロットタイプ名 | 説明 |
---|---|
AMAZON.Actor | 俳優や女優の名前です。 |
AMAZON.Artist | アーティストのフルネームです。 |
AMAZON.Author | 作家のフルネームです。 |
AMAZON.Book | 書籍名です。 |
AMAZON.City | スロットタイプが使用されているロケールで、話し手が一般的に使用する地方都市や大都市を認識します。たとえば、en-INのスキルで使用されている場合、インドの都市になります。 |
AMAZON.Color | 色の名前です。 |
AMAZON.Corporation | 企業の正式名称です。 |
AMAZON.FirstName | スキルのロケールで、話し手が一般的に使用する何千もの一般的な名前を認識します。たとえば、en-INのスキルでは、インド人の名前を認識します。 |
AMAZON.Food | 食品の名前です。 |
AMAZON.Language | スペイン語、タミル語、ヒンディー語、英語などの自然言語です。 |
AMAZON.Movie | 映画のタイトルです。 |
AMAZON.Person | 実在の人物と架空の人物のフルネームです。 |
AMAZON.Region | スキルのロケールで、話し手が一般的に使用する国名や地名を認識します。たとえば、en-INのスキルでは、インド人の英語話者が一般的に認識する地名のことです。 |
AMAZON.Room | 家やその他の建物で一般的な部屋の名前です。 |
AMAZON.SearchQuery | 標準的な検索エンジンに入力するような、検索クエリーのことです。 |
ここからはこれらの値をいろいろ試してみようと思います。
サンプルの対話モデルを作る
ビルトインスロットタイプを使うには、まず[ビルド]で使用するスロットタイプを登録する必要があります。
ここで登録しておかないと、インテント内でスロットを登録する際に利用できないので気をつけてください。
そのあと登録したスロットタイプを使ったインテントスロットを作成します。
最後にインテントスロットを使ったサンプル発話を作って対話モデルをビルドすればOKです。
サンプルの対話モデルでスキルI/Oを確認する
サンプル:お屠蘇はハングルでなんとよぶ
なんとなく日本っぽいもの + 英語以外のものの組み合わせで試そうとした結果、かなりカオスなチョイスになりました。
{
"version": "1.0",
"session": {...},
"context": {...},
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.XXXXXX",
"timestamp": "2018-04-27T14:00:06Z",
"locale": "ja-JP",
"intent": {
"name": "FoodQuestionIntent",
"confirmationStatus": "NONE",
"slots": {
"region": {
"name": "region",
"confirmationStatus": "NONE"
},
"lang": {
"name": "lang",
"value": "ハングル",
"confirmationStatus": "NONE"
},
"city": {
"name": "city",
"confirmationStatus": "NONE"
},
"food": {
"name": "food",
"value": "お屠蘇",
"confirmationStatus": "NONE"
}
}
}
}
}
そのままそれぞれのslotに入っていますね。
ビルトインスロットタイプを使うメリットって?
上のサンプルだけだと「え、普通にスロット作るのと何が違うの?」となってしまうかもしれません。というのも、ビルトインスロットタイプが威力を発揮するのは、Automatic speech recognition (ASR)の部分だからです。
Alexaでは、ユーザーの発話をどのように解釈して変数化すべきかを、対話モデルのスロット部分で定義する仕組みになっています。そのため「こういう値が入りますよ」と事前に設定しておくことで、より高い精度での発話の認識が可能になります。
しかし人名や会社名などを自力で網羅するのはものすごい労力が必要となります。そこでAmazonが用意するビルトインスロットタイプを利用することで、Amazon側がそのサンプルを提供してくれるようになります。また、ドキュメントには以下のように記載されておりますので、独自のサンプルを追加して拡張するようなことも可能となります。
これらのスロットタイプは拡張して、発話を追加できます。そのためには、同じ名前でカスタムスロットタイプを定義し、追加のアイテムとしてカスタムスロットタイプ値を追加します。発話とスロット値の例については、この後のセクションを参照してください。
https://developer.amazon.com/ja/docs/custom-skills/slot-type-reference.html#list-types
ドキュメントに解釈の例などもありますので、積極的にビルトインスロットタイプを使ってスキル開発を効率化していくことをオススメします。