개인 이름을 부분적으로 분할하기위한 알고리즘
-
06-07-2019 - |
문제
나는 이름을 분리하는 것에 대한 참고 문헌을 찾고 있습니다 : "John A. Doe"는 Parts, First = John, Middle = A., Last = Doe입니다. 멕시코에서 우리는 친자, 모성, 첫 번째 및 두 번째 이름을 가지고 있으며 다른 순열로 작성 될 수 있으므로 문제는 매우 복잡합니다.
데이터에 의존하기 때문에 모든 단어에 대한 점수를 계산하는 매칭 소프트웨어로 작업하여 결정을 내릴 수 있습니다 (큰 데이터베이스를 기반으로 함). 입력 데이터는 깨끗하지 않으며 일부 정부 웹 페이지에서 가져오고 인간 필터링되므로 인식 해야하는 정크가있을 수 있습니다. 제안이 있습니까?
편집하다예 :
name: Javier Abdul Córdoba Gándara common permutations (or as it may appear in gvt data referring to same person): Córdoba Gándara Javier Abdul Javier A. Córdoba Gándara Javier Abdul Córdoba G. paternal=Córdoba maternal=Gándara first given:Javier second given:Abdul
name: María de la Luz Sánchez Martínez paternal:Sánchez maternal: Martínez first given: María de la Luz
name: Paloma Viridiana Alin Arias Medina paternal: Arias maternal: Medina first given: Paloma second given: Viridiana Alin
내가 말했듯이 각 단어의 의미는 점수에 달려 있습니다. 하나는 그것을 아는 방법이 없습니다
Viridiana그리고
Alin점수가 아닌 경우 이름이 부여됩니다.
우리는 매우 강력한 데이터베이스 (8 천만 레코드)를 보유하고 있으므로 스코어링 시스템을 약간 사용할 수 있습니다. 나는 그것을 사용하지만 다른 참조를 찾고있는 알고리즘을 설계하고 있습니다.
해결책
불행히도 - 그리고이 작업을 꽤 많이 수행 한 적이 있습니다. 이상적인 알고리즘은 매우 데이터에 따라 다를 것이며 특정 상황에 대해이를 해결해야합니다.
이 알고리즘을 개발하기위한 총 시간과 노력 중에서, 시간은 다음과 같이 대략 분할 될 것이라고 말하고 싶습니다.
- 일반 문자열 조작의 경우 10%
- 데이터의 특정 특성 (멕시코 이름 형식, 데이터 입력 기발함)의 30%
- 데이터 품질 / 품질 부족을위한 60%
그리고 나는 그것이 일반적인 문자열 조작에 대해 매우 관대하다고 생각합니다. 물론 모든 레코드에 대한 품질 결과가 필요한지 또는 '깨끗한'레코드 등만 필요한지 여부에 따라 달라지며 '어려운'레코드를 무시할 수 있다면 훨씬 간단하게 만듭니다.
몇 가지 일반적인 팁
- 필요하지 않은 경우 비율 / 공백 문자를 제거하십시오.
- 공간에서 분할
- 하이픈 / 구두점을 사용하여 성 또는 가족 이름을 식별하십시오.
- 이니셜 일반적으로 단일 문자)는 성이 아닙니다. 즉, 그들은 첫 / 중간 여야합니다
- 각 이름을 프로그래밍 방식으로 식별했다는 신뢰 수준을 결정하십시오 (이를 철저히 테스트하십시오). 개별적으로 제공 해야하는 유사한 패턴을 포함하는 데이터의 하위 집합이 있음을 알 수 있습니다 (다른 소스에서 나올 수 있음)
다른 팁
확인하려면 자연어 또는 기계 학습을 추가해야 할 수도 있습니다. 저자 이름을 식별하는 문제 (예 : 과학 논문에서)는 다른 순서, 약어, 적법 등으로보고 할 수 있기 때문에 어렵습니다. 데이터베이스가 더러워지면 당신이하는 모든 일이 모호하게 끝날 것입니다.