Edited at

【Botブームに乗り遅れた人たち用】Chat Bot(チャットボット)についてまとめてみたよ。

More than 1 year has passed since last update.


0. これはなんですか?

Chat Bot界隈に乗り遅れた私のような人達のためのまとめ記事です。

主にLINE Chat BOTに焦点を当てて説明。このページと参考文献のURLだけで、

Botの背景、仕組み、アルゴリズムの全てを把握できるように心がけてます。(足りなかったらサーセン)


1.はじめに


そもそもボットって何?

「ロボット」の略称で、人間がコンピュータを操作して行っていた処理を、人間に代わって自動的に実行するプログラムのこと。検索エンジンなどが利用するボットは「検索ロボット」「クローラ」などとも呼ばれる。


対話型ボット(チャットボット)の始まりについて

初期の対話型ボットで有名なのは「ELIZA(イライザ)」(1966)。

GNU_Emacs_ELIZA_example.png

「DOCTOR」という来談者診断会話シミュレーションが有名。

Emacsにはじめからdoctorは入っていますので、すぐに試して見ることが出来ます!

http://minus9d.hatenablog.com/entry/2016/03/14/224830

ただし、この時期の人工無脳はいわゆるパターンマッチング(if-then-elseをひたすら連ねたもの)を基本としたルールベース(rule-based)が基本である。そのため、基本的には単語のオウム返しを喰らいます。


  • おまけ

    iPhoneのSiriとELIZAは仲良しので、Siriに「面白い話」って聞くと、すごい皮肉(?)なお話が聞けたりました。


チャットボットの仕組み

ここ見るとよく分かる。

http://www.slideshare.net/tak9029/tensorflowai


1. if-then-else型

基本的に昔は、ELIZA同様なパターンマッチングを用いたものが多かった。

概念は基本Twitter Botと同じで、「〇〇」という言葉が入っていたら、「✕✕」という返事を返す。

ワトソン君のdialogのシナリオを使ったパターンマッチング型AI(てか、ただのif文)

2. 会話ログデータベースを使用した方法

言語処理的概念を追加。考え方は検索エンジンの元と同じ。予めデータベース内に返信パターンを用意する。

検索クエリ(Inputの文章)に対して、一番類似度が高い文返信文をデータベースから見つけ出し、結果を返す。

データベースに圧倒的な文章量を入れればそれっぽい精度になる。ビジネスではよくこのタイプを見る。

パン田一郎君もこれ。

3. 生成モデル型

先ほどの2つは予めこちらで返信文章をデータベースとかに用意する必要があったが、

生成モデルではそもそもの返信文章を確率的に計算し、Inputの文章に対応する相応しい返信文章を

自動生成する。簡単なアルゴリズムとしてマルコフ連鎖があり、

tehutehu連鎖( http://vps1.liverty.biz/hbkr/tefu/3663600 )がその一例。

ただ、マルコフ連鎖は限界があるので、最近はニューラルネットの一種類である

RNN(リカレント・ニューラル・ネットワーク)を用いるのが主流。りんなちゃんはこのタイプのBot。


2.LINEボットAPIについて


BOT API Trial AccountではあなたのサービスとLINEユーザーの 双方向コミュニケーションを可能にするAPI開発をお試しいただけます。(らしい)



2-1. いろんな公式アカウントやボットに触れてみた


  • 公式アカウントとの違いは?
    普通の公式アカウントはメッセージの配信時間を決めて、その時間に勝手にユーザー配信される。
    ユーザーが返信を送っても、アカウントからは返信がこない。
    公式アカウントによっては、ランダムに数十種類のメッセージをランダムにかえしてくれたりもする。

    また、メーセージ受付時間中に返信をすると、番組で使われたりする模様。

スクリーンショット 2016-05-29 21.41.38.png

こんな感じで、メーセージ受付中は送ると、番組コーナーに使用されるようになる模様。

スクリーンショット 2016-05-29 21.41.53.png

普段時は、ランダムに返信が返ってくる。益若つばさのLINEアカウントはエロティックでおすすめです。

スクリーンショット 2016-05-29 21.43.43.png

チャングンソクもなかなかイケてる。


  • 今どんなLINEボットが作られているのか。


  • ももクロなどの画像を返す LINE BOT http://goo.gl/UIeul7

    ももクロメンバーの単語をInputすると、そのももクロメンバーの画像が返ってくる。笑

  •  ディズニーランドのアトラクション待ち時間bot

    http://taro.hatenablog.jp/entry/2016/04/13/083050
    名前のとおり。

まだあまり、ビジネスでしっかり使っている事例はみつからず...。


2-2. ボットの活用例

LINE Bot APIに限らず書いていく。


  • ECサイトでの活用

    検索や購入ができる。

    https://www.youtube.com/watch?v=FWcGWHVP7s8

    洋服ECサイトなどでは自分の持っている服を数枚送信すると、それにあったアクセサリをコーディネートして提案したり、位置情報を送信すると近くの自社店舗への案内を送信するボットもある。

    こちらも同様のEC使用例

    https://www.youtube.com/watch?v=g5NWzgiS1CE

    botが以下の順で問を投げてくるので、選択肢をボタンでユーザーが選択する。性別(女性/男性)。大カテゴリ(服/靴/アクセサリ)とか。価格帯(~75/ 75/ 200/$200~)とかをユーザーに聞く。

    複数選択肢を与えて、ユーザーに選ばせるタイプ。


  • 顧客ロイヤリティ調査

    https://www.youtube.com/watch?v=hitYt3ZK2p4

    動画では架空の花屋さんのアンケートをチャットボットを通して調査している一例。


  • その日にあった情報をユーザーに送る。


    ニュースAPIや天気APIを使って、アラートをユーザーに送る。

    http://edition.cnn.com/videos/tech/2016/05/26/cnn-messaging-on-apps.cnn

    動画はCNNニュースのBotの例


  • カスタマーサポートの例

    https://www.youtube.com/watch?v=yZXZyrIY3RU

    航空会社の取り組み。メッセンジャーを使って、飛行機の予約の確認ができたり、遅延情報を取得する。

    人手を返さずにすぐに返信ができる点は、顧客にとっても企業にとっても良い例。


  • 予約購入系

    花屋やんの購入フローの例。シナリオを上手く作りこめば、ユーザーがよりシンプルなオンラインショッピングを実現できる。

    https://www.youtube.com/watch?v=Fy_ne5KdGOI



2-3. りんなとパン田一郎の仕組み。

上のは基本はシナリオをこちらで用意して、それに沿って会話が進むタイプのBotが多かった。

そこで雑談もできる2つのボットの仕組みをもう少し深掘り。


  • パン田一郎

    パン田一郎について、R社が言語処理と機械学習技術を使って開発した画期的なボット。
    バイト探しできたり、天気を聞けたりするのは上で上げた例と同じであるが、
    大きな違いとして雑談(フリートーク)が出来る点がある。仕組み自体はこんな感じらしい。

img_lp_06.png


  1. まずはじめに、ユーザー入力文章をどのAPI・DBに投げるかを機械学習で振り分ける。ナイーブベイズなどの分類器を使えば実現可能かな?天気APIなら、天気の情報をユーザーに届ける。バイトならバイト管理情報のDB(?)に投げる。


  2. 雑談APIに振り分けられた場合。

    予めデータベース内に返信パターンをパン田一郎は1万件以上登録してるので、入力文章に一番適した返答を

    データベース内から引っ張ってきて返す。どれも相応しい解答がデータベース内になかったら、

    「それって何ですか...?分からなくてごめんなさい ...。」

    「別のお話でもよかったら、また話しかけてくだ さいね...。( /ェΘ。) .。・゚・」

    みたいな十数パターンをランダムに返す。


要するに、API・DBが複数あるので、事前にどのAPI・DBに投げるか?および、雑談DBに投げられた場合はどのように処理するか?の2点が加わっただけである。

また、雑談データベースを実装することによって、ユーザーのロイヤリティが向上したと論文上で述べられている。

http://ci.nii.ac.jp/naid/40020291394


  • りんな

    基本はネット上のツイッターやインスタとかのリソースを使用している。(らしい)
    アルゴリズムはword2vecやsequence to sequence を使用。
    アルゴリズムに関しては以前のPFIのインターン成果発表で似たようなことを発表している方がいらっしゃるので、
    これ見ればなんとなくはわかる。

    http://www.ustream.tv/recorded/74391829
    (動画25:00〜)


2-5. そもそもchatbot APIとかってないの?

英語はわりとあるけど、日本語だと有名なのはDocomoの雑談APIとか?

https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_usage_scenario


赤ちゃん風や女子校風もあるので、これとLINE Bot APIでりんなっぽいのはつくれます。

参考URL

http://qiita.com/shiraco/items/58a33b878fa5f1180d75)

ユーザーローカルもリリースしてます。

http://ai.userlocal.jp/

雑談APIに加えて、ネコっぽいキャラクター、犬っぽいキャラクターなどキャラクターっぽい会話APIもある。


3. 感想

Webサービスでの活用に関しては、ユーザー目線で上手くシナリオを作れるかで、ボットが成功するか分かれそう。

フリートークに関しては、データを持っている企業が強いので、Botに個性を持たせて差別化する必要がありそう。

これから各業界でBotが乱立するから、どんなBotが生き残るのかは楽しみですです。


4. 参考文献

ーーーー対話の仕組みーーーー

パン田一郎の対話ロジック

http://atl.recruit-tech.co.jp/blog/2205/

自然言語処理技術による会話を実現した

LINE公式アカウント「パン田一郎」をリリース

http://atl.recruit-tech.co.jp/news/linepanda/

大規模対話システムの一実装と対話ログ傾向分析

ci.nii.ac.jp/naid/40020291394

テックレポート:会話ログを利用したチャットボット生成の試み

https://www.cyberagent.co.jp/techinfo/techreport/report/id=10651

TensorFlowで会話AIを作ってみた。

http://www.slideshare.net/tak9029/tensorflowai

ついに明かされる「りんな」の“脳内” マイクロソフト、「女子高生AI」の自然言語処理アルゴリズムを公開

http://www.itmedia.co.jp/news/articles/1605/27/news110.html

ーーーー活用例ーーーー

Bot APIでチャットボットのビジネス活用のデモを作ってみた

http://buzzoo.jp/social/article/4555

2016年のチャットBot入門・Botの最新事例編

http://news.botandegg.com/archives/335

地域活動でのLINE BOTの活用方法を考えてみた

http://mag.areapp.io/entry/linebot

Facebook F8で発表されたbots on Messengerの事例を見てみる(米EC『SPRING』)

http://qiita.com/Yamotty/items/e15c6cffc036c2aab360

〈事例あり〉チャットBotで激変?企業のマーケティングはどう変わるのか

http://backyard.imjp.co.jp/articles/sakata_bot_201604

【第3回】Botの時代は、新たな戦いの幕開け

http://www.dreamincubator.co.jp/bpj/2016/05/23/column_20160523/

LineBotの事例を21個まとめてご紹介

http://blog.minato.jp.net/entry/linebot