Jaro-Winkler 文字列類似度計算|名寄せ・重複検出のスコアを内訳付きで
2 つの文字列がどれだけ似ているかを 0〜1 のスコアで返す計算ツール。Jaro 類似度と、先頭一致を加点する Jaro-Winkler 類似度の両方を、マッチ数・転置数・共通プレフィックス・マッチング窓まで分解して表示する。
💡 このツールについて
「マツモト」と「マツモド」、「Smith」と「Smyth」のように、わずかな打ち間違いやゆらぎを含む文字列をどう「同じ扱い」にするかは、顧客名寄せや重複レコード検出でつまずきやすい点だ。完全一致では拾えず、かといって人手で目視照合すると件数が多すぎる。
Jaro-Winkler 類似度は、文字の並び替え(転置)を許容しつつ、先頭が一致する文字列ほど高く評価する指標で、人名や短い ID の照合に強い。このツールは入力した 2 文字列に対してスコアを返すだけでなく、なぜそのスコアになったのかを「マッチした文字数 m」「転置数 t」「共通プレフィックス長 L」に分解して見せる。閾値をいくつに設定すれば誤判定が減るかを、自分の手元のデータで実際に試しながら決められる。
🧐 よくある質問
Jaro と Jaro-Winkler は何が違いますか? Jaro は文字のマッチ数と転置数だけからスコアを出します。Jaro-Winkler はそれに「先頭が一致しているほど加点する」補正を足したものです。先頭の打ち間違いが少ない人名照合では Jaro-Winkler が有利です。
Levenshtein 距離とどう使い分けますか? Levenshtein は挿入・削除・置換の最小編集回数を数える指標で、住所や長い社名のように全文字が同じ重みを持つ照合に向きます。Jaro-Winkler は短い人名や先頭重視の照合に向くため、データの性質で選び分けます。
スコアが 1 を超えることがあるのはなぜですか? Winkler スケーリング係数 p を大きくしすぎると起こります。p × プレフィックス長が 1 を超え得るためで、Winkler の標準値は 0.10、上限の目安は 0.25 です。
大文字小文字や絵文字はどう扱われますか? 比較オプションをオンにすると A と a を同一視します。比較は Unicode のコードポイント単位で、サロゲートペアや絵文字も 1 文字として数えます。
マッチング窓とは何ですか?
2 つの文字を「一致」とみなせる位置のずれの上限です。floor(max(|A|, |B|) / 2) - 1 で決まり、これを超えて離れた同じ文字はマッチに数えません。
📚 名寄せ現場での豆知識
Jaro-Winkler は米国国勢調査局の Matthew Jaro と William Winkler が記録照合(record linkage)のために整備した指標で、国内でも顧客マスタの名寄せや会員データのクレンジングで広く使われている。日本語データの場合、半角・全角カナのゆらぎや異体字を事前に正規化してから比較すると精度が安定する。閾値は一律ではなく、人名は 0.90 前後を起点に、社名は別の指標と併用するなど、対象データごとにこのツールで実測して決めるのが定石だ。