チャットボットをディープラーニングで作成
チャットボットをディープラーニングで作成
- アマゾンプライムビデオを見ていたら、涼宮ハルヒの憂鬱が公開されており、懐かしい気持ちで見ていました。私がアニメとSFにハマるきっかけとなった思い出の作品です。
- この作品をみてSFを調べだし、汎用AIに興味を持つに至りました。そして、高校生の身分でチャットボットを作ろうとしたのですが、当時はプログラミングスキルも、確率場に関する知識もはなかったので、あきらめていたのでした。
- 今なら簡単なチャットボットなら組むことができるので組んでみて無念を晴らそうと思います。
背景
- 高校生の時の夢を叶えるべく、DeepLearningによるチャットボットを作る
- GoogleのSeq2Seqではヘルプデスクの文章を学習させることによって、「人間らしい」チャットボットの作成に成功した
- 人間らしいチャットボットとは、問題解決のタスクではなく、自然な応答を返してくれるようになること
環境
- 764unitを3層重ねたLSTM, RNN, DeepLarning
- Windows 10 x64
- GTX 1050
- Anaconda(Python 3.5)
- Chainer latest
- 学習時間は2時間弱でした
- Memory 24GByte
- CPU Corei7
データ・セット
- 本当は女の子と話すシチュを想像していたのですが、男の子と女の子の会話のペアが取れそうになかったので、アニメのシナリオを利用することにしました
- アニメや映画のシナリオではキャラAとキャラBが交互に話すスタイルを取っています。そのため、キャラAとキャラBの対話を一つのデータとして学習させることで、チャットボットを作成します
- このサイトを参考にしたのですが、データ量が少なすぎで、一般的な応答の特徴の獲得までに至っていないようです。膨大なアニメのシナリオレポジトリ、ないでしょうかね。[1]
- テキスト情報に換算して1.4MByte程度しかなかったです。
使用したアニメのタイトル一覧
コードギアス 反逆のルルーシュ
デュラララ!!
東のエデン
エルフェンリート
涼宮ハルヒちゃんの憂鬱 & にょろーん☆ちゅるやさん
けいおん!
らき☆すた
涼宮ハルヒの憂鬱
日常
誰も知らない
まどか☆マギカ
狼と香辛料
侵略!イカ娘
天体戦士サンレッド
東方夢想夏郷
...and more
動作確認
λ python chatbot.py --model cv\latest_anime_640.chainermodel --vocabulary data\anime\vocab .bin
INTPUT なんか違わなイカ!?
OUTPUT あんたはかもでゲソ
ちゃんとイカ娘の文脈になる
λ python chatbot.py --model cv\latest_anime_640.chainermodel --vocabulary data\anime\vocab .bin
INTPUT やあ、長門っち、長門っち!
OUTPUT え? ま、ちょっとな、何考えなの何だよ。まだイカ娘のほうがまだ出るのかもしれない
ハルヒの文脈にならない、データが足らないか
λ python chatbot.py --model cv\latest_anime_640.chainermodel --vocabulary data\anime\vocab .bin
INTPUT 死にます
OUTPUT イカ姉ちゃん、がんばってください
がんばる。
λ python chatbot.py --model cv\latest_anime_640.chainermodel --vocabulary data\anime\vocab .bin
INTPUT 雨降るって言ってました?
OUTPUT ねー! なんてやって……
雨の話題にならないですね。収束率は悪くなかったので、データ量とデータ・セットの特性によるかもしれない。