りょぼっと のすべての投稿

ターゲット

  • ロボットの会話を作りたい人
  • チャットボットを自作したい人
  • 自分好みの会話をロボットにさせたい人
  • 会話がどのように生成されるか興味がある人など…

はじめに

ロボットの会話を作成しているりょぼっとです。

ロボット会話職人」の第一号(?)として活動しています。

今回はロボットの会話を作成する際に使っているIBM Bluemix上のWatsonのConversationについて解説します。

ロボットだけでなく多くの利用用途があるのでぜひ使ってみてほしいです。(30日間無料)

なお、IBM Bluemix上のConversationは日本語対応が正式には発表されていません。今後、何らかの理由で利用できなくなる可能性があるのでご注意ください。

Conversationとは

Conversationを使うと以下のようにブラウザ上で会話のシナリオを作成することができます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-31-51

conversationの3大要素

基本的にはこの3つさえ押さえておけば会話を開発することができます。

  • Intents
    • 文章のカテゴリ・意図を作成する。
  • Entities
    • 単語を登録する。
  • Dialog
    • 返答を記述する。

作ってみる

実際に会話を作成した方が理解は早いので、作成してみましょう。

何かテーマがある方が作りやすいので、テーマを「お正月のロボット」として開発していきます。

Intents

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-13-44-03

Intentsの作り方は2つあります。1つ目はCreate newでGUIベースに作る方法ですが、慣れてくると2つ目のImportを使います。Importではあらかじめ作成したcsvデータを元に、Conversationが自動的に振り分けてくれるので便利です。ということで今回はImportを使います。

今回は以下のようなcsvデータを用意しました。(文字コードはUTF-8)


あけましておめでとうございます,greeting
今年もよろしくお願いします,greeting
よいお年を,greeting
こんにちは,greeting
おはようございます,greeting
さようなら,greeting

このデータをImportすると以下のように画面が変わり、無事追加されたことがわかります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-08-44

では、試しに会話をしてみましょう。画面右上にある %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-14-31 のボタンを押すと、一番下にコメントを入力できる欄ができます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-14-43

そこに「あけましておめでとうございます」と書き込み、Enterを打つと、

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-15-09

正しくgreetingに分類されました。

Dialog

次に、このセリフに対しての返答を書き込みます。

Dialogの画面でCreateを押すと以下のような画面が出てきます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-23-23

Enter a conditionには先ほど作成したIntentsのカテゴリ名を、Enter a responseには返答を書きます。今回は「#greeting」と「おめでとうございます」を設定しました。

では、先ほどと同じように会話をしてみましょう。「あけましておめでとうございます」と打ってみてください。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-31-03

このように、先ほど追加した返答が返されます。

では、「こんにちは」と打ってみてください。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-38-40

「こんにちは」の返答が「おめでとうございます」となっています。これでは会話が成立しませんよね。そこでEntitiesの登場です。

Entities

Entitiesの画面を開くとIntentsにはなかったUse system entitiesというものがあります。これは数字や日付等の認識を可能にできますが今回は使用しません。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-15-41-16

Intentsと同じように以下のcsvデータをImportします。


greeting,hello,こんにちは,やあ,やっほー
greeting,bye,さようなら,バイバイ,じゃあね,またね
greeting,morning,おはよう,おはようございます
newyear,hello,あけましておめでとうございます,あけおめ
newyear,meet,よろしく,よろしくお願いします
year,year,今年,年

Importしたらこのようにカテゴリ分けが行われます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-00-37

それではまた前回と同じように会話をしてみましょう。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-04-15

このように、先ほど登録した言葉を認識しています。あとは一気にDialogを作成します。

最終的にはこのようなフローになりました。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-16-31-51

会話を試してみた結果がこちらです。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-27-17-06-45

すべての発話に対して正しい返答ができています。

おわりに

このように簡単にロボットの会話を作成することができます!

今回は導入部分のみの解説にはなりましたが、より高度な扱いをすることが可能です。

次回はConversationとロボットを繋げる方法や、より高度な使い方などについて解説していきたいと思います。