문제

두 개의 별도 테이블에 주소 목록이 약간 떨어져있어 일치해야합니다. 예를 들어, 동일한 주소는 여러 가지 방법으로 입력 할 수 있습니다.

  • 110 테스트 st
  • 110 Test St.
  • 110 테스트 스트리트

간단하지만 더 복잡한 장면에서 상황을 상상할 수 있습니다. 위의 주소를 키로 일치시킬 수있는 간단한 알고리즘을 개발하려고합니다.

예를 들어. 열쇠는 "11TEST" - 110의 첫 두 개, 첫 두 번의 테스트 및 첫 두 개의 거리 변형 일 수 있습니다. 전체 일치 키에는 우편 번호의 첫 5 개도 포함되므로 위의 예에서는 전체 키가 "11Test44680"처럼 보일 수 있습니다.

효과적인 알고리즘이나 자원에 대한 아이디어를 찾고 있습니다. 모든 아이디어는 의사 코드 또는 선택한 언어 일 수 있습니다.

우리는 우리의 주소에만 관심이 있습니다. 실제로, 우리는 오하이오와 미시간의 250 개의 우편 번호에서만 주소를보고 있습니다. 또한 비용 효율적인 솔루션에 대한 아이디어에 개방적이지만 우편 소프트웨어에 액세스 할 수는 없습니다 (본질적으로 한 번 사용되는 경우). 이것은 정부 소스의 초기 데이터 덤프이므로 사용자를 청소할 수있는 방법에 대한 제안이 응용 프로그램을 구축 할 때 도움이되지만 주소를 다음과 같이 일치시킬 수있는 최상의 초기를 갖고 싶습니다. 최대한 최고.

도움이 되었습니까?

해결책

저는 우리가 말하는 것과 비슷한 알고리즘을 연구하고 있습니다. 캐나다, 미국, 멕시코 및 영국에서 주소를 처리해야합니다. 내가 직면 한 문제는 그들이 3 개의 필드 텍스트 형식의 데이터베이스에 있다는 것입니다 [ 저것 좋은 아이디어는 IMHO를 촬영해야했기 때문에 농촌 경로, 일반 배달, 대량 수신기, 여러 국가, 주 vs. 주 vs. 카운티, 우편 번호, 우편 번호, 철자 실수는 작거나 간단한 작업이 아닙니다. .

철자 실수만으로는 작은 위업이 아니 었습니다. 특히 프랑스 이름을 사용하는 나라에 도달 할 때는 성도, 성사, 성도, 성도, 성도, sts, stes, grand, grande, grands, 기간 또는 하이픈이없는 그랜드입니다. 이름의 큰 부분은 성능 문제의 끝이 없습니다. 특히 ST가 성자를 의미 할 때 또는 길거리 및 올바른 맥락에서 입력되었거나 없을 수도 있습니다 (예 : 여성 대 남성). 주소가 크게 올바르게 입력되었지만 부정확 한 지방이나 우편 번호가있는 경우 어떻게해야합니까?

검색을 시작할 수있는 한 곳입니다 Levenstein 거리 알고리즘 철자의 많은 부분을 제거하는 데 정말 유용한 것으로 나타났습니다. 그 후에는 주로 키워드를 검색하고 우편 데이터베이스와 비교하는 경우입니다.

현재이 작업을 수행하는 도구를 개발하고있는 사람과 협력하는 데 정말로 관심이있을 것입니다. 아마도 우리는 서로를 공통된 솔루션으로 도울 수 있습니다. 나는 이미 그 길의 일부이며 지금까지 언급 한 모든 문제를 극복했으며, 같은 문제를 해결하는 다른 사람이 아이디어를 튕기는 데 정말 도움이 될 것입니다.

건배 - [AFSINC DOT CA의 벤

다른 팁

Tonot을 선호하는 경우 하나를 개발하고 여기에 언급 된 많은 기술을 사용하는 상용 제품을 사용하는 경우 다음을 참조하십시오. http://www.melissadata.com/dqt/matchup-api.htm

면책 조항 : 나는 회사의 개발과 일에 역할을했습니다.

영국에서는 다음을 사용할 것입니다.

  • 집 이름 또는 번호 (이름이 아파트 블록의 평면 번호 포함)
  • 우편 번호

당신은 확실히 우편 번호를 사용해야하지만, 미국에서는 영국의 우편 번호에 비해 우편 번호가 매우 넓은 영역을 다루고 있다고 생각합니다. 따라서 거리와 도시를 사용해야합니다.

예제는 11 Test Street, 110-119 Test Street 등을 구별하지 않습니다.

회사가 주소 조회 시스템에 액세스 할 수있는 경우이를 통해 모든 데이터를 실행하여 데이터를 일관된 형식으로 되돌려 놓을 수 있습니다.

내가 이것에 균열을 일으키면 사전 정의 된 작업 순서를 사용하여 각 주소 문자열을 트리로 변환합니다.

예를 들어. 110 Test Street Apt 3. 어디서나 캘리포니아 90210 =>

  1. 주소 유형을 얻으십시오. 예를 들어 거리 주소는 농촌 경로가 다루는 형식이 다르며 이는 국가마다 다릅니다.
  2. 이것은 거리 주소라는 점을 감안할 때 거리의 유형을 나타내는 줄을 가져 와서 열거 (Eboulevard, Eroad 등)로 변환하십시오.
  3. 이것이 거리 주소라는 것을 감안할 때 거리 이름을 꺼내십시오 (소문자로 보관)
  4. 이것이 거리 주소라는 것을 감안할 때 거리 번호를 꺼내십시오.
  5. 이것은 거리 주소라는 점을 감안할 때 아파트 번호를 찾으십시오 (대시가있는 거리 번호 앞에있을 수 있습니다. "Apt"등이있을 수 있습니다.)

       eStreet  //1.an enum of possible address types eg. eStreet, eRuralRoute,...
          |
       eStreet        //2.an enum of street types eg. eStreet, eBlvd, eWay,...
       /   |   \
    

    이름 번호 apt | | | 테스트 110 3

예를 들어. RR#3 캘리포니아 어디에서나 90210 =>

  1. 주소 유형 : 농촌 경로
  2. 이것이 농촌 노선 주소라는 것을 감안할 때 경로 번호를 얻으십시오.

       eRuralRoute 
          |
          3
    

국가 상태 및 지퍼 정보와 비슷한 일을해야합니다.

그런 다음 결과 나무를 비교하십시오.

이것은 비교를 매우 간단하게 만들지 만 나무를 생성하는 코드는 매우 까다 롭습니다. 수천 개의 주소로 쓰레기를 테스트하고 싶을 것입니다. 우리만이 당신이 관심을 갖는다면 문제가 더 간단합니다. 이미 언급 한 영국의 주소는 상당히 다르며, 캐나다 주소는 프랑스어를 가질 수 있습니다 (예 : Place d 'Arms, Rue Laurent 등).

회사가 자체 주소 정규화 도구를 작성하는 것이 비용 효율적이라면 USPS 주소 표준. 또는 주소를 정상화, 수정 및 확인하기 위해 서버 측 도구 및 웹 서비스를 제공하는 수많은 공급 업체가 있습니다.

우리 회사가 사용합니다 Accumail Gold 이 목적을 위해 주소를 표준화하고 수정하는 것 이상을 수행하기 때문입니다. 우리가 일주일 상 분량의 급여 비용조차도 도구를 사내에서 개발하는 데 도움이되었을 때 상용 제품을 구매할 수있는 선택은 분명했습니다.

기존 시스템을 사용하기로 선택하지 않으면 한 가지 아이디어가 다음을 수행하는 것입니다.

  • 주소 라인에서 숫자를 추출합니다
  • 공통 거리 단어를 공백으로 바꾸십시오
  • 일치 문자열을 만듭니다

IE : "555 Canal Street":

  • 추출 번호는 "555" + "Canal Street"를 제공합니다.
  • 스트리트 단어를 대체하여 "555" + "Canal"을 제공합니다.
  • 매치 문자열 생성 "555canal"제공

"Canal St 555"는 동일한 일치 문자열을 제공합니다.

길거리 단어로 나는 당신의 언어에서 "street"에 대한 단어와 약어, 예를 들어 "st", "st.", "blv", "ave", "avenue"등을 의미합니다.

숫자를 추출하고 문자열에서 분리하면 처음이든 마지막인지 여부는 중요하지 않습니다.

기본 키에 대한 ID를 사용하십시오, 이것은 항상 독특하며 나중에 복제를 더 쉽게 병합 할 수 있습니다.

사용자 인터페이스를 사용하여 적절한 데이터 입력을 강제로 강제로합니다. 자체 텍스트 상자에 각 구성 요소를 입력하게합니다. 하우스 번호는 자체 상자, 자체 상자의 거리 이름, 자체 상자, Select List 등의 상태 등으로 입력됩니다.

두 가지 프로세스 "저장"이 있습니다.

  • 초기 저장 후, 경기를 찾아보기 위해 검색하고 가능한 경기 목록과 새로운 경기 목록을 제시하십시오.
  • 그들이 새로운 것을 선택한 후에 저장, 기존 하나를 선택하면 해당 ID를 사용합니다.

데이터를 청소하십시오. "Street", "ST", "Drive"등을 제거하고 적절한 약어가 들어있는 테이블에 FK를 사용하는 StreetType Char (1)로 보관하여 거리를 건설 할 수 있습니다.

Soundex와 차이를 살펴보십시오

나는 MailInig 목록을 유지하는 대기업에서 일했으며 자동으로 시도하지 않았으며 사람들을 사용하여 DUP에서 새로운 것을 걸러 내기가 너무 어렵 기 때문에 DUP에서 새로운 것을 걸러 냈습니다. 병합 기능을 계획하여 중복이 발생할 때 수동으로 병합하고 PKS를 통해 값을 파열시킬 수 있습니다.

Google Maps API를 조사하고 주소를 전달하고 일치 할 수 있는지 확인할 수 있습니다. 나는 그것에 익숙하지 않습니다. 이것은 단지 추측입니다.

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