charsim: パラメータに左右されにくい文字n-gram類似度
charsim を紹介します。charsim は文字 n-gram の重なりを用いて、ある候補文字列が複数の参照文にどれだけ似ているかを測る指標です。この指標には、計算方法の違いによって 2 つのバリエーションがあります。
- 基本形(
charsim_base):各参照文に対する適合率(precision)と再現率(recall)のうち小さい方 \(\min(P,R)\) を取り、それを参照集合全体で平均します(§2)。 - 主定義(平均長版):参照集合全体を 1 つの「平均像」とみなすアプローチです。重なりと参照長をそれぞれ先に平均し、重なりを \(\max(L_t,\bar L_r)\) で正規化します(§3)。参照集合の平均像に適合するかを測るため、長さや表層が大きく異なる正解が混在していると、スコアが低く出やすいという特徴があります。一方で、参照文側の情報を事前計算できるため、高速な処理を実現できるという大きな利点があります。
charsim と書くときは平均長版を指し、基本形と区別して呼ぶ場合は charsim_base とします。
対象とする問題
- 参照文の表現(表層)に近いほどスコアが高くなること。
- 参照文より短すぎる候補(情報の取りこぼし)にはペナルティが課されること。
- 参照文より長すぎる候補(余計な水増し)にもペナルティが課されること。
- 参照文の多くが共有する表層的な特徴から外れた候補を、過大評価しないこと。
1. 記法
1.1 入力
1.2 文字 n-gram
^、終了境界を $ と記述すると、cat は ^cat$ になり、3-gram は ^ca, cat, at$、2-gram は ^c, ca, at, t$ となります。境界記号は次数によらず常に 1 個ずつであり、各 n-gram は一律に 1 個と数えます。なお、これらはあくまで説明用の記号であり、実際の入力に ^ や $ が現れても衝突しないように実装する必要があります。
^$ は境界記号のみで構成されるため除外対象となり、すべての次数で n-gram は 0 個となります。この処理により、共有する文字がまったく無い 2 つの文字列のスコアは正確に 0 になります。
^x$(長さ \(|x|+2\))から境界だけの分を除いて以下の式で表されます。
1.3 n-gram 頻度と重なり
2. 基本形
2.1 各参照との重なり
2.2 部分文字列を 1/|s| で重み付けして次数をまたいで足す
2.3 長さで正規化すると min(precision, recall) になる
2.4 複数参照をまとめる
2.5 次数の打ち切りと完全一致
2.6 基本形の性質
- 参照ごとに分母を取るため、長さ補正が参照ごとに正確に適用されます。
- 集約後のスコアがそのまま \(\min(P, R)\) として解釈できます。
- 単一参照に対する完全一致は厳密に 1 になります。
3. 主定義(平均長版)
3.1 分子と分母を別々に平均する
3.2 なぜ平均長を使用するのか
3.3 基本形との関係と適用条件
- 分母が 1 つにまとまり式が簡潔であること。
- 参照側の事前計算が可能で高速化しやすいこと(§7)。
- 長さの影響(短ければ recall 的、長ければ precision 的)が基本形と同じ向きに機能すること。
a で、短い正解と長い正解が混在する参照集合 ["a", "abcdefghij"] の場合、基本形が約 0.528 なのに対し、平均長版は約 0.134 まで低下します。平均長版は「平均像」から外れた候補のスコアを強く下げる特性があるため、極端に長さの異なる正解を一つの集合に混在させると、たとえその中の 1 つに完全一致していても全体のスコアが低く算出されてしまいます。この特性が問題になるかどうかはタスクに依存しますが、参照文の長さのばらつきが大きい場合は平均長版の使用を避け、基本形を採用するか、参照文を長さごとにクラスタ分けするなどの対応を検討すべきです。
3.4 小さな数値例
cat(完全一致)・ca(1 文字不足)・cats(1 文字過剰)・catcat(2 倍の水増し)と変化させて \(\operatorname{charsim}\) を比較します。
ca について詳細に確認します。n-gram は cat(^cat$)の \(n=5\) まで存在するため、\(N'=\max(2,3)+2=5\le 32\) であり、\(N=5\) となります。各次数における重なり \(m_n\)(§2.1)、n-gram 数 \(\ell_{t,n}\)・\(\ell_{r,n}\)(§1.2)、およびそれぞれに \(1/n\) を乗じた寄与度は以下の通りです。ca は ^ca$、cat は ^cat$ としてカウントします。\(K=1\) であるため、バー付きの量は単一参照の量と等しく、\(\bar M = M\)・\(\bar L_r = L_r\) です(以下の数式では、以降の定義式と記号を統一するためバー付きで表記します)。
| 次数 \(n\) | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| \(m_n\) | 2 | 2 | 1 | 0 | 0 |
| \(\tfrac1n m_n\) | 2 | 1 | 1/3 | 0 | 0 |
| \(\ell_{t,n}\) | 2 | 3 | 2 | 1 | 0 |
| \(\tfrac1n \ell_{t,n}\) | 2 | 3/2 | 2/3 | 1/4 | 0 |
| \(\ell_{r,n}\) | 3 | 4 | 3 | 2 | 1 |
| \(\tfrac1n \ell_{r,n}\) | 3 | 2 | 1 | 1/2 | 1/5 |
cats・catcat では \(L_t > \bar L_r\) となり、precision(適合率)側のペナルティが適用されます(§4.3)。
| 候補 \(t\) | 説明 | 働く側 | \(N'\) | \(\operatorname{charsim}\) |
|---|---|---|---|---|
cat | 完全一致 | \(P=R=1\) | 5 | 1.000 |
cats | 1 文字過剰 | precision | 6 | 0.592 |
ca | 1 文字不足 | recall | 5 | 0.498 |
catcat | 2 倍の水増し | precision | 8 | 0.449 |
catcat は参照文を完全に含んでいるものの、水増しされた分だけ precision 側のペナルティが働くほか、参照文側が高次で尽きて重なりを加算できなくなるため(§2.5)、スコアは大きく低下します(多重集合の重なりが参照文側の出現回数で頭打ちになるためです。§4.6)。
4. 平均長版の振る舞い
4.1 長さも内容も近いとき
4.2 候補が短すぎるとき
4.3 候補が長すぎるとき
4.4 一致が増えるとどれだけ上がるか
4.5 完全一致とその近傍
4.6 同じ断片の繰り返し
5. BLEU / chrF との違い
5.1 長さの扱いが 1 つの式で完結する
5.2 文単位で破綻しにくい
5.3 複数参照の意味が明確
5.4 各次数の寄与が線形で分析しやすい
5.5 文字ベースでトークナイザに依存しない
5.6 n-gram の次数の上限を固定しやすい
- 分かち書きの有無: BLEU の単語 4-gram は英語においては妥当ですが、言語境界に空白を挟まない日本語、中国語、タイ語などでは、トークナイザの設定次第で「4-gram」の持つ意味が変化します。chrF が文字単位の評価へ移行したのはこの依存関係を緩和するためですが、今度は「文字 6-gram」という基準が言語間で不均衡をもたらします。
- 形態論の相違: 1 形態素あたりの文字数は言語によって異なります。例えば、ドイツ語の
Lebensversicherung(1 語で 18 文字)と英語の短い単語とでは、同等の情報を捉えるために必要な次数 \(n\) が変化します。 - 文字体系の相違: 漢字 1 文字とラテン文字数文字が同程度の情報を担うように、1 文字あたりの情報量も言語ごとに異なり、同じ「文字 n-gram」であっても \(n\) の意味が統一されません。
5.7 上限の取り方に左右されにくい理由
| 次数>4 が占める重み | 上限 8 | 16 | 32 | 64 |
|---|---|---|---|---|
| charsim(\(1/n\) 重み) | 0.23 | 0.38 | 0.49 | 0.56 |
| BLEU / chrF(一様) | 0.50 | 0.75 | 0.88 | 0.94 |
6. 簡略モデルで見る長さバイアス
6.1 設定:一致しうる n-gram と、その重なり
6.2 頂点が参照長に来る
6.3 長すぎ・短すぎへの寛容さ
6.4 同じ一致量でも、連続一致による過大評価を一様重みより抑える
- 拡散: 一致箇所が文字列全体に分散しているパターン。各文字が独立に確率 \(q\) で一致すると仮定すると、次数 \(n\) における一致率は \(\approx q^n\) に沿って幾何級数的に低下し、\(m_n\approx q^n\lambda\) となります。
- 連続ブロック: 長さ \(b=q\lambda\) の連続したブロック部分のみが完全一致し、残りの部分は一切一致しないパターン。ブロック内の n-gram は高次になっても一致し続けるため、\(m_n=\max(b-n+1,\,0)\) となり、一致数の減少が緩やかになります。
7. 実装メモ
7.1 ナイーブ実装
7.2 参照固定なら平均長版が有利
7.3 平均長版と中央値版
7.4 エッジケース
- 完全一致 = 1
- 共有文字なし = 0
""vs[""]= 1、""vs["a"]= 0(上記の空入力規約の検証)cavs["cat"]= 0.498(§3.4 で示した数値例)- 特性の異なる複数の参照文において、基本形と平均長版のスコアが大きく乖離するケース(§3.3 の検証)
7.5 計算量と打ち切り
8. 設計上の限界
- 表層指標であるため、意味内容や言い換えを捉えられない点: 文字 n-gram の重なり情報のみを評価の根拠とするため、意味が同一であっても、表現(表層)が全く異なる言い換え表現に対してはスコアが低く算出されてしまいます。これは BLEU や chrF と共通する限界であり、charsim はあくまで「表層の類似度」を測定する指標であると定義づけています。
- 複数の正解のうち、どれか 1 つに合致すれば良いというタスクに対しては厳格すぎる点: charsim は参照集合に対する平均的な合致度を評価するため、表層が大きく異なる複数の正解を単一の集合に混在させると、その中のいずれか 1 つに完全一致している候補であっても、スコアが低く出力されます。このようなケースでは、基本形、あるいは最良参照スコアの採用、参照集合のクラスタリングなどの個別のアプローチを検討する必要があります(§3.3)。
- 語順や長距離の依存構造は、n-gram ウィンドウの内側でしか捉えられない点: さらに、\(1/n\) による重み付けは、語順の情報を保持しない低次の項(\(n=1\) は文字の多重集合に相当)に重みを集中させる設計であるため、例えば英文の単語を完全にシャッフルした場合でも、低次の一致がスコアとして残存します。これは、§5.7 で述べた「高次の影響を割り引くことでスコアの破綻を回避する」という長所とのトレードオフです。
- 上限を入力長 \(N'\) まで拡張すると、長文において計算量が \(O(L^2)\) に達する点: 文字 n-gram の候補数が \(O(L^2)\) で増加するため、長文の評価においては最大次数の打ち切り処理が必須となります(§7.5)。
9. まとめ
- 文字列の前後に境界記号を 1 個ずつ補完し、各 n-gram を一律に 1 個としてカウントします(ただし、境界記号のみで構成される n-gram は除外します)。
- 各部分文字列 \(s\) に対して重み \(1/|s|\) を付与して次数を横断して足し合わせ、重み付き重なり \(\bar M\)、および重み付き長さ \(L_t, \bar L_r\) として集約します。
- 基本形では、各参照文について \(\min(P, R)\) を算出し、それらの平均値を求めます。
- 主定義(平均長版)では、\(\operatorname{charsim} = \bar M / \max(L_t, \bar L_r) = \min(P,R)\) と定義し、各要素を集約した後に一度だけ \(\min(P,R)\) を適用します。
- 参照文の長さが揃っている場合は基本形と近い値を示しますが、長さのばらつきが大きい場合は両者のスコアが乖離し、平均長版は参照集合全体としての平均像に対する合致度を測定する個別の集約手法として機能します。
10. 参考文献
- Kishore Papineni, Salim Roukos, Todd Ward, Wei-Jing Zhu. BLEU: a Method for Automatic Evaluation of Machine Translation. ACL, 2002.
- Maja Popović. chrF: character n-gram F-score for automatic MT evaluation. WMT, 2015.
- Maja Popović. chrF++: words helping character n-grams. WMT, 2017.
- Matt Post. A Call for Clarity in Reporting BLEU Scores. WMT, 2018.(sacreBLEU)
- 今城健太郎, 平野正徳, 鈴木脩司, 三上裕明. pfgen-bench: 日本語事前学習モデルのための文章生成性能評価ベンチマーク. Jxiv, 2024. 初期の Q&A ベンチマーク向けの評価実装です。参照回答群における文字 n-gram の出現頻度を単純に足し上げる設計であり、同一の n-gram が複数回出現した際の回数を、現在の \(\min(c_r,c_t)\) のような多重集合の重なり(クリッピング)としては区別していませんでした。
- 今城健太郎, 平野正徳. 高精度翻訳モデルのための自動評価手法の検討. Jxiv, 2026. 文字 n-gram の出現回数を \(f_{w,i}\) として扱う一方、長さの補正については参照訳の長さの中央値に対する個別の罰則(ペナルティ)項として設計しており、本記事のように重なりと長さを \(1/n\) の重みで集約して \(\max(L_t,\bar L_r)\) により正規化する形式とは異なります。
最終更新日: 2026年7月2日