kun432's blog

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

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

日本語に対応したAmazon Lex(V1)を試してみる② Alexaのダイアログモデルと比較してみる

f:id:kun432:20210427220639p:plain

前回の記事で、LexがAlexaのダイアログモデルと似ているという話をしました。

今回は少し補足的にダイアログモデルと似てるところをもう少し見てみたいと思います。

目次

BookTripサンプルの問題

BookTripサンプルのテストはこんな感じでした。

f:id:kun432:20210430222824p:plain

少し意地悪なテストをしてみましょう。

f:id:kun432:20210430222550p:plain

場所を聞かれた際に自然な感じで回答すると正しく理解できていません。

もう一つ。

f:id:kun432:20210430222610p:plain

日付のところはAlexaと同じようにちゃんと理解していますね。Inspect Responseを見るとちゃんと今日を起点に「来週の火曜日」というのを日付で認識できていることがわかります。

f:id:kun432:20210430222623p:plain

だめなのは年齢のところです。「四十歳」のように「歳」がつくと正しく認識できていません。(漢数字だけならちゃんと認識します)

つまり、個々のスロット収集時のサンプル発話が正しく設定されていないということですね。

スロット収集時のサンプル発話の修正

ではこれを修正します。Slotsの各スロットの設定の右にある歯車アイコンをクリックします。まずは都市名の部分から。

f:id:kun432:20210430123225p:plain

スロットの設定画面が表示されます。ここにCorrresponding uttterancesというのがありますが、これがスロット収集時のサンプル発話になります。デフォルトだと何も入ってないので、{PickUpCity}だけが入っているのと等価だということですね。

f:id:kun432:20210430123852p:plain

なので、ここにサンプル発話をいくつか追加してあげます。あと、Promptsがスロット収集時のLexの発話になります。正しく収集できない場合はMaximum numbers of retriesにある2回まで聞き直します(Alexaと同じですね)。ユーザが正しい言い方を認識しやすいように、Promptsで説明してあげるのもアリだと思います。設定したら「Save」をクリックします。

f:id:kun432:20210430124441p:plain

同様にして年齢のところも変更してあげましょう。

f:id:kun432:20210430124646p:plain

ではもう一度テストしてみます。テストの前に「Save Intent」して「Build」することをお忘れなく。

f:id:kun432:20210430125045p:plain

うまくいきました!ちなみにスロットだけの発話(前後のキャリアフレーズがなくて、{PickUpCity}だけが入っているようなケース)は明示しなくてもOKのようです。

インテントにマッチしない場合

最初の例は、スロット収集時のサンプル発話にマッチしない場合でした。ではそもそもインテントにマッチしない場合の設定(AlexaでいうFallbackIntentのようなもの)はどこで行うのでしょうか?Lexでは、左のメニューにある"Error Handling"で設定を行います。

f:id:kun432:20210430224055p:plain

Clarification promptsがどのインテントにもマッチしない場合に、ユーザに再度発話を促すためのLexのプロンプトです。ここにもMaximum number of retriesがありますね。つまり、2回まで再度確認して、それでもマッチしないようであれば、Hang-up phraseで最後のメッセージを発話してセッションが切れる、というような感じになっているようですね。

f:id:kun432:20210430223024p:plain

まとめ

Alexaでダイアログモデルを使ったことがある方なら、とてもスッキリ頭に入ってくるのではないでしょうか。やっぱりとても似ていますね。

もう少しいろいろやってみます。