사운덱스
Soundex사운덱스(Soundex)는 영어에서 발음하는 것처럼 소리로 이름을 색인하는 음성 알고리즘이다.동음이의어가 같은 표현으로 암호화되어 철자의 사소한 차이에도 불구하고 일치할 수 있도록 하는 것이 목표다.[1]알고리즘은 주로 자음을 인코딩한다. 모음은 첫 글자가 아니면 인코딩되지 않는다.사운덱스는 모든 음성 알고리즘 중에서 가장 널리 알려져 있다(일부적으로는 IBM db2, Postgre와 같은 인기 있는 데이터베이스 소프트웨어의 표준 기능이기 때문이다).SQL,[2] MySQL,[3] SQLite,[4] Ingres, MS SQL Server,[5] Oracle.[6]및 SAP ASE).[7]사운덱스의 개선은 많은 현대 음성 알고리즘의 기초가 된다.[8]
역사
사운덱스는 로버트 C에 의해 개발되었다.러셀과 마가렛 킹 오델은[9] 1918년과[10] 1922년에 특허를 얻었다.[11]변주곡인 American Soundex는 1930년대에 1890년부터 1920년까지 미국 검열소의 소급 분석에 사용되었다.사운덱스 코드는 1960년대에 컴퓨터 기계 협회의 통신과 저널에 실린 여러 기사의 주제였고, 특히 도날드 크누스의 컴퓨터 프로그래밍 기술에서 설명되었을 때 두드러졌다.[12]
국가기록원(NARA)은 미국 정부가 사용하는 사운덱스의 공식 이행을 위해 정한 현행 규정을 유지하고 있다.[1]이러한 인코딩 규칙은 요청 시 NARA에서 General Information Liplet 55의 형태로 이용할 수 있다. "Using the Census Soundex"
아메리칸사운덱스
이름에 대한 사운덱스 코드는 세 개의 숫자 뒤에 알파벳 문자, 즉 글자는 이름의 첫 번째 글자, 그리고 숫자는 나머지 자음을 부호화한다.발음이 비슷한 곳의 자음은 같은 숫자를 공유하기 때문에 예를 들어 B, F, P, V는 각각 숫자 1로 인코딩된다.
정확한 값은 다음과 같이 구할 수 있다.
- 이름의 첫 글자를 유지하고 a, e, i, o, u, y, h, w의 다른 모든 발생을 삭제하십시오.
- 자음을 다음과 같이 숫자로 대체하십시오(첫 번째 문자 이후).
- b, f, p, v → 1
- c, g, j, k, q, s, x, z → 2
- d, t → 3
- l → 4
- m, n → 5
- r → 6
- 같은 숫자의 두 개 이상의 문자가 원래 이름(1단계 이전)에 인접해 있는 경우, 첫 번째 문자만 유지하십시오. 또한 'h', 'w' 또는 'y'로 구분된 동일한 숫자의 두 문자는 단일 숫자로 코드화된 반면, 모음으로 구분된 문자는 두 번 코드화된다.이 규칙은 첫 글자에도 적용된다.
- 단어에 세 개의 숫자를 할당하는 문자가 너무 적으면 세 개의 숫자가 있을 때까지 0을 추가한다.숫자가 4개 이상일 경우 처음 3개만 유지하십시오.
이 알고리즘을 사용하여 "Robert"와 "Rupert"는 같은 문자열 "R163"을 반환하고 "Rubin"은 "R150"을 산출한다."Ashcraft"와 "Ashcroft"는 둘 다 "A226"을 산출한다."Tymczak"은 "T520"이 아닌 "T522"를 산출한다(이름의 chars 'z'와 'k'는 그 사이에 모음자가 있으므로 2번 코딩된다).'피스터'는 'P123'이 아닌 'P236'을, '허니맨'은 'H555'를 산출한다.
다음 알고리즘에 따라 대부분의 SQL 언어(Postgre 제외)가 수행된다.SQL[example needed]:
- 첫 글자를 저장해라.a, e, i, o, o, y, h, w.의 모든 발생을 0으로 매핑
- 위의 [2]와 같이 모든 자음(첫 번째 문자 포함)을 숫자로 교체하십시오.
- 인접한 동일한 숫자를 모두 한 자릿수로 교체한 다음 0자리를 모두 제거하십시오.
- 저장된 문자의 숫자가 결과 첫 번째 숫자와 같으면 숫자를 제거하십시오(문자를 유지하십시오).
- 결과가 3자리 미만일 경우 3개의 0을 추가하십시오.첫 번째 글자와 그 뒤의 3자리를 제외한 모든 숫자를 제거한다(이 단계는 위의 설명에서 [4.]와 동일).
위의 두 알고리즘은 모음이 제거될 때의 차이 때문에 모든 경우에 동일한 결과를 반환하지 않는다.첫 번째 알고리즘은 대부분의 프로그래밍 언어에서 사용되고 두 번째 알고리즘은 SQL에서 사용된다.예를 들어 '로버트'와 '루퍼트' 모두 'R163'을, '티맥작'은 'T520'을, '허니맨'은 'H555'를 각각 산출한다.SQL과 프로그래밍 언어가 결합된 응용프로그램을 설계할 때 설계자는 SQL Server에서 Soundex 인코딩을 모두 할 것인지 프로그래밍 언어로 할 것인지 결정해야 한다.MySQL 구현은 4자 이상을 반환할 수 있다.[13][14]
변형
리버스 사운덱스라는 유사한 알고리즘이 첫 번째 글자가 아닌 이름의 마지막 글자에 접두사를 붙인다.
뉴욕주 식별 및 인텔리전스 시스템(NYSIIS) 알고리즘은 사운덱스 알고리즘의 개선으로 1970년에 도입되었다.NYSIIS는 일부 다문자의 n-gram을 처리하고 상대 모음 위치를 유지하는 반면 Soundex는 그렇지 않다.
다이치-모코토프 사운덱스(D–M 사운덱스)는 1985년 계보학자 게리 모코토프에 의해 개발되었고, 후에 계보학자 랜디 다이치가 러셀 사운덱스를 게르만 성이나 슬라브 성을 가진 유대인에게 적용하려다가 마주친 문제들(모스코위츠 vs) 때문에 개선되었다.모스코비츠 또는 레빈 vs.르윈."D-M Soundex는 때때로 "Jewish Soundex" 또는 "East Europe Soundex"[15]로 불리지만, 저자들은 그러한 이름들의 사용을 단념한다.D-M Soundex 알고리즘은 단일 이름에 대해 32개의 개별 음성 인코딩을 반환할 수 있다.D-M Soundex의 결과는 100,000에서 999999 사이의 숫자 형식으로 반환된다.이 알고리즘은 러셀 사운덱스보다 훨씬 더 복잡하다.
사운덱스 알고리즘의 결함에 대한 대응으로 로렌스 필립스는 1990년에 엠유콘 알고리즘을 개발했다.필립스는 2000년에 Miquone에 대한 개선을 개발했는데, 그는 이것을 Double Migone이라고 불렀다.더블 엠유콘은 이전보다 훨씬 더 큰 인코딩 규칙 집합을 포함하고, 비 라틴 문자의 서브셋을 처리하며, 영어로 된 단어의 다른 발음을 설명하기 위해 기본 인코딩과 보조 인코딩을 반환한다.필립스는 2009년 영어단어, 미국인에게 친숙한 영어 이외의 단어, 미국에서 발견된 이름과 성을 정확하게 인코딩하는 비율이 훨씬 높은 전문적 버전을 제공하기 위해 엠유곤 3을 추가 개정으로 만들었다.프로그래머가 매칭의 정밀도를 더욱 촘촘하게 집중할 수 있도록 보다 정확한 자음과 내모음 매칭이 가능한 설정도 제공한다.
참고 항목
참조
- ^ a b "The Soundex Indexing System". National Archives and Records Administration. 2007-05-30. Retrieved 2010-12-24.
- ^ "PostgreSQL: Documentation: 9.1: fuzzystrmatch". postgresql.com. Retrieved 2012-11-03.
- ^ "MySQL :: MySQL 5.5 Reference Manual :: 12.5 String Functions - SOUNDEX". dev.mysql.com.
- ^ "SQL As Understood By SQLite - Core Functions". sqlite.org. Retrieved 2017-01-27.
- ^ "SOUNDEX (Transact-SQL)". msdn.microsoft.com. Retrieved 2012-11-03.
- ^ "SOUNDEX". docs.oracle.com. Retrieved 2017-10-20.
- ^ "soundex". SyBooks Online. Retrieved 2021-05-24.
- ^ "Phonetic Matching: A Better Soundex". Retrieved 2012-11-03.
- ^ Odell, Margaret King (1956). "The profit in records management". Systems. New York. 20: 20.
- ^ 미국 특허권 1261167, R. C. 러셀, (제목 없음), 1918-04-02 (자료 보관)
- ^ 미국 특허 1435663, R. C. 러셀, (주제하지 않은) 1922-11-14 (아카이브) 발행
- ^ Knuth, Donald E. (1973). The Art of Computer Programming: Volume 3, Sorting and Searching. Addison-Wesley. pp. 391–92. ISBN 978-0-201-03803-3. OCLC 39472999.
- ^ CodingForums.com ([1])
- ^ "MySQL :: MySQL 5.5 Reference Manual :: 12.5 String Functions - SOUNDEX". dev.mysql.com.
- ^ Mokotoff, Gary (2007-09-08). "Soundexing and Genealogy". Retrieved 2008-01-27.