見出し画像

チャットボットと人工無能とELIZA

「チャットボット」って、数年前からよく聞くようになりましたよね。

実際、Webサイトの右下とか左下とかに「何かお困りごとはありませんか?」みたいな吹き出しをよく見かけます。時々、急に画面の真ん中に出てくる主張が強いやつとかもいて、面白いなぁ(?)と思います。

ただ、チャットボットって
「なんかAI入ってて、継続的に学習もして、すごいらしい」
ぐらいの認識で、どんな仕組みで動いているのかをほぼ知りませんでした。

そんな中、最近チャットボットや自然言語処理の勉強を始めたので、学んだことの整理も含めて簡単に解説してみたいと思います。

対話における返答の2ステップ

チャットボットの仕組みを考えるため、対話において、特に「返答」する際に、どんなことが起こっているのかを見てみます。

例えば、こんなやりとりがあったとします。

チャットボットとのやりとり(例)

右側のチャットボットは、「Mリーグ」が何かはわからないけれど、「白熱」という単語から「楽しそう」と理解した上で「なんだか楽しそうですね」と返答しています。また、わからなかった単語については、「Mリーグとは何でしょうか?」と質問しています。
(ちなみに、Mリーグとは、競技麻雀のチーム対抗戦のプロリーグです。昨日は今シーズン最終戦で目が離せませんでした。蛇足も蛇足ですね。)

ここで、「返答」の過程は、以下のように2ステップに分解できます。(図の青色の部分です)

対話における返答の2ステップ

ステップ①:何を言っているんだ?
まずは、相手の発言を理解する必要があります。

この例だと、「白熱」から、楽しかった出来事を話しているだろう、と理解できます。一方で、「Mリーグ」は知らない単語だが、何か楽しいものと理解できます。

ステップ②:何て返答しよう?
続いて、対話を続けるために、返答内容を考える必要があります。

この例だと、相手の発言を受け止めたことを示すため「なんだか楽しそうですね」と返しています。その上で、「Mリーグ」の話が続く可能性があるので、それが何なのかを確認しようと「Mリーグとは何でしょうか?」と聞いている訳です。

人工無能

続いて、本記事のタイトルにもある「人工無能」について、先ほどの返答の2ステップと照らし合わせて見てみようと思います。

「人工無能」という名前に「会話」の要素はないですが、基本的に、会話プログラムを指して使われる言葉のようです。
※ 本記事では、対話と会話は特に区別せず使用しています。

「人工知能」のように高度な処理をしている訳ではなく、あくまで人間が決めたプログラム通りに動作する(会話する)、ということで人工知能に対比して、「人工無能」と呼ばれていたそうです。

ELIZA

1966年に、ジョセフ・ワイゼンバウムが発表した会話プログラムです。
人工無能の草分け的存在です。

ELIZA(イライザ)は、クライアント中心療法のセラピストという設定で、ユーザの悩みを、共感を示しながら聞いていきます。

例えば、こんな感じのやりとりです。

ユーザ「彼氏が、私はいつも落ち込んでるって言うんです」
ELIZA「あなたは落ち込んでいるんですね、それは残念です」
ユーザ「そうなんです。元気が出ないんです」
ELIZA「ここに来ることが、元気になる助けになると思いますか?」

このように、ユーザが入力した文章の一部分を抽出して、ユーザに発言を促すような返答文を作り出します。

具体的には、
(A) 入力を特徴づけるキーワードを見つける
(B) 入力から、返答のための文構造パターンを見つける
(C) ユーザの入力を適切に変形し、返答文を作成する
というステップで、返答文を作ります。

例えば、「彼氏が、私はいつも落ち込んでるって言うんです」で言えば、
(A) 「落ち込んでる」というキーワードを見つけ、
(B) 「落ち込んでる」のが「私」という文構造を見つけ、
(C) 「私」を「あなた」に変換し、テンプレート文にはめ込むことで、
「あなたは落ち込んでいるんですね、それは残念です」と返答します。

仕組みは比較的シンプルですが、キーワードやテンプレートの種類が豊富であったため、場合によっては本当に人間のセラピストと会話をしていると錯覚するユーザもいたそうです。

ここで、先の返答の2ステップと照らし合わせると、(A)と(B)はステップ①の「相手の発言の理解」、(C)はステップ②の「返答内容の検討」、と言えるかと思います。
つまり、ステップ①②ともに、プログラムによって記述されており、いわば、人が事前に決めたルール(マニュアル)に従って相手の発言に返答をしている、というのが「人工無能」になります。

チャットボット

ここから本題の「チャットボット」に入っていきます。

チャットボットって何?

「チャットボット」はその名前が「chat(話をする)」「bot(ロボット)」であるように、「会話プログラム」ぐらいの意味のようです。

人工無能も「会話プログラム」であり、その中の「あまり高度なことをしていない会話プログラム」を、ややネガティブな意味合いを込めて呼ぶ場合の名前であるということを考えると、実は、人工無能もチャットボットの一つということになります。

チャットボットは、会話プログラム。

これだけだと何の説明にもなっていないと思いますので、"いわゆる"「チャットボット」が何なのか、もう少し深堀りしていきます。

人手でルールを作るのは大変

対話における返答は2ステップ「相手の発言の理解」「返答内容の検討」からなり、そして、「人工無能」は、これら2ステップを人が事前に決めたルールに従って実施する会話プログラムである、とお伝えしました。

ところで、「事前に決めたルール」と簡単に書いていますが、実は、ルールの作成はとても大変な作業なのです。

例えば、「質問したい」という趣旨の発言を考えると

「質問があります」
「お聞きしたいことがございます」
「ちょっとお伺いしたいのですが」
「わからないことがあります」

のように、様々な表現があります。

これに対して、ある文章が「質問したい」という意味の文章かどうかを判定するルールを考えてみます。
例えば、『文章内に、「質問」「聞き」「伺い」のいずれかが入っていて、「(し)たい」が入っている場合は、「質問したい」と判定する』というルールはどうでしょうか。
これは、上に挙げた4つの例のうち、2番目3番目しか該当しないですし、「聞きたいことはありません」という逆の意味の文も該当してしまうので、ルールとしては適しません。
つまり、より複雑なルールが必要な訳ですが、こう考えていくと、ルールがどんどん複雑化していきそうなことがわかるかと思います。

「質問したい」という趣旨の文を理解するだけでもこれだけ大変なのに、それが2つ3つと増えていったら途方に暮れてしまいそう…ですよね。

機械学習(AI)の活用

ここで、「機械学習(AI)」の出番です。

「機械学習」は、複数のサンプルデータに基づいて、システムの挙動を自動的に決定する技術です。つまり、機械学習を用いることで、上記のようなルールを人が頑張って作る必要がなくなる、ということです。

先ほどの例で説明すると、上に挙げた4つの文章(「質問があります」等)を、『これは「質問したい」という意味なんだよ』とシステムに教えてあげます。
すると、「質問があります」はもちろんのこと、「質問があるのですが」「質問あり」といった文章も、同じように「質問したい」と判定(理解)できる機能が自動的に作成される、という訳です。

実際には、サンプル(ここでいう4つの文章)が多ければ多いほど判定の精度は上がっていくのですが、近年の機械学習の発展に伴い、少ないサンプルでもそれなりの実用性が得られるようになってきました。

チャットボットの3分類

前節の内容をまとめると、相手の発言の理解、すなわち「返答の2ステップ」のうちステップ①、に対して機械学習を利用するという話でした。

とすると、ステップ②にも機械学習が使えるのでは?という考えが浮かびますが、実際にそうしたチャットボットはあります。例えば、元女子高生AIとして知られる「りんな」は、これにあたります。
ここでは割愛しますが(というか、私もあまり理解できていないのですが…汗)、この技術はまだ実用レベルには達しているとは言えず、研究段階のフェーズになっています。

ということで、チャットボットは、以下のように3つに分類できます。

チャットボットの3分類

"いわゆる"「チャットボット」

とうとう本記事のメイントピック『"いわゆる"「チャットボット」とは何なのか?』です。

すでにお分かりの方も多いかと思いますが、答えは、先の表の2段目『「相手の発言の理解」に機械学習を活用したチャットボット』です。

従来「相手の発言の理解」は複雑なルールを書く必要があり、製品やサービスとするには高コストでした。
それに対して、近年の機械学習の発展に伴い、この部分を機械学習で置き換えて、低コストかつ高精度にこの機能を実現できるようになりました。
その結果、製品やサービスとしても実用レベルとなり、様々な企業から製品・サービスが出てきたという訳です。

なお、「返答内容の検討」は依然としてルールベースな訳ですが、ECサイトやサービスのFAQといった限定的な領域においては、対話シナリオは然程種類がなく、ルールベースでも十分実用的なため、製品・サービスとして十分機能するということです。

まとめ

「簡単に解説」とか書いておきながら、長々とした説明となりすみませんでした。まとめます。

結論1:「チャットボット」は「会話プログラム」ぐらいの意味

「chat(話をする)」「bot(ロボット)」という名前の通り、「会話プログラム」の意味の広い言葉です。「人工無能」も「チャットボット」の一種です。

結論2:「チャットボット」は大きく3つに分類できる

返答の2ステップの構成技術(ルール or 機械学習)によって、大きく3つに分類できます。従来ルールで作っていた部分が、機械学習に置き換わっていっています。

(再掲)チャットボットの3分類

結論3:AIで発言の理解をするのが、"いわゆる"「チャットボット」

3分類の2段目、ステップ①「相手の発言の理解」に機械学習を活用しているチャットボットが、ここ数年、製品やサービスが多数出てきて話題にもなっている、"いわゆる"「チャットボット」です。

以上です。最後までお読みいただきありがとうございました。
もし不適切な記述などありましたら、ご指摘いただけますと幸いです。

おまけ

人工無能として説明したELIZA、こちら↓のサイト話せます。
ただし、英語で、ですが…。(日本語を話すELIZAも探したのですが、現在試せるものは無さそうでした)


参考文献


この記事が気に入ったらサポートをしてみませんか?