2010-05-16 2 views
1

주소록 동기화 알고리즘을 연구 중입니다. 존재하는 경우 일부 코드를 재사용하고 싶지만 아직 코드를 찾을 수 없습니다.동일성을 탐지하기 위해 사람 이름을 비교하는 알고리즘

숫자/float/procent에서 알 수있는 알고리즘에 대해 알고있는 사람이 있습니까? 두 개의 이름이 얼마나 동일한 지 알 수 있습니다. Levenstein 거리는이 방법에서 좋지 않습니다. 이름과 주소록이 이름 섹션 각각의 시작과 일치하기 때문입니다.

John Smith


Smith Jon, Jonathan Smith,

답변

1

Jaro Winkler 알고리즘을 살펴보십시오. 그것은 이름에 좋습니다. http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance

먼저 이름이있는 경우 직접 다른 응답 비록 알고리즘에 지적했듯이, 성 문제는 당신은 확실히 스미스 존

+0

내가이 답변을 선택하고 존 스미스로 저장되어 있는지 확인하도록 정렬 할 수 있습니다 이전에 동일한 웹 사이트 링크를 사용하여 제출했습니다. – Pentium10

2

당신은 Levenshtein 또는 스미스 - 워터맨 같은 문자열 비교 알고리즘을보고해야한다. 여기에 a great library을 사용하면 시작합니다.

1

이름으로는 metaphone과 비슷한 알고리즘을 생각해 냈습니다.

문자열을 성, 주어진 이름, 제목 등으로 나누려면 논리가 필요합니다. 복잡 할 수도 있습니다.

가장자리의 경우가 있습니다. 누군가 "Professor"라는 제목을 가지고 있다면 그 이름을 해석 할 필요가 없습니다. 그리고 그들이 "주님"을 처음에는 그들의 첫 번째 이름 (많은 사람들이 주님이라고 부름)이나 그들의 직함이 될 수 있습니다. 등등. 성 (姓), 이름 및 직함이 무엇인지 알 수있는 표준 양식에 이름이 이미있는 경우 가장 좋습니다.

name (similarityto() 함수 참조), textfuzzy, probability을 참조하십시오.

관련 문제