문제

나는 이름을 분리하는 것에 대한 참고 문헌을 찾고 있습니다 : "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 천만 레코드)를 보유하고 있으므로 스코어링 시스템을 약간 사용할 수 있습니다. 나는 그것을 사용하지만 다른 참조를 찾고있는 알고리즘을 설계하고 있습니다.

도움이 되었습니까?

해결책

불행히도 - 그리고이 작업을 꽤 많이 수행 한 적이 있습니다. 이상적인 알고리즘은 매우 데이터에 따라 다를 것이며 특정 상황에 대해이를 해결해야합니다.

이 알고리즘을 개발하기위한 총 시간과 노력 중에서, 시간은 다음과 같이 대략 분할 될 것이라고 말하고 싶습니다.

  1. 일반 문자열 조작의 경우 10%
  2. 데이터의 특정 특성 (멕시코 이름 형식, 데이터 입력 기발함)의 30%
  3. 데이터 품질 / 품질 부족을위한 60%

그리고 나는 그것이 일반적인 문자열 조작에 대해 매우 관대하다고 생각합니다. 물론 모든 레코드에 대한 품질 결과가 필요한지 또는 '깨끗한'레코드 등만 필요한지 여부에 따라 달라지며 '어려운'레코드를 무시할 수 있다면 훨씬 간단하게 만듭니다.

몇 가지 일반적인 팁

  • 필요하지 않은 경우 비율 / 공백 문자를 제거하십시오.
  • 공간에서 분할
  • 하이픈 / 구두점을 사용하여 성 또는 가족 이름을 식별하십시오.
  • 이니셜 일반적으로 단일 문자)는 성이 아닙니다. 즉, 그들은 첫 / 중간 여야합니다
  • 각 이름을 프로그래밍 방식으로 식별했다는 신뢰 수준을 결정하십시오 (이를 철저히 테스트하십시오). 개별적으로 제공 해야하는 유사한 패턴을 포함하는 데이터의 하위 집합이 있음을 알 수 있습니다 (다른 소스에서 나올 수 있음)

다른 팁

확인하려면 자연어 또는 기계 학습을 추가해야 할 수도 있습니다. 저자 이름을 식별하는 문제 (예 : 과학 논문에서)는 다른 순서, 약어, 적법 등으로보고 할 수 있기 때문에 어렵습니다. 데이터베이스가 더러워지면 당신이하는 모든 일이 모호하게 끝날 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top