[日本語 Alexa] 女優、航空会社、空港、航空会社、動物、有名人、地名などが新たに追加され、益々便利になったリストタイプスロットについて

1 はじめに

AIソリューション部の平内(SIN)です。

先週、新しいリストタイプスロットの追加がアナウンスされました。
Deliver Better User Experiences Faster with New Built-in Slot Types and an Intent

サンプル発話では、そのパラメータとしてスロットが利用されます。


「Alexaスキル開発トレーニングシリーズ 第2回 対話モデルとAlexa SDK」より

スロットには、その取りうる値が予め定義された、組み込みスロットと、全てを開発者が定義するカスタムスロットがありますが、リストタイプのスロットは、組み込みスロットの1つです。

今回は、この、リストタイプのスロットについて少し纏めてみました。

2 組み込みスロットの種類

組み込みスロットには、以下の3種類があります。

  • 数値、日付、時刻
  • フレーズ
  • リスト

(1) 数値、日付、時刻

2018/12/22現在、日本語で利用可能なものは、以下の5種類です。このスロットは、それぞれ決められた形式で値を取り出せます。

スロットタイプ 説明 一例 取得形式
AMAZON.DATE 日付 今日、明日、7月 2015-07-00T9
AMAZON.DURATION 期間 5分、5分間 PT5M
AMAZON.FOUR_DIGIT_NUMBER 4桁の数字(※桁数に縛りはない) 六〇四五 6045
AMAZON.NUMBER 数字 一、五 1,5
AMAZON.TIME 時間 10時、朝の4時 10:00,04:00

スロットタイプリファレンス/数値、日付、時刻

(2) フレーズ

2018/12/22現在、日本語で利用可能なフレーズは、以下の1種類です。

スロットタイプ 説明 一例
AMAZON.SearchQuery 検索クエリー なぜ空は青いのか、メリーランド州の州都はどこか近くのレストラン

スロットタイプリファレンス/フレーズ

(3) リスト

2018/12/22現在、全てパブリックベータですが、今回、新たに追加されたものを含め、全部で25種類あります。

スロットタイプ 説明 一例
1 AMAZON.Actor 俳優や女優の名前 綾瀬はるか、柴咲コウ
2 AMAZON.Airline 航空会社 ANA、スカイマーク
3 AMAZON.Airport 空港 羽田空港、新千歳空港
4 AMAZON.Animal 動物の名前 犬、猫
5 AMAZON.Artist アーティストの名前 葛飾北斎、村上隆
6 AMAZON.Author 作家名 夏目漱石、太宰治
7 AMAZON.Book 書籍名 人間失格、吾輩は猫である
8 AMAZON.City 都市名 渋谷、新宿
9 AMAZON.Color オレンジ色、紺
10 AMAZON.Corporation 企業名 ソフトバンク、日産
11 AMAZON.Country 国名 中国、イギリス
12 AMAZON.CreativeWorkType 創作物の種類 小説、漫画
13 AMAZON.DayOfWeek 週の暦日 日曜日、土日、週末
14 AMAZON.FirstName 日本人の名 ヒロシ、ハルキ
15 AMAZON.Food 食品名 寿司、餃子
16 AMAZON.Genre メディアのジャンル名 ロック、洋楽
17 AMAZON.Language 言語名 日本語、英語
18 AMAZON.Month 暦月名 1月、2月
19 AMAZON.Movie 映画のタイトル 千と千尋の神隠し、タイタニック
20 AMAZON.Person 有名人の名前 マツコ・デラックス、イチロー
21 AMAZON.Region 都道府県や地域名 東京、大阪
22 AMAZON.Room 部屋の名前 キッチン、台所
23 AMAZON.Sport スポーツ 野球、サッカー
24 AMAZON.StreetName 地名 六本木、西麻布
25 AMAZON.VideoGame テレビゲーム スーパーマリオブラザーズ、ゼルダの伝説

スロットタイプリファレンス/リストタイプ

3 リストタイプスロットを使ったスキル

リストタイプのスロットを使って、簡単なスキルを作ってみます。

「一番好きな動物」は「あなたの本当の性格」を表しています。

らしいです。

という事で、コンテンツは、適当で恐縮ですが、好きな動物で心理テスト を行うスキルです。

作成したインテントは1つ、好きな動物の種類を受け取るためのAnimalIntentです。

そしてスロットは、リストタイプスロットであるAMAZON.Animalを使用しました。

コードは、ざっとこんな感じ

const LaunchRequestHandler: Alexa.RequestHandler = {
    canHandle(h: Alexa.HandlerInput) {
        return isMatch(h, ['LaunchRequest']);
    },
    handle(h: Alexa.HandlerInput) {
        let speak = 'このスキルは、性格を診断するスキルです。';
        let reprompt = '貴方の一番好きな動物はなんですか?'
        return h.responseBuilder
            .speak(speak + reprompt)
            .reprompt(reprompt)
            .getResponse();
    }
}

const AnimalIntentHandler: Alexa.RequestHandler = {
    canHandle(h: Alexa.HandlerInput) {
        return isMatch(h, ['AnimalIntent']);
    },
    handle(h: Alexa.HandlerInput) {
        let animal = '動物';
        const request = h.requestEnvelope.request;
        if (request.type == 'IntentRequest' && request.intent && request.intent.slots) {
            animal = request.intent.slots['animal'].value;
        }
        let speak = animal + 'が好きな貴方は、自立していて、発想力豊か、夜行性、リーダーシップがあります。'
        return h.responseBuilder
            .speak(speak)
            .withShouldEndSession(true)
            .getResponse();
    }
};

実行すると、以下のようになります。

動物の種類は、山ほどあります。利用者が言うかも知れない動物を全部列挙することは、恐らく無理でしょう。しかし、リストタイプのスロットがあれば、一発で解決です。

4 スロット値の編集

ちょっと欲張って、好きな動物だけでなく、好きな食べ物でも心理テストができるようにスキルを拡張しようと考えた時、問題が発生してしまいました。

好きな食べ物を受け取るためにインテント(FoodIntent)を追加しました。

そして、スロットは、こちらもリストタイプスロットである、AMAZON.Foodを指定しました。

同じように「ひよこ」が好きって言うと、先程のように、AnimalIntentに入らなくなってしまいました。

これは、「ひよこ」が動物でなく食べ物として認識されてしまったようです。もしかしてひよこ豆???

この問題を解決するには、リストタイプのスロットを編集(追加)することです。

下図では、AMAZON.Animalひよこを追加しています。

これで、ひよこは、ちゃんと動物として認識されるようになりました。

5 スロット値の一括編集

先程の、スロットの編集には、一括編集というボタンがあります。

こちらを使用すると、たくさんの値を簡単に追加することができます。

送信すると、全てがシノニムとして一気に登録されます。

シノニムが利用できているようすです。

6 最後に

今回は、組み込みスロットの一つである、リストタイプのスロットについて纏めてみました。リストタイプのスロットを使用すると、「動物」や「食べ物」など、全てを列挙することが困難なものでも、簡単利用できます。

今回、女優、航空会社、空港、航空会社、動物、有名人、地名などが、新たに利用可能となったわけですが、今度も、どんどん増えていくことでしょう。スキルの開発は、益々捗りそうです。

弊社では、「Amazon Connect」の導入を検討している方を対象とした無料相談会を毎週開催中です。

また、音声を利用した各種ソリューションの導入支援を行っております。お気軽にお問い合わせください。
チャットボット開発支援
クラウド型コンタクトセンターサービス導入支援

7 参考


スロットタイプリファレンス

コメントは受け付けていません。