棋譜を連続解析して指定手数進んだ局面での評価値を返すスクリプト

ウォーズや24で大量に指した将棋から序中盤の段階で既に悪くなっている棋譜を探し、課題を見つけようというのは時折試みられているアプローチであるように思われるが、ひとつひとつ見返すのは意外と面倒である。そこで、フォルダ内の棋譜を連続解析して「X手目の局面での評価値」を出力するvbsスクリプトを書いた。例えばXを40に指定すれば解析した棋譜の中から40手目の時点で評価値の悪い棋譜を発見できる。なお、コードはComputer Shogi Uploaderに上がっている「USI将棋エンジン一致率計算プログラム usi.vbs Ver.1.2」を一部改変したものになっている。

使い方

①解析したい棋譜たちをダウンロードするなり何なりして一つのフォルダに入れる。

参考:将棋ウォーズ棋譜ダウンローダー

②将棋エンジンの実行ファイルがあるディレクトリに以下のコードをScoreCp.vbsとして保存する

gisteb725606a1049d7ba36da008fe55228e

コマンドプロンプトで②のディレクトリに入る

④ウォーズや24からダウンロードした棋譜ファイルは対局者名に自動的にidが記載されるため、自分のidを指定すればそちら側から見た評価値を表示させることができる。X手目まで指したときの評価値を表示させるには

cscript ScoreCp.vbs エンジンファイル名 {棋譜フォルダ名|棋譜ファイル名} スレッド数 検討時間[秒] X 自分の名前

を実行する。例えばアカウント名itsの棋譜をC:/Users/username/Downloads/itsに保存し、gikou.exe(4スレッド思考時間1分)で40手目における評価値を表示させるには

cscript ScoreCp.vbs gikou.exe C:/Users/username/Downloads/its 4 60 40 its

とする。 対局者名を指定せず評価値を表示させることもできる。

cscript ScoreCp.vbs エンジンファイル名 {棋譜フォルダ名|棋譜ファイル名} スレッド数 検討時間[秒] X

実行結果

出力は以下の図(解析中)のように標準出力される他、同じディレクトリの解析結果.txtというテキストファイルに書き出される。 f:id:I-was-a-Ki:20170708145207p:plain

注意

上に載せているスクリプトは対応エンジンが少ないが、75行目あたりの「思考条件を送る(エンジン別)」の部分をそれっぽく書き換えればいけると思うのでお試しあれ(投げやり)