나는 많은 사람 이름 모음을 가지고 있습니다 (예 : "john smith"). 나는 그 안에 이름으로 사람을 찾고 싶다. 그러나 일부 검색어의 철자가 잘못되었습니다 (예 : 'jon smth', 'johnsm ith'). 맞춤법 교정 된 일치 항목을 찾을 수있는 파이썬 바인딩이있는 맞춤법 교정 라이브러리가 있습니까?사람 이름의 맞춤법 수정 (Python)
저는 Whoosh와 Python-aspell을 알고 있습니다. Whoosh의 철자 교정은 올바른 철자의 모음을 메모리에 저장하는 것이 아니라 디스크에 기록하기 때문에 나에게 적합하지 않습니다. 그건 내 응용 프로그램에 대한 조회가 너무 느려집니다. 코드가 어떻게 구조화 되었기 때문에이 동작을 변경하는 것은 간단하지 않습니다. 또한 'y'는 'i'("jim kazinsky"-> "jim kazinski")와 혼동 될 가능성이 훨씬 더 높지만 'Who'는 'z'보다 다른 문자 편집을 다른 방식으로 적용하지 않습니다. .
Aspell은 이름에 일반적으로 공백이 포함되어 있기 때문에 사람 이름에 잘 맞지 않습니다. Aspell은 단어를 수정의 기본 단위로 간주합니다. 또한 Aspell은 문자 편집 거리 모델이 아닌 철자 교정의 n-gram 모델을 사용합니다. n-gram 모델은 사전 단어에 대해 의미가 있지만, 이름에 대해서는 잘 작동하지 않습니다. 사람들 "bob ruzatoxg"및 "joe ruzatoxg"는 희귀 한 성을 가지고 있기 때문에 드문 삼부작이 많이 있습니다. . 그러나 그들은 분명히 다른 사람들입니다.
또한 나는 각 쿼리를 컬렉션의 모든 항목과 비교할 수 없다는 것을 언급해야합니다. 너무 느립니다. 일부 색인은 미리 작성해야합니다.
감사합니다.
메타 폰 라이브러리는 유용하게 보입니다. 덕분입니다. 필자가 맞춤법 검사기를 써서 이름을 쓰는다면 (그리고 나는 아직 쓸 수있는 사람이 쓰여졌기를 희망하고있다.) 아마도 메트릭의 일부에 대한 메타 폰 매칭을 사용할 것이다. – Jeff
Levenshtein 라이브러리는 두 문자열 사이의 쌍으로 일치하는 것보다 더 많은 것으로 보입니다. 나는 그것을 사용할 수 있다고 생각하지 않는다. 왜냐하면 각 쿼리를 내 컬렉션의 모든 이름 문자열과 비교해야하기 때문이다. 그러나 Metaphone 라이브러리를 사용하면 쿼리를 처리하기 전에 내 컬렉션에있는 이름의 음성 표현 사전을 작성할 수 있습니다. – Jeff
[fuzzywuzzy] (http://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python) 옵션이 될 수 있습니다. – Matthias