SlideShare ist ein Scribd-Unternehmen logo
1 von 27
麻雀牌譜解析のすすめ
ほしきゅー(hoshikyu)
(序章)麻雀の背景
麻雀研究の前にわかっておくと牌譜解析をする意義がより理解
できると思います。 牌譜解析そのものに興味がある場合は飛
ばしてしまって構いません。
そもそも麻雀って何? (わからない人向けに簡単に)
 トランプのポーカーみたいに自分の手札で特定の役を
作るゲーム。
 四人でやります。
 一つ持ってきては一つ捨て、それを誰かが役を完成さ
せるまで繰り返します。
 他の人が捨てたものが欲しければもらうことができる!
 その際、その捨てたもので役が完成だった場合、それを
捨てた人は役が完成した人に得点を払わなければいけ
ません。
 もう一つあれば役が完成という時、「リーチ」の宣言がで
きる。宣言すれば得点が上がるメリットがあるが、他の人
に完成が近いとバレてしまうのでデメリットもある。
麻雀の闇の時代
(いわゆるデジタルとアナログの簡単な歴史について)
 実際のところ「リーチ」ってすべきなの?
・今日はついてるからリーチ!
・不調続きだしリーチは控えよう・・
・神は言っている、ここでリーチをすべき定めだと。
 相手にリーチされた!降りるべき?攻めるべき?
・勝ってるからここは降りておこう。
・負けてるし失うものはない、攻めだ!
・どうせ弱いだろう、せめておいて問題はない。
一体何が正しいのか?
そこに現れた希望の光
(麻雀界を変えたデジタルの登場)
 ネット麻雀(東風荘など)の登場に
より、超大量で良質(強い人達の
集まり)な牌譜のデータがとれるよ
うになった。
 (今回は触れませんが)シミュレー
ターの開発により細かい状況のそ
れぞれの選択がどのような運命を
たどるかがわかるようになった。
まぁでも未だにデジタルが苦手勢は多い・・
でもいろんなプレイスタイルがあってこそ面白い
ところもあるよね。
(本章)天鳳牌譜解析
あなたもできる牌譜解析の仕方、教えます。
天鳳
(現在最もプレイヤー数の多い基本無料のオンライン麻雀ゲーム)
 鳳凰卓(最も高レベルな人が
打てる場所)で行われた牌
譜のデータが全て公開され
ている。
 無料の専用ブラウザによって
基本的な牌譜データの処理
が簡単に行える。(シャンテ
ン数、待ち牌を調べるなど)
牌譜のダウンロード
(クソ真面目に自分でやりたい人用。実際に牌譜解析したい人がいれば僕に言ってく
れれば普通にあげるのでこのへんは面倒なので読み飛ばしてください)
 公式サイトの上のメ
ニューの、「ランキング」
>「ログ」 からいけます。
実は結構面倒
 解凍してみると得ら
れるのはgzipファイ
ルで圧縮されたhtm
lファイルで・・
まだまだ続く・・
そのうちひとつを解凍してhtmlを開いてみると、過去の牌譜の観
戦用URLが大量に並べてある。
まだまだ・・
 さっきのは観戦用URLなので、
 牌譜IDをコピーして実際にデータある場所にアクセスする
↓この部分に牌譜ID
「http://tenhou.net/0/log/?2014060122gm-00b9-0000-
81b92751」
(微妙にアドレスが違います)
やっと
すると牌譜のデータが書かれたXMLファイルがダウンロードできた!
最終的に・・
 得られたXMLファイルを専用ブラウザで扱うことができる
ようにするために、それ用の「mjlogファイル」にします。
 mjlogファイルは、XMLファイルをgz圧縮したものです。
 ですから、gz圧縮した後に拡張子をmjlogに変更すれば
よいです。
 でも、gz圧縮しないでそのままmjlogに変更してもぶっ
ちゃけ使える。
 また、解析するためにはファイル名を
[牌譜ID]tw=0.mjlogにする必要があります。(理由は省略)
しかしこれ全部を手動でやろうとすると・・・
 一生終わらないで挫折します
 gzipを解凍する
 htmlの中の牌譜IDを正規表現で読み取る
 XMLのデータにアクセスしてダウンロード
 gzに圧縮してmjlogに変換
これらの動作をプログラムで書いて自動で処理してもらおう。
また、mjlogファイルの保存場所はwindowsなら
マイドキュメントmy Tenhoulogの中にしておきましょう。
Rubyで自動化!
(pythonとかperlでもなんでも)
専用ブラウザ
 公式サイトから無料でダ
ウンロードできます。
 プレイするために使うにも、
右クリックパスなど色々な
機能がついててお得で
す。
 ですがこれの本領は
mjlogファイルの様々な
処理が超簡単にできるこ
とです。(パースとかを勝
手にやってくれる)
専用ブラウザDL
 ここからDLできます。
専用ブラウザの仕組み
(マニュアルとか説明は公式に全然ないので、サンプルコードから自ら試行錯
誤で学んでいくしか無いです・・
 自分で書いたhtmlをこの専用ブラウザで開くことで、実行す
ることができる。実際の処理を書くのはもちろんjs
 htmlの方には解析結果の出力とかのレイアウトを書いてお
けばいい。
 天鳳の卓情報(鳳凰、東南戦など)を判別するための情報
やその他もろもろは公式のtenhou.jsにあるのでそれを読み
込んでおく。http://tenhou.net/1/script/tenhou.js
 その他色々なutilもあるから読み込んでおくと便利
http://tenhou.net/1/script/util.js
 これらを読み込んだあと、実際に解析を行うjsを作って、ht
mlを専用ブラウザで開けばいい。
(http://tenhou.net/1/script/)
解析の基本
 解析するためのおまじない↓
(実際にただ解析したいだけの人はいみわからなくていい)
var we=window.external;
logana=we.mjCommand("CREATEINSTANCE::LOGANA1.0")
;
logana.analyze(window);
window.externalはよくわからないが・・・ loganaっていうインスタン
スを作成して、そのanalyzeメソッドを呼び出すことで解析を始めて
くれる(マイドキュメントの中においた牌譜ファイルを片っ端から全
部解析してくれる)
イベントハンドラ各種(大枠編)
 OnAnalyzeBegin() //一番大枠の初期化処理
これから大量の牌譜ファイルを解析する前に、一度だけ最初に実行される関数。
初期化処理などを書いておける。
 OnEnumLog(loginfo)//解析する牌譜かしない牌譜か選択
それぞれの牌譜ファイルに対して詳しく解析する前に一度実行される関数。例
えば東風戦だけ解析したい場合など。解析したい牌譜だった場合true,そうでな
い牌譜だった場合falseを返すように条件文を書く必要がある。
 OnLogBegin(loginfo,player[4]) //各牌譜の初期化処理
解析したい牌譜をこれから解析する際に、それぞれ牌譜について実行される関
数。
 OnSceneBegin(kyoku,honba,nagare,dice0,dice1,dora[1])
//各局の初期化処理
各局の始まりに実行される関数です。
 OnSceneEnd()//各局の終了時の処理
 OnLogEnd(sc[8]); //各牌譜の終了時の処理
 OnAnalyzeEnd(pf)//一番大枠の終了時の処理
イベントハンドラ(ゲーム中編)
 OnTsumo(who,hai136,tehai)
ツモが発生するたびに実行される(上がりのツモではなく、毎回行わ
れるツモという行為全て)
 OnDahai(who,hai136,tehai)
打牌が行われるたびに実行される。
 OnNaki(who,m,type,kui,hai0,hai1,hai2,hai3)
鳴きが行われるたびに実行される。
 OnReach(who)
リーチが行われるたびに実行される。
 OnAgari(who,fu,tokuten,mangan,yaku[],yakuman[],doraUr
a[],sc[8],paoWho)
上がりが発生した時に実行される。
 OnRyuukyoku(type,sc[8],show[4])
流局が発生したたびに実行される。
実際の検証結果など
とりあえず簡単に、リーチの平均点とノー和了ノー放銃の順位分布
を出してみました。実際にコードを見れば色々わかりやすいと思い
ます。ソースコードはここにあります↓
https://gist.github.com/Restar9/7c2fbfe204f5297d9273
先制リーチの平均点
 リーチの平均点については常に研究されていて、子→約60
00点、親→約8700点であることが知られていますが、追っ
かけリーチを除いた先制リーチの平均点はどうなのか調べて
みました。
 データ元は鳳凰卓2011年~2012年の二年分です。
 (366517牌譜中、先制リーチ2709855回)
結果
子 先制リーチ平均点 5717 → 約5700点
親 先制リーチ平均点 8177 → 約8200点
追っかけも含めた平均点と比べると、子は約300点、親は500点程度
少なくなっています。 ただ大きな影響を及ぼすほどではないみた
いですね。
(agh2.js)
リーチの平均点 考察
 先制か先制じゃないかで点数は少し変わる。
 放銃時の点数だけに絞ると結構変わる(一般的に有名)
 ドラの見えてる枚数などでも変わる
 以上より、色々条件を絞ることで平均点も変わってくるの
で、実戦的にはよくある状況に場合分けをして、それぞ
れの平均点を統計で出してみると使えるかもしれない。
ノー和了ノー放銃の順位分布
 放銃率はかなり成績に影響しやすいと言われてますが、
果たして降りまくって和了もしなかった場合順位分布はど
うなるのでしょうか?
 データ元は同じく鳳凰卓2011年~2012年の二年分で
す。
(reachAve.js)
東南戦
該当牌譜:14468
順位分布:
1位 1回/0.0%
2位 1183回/8.1%
3位 9321回/64.4%
4位 3963回/27.3%
平均順位:3.192位
東南戦
該当牌譜:50543
順位分布:
1位 18回/0.0%
2位 7362回/14.5%
3位 29570回/58.5%
4位 13593回/26.8%
平均順位:3.123位
ノー和了ノー放銃の順位分布 考察
 東南戦でノー和了、テンパイ料だけでトップは取るのは
役満より難しい
 東風戦なら行けるのかと思ったら、実は流し満貫ばっか
りだった(流し満貫は天鳳では流局扱いなため)
 でも東南戦でも一度だけならテンパイ料だけでトップが
とれた奇跡の例もある
 だれでも思いつく通りやっぱ3位率が高い。
 だからといって4位率が25%以下になるわけではない。
 東風戦も東南戦も4位率はほとんど変わらないが、東風
戦のほうが3位の分を2位でとれている割合わずかに多
い。
最後に
(とりあえず今回はここまで)
 このスライドを見てもらえばだいたい牌譜解析はだれで
もできると思いますが、細かい部分をすべて書くのは大
変だったので省略してる部分も多いです。なのでわから
ない部分があれば是非僕に直接聞いてください。(僕も
わからない部分は未だ多いですが)
 それでは楽しい牌譜解析ライフを!

Weitere ähnliche Inhalte

Was ist angesagt?

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライドRyuichi Ueda
 
研究発表のやり方
研究発表のやり方研究発表のやり方
研究発表のやり方Akinori Ito
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイするTakayuki Itoh
 
差分プライバシーによる時系列データの扱い方
差分プライバシーによる時系列データの扱い方差分プライバシーによる時系列データの扱い方
差分プライバシーによる時系列データの扱い方Hiroshi Nakagawa
 
データマイニングの話詰め合わせ
データマイニングの話詰め合わせデータマイニングの話詰め合わせ
データマイニングの話詰め合わせTokoroten Nakayama
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)Takayuki Itoh
 
“機械学習の説明”の信頼性
“機械学習の説明”の信頼性“機械学習の説明”の信頼性
“機械学習の説明”の信頼性Satoshi Hara
 
最近のDQN
最近のDQN最近のDQN
最近のDQNmooopan
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門KnowledgeGraph
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみたKumano Ryo
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究についてMasahiro Suzuki
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?Sho Tanaka
 
20170419PFNオープンハウス インターンと採用 公開用
20170419PFNオープンハウス  インターンと採用 公開用20170419PFNオープンハウス  インターンと採用 公開用
20170419PFNオープンハウス インターンと採用 公開用Preferred Networks
 
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII
 

Was ist angesagt? (20)

第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド第27回ロボティクスシンポジアスライド
第27回ロボティクスシンポジアスライド
 
研究発表のやり方
研究発表のやり方研究発表のやり方
研究発表のやり方
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
差分プライバシーによる時系列データの扱い方
差分プライバシーによる時系列データの扱い方差分プライバシーによる時系列データの扱い方
差分プライバシーによる時系列データの扱い方
 
データマイニングの話詰め合わせ
データマイニングの話詰め合わせデータマイニングの話詰め合わせ
データマイニングの話詰め合わせ
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
RvizPlugin作成入門
RvizPlugin作成入門RvizPlugin作成入門
RvizPlugin作成入門
 
AlphaGoのしくみ
AlphaGoのしくみAlphaGoのしくみ
AlphaGoのしくみ
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
“機械学習の説明”の信頼性
“機械学習の説明”の信頼性“機械学習の説明”の信頼性
“機械学習の説明”の信頼性
 
最近のDQN
最近のDQN最近のDQN
最近のDQN
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
 
BERT入門
BERT入門BERT入門
BERT入門
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
 
20170419PFNオープンハウス インターンと採用 公開用
20170419PFNオープンハウス  インターンと採用 公開用20170419PFNオープンハウス  インターンと採用 公開用
20170419PFNオープンハウス インターンと採用 公開用
 
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
 

麻雀牌譜解析のすすめ byほしきゅー