人工無脳は考える
Google Could Platformでチャットボットを動かそう

Echo:はじめのチャットボット

2018/03/15

チャットボットの会話パターンの一つに「会話ログの再現」があります。 その中で最もシンプルなのはチャットボットに過去の会話ログを記憶させておき、 ユーザから受け取った発言と似た行を会話ログから見つけ出してその次の行を返答として返す、 というものです。テキストの中からある文字列と最も似た行を探す計算手法には様々なバリエーションがありますが、 その中でも最もオーソドックスな「TF-IDFコサイン類似度」と呼ばれる尺度を使い、 実際に簡単なチャットボットを作ってどのような会話ができるのか見ていきましょう。

今回のチャットボットは開発の最初のステップという位置づけです。 チャットボットを開発するときは何人ものユーザに実際に会話をしてもらってみて、 どんな会話のニーズがあるのか、 ユーザはチャットボットにどんな反応をするのかを確認しながら進める方が会話の質がより速く向上し、 モチベーションを維持することができます。それには何らかのwebサーバー上でチャットボットが稼働し、 しかも容易にテストや廃棄ができるに越したことはありません。

そこで、このチャットボットは Google Cloud Platform の、Google App Engine (GAE) スタンダード環境でデプロイする設計にしました。言語にはpythonを使用します。 これは機械学習でよく用いられていて、オンラインの情報やパッケージも豊富という利点があります。

それでは詳細を説明する前に、ソースをダウンロードしてテストしてみましょう。

開発環境の準備

python、スマートフォン、ブラウザなどで標準的に使われる漢字コードはutf-8です。 そのためエディタはもちろんutf-8に対応している必要がありますが、エラーメッセージが文字化けしていると 予想以上に厄介なので、ターミナルも含めてutf-8で統一しておくのがベターです。その他ドキュメントの豊富さなどもあり、 Linux系のOSを用意することをお奨めします。Windowsの場合は例えばVirtualBox上でUbuntuを運用するのが便利です。 一例として、パフォーマンス重視のwindows10マシン(Xeon E5-1603v3@2.8GHz)ではVirtualBox上でUbuntuを動作させても軽快です。 一般的なwindows7マシン(Intel Core i5-M450@2.4GHz)ではUbuntuだとややもたつきますので、かわりに軽量なXubuntuをお奨めします。 使い方はUbuntuでもXubuntuでも同じです。

Windows7上で動作する Xubuntu on Virtualbox

Linux環境が整備できたら、ローカルでアプリをテストするため、Google Cloud SDK をインストールしてください。

開発言語はGAEスタンダード環境の場合 python2.7 を使用します。 pythonのディストリビューションの一つであるAnacondaには よく使われるパッケージがバンドルされていてお奨めです。anacondaをインストールしたら、以下のコマンドでGAE用の環境を作製します。

conda create -n gaestd anaconda numpy=1.6 python=2.7
source activate gaestd

コードのダウンロードとローカルテスト

corpusenactor.echo-0.1.0から ソースを入手するか、以下のコマンドでcloneしてください。

  git clone https://github.com/shinichi-kato/corpusenactor.echo-0.1.0

コードを置いたディレクトリに移動し、以下のコマンドを実行します。

  gcloud init

するとアカウントとプロジェクトの選択を求められます。正常に終了したら、まずはローカルでアプリをテストしましょう。

dev_appserver.py .

もし下のようなエラーメッセージ(No module named ~)が表示された場合は、仮想環境が正しく動作していません。

  Traceback (most recent call last):
    File "/usr/bin/dev_appserver.py", line 11, in 
      import bootstrapping.bootstrapping as bootstrapping
    File "/usr/lib/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 9, in 
      import setup
  ModuleNotFoundError: No module named 'setup'

source activate gaestdを実行してください。コマンドラインの先頭に(gaestd)と表示されていればOKです。 正常に動作した場合、このようなメッセージが最後に表示されるはずです。

INFO     2018-03-15 14:08:02,232 dispatcher.py:255] Starting module "default" running at: http://localhost:8080
INFO     2018-03-15 14:08:02,234 admin_server.py:152] Starting admin server at: http://localhost:8000

問題なければブラウザでhttp://localhost:8000にアクセスしてください。管理画面が表示され、 その中のdefaultをクリックすると動作しているアプリを確認できると思います。

問題なければこれをGoogle Cloud Platformにデプロイしましょう。

  gcloud app deploy .
  gcloud app browse

いかがでしょうか。次回はログファイルを用意する方法を説明したいと思います。

HOME NEXT 2 ▶

人工無脳は考える by 加藤真一 2016