LUISチュートリアル(後編:Pepperとの連携)

はじめに

今回は、前回の記事でご紹介した、Microsoft Cognitive Servicesの中にあるLUIS(Language Understanding Intelligent Services)をPepperと連携させてみたいと思います。Pepperだけでも聞き取りを行うことはできるのですが、LUISを使うことで、よりスマートな会話をさせることができるようになります。

アプリの概要:Pepperに天気を聞く

今回は、ユーザがPepperに天気を聞くと、Pepperが「【いついつ】の【どこどこ】の天気は晴れです」と答えてくれるものを作成したいと思います。今回は、下の図のように、いつどこの天気を聞いても晴れにしてくれるPepperにしました。

LUISを使用することのメリットとして、【いついつ】や【どこどこ】に該当する単語や、言い回しに対して柔軟な聞き取りが可能になることが挙げられます。

PepperでLUISの解析結果を使用するために、あらかじめLUISで天気取得アプリを作成し、「天気を取得する」というインテントと天気取得のために必要な「日付」と「地名」のエンティティを設定しておきます。また、ユーザが天気を知りたいときに、聞いてきそうな文章をいくつか学習させておきます。学習の方法はLUISチュートリアル前編で解説しています。

Pepper側の実装

ユーザー、Pepper、LUISの関係は下の図のイメージになります。

 

Pepperで行っている処理は、

  1. ユーザの発言を聞き取って文章に変換する
  2. 変換した文章をそのままLUIS APIに投げる
  3. LUIS APIから返ってきたデータからインテントとエンティティを取り出す
  4. 【日付エンティティ】の【地名エンティティ】の天気は晴れです」という文章にエンティティを入れて発話する

となります。

LUIS APIが、ユーザの発言の中のインテント(ユーザの意図)とエンティティ(関連する単語)だけを解析してJSON形式で返してくれるので、Pepper側でこの結果を受け取って使用するだけで、ユーザの意図に沿ったPepperアプリを作成することができます。

下の図に、Choregrapheのスクリーンショットを載せています。
1. の処理にはDialogボックスを使います。2., 3. の処理はこちらで新しく作成したLUIS APIボックスで、4. はAnimated Say Textボックスを用いました。

Choregrapheのスクリーンショット

LUIS APIボックスの内容は、

  • 入力:PepperがDialogボックスで聞き取った文章の文字列
  • 出力:日付エンティティと地名エンティティ
  • 処理:
    1. 入力された文字列を、LUIS公開時に発行されるEndpoint urlにくっつける
    2. LUISで作成した天気取得アプリにリクエストを送る
    3. LUISから返ってくるJSON形式のデータから日付エンティティと地名エンティティを取得

となっています。LUISから返却されるデータは、例えば「明日の東京の天気は?」とPepperが聞き取った場合、以下のようなものになります。

 {
  "query": "明日の東京の天気は?",
  "topScoringIntent": {
    "intent": "天気を取得する",
    "score": 1.0
  },
  "intents": [
    {
      "intent": "天気を取得する",
      "score": 1.0
    },
    {
      "intent": "None",
      "score": 0.00462110247
    }
  ],
  "entities": [
    {
      "entity": "東京",
      "type": "地名",
      "startIndex": 3,
      "endIndex": 4,
      "score": 0.9965598
    },
    {
      "entity": "明日",
      "type": "日付",
      "startIndex": 0,
      "endIndex": 1,
      "score": 0.996626139
    }
  ]
}

したがって、Pepperに「【いついつ】の【どこどこ】の天気は晴れです」と答えさせたい場合、typeが日付であるエンティティ「明日」と、typeが地名であるエンティティ「東京」を それぞれ取り出して使用します。

実際に、聞き取りを行ってみた

まず、学習で使用した文章で聞いてみました。学習と全く同じ文章ですので間違えることなく、以下のように問題なく答えてくれます。

また、学習で使用していないエンティティを使用したパターンでもある程度であれば、地名と日付を識別してくれます。※ただし、学習内容に依存します。
 
 

さらに、ある程度表現が変わっても地名と日付の識別が可能です。

 

まとめ・所感

今回は、LUISを使ってPepperの聞き取りをしてみました。学習させたサンプルの数もそれほど多くなかったにも関わらず、意外なほど柔軟に聞き取りを行うことができました。入力されうるエンティティのパターンをたくさん学習させたり、様々な表現を学習させたりすることで、より柔軟かつ正確に聞き取りが行えそうです。

 



イサナドットネットではこんなPepperのアプリ事例があります。

ご興味持った方はisana.netまでお問い合わせ下さい。
詳細・お問い合せはこちら

%d人のブロガーが「いいね」をつけました。