kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

#VUIchallenge #002 - The cities

f:id:kun432:20210711001052p:plain

#VUIchallengeの第2回です。テーマは「The cities」。

過去の#VUIchallengeの記事はこちら

お題

The challenge

Design a prompt asking users to tell the city in the US they want to visit. What possible answers can you get for that prompt?
Design also all the prompts that you will give back depending on the possible answers you can get.

Jesús' Tips

Just some ideas today. Depending on your wording your customers might get it right and say a city on the US, or get it totally wrong and ask for countries in Europe. Be super careful with your words!
Even if your wording is perfect, you will need to be ready for different scenarios. Here you have some ideas:

  • The city name is shared.
  • The city is not in the US.
  • Any other scenario you can think of.

DeepLによる日本語訳

課題

ユーザーに「行ってみたいアメリカの都市」を尋ねるプロンプトをデザインします。そのプロンプトに対して、どのような回答が得られるでしょうか。
また、得られる可能性のある答えに応じて、返すプロンプトをすべてデザインしてください。

Jesúsのヒント

今日はいくつかのアイデアを紹介します。あなたの言葉遣いによっては、顧客は正しく理解してアメリカの都市を答えるかもしれませんし、全く間違ってヨーロッパの国を尋ねるかもしれません。言葉遣いには細心の注意を払ってください。
たとえ言葉遣いが完璧であっても、さまざまなシナリオに対応できるようにしておく必要があります。ここではいくつかのアイデアをご紹介します。

  • 都市名が共有されている。
  • その都市はアメリカにはない。
  • その他のシナリオを考えてみましょう。

デザイン

サンプルとして、日本の都市名を言うとその都市のおすすめの観光名所を教えてくれる、というもので考えてみましょう。

はじめまして、トリップアドバイザースキルをご利用いただきありがとうございます。
このスキルでは、行きたい日本の都市名を言うとおすすめの観光名所を提案します。
例えば「京都に行きたい」と言ってみてください。

京都に行きたい

京都ですね。京都だと清水寺がおすすめです。

ではいくつかのパターンを見ていきましょう。

都道府県が違うけど都市名が同じ

ウィキペディアによると、都道府県は違うけど同じ都市名というのは日本には2つあるようです。府中市(東京と広島)と伊達市(北海道と福島)ですね。

アメリカの場合も、ソースが出てこなかったのですが、いくつかあるようです。

この場合、都市名だけでは区別がつかないので、追加で質問する必要があるでしょう。

府中に行きたい

府中は東京都と広島県にあります。どちらの府中についてお調べしましょうか?

東京の方で

東京都の府中なら、東京競馬場が有名ですね。

場合によっては、両方ともお伝えするというのも一つかも入れません。セレンディピティ的な効果を期待して。

府中に行きたい

府中は東京都と広島県にあります。東京都の府中なら、東京競馬場が有名ですね。広島県の府中なら、オオムラサキの里がおすすめですよ。

ただ、この場合、候補数にもよりますね。2つぐらいならいいと思いますが、4つ以上とかになると長くなり過ぎそうです。その場合は候補から選択してもらうのがいいでしょう。

外国の都市名

今回のサンプルでは、日本の都市名だけを対象としています。つまりアメリカの都市名には対応しません。で、Alexaの場合を例に取ると、都市名についてはビルトインスロットタイプAMAZON.Cityを使えばかんたんに取れます。

AMAZON.City

日本で日本語を話すユーザーが一般的に使用する日本や世界各地の都市の名前を認識します。このスロットタイプは都市名の一般的なバリエーションを認識します。サービスに送信される都市名は、ユーザーが話した値と一致します。つまり、Alexaサービスは、都市名のバリエーションを正式な都市名に変換しません。

  • 渋谷
  • 新宿
  • 品川
  • 世田谷
  • 大阪
  • 名古屋
  • (以下略)
スロットタイプリファレンス | Alexa Skills Kit

なんですが・・・これ、必ず日本の都市名だけを拾うわけではなく、海外の都市名も普通に拾ってきます。実際にVoiceflowを使って作ってみました。

サンプルでは京都と奈良だけに対応しています。それ以外は「対応していない」旨を伝えます。

f:id:kun432:20210713232650p:plain

都市名を答えるインテントでAMAZON.Cityスロットタイプを使って都市名を取得しています。

f:id:kun432:20210713233036p:plain

f:id:kun432:20210713233058p:plain

どのインテントにもマッチしない場合は以下のようにメッセージを返します。

f:id:kun432:20210713233423p:plain

テストしてみましょう。

f:id:kun432:20210713233524p:plain

これは想定どおりですね。では「ニューヨーク」で試してみましょう。インテントにマッチしないので「ごめんなさい、よくわかりませんでした。」になるはずですね。

f:id:kun432:20210713233547p:plain

残念ながらそうはなりません。日本の都市名を取得するスロットタイプであるAMAZON.Cityを使ったとしても、海外の都市名も拾ってしまいますね。

ということで、少し脱線しましたが、日本以外の都市名の場合は、「よくわかりませんでした。」よりももう少し突っ込んだ応答が必要になります。例えば

ニューヨークに行きたい

ごめんなさい、ニューヨークはアメリカの都市名です。このスキルでは日本の都市名のみに対応しています。日本の都市名を言ってください。

という感じになるかなと思います。実際にこれをやるには都市名から国名を引っ張ってくるようなAPIが必要になるかと思います。

その他のシナリオ

色々なパターンが考えられますが、一つ思いついたのは「都市名」を聞いていますが「都道府県名」を行った場合とかですかね。これもAMAZON.Cityは拾ってきてしまいます。

f:id:kun432:20210713234349p:plain

なので、この場合に取れる戦略としては、

  • 都道府県名ではなく都市名を言ってもらうように再度聞き直す
  • 都道府県に属する市を列挙して都市名を言ってもらう
  • 都道府県名でもざっくりとした提案できるようにする

というのが考えられますね。最後の例だと、

滋賀に行きたい

滋賀県ですね。滋賀県だと大津市にある比叡山延暦寺がおすすめです。

みたいな感じが良いでしょう。もちろんこれをやろうと思うと結構ロジックは複雑になります。

1番目は親切とは言えませんがその分シンプルにやれることだけに限定しています。

2番目は候補を提案することでユーザの負担を減らそうとしています。ただ数が多いと長くなりがちなので難しくなります。

親切にすればするだけ開発コストも大きくなるので、このあたりはリソースとの兼ね合いも考えてやるしかないですね。

まとめ

今回は都市名がテーマでした。ユーザにとっては、都道府県名なのか、都市なのか、地名なのかということを意識して話すわけではない(大阪「府」なのか、大阪「市」なのか、漠然とした「大阪」なのか、ということ)ので、ビルトインスロットタイプはもちろん使うとしても、それに頼り切らずに、例外パターンも想定しておければいいですね。