2012年1月29日日曜日

メカウーサー(twitter bot)誕生秘話(1)

秘話というほどではないのですが、メカウーサー自体のいきさつとかを解説したページって、そういえばないなぁ、、、と思ったので、これから2回くらいに分けてメカウーサーの誕生のいきさつと、歴代のバージョンについての簡単な技術解説をしたいと思います。

第1回目はメカウーサー誕生のいきさつです。

皆さんは多分メカウーサーを知っていると思いますので、「うーさーのその日暮らし   http://www.saturn.dti.ne.jp/~wooser/」というサイトはもうご存知だと思いますが、自分はかつて(そして今でも)そのサイトのにわかファンでしてw このサイト、宵越しのログは持たない方針でログが無いので自分で毎回ちまちまと更新ごとにフォルダに保存、フォルダに保存、しておりました。

そんなある日(恐らく2007年の12月頃)うーさーさんがサイトで

 「誰かこの子に暖かい毛布とボットを」

的な発言をされて、ボット欲しいとおっしゃっていたのを目にして、

 「じゃぁ2週間くらいでサクっと作ってみよう」

と自分のところにあるログをかき集めて文章の生成系を作成したのが1月から2月
くらいでしょうか。それが初代のメカウーサーになります。
ただ、その時は軽い遊びのノリでそのまま公開しちゃえばいいやと思っていました。

うーさーさんから大変興味深いとのメールを頂きました。
ただ、まだimproveできる余地があるとのことで、3月の始めの公開まで次の改善を行いました。具体的にはkimrinがプログラムを変えて生成ログをうーさーさんにお渡しし、うーさーさんが改善点を指摘する、kimrinが直すというスタイルでした。

 ・コーパス(言語資料)はうーさーさんが新たに書き下ろす(!)
 ・読点のバランスや文の長さについて見直す(主にうーさーさんの観点から)
 ・文章生成系を改良する(kimrin)

その結果、晴れて2008年3月3日に最初のツイートをすることができました!
(実際には3月2日の18時から3時間ごとに更新を掛けるように設定しました)

実はこの時ライバルとして目指していたのは今はR.I.P.されているkyoujinさんでした。
更新頻度などはうーさーさんと相談して、3時間ごとに、とこの時決めました。

結果としてうーさーさんには多大なるコーパス書き直し作業が発生しました。
作者としては嬉しい反面心配する毎日でした。
最終的には追加したtwitterログなど含め、約1MBのテキストコーパスが完成しました。
これが現在のメカウーサーを支えるメカウーサーコーパスとなります。
(うーさーさん、多謝です!)

開発はWindows上でPythonを使って行いました。
MeCabを使い形態素解析をして言語統計情報を作る部分を作成して、
そこから得られる情報を基に3時間に一回ツイートをする部分を作成しました。
ただWindows上で定期ジョブの管理をするのがやや難しいなどの点から、
その後はMac Mini上で運用するようになりました。


多分メカウーサーを知っている方は「うーさーさんがログをぽーんと渡して、kimrinさんがエンジン繋げただけで出来あがったのでは」とお思いになるかもしれませんが、
実際はうーさーさんとkimrinの共同作業がそれなりの量あったことを忘れないでいただけたらと思います。

その後もメカウーサーは改良を続け、現在ではCS5というバージョンを運用しています。
次回はその文章生成エンジンについて、簡単にお話したいと思います(文責:kimrin)。



2012年1月22日日曜日

WCSC22 (第22回世界コンピュータ将棋選手権)

先ほどコンピュータ将棋選手権の出場手続きを取りました。あ、月曜日に郵便局いってきます。

今年は並列(GPGPU)のメカウーサー将棋を出場させたいと思っています。できればボナンザさんのfv.binも使えればと思っています。
目標はYBWCをGPGPU上で動かすこと、並列な可能手生成と評価関数の計算を行うこと、です。

進捗は芳しくなく、まだまだ先は長いですが、ゆっくりと歩を進めていきたいと思います。

Hello, Mechawooser

twitterのアカウントに書くのも良いのですが、長々してしまうとやっぱりちょっと、ということでブログを開設してみました。主にメカウーサー将棋(GPGPUで動作する将棋プログラム)とtwitter botである我らがメカウーサー(http://twitter.com/mechawooser)について中心に書いて行こうと思います。

まだbloggerの使い方がよく分かりませんが、よろしくお願い致します。