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자리 코드입니다. 코드는 이름의 첫 글자와 이름의 세 자음을 나타내는 세 개의 숫자로 구성됩니다.

이 코드는 비슷한 발음을 가진 단어가 같은 코드를 갖도록 발음할 수 있도록 설계되었습니다.

예제 코드:

# 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 코드가 영어 음성학을 기반으로 하기 때문에 영어 이외의 언어에서 이름을 인덱싱하는 데 적합하지 않습니다.
  2. 둘째, 주어진 이름에 대한 soundex 코드는 사용되는 영어 방언에 따라 다를 수 있습니다. 예를 들어, Smith라는 이름은 일반 미국 영어에서는 S530으로 코드화되지만 남부 영어에서는 S520으로 코드화됩니다.
  3. 셋째, Soundex 프로세스는 특히 두 개 이상의 이름에 동일한 soundex 코드가 있는 경우 때때로 모호한 결과를 생성할 수 있습니다. 예를 들어 SmithSmythe라는 이름에는 모두 soundex 코드 S530이 있어 Soundex 기반 색인을 사용할 때 특정 이름을 찾기가 어렵습니다.
  4. 넷째, Soundex 프로세스는 철자와 다르게 발음되는 이름을 색인화하는 데 그다지 효과적이지 않습니다. 예를 들어 Stevenson이라는 이름은 STEH-ven-son으로 발음되지만 철자에 따라 S315로 코딩되므로 Soundex 기반 색인을 사용할 때 이름을 찾기가 어렵습니다.

전반적으로 Soundex 프로세스는 소리별로 이름을 색인화하는 간단하고 효과적인 수단입니다. 그러나 사용할 때 고려해야 할 몇 가지 제한 사항이 있습니다.

결론

Python에서 soundex에 대한 기사를 마무리하기 위해 soundex의 작동 및 규칙에 대해 논의했습니다. 또한 Python에서 soundex 작업을 보여주는 실제 예제에 대해 논의했습니다.

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