PythonのSoundex
Python の soundex
関数は、テキストの文字列を Soundex コードに変換する関数です。 データベース内の名前の索引付けや、類似した名前の検索に役立ちます。
名前のSoundexコードは、綴り方ではなく、響き方に基づいています。 これは、異なる発音の単語を正確なスペルと比較するための便利なツールです。
データベースで名前を検索する場合に便利です。
Python での soundex
の紹介
soundex
関数は、文字列をエンコードするために使用される単純な音声アルゴリズムです。 このアルゴリズムは、Soundex システムによって生成されるコードと同様のコードを生成するように設計されています。
この関数は Python で記述されており、任意の Python プロジェクトに簡単に実装できます。 soundex
関数は文字列を入力として取り、文字列の音に基づいたコードを返します。
発音方法に基づいて各単語にコードを割り当てるため、発音が異なるが同じコードを持つ単語は同等と見なされます。 綴りは違うかもしれないが同じ発音の名前を検索するときに、これは大きな助けになります。
発音は異なるがスペルが正確な単語を比較する場合に役立ちます。 たとえば、cat
と bat
には同じ 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 に、
soundex
コードは英語の音声学に基づいているため、英語以外の言語の名前の索引付けにはあまり適していません。 - 次に、名前の
soundex
コードは、使用される英語の方言によって異なります。 たとえば、Smith
という名前は、一般的なアメリカ英語ではS530
とコード化されますが、南英語ではS520
とコード化されます。 - 第 3 に、Soundex プロセスは、特に 2つ以上の名前が同じ
soundex
コードを持つ場合、あいまいな結果を生成することがあります。 たとえば、名前Smith
とSmythe
はどちらもsoundex
コードS530
を持っているため、Soundex ベースのインデックスを使用すると特定の名前を見つけるのが難しくなります。 - 第 4 に、Soundex プロセスは、スペルと発音が異なる名前の索引付けにはあまり効果的ではありません。 たとえば、名前
Stevenson
はSTEH-ven-son
と発音されますが、スペルに基づいてS315
とコード化されるため、Soundex ベースのインデックスを使用すると名前を見つけるのが困難になります。
全体として、Soundex プロセスは、名前を音声で索引付けするための単純で効果的な手段です。 ただし、使用する際に考慮すべきいくつかの制限があります。
まとめ
Python での soundex
に関する記事を締めくくるために、soundex
の動作とルールについて説明しました。 さらに、Python での soundex
の動作を示す実用的な例について説明しました。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn