nounai.output(spaghetiThinking);

趣味と実益を兼ねて将棋プログラム(研究ツールなど)を作ってみたいと思う私の試行錯誤とか勉強したことを綴ってゆく予定です。 主目的はプログラミングの経験値稼ぎですが、コンピュータ将棋の製作も目指してみたいとも考えています。

棋譜の収集とかフォーマットについて

棋譜を学習するにもまずは棋譜データ、あとそれを読み込むためのプログラムがないと始まらない。

棋譜の対象としては

  • 棋譜でーたべーす
  • floodgate
  • 手元のボナンザに指させて地道に収集
  • 自分が対戦して保管してる棋譜(およそ180局)

手元のボナンザを使って棋譜を作るのは自動化できるならアリかもしれないけど、あいにくそういう方法は知らないし、自分の対局はサンプルが少ないし棋力的にもちょっと・・・なので、上2つが(当然ながら)本線。

棋譜でーたべーすのアーカイブとかあればいいけど、なさげ。また利用規約的な話もちゃんとチェックしてないので使用できるかどうかはまだ怪しい。可能だったとしても自分でダウンロードスクリプトかなんかを書かなきゃならないのが(そう難しくないとはいえ)めんどくさい。書くとしたらお手軽そうなのはPython + urllib2 + BeautifulSoupでしょうか。電王戦にインスパイアされた!コンピュータ将棋作りたい!でも棋譜収集めんどくさい!って人は結構いるだろうだし、コード書けば一定の需要はありそう。また向こうのサーバに負荷かけないように適当にインターバル掛けたり、とかはしとくべき。まぁ、floodgateの棋譜が使えればそれで十分でしょうけどね。

棋譜フォーマットまわりについてはGPSのソースをあたればいいかな?と思ってましたが、C++の書き方(templeteとか)イマイチ知らない+ファイル多すぎて迷子+ソース見ること自体不慣れ、ってことで萎えそうです。Bonanzaにその辺のコードがあるのならそっちをあたりたい。(機械学習を諦めれば済むけど、)思考に関係ない部分はできれば手出ししたくないなぁ。