charsim: パラメータに左右されにくい文字n-gram類似度

2026年7月2日公開

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 とします。
主定義は以下の式です。
\[ \boxed{\;\operatorname{charsim}(t;\mathcal R) = \frac{\bar M}{\max\bigl(L_t,\ \bar L_r\bigr)} = \min\Bigl(\underbrace{\tfrac{\bar M}{L_t}}_{\text{precision}},\ \underbrace{\tfrac{\bar M}{\bar L_r}}_{\text{recall}}\Bigr)\;} \]
ここで \(\bar M, L_t, \bar L_r\) は、重なり・候補数・参照数を次数 \(n\) ごとに求め、各次数の項に重み \(1/n\) を掛けて \(n=1\) から \(N\) まで足し合わせたものです。 \[ \bar M = \sum_{n=1}^{N}\frac{1}{n}\,\bar m_n,\qquad L_t = \sum_{n=1}^{N}\frac{1}{n}\,\ell_{t,n},\qquad \bar L_r = \sum_{n=1}^{N}\frac{1}{n}\,\bar \ell_{r,n} \] \(\bar m_n\) は次数 \(n\) の n-gram について各参照との重なりを平均した値、\(\ell_{t,n}\) は次数 \(n\) における候補の n-gram 数、\(\bar \ell_{r,n}\) は同じく参照集合の n-gram 数を平均した値です。\(\bar M\) を候補長 \(L_t\) で割れば precision、平均参照長 \(\bar L_r\) で割れば recall になり、\(\bar M\) を長い方の分母で割ることで \(\min(P,R)\) が導かれます。なお、文字の単位は Unicode の 1 文字(コードポイント)とします(正規化や空白の扱いは §1.1 を参照)。

対象とする問題

生成モデルの出力を参照文と突き合わせて評価・順位づけする際など、候補となる文字列が「複数の参照文にどれくらい似ているか」を数値化したい場面があります。このような類似度指標に求められる主な性質は、以下の 4 つです。
  • 参照文の表現(表層)に近いほどスコアが高くなること。
  • 参照文より短すぎる候補(情報の取りこぼし)にはペナルティが課されること。
  • 参照文より長すぎる候補(余計な水増し)にもペナルティが課されること。
  • 参照文の多くが共有する表層的な特徴から外れた候補を、過大評価しないこと。
既存の表層指標(BLEU や chrF など)でも概ねこれらの要件を満たせますが、長さペナルティの扱いや、高次 n-gram の一致が 0 になった際のスコアの急落、複数参照の扱いに課題が残ります(§5)。charsim は、これらの課題を 1 つの式で解決することを目指した指標です。その中心となる考え方(基本形)は、各参照文に対する precision と recall の小さい方を取り、それを参照文全体で平均するというものです。ここでの precision と recall は、分類問題における定義ではなく、n-gram の重なりを候補長や参照長で割った割合を指します(§2.3)。min を取ることで、長さの過剰や不足に対して自動的にペナルティが働く仕組みになっています。以下では、まず charsim の基本形を示し、続いて実装や高速化に適した「平均長版」を主定義として導入します。最後に、BLEU や chrF との比較を行います。

1. 記法

1.1 入力

評価対象の候補文字列を \(t\)、参照文を \(r\)、複数の参照文の列(多重集合)を \(\mathcal{R} = (r^{(1)}, \dots, r^{(K)})\) と記述します。
特に断りのない限り、「文字」とは Unicode の 1 文字(コードポイント)を指します。正規化の扱いは実装による差異が生じやすいため、厳密に条件を揃えたい場合はタスク側の前処理で必要な正規化を済ませる想定とし、charsim 自体は正規化を行いません。スコアを厳密に比較する際は、どのような正規化を行ったか、空白や大文字小文字をどう扱ったかを評価条件として明記することが望ましいです。以降では候補 \(t\) と参照集合 \(\mathcal R\) を固定して考えるため、これらに依存する変数(重なり \(m_{i,n}\)、重み付き重なり \(M_i\) など)からは引数 \((t)\) を省略して表記します。

1.2 文字 n-gram

各文字列 \(x\) について、次数 \(n = 1, 2, \dots\) で文字 n-gram を取り出します。次数に定義上の上限はありませんが、実装上は十分な長さ \(N\) で頭打ちにします(§2.5)。
文字列の先頭および末尾の情報を適切に扱うため、文字列の前後に境界記号を 1 個ずつ補ってから n-gram を取り出します。開始境界を ^、終了境界を $ と記述すると、cat^cat$ になり、3-gram は ^ca, cat, at$、2-gram は ^c, ca, at, t$ となります。境界記号は次数によらず常に 1 個ずつであり、各 n-gram は一律に 1 個と数えます。なお、これらはあくまで説明用の記号であり、実際の入力に ^$ が現れても衝突しないように実装する必要があります。
ただし、境界はどの文字列にも必ず 1 個ずつ存在し、そのまま数えるとすべての文字列が境界だけで一致してしまうため、境界記号のみからなる n-gram はカウントしません。空文字列 \(x=\epsilon\) の場合も、^$ は境界記号のみで構成されるため除外対象となり、すべての次数で n-gram は 0 個となります。この処理により、共有する文字がまったく無い 2 つの文字列のスコアは正確に 0 になります。
次数 \(n\) の n-gram 数は、^x$(長さ \(|x|+2\))から境界だけの分を除いて以下の式で表されます。
\[ \ell_{x,n} = \begin{cases} 0 & (|x| = 0)\\[2pt] |x| & (n = 1)\\[2pt] |x| + 3 - n & (2 \le n \le |x| + 2)\\[2pt] 0 & (n > |x| + 2) \end{cases} \]
\(n=1\) は文字の多重集合そのものであり \(\ell_{x,1}=|x|\) です。n-gram 数は次数 \(n\) に依存し、高次になるほど少なくなります。特に \(n>|x|+2\) の範囲では n-gram が尽きて 0 になるため、短い文字列ほど低い次数でカウントが頭打ちになります。これがそのまま、次数の自然な上限として機能します(§2.5)。

1.3 n-gram 頻度と重なり

文字列 \(x\) における文字 n-gram \(g\) の出現回数を \(c_x(g)\) と記述します(次数依存の集約量 \(m_{i,n}\) などには下付きの \(n\) を付与しますが、\(g\) はそれ自身の長さで次数が定まるため次数は明示していません)。以降の \(\sum_g\) は、その次数で現れうるすべての n-gram(境界のみのものを除く)についての総和を意味します。
charsim は、同一の \(g\) が文中に複数回出現した場合、その回数も反映します。2 つの文 \(x, y\) における次数 \(n\) の重なり量は、多重集合としての共通要素数を用いて以下のように測定します。
\[ \sum_g \min\bigl(c_x(g),\, c_y(g)\bigr) \]
この式では、回数に対する重み付けは行いません。片方の文で特定の n-gram が多く繰り返されても、もう一方の少ない出現回数で頭打ちになります(これは BLEU や chrF と共通する設計思想です)。

2. 基本形

2.1 各参照との重なり

参照 \(r^{(i)}\) に対する次数 \(n\) の重なりを次のように定義します。これは、候補と参照の文字 n-gram 多重集合がどれだけ共通しているかを表します。
\[ m_{i,n} = \sum_g \min\bigl(c_{r^{(i)}}(g),\, c_t(g)\bigr) \]

2.2 部分文字列を 1/|s| で重み付けして次数をまたいで足す

次に、各部分文字列(n-gram)\(s\) のカウントに重み \(1/|s| = 1/n\) を掛けて足し合わせます。次数 \(n\) には \(\ell_{x,n}\) 個の部分文字列が存在するため、その重みは合計 \(\ell_{x,n}/n\) になります。集約する次数の上限 \(N\)(§2.5)を用い、重なり・候補量・参照量をそれぞれ 1 つの重み付き量としてまとめます。
\[ M_i = \sum_{n=1}^{N}\frac{1}{n}\,m_{i,n},\qquad L_t = \sum_{n=1}^{N}\frac{1}{n}\,\ell_{t,n},\qquad L_i = \sum_{n=1}^{N}\frac{1}{n}\,\ell_{i,n} \]

2.3 長さで正規化すると min(precision, recall) になる

重み付き重なりを長い方の重み付き量で正規化し、参照 \(i\) のスコアを次のように定義します。
\[ s_i = \frac{M_i}{\max\bigl(L_t,\, L_i\bigr)} \]
各次数において \(m_{i,n} \le \ell_{t,n}\) かつ \(m_{i,n} \le \ell_{i,n}\) であるため、\(1/n\) の重みで足しても \(M_i \le L_t\) かつ \(M_i \le L_i\) となり、以下の関係が成り立ちます。
\[ M_i \le \min\bigl(L_t, L_i\bigr) \le \max\bigl(L_t, L_i\bigr) \]
これにより、\(0 \le s_i \le 1\) が常に保証されます。
また、precision と recall を以下のように定義します。
\[ P_i = \frac{M_i}{L_t}, \qquad R_i = \frac{M_i}{L_i} \]
分母に大きい方の値を取ることは、分数全体の値を小さくすることと同義であるため、以下の関係が成り立ちます。
\[ s_i = \frac{M_i}{\max(L_t, L_i)} = \min\bigl(P_i,\, R_i\bigr) \]
これが charsim の中核となる考え方です。この定義において重要なのは、\(\min(P,R)\) を次数ごとに計算するのではなく、次数を横断して足し合わせた重み付きの量に対して一度だけ適用する点です。候補が長すぎる場合は分母が \(L_t\) となるため precision 側のペナルティが、短すぎる場合は分母が \(L_i\) となるため recall 側のペナルティが自然に働きます。

2.4 複数参照をまとめる

複数参照スコアは各参照スコアの平均として算出します。
\[ \operatorname{charsim}_{\mathrm{base}}(t;\mathcal R) = \frac{1}{K}\sum_{i=1}^{K} s_i = \frac{1}{K}\sum_{i=1}^{K} \frac{M_i}{\max\bigl(L_t, L_i\bigr)} = \frac{1}{K}\sum_{i=1}^{K} \min\bigl(P_i, R_i\bigr) \]
これは「参照集合の中から 1 つの参照文を無作為に選んだときの \(\min(P,R)\) の期待値」そのものを表しています(§5.3)。

2.5 次数の打ち切りと完全一致

境界記号を含めても n-gram は次数 \(n \le |x|+2\) で尽きるため(§1.2)、次数についての和はどこかで自然に有限となります。比較に現れる最大次数は以下の通りです。
\[ N' = \max\bigl(|t|,\ \max_i |r^{(i)}|\bigr) + 2 \]
これより大きい次数では \(\ell_{x,n}=0\) となるため、和を取ってもスコアには影響しません。つまり、理論上は次数に上限を設ける必要はありません。しかし、長い入力に対して \(N'\) まで毎回 n-gram を生成して照合するのは計算コストが高いため(§7.5)、実際の実装ではある定数で上限を打ち切ります。必要なのは、chrF の既定(文字 6-gram)よりも上限を十分に大きく取ることだけです。高次になるほど一致率が下がるうえ、\(1/n\) の重みによって一様重みよりも影響が緩やかになるため(§5.7・§6)、一般的な自然文では上限をこれ以上大きくしてもスコアはほとんど変動しません。主に計算コスト(§7.5)が増加するのみです。最適値を厳密に詰める意義は薄いため、本記事では 32 を用いて以下のように定義します。
\[ N = \min\bigl(N',\ 32\bigr) \]
短い文字列同士では \(N=N'\) のまま頭打ちは機能せず(§3.4 の数値例はこの範囲)、長い入力では \(N=32\) となります。ただし定型句・反復・コードのように高次が効く入力では、上限を変更する余地があります。
入力が完全一致している場合、スコアは自動的に 1 になります。\(t=r\) なら全次数で \(m_n = \ell_{t,n} = \ell_{r,n}\) なので \(M = L_t = L_r\) となり、\(s = 1\) です。分子 \(M\) と分母 \(L\) の両方に同じ \(1/n\) の重み付き和が現れて相殺されるため、打ち切る次数 \(N\) をいくつに設定しても完全一致は常に 1 になります。
なお、短い参照文の場合は \(n > |r^{(i)}|+2\) で n-gram が尽きるため、その次数の \(\ell_{i,n}\) は 0 になります(§1.2)。すると長い候補だけが高次の重みを持ち、\(L_t\) が伸びて precision が下がるため、水増しに対する追加のペナルティとして機能します(§4.3)。

2.6 基本形の性質

  • 参照ごとに分母を取るため、長さ補正が参照ごとに正確に適用されます。
  • 集約後のスコアがそのまま \(\min(P, R)\) として解釈できます。
  • 単一参照に対する完全一致は厳密に 1 になります。
この基本形の弱点は実装面にあります。参照文ごとに分母 \(\max(L_t, L_i)\) が変わるため、参照集合を事前に処理して大量の候補文字列を高速に評価する用途には不向きです。そのため実用的には、次項で説明する「平均長版」を主定義として採用します。

3. 主定義(平均長版)

3.1 分子と分母を別々に平均する

基本形では参照文ごとにスコアを算出して平均を取りますが、平均長版では分子(重なり)と分母(長さ)をそれぞれ先に平均してから割り算を行います。したがって、ここで測定しているのは「各参照文における正規化量の平均」ではなく、「参照集合の平均像に対する合致度」(平均的な重なりを平均参照長で正規化した量)となります。これは基本形の近似というより、集約の単位を「参照ごと」から「参照集合の平均」へ移した別のアプローチです(関係と前提は §3.3)。分子は重なりの平均を \(1/n\) 重みで足した値です。
\[ \bar m_n = \frac{1}{K}\sum_{i=1}^{K} m_{i,n},\qquad \bar M = \sum_{n=1}^{N}\frac{1}{n}\,\bar m_n \]
分母は、参照集合における次数 \(n\) の n-gram 数の平均 \(\bar \ell_{r,n}\) を同じく \(1/n\) 重みで足した値です。
\[ \bar \ell_{r,n} = \frac{1}{K}\sum_{i=1}^{K} \ell_{i,n},\qquad \bar L_r = \sum_{n=1}^{N}\frac{1}{n}\,\bar \ell_{r,n} \]
これにより、スコアを次のように定義します。
\[ \boxed{\;\operatorname{charsim}(t;\mathcal R) = \frac{\bar M}{\max\bigl(L_t,\, \bar L_r\bigr)} = \min\bigl(P, R\bigr),\qquad P = \frac{\bar M}{L_t},\ R = \frac{\bar M}{\bar L_r}\;} \]
各参照で \(m_{i,n} \le \ell_{t,n}\) かつ \(m_{i,n} \le \ell_{i,n}\) であるため、平均しても \(\bar M \le L_t\) かつ \(\bar M \le \bar L_r\) が保たれ、\(0 \le \operatorname{charsim} \le 1\) となります。展開すると以下の通りです。
\[ \operatorname{charsim}(t;\mathcal R) = \frac{\displaystyle\sum_{n=1}^{N}\frac{1}{n}\cdot\frac{1}{K}\sum_{i=1}^{K}\sum_g \min\bigl(c_{r^{(i)}}(g),\,c_t(g)\bigr)}{\max\Bigl(\displaystyle\sum_{n=1}^{N}\frac{1}{n}\ell_{t,n},\ \sum_{n=1}^{N}\frac{1}{n}\bar \ell_{r,n}\Bigr)} \]

3.2 なぜ平均長を使用するのか

参照長の代表値には、平均値を使用します。どの代表値を選択しても \(m_{i,n}\le \ell_{t,n}\) ゆえに \(\bar M\le L_t\) となり、分母は必ず \(L_t\) 以上となるため、\(\operatorname{charsim}\le1\) が保証されます。平均を選択する理由は、分子 \(\bar M\) がすでに「各参照文との重なりの平均」となっているため、分母も平均長に揃えることで \(\bar M\le\bar L_r\) が自然に成立し、recall 側を「平均参照長に対する重なりの割合」として解釈しやすくなるからです。参照集合を固定すれば \(\bar L_r\) を事前計算でき、実装も簡潔になります(§7)。中央値を代表値とする派生形もありますが、分子(平均)と分母(中央値)の集約手法が異なるため解釈が複雑になります(§7.3)。

3.3 基本形との関係と適用条件

平均長版は集約の順序を変更したものであり、基本形の近似ではありません。基本形が「正規化してから平均」であるのに対し、平均長版は「平均してから正規化」する形式です。
前者は「無作為に選んだ 1 つの参照文に対する \(\min(P,R)\) の期待値」を、後者は「参照集合全体をならした平均像への合致度」を測定しています。平均長版を主定義に据える理由は以下の 3 点です。
  1. 分母が 1 つにまとまり式が簡潔であること。
  2. 参照側の事前計算が可能で高速化しやすいこと(§7)。
  3. 長さの影響(短ければ recall 的、長ければ precision 的)が基本形と同じ向きに機能すること。
基本形と平均長版のスコアの乖離は、参照文の長さに大きなばらつきがある場合に顕著になります。たとえば候補が a で、短い正解と長い正解が混在する参照集合 ["a", "abcdefghij"] の場合、基本形が約 0.528 なのに対し、平均長版は約 0.134 まで低下します。平均長版は「平均像」から外れた候補のスコアを強く下げる特性があるため、極端に長さの異なる正解を一つの集合に混在させると、たとえその中の 1 つに完全一致していても全体のスコアが低く算出されてしまいます。この特性が問題になるかどうかはタスクに依存しますが、参照文の長さのばらつきが大きい場合は平均長版の使用を避け、基本形を採用するか、参照文を長さごとにクラスタ分けするなどの対応を検討すべきです。
平均長版の「平均像への合致」という考え方が有効に機能するためには、(a) 参照文の長さが同程度に揃っていること、(b) 参照集合の平均が代表値として意味を持つこと(分布が多峰性でなく、外れ値に支配されていないこと)、(c) 長さが大きく異なる正解を 1 つの集合に混在させないこと、といった前提が必要です。これらが崩れる場合は、集合を分ける・重みを付ける・基本形を使用する等の配慮が求められます(§5.3)。

3.4 小さな数値例

参照文を 1 つだけ \(\mathcal R = [\texttt{cat}]\) とし(\(K=1\) のため基本形と平均長版は一致)、候補 \(t\) を 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\)12345
\(m_n\)22100
\(\tfrac1n m_n\)211/300
\(\ell_{t,n}\)23210
\(\tfrac1n \ell_{t,n}\)23/22/31/40
\(\ell_{r,n}\)34321
\(\tfrac1n \ell_{r,n}\)3211/21/5
重み付き(\(1/n\) を乗じた)行を \(n\) について足し合わせると、\(\bar M = 2+1+\tfrac13 = \tfrac{10}{3}\)、\(L_t = \tfrac{53}{12}\)、\(\bar L_r = \tfrac{67}{10}\) となります。候補文字列が短いため \(L_t < \bar L_r\) となり、分母には \(\bar L_r\) が選択され、recall(再現率)側のスコアが適用されます。
\[ P = \frac{10/3}{53/12} = \frac{40}{53} \approx 0.755\\ R = \frac{10/3}{67/10} = \frac{100}{201} \approx 0.498\\ \operatorname{charsim}(\texttt{ca};[\texttt{cat}]) = \min(P,R) \approx 0.498 \]
同様の計算を 4 つの候補で行うと、以下の通りになります。過剰な長さを持つ catscatcat では \(L_t > \bar L_r\) となり、precision(適合率)側のペナルティが適用されます(§4.3)。
候補 \(t\)説明働く側\(N'\)\(\operatorname{charsim}\)
cat完全一致\(P=R=1\)51.000
cats1 文字過剰precision60.592
ca1 文字不足recall50.498
catcat2 倍の水増しprecision80.449
完全一致の場合にのみスコアが正確に 1 となり、長さが前後した場合は、不足・過剰のどちらであっても \(\min(P,R)\) の働きによって自動的にスコアが低下します。特に catcat は参照文を完全に含んでいるものの、水増しされた分だけ precision 側のペナルティが働くほか、参照文側が高次で尽きて重なりを加算できなくなるため(§2.5)、スコアは大きく低下します(多重集合の重なりが参照文側の出現回数で頭打ちになるためです。§4.6)。

4. 平均長版の振る舞い

以下では、主定義である \(\operatorname{charsim} = \bar M / \max(L_t, \bar L_r) = \min(P,R)\) の挙動を状況別に確認します。

4.1 長さも内容も近いとき

\(L_t \approx \bar L_r\) であり、かつ重なりがほぼ最大であれば、\(\bar M \approx L_t \approx \bar L_r\) となるため \(\operatorname{charsim} \approx 1\) です。これは設計通りであり、類似度が高いほどスコアは 1 に近づきます。

4.2 候補が短すぎるとき

\(L_t < \bar L_r\) の場合、分母は \(\bar L_r\) となり、\(\operatorname{charsim} = \bar M / \bar L_r\) です。たとえば、たとえば、候補が参照文の前半部分と完全一致している場合でも、重み付きの重なりは最大で \(L_t\) に留まるため、スコアは以下の範囲に収まります。
\[ \operatorname{charsim} \lesssim \frac{L_t}{\bar L_r} \]
これにより、長さの不足がそのまま recall に基づくペナルティとして機能します。

4.3 候補が長すぎるとき

\(L_t > \bar L_r\) の場合、分母は \(L_t\) となり、\(\operatorname{charsim} = \bar M / L_t\) です。たとえば、候補が参照文全体を含みつつ、余計な後半部分を大量に追加した場合、重なりは参照長付近で頭打ちとなるため、スコアは以下の範囲に収まります。
\[ \operatorname{charsim} \lesssim \frac{\bar L_r}{L_t} \]
これにより、水増しに対して precision に基づくペナルティが課されます。加えて、参照文が短い場合は高次で n-gram が尽き、長い候補側だけが高次の重みを持つため、\(L_t\) がさらに増加し、ペナルティが強化されます(§2.5)。

4.4 一致が増えるとどれだけ上がるか

長さを固定すると、分母 \(\max(L_t, \bar L_r)\) は定数 \(D\) とみなせるため、\(\operatorname{charsim} = \bar M / D\) は重み付き重なり \(\bar M\) に対して線形です。さらに \(\bar M = \sum_n \frac1n \bar m_n\) と次数別に分解できるため、以下のようになります。
\[ \operatorname{charsim} = \sum_{n=1}^{N} \frac{1}{n}\cdot\frac{\bar m_n}{D} \]
これにより、各次数における寄与度 \(\frac{\bar m_n}{nD}\) が分子の中で線形に足し合わされます。同一の長さ(同一の分母 \(D\))のもとでは、次数 \(n\) の重なりが 1 個増加することによるスコアへの寄与度は \(\frac{1}{nD}\) と解釈でき、どの次数がどれだけスコアに影響を与えたかを直接追跡できます(ただし、実際の編集においては 1 文字の変更が複数次数の n-gram を同時に変化させ、候補長が変われば \(D\) も変化します)。

4.5 完全一致とその近傍

単一参照 \(\mathcal R = [r]\) に対して \(t = r\) であれば、各次数で \(m_n = \ell_{r,n}\) となるため \(\bar M = L_t = \bar L_r\) であり、したがって \(\operatorname{charsim}(r; [r]) = 1\) です。そこから 1 文字ずつ相違点を増やしていくと、変更箇所をまたぐ n-gram のみが次数ごとに失われるため、スコアが不連続に 0 へ急落することはなく、失われた重なりに応じて段階的かつ滑らかに低下します(短い文字列では、1 文字の差異による影響が相対的に大きくなります)。

4.6 同じ断片の繰り返し

重なりを \(\min(c_r(g), c_t(g))\) によってカウントするため、繰り返された断片もその回数分は評価に反映されますが、参照文側の出現回数で頭打ちになります。これにより、参照文に元々繰り返しが存在する場合はそれを正確に反映しつつ、候補側だけが過剰に繰り返した場合にはそれ以上加点されないようになっています。単なる出現回数に依存する指標では、最頻出の n-gram を繰り返すだけでスコアを不当に高くできてしまいますが、多重集合の重なり(\(\min\))を採用することでこの問題を回避しています。これは charsim 固有の性質ではなく、候補側のカウントを参照文側でクリッピングする BLEU や、同様に \(\min\) を取る chrF と共通する性質です。

5. BLEU / chrF との違い

charsim の利点は、「何を測定しているか」が数式に直接表現されていること、文単位の評価でもスコアが破綻しにくいこと、そして n-gram 次数の上限を設定しやすい(上限の取り方による影響が比較的小さい)ことにあります。以下では、BLEU や chrF の標準的な設計思想との比較を行います(BLEU、chrF、chrF++ の原典は §10 を参照)。

5.1 長さの扱いが 1 つの式で完結する

BLEU は適合率(precision)を本体とし、長さの不足に対しては brevity penalty という別項を設けて補正します。一方 chrF は、precision と recall を個別に算出し、最終的に F 値として合成します。一方、charsim では集約後に以下の式を用います。
\[ \frac{M_i}{\max(L_t, L_i)} = \min\left( \frac{M_i}{L_t},\, \frac{M_i}{L_i} \right) \]
これにより、過剰な長さも不足している長さも同一の数式内で処理されます。長さの整合性が「類似度」の定義そのものに内包されているのが特徴です。

5.2 文単位で破綻しにくい

BLEU では、高次 n-gram の一致数が 0 になるとその次数の precision が 0 となり、幾何平均の性質上、文単位のスコア全体が 0 へ急落してしまいます(文単位の評価で平滑化がほぼ必須とされるのはこのためです)。これに対して charsim は、重み付き重なりの総和を重み付き長さの総和で割るという「比率」の形をとるため、ある次数の不一致が 0 になったとしても、その次数の加点寄与がなくなるだけであり、スコア全体が不連続に低下することはありません。

5.3 複数参照の意味が明確

BLEU における複数参照の扱いは、単語ごとに最大参照カウントを採用する和集合的なアプローチです。一方 chrF では、最良の参照を採用するか平均を採用するかが実装に依存しています。これらに対し、charsim の基本形 \(\frac{1}{K}\sum_i \min(P_i, R_i)\) は、「参照文を 1 つ無作為に選択したときの \(\min(P, R)\) の期待値」そのものを意味します。平均長版は先に平均を計算する形式であるため厳密には一致しませんが、基本形と同様に、特定の 1 つの参照文のみに偶然合致した候補を過大評価しにくいという利点があります。

5.4 各次数の寄与が線形で分析しやすい

最終的な形式が \(\operatorname{charsim} = \frac1D\sum_n \frac{1}{n}\bar m_n\)(\(D\) は長さによって決定される定数)となるため、どの次数がどれだけ影響を及ぼしたかを直接確認できます。次数ごとのスコアを個別に \([0,1]\) の範囲へスケーリングすることなく、そのまま線形に足し合わせるため、要因を素直に分解可能です。BLEU の幾何平均には「特定の次数のスコアが低いと全体のスコアも著しく低下する」という構造があり、chrF の F 値も最終的に precision と recall を合成してしまいます。これに対し charsim は、各次数の寄与度をそのまま線形に分解・可視化できるため、スコア変動の原因を追跡しやすいという利点があります。

5.5 文字ベースでトークナイザに依存しない

charsim は chrF と同様に文字ベースの n-gram を使用するため、語形変化や表記ゆれ、軽微な綴りの誤り、複合語の分割の差異などに対して滑らかに反応し、特定のトークナイザを必要としません。chrF との相違点は \(\min(P,R)\) を採用している点にあります。F 値は片方の値が高ければある程度高いスコアが算出されるのに対し、\(\min(P,R)\) は低い方の値に引きずられてスコアが低下するため、より保守的な評価を行う設計となっています。両者の関係は \(\beta\) の値に関わらず、以下のように位置づけられます。
\[ \min(P, R) \le F_\beta \le \max(P, R) \]
chrF が precision と recall の中間的な値を取るのに対し、charsim は常に下限値を取ります。これが数式上における「保守的」という意味です。一方で、単語 n-gram を併用する chrF++ のような手法は、文字のみを対象とする charsim よりも語順や単語単位の一致を捉えやすいため、語順の正確性を厳格に評価したい用途においては、charsim には限界があります(§8)。

5.6 n-gram の次数の上限を固定しやすい

BLEU および chrF は、いずれも「どの次数までの n-gram を評価対象とするか(上限 \(N\))」を人間があらかじめ固定することを前提としています。一般的に、BLEU では単語 4-gram、chrF では文字 6-gram が採用され、各次数は一様な重みで集約されます(BLEU は幾何平均、chrF は算術平均を用いて統合した後に F 値を算出します。charsim のような \(1/n\) による減衰重みはありません)。つまり、上限 \(N\) はスコアを直接変動させる重要なハイパーパラメータとなります。ここで課題となるのは、言語や文字体系によって「適切な次数」が異なるという点です。
  • 分かち書きの有無: BLEU の単語 4-gram は英語においては妥当ですが、言語境界に空白を挟まない日本語、中国語、タイ語などでは、トークナイザの設定次第で「4-gram」の持つ意味が変化します。chrF が文字単位の評価へ移行したのはこの依存関係を緩和するためですが、今度は「文字 6-gram」という基準が言語間で不均衡をもたらします。
  • 形態論の相違: 1 形態素あたりの文字数は言語によって異なります。例えば、ドイツ語の Lebensversicherung(1 語で 18 文字)と英語の短い単語とでは、同等の情報を捉えるために必要な次数 \(n\) が変化します。
  • 文字体系の相違: 漢字 1 文字とラテン文字数文字が同程度の情報を担うように、1 文字あたりの情報量も言語ごとに異なり、同じ「文字 n-gram」であっても \(n\) の意味が統一されません。
そのため、BLEU や chrF を新しい言語やドメインに適用する際には、その都度「次数の上限をいくつに設定すべきか」を再検討する必要があり、言語間でスコアを比較する際の統一的な基準が定まりません。一方、charsim では上限の取り方による影響が比較的軽微であるため、このような調整の手間を削減できます(§5.7)。もちろん上限を無限大にすることは不可能ですが、一般的な自然文であれば、十分に大きな値を上限として設定しておけば、それ以上上限を広げてもスコアはほとんど変化しなくなります。そのため本記事では、n-gram が尽きる最大次数 \(N'=\max(|t|,\max_i|r^{(i)}|)+2\) まで自然に総和を求めつつ、計算コストを抑制するために定数 32 で頭打ちにする、すなわち実質的な上限を \(N=\min(N',32)\) と設定しています(§2.5)。ただし、これは次数選択への依存度が低いという意味に留まり、スコアの絶対値が文字列の長さや言語の枠を超えてそのまま比較可能になるわけではありません(§5.7・§8)。

5.7 上限の取り方に左右されにくい理由

「上限を入力長と同程度の大きな値に設定する」というアプローチが破綻しないのは、charsim の集約手法が上限パラメータの設定に左右されにくい構造を持っているからです(\(N\) を無限大に拡張できるという意味ではなく、一般的な自然文では十分に大きな値を設定すればそれ以上スコアが変動しなくなるためです)。その理由は以下の 2 点にあります。
(1) 比率の形式による破綻の回避: 重み付き重なりの総和を重み付き長さの総和で割る「比率」のデザインを採用しているため、上限を拡張して高次の一致数が 0 になったとしても、その次数が分子に加算する寄与度が 0 になるのみ(分母はわずかに増加します)であり、スコア全体は連続的にしか変化しません。一方、BLEU のような幾何平均では、高次の一致数が 0 になった途端にスコア全体が破綻(0 に急落)するため、どうしても「比較的小さな \(N\) で打ち切る」必要が生じます(§5.2)。
(2) \(1/n\) の重み付けによる低次への重み集中: 部分文字列 \(s\) の重み \(1/|s|=1/n\) は高次になるほど小さくなり、重み付き長さ \(L_t=\sum_n \ell_{t,n}/n\) に占める高次項の割合は小さく抑制されます。次数が \(N_0\) より大きい項が占める重みの割合は、\(\ell_n\) をほぼ一定と仮定すると、charsim では \(1-H_{N_0}/H_N\)、一様重みを採用する BLEU や chrF では \(1-N_0/N\) となります(ここで \(H_N=\sum_{n\le N}1/n\) です)。
次数>4 が占める重み上限 8163264
charsim(\(1/n\) 重み)0.230.380.490.56
BLEU / chrF(一様)0.500.750.880.94
一様重みでは上限を拡張するほど高次の項が支配的になり(\(1-N_0/N\to1\))、上限の設定がスコアを直接的に変動させます。一方、charsim の高次重みの割合 \(1-H_{N_0}/H_N\) も決して小さくはなく(\(N=64\) のとき 0.56)、\(1/n\) の重み付けのみを根拠に「上限に左右されない」と結論づけることはできません。理論的に保証されるのは「一様重みに比べて高次の影響が緩やかである」という点(理由(2))までであり、実用上上限の設定に影響されにくいという性質は、「多くのデータにおいて高次の重なり \(\bar m_n\) はほぼ 0 になる」という経験的な事実に依存しています。この前提が満たされる環境では、打ち切り位置を多少変更しても集約された値は大きく変動しないため、ハイパーパラメータの値を厳密に調整する必要がない、というのが §5.6 の主旨です。

6. 簡略モデルで見る長さバイアス

文章の類似度評価においては、内容が同一であれば「適切な長さ」のときにスコアが最大となることが望ましく、短すぎる場合は情報の欠落として、長すぎる場合は不必要な水増しとして、どちらに乖離してもスコアが低下するのが自然です。そこでここでは、内容の一致パターンを単純化し、文字列の長さのみを変化させることで、charsim、BLEU、chrF の長さペナルティの特性を比較します。これは実際のスコアの近似ではなく、precision と recall の合成における性質を確認するための簡易的な実験であり、各指標の優劣を一般化して決定するものではありません。

6.1 設定:一致しうる n-gram と、その重なり

次数 \(n\) の n-gram 数は \(\ell_{x,n}=|x|+3-n\)(\(2\le n\le|x|+2\))であり、低次の範囲(\(n\ll|x|\))においては \(\approx|x|\) となります(§1.2)。各次数の n-gram 数は厳密には \(|x|+3-n\) ですが、ここでは低次の項が支配的(\(n\ll|x|\))であると仮定する粗い近似を導入し、一致しうる n-gram の総量を文字数そのもの、すなわち以下の通りとみなします(空文字列の場合は 0 です)。
\[ \tilde L_x = |x| \]
次に重なりを単純化し、候補がどのような長さであっても、一致しうる n-gram(短い方の長さ \(\min(\tilde L_t,\tilde L_r)\))のうち一定の割合 \(p\) が実際に一致すると仮定します。
\[ m_n = p\cdot\min\bigl(\tilde L_t,\ \tilde L_r\bigr) = p\cdot\min(\hat\lambda,\lambda), \qquad \tilde L_t=\hat\lambda,\ \ \tilde L_r=\lambda \]
過剰な長さであっても不足していても「合致率」自体は \(p\) で一定に保たれるため、長さによる影響のみを純粋に抽出できます。長さの過不足を対称的に評価することになり、長い方の文字列を分母に採用する charsim の設計と素直に合致を認められます。なお、charsim は重なりと長さを \(1/n\) の重みで足し合わせますが、合致率 \(p\) が次数に関わらず一定であると仮定すると、charsim の数式において分子と分母に共通の \(\sum_n 1/n\) が現れて相殺され、後述の通り \(\hat\lambda\) と \(\lambda\) のみで構成される式になります(これに対し、BLEU や chrF は補正のない n-gram の純粋な本数で評価します)。また現実的には、長い n-gram ほど一致確率が低下するため、\(p\) は概ね \(q^n\)(\(q\) は 1 文字あたりの一致率)に沿って減衰します。最適な長さに関する結論はこの減衰を考慮しても変化しませんが、§6.4 で述べる「連続一致による過大評価」の議論は、この高次における一致のパターンが深く関わっています。

6.2 頂点が参照長に来る

charsim、BLEU、chrF はいずれも候補の長さが参照文の長さに等しいとき(\(\hat\lambda=\lambda\))にスコアが最大となり、その最大値も等しく \(p\) となります。charsim では \(p\) が一定であるという仮定のもとで、\(\bar M = p\min(\hat\lambda,\lambda)\sum_n\frac1n\)、\(L_t=\hat\lambda\sum_n\frac1n\)、\(\bar L_r=\lambda\sum_n\frac1n\) となるため、\(\sum_n 1/n\) が相殺され、この簡略モデルにおける式は以下のようになります。
\[ \operatorname{charsim} = p\,\frac{\min(\hat\lambda,\lambda)}{\max(\hat\lambda,\lambda)} \]
これにより、\(\hat\lambda=\lambda\) において precision と recall が一致して \(p\) となり、基準値から左右どちらに乖離してもスコアは低下します。BLEU は長さの不足を brevity penalty が、過剰な長さを precision が抑制し、chrF は precision と recall を F 値として統合するため、これらも同様に頂点は \(\hat\lambda=\lambda\) となります。最大値を取る頂点の位置と高さはこれら 3 つの指標で共通しているため、この点だけで優劣を判断することはできません。違いが現れるのは、そこから長さを増減させた際に「長すぎ・短すぎのどちらの誤りに対して寛容か」という点です。

6.3 長すぎ・短すぎへの寛容さ

候補が長すぎる場合、余計な n-gram が増えることで precision は低下しますが、recall は維持されます。逆に短すぎる場合は、情報が失われることで recall は低下しますが、precision は維持されます。つまり、各指標が precision と recall のどちらを重視した設計になっているかによって、長さの過剰と不足のどちらに寛容かが決まります。参照文の長さ \(\lambda=100\)、合致率 \(p=0.8\) の条件下で、候補の長さ \(\hat\lambda\) に対するスコアの挙動をプロットすると、以下の通りになります(ここでの BLEU および chrF は既存の実装のスコアではなく、\(p\) が一定であるという仮定のもとで長さペナルティの特性を表現したモデル式です。chrF は \(\beta=2\)、BLEU は precision \(\times\) brevity penalty としています。また、次数上限 \(n\le20\) は n-gram の純粋な本数で集約を行う BLEU および chrF 側の打ち切り条件であり、\(p\) が一定の仮定では \(\sum_n 1/n\) が相殺される charsim のスコア値には影響しません)。赤の破線は頂点 \((\lambda, p)\) から両側へ向かって 0 まで直線的に下降する対称な補助線を示しています。
候補長 λ̂ とスコア(簡略モデル, λ=100, p=0.8)
chrF(\(\beta=2\))は、過剰な長さに対しては寛容ですが、長さの不足に対しては厳格に振る舞います。recall を precision の 2 倍重視する設計であるため、短すぎる出力に対しては強いペナルティが課される一方、precision のみが低下する長すぎる出力に対しては寛容です。文字列を長くしても recall は \(p\) のまま維持されるため、スコアは大きく低下しません。グラフの右側領域(過剰な長さ)でも chrF(緑線)のみが高スコアを維持しており、参照文の長さから 30 文字乖離した時点のスコアは、長すぎる側が 0.76、短すぎる側が 0.60 と、長い出力を優遇する傾向に傾いています。
BLEU も長さの不足に対して厳格であり、頂点を境界として左右非対称なペナルティ曲線を描きます。本体の precision が過剰な長さに対する緩やかなペナルティとして機能するのに対し、長さの不足に対しては brevity penalty という別項によって急激なペナルティを課すため、短すぎる側のみが急峻に下降します(\(\hat\lambda=20\) で 0.015、\(30\) で 0.078)。評価本体と補正ペナルティが個別の構造であるために左右で曲線の性質が異なり、chrF とはメカニズムが異なりますが、「短すぎる出力に重いペナルティを課す」という点では共通しており、結果として長い出力を選好するインセンティブとして働きます。
charsim は \(\min(P,R)\) に基づくため、precision と recall の合成においてどちらか一方を優先・優遇することはありません。両者のうち低い方の値をそのまま採用するため、長さの過剰によって低下する precision も、不足によって低下する recall も同一の重みで作用します。過剰と不足を同一の数式かつ同一の尺度で測定するため、頂点の左右の曲線が滑らかに連続し、この簡略モデルにおいてはグラフの形状がほぼ対称になります(なお、実際の定義においては、境界処理、高次における n-gram の枯渇、上限 32 の設定、および \(1/n\) の重み付けの影響があるため、厳密な対称形にはなりません)。この簡略モデルでは \(\operatorname{charsim}=p\,\min(\hat\lambda,\lambda)/\max(\hat\lambda,\lambda)\) となるため、短すぎる側(\(\hat\lambda\le\lambda\))は赤の破線と完全に一致し、非対称なズレは長すぎる側に対してごくわずかに甘くなる方向でのみ残ります。
この特性の違いは、正解の近傍 \([50,150]\) の範囲でスコアを加重平均した「重心」\(\bar\mu\) に反映されます(参照文の長さを 100 に固定しているため、重心の基準値は 100 です)。以下に示す値は、いずれも本節のモデル式を用い、\(\lambda=100\)、\(p=0.8\)、\(n\le20\) の条件下で算出して小数第 1 位に丸めたものです。
\[ \bar\mu_{\text{chrF}}=103.3,\quad \bar\mu_{\text{BLEU}}=102.7,\quad \bar\mu_{\text{charsim}}=101.5 \]
基準となる 100 に対して chrF が最も長い側へ偏り、charsim が最も 100 に近い値を示すという結果になります。これは各指標の一般的な優劣を決定づけるものではありませんが、この簡略モデルの条件下においては、chrF や BLEU は長い出力を相対的に高く評価しやすい傾向があり、charsim の長さに対する偏りが最も小さいと言えます。

6.4 同じ一致量でも、連続一致による過大評価を一様重みより抑える

評価においてもう一つ課題となるのが、「同一の一致量であっても、その一致箇所が文字列の中でどのように分布しているか」という点です。偶然にも長く連続して一致した部分(定型句の無条件なコピーなど)が含まれていた場合、その部分だけでスコアが不当に押し上げられ、過大評価されてしまう懸念があります。この影響を切り離して検証するため、候補および参照文の長さを \(\lambda\) にそろえ、一致した文字数(すなわち 1-gram の重なり数)も同一に固定した上で、一致のパターンのみを以下の 2 通りに設定します。
  • 拡散: 一致箇所が文字列全体に分散しているパターン。各文字が独立に確率 \(q\) で一致すると仮定すると、次数 \(n\) における一致率は \(\approx q^n\) に沿って幾何級数的に低下し、\(m_n\approx q^n\lambda\) となります。
  • 連続ブロック: 長さ \(b=q\lambda\) の連続したブロック部分のみが完全一致し、残りの部分は一切一致しないパターン。ブロック内の n-gram は高次になっても一致し続けるため、\(m_n=\max(b-n+1,\,0)\) となり、一致数の減少が緩やかになります。
これら 2 つのパターンは 1-gram の一致数が等しいため、低次の評価では区別がつきません。明確な差が現れるのは高次の n-gram を評価する際です。候補と参照文の長さが一致しているため分母は共通であり、過大評価の影響は重み付き重なり \(\bar M=\sum_n m_n/n\) の差として表現されます。そこで、集約の上限 \(N\) を変化させながら、過大評価率(= score(連続ブロック) / score(拡散))を測定します。この値が 1 に近いほど、「連続ブロックか拡散かという分布パターンにスコアが左右されない」ことを意味します。
連続ブロックによる過大評価率(簡略モデル, λ=100, q=0.8)。一様重みは高い水準まで上がり、charsim の 1/n 重みは低く飽和
各次数に一様な重みを採用する設計では、評価する次数の上限を広げるほど、連続ブロックのスコアが支配的になってしまいます。chrF のように各次数のスコアを同一の重みで足し合わせると、長さ \(b\) のブロックが生成する大量の高次一致がそのままスコアに寄与するため、過大評価率は \(N\) を拡張するにつれて増大し、極めて高い水準(\(N=100\) のとき約 8.1 倍)に達します。この重み付けモデルで上限を大きく設定すると、偶然生じた長い一致に対して過剰に高い得点が付与されることになります。
charsim の \(1/n\) の重み付けは、こうした過大評価を一様重みよりも強力に抑制する効果があります。高次になるほど重みが小さくなり、連続ブロックによって獲得される高次一致のスコアが割り引かれるため、固定長 \(\lambda\) の条件下においては、上限 \(N\) をどれだけ拡張しても過大評価率は早期に飽和します(\(\lambda=100\) のとき約 2.0 倍)。なお、長く連続して一致していること自体は評価において肯定的に捉えられるべき側面もあるため、過大評価率が完全に 1 に収束しない(ある程度の差が残る)点は妥当な挙動と言えます。

7. 実装メモ

7.1 ナイーブ実装

各次数 \(n\) において、以下の手順を実行します。(1) 候補 \(t\) の文字 n-gram 頻度表を作成します(文字列の前後に境界記号を 1 個ずつ追加し、境界記号のみで構成される n-gram は除外します)。(2) 各参照文 \(r^{(i)}\) の頻度表との重なり \(m_{i,n}=\sum_g\min(c_x,c_y)\) を算出します。(3) 各自の n-gram 数 \(\ell_{t,n}\)、\(\ell_{i,n}\) をカウントします。(4) 各次数に \(1/n\) を乗じて、重み付きの量 \(M_i\)、\(L_t\)、\(L_i\)(平均長版を採用する場合は \(\bar M\)、\(L_t\)、\(\bar L_r\))に累積加算します。最終的に、集約された値に対して一度だけ \(\max\) による正規化を行うことで、最終スコアが算出されます。(次数の上限の設定は \(N=\min(N',32)\) とし、空入力や \(K=0\) の場合における例外処理は §7.4 の記述に従います。)

7.2 参照固定なら平均長版が有利

特定の参照集合を固定した上で、大量の候補文字列を評価するタスクにおいては、平均長版を採用することが明確に有利です。各クエリ(問い合わせ)の計算において必要な変数は、重み付き重なり \(\bar M\)、重み付き候補長 \(L_t\)、および参照文側の固定値 \(\bar L_r\) の 3 つのみです。具体的には、各次数 \(n\) および各 n-gram \(g\) について、以下の関数を事前計算しておきます。
\[ F_g(m) = \frac{1}{K}\sum_{i=1}^{K} \min\bigl(c_{r^{(i)}}(g),\, m\bigr) \]
これらをあらかじめ保持しておくことで、候補側の出現頻度 \(c_t(g)\) に対して、以下の式を用いて計算できます。
\[ \bar m_n = \sum_g F_g\bigl(c_t(g)\bigr),\qquad \bar M = \sum_{n=1}^{N}\frac{1}{n}\,\bar m_n \]
この手法を用いれば、候補文字列内に実際に出現した n-gram を照会するだけで計算が完了します。さらに \(\min(c, m) = \sum_{a=1}^{m}\mathbf 1[c \ge a]\) という関係性を利用すれば、各 \(g\) について「何本の参照文が、1 回以上・2 回以上・… という条件を満たしてその n-gram を保持しているか」を示す累積頻度表により、\(F_g\) をコンパクトに表現可能です。\(F_g(m)\) のテーブルは参照文側における最大出現回数までをカバーすれば十分であり、大半の n-gram は \(c=1\) であるため、スパース(疎)なデータ構造として効率的に保持できます。また、参照文側の重み付き長さ \(\bar L_r\) も事前に計算して定数化できます。ただし、すべての次数を無制限に保持すると、参照文側の処理だけで計算量やメモリが \(O(KL^2)\) 近くまで増大するため、長文を扱う際には最大次数の打ち切りが必須となります(§7.5)。

7.3 平均長版と中央値版

主定義としては平均長版を採用していますが、参照文の長さに極端な外れ値が含まれており、よりロバスト(堅牢)な代表値を採用したい場合には、分母を \(\max(L_t, \operatorname{median}_i L_i)\) と定めた派生形(中央値版)も検討可能です。ただし、分子が「平均」として集約されている以上、分母のみを「中央値」にすると、主定義と比較して数式の意味合いや解釈性がやや低下する点には注意が必要です。

7.4 エッジケース

§3.1 で述べた空入力に関する規約を実際の実装に適用する際は、分母 \(\max(L_t, \bar L_r)\) が 0 になるケース(ゼロ除算)に注意が必要です。(すなわち、候補も参照文もすべて空文字列であり、\(|t| = 0\) かつすべての \(i\) について \(|r^{(i)}| = 0\) となる場合)において、ゼロ除算を回避するための事前の条件分岐を設けます。具体的には、両者が空であればスコアを 1、片方のみが空であればスコアを 0 と処理し、参照文が 1 本も存在しない(\(K = 0\))場合は、未定義としてエラーをスローするか、あるいは欠損値を返すような分岐処理を実装するのが安全です。実装時における最小限の動作確認(回帰テスト)には、以下のテストケースが利用可能です。
  • 完全一致 = 1
  • 共有文字なし = 0
  • "" vs [""] = 1、"" vs ["a"] = 0(上記の空入力規約の検証)
  • ca vs ["cat"] = 0.498(§3.4 で示した数値例)
  • 特性の異なる複数の参照文において、基本形と平均長版のスコアが大きく乖離するケース(§3.3 の検証)

7.5 計算量と打ち切り

定数による上限の打ち切りを設けず、n-gram が尽きる次数 \(N'=\max(|t|,\max_i|r^{(i)}|)+2\) まで愚直に計算を行うと、1 文あたりの n-gram 生成処理だけでも、文字列の長さ \(L\) に対して \(O(L^2)\) の計算量が必要になってしまいます。charsim は基本的に 1 文単位、あるいは短文の評価を想定した指標であり、長文を対象とする場合はこの \(O(L^2)\) の計算コストが実用上の制約となります。既定値として設定した定数(32、§2.5)による打ち切り処理は、n-gram の生成量を \(O(32\,L)\) に抑制する役割も担っています。完全一致のケースにおいては、分子と分母に含まれる \(1/n\) の重み付き和が相互に相殺されて常にスコアが 1 となるため、打ち切りのしきい値となる定数をどのような値に設定しても、評価基準が揺らぐことはありません(§2.5)。一般的な自然文では、高次における重なり \(\bar m_n\) はほぼ 0 に収束するため、打ち切りによる影響は軽微ですが、定型句や反復表現、あるいはプログラムのソースコードのように、高次の n-gram 一致が重要な意味を持つ入力においては、この打ち切りがスコアに影響を及ぼす可能性があります。

8. 設計上の限界

charsim には、その設計思想に起因するいくつかの限界も存在します。以下に、トレードオフとなる具体的な注意点を明記しておきます。
  • 表層指標であるため、意味内容や言い換えを捉えられない点: 文字 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. まとめ

charsim は、文字 n-gram の重なりをベースとして、複数の参照文に対する平均的な合致度を測定する表層類似度指標です。その特徴は以下の通りにまとめられます。
  • 文字列の前後に境界記号を 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)\) を適用します。
  • 参照文の長さが揃っている場合は基本形と近い値を示しますが、長さのばらつきが大きい場合は両者のスコアが乖離し、平均長版は参照集合全体としての平均像に対する合致度を測定する個別の集約手法として機能します。
この設計を採用したことにより、(1) 文単位の評価でもスコアが破綻しにくい、(2) 出力文字列の長さの過不足(短すぎるケース・長すぎるケース)双方に対して単一の数式で対応可能である、(3) 参照平均型であるため「複数参照」の持つ意味が数学的に明確である、(4) 文字ベースであるため表記の差異に対して比較的堅牢である、(5) 平均長版は事前計算が容易で大規模な評価タスクに適している、といった実用上の優れた性質が導かれます。BLEU や chrF が強力な標準指標としての地位を占めている事実に変わりはありませんが、文章レベルでの滑らかなスコア比較、複数参照に対する平均的な合致度の測定、および長さの差異を同一の数式内で統合的に扱う点を重視する用途においては、charsim は極めて扱いやすい選択肢となります。なお、本記事の記述は charsim の定義および理論的性質の整理に留まっており、実際のデータセットを用いた BLEU や chrF との実スコア比較、あるいは人手評価との相関関係の検証については、今後の課題として位置づけています。

10. 参考文献

本記事で比較対象とした標準的な表層類似度指標(BLEU、chrF、chrF++)、および検証に使用した実装である sacreBLEU の文献情報は以下の通りです。
  1. Kishore Papineni, Salim Roukos, Todd Ward, Wei-Jing Zhu. BLEU: a Method for Automatic Evaluation of Machine Translation. ACL, 2002.
  2. Maja Popović. chrF: character n-gram F-score for automatic MT evaluation. WMT, 2015.
  3. Maja Popović. chrF++: words helping character n-grams. WMT, 2017.
  4. Matt Post. A Call for Clarity in Reporting BLEU Scores. WMT, 2018.(sacreBLEU)
また、この指標を考える前段階として、以下の自分たちの論文で文字 n-gram に基づく表層マッチング型の評価手法を実装・検討しています。
  1. 今城健太郎, 平野正徳, 鈴木脩司, 三上裕明. pfgen-bench: 日本語事前学習モデルのための文章生成性能評価ベンチマーク. Jxiv, 2024. 初期の Q&A ベンチマーク向けの評価実装です。参照回答群における文字 n-gram の出現頻度を単純に足し上げる設計であり、同一の n-gram が複数回出現した際の回数を、現在の \(\min(c_r,c_t)\) のような多重集合の重なり(クリッピング)としては区別していませんでした。
  2. 今城健太郎, 平野正徳. 高精度翻訳モデルのための自動評価手法の検討. Jxiv, 2026. 文字 n-gram の出現回数を \(f_{w,i}\) として扱う一方、長さの補正については参照訳の長さの中央値に対する個別の罰則(ペナルティ)項として設計しており、本記事のように重なりと長さを \(1/n\) の重みで集約して \(\max(L_t,\bar L_r)\) により正規化する形式とは異なります。

最終更新日: 2026年7月2日