「人工知能」タグアーカイブ

ターゲット

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

はじめに

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

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

今回はロボットの会話を作成する際に使っている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とロボットを繋げる方法や、より高度な使い方などについて解説していきたいと思います。

 


会話を期待されながら残念ながらいまいち会話が噛み合わない Pepper、問題の一つは音声認識にあります。スマートフォンに話しかけたりするのとは違ってマイクと話者との距離があったり、小さい頭の中に CPU やらそれを冷却するファンやらが集積されている中に埋め込まれたマイクは、構造上ノイズを拾いやすかったりと、音声認識の精度を上げることに一定の技術的、環境的ハードルがありました。 また Pepper が標準でアプリデベロッパーに提供する音声認識はあらかじめ登録したキーワードに対して聞いた言葉をマッチングさせる、キーワードベースの音声認識であり、登録したキーワード以外のことを発話されると会話はとかく破綻してしまいがちでした。 Pepper の兄貴分にあたる NAO も状況は同じで、Pepper よりさらに小さな頭にいろんなものが集積されている分、問題はより深刻でした。

どうにか NAO にもっと会話をさせたい。試行錯誤をしてきた中でかなりいい感じになってきたものがありこの場で紹介させてください。

どうですか? 音声認識の機能自体は私たちが開発したわけではなく、クラウドの音声認識を使っているのですが、ここへの音声の送信をライブで行っているところに工夫があります。 レスポンスも申し分なく、ノイズ耐性もかなり良いです。

現在この技術をサービス化してより多くの人に使ってもらえるよう開発中です!

近年の機械学習の進化により音声認識の分野は急速に精度が上がってきているようです。ロボットとの会話を考えたとき次に待っているのは、聞いたことに対してロボットがどう答えるか。 この分野はまだまだ未成熟で、これからかなという感じです。 
まずは色々なボットにつなげてみたり、AIや会話エンジンといっているものにつなげてみたい。 私たちもこれらの技術を持っているベンダーさんを探していますが、自薦、他薦、オススメありましたら情報をいただければと思います!

かつて HTMLというコンテンツ配信技術が生まれ、Web製作という職業が生まれたように、音声認識、音声合成の技術が成熟し、会話エンジンの仕組みがある程度整理されると、ロボットに会話を覚えさせる「ロボット会話職人」のような職業が生まれてくるのかな、そんな妄想をしてしまう今日この頃です。