←記事一覧

自然言語処理における表層マッチング指標 —— 定義・観点・使い分け

系列全体の同一性、順序を無視した集合・多重集合の重複、編集距離、n-gram、部分列、対応付け、コーパス統計で重み付けした複数参照の合意という主要設計族を、定義・評価観点・集約方法・限界から整理する。

NLPEvaluationBLEUROUGEMachine TranslationMetrics

はじめに —— 同じ文字列を見ても、指標ごとに見ているものは違う

自然言語処理では、システム出力と参照文を比べるだけでも多くの評価指標が登場します。完全一致(Exact Match; EM)、トークン F1 値、BLEU、ROUGE、chrF、METEOR、WER、TER。どれも文字列を比較しますが、答えている問いは指標ごとに異なります。

  • 出力全体が参照と同一か
  • 出力した語のうち、参照にも同じ語として現れる割合はどれくらいか
  • 参照に含まれる語を、どれくらい回収できたか
  • 参照へ直すには、何回の編集が必要か
  • 局所的な語順や語形が、どれくらい似ているか
  • 一致した語の大域的な相対順序が、どれくらい保たれているか
  • 複数参照集合に含まれる、入力固有の表現にどれくらい近いか

本稿では、これらを表層マッチング指標と呼びます。標準化された排他的な分類名ではなく、本稿で扱う範囲を指す呼び方です。「表層」とは、正規化後の文字・トークン・nn-gram・部分列・明示的な編集操作や辞書による対応付け(アライメント)を照合信号の中心に置き、学習済みの文脈表現そのものを比較しないことを指します。固定したモデルを使えば BERTScore も決定論的に実行できるため、「決定論的かどうか」だけでは境界になりません。

参照ベース(reference-based)かどうかは別の軸です。参照ベースとは人手参照を入力に使う評価プロトコルのことで、照合表現が表層的か意味的かとは関係しません。本稿の数式は主に仮説文と参照文を比べますが、Jaccard は二つのシステム出力にも使えます。逆に BERTScore と参照あり COMET は参照ベースでも本稿の表層範囲外で、CometKiwi のような品質推定(quality estimation)は参照なし(reference-free)でも範囲外です。参照文との一致は、外部事実や入力に対する正しさと同義ではありません。

METEOR と CIDEr は、それぞれ別の理由で範囲の境界に位置します。METEOR の語幹一致は形態的対応で、同義語や言い換えの一致は、文脈を考慮しない限られた形で語の意味の対応へ踏み込みます。一方、CIDEr の IDF は外部の参照コーパスから重みを得ますが、照合自体は TF-IDF 化した明示的な nn-gram の一致です。本稿ではどちらも範囲に含めますが、外部辞書やコーパス統計を使うことを文レベルの意味理解とは呼びません。

本稿の実装名・版・コミット・既定値は、特記しない限り 2026-07-13 時点で確認したもので、明記したリリース、タグ、コミットだけに当てはまります。

万能な表層指標はありません。指標ごとに、文字列の差分のどの側面を数えるかが違います。数値の意味は、定義、分母、集約単位、前処理まで分かって初めて説明できます。


1. 全体像 —— 基本単位と評価観点で分類する

本稿は指標名を網羅せず、指標を選ぶための地図として、(1) 系列全体の同一性、(2) 順序を無視した集合・多重集合の重複、(3) 編集経路、(4) 連続 nn-gram、(5) 部分列または順位による大域順序、(6) 明示的なトークンの対応付け、(7) コーパス統計で重み付けした複数参照の合意、という 7 つの繰り返し現れる設計族を扱います。

これらは排他的ではありません。CIDEr はトークン nn-gram 指標であると同時に、入力をまたぐ IDF と入力内の全参照平均を組み合わせた複合指標です。METEOR はユニグラムの重複を明示的な対応付けとチャンクへ拡張し、TER は編集経路を系列の対応付け上で探索します。

さらに、照合単位(文字・語・サブワードトークン)、順序の範囲(無視・局所・大域)、スコアの型(適合率・再現率・均衡スコア・距離・誤り率)、評価プロトコル(汎用の定義か、タスク由来の名前付き仕様か)は直交する軸です。たとえば nn-gram 族には適合率型の BLEU、再現率型の原版 ROUGE-N、均衡型の chrF があり、「文字指標だから再現率型」「翻訳指標だから適合率型」とは決まりません。EM、Jaccard、Levenshtein は多くのタスクで使える汎用の定義ですが、SQuAD のトークン F1 値、WER/CER、TER、BLEU、ROUGE、METEOR、RIBES、CIDEr、GEC GLEU+ にはタスク由来の前処理・集約・解釈があります。式を別タスクへ移せても、経験的妥当性まで自動的には移りません。

各設計族の代表的な指標を、主に何を観測するかとともに示します。

指標基本単位スコアの型主な観点語順感度典型的な向き主な用途
完全一致前処理後の系列全体同一性の指示関数前処理後の出力と許容参照の完全一致前処理後に残る順序をすべて要求高いほど良いQA、分類ラベル、正準化済み出力
トークン適合率/再現率/F1 値トークン多重集合方向付き重複率/F 値仮説文側の表層重複/参照文側の表層被覆/両者の均衡無視高いほど良い抽出型 QA、短答
Jaccard / Dice集合または多重集合対称類似度要素の対称的な重複トークン要素なら無視高いほど良い類似度、重複検出
Levenshtein文字・トークンの編集未正規化距離最小単位編集数系列順に敏感、移動操作はない低いほど良い表記・系列比較
WER / CER語・文字の編集参照長で正規化した誤り率参照単位あたりの転記誤り数系列の対応付けに反映低いほど良いASR、OCR
TERトークン編集+句の移動(shift)平均参照長で正規化した誤り率TER 操作で数えた翻訳編集数句移動を低コストで扱う低いほど良い機械翻訳
BLEUトークン nn-gram上限付き適合率の幾何平均 × コーパス短文ペナルティー(BP)局所 nn-gram 適合率とコーパス長の不足連続する nn トークンの範囲高いほど良い機械翻訳、主にコーパス評価
chrF / chrF++文字 nn-gram(+語 nn-gram)nn-gram F 値文字断片の適合率/再現率型重複各 nn-gram の範囲高いほど良い機械翻訳、多言語評価
ROUGE-Nトークン nn-gram原版は再現率(実装は適合率/F 値も返し得る)参照文の nn-gram の表層被覆連続する nn トークンの範囲高いほど良い要約
ROUGE-L最長共通部分列LCS の適合率/再現率/F 値順序を保つ要素の被覆反映、連続性は不要高いほど良い要約、系列比較
RIBES対応付けた語の参照文内順位正規化順位相関 × ユニグラム適合率/長さ係数(版依存)一致語の大域的な相対順序と語彙被覆一致語全体の相対順序を反映高いほど良い機械翻訳の語順診断
METEORユニグラムの対応付け重み付き調和平均 × 断片化ペナルティー語彙的対応と一致の順序・連続性チャンクが順序と連続性を反映高いほど良い機械翻訳
CIDErTF-IDF トークン nn-gram全参照文との平均コサイン類似度(CIDEr-D は修正版)参照集合への語彙的一致と入力間の識別性連続する nn トークンの範囲高いほど良い画像キャプション

語順感度の列は、並べ替えで数式上の値が変わり得る範囲だけを示します。「主な用途」は慣行と経験的な妥当性に基づくもので、式から導かれるものではありません。

「高いほど良い」の指標でも、[0,1][0,1] で返す実装と [0,100][0,100] で返す実装があります。原版 CIDEr のコサイン類似度の平均は通常 [0,1][0,1] ですが、CIDEr-D は 10 倍するため公称 [0,10][0,10] です。Levenshtein の生距離には系列長を固定しない限り共通の上限がありません。TER、WER、CER は誤り率なので低いほど良く、誤り数が参照長を上回れば 11、すなわち 100% を超えることもあります。値を示すときは、指標名・実装・尺度も併記します。

1.1 隣接する指標をどこまで扱うか

7 つの設計族から選ぶときに比較対象となる古典的な指標やタスク固有の派生形は、次の深さで扱います。

指標定義上の位置本稿での扱い
NIST参照コーパスの出現数比 Info⁡(w1…wn)=log⁡2 ⁣C(w1…wn−1)C(w1…wn)\operatorname{Info}(w_1\ldots w_n)=\log_2\!\frac{C(w_1\ldots w_{n-1})}{C(w_1\ldots w_n)}(ユニグラムの分子は参照総語数)で一致トークン nn-gram を重み付けし、次数別成分を加算して BLEU とは異なる短文ペナルティーを掛ける古典的 MT 指標BLEU と同じ局所 nn-gram 適合率族の重み付け派生形なので、比較対象としてここで位置づける。加算型のスコアは 1 以下に収まらず、BLEU と尺度を共有しない。再現にはトークナイザー、最大次数、参照コーパス、実装を含む完全な仕様が必要
Google GLEU1–4-gram をまとめた多重集合で GLEU=min⁡(P,R)=M/max⁡(∣Gh∣,∣Gr∣)GLEU=\min(P,R)=M/\max(\lvert G_h\rvert,\lvert G_r\rvert) とする対称な文スコア。均衡型だが F 値ではないWu et al. (2016) が文単位の強化学習報酬として導入した局所 nn-gram の派生形なので短く比較し、コーパス BLEU の同義語とは扱わない
GEC GLEU+原文 ss も入力する原文考慮型の文法誤り訂正指標。出力と参照文の nn-gram 一致数から、出力と原文に共通する出現数のうち参照文との共通出現数を超える分を差し引いた修正適合率(modified precision)を、BLEU 式へ入れるGoogle GLEU とは同名の別設計であり、一般的な (h,r)(h,r) 指標ではない。Napoles et al. (2016) は旧 2015 版でなく GLEU+ を推奨する。複数の参照文がある場合は、各文から 1 参照文を抽出したコーパススコアを 500 反復平均する。独自再実装では抽出法・反復数・シード値も仕様になる
Mutton et al. GLEU (2007)参照文を使わず、構文解析器由来の特徴量を用いた SVM で文単位の流暢さを評価する同名指標文字列ペアの重複指標ではなく、本稿の範囲外。GLEU だけでなく著者・年・タスクを記して Google GLEU や GEC GLEU+ と区別する
RIBES一致語を参照文内順位へ写し、正規化 Kendall 順位相関(NKTNKT)とユニグラム適合率 PP を組み合わせる。一般的な後期形式は RIBES=NKT⋅Pα⋅BPβRIBES=NKT\cdot P^\alpha\cdot BP^\beta として BLEU 型 BP も使う固定幅 nn-gram や LCS だけでは明示しにくい大域的な並べ替えを補うため、全体表に含める。版・パラメーター・単語対応規則への依存が大きいので、独立の詳説節ではなく語順診断として簡潔に扱う
ROUGE-W / S / SU重み付き LCS、スキップバイグラム(skip-bigram)、スキップバイグラム+ユニグラムという ROUGE 族の別設計部分列・連続性・語を飛び越した順序の枝を示すため 5.3 節で短く定義する。ROUGE-N と ROUGE-L/Lsum を詳説し、すべてを単一の「ROUGE」に畳み込まない

選択上は、過去の NIST 結果を再現するときに NIST、対称な文単位の nn-gram 報酬が必要なときに Google GLEU、原文からの訂正を評価するときだけ GEC GLEU+、大域的な語順崩れを独立に診断したいときに RIBES を候補にします。同じ設計族の中で代表を入れ替えても、測る品質の側面は増えません。

次の RIBES と GLEU+ の段落は、指標名だけでは再現できない挙動を版ごとに固定する実装注記で、指標の選び方だけを知りたい場合は 2 節へ進めます。

版固定の例として、NTT の RIBES 1.03.1(配布履歴上は 2014-09-08、GitHub ミラーのコミット 7e76cf24d32de70e9e6afd0c9b95d8c140b7235c)の既定の式は NKT⋅P0.25⋅BP0.10NKT\cdot P^{0.25}\cdot BP^{0.10} です。同実装はトークン化済み入力を要求し、-c を指定しなければ内部で小文字化します。複数参照では文ごとに最大スコアを選び、その文スコアをマクロ平均します。これらは 2010 年の原論文ではなく同実装が定める規約です。同実装には 2026-07-13 時点で 1.03.1 より後の配布版がありません。配布 README は「Python 2.6 以降」を要件とし、Python 3.0 非対応に加えて「RIBES 1.02.4 以前は Python 3.1 以降でのみ動作」と記します。この文面だけでは 1.03.1 の Python 3 対応範囲を完全には特定できませんが、ソースには Python 3 用の分岐があります。また、ソース内の _RIBES_VERSION は旧 1.03 のままです。現行の Python パッケージではない歴史的実装なので、版はソース内の表示に頼らず、配布履歴・実行環境・コミットを併記して特定します。

GEC GLEU+ の著者配布コードにも論文後の変更があります。最終コミット 50b5032a4ef2444b9381fb47a55b3bac0654a6d7(2017-06-09)は、gleu.py で仮説文長と参照文長が入れ替わっていた短文ペナルティーを修正しています。compute_gleu は複数参照で既定 500 反復、単一参照なら 1 反復とし、反復 jj ごとに j*101 で Python の乱数生成器(RNG)のシード値を再設定します。この固定コードでは外部の乱数状態は結果を変えません。同コードは print 文や xrange を使う Python 2.7 時代の歴史的配布物であり、現行 Python 向けパッケージ API ではありません。移植版では抽出・シード値・BP・集約の意味論を固定します。

同じ固定版では CLI が -n を受け取る一方、GLEU.__init__(n) は引数を使わず self.order = 4 とし、幾何平均の除数も 4 に固定しています。このため著者スクリプトの仕様は 1–4-gram と扱い、-n で別の次数を選べるとはみなしません。


2. 共通定義 —— 分母を見れば設計思想が分かる

2.1 仮説文、参照文、前処理

システム出力を仮説文(hypothesis)hh、参照文を rr とします。参照文が複数ある場合は、

R={r(1),r(2),…,r(K)}R = \{r^{(1)}, r^{(2)}, \ldots, r^{(K)}\}

と書きます。評価コーパスは SS 個の事例 (hs,Rs)(h_s, R_s) からなります。

指標に入るのは、多くの場合、生の文字列ではなく、Unicode 正規化、大小文字の統一、句読点除去、空白処理、トークン化、形態素解析、語幹化などを経た系列です。したがって、より正確には前処理関数 TT を含む

score⁡(T(h),T(r))\operatorname{score}(T(h), T(r))

を評価しています。TT が変われば、同じ名前の指標でも別の測定になります。

Unicode 正規化にも複数の形式があります。NFC/NFD は正準等価な表現を合成/分解しますが、NFKC/NFKD は全角英数字、合字、丸数字などの互換文字も畳み込みます。後者は検索には便利でも、商品コードや表記品質の評価では意味のある差を消し得ます。また、多くの Python 実装がいう「文字(character)」は Python 文字列を走査した Unicode 符号位置(code point)であり、結合文字列や絵文字 ZWJ シーケンスを一つに見せる書記素クラスター(grapheme cluster)ではありません。正規化形式と文字単位を別々に固定します。

sacreBLEU 2.6.0 の 13a BLEU と chrF の経路、JiWER 4.0.0 の既定変換、NLTK 3.10.0 の METEOR は、いずれも評価層で NFC/NFKC を適用しません。NLTK METEOR の既定前処理はトークンごとの str.lower だけです。SentencePiece のようにモデル内正規化器を持ち得るトークナイザーは、そのモデル自体を TT の一部として版固定します。

さらに「語」は言語中立な単位ではありません。空白のない日本語を単純な split() へ渡すと、文全体が 1 トークンになります。トークン指標では、形態素解析器、辞書、ユーザー辞書、正規化、分かち書き出力を仮説文と参照文で共通化し、それぞれの版を保存します。トークン化済み入力を再びトークン化しないことも再現条件です。

2.2 集合・多重集合とクリッピング

系列 xx に現れる nn-gram gg の回数を Cx(g)C_x(g) とします。仮説文と単一参照文の重複数は、通常、重複出現を保つ多重集合の共通部分として

Mn(h,r)=∑gmin⁡(Ch(g),Cr(g))M_n(h,r) = \sum_g \min(C_h(g), C_r(g))

と数えます。たとえば参照文に the が 1 回しかないなら、仮説文が the を 10 回出しても一致は 1 回です。この上限処理をクリッピング(clipping)と呼びます。

一方、通常の集合へ変換してから Jaccard を計算すると、出現回数は捨てられます。どちらも「重複」と呼ばれ得ますが、集合と多重集合では定義が異なります。

クリッピングの参照範囲も指標ごとに違います。上式は 1 参照文との組ごとに min⁡\min を取ります。BLEU は nn-gram ごとに各参照文の最大出現数を求めてから仮説文の出現数に上限を設け、Lin (2004) の ROUGE-N の式 (1) は各参照文との一致数を足し、CIDEr-D は候補文と各参照文の組ごとに出現数へ上限を設けます。原版 CIDEr のコサイン類似度には CIDEr-D と同じクリッピングはありません。参照文を一つの巨大な多重集合へ結合する操作は、いずれとも一般には同値ではありません。

クリッピングが保証するのは、同じ記号の反復へ参照文中の回数を超える一致加点を与えないことだけで、長さ補正そのものではありません。たとえば再現率だけなら、参照文中の回数を超える余分な出力は分子を増やしませんが、スコアも下げません。下げるには仮説文側の分母を持つ適合率や別のペナルティーが必要です。

2.3 適合率、再現率、FβF_\beta

適合率(precision)、再現率(recall)、正解率(accuracy)は別概念です。本稿では適合率/再現率と書き分け、両者を「精度」とまとめて呼びません。式や API の識別子は原表記を保ちます。

仮説文側の要素数を分母に置くと適合率です。

Pn=Mn∑gCh(g)P_n = \frac{M_n}{\sum_g C_h(g)}

これは、出力した要素のうち参照文にも同じ照合単位として現れる割合を見ます。不要な追加や過剰生成に敏感ですが、「参照文で真偽が裏付けられた割合」ではありません。

参照文側を分母に置くと再現率です。

Rn=Mn∑gCr(g)R_n = \frac{M_n}{\sum_g C_r(g)}

これは、参照にある照合単位をどれだけ回収したかを見ます。欠落に敏感ですが、参照の意味内容をどれだけ回収したかを直接測るわけではありません。

両者をまとめる代表的な方法が FβF_\beta です。

Fβ=(1+β2)PRβ2P+RF_\beta = \frac{(1+\beta^2)P R}{\beta^2 P + R}

β>1\beta>1 なら再現率、β<1\beta<1 なら適合率を重くします。β=1\beta=1 が調和平均 F1F_1 です。同じ一致数でも、どちらを分母にするかで評価の問いが変わります。

仮説文と参照文を入れ替えると PP と RR は入れ替わります。同じ多重集合一致 MM を使う F1F_1 は入れ替えに対して対称ですが、β≠1\beta\ne1 の FβF_\beta は対称ではありません。したがって「再現率を重くする」と説明するときは、どちらを参照文と定めたかを固定しておく必要があります。

これらの商は、対応する分母が 0 なら数学的には未定義です。空列どうしを 1 とするか 0 とするか、一方だけが空ならどうするかは指標名からは決まりません。実装の空入力規約を固定し、通常の式と区別して報告します。

2.4 複数参照と集約

複数参照の扱いには少なくとも次があります。

  • 参照文ごとのスコアの最大値を取る
  • 参照文ごとのスコアを平均する
  • nn-gram ごとに参照群で最大の出現回数を使う
  • 複数参照を「人間の合意」とみなし、全参照との平均類似度を取る

BLEU は nn-gram ごとに参照文中の最大出現数を使い、CIDEr は全参照文との平均を取ります。両者は意図して異なる設計です。

コーパス集約にも違いがあります。

  • マクロ平均:文、文書、対話など、先に定めた評価単位ごとのスコアを計算し、各単位へ同じ重みを与えて平均する
  • ミクロ平均:一致数、編集数、分母などの十分統計量を全事例で合計してから比率を計算する。長い事例や機会数の多い事例が通常は大きな重みを持つ
  • 指標固有のコーパススコア:集約した十分統計量へ、BLEU の幾何平均と BP のような指標固有の非線形式を適用する

短文と長文の重みだけでなく、最後に適用する関数も変わり得るため、文スコアの平均とコーパススコアは一般に一致しません。とくにコーパス BLEU は、全事例の次数別一致数/出現数と仮説文・有効参照文の長さを集約して一度だけ計算します。平滑化した文 BLEU の算術平均は、コーパス BLEU の近似でもミクロ平均でもなく、別の統計量です。

2.5 類似度、距離、誤り率

  • 類似度/一致度は、通常は大きいほど一致が強い量です。EM、Jaccard、Dice、各種 F 値が典型ですが、適合率、再現率、BLEU のように仮説文と参照文の役割を入れ替えると値が変わる方向付きスコアもあります。
  • 距離は小さいほど近い量です。単位コストの通常の Levenshtein 距離は系列上の数学的距離ですが、生値は [0,1][0,1] に正規化されていません。
  • 誤り率は、誤り数を参照文側の機会数で割った量です。WER/CER と TER は参照文を基準とする方向性を持ち、誤り数が参照長を上回れば 1 を超え得るため、単に 1−WER1-WER としても [0,1][0,1] の類似度にはなりません。TER はさらに、定義した句の移動とヒューリスティック探索に依存します。

高低の向きを反転してもスコアの型は変わらないため、比較表やグラフではスコアの型と向きを両方明記します。

2.6 長さがスコアに与える影響

長さがスコアに影響する仕組みは次の 4 種類に分かれます。まとめて長さペナルティーと呼ぶと、この区別が失われます。

  1. 分母による効果:適合率は余分な仮説文要素を、再現率は参照文要素の欠落を反映し、F 値は両者を組み合わせます。ROUGE の再現率だけでは余分な出力を直接は罰しません。
  2. 尺度の正規化:WER/CER や TER が参照長で割るのは、長さの違う事例で誤り数の尺度を揃えるためです。望ましい長さへ誘導するペナルティーとは別です。
  3. 明示的な長さペナルティー:BLEU の BP はコーパス全体の仮説文が短い場合だけを罰し、長すぎる仮説文には独立のペナルティーを掛けません。過長出力は主に上限付き適合率の分母で不利になります。CIDEr-D のガウス関数は、候補文と各参照文の長さ差を長短どちら向きにも罰します。
  4. ベクトル正規化:CIDEr のコサイン類似度によるノルム除算はベクトルの方向を比べる処理であり、系列長が適切かを直接判定する長さペナルティーではありません。

生の Levenshtein 距離には長さ補正がなく、EM は長さが違えば不一致になるだけです。METEOR、chrF、Jaccard/Dice では、長さの影響は適合率/再現率や集合の分母を通じてだけ入ります。クリッピングと長さペナルティーも分けて報告します。


3. 完全一致とトークンの多重集合 —— 同一性と語の重なりを数える

3.1 完全一致(EM)

完全一致は最も単純です。

EM(h,r)=1[T(h)=T(r)]EM(h,r) = \mathbf{1}[T(h)=T(r)]

複数の参照文がある場合は、いずれかと一致したとき 1 とする定義がよく使われます。

EM(h,R)=max⁡k1[T(h)=T(r(k))]EM(h,R) = \max_k \mathbf{1}[T(h)=T(r^{(k)})]

コーパス EM は通常、事例ごとの 0/1 を平均した完全一致の正解率、すなわち S−1∑sEM(hs,Rs)S^{-1}\sum_s EM(h_s,R_s) です。したがって各事例を同じ重みで数えるマクロ集約になります。

観点:出力全体が、許容された答えのどれかと完全に同じか。

強み:解釈が明快で、ID、分類ラベル、数値、正規化済み短答、JSON の値など、出力契約が厳密なタスクに向いています。

弱み:正しい言い換えをすべて不一致にします。また「正規化 EM」の値は正規化器の定義で決まります。SQuAD 型の評価では小文字化、句読点・冠詞・余分な空白の処理が使われますが、その正規化を商品コードや日本語へ無批判に移植すると意味のある差まで消しかねません。

具体的には SQuAD の公式 Python 正規化器が除く句読点は string.punctuation に含まれる ASCII 記号、冠詞は英語の a、an、the です。Unicode 句読点を一般に除去する仕様でも、日本語向け正規化器でもありません。

3.2 トークン適合率/再現率/F1 値

仮説文と参照文をトークンの多重集合とし、一致トークン数を MM とすると、

P=M∣h∣,R=M∣r∣,F1=2PRP+RP = \frac{M}{|h|}, \qquad R = \frac{M}{|r|}, \qquad F_1 = \frac{2PR}{P+R}

です。抽出型 QA でいうトークン F1 値は、この順序を無視したトークン多重集合型が典型です。

複数の正解注釈がある SQuAD v1.1 の公式評価では、各参照文とのトークン F1 値を別々に計算して最大値を取り、その事例スコアを全問で平均します。

空のトークン列には通常式をそのまま使えません。SQuAD 2.0 の公式スクリプトは、どちらかが空なら、正規化後のトークン列が両方とも空のときだけ F1 値を 1、それ以外を 0 とします。これは回答なし(no-answer)を扱う同実装の規約です。

観点:短い回答の構成語が、どれだけ過不足なく重なるか。

強み:完全一致より部分点を与えられ、固有表現を含む短答や抽出範囲の境界差を扱いやすくなります。

弱み:dog bites man と man bites dog のような役割反転を区別できません。否定語 1 語の差も、長い回答では小さく見えます。

3.3 Jaccard と Sørensen–Dice

多重集合の一致数 MM を使う場合、Jaccard 類似度は

J=M∣h∣+∣r∣−MJ = \frac{M}{|h|+|r|-M}

Sørensen–Dice 係数は

D=2M∣h∣+∣r∣D = \frac{2M}{|h|+|r|}

です。同じ多重集合一致 MM を使う Dice はトークン F1F_1 と代数的に一致します。集合版では重複を除いてから同じ形を使うため、別の値になります。

観点:どちらも正解側の分母として扱わない、対称的な要素重複。

向く場面:重複検出、タグ集合、キーワード集合、出力同士の類似度。

注意:Jaccard と Dice は単調に対応しますが、数値は同じではありません。空集合どうしを 1 とするか 0 とするかも実装で固定する必要があります。複数参照に対する標準的な一意の拡張もないため、最大・平均・参照の結合のどれを使ったかを明記します。


4. 編集距離系 —— 「一致した量」ではなく「直す量」を測る

4.1 Levenshtein 距離

系列 x=(x1,…,xm)x=(x_1,\ldots,x_m) を y=(y1,…,yn)y=(y_1,\ldots,y_n) へ変える最小の挿入・削除・置換回数を Levenshtein 距離と呼びます。動的計画法では

Di,j=min⁡{Di−1,j+1削除Di,j−1+1挿入Di−1,j−1+1[xi≠yj]一致または置換D_{i,j}=\min\begin{cases} D_{i-1,j}+1 & \text{削除}\\ D_{i,j-1}+1 & \text{挿入}\\ D_{i-1,j-1}+\mathbf{1}[x_i\ne y_j] & \text{一致または置換} \end{cases}

と定義し、D0,j=jD_{0,j}=j、Di,0=iD_{i,0}=i とします。

この通常の漸化式に隣接 2 要素の転置は含まれません。転置も 1 操作とする Damerau–Levenshtein 距離は別の指標です。

書誌上は、Levenshtein のロシア語原著が 1965 年、英訳が 1966 年です。英訳の題名は “reversals” で終わりますが、ロシア語原題の対応する語は文字の「置換」を意味するため、この題名は上の漸化式へ隣接転置を加える根拠になりません。

観点:仮説文を参照文へ変換するための最小編集量。

生の距離は長さとともに大きくなりやすいため、長さの異なる系列を相対比較するときは正規化することがあります。ただし、参照長、最大長、両者の和のどれで割るかに唯一の標準はないため、「正規化編集距離」と書くときは分母も示します。

4.2 単語誤り率(WER)と文字誤り率(CER)

単語誤り率(WER)では、慣例上、参照文のトークン列を仮説文のトークン列へ対応付け、置換 SS、参照語が仮説文にない削除 DD、仮説文に余分な語がある挿入 II を数えます。

WER=S+D+INrWER = \frac{S+D+I}{N_r}

NrN_r は参照語数です。文字誤り率(CER)は単位を文字へ変えた同型の指標です。

観点:音声認識や OCR の出力が、人手転記からどれだけ外れているかを示す誤り率。

値の範囲と集約:挿入が多ければ WER/CER は 1 を超えます。類似度ではありません。コーパス WER は通常、全事例の S+D+IS+D+I を合計し、全参照長の合計で割るミクロ集約です。文ごとの WER 平均とは異なります。

ASR の参照実装である NIST SCTK 2.4.12 の sclite(v2.4.12 タグのコミット 62aabfa95938bfea284f8b68a374c7ddcb0fce52)も、システム集計ではすべての参照語と S,D,IS,D,I の出現数を合計してから率を出します。以下の空入力・変換規約は JiWER 固有の挙動です。

Nr=0N_r=0 では上の商は未定義です。JiWER 4.0.0 は、コーパス全体の参照文が空なら、仮説文も空の場合を 0、そうでなければ挿入数そのものを WER とします。別実装が空参照文を拒否することもあるため、この境界規約も再現条件です。複数参照文にも普遍的な標準規則はなく、最小 WER などを採用するなら明記します。

JiWER 4.0.0 の既定 WER 変換は、2 文字以上連続する空白文字を U+0020 一つへまとめ、前後を strip() し、各入力行を既定の区切り文字 U+0020 で語へ分けます。孤立したタブなどを一般的な空白分割で語境界にするわけではなく、小文字化や句読点除去もしません。複数行入力では対応する行ごとに編集数を求めて合計するため、全行を連結して一度だけ対応付ける wer_contiguous とは別です。既定 CER は前後空白を除いた後、内部空白を含む Python の符号位置列へ変換します。最小距離が同じ対応付けが複数あると、ライブラリーの同点時の決定規則により S,D,IS,D,I の内訳だけが変わる場合もあります。

したがって CER では「文字」が Unicode 符号位置、書記素クラスター、正規化後の記号のどれかを明記します。たとえば結合文字と合成済み文字は、見た目が同じでも NFC 正規化前には別系列です。空白なしの日本語を JiWER の既定 WER へ直接渡すと、発話全体が 1 語として扱われます。日本語 WER は同じ分かち書き器と辞書で仮説文・参照文を事前分割し、CER と併記します。

4.3 TER と HTER

翻訳編集率(Translation Edit Rate; TER)は、語の挿入・削除・置換に加え、連続する語句を別位置へ移す句移動を単位コスト 1 で許します。

仮説文 hh を参照文 rr へ直すために TER の探索が返す編集数を ETER(h,r)E_{\mathrm{TER}}(h,r) とすると、原論文で複数の参照文を扱う定義は

TER(h,R)=min⁡1≤k≤KETER(h,r(k))1K∑k=1K∣r(k)∣TER(h,R)= \frac{\min_{1\le k\le K}E_{\mathrm{TER}}(h,r^{(k)})} {\frac{1}{K}\sum_{k=1}^{K}|r^{(k)}|}

です。分子は最も少ない編集で到達できる 1 参照を選びますが、分母はその参照の長さではなく、参照群すべての平均語数です。コーパス TER は文 TER の平均ではなく、sacreBLEU 2.6.0 を含む標準的な集約では

TERcorpus=∑smin⁡kETER(hs,rs(k))∑s1Ks∑k∣rs(k)∣TER_{\mathrm{corpus}}= \frac{\sum_s\min_k E_{\mathrm{TER}}(h_s,r_s^{(k)})} {\sum_s\frac{1}{K_s}\sum_k|r_s^{(k)}|}

と十分統計量を合計します。句移動の候補空間は大きいため、標準的な TER は貪欲なヒューリスティック探索を使い、数学的な大域最小を保証する単純な Levenshtein 距離とは性格が異なります。

観点:TER が定義した操作による編集数を平均参照長で正規化した、後編集量の代替指標。長い句の移動を 1 操作とするため、単純 WER よりブロックの並べ替えコストを低く数えます。ただし式が測るのは操作数であり、実際の編集時間、認知負荷、翻訳の許容性そのものではありません。

人手対象 TER(Human-targeted TER; HTER)は、人間が特定のシステム出力を最小限に後編集して作った対象別参照文との TER です。人間が許容可能な言い換えを保持できる反面、参照文の作成に人手を要するため、完全自動指標ではありません。

実装上の注意:以下の空入力、前処理、探索設定は、固定した実装ごとの規約です。

コーパス全体のすべての参照文が空なら分母は 0 で、原式は未定義です。sacreBLEU 2.6.0 はこの場合、仮説文もすべて空なら 0、どれかが非空なら 100 とする特別規約を実装しています。一部の事例だけが空参照文であれば、その非空仮説文を空参照文へ直す削除相当の編集数は分子へ入り、他事例の参照長が分母になる通常の集約計算なので、100 を超え得ます。

sacreBLEU 2.6.0 の TER 既定値は、大文字小文字を区別せず、normalized=False、句読点を保持し、asian_support=False です。したがって既定の日本語入力は実質的に空白分割であり、自動的には分かち書きされません。asian_support は normalized または句読点除去と併用したときだけ CJK 処理へ影響します。ここでいう TERCOM の normalized は XML 実体、改行、句読点のトークン化などの規則であり、Unicode NFC/NFKC ではありません。

sacreBLEU は自身の TER を TERCOM のほぼ忠実な再実装と説明していますが、ビーム編集距離と句移動の候補制限のため、極端なコーナーケースでは TERCOM と異なり得ます。「TER」という名前だけでなく、実装と版も固定します。

ここで比較先となる TERCOM は、jhclark/tercom 0.10.0 の固定コミット e413d077e5b9ecc96b0e7de5fe6015eb135c2f6d です。同実装の既定は正規化無効、大小文字を区別しない、句読点保持、ビーム幅 20、最大句移動距離 50 語です。原論文(Snover et al., 2006)と、README が Matthew Snover、Shuguang Wang、Spyros Matsoukas を掲げる 2007 年以降の TERCOM 配布物は別の書誌・版情報です。sacreBLEU 2.6.0 は前処理既定を合わせますが、TERCOM のビーム幅に当たる公開パラメーターは持ちません。


5. nn-gram 指標 —— 局所的な語彙と語順を測る

5.1 BLEU —— 上限付き適合率の幾何平均と短文ペナルティー

BLEU は機械翻訳のコーパス評価として提案されました。次数 nn の修正適合率は、複数参照での最大出現回数により仮説文の出現数へ上限を設けて計算します。

CRmax⁡(g)=max⁡kCr(k)(g)C_R^{\max}(g)=\max_k C_{r^{(k)}}(g) pn=∑s∑gmin⁡(Chs(g),CRsmax⁡(g))∑s∑gChs(g)p_n = \frac{ \sum_s\sum_g \min(C_{h_s}(g), C_{R_s}^{\max}(g)) }{ \sum_s\sum_g C_{h_s}(g) }

標準的な BLEU-NN は、各次数の適合率の重み付き幾何平均へ短文ペナルティー(brevity penalty; BP)を掛けます。通常は wn≥0w_n\ge 0 かつ ∑nwn=1\sum_n w_n=1 とします。

BLEU=BP⋅exp⁡(∑n=1Nwnlog⁡pn)BLEU = BP \cdot \exp\left(\sum_{n=1}^{N}w_n\log p_n\right) BP={1c>rexp⁡(1−r/c)0<c≤rBP=\begin{cases} 1 & c>r\\ \exp(1-r/c) & 0<c\le r \end{cases}

cc はコーパス全体の仮説文長、rr は各仮説文に対して選んだ有効参照文長の合計です。よく使われる BLEU-4 では N=4N=4、wn=1/4w_n=1/4 です。複数参照文の有効長は、一般的な実装では仮説文長に最も近い参照文長を選び、同距離なら短い方を選びます。

上の BP 式は c>0c>0 を前提とします。仮説文がすべて空のコーパスでは BLEU を 0 とするのが一般的な実装規約です。

観点:仮説文の局所トークン nn-gram のうち、少なくとも一つの参照文にも同じ形で現れるものが多いか。短い出力で適合率を稼ぐ行為をコーパス BP で抑えられているか。

設計上の要点:BLEU は再現率を直接計算しません。BP はコーパス長の不足を罰しますが、参照文の各要素を回収したかを測る再現率の代替ではありません。また幾何平均なので、いずれかの pn=0p_n=0 なら未平滑化 BLEU は 0 になります。複数参照では nn-gram ごとに別々の参照文から最大出現数を取れるため、上限付き一致の集合が一つの首尾一貫した参照文に現れる保証もありません。

原論文の BLEU はコーパス単位を想定しています。必要な全次数の分母が正なら、未平滑化のコーパス式を 1 文へ適用できます。しかし短い文では高次 nn-gram が存在しない、または一致が 0 になりやすく、0 や未定義の次数へ退化します。実用的な文 BLEU では平滑化や有効次数を明示する必要があり、これらは原指標に一意に定まらない追加仕様です。

報告上の注意:トークナイザー、大小文字、参照数、平滑化、有効次数、実装バージョンで値が変わります。Post (2018) は、報告されない設定の違いによって、比較できるはずの「BLEU」の値が比較できなくなっている問題を指摘しました。sacreBLEU の指標設定を表す署名のように、設定一式を保存します。

sacreBLEU 2.6.0 の既定値:BLEU() と通常のコーパス用 CLI は 0–100 尺度で、最大次数 4、smooth_method="exp"、effective_order=False、大小文字を保持します。トークナイザー未指定時は、対象言語が分からなければ 13a です。これらは原論文の未平滑化式そのものではなく、sacreBLEU の実装既定値です。平滑化には none、floor、add-k、exp があり、値未指定時の floor は 0.1、add-k は 1 です。

互換関数 sacrebleu.sentence_bleu は、exp 平滑化に加えて例外的に effective_order=True を既定にし、CLI の --sentence-level も BLEU では有効次数を有効にします。一方、BLEU().sentence_score はクラスの effective_order=False を引き継ぎ、警告を出します。sacreBLEU の有効次数は、仮説文側の分母が 0、つまりその次数の nn-gram 自体が存在しない次数を幾何平均から外す処理です。一致数だけが 0 で分母が正の次数は外さず、0 を回避するには別途、平滑化が必要です。

ただし add-k は n>1n>1 の分子・分母へ kk を加えてから分母 0 を判定するため、本来存在しない高次の次数も残り得ます。したがって平滑化と有効次数は独立なラベルではなく、組み合わせをそのまま記録します。

対象言語 ja が --language-pair または trg_lang で分かる場合、sacreBLEU は ja-mecab を選び、IPA 辞書の MeCab 分かち書きを使います。任意ファイルを言語指定なしで評価すると 13a のままなので空白のない日本語は分かち書きされず、日本語 BLEU は大きく変わり得ます。ja-mecab にも sacreBLEU 層での NFC/NFKC はなく、厳密な再現には sacrebleu[ja]、MeCab、ipadic の版を固定します。署名はトークナイザーを記録しますが、外部で行った Unicode 正規化と変更した max_ngram_order は記録しないため、別途保存します。

5.2 chrF / chrF++ —— 文字 nn-gram の適合率と再現率

chrF の原論文は、文字 nn-gram の各次数について Pn,RnP_n,R_n を求め、最大次数 NN までの算術平均を

P‾=1N∑n=1NPn,R‾=1N∑n=1NRn\overline{P}=\frac{1}{N}\sum_{n=1}^{N}P_n, \qquad \overline{R}=\frac{1}{N}\sum_{n=1}^{N}R_n chrFβ=(1+β2)P‾ R‾β2P‾+R‾chrF_\beta = \frac{(1+\beta^2)\overline{P}\,\overline{R}} {\beta^2\overline{P}+\overline{R}}

とします。

この式は「次数ごとの適合率と再現率をそれぞれ平均してから FβF_\beta を取る」定義です。ただし実装史には別定義があります。Popović の 2017 年版参照実装 chrF++.py は、各次数の Fβ(Pn,Rn)F_\beta(P_n,R_n) を先に求めて算術平均を取ります。sacreBLEU 2.6.0 は既定の eps_smoothing=False では、仮説文・参照文の双方に nn-gram が存在する有効次数について Pn,RnP_n,R_n を平均してから FβF_\beta を計算し、eps_smoothing=True ではイプシロンを使って参照実装と同じく次数別 F 値を平均します。特に短文では、これらは一般に同じ値になりません。

観点:文字列の局所断片が、適合率と再現率の両面でどれだけ共有されるか。

文字単位なので、屈折、接辞、複合語、トークナイザーの境界差があっても共有部分文字列に部分点を与えられます。この性質は語形変化が多い言語や単語分割が自明でない言語で役立つことがあります。一方で、似た綴りの別語にも点を与え、長距離の語順や文の意味は捉えません。

chrF++ は文字 nn-gram に語 nn-gram を追加し、語境界と局所語順への感度を補います。Popović (2017) では語ユニグラムとバイグラムの追加が提案され、文字次数と語次数を同じ算術平均の項として扱います。

実装上の注意:空入力、複数参照、空白、実行環境の扱いは実装ごとに異なります。

sacreBLEU 2.6.0 の既定の有効次数方式は、有効な次数が一つもなければ 0 を返すため、空文字どうしの chrF も 0 です。eps_smoothing=True は、対応する nn-gram 総数が 0 のとき適合率または再現率を 10−1610^{-16} とし、設定した全次数を平均します。そのため空文字どうしは 0–100 尺度で約 10−1410^{-14} となり、厳密な 0 でも「完全一致」の 100 でもありません。

複数参照について、参照実装と sacreBLEU は各事例で参照文ごとの chrF が最大になる参照文を選び、その参照文との十分統計量をコーパスへ足します。両コードとも最大値を厳密な > で更新するため、同点なら先頭参照文が残ります。統計量が異なる同点では集約後のコーパススコアが参照順に依存し得るので、参照順も保存します。参照実装 chrF++.py は、この集約後の文書スコアと文スコアのマクロ平均を別々に出力します。

さらに 2017 年版 chrF++.py は最大値を 0 で初期化するため、参照文ごとのスコアがすべて 0 の空入力・完全無重複入力では最良の統計量を選べず失敗し得ます。0 を返す sacreBLEU 2.6.0 の規約とは異なるため、参照スクリプトを使う場合は版と、処理できる入力の範囲も明記します。

設定は名前だけでは決まりません。たとえば広く使われる sacreBLEU 2.6.0 の既定 chrF は、文字最大次数 6、β=2\beta=2、空白を文字 nn-gram に含めず、語次数 0 です。語最大次数を 2 にすると chrF2++ と表示されます。

文字処理にも差があります。参照実装 chrF++.py は行を strip() した後に U+0020 だけを除き、その他の内部空白は残しますが、sacreBLEU 2.6.0 の whitespace=False は Python の str.split() が空白とみなす文字をすべて除きます。どちらも明示的な NFC/NFKC は行いません。Python 3 では符号位置の nn-gram ですが、参照スクリプトを Python 2 でバイト文字列のまま動かすと UTF-8 バイトを数え得るため、実行環境も固定します。また sacreBLEU の chrF++ 語側は空白分割と簡易な ASCII 句読点分離だけで、ja-mecab を共有しません。未分割の日本語では既定の文字のみ word_order=0 を使うか、語側を使うなら外部分かち書きを固定します。

5.3 ROUGE —— 参照の被覆を測る指標族

ROUGE は要約評価向けに提案された指標族です。「ROUGE スコア」とだけ書いても、どの指標かは定まりません。

ROUGE-N

単一参照に対する ROUGE-N の再現率は

ROUGE-NR=∑gmin⁡(Ch(g),Cr(g))∑gCr(g)ROUGE\text{-}N_R = \frac{\sum_g \min(C_h(g),C_r(g))} {\sum_g C_r(g)}

です。参照側を分母にするため、参照要約の nn-gram をどれだけ回収したかを見ます。

Lin (2004) の式 (1) は参照要約の集合に対して書かれ、参照要約ごとの一致数と参照文の出現数を足し合わせます。

ROUGE-NR(h,R)=∑k=1K∑gmin⁡(Ch(g),Cr(k)(g))∑k=1K∑gCr(k)(g)ROUGE\text{-}N_R(h,R)= \frac{\sum_{k=1}^{K}\sum_g\min(C_h(g),C_{r^{(k)}}(g))} {\sum_{k=1}^{K}\sum_g C_{r^{(k)}}(g)}

この式は参照長で重み付けした再現率型の集約です。ただし同論文の 2.1 節は、複数参照の最終スコアを各参照文との ROUGE-N の最大値と定めています。同論文によれば、配布パッケージはさらにジャックナイフ法で、参照文を一つずつ除いた KK 通りの組それぞれで最大値を求め、それらを平均します。

観点:ROUGE-1 はユニグラムの語彙的被覆、ROUGE-2 以上は局所句と局所語順の被覆。ストップワード処理を別に指定しない限り、ROUGE-1 は内容語と機能語を区別せずに数えます。

原論文は再現率を中心に置きますが、現代のライブラリーは適合率、再現率、F1F_1 をすべて返すことが一般的です。「ROUGE は再現率指標」と「報告された ROUGE-L F1 値」は矛盾しませんが、報告ではどの成分かを明記します。

実装上の注意(rouge-score 0.1.2):Google Research リポジトリー由来の同パッケージ(PyPI 公開 2022-07-22)で複数参照用の score_multi を使うと、要求した ROUGE の派生形ごとに参照文別の F1F_1 が最大になる参照文を独立に選びます。本節の再現対象は SHA-256 c7d4da2683e68c9abf0135ef915d63a46643666f848e558a1b9f7ead17ff0f04 の PyPI ソース配布物(sdist)です。コミット 910758241597e44871c7029654f5ed7813dc3344 は、その公開の約 32 分後にリポジトリーで初めて版 0.1.2 を記録した近接スナップショットであり、sdist とのバイト単位の同一性を意味しません。同パッケージの README は “not an official Google product”(Google の公式製品ではない)と明記しているため、Google の公式評価仕様とは呼びません。同点では numpy.argmax により先頭参照文を返すため、F1 値が同じでも返される適合率/再現率は参照順に依存し得ます。さらに BootstrapAggregator は事例を復元抽出し、各ブートストラップ標本の事例スコア平均を作って 2.5、50、97.5 パーセンタイルを返します。対象はマクロ平均であり、nn-gram の出現数をコーパス全体で集約する式ではありません。集約器自体にシード値の引数はなく NumPy の大域的な乱数生成器を使うため、信頼区間まで再現するなら呼び出し前にシード値を固定します。参照要約を合算する式 (1)、最大参照、平均参照を同じ「ROUGE」として混在させてはいけません。

rouge-score 0.1.2 の既定 DefaultTokenizer は、文字列を小文字化してから [^a-z0-9]+ を空白へ置換し、既定では語幹化しません。日本語だけの同一文字列は双方とも空のトークン列になり、ROUGE-1/2/L は 0 になります。さらに、たとえば NFC の café は caf、NFD の cafe+結合アクセントは cafe が残り、正準等価でも結果が変わります。日本語では、同じ Unicode 正規化と分かち書きをする独自トークナイザーを渡します。既定実装は nn-gram の空分母を max(count,1) で処理し、LCS も空列を特別処理するため、空文字どうしを含め、片方または両方が空なら適合率、再現率、F1 値はすべて 0 です。

同じ実装では、完全一致でもトークン数が nn 未満なら双方の nn-gram 多重集合が空になり、ROUGE-N の適合率、再現率、F1 値は 0 です。これは空分母を 0 点にする実装規約です。

ROUGE-L

参照文のトークン列 XX の長さを mm、仮説文のトークン列 YY の長さを nn、最長共通部分列の長さを LCS(X,Y)LCS(X,Y) とすると、

RLCS=LCS(X,Y)m,PLCS=LCS(X,Y)nR_{LCS}=\frac{LCS(X,Y)}{m}, \qquad P_{LCS}=\frac{LCS(X,Y)}{n}

を FβF_\beta へまとめます。Lin の式は β\beta で再現率/適合率の重みを変えられますが、rouge-score が返す fmeasure は β=1\beta=1 の F1F_1 です。部分列は順序を保ちますが、連続している必要はありません。

観点:同じ要素が同じ順序で現れる被覆。固定幅 nn-gram より長い依存を拾える一方、離れた一致も 1 本の部分列にできます。

実装では、テキスト全体を 1 系列として比較する文単位の rougeL と、文ごとの和集合 LCS を計算する要約単位の rougeLsum を区別する必要があります。rouge-score 0.1.2 の rougeLsum は、既定の split_summaries=False では改行を文境界とし、True なら NLTK の既定の文トークナイザーを使います。後者は NLTK と Punkt 資源に依存し、日本語文分割器ではないため、その版・資源も固定します。要約評価で派生形、改行、split_summaries を取り違えると値が変わります。

ROUGE-W / ROUGE-S / ROUGE-SU

  • ROUGE-W:重み付き LCS。連続して長く一致する部分へ、分断された同長の一致より大きな重みを与える。
  • ROUGE-S:順序を保つ 2 語の組であるスキップバイグラムの重複。語間距離の上限を設定できる。
  • ROUGE-SU:スキップバイグラムにユニグラムを加え、短文やスキップバイグラムがない場合を補う。

現在の実務で頻繁に報告されるのは ROUGE-1、ROUGE-2、ROUGE-L/Lsum で、本稿で版を固定した rouge-score 0.1.2 が実装するのも ROUGE-N と ROUGE-L/Lsum だけです。ROUGE-W/S/SU を報告するなら、別の実装とその派生形・パラメーターを明記します。


6. METEOR —— 単語を対応付け、語順の断片化を罰する

METEOR は、仮説文と参照文のユニグラム間に 1 対 1 の対応付けを作ります。2005 年版では完全一致、Porter 語幹化、WordNet 同義語などを使い、対応語数が最大になる写像を選び、曖昧なら交差の少ない写像を優先します。後続版では言い換え表、言語別語幹化器、モジュール重みなどが追加されています。

対応語数を mm とすると、

P=m∣h∣,R=m∣r∣P=\frac{m}{|h|}, \qquad R=\frac{m}{|r|}

です。一般化された重み付き調和平均を

Fα=PRαP+(1−α)RF_\alpha = \frac{PR}{\alpha P+(1-\alpha)R}

と書けます。2005 年版の α=0.9\alpha=0.9 は

Fmean=10PRR+9PF_{mean}=\frac{10PR}{R+9P}

となり、再現率に強い重みを置きます。

次に、対応付けを、対応語が仮説文・参照文の両方で隣接し同順に並ぶ最大連続列へ分割します。この最少個数の連続列をチャンクと呼びます。チャンク数を chch とすると、一般形の断片化ペナルティーは

Penalty=γ(chm)θPenalty=\gamma\left(\frac{ch}{m}\right)^\theta

最終スコアは

METEOR=(1−Penalty)FαMETEOR=(1-Penalty)F_\alpha

です。対応が一つもなく m=0m=0 の場合は、0 とするのが標準的な実装規約です。複数参照の文 METEOR は各参照文とのスコアの最大値を取るのが 2005 年版および NLTK の規則です。

2005 年版は γ=0.5,θ=3\gamma=0.5,\theta=3 を使いました。Meteor Universal などの後続版は、言語・タスクに応じてパラメーターやマッチング資源を調整するため、2005 年版の定数をすべての METEOR 実装へ当てはめてはいけません。

この断片化ペナルティーでは、非空の完全一致も有限長なら厳密には 1 になりません。長さ L=mL=m の完全一致は P=R=1P=R=1、ch=1ch=1 なので、2005 年版および NLTK の既定値では

METEORexact=1−12L3METEOR_{\mathrm{exact}}=1-\frac{1}{2L^3}

です。したがって 1 トークンなら 0.5、2 トークンなら 0.9375 です。これは計算上の境界特性であり、完全一致を常に 1 とする EM や F1 値とは尺度が異なります。

観点:単語単位の語彙的な適切さを適合率/再現率で測り、一致語が同じ順序でまとまっているかを断片化ペナルティーで測ります。

表層指標との境界:完全一致/語幹一致だけなら表層・形態的ですが、同義語/言い換えを使うと語彙資源に基づく限定的な意味的一致へ踏み込みます。それでも文脈依存の語義、否定、数値、論理関係は理解しません。利用可能な資源が言語ごとに違うため、言語間で値を比べるときは使った資源の違いも考慮します。

実装上の注意:以下の NLTK と CMU Meteor は、同じ名前でもマッチング資源、探索、集約 API が異なります。

NLTK 3.10.0 の meteor_score は公式 Meteor 1.5 のラッパーではありません。参照文と仮説文にトークン化済みの Iterable[str] を要求し、生文字列は TypeError にします。既定では各トークンを str.lower し、完全一致、Porter 語幹化、NLTK の英語 WordNet 同義語の順に未対応語を貪欲に対応付けます。既定引数は alpha=0.9、beta=3.0、gamma=0.5 で、ここでの beta は上式の θ\theta に相当します。複数参照では文スコアの最大値を取り、空のトークン列を含む組は 0 ですが、参照文の反復可能オブジェクト自体が空だと max() が失敗します。言い換え、言語・タスク別重み、コーパス API はなく、Unicode 正規化も行いません。WordNet データとトークナイザー/資源の版も固定する必要があり、この英語向け既定値を日本語へそのまま使うべきではありません。

一方、CMU の Meteor 1.5 配布物(公式ソースの固定コミット 57a9ec5d5f65b8ceca6db5788ef876f3726614b3)は完全一致/語幹/同義語/言い換えの利用可否、モジュール重み、言語・タスク別の調整済みパラメーター、既定ビーム幅 40 の対応付け探索を持ちます。日本語は同梱の完全/部分対応言語に含まれず、-l other は完全一致と言語非依存の採点パラメーターを選ぶため、必要な分かち書き・トークン化・小文字化を利用者が行います。またシステム単位のスコアは、選択された対応付けの仮説文長・参照文長・重み付き一致数・チャンク数などの十分統計量をコーパス全体で合計してから算出するため、文 METEOR の算術平均とは一般に一致しません。

同梱 README の見出しとソース中の Constants.VERSION は 1.5 ですが、README 内に貼られたヘルプと出力例は旧 1.4 の文字列を残しています。埋め込み例の表示を配布版番号と誤認せず、コミットと実行時の Eval ID を保存します。公式リポジトリーには 2026-07-13 時点でこのコミットより後の変更やリリースタグはありません。


7. CIDEr —— 複数参照への語彙的一致を TF-IDF で集約する

CIDEr は画像キャプション評価のために設計され、人手参照集合への類似度を、人間の記述に関する合意の代替指標として使います。多くの画像の参照文で頻出する nn-gram を軽くし、その画像の参照文に比較的特徴的な nn-gram を重くします。

以下の CIDEr-D の式と、指標の攻略への対策は、2015-06-03 の arXiv v2/CVPR 採録本文に基づきます。実装の挙動は、COCO Caption Evaluation の固定コミット 3a9afb2682141a03e1cdc02b0df6770d2c884f6f のものです。

画像集合を I\mathcal I、nn-gram 語彙を Ω\Omega とします。原論文の TF と IDF は

tf⁡g(s)=Cs(g)∑g′∈ΩCs(g′),idf⁡g=log⁡∣I∣∑p∈I1 ⁣[∑jCspj(g)>0]\operatorname{tf}_g(s)= \frac{C_s(g)}{\sum_{g'\in\Omega}C_s(g')}, \qquad \operatorname{idf}_g= \log\frac{|\mathcal I|} {\sum_{p\in\mathcal I}\mathbf{1}\!\left[\sum_j C_{s_{pj}}(g)>0\right]}

で、[gn(s)]g=tf⁡g(s)idf⁡g[\mathbf{g}_n(s)]_g=\operatorname{tf}_g(s)\operatorname{idf}_g とします。IDF の文書は個々の文ではなく画像であり、その画像の参照文のいずれかに gg があれば 1 回だけ数えます。原版 CIDEr は、計数前に候補文・参照文の語を語幹/語根へ写します。候補文 cic_i と、画像 ii に対する KK 個の参照文 sijs_{ij} のスコアは

CIDErn(ci,Si)=1K∑j=1Kgn(ci)⋅gn(sij)∥gn(ci)∥ ∥gn(sij)∥CIDEr_n(c_i,S_i)=\frac{1}{K}\sum_{j=1}^{K} \frac{\mathbf{g}_n(c_i)\cdot\mathbf{g}_n(s_{ij})} {\|\mathbf{g}_n(c_i)\|\,\|\mathbf{g}_n(s_{ij})\|} CIDEr(ci,Si)=∑n=14wnCIDErn(ci,Si)CIDEr(c_i,S_i)=\sum_{n=1}^{4}w_n CIDEr_n(c_i,S_i)

で、通常は wn=1/4w_n=1/4 です。

どちらかのベクトルのノルムが 0 ならコサイン類似度の商は数学的に未定義で、その次数を 0 点とするのは実装規約です。文字列が完全一致していても、この規約は上書きされません。コーパス CIDEr は、固定した画像集合から IDF を一度推定し、その同じ IDF で求めた画像ごとの上式を算術平均した値です。

観点:候補文の TF-IDF nn-gram ベクトルが、同じ入力に付いた各参照文ベクトルと平均的にどれだけコサイン類似するか。

強み:全参照文との平均なので、最良の参照文だけを選ぶ指標より参照集合全体を利用します。TF-IDF は、評価集合の多くの入力で現れる定型表現より、その入力の参照文を他入力から区別する nn-gram を相対的に重くします。

弱みと表層指標との境界:「合意」は、各事例の少数参照文に対する平均語彙類似度を人間の合意の代替指標とする設計概念です。式は、ある nn-gram を参照者の過半数が使ったかを直接数えず、複数人が共有した意味命題、画像への忠実性、文法性も直接判定しません。候補文が 1 参照文だけと強く一致して他と一致しなければ、その高い参照文別のコサイン類似度も平均へ 1/K1/K だけ寄与します。IDF も意味重みではなく、評価参照コーパスにおける入力単位の希少度です。

CIDEr-D はベンチマーク向けの派生で、語幹化を外し、nn-gram の出現数クリッピング、候補文と参照文の長さ差に対するガウス型ペナルティー、スコアの倍率 10 を導入します。原論文の式は

CIDEr-Dn(ci,Si)=10K∑j=1Kexp⁡ ⁣(−(ℓ(ci)−ℓ(sij))22σ2)min⁡(gn(ci),gn(sij))⋅gn(sij)∥gn(ci)∥ ∥gn(sij)∥CIDEr\text{-}D_n(c_i,S_i)=\frac{10}{K}\sum_{j=1}^{K} \exp\!\left(-\frac{(\ell(c_i)-\ell(s_{ij}))^2}{2\sigma^2}\right) \frac{\min(\mathbf{g}_n(c_i),\mathbf{g}_n(s_{ij}))\cdot\mathbf{g}_n(s_{ij})} {\|\mathbf{g}_n(c_i)\|\,\|\mathbf{g}_n(s_{ij})\|}

で、min⁡\min は要素ごと、σ=6\sigma=6 です。最後に CIDEr と同様、通常は n=1,…,4n=1,\ldots,4 を一様平均します。したがって CIDEr と CIDEr-D は、前処理も数値尺度も異なります。

さらに実装差があります。論文の式 (1) は正規化 TF を書きますが、COCO Caption Evaluation の参照コードは生の出現数 ×\times IDF を使います。通常のコサイン類似度による CIDEr では次数ごとの定数倍が相殺されますが、クリッピングを含む CIDEr-D では独自再実装が同値とは限りません。同コードの pycocoevalcap/cider はクリッピング、ガウスペナルティー、10 倍を実装しながらメソッド名を CIDEr と返すため、COCO 系ベンチマークで表示された「CIDEr」は実質的に CIDEr-D 型であることがあります。

COCO の標準処理手順は、採点器の前に Stanford PTBTokenizer を実行し、小文字化して固定リストの句読点トークンを除きます。これは日本語分かち書き器ではありません。Cider / CiderScorer を直接呼ぶ場合、この処理は走らず、採点器自体は空白区切り済み文字列を単純な split() で読むだけで、Unicode 正規化もしません。また同参照コードは、渡された評価対象の参照群から画像単位の文書頻度を計算します。1 画像だけの採点器を個別に作ると、観測された nn-gram の IDF は log⁡(1/1)=0\log(1/1)=0 となり、完全一致でも 0 です。ラッパーは各画像に少なくとも 1 件の参照項目を要求し、通常の非空参照文に対する空候補文は 0 ですが、参照コーパス全体に nn-gram が一つもない場合は文書頻度の検査が失敗し得ます。日本語へ別のトークナイザーを使えば COCO 標準値とは別の派生形です。処理手順、参照集合、トークナイザー、コードのコミットをまとめて固定します。

注意:IDF は評価コーパスと参照集合に依存するため、別データセットの CIDEr は直接比較できません。また参照が少ない、相互に依存する、または注釈者母集団を代表しない場合、参照集合への平均一致を広い「人間の合意」と読む根拠は弱くなります。


8. 同じ差分を複数指標で見る

8.1 1 トークンだけ異なる 2 つの出力

次の 2 つの出力は、どちらも参照文と 1 トークンだけ異なります。

参照文: refunds within thirty days
出力 A:  refunds within thirty
出力 B:  refunds within sixty days

以下は、大文字小文字を区別した空白区切りトークン、単一参照を前提とします。トークン編集率は単位コストの dLev(r,h)/∣r∣d_{\mathrm{Lev}}(r,h)/|r|、BLEU-1 はこの 1 事例をコーパス全体とした未平滑化式です。4 トークンの参照文に対し、どちらの出力も 3 トークンが一致します。

指標出力 A出力 B読み方
完全一致00どちらも完全一致ではない
トークン適合率3/3=1.003/3=1.003/4=0.753/4=0.75A は出力した全語が参照文内。B の sixty は不一致
トークン再現率3/4=0.753/4=0.753/4=0.753/4=0.75A は days、B は thirty を回収していない
トークン F1F_16/7≈0.8576/7\approx0.8570.750.75過不足を均衡した表層評価では A が上
Jaccard3/4=0.753/4=0.753/5=0.603/5=0.60和集合に対する重複でも A が上
トークン編集率1/4=0.251/4=0.251/4=0.251/4=0.25参照文から出力へ、A は削除 1 回、B は置換 1 回
BLEU-1e1−4/3≈0.7165e^{1-4/3}\approx0.71650.750.75A は p1=1p_1=1 だが BP、B は p1=0.75p_1=0.75 で BP は 1

出力 B は期限を 30 日から 60 日へ変えており、意味的には重大な誤りです。それでも編集率では A と B が同じで、BLEU-1 では B が A を上回ります。どの指標も意味上の重要度を定義に含めていないため、計算どおりの結果です。

8.2 重複回数と語順

重複トークンを残す多重集合と、重複を捨てる集合では結果が変わります。

参照文: red red blue
出力:   red blue blue

red と blue がそれぞれ 1 回ずつ対応するため M=2M=2 です。

定義値
トークン適合率/再現率2/3≈0.6672/3\approx0.667
トークン F1F_1 = 多重集合 Dice2/3≈0.6672/3\approx0.667
多重集合 Jaccard2/(3+3−2)=1/22/(3+3-2)=1/2
集合 Jaccard2/2=12/2=1

集合 Jaccard が 1 になるのは、両方を {red, blue} に変換し、出現回数の違いを定義上捨てるためです。

次に語順を反転します。

参照文: dog bites man
出力:   man bites dog
指標値理由
完全一致00系列全体は異なる
トークン適合率/再現率/F1F_1113 トークンの多重集合は同じ
多重集合 Jaccard11多重集合の和と共通部分が同じ
トークン編集率 dLev/∣r∣d_{\mathrm{Lev}}/\lvert r\rvert2/32/3先頭と末尾の 2 置換が必要
ROUGE-L F1F_11/31/3LCS 長は 1
未平滑化 BLEU-200p1=1p_1=1 だが p2=0p_2=0

トークン多重集合の満点は役割反転を見逃し、系列指標は順序差を数えます。ただし系列指標も、どちらの意味が正しいかは判定しません。

8.3 完全一致、短文、空入力

次表の「非空」は前処理後に各指標の単位が残る場合を指します。数式は 0–1 尺度、sacreBLEU の名を出す行だけは同実装の 0–100 尺度です。

指標・派生形非空の完全一致 h=rh=rh=r=∅h=r=\varnothing
完全一致1111
トークン P/R/F1F_111通常式は 0/00/0。SQuAD 2.0 F1 値は規約で 11
Jaccard / Dice11通常式は 0/00/0。00 か 11 かを実装で決める
Levenshtein 距離0000
WER / CER00通常式は未定義。JiWER 4.0.0 は 00
TER00通常式は未定義。sacreBLEU 2.6.0 は 00
BLEU-NN必要な全次数が存在すれば 11一般的な実装規約は 00
chrFsacreBLEU 既定は 100100sacreBLEU 既定は 00
ROUGE-N / ROUGE-L必要な nn-gram があれば 11 / ROUGE-L は 11rouge-score 0.1.2 はすべて 00
METEOR(2005/NLTK 既定)1−1/(2L3)1-1/(2L^3)NLTK は 00
CIDEr / CIDEr-D全参照と一致し全加重次数が非ゼロなら 11 / 1010ゼロノルムの次数は 00。全参照コーパスが空なら COCO 採点器は失敗し得る

CIDEr は全参照文との平均なので、候補文が 1 参照文だけと完全一致しても満点は保証されません。また完全一致でも、IDF が全要素を 0 にすればゼロベクトルとなり、COCO 採点器を 1 画像だけで作った場合(7 節)のように 0 になります。

短い完全一致も高次 nn-gram の空分母を解消しません。

参照文: a b
出力:   a b

BLEU-4 の p3,p4p_3,p_4 は分子・分母とも 0 です。sacreBLEU 2.6.0 の BLEU().sentence_score は既定の effective_order=False なら 0、BLEU(effective_order=True).sentence_score なら存在する 1-gram と 2-gram だけを使って 100 を返します。同様に rouge-score の ROUGE-3 は、完全一致でも空のトライグラム多重集合に対する規約で 0 です。

片側だけが空の場合も、分母の向きと実装を分けます。

単一参照のケース代表的な結果
r≠∅r\ne\varnothing かつ h=∅h=\varnothingdLev=∣r∣d_{\mathrm{Lev}}=\lvert r\rvert。参照文から仮説文へ向かう WER/CER は全削除で 1、仮説文から参照文へ向かう通常の単一参照 TER は全挿入で 1。SQuAD F1 値、BLEU、rouge-score、NLTK METEOR、通常の非空参照文に対する COCO CIDEr は 0
r=∅r=\varnothing かつ h≠∅h\ne\varnothing参照長で割る通常式は未定義。SQuAD F1 値、BLEU、rouge-score、NLTK METEOR は 0。JiWER と sacreBLEU TER は次節の別々の特別規約を使う

8.4 複数参照と 100% を超える誤り率

BLEU は nn-gram ごとに参照文の最大出現数を求めるため、別々の参照文から一致を組み合わせられます。

参照文 1: a b x
参照文 2: y b c
出力:     a b c

出力はどちらの参照文とも完全一致しません。しかし a b は参照文 1、b c は参照文 2 にあり、ユニグラムもすべて少なくとも一方にあります。したがって BLEU-2 は p1=3/3=1p_1=3/3=1、p2=2/2=1p_2=2/2=1、BP=1BP=1 から 11 です。これは BLEU の複数参照クリッピングの意図どおりの結果です。

誤り率の 100% 超は、非空参照でも起こります。

参照文: a
出力:   a x y

参照文から出力への WER の対応付けは S=0,D=0,I=2S=0,D=0,I=2 なので、WER=2/1=2WER=2/1=2、すなわち 200% です。この例の TER も 200% ですが、仮説文を参照文へ直す向きなので操作は余分な x y の 2 削除であり、それを 1 参照トークンで割ります。文字列 a と axy なら CER は WER と同じく 2 挿入で 200% です。

一方、参照文が完全に空で出力が x y のとき、通常の商は未定義です。JiWER 4.0.0 は挿入数そのものを返すので WER は 2 ですが、sacreBLEU 2.6.0 TER は「全参照文が空で仮説文が非空」という特別規約で 100 を返します。非空参照文に対する通常計算の 200% とは別の値です。

8.5 定義から作る敵対的反例 —— 高得点は何で攻略できるか

以下の反例が示すのは計算の誤りではなく、指標が測った表層的一致をタスク品質そのものと読み替えたときに生じる偽陽性/偽陰性です。クリッピング、F 値、BP、断片化ペナルティーには個別の抜け道を狭める効果がありますが、どれも意味・事実・タスク成功を証明しません。

参照文: alpha beta
出力:   alpha beta beta beta

多重集合一致は M=2M=2 です。トークン再現率と ROUGE-1 再現率は 11、重複を捨てる集合 Jaccard も 11 のままです。一方、トークン適合率は 1/21/2、トークン F1F_1 は 2/32/3、多重集合 Jaccard は 1/21/2 です。クリッピングは余分な beta へ追加の一致加点を与えませんが、再現率だけのスコアや集合化の後のスコアを下げるわけでもありません。

参照文: a b c
出力:   a x b y c

x と y が根拠のない挿入でも、トークン再現率、ROUGE-1 再現率、ROUGE-L 再現率はすべて 11 です。ROUGE-L は a b c を非連続な部分列として回収でき、適合率は 3/53/5、F1F_1 は 3/43/4 になります。一般に、参照文全体を順に含めたまま任意の文字列を挿入すると ROUGE-L 再現率は下がりません。ROUGE-N 再現率も、候補文が参照文の全 nn-gram を含む限り、余分な反復・追記では下がりません。

固定幅の局所順序しか見ない指標は、長いブロックの入れ替えで攻略できます。互いに異なるトークンからなる長さ qq のブロック A,BA,B を用意し、参照文を ABAB、仮説文を BABA とします。両ブロック内の順序は保ち、語彙はすべて一致させます。

  • トークン多重集合の P/R/F1F_1 と多重集合 Jaccard は 11 です。
  • 1≤n≤q1\le n\le q のトークン nn-gram で、境界をまたぐ nn-gram が互いに一致しない単純な場合、BLEU の pnp_n と単一参照文の ROUGE-N 再現率はともに 2(q−n+1)/(2q−n+1)2(q-n+1)/(2q-n+1) です。異なるのは境界付近だけなので、固定した最大次数に対して q→∞q\to\infty で 11 へ近づきます。chrF も固定次数なら、長いブロック内の文字 nn-gram の大半を保持するため同じ局所性を持ちます。
  • METEOR では全 2q2q 語が対応し、チャンクは 22 個です。2005/NLTK 既定値なら P=R=1P=R=1 なので、スコアは 1−12q31-\frac{1}{2q^3} です。q=10q=10 でも 0.99950.9995 になります。断片化ペナルティーは移動距離やブロックの意味役割ではなく、ch/mch/m だけを見ます。
  • TER は一方のブロックを 1 回移動すればよいため、編集率は高くても 1/(2q)1/(2q) です。これは TER の操作体系に忠実な値で、語順変更の意味上の重要度や実際の編集時間は反映しません。
  • ブロックが同長で相互にトークンを共有しなければ、ROUGE-L F1F_1 は 1/21/2 です。NTT RIBES 1.03.1 の正規化 Kendall 値は (q−1)/(2q−1)(q-1)/(2q-1) で、q→∞q\to\infty では 1/21/2 へ近づきます。LCS と順位相関は、この例では固定幅 nn-gram やチャンク数より大域順序を強く反映します。

一方、RIBES も内容の十分性を保証しません。同固定実装で、参照文の全トークンを同順に保ちながら同数の未対応トークンを挿入すると、NKT=1NKT=1、P=1/2P=1/2、BP=1BP=1 なので、既定値では RIBES=(1/2)0.25≈0.841RIBES=(1/2)^{0.25}\approx0.841 です。未対応の内容が影響するのはユニグラム適合率だけで、その指数も版固定の 0.250.25 です。

主要な偽陽性・偽陰性と、それを見抜くための対抗診断を次の表にまとめます。

指標・設計族高得点/低誤りを品質と誤読しやすい条件低得点/高誤りを品質不良と誤読しやすい条件定義から必要になる対抗診断
完全一致誤った・古い・漏洩した参照文をそのまま複製した場合、または TT が意味のある差を畳み込んだ場合許容される別表記・言い換え生の差分、スキーマ、型・範囲、正規化器の衝突テスト
トークン P/R/F1F_1適合率だけなら正しい短い断片、再現率だけなら参照語を含む過長出力で満点になり得る。F1F_1 も語順反転と、長文中の否定・数値・固有名詞 1 語の置換を重要度どおりには扱わない表層語を共有しない正しい同義表現P/R の分離、出力長・反復率、スロット・否定・数値・固有表現の完全一致検査
集合/多重集合 Jaccard・Dice集合版は反復回数を完全に捨て、両版とも語順を捨てる。Dice は同じ多重集合ならトークン F1F_1 と同じ弱点を持つ同義語・表記揺れ集合/多重集合の明記、頻度差、系列指標、意味診断
Levenshtein・WER・CER長い参照文中の 1 置換は低率でも、not、30、単位、人物名の置換なら致命的になり得る正しい言い換え、トークナイザー・Unicode 単位の違い重要トークンの重み付き誤り/項目単位の誤り、固有表現・数値の必須条件、同一 TT
TER長い句の大域移動を 1 回の句移動と数えるため、上のブロック交換のように意味役割が変わっても低率になり得る許容される言い換えが TER 操作を多く要する場合句移動の内訳、後編集時間の実測、語順・意味評価
BLEU・NIST・Google/GEC GLEU参照断片の局所的な継ぎ合わせ、固定幅より長いブロック移動、BLEU の複数参照間 nn-gram 合成で高くなり得る。コーパス BP は全体長だけを見るため、難しい事例の空/短出力を別事例の長さで相殺できる。NIST の希少 nn-gram 重みも、希少な誤記や漏洩断片を意味的重要性として保証しない正しい同義表現・語順変更、トークン化が異なる出力次数別の一致数/出現数、BP と事例別長さ、原文考慮型 GLEU は GEC だけに限定、意味・重大誤り評価
chrF / chrF++綴りが似た別語・別固有名詞、長いブロックの入れ替え、参照文の文字断片のコピーに高い部分点を与え得る綴りを共有しない同義語、別の文字体系・転写、正準等価だが未正規化の文字列Unicode・空白設定、語/固有表現単位、長距離順序・意味評価
ROUGE-N再現率だけなら参照文の nn-gram を含む過長出力、反復、原文・参照断片の列挙を直接は罰しない抽象的要約や正しい言い換えP/R/F1F_1 の成分、長さ・冗長性、主張の被覆と事実性
ROUGE-L / RIBESROUGE-L 再現率は参照文を部分列として埋め込めば 11。RIBES は未対応語を順位相関から外し、適合率の弱い指数でだけ罰する版がある語彙を共有しない正しい再構成再現率だけの使用を避け、未対応トークン・長さ・主張と合わせる。版と alpha/beta を固定する
METEOR語幹の衝突、誤った語義の同義語(NLTK の既定は文脈・品詞を限定せず WordNet の全同義語集合を見る)、少数チャンクからなる大域移動で高くなり得る資源にない同義語・言い換え、非対応言語完全一致/語幹/同義語のモジュール別内訳、資源・言語の固定、意味・語順診断
CIDEr / CIDEr-D原版 CIDEr は高信頼度の語を長い文で反復すると上がり得ることを原論文自身が報告する。CIDEr-D はクリッピングとガウス関数で緩和するが、希少な参照文の nn-gram のコピー、局所的な継ぎ合わせ、画像にない内容の真偽は判定しない参照文にない正しい物体表現・同義語、IDF が 0 のコーパス共通表現同一の参照集合で IDF を固定し、物体・属性・関係の正しさ、人間評価、反復・長さを別に検査

表中の RIBES の alpha/beta は同実装の指数パラメーターです。METEOR の同名パラメーターや FβF_\beta とは別です。

複数参照の効果は、集約規則によって異なります。8.4 節の BLEU は nn-gram ごとに別の参照文の最大出現数を使うため、一つの参照文にない合成を許します。rouge-score、chrF、METEOR、RIBES の固定実装は参照文ごとの最大値を選ぶため、同じ合成はしませんが、参照集合全体への合意も要求しません。しかも rouge-score.score_multi は ROUGE の派生形ごとに別の最良参照文を選び得ます。CIDEr は全参照文との平均なので 1 参照文だけの丸写しを 1/K1/K に薄めますが、参照外の真実や入力への忠実性は検査しません。

前処理を出力確認後に選ぶこと自体が指標の攻略になります。SQuAD 2.0 の固定正規化器では ASCII 句読点を削除するため、商品コード A-10 と A10 はともに a10 となり EM が 11 です。一方、NFC を行わない実装では見た目が同じ合成済み/結合文字列が不一致になります。rouge-score 0.1.2 の ASCII トークナイザーは日本語を空列にします。候補文を見てから小文字化、語幹化、句読点除去、トークナイザーを選び、有利な設定だけを報告してはいけません。TT、実装、版、変換済みデータのハッシュ値を評価前に固定します。

CIDEr の IDF はデータセット固有です。gg が評価集合の全入力の参照文に現れれば idf⁡g=log⁡(∣I∣/∣I∣)=0\operatorname{idf}_g=\log(|\mathcal I|/|\mathcal I|)=0 で、その nn-gram は一致しても寄与しません。逆に 1 入力だけの希少な誤記・固有表現にも大きな重みが付きます。COCO 固定コードは渡された self.crefs から文書頻度を再計算するため、同じ候補文・参照文の組でも一緒に採点する画像集合が変われば値が変わり得ます。部分集合ごとに採点器を作り直した値を、全体の採点器で得た部分集合の値と同じ尺度として比較しません。

評価器が採点時に参照文を読むことと、参照漏洩(reference leakage)は別です。漏洩は、本来封印すべきテスト参照文、参照由来の IDF・語彙、または反復的なテストスコアのフィードバックが、候補生成・プロンプト/チェックポイント選択・前処理選択へ入ることです。表層指標は正当な生成と漏洩コピーを識別できません。テスト参照文を非公開に保ち、調整は開発用データだけで行い、学習/開発/テストデータの完全一致・近重複を監査し、提出回数と選択履歴を保存します。

表層指標は「何文字違うか」「どれだけ重なるか」には正確に答えられます。しかし、その差が業務上どれほど危険かを判断するには、スロット比較、数値・否定の検査、含意・矛盾判定、タスク固有ルーブリックなど別の評価が必要です。


9. 指標の選び方 —— タスクの壊れ方から逆算する

次表の表層指標は、固定した診断項目の入口として使い、単独で学習報酬、チェックポイント選択基準、受け入れ条件にはしません。厳密な出力契約に対するスキーマ/EM の必須条件を除き、高い表層値が別の重大失敗を相殺する設計にはしません。

タスク固定する表層診断(単独の目標にしない)理由独立に通す受け入れ条件・補完評価
分類ラベル、ID、厳密 JSON完全一致/スキーマ検証許容出力を厳密に定義できる型・範囲・業務制約
抽出型 QA、固有表現の短答正規化 EM+トークン F1 値完全一致と境界差の両方を見る複数正解、数値・単位チェック
ASRWER+CER語単位と文字単位の転記誤りを分離固有名詞、意味的重要語、話者別の部分集合
OCRCER/編集距離表記修正量を直接測る配置、項目単位の正解率
機械翻訳コーパス BLEU+chrF/chrF++;必要なら RIBES局所トークン nn-gram 適合率、文字断片の P/R 型重複、大域的な一致語順を分離意味ベース指標、人間評価
要約ROUGE-1/2+ROUGE-Lsumユニグラム/バイグラムと順序付き部分列の参照被覆を見る事実性、必須の主張、冗長性
画像キャプションCIDEr-DTF-IDF nn-gram で全参照との平均一致を取る物体・関係の正しさ、人間評価
自由形式 LLM 応答EM/ROUGE/chrF は診断用回帰時の表層変化を安く追える主張/スロット、根拠との整合性、NLI、人間/LLM 判定器

異なる失敗を検出する指標は、1 つの値に集約せず並べて報告します。たとえば翻訳で BLEU と chrF が同時に上がっても、確実に言えるのは、固定した設定の二つの複合スコアが上がったことだけです。BLEU は次数別 pnp_n と BP、chrF は適合率/再現率の内訳を確認して初めて、どの表層成分が改善したかを説明できます。両者が上がって意味評価が下がったなら、参照文の言い回しへ表層的に近づいただけかもしれません。

指標最適化によるグッドハート型の失敗を抑える運用は、次の順序にします。

  1. 先に守る性質と、他の値で相殺できない重大誤りを定義する。否定・数値・単位・固有名詞・安全上の禁止事項などは、こうした必須条件として扱う。
  2. 開発用データと封印したテストデータを分ける。プロンプト、チェックポイント、前処理、重み、しきい値は開発用データだけで選び、テスト参照文・CIDEr IDF・スコアのフィードバックを候補生成へ戻さない。提出回数と選択履歴も残す。
  3. 出力を見る前に測定を固定する。TT、実装コミット、参照順、集約、主要指標、部分集合、許容差を事前登録し、複数設定から最も有利な値を選ばない。
  4. 変形テストを用意する。反復追加、参照断片+無関係文、長短化、長いブロック交換、同義の言い換え、否定・数値・固有表現の置換、Unicode・トークナイザーの差、複数参照のキメラを課題集合にし、期待するスコアの向きとタスクの必須条件を別々に検査する。
  5. 最適化用指標と監査用評価を独立にする。表層指標を学習報酬に使うなら、非重複の参照文・別設計の意味/事実評価・人手監査で報酬の攻略を検出し、総合 1 数値だけでリリースしない。

10. 表層マッチング指標が共通して見落とすもの

10.1 正しい言い換えを偽陰性にする

参照文は正解集合の 1 標本にすぎません。参照数が少ないほど、指標は妥当な同義表現、説明順序、情報の粒度を不一致として罰します。複数参照は緩和策ですが、可能な表現を網羅しません。

10.2 小さな文字差の重大性を理解しない

否定、数値、単位、日付、固有名詞、主体・客体の交換は、表層距離が小さくても意味を反転させます。逆に、大幅な言い換えは意味を保っていても表層距離が大きくなります。

10.3 参照自体の誤りや偏りを継承する

指標は参照文を真実と仮定します。参照文が古い、不完全、文体的に偏る、注釈者間で不一致なら、スコアもその問題を継承します。複数参照文を増やすだけで正確性が保証されるわけではありません。

10.4 文書全体の論理や事実性を直接測らない

nn-gram と LCS は語順をある程度見ますが、因果関係、照応、談話構造、複数文間の矛盾、外部事実との整合を直接検査しません。ROUGE が高い要約でも、原文にない事実を追加できます。

10.5 平均値が重要な部分集合を隠す

コーパススコアが改善しても、特定言語、長文、固有名詞、数値を含む事例で悪化しているかもしれません。全体値に加え、事例分布、長さ別・ドメイン別の部分集合、最悪事例を確認します。

10.6 小さなスコア差を、そのまま品質差と呼べない

相関の水準を分けます。自動指標と人間判断の相関には、少なくとも次の二つがあります。

水準相関に入る 1 観測自動指標側人間判断側主に答える問い
文/セグメント単位あるシステムのある事例への出力明示した文指標同じ出力への評定または順位個々の出力間の品質差と指標値が同じ向きに動くか
システム/コーパス単位一つのシステム全出力から得たコーパススコアそのシステムの人間評定の集約値比較対象となったシステム群の総合順位・値が同じ向きに動くか

後者は自動スコアをコーパスで計算するためコーパス単位の相関とも呼ばれますが、相関の標本数は通常、文数ではなくシステム数です。二つの水準は別の推定対象であり、一方の高い相関から他方を導けません。高いシステム単位の相関は、各スコアが校正された品質確率であることも、特定の出力が正しいことも意味しません。Pearson、Spearman、Kendall のどれを使ったか、同順位、重み、複数システム・複数事例をどう集約したかも併記します。BLEU のセグメント単位の相関を調べるなら、原版のコーパス BLEU ではなく、平滑化と有効次数を固定した文単位の派生形であることを明記し、その平均をコーパス BLEU と呼びません。

Mathur et al. (2020) の主要な再分析対象は、WMT 2019 のシステムを観測単位とした Pearson 相関です。少数かつ近い品質のシステムだけでは相関が不安定で、人間スコア上の外れたシステムが相関を大きく押し上げたり結論を変えたりし得ることを示しました。さらに同データのシステム対を人間の直接評価(Direct Assessment)と照合し、1–2 BLEU 程度の差が人間判断上の真の改善に対応したのは約半数だったと報告しました。これは同論文の WMT 2019、システム集合、人間評価、検定手順に条件づけられた結果であり、1 BLEU や 2 BLEU を普遍的なしきい値にする根拠ではありません。

一つのシステムの区間と、二つのシステムの差を分けます。高いほど良い指標について、固定した同じ評価集合上のスコアを MA,MBM_A,M_B、差を

Δ=MA−MB\Delta=M_A-M_B

とします。低いほど良い WER や TER では、改善が正になるよう符号を反転するか、向きを明記します。一つのシステムに対するブートストラップ信頼区間は、MAM_A 自体の事例サンプリングに伴う不確実性を推定します。比較で必要なのは、同じ事例に対する対を保った Δ\Delta の分布、信頼区間、または帰無仮説検定です。MAM_A と MBM_B の別々の 95% 区間が重なるかだけで差を判定する方法は、対応のある比較と同値ではありません。非有意も「同じ」を証明せず、検出できる差に対してデータが不足している可能性を残します。

通常の事例ブートストラップが捉えるのは、固定したシステム出力、参照文、前処理、指標の下で、対象母集団から評価事例を取り直す不確実性です。学習のシード値、確率的復号、参照文の作成、注釈者、ドメインシフトによる変動は、それらも設計に沿って再実行または階層的に再標本化しない限り含みません。偏った評価集合を代表的にする機能もありません。

再標本化の単位は、独立に抽出された単位へ合わせます。各行が独立に抽出された項目である評価なら、事例単位のブートストラップは事例の添字を復元抽出し、対応のあるブートストラップでは同じ添字列を A と B の両方へ適用します。しかし一つの文書、対話、話者、利用者、スレッドから複数行が生じるなら、それらは一般に独立な事例ではありません。文書または対話をクラスターとし、クラスター全体を復元抽出します。対応のある近似ランダム化でも、帰無仮説の下で交換可能とみなす A/B ラベルをクラスター全体で入れ替えます。クラスター数が実効標本数なので、文が多くても文書が数個しかなければ区間と検定は不安定です。クラスターを同じ重みのマクロ単位にするのか、選ばれたクラスター内の全事例を集約後のコーパススコアへ入れるのかも、目的に応じて先に決めます。

各反復で、報告対象と同じ集約式を再計算します。マクロ平均が対象なら、抽出された単位スコアを平均します。WER のようなミクロ比率なら、抽出された編集数と参照長を集約してから割ります。BLEU、集約後の chrF、コーパス METEOR のような非線形のコーパス指標なら、抽出された事例の十分統計量を合計し、指標固有のコーパス式を最初から適用します。文 BLEU を計算して平均すると、点推定と再標本化で別の推定対象を検定することになります。

代表的な対応のある手順は次の二つです。

  • 対応のあるブートストラップ:同じ独立単位またはクラスターを復元抽出して A/B の両方を評価し、各反復の Δ∗\Delta^* を作る。Δ\Delta の区間推定や、指定したブートストラップ検定に使う
  • 対応のある近似ランダム化:差がないという帰無仮説の下で A/B が交換可能だと仮定し、各独立単位またはクラスターの A/B 出力を確率的に入れ替えてコーパススコア差を再計算する。観測差以上に極端な差の頻度から p 値を得る

どちらも対応関係と集約式を保つ必要があります。p 値は、帰無仮説と手順の下で観測値以上に極端な統計量が出る確率であり、帰無仮説が真である確率でも、改善の大きさでも、人間品質が上がった確率でもありません。片側/両側、反復数、シード値、同点をどう数えるかを固定します。

統計的有意性と実質的な効果量も分けます。設定を固定した指標値で表した Δ\Delta は、その指標尺度上の未標準化効果量です。小さい p 値でも Δ\Delta が業務上無視できることはあり、逆に幅広い区間を伴う非有意差は有用な改善を否定しません。コーパス BLEU が対象なのに、任意の文 BLEU 分布から Cohen's dd を作ってコーパス効果量とみなしてはいけません。加法的な事例指標なら対応のある事例差、二値の人間選好なら勝/負/同点や選好率など、推定対象に合う効果量を追加できます。

「0.3 BLEU」の実質的意味に普遍的な換算はありません。トークナイザー、参照文、テスト集合、比較するシステム範囲が変われば同じ差の意味も変わり、0–100 尺度の差を単純な「百分率改善」と読むこともできません。主要な指標、向き、実質的に重要な最小差 ε\varepsilon を結果を見る前に定め、同一タスクの人間選好、重大誤り率、後編集時間などへ外部的に校正します。Δ\Delta、Δ\Delta の区間、実スコア、診断用の部分集合を一緒に報告します。

複数のシステム、指標、言語、部分集合を試して p 値の小さいものだけを採用すると、偽陽性が増えます。どの比較を一つの検定群とするかを事前に定め、検定群全体の誤り率を抑えるなら Holm 法、探索的に偽発見率を管理する目的と仮定が合うなら Benjamini–Hochberg 法などを使い、未補正と補正済みの p 値、補正対象数を報告します。

sacreBLEU 2.6.0 の機能範囲は次のとおりです。

目的CLI既定反復数2.6.0 が行うこと
1 システムの区間--confidence(回数は --confidence-n)1,000行の添字を復元抽出し、十分統計量からコーパススコアを再計算して、実スコア、ブートストラップ平均、95% 信頼区間を出す
基準システムとの差の対応のあるブートストラップ--paired-bs(回数は --paired-bs-n)1,000最初の入力を基準システムとし、同じ行の添字を両システムへ使う。各システムの 95% 信頼区間と基準システム比の両側 p 値を出すが、Δ\Delta 自体の信頼区間は出さない
基準システムとの差の対応のある近似ランダム化--paired-ar(回数は --paired-ar-n)10,000行ごとに基準システム/比較システムの十分統計量を交換し、両側 p 値を出す。CLI はブートストラップ信頼区間を併記しない

乱数のシード値は既定で 12345 で、SACREBLEU_SEED から変更できます。これらは入力の各行を独立単位として扱い、docid を読み取って文書/対話クラスターを自動構成せず、複数システム・複数指標にわたる p 値の多重比較補正も行いません。したがって依存した行にはクラスターを考慮する別実装が必要です。

実務では、(1) 独立単位/クラスター、主要指標、集約式、向き、ε\varepsilon を事前定義し、(2) 同じ固定テスト集合上で MA,MB,ΔM_A,M_B,\Delta と内訳を計算し、(3) 対を保って同じコーパス統計量を再計算し、(4) Δ\Delta とその区間、検定法、p 値、反復数、シード値を報告し、(5) 多重比較を補正し、(6) 「品質改善」と主張するならタスクに即した人間評価または外部の結果指標で確認します。


11. 再現可能な評価のチェックリスト

最低限、次を評価結果と一緒に保存します。

  1. データ:データセット名、版、分割、参照文の由来、事例順、独立なサンプリング単位、文書/対話などのクラスター ID。
  2. 参照:参照数、可変参照の扱い、複数参照の集約規則。
  3. 前処理:Unicode 正規化、大小文字、句読点、空白、トークナイザー、辞書、語幹化。
  4. 指標仕様:指標名だけでなく派生形。例:ROUGE-L か Lsum、CIDEr か CIDEr-D、Google GLEU か GEC GLEU+。
  5. パラメーター:nn-gram 次数、重み、β\beta、長さペナルティー、平滑化、有効次数、参照サンプリングの反復数と乱数のシード値。
  6. 実装:ライブラリー名、バージョン、可能なら指標設定の署名。
  7. 集約:文/コーパス、ミクロ/マクロ、十分統計量と最終式、0 件・空文字の規約。
  8. 尺度:00–11、00–1010、00–100100 などのどれか、高い方/低い方のどちらが良いか。
  9. 不確実性と比較:推定対象、単独スコアか差 Δ\Delta か、区間推定法、独立単位/クラスター、対応のある検定、片側/両側、反復数、シード値、α\alpha、多重比較の検定群と補正法、実質的最小差 ε\varepsilon。
  10. 診断:全体値だけでなく、長さ・言語・ドメイン・重要な固有表現を含む部分集合。
  11. 最適化境界と漏洩:報酬/モデル選択に使った指標、学習/開発/テストデータの参照文の来歴、重複監査、テストスコアを見た回数、提出・選択履歴。CIDEr では IDF を作った入力集合も保存する。
  12. 敵対的な課題集合:反復、参照断片+無関係文、過短/過長、長いブロック交換、同義語、否定・数値・単位・固有名詞、複数参照のキメラ、Unicode・トークナイザーの差に対する期待挙動。

sacreBLEU 2.6.0 の署名は指標ごとに項目が異なります。BLEU では nrefs、case、eff、tok、smooth、version、chrF では nrefs、case、eff、nc、nw、space、version、TER では nrefs、case、tok、norm、punct、asian、version を保存します。chrF の β\beta は chrF2 のような指標名に現れます。一方、外部 Unicode 正規化、BLEU の変更した最大次数、外部分かち書き器や辞書は署名に入らないため、変換済み評価データのハッシュ値と依存関係の固定情報を別に保存します。ROUGE でもトークナイザー、語幹化器、rougeL / rougeLsum、split_summaries、複数参照規則、集約法を同様に固定します。

統計機能を使う場合は、sacreBLEU が追加するブートストラップ/近似ランダム化の回数とシード値を含む完全な署名、CLI オプション、入力順も保存します。署名はクラスター設計、多重比較の検定群、ε\varepsilon、外部で作った Δ\Delta の区間を記録しないため、それらは別の評価目録に残します。


おわりに —— 指標名ではなく「何を分子・分母にしたか」を読む

多くの表層マッチング指標の中核スコアは、入力・前処理・設定を固定すれば安価、高速、決定論的に計算でき、監査もしやすいため、大規模な回帰テストや失敗分析に今も役立ちます。参照サンプリングやブートストラップを含む手順では、決定論性のために乱数生成器とシード値も固定します。ただし、各数値が表すのは次の内容に限られます。

  • 完全一致は契約どおり同じか
  • トークン F1 値、Jaccard、Dice は要素がどれだけ重なるか
  • WER、CER、TER は定義した編集操作が参照単位あたりいくつ必要か
  • BLEU は仮説文の局所トークン nn-gram が参照文にも現れ、コーパス全体の仮説文長が有効参照文長より短すぎないか
  • chrF は文字断片を適合率/再現率の両面でどれだけ共有するか
  • ROUGE は参照文の語句や順序付き部分列をどれだけ被覆するか
  • RIBES は対応語の大域的な相対順序が参照文とどれだけ一致するか
  • METEOR は語彙的に対応するユニグラムがどれだけあり、同順かつ隣接してまとまるか
  • CIDEr は入力間で希少度を重み付けした nn-gram が、参照集合と平均的にどれだけ一致するか

評価を設計するときは、有名な指標を 1 つ選ぶのではなく、タスクで守りたい性質を定義し、対応する表層指標を安い診断器として使い、意味・事実・安全性・人間の許容判断を別の測定で補います。


参考文献

  1. Левенштейн, В. И. (1965). «Двоичные коды с исправлением выпадений, вставок и замещений символов». Доклады АН СССР, 163(4), 845–848. 英訳:Levenshtein, V. I. (1966), “Binary Codes Capable of Correcting Deletions, Insertions, and Reversals,” Soviet Physics Doklady, 10(8), 707–710.
  2. Rajpurkar, P., Zhang, J., Lopyrev, K., & Liang, P. (2016). SQuAD: 100,000+ Questions for Machine Comprehension of Text. EM とトークン F1 値を主要評価に採用。
  3. Papineni, K., Roukos, S., Ward, T., & Zhu, W.-J. (2002). Bleu: a Method for Automatic Evaluation of Machine Translation.
  4. Chen, B., & Cherry, C. (2014). A Systematic Comparison of Smoothing Techniques for Sentence-Level BLEU.
  5. Post, M. (2018). A Call for Clarity in Reporting BLEU Scores.
  6. Popović, M. (2015). chrF: character n-gram F-score for automatic MT evaluation.
  7. Popović, M. (2016). chrF deconstructed: beta parameters and n-gram weights.
  8. Popović, M. (2017). chrF++: words helping character n-grams.
  9. Lin, C.-Y. (2004). ROUGE: A Package for Automatic Evaluation of Summaries.
  10. Banerjee, S., & Lavie, A. (2005). METEOR: An Automatic Metric for MT Evaluation with Improved Correlation with Human Judgments.
  11. Denkowski, M., & Lavie, A. (2014). Meteor Universal: Language Specific Translation Evaluation for Any Target Language.
  12. Snover, M., Dorr, B., Schwartz, R., Micciulla, L., & Makhoul, J. (2006). A Study of Translation Edit Rate with Targeted Human Annotation.
  13. Vedantam, R., Zitnick, C. L., & Parikh, D. (2015). CIDEr: Consensus-Based Image Description Evaluation(arXiv v2, 2015-06-03、v1 初回投稿は 2014-11-20)。
  14. Mathur, N., Baldwin, T., & Cohn, T. (2020). Tangled up in BLEU: Reevaluating the Evaluation of Automatic Machine Translation Evaluation Metrics — WMT 2019 のシステム単位の Pearson 相関、外れ値、システム対における指標差と人間判断の対応を再分析。
  15. sacreBLEU 2.6.0、注釈付きタグの対象 2277caccfc7b956671a6a09f1646f62250034157 — タグと PyPI 公開はともに 2026-01-12 UTC。BLEU、chrF、TER の既定値、トークナイザー、空入力規約、指標設定の署名、--confidence、対応のあるブートストラップ、対応のある近似ランダム化の固定版実装。
  16. Google Research リポジトリー由来の rouge-score 0.1.2 — 2022-07-22 公開。配布物は SHA-256 c7d4da2683e68c9abf0135ef915d63a46643666f848e558a1b9f7ead17ff0f04 の sdist で固定し、版 0.1.2 を最初に記録する同日後続コミット 910758241597e44871c7029654f5ed7813dc3344 は近接リポジトリースナップショットとして区別する。ROUGE-N、ROUGE-L/Lsum、ASCII 既定トークナイザー、語幹化、ブートストラップを実装するが、README は Google の公式製品ではないと明記する。
  17. Popović の chrF++.py、コミット e96ea868b7451a006d281d8ed51b1b163dd8384b — 2017-06-14 に追加された同ファイル唯一の改訂。次数別 F 値、複数参照、文書/マクロ集約。
  18. Meteor 1.5 documentation(CMU 公式ソースのコミット 57a9ec5d5f65b8ceca6db5788ef876f3726614b3)— モジュール、パラメーター、十分統計量、システム単位の評価。README 内の一部実行例は旧 1.4 表示を残す。
  19. NLTK 3.10.0 METEOR、タグのコミット bd49f9011d7dc8c6a36b3c4ae71f04060c9b3fb9 — 2026-07-08 公開。トークン化済み入力、既定資源・パラメーター、複数参照、空入力の実装。
  20. JiWER 4.0.0、タグのコミット 19e88eae1815e7ca40db9b45b14af5f1f9d8b6ce — リリースコミットは 2025-02-03、PyPI 公開は 2025-06-19。WER/CER の操作数、ミクロ集約、既定変換、4.0 で導入した空参照規約。
  21. COCO Caption Evaluation、コミット 3a9afb2682141a03e1cdc02b0df6770d2c884f6f — 2018-04-23 の固定スナップショット。PTBTokenizer と COCO 系 CIDEr-D 型採点器(σ=6\sigma=6、クリッピング、10 倍、画像単位平均)の参照実装。本稿で引用する CIDEr/CIDEr-D の定義年ではない。
  22. Unicode Consortium. Unicode Standard Annex #15: Unicode Normalization Forms.
  23. SQuAD の公式 Explorer 評価コード(固定コミット 09eac9971f46889fa057ff2c870bf71092ba9d55):共通正規化器・最大参照・マクロ集約を使うブラウザー評価器 と SQuAD 2.0 Python スクリプト — 後者が空回答規約も実装。
  24. Zhang, T., Kishore, V., Wu, F., Weinberger, K. Q., & Artzi, Y. (2020). BERTScore: Evaluating Text Generation with BERT(arXiv v1 は 2019、ICLR 2020 OpenReview)— 文脈埋め込みによる参照トークンとの柔軟な対応付け。
  25. Rei, R., Stewart, C., Farinha, A. C., & Lavie, A. (2020). COMET: A Neural Framework for MT Evaluation — 原文と目的言語の参照文を使う学習型 MT 評価。
  26. Rei, R., et al. (2022). CometKiwi: IST-Unbabel 2022 Submission for the Quality Estimation Shared Task — 推論時に参照文を要求しない品質推定系列。
  27. Doddington, G. (2002). Automatic Evaluation of Machine Translation Quality Using N-gram Co-Occurrence Statistics. Proceedings of the Second International Conference on Human Language Technology Research, 138–145 — NIST 指標の一次資料。これは ACL Anthology の通常 ID 付き記録ではなく、同サイト上の MT Archive PDF ミラーである。
  28. Isozaki, H., Hirao, T., Duh, K., Sudoh, K., & Tsukada, H. (2010). Automatic Evaluation of Translation Quality for Distant Language Pairs — RIBES の一次資料。
  29. 平尾努, 磯崎秀樹, 須藤克仁, Duh, K., 塚田元, & 永田昌明 (2014). 語順の相関に基づく機械翻訳の自動評価法 / Evaluating Translation Quality with Word Order Correlations, 自然言語処理 21(3), 421–444 — RIBES の詳細化。実装既定は NTT RIBES 1.03.1、コミット 7e76cf24d32de70e9e6afd0c9b95d8c140b7235c で確認。
  30. Wu, Y., et al. (2016). Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation — 文単位の Google GLEU の一次資料。
  31. Napoles, C., Sakaguchi, K., Post, M., & Tetreault, J. (2015). Ground Truth for Grammatical Error Correction Metrics — GEC 用 GLEU の初版。
  32. Napoles, C., Sakaguchi, K., Post, M., & Tetreault, J. (2016). GLEU Without Tuning — GLEU+ と旧版を置き換える推奨。論文後の BP 修正、500 反復、固定シード値の設定手順は 著者配布コードの最終コミット 50b5032a4ef2444b9381fb47a55b3bac0654a6d7 で確認。
  33. Mutton, A., Dras, M., Wan, S., & Dale, R. (2007). GLEU: Automatic Evaluation of Sentence-Level Fluency — 構文解析器由来の特徴量と SVM による、参照なしの流暢さ指標の一次資料。
  34. NIST. SCTK 2.4.12 sclite、v2.4.12 タグのコミット 62aabfa95938bfea284f8b68a374c7ddcb0fce52 — 2021-10-28 の版固定資料。ASR の対応付け、S,D,IS,D,I の出現数、参照語の分母、システム集計を確認した。後続コミット 9688a268… は同じ README の版表示を保つが、2023 年の文書更新であり、リリースタグそのものではない。
  35. Snover, M., Wang, S., & Matsoukas, S. TERCOM 0.10.0、コミット e413d077e5b9ecc96b0e7de5fe6015eb135c2f6d — 2006 年論文後の Java 実装、探索・前処理・ビーム/句移動の既定値。
  36. Koehn, P. (2004). Statistical Significance Tests for Machine Translation Evaluation — コーパス BLEU を文単位で対応のあるブートストラップ再標本化する古典的手順。
  37. Riezler, S., & Maxwell, J. T. III. (2005). On Some Pitfalls in Automatic Evaluation and Significance Testing for MT — MT 比較における近似ランダム化と検定上の注意。
  38. Graham, Y., Mathur, N., & Baldwin, T. (2014). Randomized Significance Tests in Machine Translation — MT のランダム化検定を経験的に比較。
  39. Dror, R., Baumer, G., Shlomov, S., & Reichart, R. (2018). The Hitchhiker’s Guide to Testing Statistical Significance in Natural Language Processing — NLP の指標・実験設定に応じた対応のある検定の選択と仮定。
  40. Holm, S. (1979). A Simple Sequentially Rejective Multiple Test Procedure. Scandinavian Journal of Statistics, 6(2), 65–70 — 検定群全体の誤り率を制御する逐次棄却法。
  41. Benjamini, Y., & Hochberg, Y. (1995). Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing. Journal of the Royal Statistical Society: Series B, 57(1), 289–300。