kun432's blog

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

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

Voiceflowでカスタムアシスタント向けテストツールがNLP/NLUに対応しました!

f:id:kun432:20210127224323j:plain

前回ご紹介したVoiceflowの「カスタムアシスタント」向けに新しい機能として「テストツールのNLP/NLU」対応がリリースされましたのでご紹介します。

NLPとは?

NLPは"Natural Language Processing(自然言語処理)"の略で、人間が普段何気なく使っている言語(表現が一つに決まりきっていない、いろんな言い方があるものを自然言語といいます)をコンピュータが処理することの総称です。

NLPはいくつかの細かい処理に分類できるのですが、その中の一つが"NLU:Natural Language Understanding(自然言語理解)"です。

NLUを端的に言うと、「人間の発話内容を解析して、その中に含まれる意図を理解する」ということです。例えば、こういうことですね。

コーヒーをください

コーヒーをちょうだい

コーヒーかな

これらはすべて「コーヒーがほしい」という意図になっています。人間であれば当たり前のことでも、コンピュータはこれを理解できません。その代わり、大量の「コーヒーがほしい」という表現のデータに対して、

  • 構文解析(表現を分解して品詞にわける。ex:「コーヒー」「を」「ください」)
  • 似た表現や頻出される表現の共通性を見出す(「ほしい」「ください」「ちょうだい」「お願い」)

というような処理を行った上でデータとして蓄積し(学習といいます)、その上で、

コーヒーにしよっと

というような表現に対して、「コーヒーがほしい」という「意図」にどれだけ近いのか?を、データから統計的に判断します。これを「自然言語認識」と言い、音声アシスタントやスマートスピーカーの重要な要素になっています。

・・・というような難しいことはおいといて、百聞は一見にしかず、実際にやってみましょう!

やってみよう

よくあるコーヒーショップのサンプルを作ってみました。

f:id:kun432:20210204011051p:plain

対話モデルはこんな感じです。スロットで飲み物名を受け取ります。

f:id:kun432:20210204011310p:plain

カスタムアシスタントは現時点ではカスタムスロットしかないので、スロット値やシノニムは自分で設定する必要があります。

f:id:kun432:20210204011142p:plain

ではテストしてみましょう。右上の「Test」ボタンをクリックします。

f:id:kun432:20210204012203p:plain

「Test」画面が開きました。右の方を見てみてください。

f:id:kun432:20210204011839p:plain

今まで見たことがないメニューですね。「アシスタントは学習が必要です」とあり、「アシスタントを学習させる」リンクがあります。学習させたくなりますが、ちょっと一置いておきましょう。

f:id:kun432:20210204012056p:plain

下にスクロールして、「Start Test」をクリックしてテストしてみましょう。

f:id:kun432:20210204012549p:plain

注文を聞いてくるので、サンプル発話に登録してあるように入力してみましょう。

f:id:kun432:20210204014714p:plain

サンプル発話に登録したとおりに入力したけど、ダメですね。

f:id:kun432:20210204014626p:plain

次にスロットの境目に半角スペースを入れてもう一度やってみましょう。

f:id:kun432:20210204013903p:plain

うまくいきましたね。

f:id:kun432:20210204014513p:plain

これは以前からVoiceflowのツールが抱えている問題でして、Choice Blockでサンプル発話を登録する際、スロットの前後には必ずスペースが必要です。

f:id:kun432:20210204014247p:plain

英語などでは単語の区切りに必ずスペースが入るので問題にならないのですが、日本語はこういったスペース区切りは使いません。Voiceflowのテストツールではこの部分を単純に文字列として比較しているだけなので、正しくインテントとして判定できないのですね。

ちなみにこのスロット区切りのスペースはAlexaやGoogleの場合でも必須ですので外すことはできませんが、AlexaやGoogleのテストシミュレータではこの部分をうまく判断してくれます。したがって、Voiceflowのテストツールで日本語の場合に限って動作しない、というわけです。

このあたりについては以前に要望としてまとめました。

NLP/NLU対応でうれしいこと

では、NLP/NLUになって何が変わったのか?を見てみましょう。テストの上の方にある「Training」をクリックします。

f:id:kun432:20210204023200p:plain

最初にスキップした画面が出てきましたね。ここで「Train Assistant」をクリックします。

f:id:kun432:20210204023209p:plain

ここで登録してあるサンプル発話やスロットを元に学習が行われます。

f:id:kun432:20210204023223p:plain

学習が終われば以下のような画面が表示されます。100%となっていますね。つまりすべてのサンプル発話やスロットの学習が終わったということです。

f:id:kun432:20210204023301p:plain

ではもう一度テストしてみましょう。スペースを入れずに入力してみます。

f:id:kun432:20210204024207p:plain

はい、今度はきちんと動いてくれますね。つまり、サンプル発話やスロットを学習することにより、スペースがあってもなくてもユーザの発話を理解して、そこからインテント・スロットをきちんと紐付けてくれるということですね!

f:id:kun432:20210204024237p:plain

しかも、それだけではありません。たとえば、サンプル発話に登録していないようなパターンを入力してみましょう。

f:id:kun432:20210204024410p:plain

なんと、登録していないパターンでもきちんと理解してくれます!これが学習、NLUということなんですね!

注意

  • カスタムアシスタント限定です。AlexaやGoogle向けプロジェクトではNLP/NLUに対応したテストツールは利用できません(その場合はそれぞれのプラットフォーム側のテストシミュレータを使えばよいです)
  • 対話モデルを編集した場合(サンプル発話の追加・変更・削除、スロットの追加・変更・削除等)を行った場合は再度「Train Assistant」が必要になります。

まとめ

元々、NLP/NLUというのはスマートスピーカーのキモともいえる部分で、AlexaやGoogleなど音声AIプラットフォーマーのクラウド上で膨大な発話データを元に学習・解析が行われています。

Voiceflowは、あくまでもこれらのプラットフォームに乗っかって、音声アプリを簡単に作るインタフェースにすぎず、NLP/NLUにあたるものはプラットフォーム側で提供しているものを利用する前提となっていました。したがって、Voiceflowのテストツールはあくまでも簡易なテストを行うもの、という位置づけでした。

今回、新しく登場したカスタムアシスタントに自前のNLP/NLU機能が提供されたことにより、AmazonやGoogleなどのプラットフォームに依存することなく音声「アシスタント」を提供することが可能になります。つまり、AmazonやGoogleと同じ土俵でで音声アプリを提供することができるプラットフォームになったと言えるではないでしょうか。今後に期待しましょう!

そして、2/22(日本時間 2/23 AM4:00)に行われるVoiceflow単独のイベント「V2」ではさらに大きな新機能がいくつか発表される予定です!早朝ですが、興味があればぜひご参加ください!(要事前申込)