Soundexは完璧ではないかもしれませんが、少なくとも英語/ヘブライ語のマッチングの特定の例では、合理的なアプローチのようです。
名前の最初の文字を保持するという規則を使用することは絶対にできませんが、ラテンアルファベットでもそれが好きではありませんでした(母の家系の名前は「E」と「Y」の両方を調べる必要があるため) 。最初の文字を他のすべての文字と同じように扱うことをお勧めします。
次に、ヘブライ文字をSoundexコードにマッピングするだけです。中級の英語の音訳は本当に必要ありません。ヘブライ語→Soundexマッピングを直接コーディングするだけです。
- בוףפ→1
- גזחךכסקש→2
- דטת→3
- ץצ→32
- ל→4
- םמןנ→5
- ר→6
- אהיע→無視
ただし、Soundexは英語中心であるため、ヘブライ語の発音の特定のあいまいさを正しく処理できない場合があります。
- וは上記のリストで1(英語のVのように)にマップされていますが、多くの場合O、U、またはWを表します。この場合、Soundexでは無視する必要があります。
- חは英語に相当するものがないため、分類が困難です。これは(1)「ch」の音訳と一致し、(2)ך/כがダーゲーシュの有無にかかわらず同じカテゴリを持つことができるため、カテゴリ2に入れました。
- アシュケナージの発音は、תをカテゴリー2と3に分割します。
これに対処するために、文字列に対して複数のSoundexキーを生成できます。たとえば、「שבת」は212と213の両方にマップされます。
ギリシャ語についても同様のマッピングを行うことができます。
- ΒΠΦ→1
- Ψ→12
- ΓΖΚΞΣΧ→2
- ΔΘΤ→3
- Λ→4
- ΜΝ→5
- Ρ→6
- ΑΕΗΙΟΥΩ→無視
またはロシア語:
- БВПФ→1
- ГЖЗКСХЧШЩ→2
- ДТ→3
- Ц→32
- Л→4
- МН→5
- Р→6
- АЕЁИЙОУЪЫЬЭЮЯ→無視
(音訳の規則によっては、2の一部が32になる場合があることに注意してください。)
類似性の「評価」は、Soundex値の最長共通部分列長やレーベンシュタイン距離などのメトリックに基づいて取得できます。
たとえば、2つの文字列間の「類似性」を2 * lcslen(A、B)/(len(A)+ len(B))と定義して、0から1の間のスコアを取得できます。