tiny-jev 日本語判断ベンチマーク・データ集

September 18, 2026 · View on GitHub

調査・取得日: 2026-09-18。対象は設計書の choice / score / noulこのデータ収集成果物は整形・指標実装まで。収集時点でモデルの推論成績は測っていません。 後続のローカル追加学習・実モデル評価は ../training/README.md に分離して記録しています。

今回用意したもの

  • 26件のデータセット/評価基盤カタログ。取得済み・次候補・利用条件により保留を明示。
  • 17ファイル、72,627行の正規化JSONL.gz。日本語32,031行、英語40,596行。
    • 翻訳の対照、同じ文章の別タスク、派生例を含む延べ件数。独立した72,627判断例ではない。
    • 圧縮済みデータは約4 MB。再取得用キャッシュ約95 MBはGit対象外。
  • 英日対訳3,505組。既存WANLI翻訳版を原典のID・英語本文・goldまで照合し、同じIDの英語対照を別ファイルに保存。
  • 今回新しく日本語化した60組。ラベルごとに20件を固定抽出。原文・翻訳・変更注記を保存。
    • 全件がLLM翻訳の未レビュー草案。人が検証したgoldとは呼ばず、既定の評価から除外。
  • 公開成績1,124件をCSV/JSONLに保存。Nejumi 59モデル、Swallow 68モデル、JGLUE 9モデル。
    • これは「モデル×指標」の件数。同じモデルが複数表に登場する。
  • 指標定義、データ変換・出典検証・API入力の作成・オフライン採点・日英比較のコードとテスト。

入口

ファイル内容
RESEARCH.md調査結果、優先順位、目的との適合性、公開成績の読み方
catalog.json全26件の機械可読カタログ・ライセンス・保留理由
manifest.json実際の行数・クラス分布・グループ数・ファイルSHA・重複監査
sources.lock.json原典URL・コミット/版・取得日時・SHA-256
verification.json実施したテスト・再生成・ZIPスキーマ検査と未検証範囲
METRICS.md / metrics.json比較方法・指標の分母・実装済み/未実装
TRANSLATION.md日英整合性の扱い、今回の翻訳、今後のレビュー工程
THIRD_PARTY_NOTICES.md帰属表示・継承条件・配布しなかったデータ
references/published_scores.csv出典位置・測定条件・比較区分付きの公開成績
sources/原典のREADME・ライセンス・公開結果表の保存コピー

取得済みセット

benchmarks/data/ 以下。表中の名前に .jsonl.gz が付きます。

ファイル行数用途・注意
jnli_dev / jnli_test2,434 / 2,508日本語3値含意。まず測る基本セット
jnli_neg_dev1,363否定の診断。公式validationであってtestではない
janli_test720語順・助詞・浅い手掛かり。2値の非含意≠反証
jamp_test348時制・時間関係
jsem_entailment_diagnostic11,457JSeMで推論種別が明示的にentailmentの例。公式test分割なし
jsem_other_diagnostic4,353前提・含み・推論種別未指定。厳密NLIと分離し、API変換対象外
jsts_dev / jsts_test1,457 / 1,5890〜5の連続類似度。Scoreの補助評価
jcommonsenseqa_dev / jcommonsenseqa_test1,119 / 1,118一般知識の5択。本文根拠の判断とは別枠
wanli_en_test5,000英語の3値含意
wanli_ja_test3,505既存のLLM翻訳・選別版。silverとして評価
wanli_en_matched_test3,505上記と同じ原典IDの英語。英語5,000件の部分集合
wanli_ja_pilot_draft60今回の新規翻訳。人手レビュー前、既定では使用を拒否
hans_en_evaluation30,000英語の構文診断。2値非含意。テンプレート由来の大量例
contract_nli_en_test2,091123契約×17命題。全文を保持、長文上限を超え得る

JSeMは yes/no/unknown を持っていても、前提(presupposition)や会話の含みを扱う場合があります。 ラベル名だけで厳密含意に混ぜず inference_type を保持しました。容認度など他の5,758行の除外内訳はmanifest参照。

レコード形式

{
  "id": "jnli:test:0",
  "dataset": "jnli",
  "split": "test",
  "source_id": "0",
  "source_key": "jnli_test.jsonl",
  "group_id": "jglue-image:100207",
  "language": "ja",
  "task": "nli3",
  "premise": "…",
  "hypothesis": "…",
  "label": "neutral",
  "license": "CC-BY-SA-4.0"
}

source_keyは取得lockに対応。新規翻訳は translations/ のファイルと parallel.en.id で原典へ戻れます。 group_idは同じ原典・文書・画像・テンプレートを別splitへ漏らさないための保守的な識別子です。 これだけで未検出の近似重複まで排除したとは主張しません。

利用方法

1. データの閲覧・整合性検査(外部通信なし)

Python 3.10以降。閲覧・採点・テストは標準ライブラリだけです。

python3 -m unittest discover -s benchmarks/tests -v

python3 - <<'PY'
from pathlib import Path
from benchmarks.collect import read_jsonl
rows = read_jsonl(Path('benchmarks/data/jnli_test.jsonl.gz'))
print(len(rows), rows[0])
PY

2. ZIPのAPIに渡す入力を作る

# まず3件だけの接続確認用。ここではモデルを呼び出さない。
python3 -m benchmarks.adapter benchmarks/data/jnli_test.jsonl.gz \
  benchmarks/runs/preview.jsonl --mode choice --limit 3

# 全件のNoul評価入力。neutralはAPI入力からは見えず、採点側だけで未知と扱う。
python3 -m benchmarks.adapter benchmarks/data/jnli_test.jsonl.gz \
  benchmarks/runs/jnli-noul.requests.jsonl --mode noul

# JSTSの派生Scoreプロトコル
python3 -m benchmarks.adapter benchmarks/data/jsts_test.jsonl.gz \
  benchmarks/runs/jsts.requests.jsonl --mode score

出力各行は {"id": "…", "request": {"state": "…", "questions": […]}}HTTPに送るのは request だけです。gold、翻訳コメント、タグ、正解根拠の範囲は送りません。 入力は切り捨てません。文字数・トークン数超過を含めAPIエラーは結果に記録します。

3. 共通形式の予測を保存して採点

予測JSONLは各例のIDを必須とし、失敗した例も省略しません。

{"id":"jnli:test:0","label":"neutral","status":"abstained","probabilities":{"entailment":0.1,"contradiction":0.1,"neutral":0.8}}
  • choice: labelは調査用の提案ラベル。任意の probabilities実際に得た完全な分布のみ。
  • noul: p_true, status=accepted|abstained|error, 任意の evidence_score
  • score: scoreに0〜5の数値。小数を保つ。
  • エラー: {"id":"…", "status":"error", "error_type":"http_422"}
  • LLMが文章で答えた「確信度90%」はモデル確率と見なさず、probabilitiesを省略する。

別のrun metadata JSONに以下を記録します。

{
  "model_id": "実際のモデルID",
  "model_revision": "重みのコミットまたはAPIスナップショット",
  "protocol": "tiny-jev-benchmark-v1",
  "mode": "choice",
  "dataset_sha256": "manifest.json内の該当ファイルのsha256",
  "inference_settings": {
    "shots": 0,
    "temperature": 0,
    "max_tokens": 128,
    "reasoning": "実際の設定",
    "prompt_version": "実際の版",
    "probability_source": "モデルの数値出力、またはnot_available"
  }
}
python3 -m benchmarks.evaluate benchmarks/data/jnli_test.jsonl.gz \
  benchmarks/runs/predictions.jsonl --mode choice \
  --run-metadata benchmarks/runs/run.json --out benchmarks/runs/report.json

全ID一致とデータSHAを検査します。少数例のpreview予測を全件の成績として扱えません。 APIの現行版は常に保留するため、choiceの提案値評価と実際の自動採用率を混同しないでください。

4. 同じ原文IDで日英比較

python3 -m benchmarks.paired \
  --ja-dataset benchmarks/data/wanli_ja_test.jsonl.gz \
  --en-dataset benchmarks/data/wanli_en_matched_test.jsonl.gz \
  --ja-predictions benchmarks/runs/ja.jsonl --en-predictions benchmarks/runs/en.jsonl \
  --ja-metadata benchmarks/runs/ja-run.json --en-metadata benchmarks/runs/en-run.json \
  --out benchmarks/runs/paired.json

モデル・推論設定・プロトコルとID集合の一致を要求します。言語間のgold不一致は除外件数として報告。 フィルタ済み日本語3,505件を原版英語5,000件とそのまま比較しません。

5. 原典から再取得・再生成

収集時のみParquet読込用のPyArrowを使います。既存のAPI環境にはインストール不要です。

uv run --no-project --with pyarrow==23.0.1 python -m benchmarks.collect
# cache/が残っていれば、ネットを使わず同じ処理を再実行できる
uv run --no-project --with pyarrow==23.0.1 python -m benchmarks.collect --offline

原典のコミット、HF revision、SHAを固定。変更を検出した場合は停止します。 Swallowの配信HTMLは公開Gitリポジトリから版を取得できなかったため、観測したHTMLを保存しSHA固定しています。 過去のHTMLが配信元から消えた場合でも、同梱コピーで再生成できます。

実施した検証

  • データハッシュ、ラベル、対訳の対応、保留とエラーの区別、指標計算等の31テスト合格
  • オフライン再生成でmanifestがバイト単位に一致。
  • 同梱ZIPのPydanticスキーマで、対応タスクを各API型へ変換して検査。
    • 100,069リクエストが形式上有効
    • ContractNLIの14文書・238判断が本文20,000文字上限を超過。choice/noul両経路で計476件の拒否を確認。
    • 全文は保持したまま。4,096トークン上限の検査には実トークナイザーが必要で、これは未実施。
  • 一様分布のダミー予測で、入力出力・採点CLIを確認。モデルの日本語精度測定ではない。

スキーマ検査の再実行:

uv run --no-project --with pydantic==2.13.4 python -m benchmarks.validate_starter

まだしていないこと

実モデルの推論、フロンティアAPIへの有料リクエスト、人による翻訳再判定、業務固有データの作成、 確率補正、閾値学習、独立した業務受入試験、GPU速度測定は未実施です。 元のZIP・設計書は変更していません。このディレクトリはモデル学習用データではありません。