2008-09-03 4 views

답변

13

Soundex는 오히려 원시적입니다. 원래는 손으로 계산되도록 개발되었습니다. 비교할 수있는 키가됩니다.

Soundex는 원래 미국 인구 조사 데이터 용으로 개발 되었기 때문에 서양 이름과 잘 작동합니다. 음성 학적 비교를위한 것입니다.

Levenshtein distance는 두 값을보고 유사도를 기반으로 값을 생성합니다. 누락 된 문자 또는 대체 된 문자를 찾고 있습니다.

기본적으로 Soundex는 "Schmidt"와 "Smith"가 같은 성을 사용하는 것이 좋습니다.

Levenshtein 거리가 사용자가 ;-)

0

@Keith "Levnshtein"를 잘못 입력했다고 안보 위해 더 낫다 : 나는 다른 문제에 게시 된

을 Daitch - Mokotoff 우리 유럽인을위한 더 나은 (그리고 나는입니다 미국은 논쟁 중이다).

나는 또한 위키를 Levenshtein에서 읽었습니다. 하지만 나는 (실제 생활에서) Soundex보다 더 나은 사람이 인 이유를 알 수 없다..

8

나는 Soundex가 아니라 Metaphone을 사용할 것을 제안합니다. 언급했듯이, Soundex는 19 세기에 미국인의 이름으로 개발되었습니다. 메타 폰은 가난한 사람들이 "소리를 내며"발음을 알아 내고 발음을 표기 할 때 어떤 결과를 얻을 것입니다.

편집 거리는 반복 된 문자, 전치 된 문자 또는 잘못된 키를 치는 것과 같은 오타를 잡는 데 좋습니다.

사용자가 가장 적합한 사용자를 결정하려면 —을 사용하거나 둘을 함께 사용하고 Metaphone을 사용하여 Levenshtein의 제안을 보완하십시오.

원래 질문에 대해서는 정보 검색 응용 프로그램에서 n-grams을 성공적으로 사용했습니다.

+0

그리고 나는 더블 메타 폰으로 가고 싶다. 2 개의 코드를 리턴한다. 하나는 서구, 다른 하나는 '외국'(슬라브 IIRC) 소리이다. – gbjbaanb

+0

Soundex는 20 세기 초에 개발되었으며 19 세기의 센서스 데이터에 사용되었습니다. – webmaster777

2

Daitch-Mokotoff에 동의합니다. Soundex는 원래 미국 인구 조사 수혜자가 'Americanized'이름을 원했기 때문에 편향되었습니다.

아마의 차이에 대한 예제가 도움이 될 것이다 :

Soundex와는 단어의 시작에 추가 값을 넣습니다 - 사실은 첫 번째 네 음성 소리를 생각한다. 따라서 "Schmidt"와 "Smith"는 "Smith"와 "Wmith"는 일치하지 않습니다.

Levenshtein의 알고리즘은 오타를 찾는 것이 더 좋을 것입니다. 하나 또는 두 개의 누락되거나 대체 된 문자는 높은 상관 관계를 생성하는 반면, 누락 된 문자의 소리 나는 영향은 덜 중요합니다.

나는 둘 중 하나가 더 좋다고 생각하지 않으며 사용자가 올바른 입력을 할 수 있도록 거리 알고리즘과 소리를 모두 고려할 것입니다.

관련 문제