AIToday
AIコーディングQiita 機械学習掲載日時: 2026年10月30日 13:00

天鳳牌譜をPythonで解析する入門記事

LINEで送る
天鳳牌譜をPythonで解析する入門記事

3つのポイント

  1. 何が起きたか

    Qiitaのチュートリアルが、mjlogファイルを読み込み、局を再生し、各打牌をラベル付き学習サンプルに変換するPythonのみのパーサーを公開。3,000試合で検証済み。

  2. なぜ重要か

    麻雀AIを開発する人は現在、タグの意味や副露コード、和了解析を散在する情報源から寄せ集めており、検証済みパーサーはモデル作業前の準備時間を短縮するとみられている。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

mjlogのタグや副露コードに関する従来の日本語解説の多くがPerlで書かれたり変換ツール前提だったりする中で、生ログから学習サンプルまでを一貫して実行できるPythonの経路が欠けていた。さらに検証の習慣も重視しており、再生関数が各打牌時に手牌の整合性をassertで確認し、3,000試合・30,127局・1,441,017打牌でエラーがなかったと報告している。これらのチェックは正しさの証明ではなくパーサーの誤りを捕まえる手段として位置づけられ、牌種の不一致は手牌整合性を通過し得るため、役IDなどとの照合も併用していると著者は述べる。

ガイドはAI開発者が陥る罠もいくつか挙げている。起家を基準とした座順、明示的なマーカーのないツモ切り(直前に引いた牌を捨てること)は推測が必要、ダブロンは1局につき複数のAGARIエントリを保持する必要、鳴きのある手牌はストリーム上で副露が省略される。XMLには他家の手牌や未来のドラなど隠れた情報が含まれ、モデルに与えると実戦で使えなくなると警告する。著者は検証範囲を2023年の四人打ち・赤五ありの鳳凰卓に限定し、次のステップとしてシャンテンや牌効率の作業を読者に示している。

よくある質問
mjlogとは何か?
天鳳が麻雀の対局記録に使うgzip圧縮されたXML形式で、タグは入れ子ではなくフラットに並び、各局はINITタグで始まる。
パーサーはどのように検証されたか?
再生コードは、捨て牌が手牌にあったこと、鳴いた牌が直前の捨て牌と一致すること、副露牌が手牌から取り除けることをassertで確認する。3,000試合・1,441,017打牌でエラーは発生しなかった。
パーサーが対応していない範囲は?
検証は鳳凰卓の2023年の四人打ち・赤五ありの対局に限られており、他の年、三人打ち、赤なしルールは未検証。シャッフルも再現していない。
Qiita 機械学習元記事を読む
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

このようなAIの動きを、御社の業界・競合に合わせて毎日届ける法人プランもあります → 詳しく見る

関連記事

次の記事へGeminiのチャット内で文書や表計算を直接編集可能に