Open Table Of Contents

MiNeRa bot:チャットボット(実用的サンプル)

※これは、チャットの内容を解析し、適当なメッセージを垂れ流すだけのチャットボットです。

Minecraftのチャットを元に動く日本語専用人工無脳botを作成してみました。 作りはかなり手抜きなので、あくまでJavaScriptプラグインの「これぐらいできるんだ」という、本格的なサンプルとして見てください。 動作を確認するためには、Screenプラグイン側に追加してあげてください。

名前は・・・「みねらちゃん」です。 名前の由来は「minecraft」を漢字入力すると「みねcらft」になるので、なんとなく日本語だけ抜き取ったらこうなった。です。

マイクラの世界にログインしている間しか、記憶を維持できないかわいそうな子なので、オウム返ししてくる時は、笑って許してあげてください。 ログインしている間は、発言をどんどん貯めてるので、チャットのメッセージがたくさん流れるほど、バラエティに富んだ発言をするはずです。 特に、最初の頃は、ボキャブラリーゼロから始まるので、面白くありませんが、徐々におかしな発言をしてくると思います。

※発言は、ローカルチャットに表示されるだけで、マルチサーバにログインしていても、自分だけしか見れませんのでご注意ください。(というか、マルチで動作確認してない!)

ただ、貯めれば貯めるほど、メモリを圧迫するので、全体的に重くなったり、動作が不安定になるかもしれません。 改良すべき点はたくさんありますので、誰かプラグインを修正して賢くなるように育ててやってください!(汗)

ダウンロード

このプラグインをダウンロードする場合は、以下のリンクを右クリックして「名前を付けて保存」で保存してください。

minerabot.js

仕組みの話

何を言っているのか わからねーかもしれないが、あ・・・ありのまま みねらちゃんの事を話すぜ!

まず、チャットに入力された日本語を、分かち書きするために、文字列を形態素解析します。 形態素解析することで、品詞を判別し、最小単位の文節に分けることができます。

形態素解析にはMeCabが有名ですが、JavaScriptで行うために、TinySegmenterをそのまま使わせて頂きました。 http://chasen.org/~taku/software/TinySegmenter/ (この部分に関しては、修正BSDライセンスに従う必要があります)

そして、分けた文節から、文章を自動生成するために、マルコフ連鎖を応用し、連続してよく出てくる文章をランダムで繋げて文章を生成します。

JavaScriptでのマルコフ連鎖は、こちらを参考に・・・ http://d.hatena.ne.jp/mohayonao/20090314/1237043303 していたのですが、思ったように動かなかったので、ほぼ書き直しなほど修正しました。(ロジックも独自に実装したので、もう別物な気がする)

ちなみに、プラグインを作った本人も、形態素解析やマルコフ連鎖については、全然わかってません!(なのでこの手の質問には答えられません) 詳しくは、人工無脳とかchatbot、上記のキーワードで検索してみてください。