Alexaはスロットタイプ別に良い感じに判断して分岐してくれるのか?

はじめに

Alexaには発話の中で該当のキーワードを高い精度で抜き出すためにスロットというものがあります。

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

スロットには、動物名、俳優名、アーティストなど数多くのスロットがあります。 今回は、スロットタイプ別で良い感じに判断して分岐できるか試してみます。

自然な会話の流れ

人間の会話では前後の流れ、場所や時間によってキーワードを判定しています。

黒いね、くもが。

たとえば、この例だと「雲」なのか「蜘蛛」なのかは判断できません。でも前後の会話があればどちらの「くも」なのかは判断できます。

今日は天気が悪いね。

黒いね、くもが。

この会話なら「雲」だと判断できそうです。

(空を見上げながら)黒いね、くもが。

この様に行動(視覚)によっても判断できそうです。

上の例とはちょっと違いますが、Alexaのスロットはどこまで判断できるのか? 気になったので試してみました。

アーティスト、動物名で分岐

最初はアーティストと動物名のスロットを試してみます。 Alexaのモデルは次の様に設定しました。

 1{
 2  "interactionModel": {
 3    "languageModel": {
 4      "invocationName": "気になるキーワード",
 5      "intents": [
 6        {
 7          "name": "AnimalIntent",
 8          "slots": [
 9            {
10              "name": "animal",
11              "type": "AMAZON.Animal",
12              "samples": [
13                "{animal} について教えて"
14              ]
15            }
16          ],
17          "samples": [
18            "{animal} について教えて"
19          ]
20        },
21        {
22          "name": "ArtistIntent",
23          "slots": [
24            {
25              "name": "artist",
26              "type": "AMAZON.Artist",
27              "samples": [
28                "{artist} について教えて"
29              ]
30            }
31          ],
32          "samples": [
33            "{artist} について教えて"
34          ]
35        }
36      ],
37      "types": []
38    }
39  }
40}

今回は発話のサンプルをあえてスロットのみ異なる形で発話の内容は一緒にしています。

龍について教えて

と発話すればAnimalIntentが呼び出され

葛飾北斎について教えて

と発話すればArtistIntentが呼び出されれば成功です。

アーティスト、動物名での分岐結果

結果は次のとおりです。良い感じですね!

アーティスト、動物名での分岐結果

でも、動物名とアーティストならキーワードだけでも判断できます。 では、人の名前が入るスロットを重ねた場合にはどうなるでしょう?

アーティスト、動物名、俳優での分岐

人名が入るアーティストと俳優のスロットを重ねてみます。

 1{
 2  "interactionModel": {
 3    "languageModel": {
 4      "invocationName": "気になるキーワード",
 5      "intents": [
 6        {
 7          "name": "AnimalIntent",
 8          "slots": [
 9            {
10              "name": "animal",
11              "type": "AMAZON.Animal",
12              "samples": [
13                "{animal} について教えて"
14              ]
15            }
16          ],
17          "samples": [
18            "{animal} について教えて"
19          ]
20        },
21        {
22          "name": "ArtistIntent",
23          "slots": [
24            {
25              "name": "artist",
26              "type": "AMAZON.Artist",
27              "samples": [
28                "{artist} について教えて"
29              ]
30            }
31          ],
32          "samples": [
33            "{artist} について教えて"
34          ]
35        },
36        {
37          "name": "ActorIntent",
38          "slots": [
39            {
40              "name": "actor",
41              "type": "AMAZON.Actor",
42              "samples": [
43                "{actor} について教えて"
44              ]
45            }
46          ],
47          "samples": [
48
49            "{actor} について教えて"
50          ]
51        }
52      ],
53      "types": []
54    }
55  }
56}

アーティスト、動物名、俳優での分岐結果

結果は次のとおりです。

アーティスト、動物名、俳優での分岐結果

思ったよりいい感じですね! でも、俳優、アーティストの両方に属する方はどうなるんでしょうか?

アーティスト、動物名、俳優での分岐結果

どちらか一方が呼ばれるみたいです。まあ当たり前ですが。 でも福山雅治さんは僕のイメージでは歌手のイメージが強いのでArtistだと思っていましたが。。。

アーティスト、動物名、俳優での分岐結果

。。。Animalって。。。まあ「海老」が入っているからね。

正しいVUI設計

前後の会話がない、状態(視覚)が取得できないAlexaでは会話を分けるのが良さそうです。 たとえば今回なら次のように会話を分けるのが良さそうです。

動物の龍について教えて

アーティストの葛飾北斎について教えて

俳優の唐沢寿明について教えて

まとめ

たとえば今回のケースなら前後の会話を挟んでその流れから予測することもできそうです。

この間のテレビで歌舞伎をやっていて市川海老蔵が

市川海老蔵ってだれ?教えて

のように前の会話があれば判定できそうです。 しかし、VUIでは明確な目的があって指示をするので、その前に会話を挟まれるとそれはそれで辛そう。。。

っということで正しい会話設計がまだまだ必要そうです。

Let’s enjoy Alexa.