> soundex | 音声 | あいまい検索 <
// Soundex - 名前を発音ベースでインデックスする音声アルゴリズム
発音ベース
綴りではなく発音に基づいて名前をコード化します。
あいまいマッチング
綴りが異なっていても、似た発音の名前をまとめて検索できます。
系譜・家系調査
家系図作成や歴史的記録の検索に役立つツールです。
>> 技術情報
Soundex の仕組み:
Soundex は最初の文字をそのまま残し、残りの子音を音声グループに基づく数字に置き換えます。似た音の子音は同じ数字になり、母音は無視されます。American では結果は 4 文字にパディングされ、Refined では可変長コードになります。
エンコード規則:
1 = B,F,P,V 2 = C,G,J,K,Q,S,X,Z 3 = D,T 4 = L 5 = M,N 6 = R Robert → R163 Rupert → R163 Rubin → R150
Soundex を使う理由:
- >データベースの重複レコード検出
- >家系・系譜研究
- >国勢調査データの分析
- >顧客データの名寄せ
- >スペルミスの補正
>> よくある質問
Soundex とは?
Soundex は 1918 年に考案された音声アルゴリズムで、名前を発音に基づいてインデックス化するためのものです。もともとはアメリカの国勢調査で、綴りが違っても似た発音の姓を見つけやすくする目的で設計されました。
American と Refined Soundex の違いは?
American Soundex は 4 文字のコード(先頭の文字 + 3 桁の数字)を生成します。Refined Soundex(SQL Server などで採用)は、より細かいマッピングと可変長コードを使い、マッチングの精度を高めています。
綴りが違うのに同じコードになるのはなぜ?
それが Soundex の狙いです。Smith と Schmidt のように、綴りは違っても発音が似ている名前を同じグループにまとめます。そのおかげで、データベースで名前のバリエーションを簡単に探せます。
Soundex の限界は?
Soundex は主に英語の名前向けに設計されています。他の言語の名前では精度が落ちる場合があり、同じ名前でも綴りが大きく異なると異なるコードになることがあります。
// クイックリファレンス
| Digit | Letters |
|---|---|
| 1 | B F P V |
| 2 | C G J K Q S X Z |
| 3 | D T |
| 4 | L |
| 5 | M N |
| 6 | R |
| — | A E I O U Y H W (skipped) |
// コード例
1. Keep the first letter. 2. Replace the other letters with digits (table above). 3. Drop vowels and Y; H and W are skipped (letters on both sides of H/W with the same code collapse into one digit). 4. Collapse adjacent identical digits. 5. Pad with 0 or truncate to letter + 3 digits. Robert -> R163 Rupert -> R163 Rubin -> R150 Ashcraft -> A261 Tymczak -> T522 Pfister -> P236
>> その他の質問
Q: RobertとRupertが同じSoundexコードになるのはなぜですか?
A: どちらもRで始まり、子音グループで符号化されます。B/P → 1、R → 6、T → 3でR163になります。Soundexは似た音の子音をまとめるため、同じ名前の綴り違いが一致しやすくなります。
Q: SoundexはHとWをどう扱いますか?
A: HとWは飛ばされ、区切りになりません。両側の子音が同じコードなら1つの音として数えます。そのためAshcraftはA226ではなくA261です。母音は区切りになります。
Q: Soundexの限界は?
A: 英語の名前向けに設計され(1918/1922年のRussellとOdellの特許)、先頭文字以降の音は区別しません。CatherineとKatherineのように頭文字が違う名前は一致しません。