kun432's blog

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

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

#VUIchallenge #009 - Multi-turn experiences

f:id:kun432:20210711001052p:plain

#VUIchallengeの第9回です。テーマは「Multi-turn experiences」。

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

お題

The challenge

Create a multi-turn experience for a voice service that gives information about trips. For getting the right information you need to know origin, destination, date and time.

Jesús' Tips

With this exercise I want you to practice several things:

  1. Wording: Depending on the verbiage you use you will get different answers from your users. Make it easy for them to say what you need.
  2. Multi-turn and slot filling: Users hate when it takes too long to get what they want and the might want to skip steps. Can you help them do that with your prompts?
  3. Trips: It's a popular use case and you better have experience on it.

DeepLによる日本語訳

課題

旅行に関する情報を提供する音声サービスのために、マルチターンエクスペリエンスを作成すること。正しい情報を得るためには、出発地、目的地、日付、時間を知る必要があります。

Jesúsのヒント

このエクササイズでは、いくつかのことを練習してほしいと思います。

  1. 言葉遣い。使用する言葉によって、ユーザーから得られる答えは異なります。ユーザーが必要なことを簡単に言えるようにしておきましょう。
  2. マルチターンとスロット収集。ユーザーは、欲しいものを手に入れるのに時間がかかりすぎることを嫌い、ステップをスキップしたいと思うかもしれません。あなたのプロンプトを使って、ユーザーがスキップできるようにしてみませんか?
  3. 旅行。よく使われるユースケースなので、経験があるに越したことはありません。

デザイン

ユーザのゴールを達成するために、複数の情報が必要な場合、会話はマルチターンになることが多いです。お題にあるような、航空券の予約を行うようなやり取りを考えてみましょう。航空券の予約に情報は以下の4つです。

  • 出発地
  • 目的地
  • 日付
  • 時間

エアーチケットにようこそ。このスキルでは航空券の予約が行なえます。どうしますか?

沖縄に行きたい

目的地は沖縄ですね。出発地はどこですか?

神戸

出発地は神戸ですね。いつご出発されますか?

明後日

7/22のご出発ですね。ご出発時刻は何時ですか?

10時

わかりました。7/22 10時神戸から沖縄までの航空券を予約します。よろしいですか?

はい。

7/22 10時神戸から沖縄までの航空券を予約いたしました。よい旅を!

必要な情報が複数ある場合は、このように複数回のやりとりで順に情報を集めていけばよいわけですね。

言葉遣い

「言葉遣い」というとちょっと違和感がありますね。これは、ユーザがどういう言い方でどの情報を与えるかはわからない、ということに対してどうアクションするか?ということだと思います。

旅行券を予約するには複数の情報が必要ですが、ユーザはどんな情報が必要なのかをわかっていないという前提に立つと、いろんな言い方が考えられます。例えば、

7/22沖縄に行きたい

神戸から沖縄に行きたい

旅行に行きたい

こういう感じですね。必要な情報がいくつか指定されていたり、全く指定されていなかったり、組み合わせもバラバラです。このような場合は、必要な情報の収集状況を把握して、足りない情報をユーザに発話するように促す必要があります。例えば、2番目のケースだと、目的地と出発地はすでにわかっているので、あとは日付と時間がわかればよいわけです。

神戸から沖縄に行きたい

ご出発地は神戸、目的地は沖縄ですね。いつご出発されますか?

明後日

7/22のご出発ですね。ご出発時刻は何時ですか?

10時

わかりました。7/22 10時、神戸から沖縄までの航空券を予約します。よろしいですか?

はい。

7/22 10時神戸から沖縄までの航空券を予約いたしました。よい旅を!

同じようにして、1番目の場合は日付と目的地がわかっているので出発地と時間を、3番目の場合はすべての情報が足りないのでそれぞれ順に確認していくようにすればよいですね。

マルチターンの難しいところ

ユーザが使い方をわかってないうちは、マルチターンで必要な情報を一つづつ順に集めていけば、迷いもないので良いでしょう。ただ実際に体験してみるとわかるのですが、マルチターンのやり取りは時間もかかるしだんだん面倒になってきます。ある程度使い方になれたユーザであれば、発話の仕方もわかっているので早くゴールに向かいたくなります。そういった場合は1回でやり取りが済むようにもしておく必要があります。

7/2210時に、神戸から沖縄への飛行機を予約して/span>

わかりました。7/22 10時、神戸から沖縄までの航空券を予約します。よろしいですか?

はい。

また、なるべくユーザが発話しないといけないことを減らすことも重要です。今回の例だと、多くの場合、出発地はおなじになることが多いと思います。であれば、過去のやりとりからそれを蓄積しておく、ユーザ情報からそれを取得する、ということを行えば、これをスキップすることができます。

7/2210時に、沖縄への飛行機を予約して

(ユーザ情報を見ると神戸にお住まいなので、出発地は神戸として考えればよいですね。)

わかりました。7/22 10時、神戸から沖縄までの航空券を予約します。よろしいですか?

はい。

マルチターンの実装

こういったマルチターンの実装、ターンの最中はコンテキストを維持しないといけないので普通にやるととても面倒なのですが、Alexaであれば、

  • ダイアログモデル
  • Alexa Conversations(現時点では日本語未対応)

を使うことで、容易に実装できます。

Voiceflowでもダイアログモデルには対応しており、とてもかんたんに実装ができます。これについては以下の記事でまとめてます。今回の例とほぼ同じようなサンプルでご紹介していますので、よろしければご覧ください。

マルチターンが必要になるユースケース

旅行の予約は、マルチターンが必要になるユースケースとしてはとても一般的です。それ以外にも以下のようなケースでもマルチターンが必要になると思います。

  • 食べ物の注文
    • マクドナルド
      • セットで、サイドにポテトを選ぶかナゲットを選ぶか、飲み物は何にするか。
    • サブウェイ
      • パンの種類や野菜、ドレッシングの選択など
  • 銀行の振り込み
    • 入金先、金額、入金日など

こうやって見ると、マルチターン≒トランザクションという感もありますね。

まとめ

人間の会話ではシンプルな一問一答で完結するようなやり取りはまれです。常にコンテキストがあって、その中でそのコンテキスト特有のいろいろな情報が流れていきます。複数の情報をもとに何かしらのゴールを達成するようなコンテキストの場合、情報の取得状況に応じてユーザに発話を導くようなマルチターンでのやりとりが多くなる反面、マルチターンによる煩雑さも考慮する必要があります。

ダイアログモデルやAlexa Conversationsなど、マルチターンに柔軟に対応できるようなしくみが整備されているので、積極的に活用していくのがよいでしょう。