見出し画像

天鳳名人戦の牌譜解析の手順

 こちらは天鳳名人戦データサイト。

 そして、こちらが第9期天鳳名人戦のサイト。

 先日、第9期天鳳名人戦の第2節が行われた。
 そこで、昨夜、牌譜解析を行い、そのデータを担当者に送った。


 今回は、「牌譜解析ってどういう手順を踏んでいるの?」という話をしたい。
 なお、具体例として、「爆打VS鳳凰民」の牌譜を利用する。


 私の牌譜解析の方法は次のとおりである。

1、牌譜(mjlog形式)をダウンロードする
2、牌譜をmjscore形式に変換する
3、mjscore形式の牌譜をデータベースにする
4、データベース化された牌譜を用いて牌譜解析を行う
5、得られた牌譜解析結果をエクセルにまとめる


 まず、牌譜解析をするためには牌譜を持ってこなければならない。
 つまり、牌譜をダウンロードする必要がある。

 この点、天鳳名人戦の牌譜は上記天鳳名人戦のURL( http://tenhou.net/cs/2019/08tm/ )にて公開されており、誰でも閲覧することができる。
 ということは、ダウンロードすることも可能である。

 そこで、ダウンロードプログラムを作成し、牌譜をダウンロードするのである。
 まあ、このダウンロードプログラム、作ったのは2014年頃であり、それを色々な場面で使いまわしているのだが。


 さて、牌譜をダウンロードする。
 しかし、mjlog形式の牌譜ではその内容をテキストエディタなどで目視することができない。
 そこで、これを可視化する必要がある。
 そこで、私はmjscore形式の牌譜に変換している。

 その際に、私が使っているのは天鳳が公開している「牌譜解析スクリプト」である。

画像1

 このスクリプトの右上にある「書式変換」という機能を使って、mjlog形式の牌譜をmjscore形式に変換し、さらに1個のテキストファイルにまとめる。
 まとまったmjscore形式のファイルはこんな感じである(以下は、「爆打VS鳳凰民」の牌譜)。

 牌譜の書式のルールを把握すれば人間でも牌譜を読み取ることができる。
 もっとも、この機能は天鳳が提供しているものなので、天鳳がこの機能の提供を辞めたら私は牌譜の更新ができなくなり、それはそれで困ったことが起こるのだが。

 さて、mjscore形式にすれば牌譜を読み取ることができるわけだが、ここから直接解析するとなると大変である。
 そこで、私は1局の情報を1行で表示するデータベースを作成することにした。
 具体的にはこんな感じである。

 こうすると1行のデータに1局のデータが完結しており、プログラムを走らせるうえで都合がよい。
 まあ、このデータベースの原型を作ったのは2014年のころ、なので、結構重複とかあるんだが。


 データベースができた後は、牌譜解析である。
 これはプログラムを作り、各プレーヤーの和了率などを求める。
 もちろん、その結果はcsvファイルに出力する。
 具体的にはこんな感じである。

 牌譜解析結果のcsvファイルを作ってしまえば、あと一歩である。
 そのデータを編集すればよい。


 以上の手続きを踏むことで、データは作られる。
 ちなみに、この方法は通常の鳳凰卓の牌譜解析結果でも同じである。
 ただ、所用時間が長くなるだけで。

 なお、具体的な方法が知りたい場合は、連絡していただければ、と思う。
 教えられる範囲のことは教えたいと思っているので。


 では、今回はこの辺で。

もし気が向いたら、サポートしていただければありがたいです。 なお、サポートしていただいた分は、麻雀研究費用に充てさせていただきます。