2014-12-09 10 views
0

속성 소유자와 데이터베이스가 있습니다. 각 개인 소유의 속성 수를 계산하고 싶지만 표준 불일치 문제가 발생합니다.많은 문자열이 일치합니다.

재 개발 권한 대 신개발 권한 대 Philadelphia REDEVELOPMEN 대 PHILA. 재개발 AUTH

는 PA

연방 대 PENNSYLVA 연방 대 PENNA의

커먼 웰스는 내가 본 것을에서 UNIVERSIT

의 재단 이사 대 PENN의

TRS UNIV, 이것은 매우 일반적인 문제입니다 하지만 내 문제는 두 가지 이유로 보았던 솔루션과 다릅니다.

1) 많은 수의 문자열 (~570,000)이 있으므로 편집 거리가 570000 x 570000 인 매트릭스를 계산할 수 있습니다 pairwise match metrics)은 리소스 사용의 위협적인 것처럼 보입니다.

2) 필자는 일회성 비교에 초점을 맞추지 않았습니다. 예를 들어, 대용량 데이터 퍼지 매칭 질문에서 가장 일반적으로 보았던 것처럼 사용자 입력을 파일의 데이터베이스와 일치시킵니다. 나는 하나의 고정 된 데이터 세트를 가지고 있는데, 나는 한 번에 모두 응축하고 싶다.

그런 운동을위한 잘 알려진 루틴이 있습니까? 나는 파이썬과 R에 가장 익숙하기 때문에 이들 중 하나에서 접근하는 것이 이상적 일 것이다. 그러나이 작업을 한 번만하면되기 때문에 다른 덜 익숙한 언어 (아마도 SQL의 어떤 것?)이 특정 작업에 대한.

+1

첫 번째 생각은 qdap 패키지를 사용하여 가장 자주 사용되는 용어를 찾은 다음 일련의 gsub (또는 gsubfn 패키지를 더 많이 사용하기 위해)을 수행하고 일반적인 변형을 표준화 된 형식으로 변환하는 것이 었습니다. 둘째, 모든 전치사와 등등을 삭제하십시오. 셋째, 모든 이름을 처음 두 개 또는 세 단어로 줄이십시오. 그 시점에서 agrep를 시도하고 일치가 합리적으로 효율적으로 완료 될 수 있는지 확인하십시오. – lawyeR

답변

1

나는 그것이 나의 새로운 직업에 직면하고있는 정확하게 그 것이다 (그러나 선 수는 몇 백만이다).

1), p = unique(a) 2) 공백으로 p에 문장 부호 분할 문자열을 제거를 사용하여 고유의 문자열의 집합을 찾을 단어 '주파수의 테이블을, 규칙을 만들고에 gsub를 사용 : 내 접근 방식에있다 약어, 잘못 입력 된 단어 등을 "복구"합니다. 예 : 예 : 귀하의 경우 "AUTH"는 "AUTHORITY", "UNIV"-> "UNIVERSITY"(또는 그 반대로)로 복구되어야합니다. 3) 눈으로 그들을 발견하면 오타를 복구하십시오. (예 : "10pack 10oz"및 "10oz 10pack").

+0

더 좋은 방법이 있었으면 좋겠지 만 이것이 가장 효과적이라고 생각합니다. 문자열 데이터를 만들 때 사람들이 일관성을 잃지 만, 문자열 데이터를 만들 때 더 좋을 것입니다. – MichaelChirico

1

허용되는 불일치 백분율을 제공하여 퍼지 이름 일치를 위해 R에서 agrep()를 사용할 수도 있습니다. 고정 된 데이터 세트를 전달하면 데이터베이스에서 일치하는 항목에 대해 grep 할 수 있습니다.