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

コーパスの設定

2018/03/21

コーパスの収集

チャットボットでキーになるのは高品質で大量のログを入手することです。 いくらシステムが優れていても、不適切な発言が飛び交うログからは暴言を吐くチャットボットしか作れないのです。 従って、最終的には皆さんが作るチャットボットにはそれぞれの用途に合わせたログを用意する必要があります。 その一方で、システムがどのように働くか、具体的にどんな内容のログがどれくらい必要かは実際にチャットボットと会話してみないと イメージが湧きません。

そこで、テスト用としてまずフリーの会話ログ素材を利用しましょう。言語を扱う分野では、 ログのことをコーパスと呼びます。フリー 会話 コーパス等で検索して、 手ごろなコーパスをダウンロードしましょう。今回は名大会話コーパスを使います。

次にシステム用にコーパスの体裁を整えます。ダウンロードしたファイルを確認してみると、

@データ03(43分)
@収集年月日:2001年10月23日
@場所:車中(某大から所属大学への帰り道。運転者F033)
@参加者F033:女性20代後半、愛知県岩倉市出身、同市在住
@参加者F056:女性20代前半、愛知県岡崎市出身、同市在住
@参加者の関係:大学院の同級生
F033:倒れちゃう。
F056:いきなり倒れた。
F033:どうしよう。あっ、この間に。
F056:あ、大丈夫、大丈夫。
<間>
F033:暑い。
暑かったらこれ調節して。
F056:うん。ありがと。大丈夫。
こっからどれぐらい?
F033:こっからー、え、40分で着けると思うけど。
F056:あ、ほんと。(うん)
そうなんだ。
F033:着けんかったら、(あ)やばい。

このように注釈行の先頭記号が@だったり、複数行にわたる行が混在していたりと、そのままでは扱いづらい様子です。 しかもコーパスは軽く数千行あったりするので、すべてを手作業で編集するのは大変です。 ここは小さい変換プログラムを作って乗り切りましょう。目標は下のような状態です。

ソースコードの中にコンバート用のスクリプトを用意しました。展開したコーパスをchatbot/ ディレクトリに置きます。例えば対象のファイルがdata004.txtの場合、以下のコマンドを実行してください。

cd chatbot
./nucc_conv.py data004.txt
data004.txt.tsvというファイルが生成されます。次に同じディレクトリにあるchatbot.yaml を編集し、corpus_pathの値を今生成したファイルの名前にしてください。
# chatbot.yaml
name : chatbot0
corpus_path : chatbot/data004.txt.tsv
元のディレクトリに戻り、ローカルでecho.pyを実行してください。それによりキャッシュが更新されます。 google couldの本番環境ではキャッシュの更新は動作しませんので、必ず一度はローカルで起動してからデプロイしてください。
cd ..
export PYTHONPATH=/home/ユーザ名/corpusenactor.echo-0.1.0/lib
python corpusenactor/echo.py

辞書を変えてみて、チャットボットの返答がどのように変わるかを観察してください。複数のコーパスをまとめて一つにすることも可能です。 単にファイルを連結すれば、それは連続したログと見なされます。

cat data004.txt.tsv data006.txt.tsv > nucc.tsv

HOME ◀ 1 PREV NEXT 3 ▶

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