読者です 読者をやめる 読者になる 読者になる

将棋:一致率一括解析ログ

今回の三浦九段にまつわる一連の騒動を受け、(それなりに out of dateではあるが)プロ棋士の将棋の一致率解析を自分でやってみようと思い立った方のためのメモ。因みに将棋のエンジン自体はすでにインストールされているものとし、ここでは技巧を用いる。

棋譜のダウンロード

今回は以下のリンクから2chkifuのデータをダウンロードした。きちんと確認してはいないが1950年代のものから2000年代初頭のものまで合計約5万局、一部女流のものも含まれているようだ。全て展開すると5~10分ほどかかるので注意。
https://code.google.com/archive/p/zipkifubrowser/downloads

②KI2ファイルをKIFファイルに変換

のちのち使用するスクリプトがKIFファイルの解析用なのでこの作業を行う。以下のリンクからKKC.exeをインストールして実行、変換元と変換先のディレクトリを指定すれば一括変換が可能。
http://www.geocities.jp/shogi_depot/

③一致率解析をするスクリプトを入手

以下のComputer Shogi File Uploaderから「USI将棋エンジン一致率計算プログラム usi.vbs Ver.1.2」をダウンロード。
http://mucho.girly.jp/cgi/shogiup/upload.html

④得たいデータに応じて出力部分を書き換える

今回は試しに下のようなデータ(「先手名前」「後手名前」「平均NPS」「先手狭義一致率」「後手狭義一致率」「手数」)を得たいとする。

先手:羽生善治 後手:谷川浩司 738 52.4 49.2 126
先手:島  朗 後手:三浦弘行 633 69.1 76.4 110
先手:羽生善治 後手:谷川浩司 748 50.8 52.4 126 64
先手:島  朗 後手:三浦弘行 651 70.9 78.2 110 56
先手:羽生善治 後手:谷川浩司 746 52.4 49.2 126 

先程DLしたusi.vbsを適当なテキストエディタで開き、これを出力するように書き換えてみよう。

技巧の追加

このスクリプトはもともとGPSShogi/GPSfish/Bonanzaのみ対応のようなので、70行目付近の「思考条件を送る(エンジン別)」の箇所に以下を追加して技巧を追加する。

If     Instr(LCase(strEngine), "gikou") > 0 Then
        strEngineName = "gikou"
        strPonder = "setoption name USI_Ponder value false"
        strThread = "setoption name Thread value " & intThread

出力部分の書き換え

  • ヘッダーの削除:110行目付近にある「ヘッダー出力」の部分の行頭に「'」を入れてコメントアウトする。

  • 改行しないようにする:元ファイルの283-286,292-295行目にある改行の部分を同様にコメントアウト

  • 元ファイル297行目からの「結果まとめ出力」を次のように書き換える。

'結果まとめ出力
str1 = strName(0)
str2 = strName(1)
If numNPS > 0 Then
    str3 = CLng(sumNPS / (1000 * numNPS))
Else
    str3 = ""
End If
str4 = FormatNumber(100.0 * numMatch(0) / numTesu(0), 1)
str5 = FormatNumber(100.0 * numMatch(1) / numTesu(1), 1)
str6 = numTesu(0) + numTesu(1)
    
WriteLog objLog, str1 & " " & str2 & " " & str3 & " " & str4 & " " & str5 & " " & str6 & vbCRLF

その下のファイル区切り部分もコメントアウトする。

⑤実行

④をgikou.exeが存在するディレクトリに保存し(”usi2.vbs”とした)、コマンドプロンプトでそのディレクトリに移動し以下を実行する。以下は一例で、C:\Users\ユーザー名\Downloads\2chkifu\experimentにあるkifファイルを、思考時間1秒4スレッドで解析する。

C:\Users\ユーザー名\Downloads\gikou_win_20160606\gikou_win_20160606>cscript usi2.vbs gikou.exe C:\Users\ユーザー名\Downloads\2chkifu\experiment 4 1

 

これにより、同じディレクトリに「解析結果.txt」という、④の冒頭に記したようなファイルが生成される。次回はこれを使って遊んでみるとしよう。