費用0円で、チャットボットを作る方法をご紹介します。
別の記事でもチャットボットの作成方法を紹介していますが、こちらの記事はより実践的で、無料でWebサービスを構築する方法になります。
今回ご紹介する方法は、費用は一切かかりませんが、いくつかIT技術を使います。
出来上がった試作版のサイトはこちら。
試作版なので、応答パターンはそれほど用意していないです。すいません。。
応答のプログラム方法・考え方はこちらを参照下さい。
はじめに
この記事で想定している読者の方
自力でチャットボットを作ることを想定していますので、「チャットボットをできるだけ安く購入したい」と考えている利用者の方向けの記事ではありません。
チャットボットを開発してみたいエンジニアの方、Pythonについてもっと勉強したい方が想定読者になります。
使っているIT技術
chatux(Javascript)
チャット画面は、riversun様が開発したchatuxを使いました。
紹介URLはこちら。
プログラムはgithubで公開されています。こちらです。
Django(Python)
WebアプリケーションフレームワークとしてDjangoを使いました。
chatterbot(Python)
チャットエンジンは、gunthercox様が開発したchatterbotを使いました。
紹介URLはこちら。
前処理やコーパス(自然言語処理の辞書みたいなもの。これを元に回答を作る)の組み込みなどが簡単にできるので、それほどプログラミングが得意でなくても使うことができます。詳しくは後ほど説明します。
プログラムはgithubで公開されています。こちらです。
Pythonanywhere(クラウドサービス)
クラウドサービスは、お試しの無料版コースが結構あります。そのうち、クレジットカードなし、登録のみで利用できるのは、私の確認できた範囲ではHerokuとPythonanywhereの2つ。今回は、PythonanywhereのBeginnerプランで構築してみます。 Pythonanywhereサイトは、こちら。
Pythonanywhereは名前の通り、プログラム言語はPython利用が前提となりますが、HTML/Javascript/CSSなども普通に使えます。PythonベースのWebサービスなら一通り構築できるはずです。
Herokuと比べた場合の優位な点として、無料版でもアクセス時のタイムラグがない(=sleepモードがない)ことです(2021年8月時点)。あまりにお得過ぎるサービスなので、そのうちなくなるかもしれませんが。あと、操作がBash console中心なのも特徴的です。Unix/Linux系をやったことがないと、覚えることが多いかもしれません。
作成方法の説明に入る前に、初めに自分なりに色々と作ったり調べたりして思ったことを書きます。
チャットボットの考察
チャットボットの利用者の方がよく感じる不満に「スムーズな受け答えができない」というものがあります。この課題の背景として、人間のコミュニケーションとチャットボットのコミュニケーションを比べた際、“空気が読めない”(=バックグラウンド/状況を理解できない)、“文脈がわからない”(=直前の応答だけから回答を選択)といった特徴があります。
具体的に説明します。
まず、会話というものは、まず、AさんとBさんのバックグラウンド/状況があります。例えば、野球場で野球の試合を観戦して楽しんでいる時に、いきなり仕事の失敗の話なんてしないですよね。こういった明らかに「ここで、こんな話しないよね」という感覚がチャットボットにはありません。
それから、Aさん「〇〇〇」、Bさん「△△△」、Aさん「×××」、Bさん「***」 と会話が続きます。最後のBさんの「***」の発言内容は、その前のAさん、Bさんの「〇〇〇」「△△△」「×××」を受けての発言となります。ところが、一般的なチャットボットは直前の「***」だけを元に応答文を考えます。
もちろん、IT技術は日々、進化し続けていますので、いつか上記課題を解決できる優れたチャットボットができるかもしれません。例えば、AIの世界では、RNN(回帰型ニューラルネットワーク)という考え方があります。これは直前の情報だけでなく、その前の情報も入力として出力値を計算するというもの。これを応用すれば、“文脈を理解する”チャットボットが作れるかもしれません。
チャットボットとAIの関係
チャットボットというとAIとセットで説明されるケースも多いのですが、チャットボットは応答の際にAIを直接使っているわけではありません。
AIは事前に学習することで「こう聞かれたら、こう答えよう」というQAを事前に作成します。いわゆる機械学習やディープラーニングにおけるトレーニングと呼ばれるものです。従って、AIのAIたる部分は会話前の事前準備の段階で終わっており、チャットボットはその学習器を使って質問に対する回答を出力します。そういう意味では、チャットボットの回答のアルゴリズムは、入力の文章に対する条件分岐と言っても過言ではありません。
まとめ:理想のチャットボットの基本デザイン
以上の考察から、私が考えるチャットボットの基本デザインは、クローズドクエスチョンを基本としたものです。つまり、選択式ですね。やはり、自由な応答というのはよほど充実したコーパスと、会話の範囲が限定的でないと、なかなか難しいのかな、と思います。
次回から、具体的なチャットボットの作成方法について説明していきたいと思います。