문제

여기에 흥미로운 문제가 있습니다.

최신 상태로 유지해야 하는 이름 및 주소 정보가 포함된 Oracle 데이터베이스가 있습니다.

우리는 다양한 정부 소스로부터 데이터 피드를 받고 일치 항목을 파악해야 하며, 데이터로 DB를 업데이트할지 여부 또는 새 기록을 생성해야 하는지 여부를 파악해야 합니다.

기록을 하나로 묶는 데 사용할 수 있는 고유 식별자가 없으며 데이터 품질이 항상 그렇게 좋은 것도 아닙니다. 항상 오타가 있거나 다른 이름을 사용하는 사람(예:조 대.조셉) 등

나는 이전에 이러한 유형의 문제를 해결한 적이 있는 사람으로부터 문제를 어떻게 해결했는지 또는 최소한 자동화된 부분에 대해 듣고 싶습니다.

도움이 되었습니까?

해결책

이 분야에서 활동하고 있는 각 주요 소프트웨어 회사는 이름 및 주소 구문 분석, 데이터 표준화, 기록 중복 제거 또는 일치, 기록 연결/병합, 생존 등을 처리하는 솔루션 제품군을 제공합니다.하지만 모두 가격이 조금 비싼 편입니다.

예를 들어, 이 문제에 대한 Oracle의 자체 솔루션은 "ODI(Oracle Data Integrator)용 ODQ(Oracle Data Quality)," 이는 Fusion Middleware 스택의 일부입니다.이름에서 알 수 있듯이 ODQ에는 ODI가 필요합니다(즉, 별도로 라이센스가 부여되고 ODI에 종속되는 추가 기능 모듈입니다).

IBM의 Websphere 솔루션 제품군(Ascential 인수를 통해 획득)에는 다음이 포함됩니다. 품질단계.

현재 SAP 회사인 Business Objects는 데이터 품질 EIM(Enterprise Information Management) 제품군에 속하는 제품입니다.

기타 주요 데이터 품질 브랜드는 다음과 같습니다. 데이터플럭스 (SAS 회사) 및 Trillium 소프트웨어 (Harte-Hanks 회사)

Gartner Group은 데이터 품질 솔루션 제품군에 대한 연례 Magic Quadrant를 발표합니다.Magic Quadrant에서 좋은 평가를 받은 공급업체는 일반적으로 등록된 사용자가 웹사이트(예시 1, 예시 2).

다른 팁

오픈 소스에는 이제 이러한 종류의 레코드 중복 제거/엔티티 해결을 수행하기 위한 Python 라이브러리가 있습니다. 중복 제거.

프로그래밍 기술이 필요하지만 무료이며 거대한 서버가 아닌 노트북에서 실행할 수 있습니다.

다음은 개요입니다. 어떻게 작동하나요?.

FirstLogic 사용을 통해 얻은 교훈.(다른 제품도 비슷할 것입니다.) 맥락상 우리는 수십 개의 소스에서 파일을 얻었고 각각은 다른 형식이었습니다.우리는 데이터베이스에 추가해야 할 사람, 업데이트해야 할 사람, "목록에" 표시해야 할 사람을 알아야 했습니다.

  1. 나는 소프트웨어가 전체 파일을 보고 이를 결정할 것이라고 예상했습니다. 예를 들어 열 A가 100개 행 중 98개 행에 성을 가지고 있다면 열 A는 성 열이어야 합니다.그건 사실이 아니야;각 레코드는 개별적으로 처리됩니다.

  2. 어떤 데이터가 어떤 분야에 있는지 정확히 알고 있다면 소프트웨어에 이를 알려줄 수 있으며 소프트웨어가 이를 처리할 것입니다.그러나 항상 확신할 수 없다면 전체 문자열을 제공하고 소프트웨어가 이를 알아내도록 하는 것이 더 좋습니다.이에 대한 예는 "Smith Jr MD"와 같은 내용을 포함하는 성 필드입니다.이를 성 열로 선언하면 성이 "Smith Jr MD"라고 가정합니다.그러나 "John Smith Jr MD"를 전달하고 소프트웨어가 이를 알아내도록 하면 모든 비트가 올바르게 식별됩니다.

  3. 분명해 보였던 어떤 것들은 그렇지 않았습니다.예를 들어, 기본적으로 FirstLogic은 쉼표가 "성, 이름"을 의미한다고 가정하지 않습니다.실제로는 성의 큰 목록과 이름의 큰 목록이 있으므로 쉼표를 무시할 수 있다고 생각합니다.우리는 "John, Thomas"와 같은 사람들과 지속적으로 문제를 겪었습니다.때로는 우리에게 명백한 성처럼 보이는 것이 실제로는 스페인어 이름 같은 것이기 때문에 혼란스러울 때도 있습니다.

  4. 더미 데이터를 추가하기 위해 시스템을 사용하는 것은 어렵습니다.사람들이 "Test Account" 또는 "TBD"와 같은 이름을 붙인 경우 전혀 처리되지 않습니다. FirstLogic은 인식한 데이터 비트를 찾지 못했기 때문에 기록을 버립니다.

  5. 시스템을 맞춤화하는 것은 가능하지만 영업사원이 말하는 것처럼 쉽지는 않습니다.백만 가지 옵션과 사용자 정의 파일 및 사전이 있습니다.사용자 정의할 수 있으려면 시간을 투자하여 작동 방식을 이해해야 합니다.RDBMS나 ETL 도구와 같습니다.마법의 블랙박스가 아닙니다.

  6. 또한 소프트웨어 구매를 정당화하는 데 도움이 되지만 배우고 적용하려면 헌신적인 노력이 필요한 수많은 데이터 품질 기능이 있습니다.

  7. 이 도구는 실제로 마스터 파일에 대해 목록을 처리하도록 설계되지 않았습니다.병합-제거 작업을 위해 생성되었습니다.가능하지만(현재 수행 중) 데이터베이스를 목록으로 처리해야 합니다(모든 실시간 레코드를 플랫 파일로 추출해야 함).또한 어떤 기록이 어디로 가는지에 대해 더 많은 제어를 원할수록(예:이름이 80% 일치하고 우편번호의 처음 두 자리가 동일하다면 아마도 같은 사람일 것입니다. 등) 배치 프로세스가 복잡해질 것입니다.

  8. 마지막으로, 서로 다른 주소에 있는 두 사람이 실제로 동일한지 확인하려고 할 때 "John Smith"를 처리하는 것과 "Annabelle DiGiovanni"를 처리하는 것은 매우 다른 짐승이라는 것을 깨달았습니다.흔하지 않은 이름이 일반적인 이름보다 일치에 더 많은 가중치를 부여하도록 소프트웨어를 미세 조정할 수 있지만 시간이 있는 사람은 누구입니까?우리의 일치 프로세스는 약 80% 정확하며 나머지 20%를 수동으로 처리하는 데 만족했습니다.

자동으로 매칭을 해주는 도구라고 생각하지 마세요.이를 인간 데이터 프로세서의 생산성을 높일 수 있는 도구로 생각하십시오.이렇게 하면 80%의 정확도에 도달하면 목표에 미치지 못하는 것이 아니라 대성공이 되도록 설정한 것입니다.

현재 직장에서는 데이터 무결성 문제가 많습니다.우리는 품질을 보장하기 위해 데이터가 로드되기 전에 데이터를 "스크럽"하려고 합니다.현재 우리는 이름, 주소, 이메일을 삭제하기 위해 Melissa Data를 사용하고 있습니다.로드하기 전에 표준화 작업을 꽤 잘 수행합니다.이렇게 하면 중복된 데이터를 피할 수 있습니다.

또한 SQL Server Integration Services(귀하가 Oracle을 사용하고 있다는 것을 알고 있습니다)에는 문자열에 대해 "퍼지" 일치를 수행하는 구성 요소가 있어 직접적인 일대일 일치보다는 거의 일치하는 항목을 찾을 수 있습니다.퍼지 조회라고 합니다.기본적으로 두 입력이 얼마나 일치하는지 알려주는 점수를 제공합니다.그런 다음 임계값을 설정하여 일치로 간주하기 위해 얼마나 가까워야 하는지 알려줄 수 있습니다(예:80% 이내).

예전에는 저도 써봤는데 사운드덱스 중복 여부를 판단할 때 이름이 유사한지 확인합니다.SOUNDEX 구현이 많이 있습니다.

행운을 빌어요.

해결하려는 문제에 대한 용어는 "레코드 연결"입니다.

특정 도구를 추천할 수는 없습니다."기록 연결 소프트웨어" 또는 "병합 제거 소프트웨어"를 검색해 보십시오. 약간의 조사를 통해 귀하의 필요에 맞는 것을 찾을 수 있을 것입니다.

나는 하나의 오픈 소스 솔루션을 찾을 수 있었습니다. 2월.이 도구는 원래 생의학 연구 영역을 위해 개발되었으며, "자유롭게 확장 가능한 생물 의학 기록 연계"라는 이름을 설명합니다. 자세한 내용은 다음을 참조하십시오. "고성능 음반 연계를 위한 병렬 대규모 기술"

레코드 연결과 관련된 문제/해결책에 대한 개요를 보려면 다음을 읽어보세요. "병합/제거 및 중복 감지".

각 주요 제공업체에는 자체 솔루션이 있습니다.Oracle, IBM, SAS Dataflux 등은 모두 최고라고 주장합니다.

독립적으로 검증된 평가:

호주의 Curtin University Center for Data Linkage에서 440만 개의 레코드 일치를 시뮬레이션한 연구가 있었습니다.정확성(찾은 일치 항목 수와 사용 가능한 일치 항목 수) 측면에서 공급자가 무엇을 가지고 있는지 식별했습니다.허위 일치 수)

  1. DataMatch 엔터프라이즈, 최고 정확도(>95%), 매우 빠르고 저렴함
  2. IBM 품질 단계 , 높은 정확도(>90%), 매우 빠르고, 높은 비용(>$100K)
  3. SAS Data Flux, 중간 정확도(>85%), 빠르고 높은 비용(>100K)

그것은 우리가 찾을 수 있는 최고의 독립적 평가였으며 매우 철저했습니다.

나는 보험 회사의 회원 등록 목록에서 이와 같은 작업을 수행했습니다.운 좋게도 기본 구성원을 결정할 수 있는 SSN이 있었지만 부양가족이 신규인지 기존인지(이름만으로) 결정해야 했습니다.나는 솔루션의 일부로 soundex 알고리즘을 시도했지만, 너무 많은 다른 이름을 동일한 이름으로 매핑하는 것처럼 보였기 때문에(많은 가족이 비슷한 소리 이름으로 자녀의 이름을 지정하는 경향이 있기 때문에) 계산서에 맞지 않는 것 같습니다.나는 단지 부양 가족의 이름의 처음 네 글자를 고유 식별자로 사용하여 "충분히"라고 부릅니다. 조지 포먼의 가족을 어떻게 처리하는지 모르겠습니다 :-)

나는 Dataflux가 실제로 작동하는 것을 보았고, 우리의 "스타" 데이터 분석가에 따르면 이는 사람과 회사의 이름을 연결하기 위해 찾은 "클러스터링"(Dataflux가 부르는 대로)을 위한 가장 정확한 도구라고 합니다.하지만 꽤 비쌉니다.

이는 기록 연계의 전형적인 문제입니다.오타, 글자 누락 등차단 규칙 세트를 정의하여 확률론적 접근 방식으로 처리할 수 있습니다.

당신에게 딱 맞는 소프트웨어 중 하나는 프릴.Java에서는 무료이며 매우 친절합니다.웹사이트에 튜토리얼과 비디오 링크가 있습니다.오라클에 대해서는 잘 모르겠지만 DB 연결을 지원합니다.

RecLink 다른 방법을 사용할 수도 있지만 (내가 아는 한) 매뉴얼/튜토리얼이 없기 때문에 설치하고 실행하려면 더 열심히 노력해야 할 것입니다.

무료 옵션도 있습니다 RELAIS.

나는 사용했다 dataladder.com 큰 이름 데이터 세트의 경우.그들은 철자가 매우 다른 여러 데이터베이스를 일치시키고 많은 중복을 잘라내는 환상적인 작업을 수행했습니다.

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