PythonのSoundex

Zeeshan Afridi 2023年6月21日
  1. Python での soundex の紹介
  2. Python で soundex を使用する
  3. soundex 関数が無視するもの
  4. Python における soundex のルール
  5. まとめ
PythonのSoundex

Python の soundex 関数は、テキストの文字列を Soundex コードに変換する関数です。 データベース内の名前の索引付けや、類似した名前の検索に役立ちます。

名前のSoundexコードは、綴り方ではなく、響き方に基づいています。 これは、異なる発音の単語を正確なスペルと比較するための便利なツールです。

データベースで名前を検索する場合に便利です。

Python での soundex の紹介

soundex 関数は、文字列をエンコードするために使用される単純な音声アルゴリズムです。 このアルゴリズムは、Soundex システムによって生成されるコードと同様のコードを生成するように設計されています。

この関数は Python で記述されており、任意の Python プロジェクトに簡単に実装できます。 soundex 関数は文字列を入力として取り、文字列の音に基づいたコードを返します。

発音方法に基づいて各単語にコードを割り当てるため、発音が異なるが同じコードを持つ単語は同等と見なされます。 綴りは違うかもしれないが同じ発音の名前を検索するときに、これは大きな助けになります。

発音は異なるがスペルが正確な単語を比較する場合に役立ちます。 たとえば、catbat には同じ soundex コードがあります。

Python で soundex を使用する

Python の soundex 関数は文字列を入力として受け取り、文字列の音を表すコードを出力します。 コードは、スペルではなく、文字列の響きに基づいています。

発音は異なるが同じ音の名前を一致させるのに役立ちます。

soundex プロセスは、名前を音声で索引付けする手段です。 これは、英語で発音されるように、単語を音で索引付けするための単純な音声アルゴリズムです。

目標は、スペルの違いを無視して、名前の本質的な音を捉える Soundex コードを作成することです。

soundex 関数を使用するには、まずそれを含むモジュールをインポートする必要があります。 次に、文字列を引数として関数を呼び出すことができます。 この関数は、文字列の Soundex コードを返します。

Soundex コードは、名前の発音を表すために使用される 4 桁のコードです。 コードは、名前の最初の文字から派生し、その後に名前の 3つの子音を表す 3つの数字が続きます。

コードは、発音が似ている単語が同じコードを持つように発音できるように設計されています。

コード例:

# First, we will create a Soundex generator function
def soundex_generator(token):

    # Now Convert the word to upper
    token = token.upper()
    soundex = ""

    # Will Retain the First Letter
    soundex += token[0]

    # Now, will Create a dictionary that maps
    # letters to respective Soundex
    # codes. Vowels and 'H', 'W' and
    # 'Y' will be represented by '.'

    dictionary = {
        "BFPV": "1",
        "CGJKQSXZ": "2",
        "DT": "3",
        "L": "4",
        "MN": "5",
        "R": "6",
        "AEIOUHWY": ".",
    }

    # Now encode as per the dictionary
    for char in token[1:]:
        for key in dictionary.keys():
            if char in key:
                code = dictionary[key]
                if code != ".":
                    if code != soundex[-1]:
                        soundex += code

    # Trim or Pad to make Soundex a
    # 7-character code
    soundex = soundex[:7].ljust(7, "0")
    return soundex


# driver code
print(soundex_generator("Thecodeishere"))

出力:

T232600

soundex 関数が無視するもの

soundex プロセスは名前に含まれるアルファベット以外の文字を無視するため、句読点やスペースは考慮されません。

さらに、soundex は姓が子音の場合は最初の文字のみをコード化するため、母音で始まる姓はコード化されません。

最後に、soundex は発音に従って名前をコード化するため、発音が異なる同じ名前の変種 (Smith と Smyth など) は異なるコードになります。

Python における soundex のルール

ただし、Soundex プロセスにはいくつかのルールがあります。

  1. 第 1 に、soundex コードは英語の音声学に基づいているため、英語以外の言語の名前の索引付けにはあまり適していません。
  2. 次に、名前の soundex コードは、使用される英語の方言によって異なります。 たとえば、Smith という名前は、一般的なアメリカ英語では S530 とコード化されますが、南英語では S520 とコード化されます。
  3. 第 3 に、Soundex プロセスは、特に 2つ以上の名前が同じ soundex コードを持つ場合、あいまいな結果を生成することがあります。 たとえば、名前 SmithSmythe はどちらも soundex コード S530 を持っているため、Soundex ベースのインデックスを使用すると特定の名前を見つけるのが難しくなります。
  4. 第 4 に、Soundex プロセスは、スペルと発音が異なる名前の索引付けにはあまり効果的ではありません。 たとえば、名前 StevensonSTEH-ven-son と発音されますが、スペルに基づいて S315 とコード化されるため、Soundex ベースのインデックスを使用すると名前を見つけるのが困難になります。

全体として、Soundex プロセスは、名前を音声で索引付けするための単純で効果的な手段です。 ただし、使用する際に考慮すべきいくつかの制限があります。

まとめ

Python での soundex に関する記事を締めくくるために、soundex の動作とルールについて説明しました。 さらに、Python での soundex の動作を示す実用的な例について説明しました。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn