KR20140096127A - 후보 쿼리들에 기반한 데이터 클러스터링 - Google Patents
후보 쿼리들에 기반한 데이터 클러스터링 Download PDFInfo
- Publication number
- KR20140096127A KR20140096127A KR1020147016343A KR20147016343A KR20140096127A KR 20140096127 A KR20140096127 A KR 20140096127A KR 1020147016343 A KR1020147016343 A KR 1020147016343A KR 20147016343 A KR20147016343 A KR 20147016343A KR 20140096127 A KR20140096127 A KR 20140096127A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cluster
- records
- record
- query
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3338—Query expansion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함하는 수신된 데이터 레코드들은 매치되는 데이터 클러스터를 식별하기 위해 프로세싱된다. 프로세싱은: 선택된 데이터 레코드들에 대해, 하나 이상의 값들로부터 쿼리를 생성하는 단계; 상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계(140); 상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들(180) 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계(160); 및 상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함한다.
Description
관련 출원들에 대한 크로스-레퍼런스
본 출원은 참조로서, 여기 각각 첨부되는, 2011년 11월 15일 출원된 US 출원 번호 61/560,257 및 2012년 6월 15일 출원된 US 출원 번호 61/660,259에 대해 우선권을 청구한다.
본 명세서는 데이터 클러스터링, 세그멘테이션(segmentation) 및 병렬화(parrallelization)에 관한 것이다.
데이터 클러스터링은 정보가 공통 위치에서 함께 그룹핑되었던 것과 같이, 이후에 프로세싱될 수 있도록, 실질적으로 유사한 정보가 공유된 식별자를 가지고 라벨링되는 방법이다. 이러한 정보는 예컨대, 재무 데이터(financial data) 또는 헬스-케어 레코드들과 같은 다양한 타입들의 정보를 포함할 수 있다. 각 클러스터(다수의 클러스터들의 세트 중에서)는 소정 유사도 기준을 만족하기 위해 결정되어지는 데이터의 유닛들(예컨대, 문서들, 데이터베이스 레코드들, 또는 다른 데이터 객체들)을 포함한다. 소정 기술들은 현재 클러스터들에 부가하거나 또는 클러스터들을 생성하기 위해 배치(batch)와 같은 데이터 유닛들을 프로세스하는 "오프-라인" 기술들이다. 소정 기술들은 그들이 수신될 때까지 점차적으로 데이터의 유닛들을 프로세싱하는 "온-라인" 기술들이다. 클러스터들은 하나의 레벨에서 주어진 클러스터가 다른 레벨에서 다수의 클러스터들로 분할되는, 계층적인 구조일 수 있다. 소정 경우들에 있어서, 클러스터들은 각 데이터 유닛이 클러스터들 중 정확히 하나 내에 존재하는 데이터 유닛들의 파티셔닝에 대응하고, 소정 경우들에 있어서는, 클러스터들은 하나 이상의 클러스터의 멤버인 데이터 유닛과 함께 중첩될 수 있다.
일 양상에 있어서, 일반적으로 방법은: 데이터 레코드들을 수신하는 단계, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및 각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하는 단계를 포함한다. 상기 프로세싱 단계는: 상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계; 상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계; 상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및 상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함한다.
양상들은 하나 이상의 다음의 특징들을 포함할 수 있다.
상기 쿼리를 생성하는 단계는 각각이 필드 내의 값의 프래그먼트(fragment) 또는 적어도 하나의 값 또는 상기 선택된 데이터 레코드의 필드들의 조합을 포함하는 토큰들을 식별하는 단계를 포함한다.
상기 쿼리는 상기 선택된 데이터 레코드로부터 식별된 토큰들, 및 다른 수신된 데이터 레코드들로부터 식별되었고 상기 선택된 데이터 레코드로부터 식별된 토큰들에 대한 변형 관계를 갖는 토큰들을 포함한다.
상기 변형 관게는 편집 거리 상의 적어도 일부분에 기반한다.
후보 데이터 레코드들을 식별하는 단계는, 데이터 스토어 내의 상기 식별된 토큰들을 룩업(looking up)하는 단계를 포함하고, 상기 데이터 스토어는 저장된 코튼들을 후보 데이터 레코드들 또는 후보 데이터 레코드들을 포함하는 현재 데이터 클러스터들에 매핑시킨다.
상기 방법은 상기 후보 데이터 레코드로부터 식별된 토큰들 및 다른 수신된 데이터 레코드들로부터 식별되었고 상기 후보 데이터 레코드로부터 식별된 상기 토큰들에 대해 변형 관계를 갖는 토큰들에 기반하여 후보 데이터 레코드에 매핑되는 저장된 토큰들의 세트를 생성하는 단계를 더 포함한다.
상기 프로세싱 단계는, 특정 데이터 레코드 내에 포함된 적어도 하나의 값들이 다른 데이터 레코드들로부터 상기 특정 데이터 레코드를 구별할 수 있는 정도를 결정하는 구별 가능성(distinguishability) 기준에 기반하여 상기 수신된 데이터 레코드들의 적어도 최초 세트를 정렬하는 단계를 더 포함한다.
상기 수신된 데이터 레코드들로부터 상기 선택된 데이터는 데이터 레코드들의 상기 정렬된 세트로부터 선택된 데이터 레코드들을 포함한다.
상기 구별 가능성 기준은 값과 함께 집단화되는 수 많은 필드들, 또는 적어도 하나의 필드드 내의 토큰들의 수 중 적어도 하나에 기반한다.
상기 매치된 데이터 클러스터를 선택하는 단계는: 현재 데이터 클러스터에 대한 적어도 하나의 대표 데이터 레코드와 상기 선택된 데이터 레코드를 비교함으로써 비교 스코어(score)를 계산하는 단계; 및 상기 비교 스코어가 제 1 임계값을 초과하는지 결정함에 응답하여 상기 매치된 데이터 클러스터로써 상기 현재 데이터 클러스터를 선택하는 단계를 포함한다.
상기 방법은 제 2 임계값과 상기 비교 스코어를 비교하는 단계; 및 상기 비교 스코어가 상기 제 2 임계값을 초과하지 않는지 결정함에 응답하여 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 더 포함한다.
적어도 하나의 현재 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계는 상기 선택된 데이터 레코드가 클러스터 멤버쉽 기준을 만족하는 다수의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 크러스터를 선택하는 단계를 포함한다.
상기 방법은 상기 선택된 데이터 레코드에 대한 상기 매치된 데이터 클러스터로써 선택되지 않았던 적어도 하나의 후보 데이터 클러스터들을 식별하는 정보를 저장하는 단계를 더 포함한다.
후보 데이터 레코드들을 식별하는 단계는 제 1 클러스터에 상기 쿼리를 매핑하는 엔트리(entry)를 포함하는 후보 클러스터들로 쿼리들을 매칭하는 데이터 스토어와 상기 쿼리를 비교하는 단계를 포함한다.
상기 방법은: 제 2 클러스터로 상기 선택된 데이터 레코드를 매칭하기 위한 요청을 수신하는 단계; 및 상기 제 2 클러스터로 상기 쿼리를 매핑하기 위해 상기 데이터 스토어를 업데이트하는 단계를 더 포함한다.
상기 방법은: 새로운 클러스터로 상기 데이터 레코드를 매핑하기 위한 요청을 수신하는 단계; 새로운 클러스터 지시자를 가지고 상기 데이터 스토어를 업데이트하는 단계; 새로운 클러스터를 생성하는 단계; 및 상기 새로운 클러스터에 상기 선택된 데이터를 할당하는 단계를 더 포함한다.
상기 방법은: 상기 제 1 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 확인(confirm)하기 위한 요청을 수신하는 단계; 및 다른 데이터 레코드들과 연관된 요청들에 응답하여 상기 데이터 스토어의 업데이트들이 상기 제 1 멤버쉽 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 변경하지 않도록 상기 데이터 스토어 내에 정보를 저장하는 단계를 더 포함한다.
상기 방법은: 상기 제 1 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 제외하기 위한 요청을 수신하는 단계; 상기 선택된 데이터 레코드의 멤버쉽을 변경하기 위해 상기 데이터 스토어를 업데이트하는 단계; 및 다른 데이터 레코드들과 연관된 요청들에 응답하여 상기 데이터 스토어의 업데이트들이 상기 제 1 멤버쉽 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 허락하지 않도록 상기 데이터 스토어 내에 정보를 저장하는 단계를 더 포함한다.
상기 방법은 매치된 데이터 클러스터들로 수신된 데이터 레코드들의 연관을 승인 또는 변형하기 위해 사용자로부터의 입력을 수신하는 단계를 더 포함한다.
다른 양상에 있어서, 일반적으로, 컴퓨터 프로그램은 컴퓨터-판독가능한 저장 매체 상에 저장된다. 상기 컴퓨터 프로그램은 컴퓨팅 시스템이: 데이터 레코드들을 수신하고, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및 각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하도록 야기하기 위한 지시어들을 포함한다. 상기 프로세싱은: 상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계; 상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계; 상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및 상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함한다.
다른 양상에 있어서, 일반적으로, 컴퓨팅 시스템은: 데이터 레코드들을 수신하도록 구성되는 입력 디바이스 또는 포트, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및 각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하도록 구성되는 적어도 하나의 프로세서를 포함g한다. 상기 프로세싱은: 상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계; 상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계; 상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및 상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함한다.
다른 양상에 있어서, 일반적으로, 컴퓨팅 시스템은: 데이터 레코드들을 수신하기 위한 수단, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및 각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하기 위한 수단을 포함한다. 상기 프로세싱은: 상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계; 상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계; 상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및 상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함한다.
양상들은 다음의 이점들 중 하나 이상을 가질 수 있다.
많은 양의 데이터를 클러스터링할 때, 성능(performance)과 스케일러빌리티(scalability)를 제한하는 주요 팩터들 중 하나는 어느 것이 적합한 거리 측정 아래에서 가까운지 결정하기 위해 레코드들 사이에서 이루어져야만 하는 계산들의 수이다. 단순 올-투-올(all-to-all) 비교는 클러스터링되는 레코드들의 수에서 기하급수적으로(quadratically) 스케일링한다.
개선된 접근법은 클러스터들을 점차적으로 발견하고, 새로운 쿼리 레코드가 근접 레코드들의 추가 스코어링이 수행되기 전에 가까워야만 하는 대표 레코드에 의해 각각 나타난다. 쿼리 레코드가 새로운 클러스터에 속한다는 것을 발견하는 것은, 모든 현재 클러스터 대표가 새로운 클러스터가 생성될 수 있기 전에, 먼저 체크되어야만 하기 때문에, 구별되는 클러스터들의 수 내에서 기하급수적으로 스케일링한다. 엄청난 수의 구별되는 클러스터들에 대해서, 비즈니스의 고객 데이터베이스 내의 개개인들 또는 가구들을 클러스터링할 때 공통적인 것이기 때문에, 이러한 접근법은 적합하지 않다.
여기에 설명된 데이터 클러스터링 방법은 근사화된 거리 측정 아래서, 어떠한 익스펜시브(expensive) 비교들이 생성되기 전에, 임의의 현재(existing) 클러스터에 대해, 쿼리 레코드가 충분히 가까운지 결정하기 위하여 검색 프로세스를 사용한다. 이는 새로운 클러스터의 제 1 레코드인 쿼리 레코드의 이전 접근법에서의 가장 나쁜 케이스를 가장 좋은 케이스로 변환한다. 만약 쿼리 레코드가 현재 레코드들과 불충분한 중첩을 가졌다면, 그것은 검색으로부터 후보 레코드들은 아무것도 반환되지 않을 것이고, 그것은 새로운 클러스터의 멤버일 것이다.
여기세 설명된데이터 클러스터링 방법은 최초 쿼리로부터 확장되는 많은 양의 쿼리들의 조합에 기반하여 좁게 타겟팅되는 검색을 사용한다. 다수의 쿼리들은 쿼리 용어들(terms)의 변형 매칭들이 검색동안 그리고 레코드 내에서 다수의 필드들로부터 또는 필드 내에서 다수의 토큰들(tokens)로부터 동시에 존재하는 쿼리들에 대해 검출되어지도록 한다. 검색은 후보 매치 기준을 만족하는 현재 클러스터들의 대표값으로써 기능하는, 마스터 레코드들의 세트로부터 후보 레코드들을 발견하기 위해, 찾는다. 검색 인덱스들은 증가 모드(incremental mode)에서 누계로 누적될 수 있거나 배치 모드(batch mode)에서 풀 데이터 셋(full dataset)에 반해 미리 계산될 수 있다. 배치 모드에서, 검색 인덱스들은 비트벡터들(bitvectors)의 형태로 레코드들을 매칭하기 위한 위치 정보를 포함할 수 있다. 이는 다수의 검색들의 결과들을 조합하기 위한 불린(Boolean) 계산을 활성화한다.
후보 매치 기준은 예컨대, 고객을 위한 검색이 마지막 이름(last name) 및 도시 둘 모두에 대한 매칭을 갖는지와 같은 검색들의 조합들의 정성적(qualitative) 결과들을 인코딩하는 코드들, 검색 코드들의 관점에서 형성된다. 각 검색 코드와 연관된 샘플 레코드들은 후보 매치 기준에 맞춰서 사용자를 지원하기 위해 추출될 수 있다. 검색 코드들은 또한, 소정 실시들 내에서 심지어 토큰들이 단지 매치만을 근사적으로 요구할 때, 검색이 매우 빠르도록 만드는 서치 결과들에 대한 불린 표현으로써 전체 후보 매치 기준을 실현하는 것을 가능케한다.
후보 매치 기준을 만족하는 후보 레코드들이 발견된 후에, 후보 레코드들과 연관된 각 클러스터로부터의 대표 레코드들은 쿼리 레코드와의 상세 비교를 위해 검색된다. 더 많은 익스펜시브 거리 측정이 이러한 비교를 위해 사용된다. 검색 코드들과 유사하게, 매치 코드들은 특정 필드들이, 예컨대, 널(null), 블랭크(blank) 또는 존재하는지를 지시하는 필드들의 조합들 또는 비교되는 개별 필드들의 집단의 상태 및 필드들의 조합들 또는 비교되는 개별 필드들의 각 쌍 간에서 발견되는 정성적 매치를 지시하는 비교를 정성적으로 요약하기 위해 구성된다. 통계 자료(statistics)는 변경하는 퀄리티의 매치들의 수를 정량화하기 위해 매치 코드들로부터의 클러스터링 이후에 누적될 수 있다. 샘플 레코드들의 고정된 수는 또한, 매치 결과들을 변경함에 따라 레코드들을 비교하는데 사용되는 비교 함수들을 반복적으로 조정하고 서로 다른 종류의 매치들의 퀄리티를 판단하여 사용자를 지원하기 위한 각 매치 코드들과 연관하여 추출될 수 있다. 매치의 퀄리티 및 레코드들의 집단 특징들 사이의 상관들(correlations)은 매치 코드들로부터 추론될 수 있다.
후보 클러스터들로부터의 대표 레코드들 및 쿼리 레코드 간의 상세 비교들의 세트는 소정 매치 임계값을 넘는 가장 좋은 매치 쌍을 찾기 위해 해석될 수 있다. 만약 매치 임계값을 넘는 가장 좋은 매칭 쌍이 없다면, 쿼리 레코드는 새로운 클러스터의 제 1 레코드로 생성된다. 만약 매치 임계값을 넘는 가장 좋은 매칭 쌍이 하나 있다면, 쿼리 레코드는 대응하는 클러스터에 추가된다. 만약 매치 임계값을 넘는 가장 좋은 매칭 쌍이 하나 이상 존재한다면, 가장 좋은 매칭 쌍과 연관된 클러스터에 추가되나, 대체 클러스터들의 세트는 사용자에 의해 리뷰를 위해 이용되어지도록 레코딩된다.
클러스터 멤버쉽 결정들이 생성되고 모든 쿼리 레코드들이 클러스터들에 할당된 이후에, 사용자는 클러스터 승인 프로세스 내에서 이용할 수 있고 클러스터링된 레코드들의 네트워크를 리뷰할 수 있다. 앰비규어스(ambiguous) 매치들은 리뷰를 위해 사용자에게 표시를 붙인다(flagged). 사용자는 그 레코드가 클러스터링 프로세스를 거치지 않고, 동일한 클러스터 id를 다시 수신할 클러스터링에 나타내어질 경우에, 그것의 클러스터 내에서 임의의 레코드를 확인하기 위해 선택할 수 있다. 이는, 만약 사용자가 레코드를 수동으로 확인했었다면, 올바른 클러스터 내에 존재하고, 그 결정은 지속되야만 한다는 비즈니스 요구사항을 만족한다.
사용자는 그것이 위치하였었던 클러스터로부터 레코드를 제외하기 위해 선택할 수 있다. 동시 클러스터링이 실행 중에, 레코드는 그 클러스터로 할당되어짐으로부터 차단당하고(blocked), 알고리즘에 의해 결정되어지는 바와 같이, 다음 가장 좋은 클러스터에 할당될 것이다.
사용자는 새로운 클러스터로 레코드를 매핑하기 위해 선택할 것이다. 동시 클러스터링의 실행 중에, 레코드는 새로운 클러스터에 할당될 것이다. 임의의 비-확인된 레코드들은 그들이, 다른 현재 클러스터들 내의 레코드들로보다 레코드들에 더 가까이 있다면, 새로운 클러스터 내에 그 레코드를 조인(join)할 것이다. 유사하게, 사용자는 서로 다른 현재 클러스터로 선택된 레코드를 재매핑할 수 있고, 여기서, 그것은 클러스터링 프로세스에 의해 위치되지 않았던 것이다. 동시 실행 중에, 선택된 레코드는 선택된 클러스터 내에 위치할 것이고, 그 레코드에 가까운 임의의 (비-확인된) 레코드들은 레코드가 선택된 레코드와 함께 선택된 클러스터로 이동할 것이다. 이는 사용자가 소량의 선택된 개별 레코드들을 재매칭하는 것을 가능케하고, 선택된 레코드들과 매추 관련된 모드 레코드들을 재매핑하기 위해 재클러스터링하는 것을 허용한다.
승인 프로세스는 사용자의 변화들에 의해 영향을 받는 모든 레코드들을 추출하고 클러스터링 프로세스를 통해 그들을 재실행하는 프로세스에 의해 활성화된다. 결과 데이터 클러스터들은 이전 데이터 클러스터들에 대해 차별화되고, 사용자는 그 결과를 보게 된다. 그리고는, 사용자는 바로 생성된 이러한 것들에다가 추가적인 변경들을 적용하고 반복하거나 변화들을 폐기하기 위해 선택할 수 있고 시각을 넘어 승인 프로세스를 시작할 수 있다. 전체 승인 프로세스는 시간적인 업무 영역 내에서 실행될 수 있고, 프로세스가 완료될 때, 그리고 사용자가 만족하는 때, 지속적인 생성 영역으로 되돌아 공개될 수 있는 클러스터링 프로세스를 가이드하는 언더라잉(underlying) 클러스터는 저장한다.
여기에 설명된 데이터 클러스터링 프로세스의 추가적인 장점은 배치 모드 클러스터링이 최초 데이터 및 전체 누적된 데이터 셋을 재클러스터링하지 않고, 증가 모드(incremental mode)를 이용하여 현재 클러스터들에 추가될 수 있는 미래 데이터 상에서 생성될 수 있다는 것이다. 이는 개별 레코드들의 클러스터 멤버쉽이 새로운 데이터가 도착하는 때 변경하지 않는다는 비즈니스 전망과 요구사항을 만족한다. 확인되지 않은 레코드들이 그들이 클러스터 승인 프로세스 동안 존재할 수 있는 것처럼 재프로세싱되지 않는다면, 개별 클러스터들로의 그들의 할당은 변경할 수 없다.
다중 국가 기관들은 수많은 국가에서 개개인들에 대한 정보를 저장할 수 있다. 이러한 국가들은 데이터가 어떻게 사용되고 다른 국가들에 유출될 수 있는지를 제한하는 데이터 프라이버시 법들 또는 규정들을 가질 수 있다. 데이터 프라이버시 법들은 헬스케어 레코드들 및 재무 레코드들을 포함하는 서로 다른 매우 다양한 타입의 데이터를 보호할 수 있다. 다른 국가들에 있어서, 이러한 법들은 다른 국가들로 데이터의 유출을 차단하는 반면, 소정 국가들에 데이터의 유출을 허용한다. 여기에 사용되는 바와 같이, 데이터의 플로우를 임의의 다른 국가로 제한하는 국가들은 금지된(prohibited) 데이터 유출 국가들로 같이 불려지고, 데이터의 플로우를 선택적인 국가들로 제한하는 국가들은 선택적인(selective) 데이터 유출 국가들로 불려지며, 제한적인(restrictive) 데이터 유출 국가들은 금지된 데이터 유출 국가들 및 선택적인 데이터 유출 국가들로 선택적으로 불려지는데 사용될 것이다.
동시에, 요구 국가들은 선택된 정보가 그들의 사법권 아래서 엔티티들로부터 사용가능하게 만들어지는 것을 요구할 수 있다. 예컨대, 미국(이 예시에서 요구 국가)은, 그것의 사법권 아래의 글로벌 은행 협회가 관계자와 연관된 은행 계좌들의 리스트를 제공하는 것을 요구한다; 그러나, 요구되는 데이터는 스위스(이 예시에서, 제한 데이터 유출 국가)에 위치될 수 있다.
여기에 설명된 데이터 클러스터링 기술들은 이러한 국가들로부터 데이터 유츌 없이 제한된 데이터 유출 국가들에서 레코드들을 갖는 요구 국가들 내의 관계자들과 연관된 레코드들을 클러스터링하기 위해 사용될 수 있다.
도 1a는 클러스터링 프로세스를 도시한 블록도,
도 1b는 제한된 데이터 유출 국가들과 관련된 클러스터링 프로세스를 도시한 다이어그램,
도 1c는 클러스터링 엔진을 도시한 블록도,
도 1d는 후보 검색 엔진을 도시한 블록도,
도 1e는 변형 프로파일러(variant profiler)를 도시한 블록도,
도 1f는 변형 네트워크 해석기를 도시한 블록도,
도 1g는 클러스터 승인 엔진을 도시한 블록도,
도 2a 내지 2d는 변형-검색 절차의 예시들을 도시한 도면,
도 3a는 변형 네트워크의 예시를 도시한 도면,
도 3b는 토큰-대표 스토어를 거주시키기 위한 프로세스의 예시를 나타낸 도면,
도 4는 복제된 세그멘테이션을 사용하는 병렬화 클러스터링을 위한 프로세스의 예시의 흐름도,
도 5a 내지 5c는 복제된 세그멘테이션을 이용하여 병렬 클러스터링의 예시를 도시한 도면,
도 6은 자연 키(natural key)에 의해 파티셔닝되는 병렬 대체 키 생성의 예시를 도시한 도면,
도 7a 내지 7d는 다중 필드들로부터 쿼리들 상에서 검색하는 예시를 도시한 도면,
도 8은 변형-룩업 절차를 실행하기 위한 삭제-조인 절차를 이용하는 예시를 도시한 도면,
도 9는 증가 모드에서 클러스터링을 위한 프로세스의 예시의 흐름도,
도 10a 내지 10d는 증가 모드에서 클러스터링의 예시를 도시한 도면,
도 11a 내지 11b는 배치 모드에서 클러스터링을 위한 프로세스의 예시의 흐름도,
도 11c는 현재 클러스터의 하나의 멤버를 매칭하는 쿼리 레코드를 위한 클러스터 멤버쉽 결정 프로세스의 예시를 도시한 도면,
도 11d는 하나 이상의 현재 클러스터을 매칭하는 쿼리를 위한 클러스터 멤버쉽 결정 프로세스의 예시를 도시한 도면,
도 12는 다중 매치들을 조화시키기 위한 프로세스의 예시의 흐름도,
도 13a 내지 13c는 다중 매치들을 조화시키는 예시를 도시한 도면,
도 14a 내지 14b는 클러스터 승인 프로세스의 예시의 흐름도,
도 15a 내지 15c는 하나의 시스템 상에서 유래하고 원격 시스템 상에서 연속하는 클러스터링의 예시의 흐름도이다.
도 1b는 제한된 데이터 유출 국가들과 관련된 클러스터링 프로세스를 도시한 다이어그램,
도 1c는 클러스터링 엔진을 도시한 블록도,
도 1d는 후보 검색 엔진을 도시한 블록도,
도 1e는 변형 프로파일러(variant profiler)를 도시한 블록도,
도 1f는 변형 네트워크 해석기를 도시한 블록도,
도 1g는 클러스터 승인 엔진을 도시한 블록도,
도 2a 내지 2d는 변형-검색 절차의 예시들을 도시한 도면,
도 3a는 변형 네트워크의 예시를 도시한 도면,
도 3b는 토큰-대표 스토어를 거주시키기 위한 프로세스의 예시를 나타낸 도면,
도 4는 복제된 세그멘테이션을 사용하는 병렬화 클러스터링을 위한 프로세스의 예시의 흐름도,
도 5a 내지 5c는 복제된 세그멘테이션을 이용하여 병렬 클러스터링의 예시를 도시한 도면,
도 6은 자연 키(natural key)에 의해 파티셔닝되는 병렬 대체 키 생성의 예시를 도시한 도면,
도 7a 내지 7d는 다중 필드들로부터 쿼리들 상에서 검색하는 예시를 도시한 도면,
도 8은 변형-룩업 절차를 실행하기 위한 삭제-조인 절차를 이용하는 예시를 도시한 도면,
도 9는 증가 모드에서 클러스터링을 위한 프로세스의 예시의 흐름도,
도 10a 내지 10d는 증가 모드에서 클러스터링의 예시를 도시한 도면,
도 11a 내지 11b는 배치 모드에서 클러스터링을 위한 프로세스의 예시의 흐름도,
도 11c는 현재 클러스터의 하나의 멤버를 매칭하는 쿼리 레코드를 위한 클러스터 멤버쉽 결정 프로세스의 예시를 도시한 도면,
도 11d는 하나 이상의 현재 클러스터을 매칭하는 쿼리를 위한 클러스터 멤버쉽 결정 프로세스의 예시를 도시한 도면,
도 12는 다중 매치들을 조화시키기 위한 프로세스의 예시의 흐름도,
도 13a 내지 13c는 다중 매치들을 조화시키는 예시를 도시한 도면,
도 14a 내지 14b는 클러스터 승인 프로세스의 예시의 흐름도,
도 15a 내지 15c는 하나의 시스템 상에서 유래하고 원격 시스템 상에서 연속하는 클러스터링의 예시의 흐름도이다.
1. 개요(Overview)
1.1 검색-기반 클러스터 프로세스 개요
도 1a를 참조하면, 데이터 프로세싱 시스템(10)은 데이터 소스들(100)로부터 데이터를 클러스터링하는데 사용된다. 소정 실시예들에 있어서, 데이터 프로세싱 시스템(10)에 의해 실행되는 클러스터링 프로세스는 가능하게 널(null) 값들을 포함하는 ("속성들" 또는 "컬럼들(columns)"이라 불리는) 각각의 필드들에 대한 값들을 갖는 레코드들과 같이 조직되는 데이터 내에서 나타나는 토큰들을 해석한다. 토큰은 필드 또는 필드들의 조합 내의 값들의 적어도 하나의 값 또는 프래그먼트이다. 사용자(102)는 그들 사이의 변형 관계들의 네트워크 및 데이터 소스들(100) 내에서 선택된 필드들(또는 필드들의 조합들) 내에서 그들의 변형들, 토큰들, 및 값들의 수집 상에서 어쩌면 표로 산출되고 그래픽컬한 레포드들(reports)을 수신하는 단계; 변형 토큰들, 유사한 어구들(즉, 멀티-토큰 유닛들) 및 유사한 레코드들을 식별하기 위해, 토큰들, 어구들 또는 레코드들의 폴스-포지티브(false-positive) 또는 앰비규어스 매치들을 찾고 해결하기 위해, 그리고 하나 이상의 클러스터들로 각 레코드들을 할당하는 클러스터 멤버쉽 결정들을 하기 위해 비즈니스 룰들(rules)을 생성하고 유지하는 단계; 및 변형 네트워크 연결들 및 클러스터 멤버쉽 결정들을 검토하고, 변형하며, 승인하는 단계 : 를 포함하는 클러스터링 프로세스의 다양한 양상들을 모니터링하고 제어하기 위해 사용자 인터페이스(104)를 사용한다.
일반적으로 데이터 소스들(100)은 역시 데이터 셋들로 불리는 다양한 개별 데이터 소스들을 포함하고, 각각은 유니크한 저장 포맷들 및 인터페이스들(예컨대, 데이터베이스 테이블들, 스프레드쉬트 파일들(spreadsheet files), 플랫 텍스트 파일들(flat text files), 또는 메인프레임에 의해 사용되는 원래 포맷(native format))을 가질 수 있다. 개별 데이터 소스들은 예컨대, 클러스터링 시스템(10)에 로컬일 수 있다. 예컨대, 동일한 컴퓨터 시스템 상에서 호스팅되어지는 것과 같이 클러스터링 시스템(10)에 로컬일 수 있고, 또는, 예컨대, 로컬 또는 넓은 영역 네트워크 또는 그 액세스들을 통해 액세스되는 원격 컴퓨터 상에서 호스팅되는 것과 같이, 클러스터링 시스템(10)에 원격으로 존재할 수 있고, 또는 클라우드 내의 웹 서비스들을 통해 클러스터링 시스템(10)에 의해 액세스될 수 있다.
데이터 소스 내의 데이터는 하나 이상의 레코드들로서 조직화될 수 있고, 각 레코드는 값들을 포함하는 하나 이상의 필드들을 포함하고, 각 값들은 문자들 또는 바이너리 값들의 스트링으로 구성된다. 스트링 문자들은 예컨대, ASCII 또는 Unicode와 같은 단일- 또는 다중-바이트 문자들일 수 있다. 바이너리 데이터는 정수들과 같은 수들 및 영상 데이터와 같은 압축된 데이터 및/또는 로우 데이터를 포함할 수 있다.
데이터 소스들(100)로부터 독출되는 데이터는 변형 프로파일러(110)에 의해 프로세싱된다. 변형 프로파일러(110)는 (예컨대, 소정 룰들에 기반한)토큰들을 식별하고 (예컨대, 특정 토큰이 나타나는 레코드들의 수) 데이터 내의 특정 토큰들의 발생을 카운팅하며, 소정 예시들에 있어서, 특정 토큰이 나타나는 구체적인 레코드들을 식별하는 정보를 저장한다. 변형 프로파일러(110)는 또한, 예컨대, 편집 거리, 음성적 유사성(phonetic similarity)에 의해 소정 유사도 스코어(score)에 기반하여 ("변형 토큰 쌍"으로 불리는) 서로의 변형들인 서로 다른 식별된 토큰들의 쌍들을 식별하거나, 또는 (예컨대, "epty fnd"는 전자(former) 내의 문자들 전부가 동일한 시퀀스에서 후자(latter)에서 발생하기 때문에 "equity fund"와 유사함) 공유 문자들의 시퀀스들에 기반하여 측정된다. 외부 데이터(106)는 예컨대, 단어들의 사전들, 동의어의 리스트들 및 약어들, 사용자-제공 변형 페어링들(pairings)(예컨대, 회사-특정 동의어들, 약어들 또는 두문자어들), 또는 이름들의 문화적 변형 페어링들(예컨대, 별명들, 변형 스펠링들, 외국 이름들의 변형 음역 등)을 제공함으로써 유사도 점수들을 이용하여 변형 프로파일러(110)에 의해 식별되는 변형 토큰 쌍들 및 토큰들의 조합을 향상시키거나 또는 변형시키는데 사용될 수 있다. 이러한 리스트들은 유사도에 의해 관련없는 토큰들 사이의 변형 페어링들을 생성하거나 원 데이터세 내에 존재하지 않는 토큰들을 부가할 수 있다. 외부 데이터(106)는 또한, 변형 페어링들과 연관된 점수들(여기서, 점수들은 근접 정도를 지시하는데 사용되고, 이는 토큰들 간의 명시적 거리를 변경하는데 사용될 수 있음)을 변형시키는데 사용될 수 있고, (예컨대, 단지 우발적으로 유사한 사전 단어들 사이에서) 변형 페어링들을 파기하는데 사용될 수 있으며, 또는 토큰들을 제거하는데 사용될 수 있다.
토큰의 예시는 예컨대, 거리 정보(만약 다중 필드들을 연결함으로써 형성되는) 거리 주소에서 단어 또는 풀네임(fullname)을 포함하는 필드로부터 취해지는 개인적인 첫 번째 이름(firstname)과 같은, 값이 공간에 의해 분리되는 다중 단어들로 구성되는 필드 내의 단어(공간 없이 문자들의 스트링)이다. 토큰은 도시 이름 "New York"과 같이 공간들을 포함할 수 있다. 토큰은 정부 식별자(id) 또는 인보이스(invoice) 수와 같은, 가능하게 바이너리인, 숫자 값일 수 있다. 토큰은 삭제되는 하나의 문자를 갖는 스트링, 제거되는 디지트(digit)를 갖는 수, 또는 스트링 또는 수로부터 취해지는 n 문자들의 근접 시퀀스로 구성되는 엔-그램(n-gram)과 같은, 스트링 또는 숫자 값의 프래그먼트일 수 있다. 토큰은 영상 내의 영역에 대응하는 데이터와 같이, 바이너리 필드의 프래그먼트일 수 있다.
(변형 토큰 쌍들로의) 변형 프로파일러(110)에 의해 식별되는 변형 토큰들의 페어링은 각 토큰이 이러한 토큰들을 나타내는 노드들 간의 에지에 대응하는 변형 토큰들 사이의 페어링 및 노드에 의해 표현되는 변형 네트워크를 정의한다. 변형 네트워크는 변형 네트워크 해석기(120)에 의해 해석될 수 있다. 전형적인 네트워크는 각 연결된 구성요소의 노드들이 모두 그 구성요소 내의 다른 노드로의 에지에 의해 연결되고, 서로 다른 구성요소들 내의 어떠한 노드들도 서로 연결되지 않는 다중 연결된 구성요소들의 집합을 포함한다. 연결된 구성요소는 에지들에 의해 연결된 노드들의 세트의 폐회로(closure)이다. 정의에 의해, 서로 다른 연결된 구성요소들은 해체된다. 변형 네트워크 해석기(120)는 네트워크의 연결된 구성요소들의 집합을 식별할 수 있고 변형 네트워크의 연결된 구성요소 내에서 각 토큰을 갖는 하나 이상의 토큰-대표들을 연관시킬 수 있다. 변형 네트워크의 노드들을 특징짓는 분량들(quantities) 중에서, 데이터 셋 내의 모든 레코드들 및 개별적으로, 즉, 그 토큰을 나타내는 노드에 연결하는 에지들의 수인, 토큰을 가지고 페어링되는 변형들의 수에 대응하는 토큰의 정도(또는 조정 수(coordination number))에서 선택된 필드(또는 필드들의 조합) 내의 연관된 토큰의 인스턴스(instance)의 카운트가 존재한다.
사용자(102)는 사용자 인터페이스(104) 내에서, 특히 단일 연결된 구성요소 내의 그것 내의 토큰들에 대한 변형 페어링들의 네트워크의 그래픽적인 표현을 볼 수 있다. 변형 네트워크의 연결된 구성요소의 특정 서브세트들은 관심이 있을 수 있고, 그래픽적인 표현에서 선택적으로 하이라이트가 주어질 수 있다(highlighted). 예컨대, 더 높은 카운트를 갖는 노드에 연결되지 않은 노드들을 고려해보자. 소정 예시들에 있어서, 이것들은 연결되는 구성요소에 대한 토큰-대표의 집합으로써 선택될 수 있다. 동일 또는 더 낮은 카운트의 노드들에 단지 연결되는 에지들을 가로지름으로써 획득되는 노드들의 트리를 구성하는 서브네트워크는 토클-대표의 정규의(canonical) 이웃으로 불릴 수 있다. 정규 이웃 내의 모든 노드들은 그것의 토큰-대표에 의해 표현될 수 있다. 정규 이웃들은 중첩할 수 있다. 결론으로써, 토큰은 그것이 토큰-대표 자신이 아니라면, 하나 이상의 토큰-대표와 연관될 수 있다. 사용자(102)가 GUI(Graphical User Interface)(104)를 통해 그들의 중첩들 및 정규 이웃들을 시각화하는 것을 가능케하는 것은 유용하다.
선택된 토큰과 페어링되는 변형 토큰들의 세트는 그것의 로컬 이웃으로 불린다. 선택된 토큰은 로컬 이웃에 대해 프라이머리(primary)로 불린다. 그래픽 디스플레이에 있어서, 로컬 이웃은 에지에 의해 선택된 (프라이머리) 노드에 연결된 노드들의 세트이다. 토큰의 정도(또는 그래픽 관점에서 조정 수)는 로컬 이웃의 크기(토큰 자신을 제외하기 위해 마이너스 1)이다. 선택된 토큰의 중요도는 (주어진 소스 및 필드, 또는 선택된 토큰이 발생하는 텍스트 내의) 적어도 하나의 토큰을 포함하는 레코드들의 수에 의해 분할되는 선택된 토큰의 로컬 이웃 내의 각 토큰에 대한 발생의 카운트의 합계의 비율의 로그로서 계산된다. 중요도는 서로 다른 토큰의 상대 중요성이 계산되어지는 것을 허용한다: 더 높은 중요도를 갖는 토큰이 더 적은 레코드들에서 발생하고 따라서 검색에서 사용시 보다 구별적이다.
소정 예시들에 있어서, 예컨대, 카운트가 로컬 이웃에서 토큰들의 카운트의 표준 편차 더하기 평균의 합을 초과하는 것들과 같은 통계 테스트에 의해 구별되어짐으로써 식별되는 이러한 토큰들은 "(로컬) 포지티브 토큰들"로서 식별될 수 있다. (유사한 식별은 정규 이웃 또는 실제 임의의 이웃 내의 토큰들을 위해 생성될 수 있다) 회사 또는 개인 이름 내의 개별 단어들로부터 형성되는 토큰들에 대해, 포지티브 토큰은 통계적으로, 에러로 형성되는 인쇄상의 변형으로 언급되는 것과 대조적으로, "실제(actual)" 단어 또는 이름이 되기 쉽다. 즉, 토큰의 발생 빈도수는 그것은 토큰이 사고에 의해 발생되지 않을 것처럼, 데이터셋 내의 그것의 이웃의 문맥(context) 내에서 충분히 높다.
포지티브 토큰들이 사전 내에서 검색되어지리라고 필수적으로 예상되지 않는 다는 점에 주목해야 한다. 철자를 잘못 쓴 단어가 데이터셋 내에 우월한 조직적인 이유들이 존재할 수 있다. 특히, 많은 생성 또는 고의로 철자를 잘못 쓴 단어들이 독측한 회사 이름들을 형성하는데 사용된다. 데이터 셋의 통계가 그들의 식별을 지원하지 않을 수 있기 때문에, 모든 사전 단어들이 동일하게 포지티브 토큰들로 인식되진 않을 것이다.
많은 로컬 이웃들이 하나의 포지티브 토큰을 가질 것이다. 포지티브 토큰들은 통계적으로 "실제" 토큰들이고 다른 토큰들은 상대적으로 드문 변형들이다. 소정 로컬 이웃들은 모든 변형 토큰들의 발생 빈도가 유사하기 때문에, 어떠한 포지티브 토큰들도 갖지 않을 수 있다. 이는 포지티브 토큰들을 구별하는데 불충분한 통계가 존재하는 데이터 셋 내에서 드문 토큰들에 대해 특히 일어난다. 만약 포지티브 프라이머리 토큰의 로컬 이웃이 하나 이상의 포지티브 토큰을 갖는다면, 다른 포지티브 토큰들은 "폴스 프지티브들(false positives)"로 고려된다. 즉, 그들은 통계적으로 다른 "실제" 토큰들이 되기 쉽고 프라이머리 포지티브 토큰의 우발적인 변형이 아니다. 이러한 폴스 포지티브들을 식별하는 것은 그들이 의미론적 의미의 기초 상에서 페어링되지 않아야 하는 유사도에 기초하여 페어링되는 토큰들을 나타내기 때문에 유용하다. 변형 네트워크의 정확도는 이러한 변형 페어링들을 차단함으로써 개선될 수 있다. 소정 주의(care)가 복수형과 같은 소정 "폴스" 포지티브들이 변형으로 남아야하기 때문에 요구된다.
토큰 대표들의 문맥에 있어서, 정규 이웃들에 대한 포지티브 토큰들을 식별하는 것은 유용할 수 있다. 소정의 아주 보통 사람의 이름들은 매우 유사하다. 예컨대, "에르난데스(Hernandez)"와 "페르난데스(Fernandez)"를 고려해봐라. 단지 하나의 치환에 의해 달라지는 것이 그들을 변형 쌍으로 만든다. 그들 중 하나는 주어진 데이터 셋에서 다른 것보다 더 많이 발생할 것이고, 그 하나는 둘을 포함하는 정규 이웃 내에서 토큰을 가장 자주 발생시키기 쉬우며, 따라서, 소정 실시예들에서, 그것의 토큰 대표이다. "에르난데스(Hernandez)"와 "페르난데스(Fernandez)" 사이의 링크를 차단함으로써, 둘 모두 토큰들이 더 높은 카운트의 다른 토큰에 링크되지 않게 하고 따라서 그들 자신의 (중첩하는) 정규 이웃들을 갖는 토큰 대표들이다. 추가적인 가지치기(pruning)가 정규 이웃들을 보다 완성도 있게 분리하기 위해 필요할 수 있고, 예컨대, "에르난데스(Hernandez)"와 "페르난데스(Fernandez)" 사이의 링크 및 다른 유사 쌍들의 간의 링크를 차단한다.
사용자(102)는 예컨대, 노드들 간의 에지를 부가 또는 삭제하거나 노드들을 제거 또는 부가함으로써, 변형 네트워크를 조정하는데 사용자 인터페이스(104)를 사용할 수 있다. 이는 적합한 외부 데이터(106)를 공급함으로써 변형 프로파일러(110)에 의해 수행되는 절차에서 행해질 수 있는 것처럼, 토큰들을 제거 또는 부가하거나 또는 변형 페어링들을 부가 또는 차단하는 것에 대응한다. GUI(104)는 이를 수행하는 유용한 방법을 제공한다. GUI(104)는 또한, 포지티브 토큰들을 연결하는 에지들을 하이라이트 표시하고 다른 토큰들로부터 포지티브 토큰들을 그래픽적으로 구별할 수 있다. 연결된 포지티브 토큰들의 모든 변형 쌍들을 리스팅하는 뷰는 보호 및 차단할 에지들을 선택하는 매카니즘을 가지고, 제공될 수 있다.
검색-기반 클러스터링 엔진(130)은 소정 예시들에서, 데이터 클러스터들(180)의 집합을 생성하기 위해 (그들의 대응하는 토큰들에 기반하여) 유사 콘텐트를 갖는 레코드들로 그룹핑하기 위해, 병렬로 프로세싱되어질 프로세서들 중에 파티셔닝되거나 및/또는 세그먼트들로 분할되는 "토큰화된(tokenized) 레코드들(콘텐트가 토큰화되어진 레코드들)을 프로세싱한다. 클러스터링 엔진(130)은 데이터 소스(100) 내의 레코드들의 배치 내의 모든 레코드들이 외부셋에서 비교를 위해 선택적으로 이용될 수 있는 "배치 모드"(또는 "오프라인 모드")로 또는 레코드들이, 그들이 이미 프로세싱된 레코드들의 수집에 대비하여 도착하는 것처럼 프로세싱되어지는 "증가 모드"(또는 "온라인 모드")로 실행할 수 있다.
소정 예시들에 있어서, 배치 모드는 초기 클러스터링을 획득하는데 사용되고 이후 레코드들은 증가 모드에서 부가된다. 데이터를 부가하는 것은 스크랫치로부터 누적된 데이터의 전체 세트를 재클러스터링하는 것을 요구하지 않는다. 단지 추가적인 레코드들을 프로세싱하는 명백한 성능 이점에 추가하여, 전체 데이터셋이 스크랫치로부터 재클러스터링되었다면 발생할 수 있는 것과 같이, 이는 새로운 데이터가 도착할 때, 클러스터로의 레코드들의 미리 결정된 할당들이 변경되지 않을 수 있다는 추가 이점을 갖는다. 이는 특히 클러스터들로서 비즈니스 문맥 내에서 클러스터링이 일어날 때 중요하고, 그들의 멤버들이 클러스터링 프로세스의 독립적인 비즈니스 의미를 가지며, 비즈니스들은 더 많은 데이터가 유용하게 되기 때문에 클러스터 멤버쉽이 변경될 수 있는 아이디어로 인해 불편하다.
검색 스토어들(146) 및 대표 레코드들 스토어들(178)(도 1d 및 1g 참조)을 포함하는 클러스터 스토어들(170)은 클러스터링 엔진(130)에 의해 유지되고 클러스터 프로세스에 참여한다. 소정 예시들에 있어서, 클러스터 스토어들(170)에 부가하여, 변형 프로파일러(110) 및 변형 네트워크 해석기(120)로부터의 결과들은 클러스터링 프로세스 동안 유사도에 대한 레코드들을 비교하는 때, 고려될 수 있다.
데이터 클러스터는 콘텐츠가 충분히 유사한지 판정하기 위한 데이터 레코드들의 셋이다. 클러스터 내에 포함된 데이터 레코드들은 그 클러스터의 멤버들로 언급된다. 소정 예시들에 있어서, 클러스터 내의 레코드들은 클러스터의 다른 멤버들과의 유사도의 높은 측정 결과 및 다른 클러스터들의 멤버들과의 유사도의 낮은 측정 결과를 나타낸다.
세그먼트는 클러스터 내의 멤버쉽에 대해 서로 비교될 수 있는 데이터 레코드들의 셋이다. 서로 다른 세그먼트들 내의 레코드들은 클러스터링 엔진(130)에 의해 비교되지 않고, 구별되는 클러스터들로의 멤버쉽에 필수적으로 할당될 것이다. 세그먼트들로의 데이터셋의 레코드들의 배치는 세그멘테이션이라 불린다. 레코드는 하나 이상의 세크먼트의 멤버일 수 있다. 소정 시나리오에서, 예컨대, zip 코드 또는 원산지와 같은 지리적인 분량(geographic quantity) 또는 생산 식별자와 같은 분해된 세트들로 레코드들의 집합을 분할하는 분류 특성과 같이, 클러스터를 통해 공통되어질 것으로 예상되는 값에 기반한 자연 세그멘테이션(natural segmentation)이 존재한다. 소정 예시들에 있어서, 데이터 클러스터들은 예컨대, 데이터가 정부 할당 식별자의 프래그먼트에 기반하여 세그멘테이션될 수 있는 것과 같이, 다른 기준에 기반하여 세그멘테이션될 수 있다. 소정 예시들에 있어서, 세그멘테이션의 다중 레벨들은 가능하다. 예컨대, 데이터는 원산지에 의해 먼저 세그멘테이션되고, 각 원산지 세그멘테이션 내의 데이터 클러스터들은 정부 할당 식별자의 프래그먼트에 의해 추가적으로 세그멘테이션될 수 있다.
병렬로 프로세싱하는 때, 소정 예시들에 있어서, 어떠한 비교들도 서로 다른 세그먼트 내의 레코드들 간에 이루어지지 않기 때문에, 각 세그먼트는 개별 프로세싱 파티션으로 통과될 수 있다. 다른 예시들에 있어서, 클러스터링 엔진(130)에 의해 사용되는 검색 스토어들을 포함하는 소정 데이터가 모든 파티션들에 의해 공유된다면, 동일한 세그먼트 내의 데이터 레코드들은 클러스터링 병렬로 프로세싱되어질 개별 파티션들로 파티셔닝될 수 있다.
원격 프로세싱 시스템들 간의 정보의 제한된 또는 단방향 플로우와 연관된 소정 예시들에 있어서, 검색 스토어 엔트리들과 같은 쿼리들 및 공유 정보는 제한된 원격 프로세싱 시스템에서 보여지는 바와 같이, 결과들의 신뢰도를 해치지 않고 제한된 원격 프로세싱 시스템으로 단방향 통과될 수 있다. 예컨대, 소정 국가들은 그들의 국경들을 넘어 개인 정보의 공유를 제한한다: 일부는 모든 다른 국가들로의 데이터 유출을 금지하는 반면(예컨대, 스위스), 다른 일부는 US를 포함하여 선택된 다른 국가들로의 데이터 유출을 금지한다(예컨대, 프랑스). 도 1b에서, 쿼리(20)는 사용자(22)에 의해 US(21) 내에서 생성된다. 쿼리는 개인 이름, 정부 할당 식별자 및 출생일로 구성될 수 있고, 쿼리의 목적은 이름이 붙은 사람에 의해 소유되는 모든 은행 계좌들을 검색하는 것이다. 쿼리는 US(21) 내에서 실행되었던 데이터 클러스터들(23)에 적용되고, 소정 레코드들(후보 레코드들로 불리는)이 반환된다. 검색 스토어(146)로부터의 검색-엔트리들 또는 대표 레코드들 스토어(178)로부터의 대표 레코드들과 같은 추가적인 정보는 쿼리의 결과로서 실행되고 검색될 수 있다. 쿼리, 후보 레코드들 및 가능하게는 추가적인 정보는 선택적인 데이터 유출 국가(41) 내에서 실행되는 데이터 클러스터들(43)에 반하여 로컬 사용자(42)에 의해 국지적으로 클러스터링 되어지도록 선택적인 데이터 유출 국가(41)로 통과될 수 있다(40). 유사하게, 쿼리, 후보 레코드들 및 가능하게 추가 정보는 선택적인 데이터 유출 국가(51) 내에서 실행되는 데이터 클러스터들(53)에 반하여 로컬 사용자(52)에 의해 국지적으로 클러스터링되어지도록 금지된 데이터 유출 국가(51)로 통과될 수 있다(50). 클러스터링의 결과들은 예컨대, 사기 검출 또는 법 제한을 위해, 적합한 로컬 액션에 대한 제한적 데이터 유출 국가들 내에서 이용가능할 것이다. (검색-엔트리들 또는 대표 레코드들과 같은) 그것의 데이터 또는 그것의 공유 정보를 유출하기 위해 제한된 데이터 유출 국가의 실패는 제한된 데이터 유출 국가 내에서 데이터로부터 유도되는 클러스터 멤버들이 그 국가의 외부에서 볼수 없을 것이라는 것을 단순히 의미한다. 제한된 국가의 외부에서 클러스터링되는 데이터의 통합은 영향을 받지 않는다.
소정 예시들에 있어서, 레코드들의 유사도는 스코어링(scoring) 기능들 및 비즈니스 룰들을 이용하여 데이터 레코드들의 하나 이상의 필드들로부터의 토큰들의 비교들을 조합함으로써 스코어들로 측정된다. 검색 코드들 및 매치 코드들과 같은 데이터 매턴 코드들은 레코드의 특성들을 요약하고, 사용자(102)로 결과들을 보내줄 때 및 유사도 측정을 위한 비즈니스 룰들을 정형화하는데 모두 유용하다. 예컨대, 레코드에 대한 검색 코드는 레코드들의 세들 사이에 공유되는 토큰들의 그러한 조합들을 라벨링할 수 있고, 반면, 쌍을 위한 매치 코드는 배교되어지는 필드들의 조합 또는 각 필드에 대한 집단(population)의 상태 및 매치 퀄리티를 인코딩할 수 있다. 예컨대, 비교되는 필드 값들의 쌍에 대한 매치 코드 내의 매치 퀄리티 상태는 값들이 동일하다면, "정확한 매치(exact match)"를 포함하거나 유사도 스코어가 퍼지(fuzzy) 매치 임계값보다 크다면, "퍼지 매치"를 포함할 수 있다. 매치 코드 내의 집단 상태는 만약 쌍의 레코드 1 내의 값이 널(null) 또는 블랭크(제로 또는 더 많은 공간 문자)라면 "unpopulated 1" 또는 쌍의 레코드 1 및 레코드 2 내의 값들이 둘다 집단(populated)이거나 또는 둘다 널 또는 블랭크 중 하나라면 "상관 집단(correlated population)"을 포함할 수 있다. 검색 코드 또는 매치 코드는 검색 또는 매치 쌍을 특징짓는 서로 다른 속성들에 대한 이러한 코딩된 상태들의 집합들로부터 생성된다. 각 검색 코드를 갖는 샘플 레코드들, 또는 각 매치 코드를 갖는 매칭 쌍들로부터의 샘플 레코드들은 사용자를 위해 디스플레이될 수 있다. 이것이 사용자가 클러스터 멤버쉽 결정들을 하기 위해 사용되는 유사도 측정들을 개선, 정제(refine) 및 조정(tune)하는 것을 도울 수 있다.
클러스터 승인 엔진(190)은 사용자 인터랙션을 통해 반복적으로 클러스터 결정들을 개선하는데 사용될 수 있다. 사용자(102)는 예컨대, 새로운 또는 현재 클러스터로 레코드를 재매핑하거나 또는 클러스터의 멤버로써 레코드를 확인하는 것과 같이, 사용자 인터페이스(104)를 통해 일련의 클러스터 승인 결정들을 수행한다. 단지 선택된 레코드들만이 전체 클러스터들을 병합 또는 스플리팅(split)하기 위해 사용자(102)에 의해 재매핑됨을 필요로 한다. 클러스터 승인 결정들에 의해 잠재적으로 영향을 받는 레코드들은 생성된 변형 데이터 클러스터들(180)로 클러스터링 엔진(130)을 통해 식별되고, 검색되며 재프로세싱된다. 개별 레코드들의 재매핑은 영향을 받는 레코드들이 재클러스터링되는 때 현재 클러스터들이 병합 또는 스플리팅하도록 야기하는 클러스터 멤버쉽 상의 영향을 증폭하는 것을 포함한다 - 클러스터의 원본 프라이머리 레코드보다 재매핑된 레코드들에 더 가까운 이러한 레코드들은 그것의 새로운 클러스터로 재매핑된 레코드를 가지고 이동할 것이다. 사용자(102)는 사용자의 클러스터 승인 선택들에 의해 유발되는 변화들을 검증하기 위해 사용자 인터페이스(104) 내에서 데이터 클러스터들의 "비포-앤-애프터(before-and-after)" 표현으로 보여질 수 있다. 사용자(102)는 결과를 만족할 때까지 클러스터들을 반복적으로 계속 변형할 수 있다. 재매핑에 의해 유도되는 증폭 효과로 인해, 사용자는 모든 개별 레코드의 배치를 세부 관리할 것 없이 약간의 신중한 변화들을 갖는 많은 레코드들의 배치를 조정할 수 있다.
1.2 클러스터링 엔진
도 1c는 클러스터링 엔진(130)의 예시의 구성요소들을 도시한다. 소정 예시들에 있어서, 데이터 소스 레코드들(100) 또는 토큰화된 레코드들(118)은 세그멘테이션 엔진(132)에 의해 세그먼트들로 독출되고 분리되며 및/또는 병렬 프로세싱을 위한 병렬 파티셔너(134)에 의해 다중 프로세스들 사이에서 파티셔닝된다.
소정 예시들에 있어서, 원본 또는 토큰화된 레코드들의 셋은 더 많은 구별가능한 레코드들을 먼저 가지고, 레코드들의 부유함 또는 구별가능성을 반영하는 순서(ordering)를 강요하기 위해 (각 세그먼트 및/또는 프로세스 내에서) 소팅될 수 있다(136). 이는 클러스터링의 퀄리티를 개선시킬 수 있다. 구별가능성은 별개의 값들 및 다수의 토큰들을 포함하는 보다 많이 집단화된 필드들을 갖는 레코드가, 집단화되지 않는 필드들 및 디폴트 값들 또는 단일 토큰들과 함께 집단화되는 필드들을 포함하는, 가능하게 불완전한, 레코드들일 수 있는 다른 레코드들보다 더 구별가능하다는 관점에서 의도된다.
예컨대, 하나의 구별가능성 기준은 레코드의 특성 집단 패턴에 기반할 수 있다. 집단 패턴 코드는 예컨대, (클러스터 멤버쉽과 관련된) 레코드 내의 필드들의 조합들 또는 하나 이상의 필드들의 선택된 세트에 대한 값들의 세트를 연결시킴으로써 레코드의 집단의 상태를 코딩하는데 사용될 수 있다 - 예컨대, 필드가 집단화되지 않은 경우(널, 엠프티(empty) 또는 블랭크) 값들은 "0"이고, 그것이 디폴트 값을 포함하면 "1" 그리고 필드가 비-디폴트 값을 가지고 집단화되면 "2"이다. 다른 높은 값들은 예컨대, 텍스트 필드 내의 토큰들의 수와 같은 필드의 집단의 상태 간의 추가적인 질적인 구별들을 만드는데 사용될 수 있다(수가 "9"를 초과할 수 있다면, 다른 코드 값들의 표현 내에서 적합한 보상을 만든다). 구별가능성 스코어는 집단 패턴 코드 내에서 서로 다른 집단 값들의 가중치가 부여된 스코어로서 계산될 수 있다. 더 높은 스코어들은 더 구별 가능한 레코드들을 지시할 것이고, 레코드들을 조직화하기 위한 정렬(sort)(136)은 구별가능성 스코어 상에서 내림차순 정렬일 수 있다. (일반적으로, 정렬 순서는 스코어로의 최초 변환 없이, 집단 패턴 코드와 같은 비-수적인 구별가능성 기준으로부터 결정될 수 있다.) 구별가능성의 더 많은 정규 측정들이 주어진 소스 및 필드(또는 문맥) 내의 각각의 토큰의 중요도와 같이 통계적 측정들을 포함하는 변형 프로파일러 스토어들(115) 내의 데이터를 이용하여 구성될 수 있다.
구별가능성 정렬(136)을 수행하는 목적은 그것이 클러스터링 멤버쉽 결정 프로세스를 증가하기 때문에 더 좋은 클러스터링 결과들을 이끄는 것이다 : 레코드들은 그들이 프로세싱되는 때, 클러스터들로 할당된다. 특히, 클러스터들의 수는 외부 셋에서 알수 없고, 새로운 클러스터들은 레코드들이 프로세싱되는 때, 발견된다. 구별가능성 순서 배치는 클러스터 멤버쉽 결정 프로세스와 호환가능한 가장 큰 수 구별된 클러스터들을 생성하기 위해 클러스터 멤버쉽 결정 프로세스와 함께 동작하도록 디자인된다. 경험은, 만약 낮은 구별가능성 스코어들 및 동시에 자주 낮은 데이터 퀄리티를 갖는 레코드들이 먼저 프로세싱된다면, 그들이 다르게 구별가능한 클러스터들의 덩어리를 강제하는 경향을 갖는다는 것을 보여준다.
소정 예시들에 있어서, 충분히 서로 다른 데이터 퀄리티를 갖는 레코드들이 개별적으로 프로세싱되는 데이터 퀄리티 증폭에서 클러스터링을 수행하는 것이 바람직할 수 있다. 예컨대, 고객 이름, 정부 id 및 출생일을 갖는 은행 레코드들을 위해, 단 하나의 집단화된 필드를 갖는 그것으로부터 (비-디폴트 값들을 가지고) 집단화된 두 필드를 갖는 그것으로부터 개별적으로 (비-디폴트 값을 가지고) 집단화되는 모두 세 필드를 갖는 레코드들의 셋을 프로세싱하는 것은 가치가 있다. 클러스터링 멤버쉽 결정들의 신뢰도는 레코드 감소에 따라 감소되고, 개별 클러스터링 통로들을 생성하는 것은 이것의 영향을 이해하는데 있어서, 사용자를 도울수 있다. 서로 다른 구별가능성 스코어들의 레코드들은 동일하게 사용자(102)를 위한 사용자 인터페이스(104) 내에서 그래픽적인 디스플레이로 마킹될 수 있다.예컨대, 레코드들은 사용자가 레코드들이 더 적게 신뢰할 수 있다는 것을 일견(glance)으로 볼 수 있도록, 높음에서 낮은 구별가능성으로 점차적으로 스케일링되도록 색상을 입힐 수 있다. 사용자 인터페이스(104)는 또한 다시 사용자가 주어진 퀄리티의 데이터 상에서 집중하는 것을 가능케 하는 구별가능성의 서로 다른 범위들을 갖는 토큰들의 디스플레이를 턴온 및 턴오프하기 위한 스위치를 가질 수 있다. 여기서, 구별가능성은 데이터 컬리티에 대한 프록시(proxy)로서 사용되나, 마찬가지로, 그래픽적 디스플레이는 클러스터링을 구동시키기 위해 사용되는 구별가능성 스코어의 독립적으로 유도되는 데이터 퀄리티의 직접 측정치를 사용할 수 있다.
클러스터링 엔진(130)은 비교를 위한 이용가능한 레코드들의 세트 중에서 쿼리 레코드라고 불리는 토큰화된 레코드 또는 각각의 원본 레코드에 대한 후보 매치들을 식별하는 후보 검색 엔진(140)을 포함한다. 만약 어떠한 레코드들도 후보 검색 엔진에 의해 검색되지 않는다면, 새로운 클러스터 id는 생성되고 쿼리 레코드에 할당된다. 새로운 클러스터에 대한 적합한 정보는 클러스터 스토어들(170)에 저장된다. 만약 레코드들이 후보 검색 엔진에 의해 검색된다면, 그들은 클러스터 멤버쉽 결정을 하기 전에 스코어링 엔진(150)에 의해 쿼리 레코드에 대항하여 상세하게 스코어링된다. 클러스터 멤버쉽 엔진(160)은 스코어링된 쿼리 레코드들의 클러스터 멤버쉽을 결정한다. 변형 네트워크 해석기(120) 및 다른 클러스터 스토어들(170)에 의해 생성되는 변형 프로파일러(110) 및 변형 네트워크 스토어들(126)에 의해 생성되는 변형 프로파일러 스토어들(115)은 후보 레코드들을 스코어링하고 식별하는 것을 지원하기 위해 후보 검색 엔진(140) 및 스코어링 엔진(150)에 의해 모두 사용될 수 있다.
소정 예시들에 있어서, 단일 레코드는 예컨대, 서로 다른 클러스터 전략들을 갖는 개별 클러스터링 통로들 상 또는 서로 다른 세그먼트들 내에서 다수의 클러스터들로 할당될 수 있다. 다중 매치 조정기(165)는 단일 클러스터로 각각의 레코드를 연관시키기 위해 할당들을 조정하는데 사용될 수있다.
소정 시나리오들에 있어서, 다수의 클러스터들로의 앰비규어스(ambiguous) 매치들은 예컨대, 레코드가 하나 이상의 클러스터 내의 멤버쉽에 가까운 때와 같이, 대체(alternative) 매치들 사이에서 구별하기 위한 불충분한 정보가 존재하는 때, 다수의 매치들이 조정된 이후에 남아있을 수 있다. 예컨대, 이름들 "Acme Industries Canada" 및 "Acme Industries Australia"에 의해 라벨링된 두 구별되는 클러스터들이 존재한다고 가정하자. 다른 정보가 없는 경우, 클러스터 "Acme Industries"가 할당되야만 하는 것은 앰비규어스하고 해석이 불가하다. 이러한 경우들에 있어서, 앰비규어스 매치들은, 아마도 클러스터링된 (매치된) 레코드들의 네트워크의 그래픽적 디스플레이 내에서 구별되는 컬러를 갖는 앰비규어스 매치들에 관련된 레코드들을 마킹하면서, 사용자 인터페이스(104) 내에서 사용자(102)에게 리포팅되고 디스플레이될 수 있다.
소정 실시예들에 있어서, 클러스터 멤버쉽 결정 프로세스는 대체 가능한 클러스터들의 세트를 벗어나서 하나의 클러스터로 앰비규어스 레코드를 할당할 수 있다. 앰비규어스 멤버를 가지고 페이렁되는 클러스터 멤버쉽 결정과 관련된 클러스터의 각각의 멤버에 대해, 사용자 인터페이스(104)는 앰비규어스 레코드로부터 멤버쉽이 허가되었던 클러스터의 페어링된 멤버로의 에지를 하나의 컬러로, 그리고, 멤버쉽이 부정되었던 클러스터의 대응하는 멤버로의 각각의 에지는 서로 다른 컬러로 디스플레이할 수 있다. (예컨대, 도 11d에서, 앰비규어스 레코드(1190)과 매치된 클러스터의 멤버 사이의 에지는 검은색으로 도시되고, 반면 앰비규어스 레코드와 매치되지 않은 클러스터의 멤버(1194)의 멤버 사이의 에지는 회색으로 도시된다.) 이러한 디스플레이는 사용자(102)가 클러스터 멤버쉽 엔진의 할당을 수락 또는 변경하기 전에 즉시 히용가능한 대체물들로부터 클러스터 멤버쉽 엔진에 의해 생성된 결정을 미리 구별하는 것을 가능케 한다.
후보 검색 엔진(140)의 목적은 유사도의 최소 표준을 만족하는 레코드들을 단지 검색하는 검색을 수행함으로써 쿼리 레코드에 상세하게 비교되어질 필요가 있는 레코드들의 수를 줄이기 위함이다. 필수적으로, 비교에 이용가능한 레코드들의 세트(배치 경우에 있어서 세그먼트 내의 모든 레코드들)는 인덱스에 대항하여 검색하는 것이 가능하게 매치일 수 없는 레코드들을 폐기하기 위해 빠르고, 계산적으로 저렴한 필터로서 사용될 수 있도록 하기 위해, 인덱싱된다. 클러스터링 엔진(130)의 성능은 상세하게 고려되어질 레코드들의 세트를 좁히는데 있어서, 후보 검색 엔진(140)의 성공에 의해 극적으로 영향을 받을 수 있다.
1.3 후보 검색 엔진
도 1d는 후보 검색 엔진(140)의 예시의 구성요소들의 약도를 도시한다. 쿼리 레코드는 데이터 소스 레코드들(100P) 또는 토큰화된 레코드들(118P)의 세트로부터 독출된다. 이러한 쿼리 레코드는, 만약 원본 또는 토큰화된 레코드들이 병렬로 프로세싱되어지도록 세그멘테이션 및/또는 파티셔닝되었다면 병렬 파티션 내에서 및/또는 세그먼트 내에서 존재할 수 있다. 쿼리는 쿼리 레코드 필드들의 하나 이상의 필드들 또는 조합들로부터 하나 이상의 토큰들을 선택하는 미리 정의된 또는 사용자-특정 절차에 기반하고, 쿼리 구성 절차(142)에 의해 선택되는 토큰들의 조합 또는 선택된 토큰으로부터 생성된다. 소정 실시예들에 있어서, 생성된 쿼리는 쿼리 확장 엔진(143)에 의해 하나 이상의 구체적인 쿼리들을 포함하는 확자오딘 쿼리로 확장된다.
소정 실시예들에 있어서, 스코어링 엔진(150)에 의해 클러스터 멤버쉽을 결정하는데 관련된 스코어링 필드들로 불리는 필드들의 집합은 스코어링 엔진(150)에 의해 사용되는 스코어링 룰들로부터 발견될 수 있다. 스코어링 룰들은 하나 이상의 필드들 또는 필드들의 조합들이 유사도에 대해 개별적으로 비교되는 미리 정의된 또는 사용자-특정 룰세트 내에서 구체화되고, 그리고는 매개 필드 스코어들의 집합적인 세트는 전체 레코드 스코어를 계산하기 위해 조합된다. 룰세트는 룰들의 집합이고, 각각은 입력 값들, 상수들, 파라미터들, 다른 매개 값들, 다른 출력 값들, 및 빌트-인 함수들 및 사용자-정의 함수들인 빌트-인 논리적 및 수학적인 연산들의 조합을 사용할 수 있는 하나 이상의 케이스-기반(case-based) 할당들의 세트 내의 다른 데이터셋들로의 룩업들에 의해 획득되는 값들을 조합함으로써, 하나 이상의 매개 값들 또는 출력 값들을 계산한다. 룰세트들은 일부가 벡터들일 수 있는 하나 이상의 출력 값들을 생성할 수 있다. 스코어링 룰세트 내의 스코어링 룰들은 들어오는(incoming) 데이터 레코드들로부터 필드들의 선택을 사용할 것이고, 전체적으로 이러한 필드들은 스코어링 필드들로써 참조된다.
스코어링 필드들 내에서 동일한 값들을 공유하는 레코드들의 세트는 동일한 클러스터 멤버쉽 결정을 공유할 것이다. 스코어링 필드 중복제거 모듈(144)은 레코드들의 이러한 세트의 첫 번째 레코드만이 스코어링으로 통과되고 이후의 레코드들이 클러스터 멤버쉽 결과를 단순히 이어받는 것을 확실하게 한다.
검색-엔트리 확장 엔진(145)은 전부 유입되는 데이터 소스(100) 내의 레코드들 또는 검색 스토어(146)를 구성하기 위한 현재 데이터 클러스터 레코드들(180)의 세트 중 하나에 적용된다.
쿼리 레코드는 후보 검색 엔진(140)의 코어 검색 엔진(147)로 통과된다. 검색 엔진(147)은 각각의 확장된 쿼리를 취하고 쿼리 레코드와 식별된 후보 매치 레코드들 사이의 가능한 후보 매치들의 유니크한 레코드 식별자들의 하나 이상의 리스트들을 반환한다. 이러한 리스트들은 최소 기준이 스코어링 엔진(150)에 의한 상세한 스코어링의 투자할 가치가 있다고 만족하는 후보 매치 레코드들의 리스트를 식별하기 위해 사용자-특정 룰들(예컨대, 룰세트) 및/또는 미리 정의된 룰들을 적용하는 클러스터 후보 선택기(148)로 통과된다. 소정 실시예들에 있어서, 쿼리 레코드들과 이용 가능한 레코드들 간의 매치되는 토큰들의 조합을 특징짓는 검색 코드들은 선택 프로세스를 활성화하는데 및 선택 프로세스를 과거로 거슬러 올라가 해석하는데 모두 사용된다.
1.4 변형 프로파일러
도 1e는 변형 프로파일러(110)의 예시의 구성요소들을 도시한다. 변형 프로파일러(110)는 여기에 참조로서 통합되는 "Managing an Archive for Appriximate String Matching"이라는 제목의 US 공개번호. 2009/0182728 특허 내에 설명되는 바와 같이 어카이브(archive)를 생성하기 위한 프로세스를 포함하는 변형 토큰들의 페어링들을 식별하는 어카이브를 생성하기 위한 다양항 기술들 중 임의의 것을 사용할 수 있다. 레코드들은 데이터 소스들(100)로부터 독출된다. 그들은 표준화기(112) 및 토큰화기(113)에 의해 프로세싱되는 것을 포함하여, 데이터 준비 모듈(111) 내에서 프로파일링하기 위해 준비된다. 표준화기(112)는 선택된 필드들(또는 필드들의 지정된 조합들)의 의미 및 본질(nature)에 기반하여 유입되는 데이터를 표준화하기 위한 미리 정의된 룰들 및/또는 사용자-특정 룰들을 적용한다. 예컨대, 스트링 값들은 소문자화(lower-cased)될 수 있고, 특정 구두점(punctuation) 문자들은 삭제되거나 스페이스 문자로 대체되는 것 중 하나이거나 둘 모두가 될 수 있다(가능하게 다중 레코드들의 결과를 낳는). 토큰화기(113)는 필드의 의미 및 본질에 따라, 필드 내의 값들에 적용되는 미리 정의된 룰들 및/또는 사용자-특정 룰들에 기반하여 토큰들의 리스트를 식별한다. 예컨대, 주소의 거리 라인(street line)은 단어들의 리스트로 스페이스 문자 상에서 스플리팅될 수 있고, 반면, 가능하게는 "New York"과 같은 의미론적 유닛을 나타내는 값들을 포함하는 도시 필드는 단어들로 스플리팅되지 않는다. 토큰화기(113)는 클러스터링 엔진(130)에 의해 추가적으로 프로세싱을 위한 토큰화된 레코드들(118)의 데이터셋 또는 데이터스트림을 생성한다.
토큰화된 레코드들의 구별되는 토큰들은 또한 각각의 토큰의 인스턴스들의 수(예컨대, 토큰이 나타난 레코드들의 수)를 카운팅하는 것을 포함하여, 변형 프로파일링 엔진(114)에 의해 프로파일링된다. 소정 실시예들에 있어서, 토큰들이 나타나는 데이터 소스, 필드, 및/또는 문맥(필드들의 논리적 그룹핑)을 식별하는 키는 토큰에 연관될 수 있고 토큰의 인스턴스들의 수의 대응하는 카운트는 유지될 수 있다. 이는 개별 통계들이 서로 다른 소스들, 필드들, 또는 문맥들에서 나타나는 동일한 토큰들에 대해 컴파일(compiled)되어지는 것을 가능케한다. 소정 실시예들에 있어서, 토큰이 주어진 필드 또는 문맥에서 나타나는 레코드들을 식별하는 위치 정보는 또한 토큰에 연관된다. 이러한 위치 정보는 비트가 토큰이 나타나는 각각의 레코드에 대한 세트인, 선택적으로 압축된, 비트벡터의 형태일 수 있다. 비트들의 순서는 레코드들의 위치들에 명시적으로 또는 비명시적으로 매핑될 수 있다.
변형 프로파일링 엔진(116)은 토큰 유사도 측정치에 기반하여 서로의 변형들인 토큰들을 식별하는 것을 계속한다. 많은 토큰 유사도 측정들이 가능하다. 하나는 편집 거리에 기반하여 유사도에 대해 토큰들을 비교하는 것이다. 레벤슈타인(Levenshtein) 편집 거리는 하나의 단어에서 다른 것으로 변경하기 위해 요구되는 삽입들, 삭제들 및 대체들의 수를 카운팅한다. 두 단어들은 가장 작은 그들의 편집 거리 보다 더 유사하다. 다른 측정은 예컨대, 사운덱스 인코딩(soundex encoding)을 이용하여, 음성(phonetic) 유사도에 기반하여 단어들을 비교하는 것이다.
세번째 가능성은 공유 문자들의 시퀀스들을 비교하는 것이다. 기본 시퀀스 유사도 스코어는 더 짧은 스트링의 길이에 의해 분할함으로써 및 공유 문자들의 수를 카운팅함으로써 계산될 수 있다. 그리고는, 전체 시퀀스 유사도 스코어는 스트링들의 길이들에서의 차이와 시퀀스에서 떨어진 문자들에 대한 기본 스코어로부터 가중치가 부여된 페널티들을 뺌으로써 형성된다. 예컨대, "eqty fnd" 및 "equity fund"는 가능한 8 문자들과 11 문자들에서 각각 벗어나서, 스페이스 문자를 포함하여, 8 문자들을 공유한다. 기본 유사도 스코어는 1이다. 시퀀스를 벗어난 문자들이 없고, 길이 차이는 3이다. 따라서, 길이는 0.05의 가중치를 미스매치하고, 시퀀스 유사도 스코어는 1 - 0.05*3 = 0.85이다.
소정 실시예들에 있어서, 변형 프로파일링 엔진(114)은 동일한 소스-필드-문맥 내에서 그들의 카운트들 및 변형 토큰들의 리스트, 및 위치 정보, 연관된 카운트, 그것의 소스-필드-문맥 출현횟수의 각각 내에서 모든 토큰을 포함하는 변형 어카이브 및 그들의 유사도 스코어 및 변형 쌍들을 식별하는 스코어 어카이브를 포함하여 변형 프로파일러 스토어들(115)를 생성한다. 변형 네트워크(116)는 각각의 노드가 노킨이고 각각의 에지가 변형 토큰들의 페어링인 변형 어카이브로부터 계산될 수 있다. 변형 네트위크(116)는 사용자(102)가 아마도, 변형 프로파일링 엔진(114)에 의해 변형 쌍들로서 식별되지 않는 토큰들을 링크하도록 에지들을 추가하면서 또는 의미론이 아닌 유사도에 기반하여 단지 변형들인 토큰들을 연결하는 에지들을 삭제하면서, 그것을 조정할 수 있는 사용자 인터페이스(104)에서 그래픽적으로 디스플레이될 수 있다.
소정 실시예들에 있어서, 변형 프로파일러 스토어들(115) 및 변형 네트워크(116)는 외부 데이터(106)를 추가함으로써 풍부해질 수 있다. 외부 데이터(106)는 제3자들로부터 이용가능하거나 또는 사용자에 의해 제공되는 약어들 및 유의어들의 리스트들을 포함할 수 있다. 외부 데이터 소스의 하나의 예시는 별명들, 대체 스펠링들, 및 대체 음역들을 포함하는, 이름들의 문화적 변형들의 리스트이다. 예컨대, 이러한 데이터는 그들이 변형 프로파일러 스토어들(115) 및 변형 네트워크(116)을 수반하는 변형 쌍들 및 외부 데이터 내의 토큰들의 전부를 부가함으로써 또는 단지 데이터 내에 존재하는 토큰들 간의 페어링들만을 부가함으로써 추가될 수 있다. 전자의 경우에 있어서, 데이터 내에 존재하지 않는 토큰들과 연관된 카운트는 0이다. 만약 이러한 토큰이 미래 프로세싱으로 파생한다면, 그것의 카운트는 증가될 수 있으나, 다른 토큰들에 대한 함축된 링크들은 이미 나타날 것이다.
1.5 변형 네트워크 해석기 개요
도 1f는 변형 네트워크 해석기(120)의 예시의 구성요소들을 도시한다. 변형 네트워크(116)는 독출되고 네트워크 해석 엔진(122)은 네트워크 해석을 수행한다. 소정 실시예들에 있어서, 네트워크 해석은 변형 네트워크(116) 내의 변형 토큰들의 연결된 구성요소들의 세트들을 식별할 수 있고, 일부가 아래 설명되는 추가적인 해석들을 수행할 수 있다. 사용자(102)는 각각의 토큰이 노드로서 디스플레이되고 토큰들의 각각의 변형 페어링이 에지에 의해 지시되는 사용자 인터페이스(104) 내에서 변형 네트워크(116)의 그래픽적인 디스플레이를 볼 수 있다. 그래픽적인 디스플레이는 아래 하나하나 열거되는 예시들 내의 정보와 같이, 노드들 및 에지들을 특징 짓는 정보를 가지고 꾸며질 수 있다. 사용자(102)는 꾸며지는 정보를 편집하거나, 또는 노드들 또는 에지들을 부가 또는 삭제하는 사용자 인터페이스(104)를 이용하여 인터랙티브하게 변형 네트워크(116)를 변형할 수 있다.
토큰의 로컬 이웃은 디스플레이될 수 있다. 네트워크 해석기(122)에 의해 수행되는 이웃 해석은 포지티브 토큰들(그들의 로컬 또는 다른 이웃 내의 다른 토큰들로부터 통계적으로 구별가능한 것들) 및 포지티브 토큰들의 쌍들을 연결하는 에지들을 식별할 수 있고, 그래픽적 디스플레이에 마킹할 수 있다.
각 토큰의 인스턴스들의 카운트는 디스플레이 내에 도시될 수 있고 소정 예시들에 있어서, 노드에 사용되는 아이콘의 크기에 의해 그래픽적으로 지시될 수 있다. 높은 카운트의 변형이 없는 것에 연결된 토큰들은 그들의 정규 이웃들(가장 높은 카운트 토큰으로부터 시작되고 동일한 또는 더 적은 카운트의 토큰들로의 모든 변형 페어링들이 뒤따름으로써 형성되는 토큰들의 트리)을 따라 식별될 수 있고 디스플레이될 수 있다. 토큰 대표는 선택된 이웃 내의 모든 토큰을 표현하기 위해 선택된 토큰이다. 토큰 대표 선택기(124)는 예컨대, 정규 이웃의 가장 높은 카운트 토큰과 같이, 각 연결된 구성요소로부터 하나 이상의 토큰 대표들을 선택할 수 있다. 토큰 대표들과 연관된 정규 또는 다른 이웃들이 중첩될 수 있다.
변형 프로파일러 스토어들(115)로부터 취해지는 토큰의 중요도는 검색어들로서 사용되는 때, 토큰들이 상대적으로 더 구별되는 것을 지시한다. 선택된 토큰의 중요도는 상기 선택된 토큰의 로컬 이웃 내의 변형들의 카운트로부터 계산되고 상기 선택된 토큰과 연관된다. 변형-페어링된 토큰들이 서로 다른 로컬 이웃들을 가질 수 있는 것과 같이, 따라서, 각 토큰과 중요도를 연관시키는 중요성인 그들의 중요도는 다를 수 있다. 중요도는 변형 네트워크의 그래픽적 디스플레이 내에서 컬러 그래디언트(gradient)를 가지고 디스플레이될 수 있는 또 다른 속성이다.
로컬 이웃의 (심슨의(Simpson's)) 다이버시티(diversity)는 각 토큰과 연관된 또 다른 양(quantity)이다. 정규화된 때, 심슨의 다이버시티는 지정된 토큰의 변형들의 카운트의 분포 내에서의 스큐(skew)를 반영한다. 다이버시티의 비정규화된 크기는 무작위로 주어진 토큰의 변형이 가질 예상되는 카운트이다. 만약, 지정된 토큰의 k번째 변형의 카운트가 nk라면, (지정된 토큰을 포함하지 않는) 변형들의 전체 수는 nk의 k를 넘는 합이다. 다이버시티는
여기서,
는 변형들의 전체 카운트이고,
는 무작위로 선택된 발생이 k번째 변형과 연관될 확률이다. 도시된 다이버시티를 정규화하기 위해, 0과 1 사이의 양(quantity)를 얻기 위해, 에 의해 분할한다. 다이버시티는 토큰들의 상관이 낮은 다이버시티를 의미하므로, 상관된 토큰들 간의 링크들을 식별하기 위해 유용할 수 있다. 이는 포지티브 토큰들을 식별하기 위해 사용되는, 유사하나 구별되는 측정치를 준다.
네트워크 해석의 결과들은 소정 실시예들에 있어서, 토큰 대표 스토어(127) 및 이웃 해석 스토어(128)를 포함하는 네트워크 해석 스토어들(126)의 집합에 저장될 수 있다. 토큰들 및 그들의 연관된 토큰 대표들은 토큰 대표 스토어(127)에 저장될 수 있다. 이웃 해석 스토어(128)는 포지티브 토큰들, 포지티브 토큰들의 변형 쌍들, 및 정규 이웃들을 포함하는 네트워크 해석으로부터 수집된 정보를 포함할 수 있다.
1.6 클러스터 승인 프로세스 개요
도 1g는 클러스터 승인 엔진(190)의 예시의 구성요소들을 도시한다. 클러스터 멤버쉽 결정들은 사용자 인터페이스(104)를 이용하여 사용자(102)에 의해 검토될 수 있다. 하나의 레코드가 가능한 멤버가 되어질 하나 이상의 클러스터에 충분히 가까운 앰비규어스 클러스터 멤버쉽 결정들은 사용자(102)에 의해 해석되고 클러스터링 엔진(130)에 의해 플래깅될 수 있다. 엔진(190)의 도시된 구성요소들은 사용자 입력에 의해 초기화될 수 있는 액션들에 대응한다.
레코드는 주어진 클러스터의 멤버로서 확인될 수 있다(192). 연관되고 확인된 클러스터의 클러스터 id 및 레코드의 유니크한 레코드 식별자를 페어링하는 결정은 클러스터 스토어들(170) 내의 확인 또는 제외된 스토어(172) 내에 저장될 수 있다. 확인된 레코드가 확인 또는 제외된 스토어(172) 내의 (확인된 세트 내의) 그것의 유니크한 레코드 식별자의 표현에 의해 명백해지듯이 클러스터링 엔진(130)에 공개된다면, 확인된 클러스터의 클러스터 id는 추가적인 프로세싱 없이 리포팅될 것이다.
레코드는 주어진 클러스터로부터 제외될 수 있다(194). 결정은 클러스터 스토어들(170) 내의 확인 또는 제외된 스토어(172) 내에 저장될 수 있다. 만약 제외된 레코드가 클러스터링 엔진(130)에 다시 공개된다면, 그것은 제외된 클러스터 내의 멤버쉽으로부터 차단될 것이고, 다른, 가능하게 새로운 클러스터에 필수적으로 할당될 것이다.
레코드들은 다른 클러스터들로 재매핑될 수 있다(196). 특히, 클러스터들은 새로운 클러스터들로 하나 이상의 레코드들을 할당함으로써 둘 이상의 부분들로 스플리팅될 수 있다(197). 많은 경우들에 있어서, 구별되는 레코드들의 선택을 재매핑하는 것은 단지 필요하고, 재프로세싱 중에 원본 클러스터 프라이머리 레코드보다 그러한 레코드들에 더 유사한 레코드들이 그것의 새로운 클러스터에 재매핑되는 레코드를 따를 것이다. 클러스터들은 또한, 현재 클러스터로 하나 이상의 레코드들을 재매핑함으로써 하나의 클러스터로 병합될 수 있다(198). 다시, 많은 경우들에 있어서, 재클러스터링에 앞서 구별되는 레코드들의 선택을 재매핑하는 것은 단지 필요하다.
2. 예시들
2.1 변형 프로파일러 및 삭제-조인 절차
변형 프로파일러(110)는 변형들의 쌍들을 식별하고 그들의 유사도를 측정하며, 변형 프로파일러 스토어들(126) 내에 변형 토큰들의 쌍 및 그들의 유사도 스코어를 저장한다. 소정 실시예들에 있어서, 변형 프로파일러(110)는 토큰들의 모든 쌍들간의 편집 거리를 계산하고, 편집 거리("유사도 스코어")가 미리 결정된 임계값보다 작은 토큰들의 그러한 쌍들을 저장한다. 레벤슈타인 편집 거리는 하나의 토큰을 다른 것으로 변화시키기 위해 요구되는 삽입들, 삭제들, 및/또는 대체들의 최소 수를 카운팅하고 인쇄상의 유사도의 측정치를 넓게 이용한다. 불행히도, 토큰들의 모든 쌍들을 비교하는 접근법은 토큰 쌍들의 대부분이 유사도를 갖지 않고, 따라서 많은 계산적인 노력이 극미한 이익으로 확장될 수 있기 때문에, 불충분하다.
삭제-조인 절차는 레벤슈타인 편집 거리만큼의, 그러나 상대적으로 가까운 토큰들만을 비교하기 위해 디자인된, 인쇄상의 변형에 기반하여 토큰들의 유사도를 측정하고, 따라서 많은 연관되지 않은 토큰들을 고려하는 계산적인 비용을 절감한다. 이는 "Managing an Archive for Approximate String Matching"의 제목의 US 공개 특허 2009/0182728에 전부 설명된다.
소정 실시예들에 있어서, 삭제-조인 절차는 다음의 방식으로 진행된다. (예컨대, 주어진 소스, 필드, 및/또는 문맥에 대한)토큰 사전의 부분 또는 토큰 사전(즉, 카탈로그 또는 토큰의 리스트) 내의 각각의 토큰에 대해, 토큰으로부터 단일 문자를 삭제함으로써 형성되는 모든 변형이 생성된다. 주어진 토큰들에 대한 이러한 "삭제 세트"는 원본 토큰을 식별하는 키("token_key"), 원본 토큰("original"), 삭제 변형 토큰("deletion_var"), 및 원본 토큰으로부터 삭제되었던 문자의 위치("deletion_pos")를 각각 갖는 엔트리들의 리스트를 포함한다. 삭제 세트들의 집합은 토큰 사전을 따라 변형 프로파일러 스토어들(115) 내에 저장될 수 있고, 또는 변형 프로파일러 스토어들(115) 내에 또한 저장된 변형 쌍들을 생성하기 위해, 변형 프로파일링 엔진(114)에 의해 사용되어진 후 폐지될 수 있다.
원본 토큰은 0의 삭제된 문자 위치를 가지고, 삭제 변형들을 따라, 삭제 세트 내에 포함될 수 있다. 예컨대, 다음은 토큰 LONDON에 대한 삭제 세트이다:
token_key deletion_pos deletion_var original
1 0 LONDON LONDON
1 1 ONDON LONDON
1 2 LNDON LONDON
1 3 LODON LONDON
1 4 LONDN LONDON
1 5 LONDO LONDON
{token_key, deletion_pos}가 주어진 삭제 변형을 식별하는 유니크한 "키(key)"임을 주목해야 한다.
삭제-조인 절차는 하나 이상의 삭제로 이어질 수 있다. 소정 예시들에 있어서, 삭제 위치들의 시퀀스는 스코어링 유사도 내에서 사용을 위해 기록될 수 있다. 다른 실시예들에 있어서, 삭제 위치들은 유지될 수 없고, 스코어링은 대체 절차를 사용하여 행해질 수 있다.
삭제-조인 절차와 유사한 절차는 deletion_var 토큰 상에서 조인(또는 룩업) 동작을 수행함으로써 하나 이상의 사전들 내의 토큰들 간의 변형 매치들을 결정하는데 사용될 수 있다. 조인/룩업 동작은 빠르고 선택적이다. deletion_var 토큰을 공유하는 두 토큰들은 (삭제-조인 1 변형들을 위한) 각 토큰 내에서 하나의 삭제에 의해 고작 달라질 수 있고, 따라서, 그들은 편집 거리에서 "가깝다". 이는 삭제-조인 절차의 잠재적인 이점을 제공한다: 스코어링할 가치가 충분히 있을 정도로 가까운 그것들을 식별함으로써 스코어링을 요구하는 쌍들의 수를 감소시키는 것. 소정 실시예들에 있어서, deletion_var 상에서 페어링되는 토큰들 간의 유사도 스코어는 미리 정의된 또는 사용자-특정된 유사도 함수를 이용하여 연관된 원본 토큰들 사이에서 직접 계산된다. 예컨대, 두 페어링된 토큰들은 레벤슈타인 편집 거리 또는 소정 다른 편집 거리 측정을 이용하여 그들의 편집 거리를 계산함으로써 비교될 수 있다. 삭제-조인 절차의 이러한 응용은 사용자가 임의의 원하는 유사도 스코어링 절차를 이용하는 것을 가능케하는 동안 스코어를 내기 위해 쌍들의 수를 감소시키는 잠재적인 이점을 갖는다.
다른 실시예들에 있어서, 변형 페어링의 질은 삭제된 문자들의 위치들을 비교함으로써 스코어링된다. 이는 (레벤슈타인 편집 거리 계산이 토큰 쌍을 갖는 스크랫치로부터 효율적으로 시작됨과 같이) 삭제-조인 절차로부터 수집되는 정보를 레버리지하는(leverages) 편집 거리와 같은 측정치의 신속한 계산을 제공하고, 페어링의 측징을 강조하기 위해 스코어의 커스터머제이션(customization)을 허용한다. 유사도 스코어를 계산하기 위한 절차의 일 예시에 있어서, 포인트들은 다음과 같이 서로 다른 타입의 변화들에 대해 할당될 수 있다 : 삭제(또는 삽입)에 1 포인트, 첫 번째 글자(letter)를 변경하는데 1 포인트, 마지막 글자를 변경하는데 1 포인트, 삭제된 문자들이 하나 이상의 위치에 의해 분리되는 경우 1 포인트. 각각의 타입의 변경과 연관된 가중치는 조정가능하다. 만약 하나의 토큰의 삭제 위치가 0이고 다른 것은 그렇지 않다면, 이는 단일 삽입 또는 삭제이다. 만약 삭제 위치가 동일하다면, 이는 대체이다. 만약 삭제 위치가 1만큼 다르다면, 그것은 운송(transpotation)이다. 동일한 deletion_pos 및 token_key를 갖는 매치들은 이것들이 정확한 매치들이기 때문에 무시된다. 동일한 토큰 내의 페어링된 글자의 삭제를 지시하는 매치들은 또한, 정확한 매치(예컨대, MEET는 하나의 인스턴스 내에서 문자 2 및 두 번째 인스턴스에서 문자 3을 삭제함으로써 MET로 변형될 수 있음)로서 무시된다.
다음은 원본 토큰들 LONDON, LODON, LOMDON, LODNON, LODOON에 대한 각각의 삭제 세트들로부터 선택된 엔트리들의 예시이다.
word_key deletion_pos deletion_var original
1 0 LONDON LONDON
1 3 LODON LONDON
1 4 LONON LONDON
2 0 LODON LODON
3 0 LOMDON LOMDON
3 3 LODON LOMDON
4 0 LODNON LODNON
4 3 LONON LODNON
4 4 LODON LODNON
5 4 LODON LODOON
이 예시에 있어서, 삭제 변형 엔트리들의 다수는 그들이 흥미있는 매치들로 이끌지 않기 때문에, 억제되었다. 조인 동작은 둘 모두 deletion_var의 동일한 값을 가질 때, 첫 번째 엔트리(first entry)와 두 번째 엔트리(second entry)를 페어링한다. 원본 토큰들의 결과 변형 쌍들은:
First entry Second entry Variant pairs(변형 쌍)
1 3 LODON LONDON 2 0 LODON LODON LONDON LODON
1 3 LODON LONDON 3 3 LODON LOMDON LONDON LOMDON
1 3 LODON LONDON 4 4 LODON LODNON LONDON LODNON
1 4 LONON LONDON 4 3 LONON LODNON LONDON LODNON
1 3 LODON LONDON 5 4 LODON LODOON LONDON LODOON
2 0 LODON LODON 3 3 LODON LOMDON LODON LOMDON
각각, 위의 예시 변형 매치들은 서로 다른 경로, 분리 삽입 및 삭제 및 토큰0-삽입(또는 토큰1-삭제)에 의해 획득되는 토큰0-삭제, 애체, 운송, 이동을 나타낸다. 변형 매치들을 나타내는 어카이브 내의 토큰들의 각각의 쌍은 매치의 질을 지시하는 연관된 유사도 스코어를 갖는다.
전술한 스코어링을 이용하여, 이러한 쌍들을 위한 유사도 스코어들은 다음과 같다:
Variant pair(변형 쌍) Similarity score(유사도 스코어)
LONDON LODON 1
LONDON LOMDON 1
LONDON LODNON 2
LONDON LODNON 2
LONDON LODOON 3
LODON LOMDON 1
이러한 경우들에 있어서, 유사도 스코어는 변형 쌍들 간의 편집 거리에 효율적으로 대응한다. 단일-문자 삭제에 기반한 삭제-조인 절차는 모든 편집 거리 1 변형 쌍들(삽입, 삭제 및 대체) 및 소정 편집 거리 2 변형 쌍들(이동)을 발견한다. 분리된 삽입-삭제에 대한 스코어는 deletion_pos가 하나 이상에 의해 분리되었기 때문에, 추가적인 패널티에 의해 커스터마이즈되었다.
쌍에 대한 유사도 스코어를 계산한 후에, 매치 결정은 페어링의 본질 상의 컨디션 또는 유사도 스코어에 임계값을 적용함으로써 이루어진다. 예컨대, 만약 유사도 스코어가 2 또는 그보다 작다면, 변형 페어링이 변형 매치를 나타내는 유사도 스코어에 기반한 룰이 여기 있을 수 있고, 그에 따라 변형 매치로 식별되어짐으로부터 분리된 삽입-삭제 페어링 "LONDON LODOON"이 제외된다.
페어링의 본질 상의 컨디션을 적용하는 예시로서, 페어링이 삽입, 삭제, 대체인지, 또는 변경된 글자가 최초 또는 마지막 글자였는지, 또는 deletion_pos가 하나 이상의 위치에 의해 분리되었는지에 대한 정보를 인코딩하는 매치 코드로 불리는 코드가 구성된다. 소정 실시예들에 있어서, 이러한 매치 코드는, 다른 것들에 있어서, 그것이 각각의 컨디션을 인코딩하는 서브스트링들의 연결로 구성되거나, 또는 아마도 단순히 정보를 홀딩하는 레코드 구조로 구성되는 스트링인 동안, 식별되는 각각의 컨디션에 대해 세팅되는 비트들의 조합 또는 비트를 갖는 비트맵으로써 구성될 수 있다. 매치 코드는 실제 스코어를 계산하기 위한 함수를 정의하거나 구체적인 가중치들을 할당함 없이, 유사도 스코어로 제공할 수 있는 정보를 인코딩하는 데이터 패턴 코드이다. 이는 매치를 허용하지 않거나 식별하는 일반적인 컨디션들이 스코어를 계산하는 단계를 통해 통과해야만 하는 것 없이 매치 코드로 직접 적용되어지도록 허용한다. 예컨대, 여기서, 변형 매치가 매치 코드에 의해 지시되는 분리된 삽입-삭제를 갖지 않는 임의의 변형 페어링일 수 있다.
2.2 변형-검색
변형-검색 연산은 후보 검색 엔진(140)의 소정 실시예들의 연산을 기초로 한다. 도 2a 내지 2d는 변형-검색 연산의 예시들을 도시한다. 도 2a를 참조하면, 로우 쿼리(raw query)(200)는 프로세싱을 위해 독출된다. 예시에 있어서, 이는 값 "82536"을 갖는 정부 id와 같은 수(numeric) 필드이다. 요구사항은 정부 id가 많아도 하나의 대체에 의해 로우 쿼리와 다른 데이터셋(220) 내의 변형 매칭 정부 id들을 찾는 것이다. 이는 두 개의 매칭 정부 id들이 1보다 같거나 적은 해밍 거리(hamming distance)를 갖음을 요구하는 것과 동일하다. 해밍 거리는 동일한 길이의 두 개의 정렬된 문자 시퀀스들(때때로, 길이들에 있어서 차이를 부가함으로써 동일하지 않은 길이의 정렬된 시퀀스들로 뻗어 있는) 사이의 미스매치된 문자들의 수를 카운트한다.
데이터셋(220)은 예컨대, 메모리 내의 조인 연산 동안, 메모리 내에서 홀딩된 일시적인 데이터셋 또는 디스크 상에 홀딩된 레퍼런스 데이터셋일 수 있다.
삭제-조인 절차의 첫 번째 단계는 확장된 쿼리(210)로 불리는 삭제 셋을 생성시키기 위해(205) 로우 쿼리(200)로, 쿼리 확장 절차로서, 적용된다. 확장된 쿼리(210)는 두 개의 값들을 각각 포함하는 엔트리들을 포함한다: ("del_pos"로 라벨링되는 헤딩 아래) deletion_pos의 값, 및 ("del_var" 라벨링된 헤딩 아래) deletion_var 토큰. 유사하게, 검색-엔트리 확장 절차는 검색 스토어(230)에 기록되는 삭제 셋(225)을 생성하기 위해 데이터셋(220) 내의 각각의 엔트리에 적용된다.
도 2b를 참조하면, 확장된 쿼리(210) 내의 각각의 엔트리는 매칭 엔트리(232)를 발견하기 위해 검색 스토어(230) 내에서 찾아진다. 매칭 엔트리(232) 내의 키(235)는 추가적인 프로세싱을 위한 데이터 셋 레코드를 검색하기 위해 데이터셋(220) 내에서 찾아진다(237). 데이터 셋(220) 내의 매칭 레코드들의 집합은 id 필드가 로우 쿼리 id(200)와 함께 1 보다 같거나 적은 해밍 거리를 갖는 요구사항을 만족하는 모든 변형 매치들이다. 실시예들에 따르면, 로우 쿼리 id "82536"은 "82436" 및 "82538" 둘 모두로의 해밍 거리 1 매치이지만, "82536"은 아니다(해밍 거리 2).
도 2c를 참조하면, id 상의 매칭 요구사항은 삭제-조인 1 매치들을 허용하기 위해 릴렉스된다. 전술한 바와 같이, 이는 분리된 삽입-삭제 및 이동들과 마찬가지로, 모든 편집 거리 1 매치들을 포함한다. 로우 쿼리(200) 및 데이터셋(220)은 앞서와 같고, 확장된 쿼리(210) 및 검색 스토어(230)는 앞서와 같이, 데이터 셋(220) 내의 각각의 id 및 로우 쿼리(200)으로부터의 삭제 셋을 형성함으로써 구성된다. 이러한 예시에 있어서, 확장된 쿼리로부터의 룩업은 del_var만을 사용한다. 이는 앞선 해밍 거리 1 매치들 및 새로운 매치(236) 둘 모두 찾는다. 매치 엔트리(236) 내의 키(237)는 추가적인 프로세싱을 위한 데이터셋 레코드를 검색하기 위해 데이터셋(220) 내에서 찾아진다(238). 예시에 있어서, 로우 쿼리 id "82536"은 이동과 연관된 데이터셋 id "85236"에 삭제-조인 1 매치이다.
도 2d는 일반적인 예시를 도시한다. 로우 쿼리(200G)는 확장된 쿼리(210G)를 주기 위해, 쿼리 확장(205G)를 통해 통과한다. 쿼리 확장(205G)는 로우 쿼리가 유도되었던 쿼리 레코드로부터의 부가 정보 또는 선택적으로 원본 로우 쿼리 및 하나 이상의 검색 키들로 구성되는 둘 이상의 엔트리들을 생성한다. 데이터셋(220G) 내의 각각의 엔트리는 검색 스토어(230G) 내의 둘 이상의 엔트리들로 검색-엔트리 확장 절차에 의해 확장된다(225G). 검색-엔트리 확장(225G)은 선택적으로 데이터셋 레코드로부터의 부가 정보 및 하나 이상의 검색 키들로 구성되는 둘 이상의 엔트리들을 생성한다. 검색-엔트리 확장(225G)는 데이터셋(220) 내에 복사 키들이 있을 수 있기 때문에, 데이터셋(220G) 내의 각각의 엔트리에 대한 구별되는 검색-엔트리들을 생성할 필요가 없다. 검색-엔트리 확장 절차(225G)는 쿼리 확장 절차(205G)로서 동일한 확장 절차일 필요는 없다.
각각의 확장된 쿼리 검색 키(들)(231G)은 매칭 엔트리(233G)를 찾기 위해 검색 스토어(230G) 내에서 변형-룩업 절차(232G)를사용하여 찾아진다. 룩업 절차(232G)는 쿼리 검색 키(231G) 상에서 계산들을 수행할 수 있고, 따라서, 그것은 검색-엔트리 검색 키(233G)와 동일할 필요는 없다. 매칭된 검색-엔트리 검색 키(233G)와 대응하는 데이터셋 키(235G)는 데이터셋 키(235G)를 갖는 데이터셋(220G) 내의 모든 레코드들을 검색하기 위해 및 찾기 위해(236G) 사용된다.
2.3 변형 네트워크 해석
2.3.1 변형 이웃들
변형 이웃은 유사어들, 약어들, 문화적 변형들, 등등과 같은 외부 데이터(106)에 의해 특정되는 변형 페어링들을 가능하게 포함하는 변형 페어링들의 시퀀스(또한 변형 관계들로 불림)에 의해 관련되는 토큰들의 세트이다. 일 실시예에 있어서, 변형 프로파일러(110)는 많아도 하나의 삽입 및 하나의 삭제에 의해 다른 인쇄상의 변형들을 식별하고 검출하기 위해 삭제-조인 절차를 사용하여 클러스터링되어지도록 데이터 소스(100)를 프로파일링한다. 이는 (예컨대, "hello" 및 "hillo"가 삭제-조인 1 변형들인 것과 같이) 분리된 삽입/삭제 및 이동과 마찬가지로, 단일 삽입, 삭제, 및 대체를 커버한다. 변형 프로파일러 스토어들(115)에 있어서, 각각의 토큰은 더 많은 레코드들이 프로세싱되듯이 온라인으로 업데이트될 수 있는 하나 이상의 변형들의 연관된 리스트를 갖는다. 그러나, 모든 변형은 또한, 그것 자신의 변형들을 갖는 토큰이다. 삭제-조인 절차, 또는 다른 유사도 측정에 의해 형성된 변형 페어링들의 다음의 시퀀스에 의해 획득되는 토큰들의 세트는 이웃을 정의한다. 이러한 세트의 폐쇄는 폐쇄 이웃으로 불리고, 토큰들이 노드들이고 변형 페어링들이 에지들인 그래픽적 변형 네트워크 내의 연결된 구성요소를 형성한다. 예컨대, 유사어들, 대체 스펠링등, 문화적 변형들, 등등과 같은 외부 데이터(106) 또는 사용자-공급 입력들로부터 획득되는 변형 토큰 쌍들을 갖는 유사 변형 쌍들을 보완하는 것은 관련된 토큰들의 더 큰 이웃들로 이끈다.
도 3a에 있어서, 변형 어카이브(300)는 데이터셋의 레코드들 내에 나타나는 토큰들의 리스트를 포함한다; 각 토큰("토큰(token)"으로 라벨링됨)은 데이터 셋의 필드(또는 문맥) 내에서 그것이 발생하는 시간들의 수(예컨대, 그것이 필드 내에서 발생하는 레코드들의 수)의 연관된 카운트("카운트(count)"로 라벨링됨), 및 변형 토큰들 각각의 리스트("변형(variant)"을 라벨링됨), 및 데이터셋의 동일한 필드(또는 문맥) 내에서 그들이 발생하는 시간들의 수("variant_count"로 라벨링됨)를 갖는다. 변형 어카이브(300)의 콘텐트에 대응하는 변형 이웃 네트워크 다이어그램(310)은 그것의 변형들의 각각을 갖는 모든 토큰을 변결하고 노드로써 모든 토큰을 취함으로써 구성될 수 있다. 각 노드는 그것의 카운트와 연관된다. 소정 실시예들에 있어서, 더 높은 카운트들을 갖는 토큰들이 디스플레이 상에서 더 높게 있도록 하기 위해(예컨대, "count" 라벨링된 수직 축에 따라) 노드들을 배열하는 것은 일반적인 및 보기 드문 단어들이 쉽게 구별되어지도록 허용하는 유용한 그래픽적 뷰를 제공한다. 변형 이웃 네트워크의 연결된 구성요소는 그 연결된 셋 내의 토큰들에 대한 유사도 관계의 이행적인(transitive) 폐쇄이고 방향성의 비순환식 그래프이다. 데이터셋에 대한 풀리(fully) 네트워크 다이어그램은 이러한 종류의 많은 연결되지 않는 그래프들을 포함할 수 있다.
2.3.2 토큰 대표들
토큰 대표는 연결된 이웃 중 선택된 토큰이다. 소정 실시예들에 있어서, 이웃 내의 모든 토큰은 그 이웃에 대한 토큰 대표에 의해 대체될 수 있다. 이는 토큰 대표에 대한 검색이 이웃 내의 임의의 변형와 연관된 모든 레코드들을 반환할 효과를 갖는다. 이는 그것이 변형들을 너머 반복의 변형 검색 동안 워크로드를 감소시키기 때문에 바람직하다. 단순한 변형 검색은 각 토큰에 대해 검색하는 것 및 그리고는, 그것의 변형들의 각각에 대해 검색하는 것이다. 변형들에 대한 반복은 토큰이 충돌하는 모든 시간에서 행해지도록 해야만 한다. 만약 이웃 내의 모든 변형 토큰들이 토큰 대표와 대체된다면, 변형 토큰들 중 어떠한 각각의 시간은 충돌되고, 토큰 대표 상의 단일 룩업은 모든 변형 매치들을 반환하는데 충분하다.
게다가, 변형 토큰들의 이웃과 함께 작업하는 것(working)은 변형 검색으로 이행성(transitivity)의 측정을 제공할 수 있다. 변형-쌍 관계는 만약 B가 A와 변형-쌍이고 C가 B와 변형-쌍인 경우, C가 A와 변형-쌍일 필요는 없기 때문에, 이행성이 아니다. 예컨대, 삭제-조인 1 변형 페어링을 고려해보자. 토큰 "chicago"가 "chicago#"의 변형이고, "chicag0"가 "chicago"의 변형이여도, "chicag0"가 "chicago#"의 삭제-조인 1 변형은 아니다.
그러나, 변형 검색의 목적을 위해, A 또는 B 상에서의 검색시 발견되는 레코드들의 세트가 동일한 것은 바람직하다. 이는 만약 A가 B의 드문 변형인 경우, A에 의해 의도되는 "실제" 토큰과 연관된 레코드들의 더 많은 것이 B 상에서 검색에 의해 발견되는 것이기 때문이다. 예컨대, "chicago#" 상에서의 검색 및 그것의 삭제-조인 1 변형들은 "chicago" 매치들을 찾을 것이고, "chicag0"와 같은 "chicago"의 다른 매치들은 놓칠 것이다.
변형-페어링이 이행성이 아니기 때문에, 보다 많은 이행성을 달성하기 위한 단 하나의 방법은 A 또는 B 중 하나에 대한 검색시 포함되는 토큰들의 이웃을 확대하는 것이다. 그리고는, 이웃에 대한 토큰 대표 상의 검색은 이웃 내의 모든 토큰들이 동일한 레코드들을 반환하는 것을 보장한다. 물론, 검색이 개별 토큰들의 로컬 이웃 아래서 확장되어지기 때문에, 검색된 토큰들의 소정 쌍들은 토큰들이 너무 유사하지 않아서 매치에 실패할 수 있다. 이는 연관된 레코드들이 다른 필드들로부터 강한 스코어링의 기반하여 여전히 매치할 수 있기 때문에 수락 가능하다. 이러한 매치들은 검색에 의해 반환되는 적합한 후보가 아닌 것으로 발견될 수 없다.
폐쇄 이웃은 선택된 토큰에 대한 변형 관계의 이행성 폐쇄에 의해 발견된 이웃이고, 즉, 그것이 변형 페어링들의 체인(chain)에 의해 도달될 수 있는 모든 토큰들의 세트이다. 폐쇄 이웃 내의 임의의 토큰은 그것이 이웃 내의 모든 토큰들에 대한 토큰 대표로 사용될 때까지, 토큰 대표로서 선택될 수 있다. 그러나, 폐쇄 이웃들은 더 많은 변형들이, 그들이 합체되도록 야기하는 다른 연결되지 않은 폐쇄 이웃들 간의 갭들(gaps) 내에서 채워지는 것을 야기하기 때문에, 보다 다양하고 더 많이 성장하는 데이터셋들만큼 쓸 수 없을만큼 크게 성장할 수 있다.
소정 실시예들에 있어서, 토큰 대표는 더 높은 카운트를 갖는 변형을 갖지 않는 토큰이다. 도 3a에 있어서, 정규 이웃(320)은 토큰 대표로부터 시작됨으로써 및 같거나 더 적은 카운트의 다른 것으로 하나의 토큰을 연결시키는 링크들을 따름으로써 달성될 수 있는 모든 토큰들을 포함한다. 토큰은 하나 이상의 정규 이웃을 소유할 수 있다. 상기 토큰은 정규 이웃의 대표 토큰이다.
도 3b에 도시된 일 실시예에 있어서, 토큰 대표들 및 정규 이웃들은 카운트에 의해 하강하는 순서로 변형 어카이브(300)를 먼저 정렬하고, variant_count < 비정규(pruned) 변형 어카이브(330)를 획득하기 위한 카운트인 모은 변형들을 폐기함으로써 계산될 수 있다. 어떠한 변형들도 갖지 않는 엔트리들은 토큰 대표들이고, 토큰-대표 벡터 스토어(240)에 즉시 더해진다. 정렬된 변형 어카이브 내의 레코드들이 프로세싱되는 때, 각 토큰은 그것 자신으로 구성되는 토큰 벡터 및 토큰으로써 토큰-대표 벡터에 기록된다. 각각의 비-토큰-대표에 대해, 그것의 변형들 각각과 연관된 토큰-대표 벡터는 토큰 파일 내에서 찾아진다(342). 이러한 토큰 벡터들의 연합은 구별되는 토큰-대표들(344)의 세트를 찾기 위해 계산되고, 결과 토큰-대표 벡터는 토큰(346)을 따라 토큰 파일에 기록된다.
다른 실시예에 있어서, 토큰 대표들은, 어간-관련(stem-related) 토큰들이 동일한 정규 이웃 내에서 변형들로써 보유될 수 있고, 더 높은 카운트를 갖는 어간-관련 토큰이 토큰 대표인 경우에 있어서, 스테밍(stemming)(예컨대, 복수들)에 의해 토큰들이 관련되는 때를 제외하고, 소정 토큰 임계값보다 큰 카운트를 갖는 모든 토큰들로써 식별될 수 있다. 이는 일반 토큰들 간의 링크들을 차단시키는 것을 돕고, 정규 이웃들의 크기를 줄인다. 토큰들 및 정규 이웃들을 찾기 위해, 이전 알고리즘은 각 토큰이 토큰 임계값보다 큰 카운트를 갖는 토큰들의 모든 페어링들에 대해, 변형 페어링들이 차단되며, 이전에 페어링된 토큰들이 토큰 대표들, 즉, 더 높은 카운트의 어떠한 변형들도 갖지 않는 토큰들로서 토큰-벡터 파일에 더해지는 변형으로 적용될 수 있다.
이러한 실시예의 변형은 토큰 리스트 또는 특정된 사전에 속하는 모든 토큰들을 토큰 대표들로써 정의하는 것이다(어간-관련 토큰들에 대한 경고와 함께 다시). 그리고는 토큰들은 일반적이지 않을 필요가 없다; 그들은 소정 권한에 의해 구별되는 토큰들로써 인식되어질 필요가 단순히 있다.
소정 실시예들에 있어서, 유사어들, 약어들, 문화적 변형들 등등과 같은 외부 데이터(106)에 기반하여 페어링되는 변형 토큰들은 그들이 정규 이웃(효과적으로, 페어링을 턴 오프하면서)으로부터 그들을 제외할 수 있도록 하는 것이 가치있는 때, 환경들이 있음에도 불구하고, 페어링되는 것과 같이, 동일한 정규 이웃의 멤버들로 고려될 수 있다. 변형 프로파일러(110) 내에서 사용되는 특정 유사도 측정들로부터 또는 외부 데이터(106)으로부터 언급되는 그들의 원본을 갖는 토큰을 라벨링하는 것은 임의의 소스로부터의 페어링된 변형 토큰들의 처리를 제어하는 효과적인 수단을 제공한다.
2.4 세그멘테이션
도 1b의 실시예에 있어서, 토큰화된 레코드들(118)로부터 또는 데이터 소스들(100)로부터 독출되는 데이터 레코드는 프로세싱을 위해 클러스터링 엔진(130)에 제공된다. 소정 실시예들에 있어서, 데이터 레코드들은 세크멘테이션 엔진(132)에 전송될 수 있다. 세그멘테이션 엔진은 세그멘테이션 값이라 불리는 값에 기반하여 데이터 레코드에 세그먼트 식별자를 할당한다. 그리고는, 레코드들은 서로 다른 수신 프로세싱 엔티티들로 전송되어질 세그먼트 식별자들에 기반하여 병렬 파티셔너(134)에 의해 파티셔닝되고, 여기서, 동일한 세그멘트 식별자를 갖는 모든 레코드가 동일한 프로세싱 엔티티로 전송된다. 프로세싱 엔티티는 예컨대, CPU(예컨대, 멀티코어 스로세서 내의 코어) 또는 컴퓨터, 또는 CPU 상에서 실행하는 계산적인 프로세스 또는 쓰레드(thread)과 같은 프로세싱 노드를 포함할 수 있다.
소정 실시예들에 있어서, 세그먼트 값은, 런타임에 공급되는 정보(예컨대, 데이터 셋의 이름 또는 데이터를 프로세싱하는 데이터 센터의 위치) 및/또는 토큰화된 레코드(118) 또는 원본 레코드(100)에 적용되는, 사용자-특정 룰셋 내에서 정의되는 함수들을 아마 사용하여, 사용자-특정 표현으로부터 유도될 것이다. 동일한 세그먼트 값들을 갖는 레코드들은 동일한 세크먼트 식별자를 수신하나(만약 그들이 동일한 표현을 사용하여 유도된다면), 서로 다른 세그먼트 값들을 갖는 레코드들은 서로 다른 세그먼트 식별자들을 수신하거나 또한 세그멘테이션 스킴에 의존하여 동일한 세그먼트 식별자를 수신할 수 있다. 예컨대, 세그먼트 값은 (레코드 내의 필드로써 명백하거나 또는 레코드를 프로세싱하는 데이터 센터의 위치에 기반하여 불명확할 수 있는) 데이터 레코드의 원본의 국가를 나타낼 수 있다. 소정 실시예들에 있어서, 전략 식별자는 세그먼트 식별자들의 세트를 구별하는데 사용된다. 예컨대, 데이터 레코드의 원본 국가는 하나의 전략 식별자를 가질 수 있는 반면, 레코드 내에서 이름지어진 개인의 탄생 국가는 서로 다른 것을 가질 수 있다. 이는 그들 간의 대응관계가 보존되어지는 것을 요구하지 않고, 세그먼트 식별자들 및 세그먼트 값들이 중첩하는 범위들에서 실행하는 것을 허용한다.
세그멘테이션의 하나의 사용은 (클러스터링 또는 다른 매칭 연산 동안) 매치를 찾기 위해 비교되어야만 하는 레코드들의 수를 줄이기 위해 레코드들의 더 큰 세트로부터 레코드들의 단일 세그먼트를 격리하는 것이다 - 정확하게 매칭 세그먼트 식별자들(및 존재한다면, 전략 식별자)를 갖는 레코드들만이 매칭을 위한 후보들이다. 이러한 예시에 있어서, 세그멘테이션은 클러스터링 알고리즘의 병렬화를 위한 다중 프로세싱 엔트리들로 레코드들의 세그먼트들을 파티셔닝함으로써 따라온다. 여기에 설명된 클러스터링 알고리즘은 세그멘테이션에 기반하여 클러스터링 알고리즘의 실행을 병렬화하는데 성능 이익이 존재하기 때문에, 레코드들의 수가 세그멘테이션 동안 증가되어지도록 허용할 수 있다. 결과로서, 세그먼트 식별자(즉, 동일한 세그먼트 내의)를 공유하는 레코드들의 세트는 세그멘테이션이 레코드들을 격리하는데 사용되는 때보다 훨씬 더 클 수 있다. 성능 이익을 달성하기 위해, 구별되는 세그먼트 값들의 수는 단지 파티셔닝 이후 프로세싱 엔티티들 사이에서 러프하게(roughly) 밸런싱된 분산을 주기에 충분하게 커야만 한다. 밸런싱된 분산은 다른 것들보다 소정 병렬 프로세싱 시스템에 대해 더 결정적일 수 있다. 또한, 분산 내의 소정 종류의 스큐(다른 것들보다 소정 프로세싱 엔티티들에 할당된 더 많은 레코드들)는 오버파티셔닝(overpartitioning)에 의해 처리될 수 있다: 프로세싱 엔티티들보다 더 많은 피티션들을 사용하여. 오버파티셔닝을 가지고, 각각의 프로세싱 노드는, 파티션들이 넓게 서로 다른 크기들일지라도, 유사한 양의 작업을 수신할 것이다. 파티셔너는 또한 잠재적인 스큐를 줄이기 위해, 하나 이상의 정확하게 매치된 필드들을 따라 하나 이상의 근사하게 매치된 필드들(또는 그들에게 적용되는 해쉬 함수)로 구성되는 멀티파트(multipart) 키에 의해 파티션할 수 있다.
소정 실시예들에 있어서, 세그먼트 값의 선택은 클러스터 멤버쉽 기준의 부분을 형성하는 정확한 기준에 기반한다. 예컨대, 계좌 레코드들을 클러스터링하는 때, 개인 id 필드들에 덧붙여, 은행은 특정 타입들의 계좌들에 대한 레코드들의 클러스터들에 관심이 있을 수 있다. 특히, 저축 계좌들에 대한 레코드들이 개별적으로 클러스터링될 수 있는 반면, 당좌 계정(current account)(예컨대, 체킹 계좌들)에 대한 레코드들은 함께 클러스터링될 수 있다. 이러한 종류의 세그멘케이션은 때때로 불명확하고, 당좌 계정 및 저축 계좌 레코드들은 서로 다른 소스들로부터 생성되고 이미 격리된다. 소정 경우들에 있어서, 세그먼트 값으로써 사용될 수 있으나, 계좌의 본질을 정확하게 리포팅하기 위해 신뢰되어져야만 하는 데이터 레코드 내의 계좌 타입 식별자가 존재할 수 있다.
소정 실시예들에 있어서, 체크들을 확인하는 것은 세그멘테이션의 시점 또는 세크먼트 값이 신뢰할 만한지 검증하기 위한 멤버쉽 결정 동안 이후에 생성된다. 예컨대, 그것은 저축 계좌들의 계좌 수가 가능성의 특정 세트로부터 디지트들(digits)을 가지고 항상 시작되는 것일 수 있다. 만약 이러한 세트가 런타임에 알려진다면, 계좌가 진짜 저축 계좌인지는 세그멘테이션 전에 확인될 수 있다. 세트가 존재하나 검증된 값들이 알려지지 않다면, 프리픽스(prefix) 디지트들은 클러스터 멤버쉽 기준의 일부 또는 실제로 세그먼트 값의 일부일 수 있고, 클러스터 내에 나타난 계좌 숫자들 사이의 일관성은 클러스터 멤버쉽 결정의 일부로써 설정될 수 있다.
레코드가 특정 클러스터의 멤버로 되어질 것으로 결정된 이후, 레코드는 상기 특정 클러스터를 식별하는 cluster_id를 포함하도록 증강될 수 있다. 소정 실시예들에 있어서, 세그먼트 값(또는 때때로 세그먼트 식별자 자체)은 이전 클러스터링으로부터 cluster_id로 세팅될 수 있다. 이는 계층적인 클러스터링을 가능케 한다. 예컨대, 데이터 레코드들이 이름에 의해 원천적으로 클러스터링되었다면, 구별되는 정부 할당 식별자들을 갖지만, 유사한 이름을 공유하는 레코드들의 클러스터들을 찾기 위해 정부 할당 식별자에 의한 이후의 클러스터링은 세그먼트 값으로써 이름(name) cluster_id를 사용할 수 있다. 유사하지 않은 이름들을 갖는 레코드들은 그들이 동일한 클러스터의 멤버들일 수 없기 때문에 비교될 필요가 없다.
소정 실시예들에 있어서, 데이터 레코드들은 다수의 프로세싱 엔티티들을 통해 세그먼트 식별자에 의해 해쉬-파티셔닝될 수 있고, 따라서, 일반적인 세그먼트 식별자는 갖는 모든 레코드들은 단일 프로세싱 엔티티 내에서 함께 위치된다. 이는 세그먼트들 간의 통신이 요구되지 않기 때문에, 병렬 프로세싱을 가능케 한다.
2.4.1 복사된 세그멘테이션을 통한 병렬화
데이터 소스의 디스조인트(disjoint) 세그멘테이션의 부재 내에서의 병렬화는 임의의 두 변형 쌍 레코드들이 적어도 하나의 세그먼트 값을 공유해야만 함을 보장하는 세그멘테이션의 적합한 선택을 이용하고 데이터 소스(100)를 복사함으로써 달성될 수 있다. 세그먼트 값은 필드 값들의 조합 또는 필드값의 하나 이상의 프래그먼트들로 이루어질 수 있다. 세그먼트 값들의 세트는 적어도 하나의 세그먼트 값이 두 레코드들 사이의 모든 허용된 변형을 위해 두 레코드들에 의해 고유될 것이다. 도 4에 있어서, 소모된(exhaustive) 복사된 세그멘테이션의 프로세스가 도시된다. 만약, 하나가 이미 존재하지 않는다면, 데이터 소스(400)는 독출되고, 유니크 레코드 키는 모든 데이터 레코드(401)에 할당된다. 모든 데이터 레코드는 세그먼트 값들의 소모된 세트로부터의 각각의 세그먼트 값이 하나의 복사된 데이터 레코드(402)에 할당되는 시간에 충분하게 복사된다. (복사된 레코드들의 수는 각 레코드 내의 데이터에 의존할 수 있다.) 결과 데이터 레코드들은 복사(404)와 연관된 세그먼트 값에 의해 파티셔닝된다. 대체 클러스터 키들은 복사들(406)의 링크된 쌍들의 세트에 대한 각 프로세싱 엔티티 내에서 생성된다. 구성에 의해, 모든 허용가능한 변형은 세그먼트 키들이 소모되기 때문에, 소정 세그먼트 키의 피티션 내에서 검출될 것이다. 클러스터 키들의 슈퍼 세트는 다중 매치 조정 절차(408)를 따르는 각각의 클러스터에 대한 유니크한 cluster_key로 해석된다.
많아도 하나의 대체만큼 다를 수 있는 두 개의 정부 id들을 매칭하는 경우를 고려해보자. 세그먼트 값들의 소모된 세트는 먼저 정부 id 내의 홀수-넘버링된 위치들로부터 및 이후 짝수-넘버링된 위치들로부터의 디지트들(또는 보다 일반적으로 문자들)을 취함으로써 주어진다. 이러한 세트가 소모된다는 것은 임의의 단일 문자 대체가 홀수-넘버링된 또는 짝수 넘버링된 위치 중 어느 하나 내에서, 다만 둘 모두는 아니게, 존재해야만 하기 때문에, 쉽게 알 수 있다. 따라서, 다른 타입의 세그먼트 값은 단일 대체만에 의해 달라지는 두 레코드들에 동의해야만 한다. 예컨대, 123456 및 124456은 세그먼트 키들 (135, 246) 및 (146, 246)을 갖는다. 그들은 첫 번째 세그먼트 값에서 차이가 있지만, 두 번째에 동의한다.
도 5a 내지 5c는 이러한 경우에서의 전체 프로세스를 도시한다. 도 5a에 있어서, 데이터 레코드들(700)은 독출된다. 제 1 레코드(501)는 수적인 id "123456" 및 유니크 레코드 키 "r1"을 갖는다. 레코드들은 두번 복사되고(502), 예컨대, "135"와 같은 홀수-넘버링된 위치들로부터의 문자들과 "246"과 같은 짝수-넘버링된 위치들로부터의 문자들로 구성되는 세그먼트 키들을 할당한다(503). 데이터는 세그먼트 키 값(504)에 의해 파티셔닝된다. 동일한 세그먼트 키를 갖는 레코드들은 동일한 파티션 내에 존재할 것이나, 동일한 레코드 키를 갖는 레코드들이 동일한 파티션(506) 내에 존재할 필요는 없다. 예컨대, 세그먼트 키 값 "135"가 첫 번째 파티션 내에 존재하지만, 레코드 키 "r1"을 갖는 레코드들은 첫 번째 및 두 번째 파티션들 모두에 발생한다는 것을 주목해야 한다.
도 5b에 있어서, 레코드들(506)은 그들의 파티션들(508) 내에서 클러스터링되고 클러스터 키들은 데이터 클러스터들(510)을 결과로 내면서 할당된다. 소정 레코드 키들이 다수의 클러스터들에 할당된다는 점에 주목해야 한다. 예컨대, 레코드 키 "r1"을 갖는 레코드들은 클러스터 "k1" 및 클러스터 "k2" 둘 모두에서 발생한다.
도 5c에 있어서, 이러한 다중 매치는 조정된다. 데이터 클러스터들(510)은 독출되고, 클러스터 키들의 다중 할당은 해결되며(520), 클러스터 키의 레코드로의 최종 할당은 이루어진다(530). 이러한 해결의 상세는 이하 설명된다.
2.4.2 세그멘테이션 없는 병렬화
대체 키 생성은 하나 이상의 필드들로 구성되는 자연 키의 값을 갖는 생성된 값의 페어링이다. 자연 키의 각각의 구별되는 값은 유니크한 대체 키 값을 갖는다. 대체 키들을 생성하는 하나의 방법은 때때로 키 크로스-레퍼런스 파일(짧게 key xref store)로 불리는 대체 키/자연 키 쌍들의 스토어를 유지하는 것이다. 각각의 새로운 데이터 레코드가 프로세싱되는 것과 같이, 자연 키 값은 스토어 내에서 찾아진다: 만약 그것이 발견되면, 대체 키는 반환된다; 만약 그것이 발견되지 않으면, 새로운 대체 키가 생성된다. key xref 스토어는 현재 실행 중에 생성되었던 대체 키들의 레코드를 유지하기 위해 메모리 내에서 부분적으로 생성될 수 있고, 이미 생성된 값들을 유지하기 위해 디스크 상에서 부분적으로 랜딩된다(그리고 프로세싱의 시작에서 메모리로 독출됨). 키들이 생성된 후에, 새롭게 생성된 대체 키들을 포함하는 키 쌍들은 랜딩된 key xref 스토어에 부가된다. 때때로, 최대 생성된 대체 키 값은, 다음 실행 중에, 가장 높은 이미 생성된 키가 복사본 없이 추가적인 키들을 생성하기 위한 시작 지점에서 이용가능하도록, 편의를 위해 개별적으로 저장된다.
이러런 키 생성 방법을 병렬로 적용하기 위해, 데이터 레코드들은, 파티션 키의 값을 공유하는 모든 데이터 레코드값이 동일한 프로세싱 엔티티로 전송되도록, 자연 키, 또는 파티션 키로 불리는 자연 키의 소정 프래그먼트에 의해 파티셔닝될 수 있다. 이는 자연 키를 공유하는 모든 레코드들이 동일한 프로세싱 엔티티에 의해 처리되는 것을 보장한다. 특히, 새롭게 생성된 키들의 최근 인-메모리 스토어는 프로세싱 엔티티에 액세스 가능하고, 따라서 동일한 자연 키들을 갖는 모든 레코드들은 동일한 대체 키 값을 가질 것이다. 공유-낫씽(shared-nothing) 병렬 아키텍처에 있어서, 즉, 인터프로세스(interprocess) 통신이 없는 경우, 새롭게 생성된 키들의 스토어는 현재 프로세싱 엔티티에 의해 처리되는 레코드들로만 이용가능하고, 따라서 동일한 병렬 실행 동안, 서로 다른 프로세스 엔티티들에서 처리되어지도록 동일한 자연 키를 갖는 레코드들이 있었으며, 그들은 서로 다른 대체 키들을 얻을 것이다.
소정 상황들에 있어서, 자연 키 값들의 분산은 다른 값들을 갖는 레코드들의 평균 수보다 소정 값들을 갖는 더 많은 레코드들과 함께 불규칙할 수 있다. 이러한 경우에 있어서, 자연 키(심지어 프래그먼트)에 의한 파티셔닝은 데이터 파티션들을 통해 데이터 스큐로 이끌 수 있고, 즉, 소정 파티션들은 다른 것들보다 더 많은 레코드들을 포함할 것이다. 이는 프로세싱 시간이 동일한 복잡도의 태스크들에 대해 데이터 부피레 비례하기 때문에 병렬화의 효율을 감소시킨다(대체 키 생성과 같이). 이러한 경우에 있어서, 그것은 균일한 데이터 분산을 획득하기 위해, (단순히 프로세스들의 각각에 연속적으로 레코드들을 통과시키는) 라운드-로빈에 의해 파티셔닝될 가치가 있을 수 있다. 대체 키들은 앞서 설명한 방법에 의해 각 프로세스 내에서 생성될 수 있고, 대체 키 생성이 완료된 이후, 동일한 자연 키로의 결과 다수의 대체 키 할당들은 전처리 단계(post-processing step)에서 중복제거될 수 있다. 이러한 중복제거를 수행하기 위한 하나의 방법은 그 파티션 내에서 대체 키/자연 키 쌍들을 찾기 위해 자연 키로 각 파티션 내의 레코드들을 롤업(rollup)하는 것이고, 그리고는 자연 키 상의 재파티션을 하는 것이다(지금 자연 키의 파티션 카피들의 단지 수만 존재함). 자연 키에 대한 두 번째 롤업은 각 자연 키에 대한, 가장 작은, 생성된 대체 키들의 다양성(multiplicity) 중 하나를 선택할 수 있다. 결국, 레코드들에 대한 두 번째 경로에 있어서(원래 라운드-로빈 파티셔닝에 있어서), 대체 키들은 단일 선택된 값으로 업데이트될 수 있다. 데이터에 대해 두 경로들이 요구됨에도 불구하고, 이는 스큐를 갖는 생성보다 더 좋은 성능을 가질 수 있다. (연산들의 서로 다른 순서들에 관련된 큰 키 그룹들을 처리하기 위한 다른 방법들이 존재하고, 예컨대, 하나는 대체 키들을 생성하기 전에, 자연 키들을 중복제거하기 위해 이중 롤업을 수행할 수 있고, 또는 개별 프로세싱을 위한 큰 키 그룹들을 격리하고 검출하기 위해 소정 다른 방법을 적용할 수 있다.)
자연 키에 의해 파티셔닝하는 두 번째 상황은 대체 키들이 근사화(또는 균일화)를 위해 생성되는 때, 그러나 자연 키들을 필연적으로 정확하게 매칭하지 않을 때, 병렬화를 위한 비효율적인 전략일 수 있다. 이러한 경우에 있어서, 동일한 프로세스로 모든 후보 매칭 레코드를 전송하는 것이 보장되는 파티션 키는 없을 수 있다. (프로세스는 프로세싱 엔티티 내에서 실행 중인 실행의 인스턴스다.) 이는 매칭 결정이 전형적으로 레코드 내에서 단지 데이터에 기반하여 생성될 수 없고 레코드의 비교에 관련되기 때문이다. 바로 설명되는 멀티패스(multipass) 해결책은 중복제거(deduplication) 프로세스가 다수의 대체 키들이 할당되었을 때 식별을 위해 자연 키에 의존하기 때문에, 이러한 경우에 있어서, 비효율적이다. 레코드들이 파티션들을 가로질러 근사적인 매칭 자연 키들을 포함하는 식별은 원래 문제와 동등하다.
두 상황들에 대한 해결책은 대체 키 생성의 다음의 예시에 의해 설명된다. key xref 스토어의 서로 다른 실시예는 앞서 설명한 인-메모리 스토어보다 최근에 생성된 대체 키들에 유용할 수 있다. 스토어들은 다음의 특징들과 함께 유용할 수 있다: 1) 그들은 디스크 상에서 홀딩되고 (첨부에 의해) 하나의 프로세스에 의해 업데이트될 수 있다. 2) 그들은 다중 프로세서들로부터 독출될 수 있다(그리고 변화들이 생성되는 때 업데이트될 수 있다). 대체 키 생성 절차는 다음과 같다. 파티셔너는 예컨대, 라운드-로빈에 의해 프로세스들을 가로질러 분산을 획득하기 위해 데이터를 파티셔닝한다. 각 파티션 내에서, 프로세스는 각 자연 키를 취하고 모든 파티션들의 key xref 스토어에 대항하여 룩업을 수행한다 : 만약 자연 키가 하나 이상의 key xref 스토어에서 발견된다면, 프로세스는 가장 낮은 값을 갖는 대체 키를 취한다(그리고 자연 키가 하나 이상의 key xref 스토어보다 많은 곳에서 나타났는지 마킹한다); 만약 자연 키가 어떠한 key xref 스토어 내에서도 발견되지 않았다면, 프로세스는 새로운 대체 키들을 생성하고 이러한 파티션과 연관된 key xref 스토어를 업데이트한다. 새로운 대체 키들이 프로세스 내에서 생성되기 때문에, 그들은 그 프로세스를 위한 연관된 key xref 스토어 내의 디스크에 지속된다. 이는 키들 모두가 생성된 후에 key xref 스토어를 업데이트할 필요를 제거한다. 게다가, 스토어가 한번 그것이 지속되는 때 변화를 가지고 업데이트되는 것을 모든 프로세스가 독출하기 때문에, 만약 하나의 프로세스에서 먼저 나타나는 자연 키가 다른 것에서 이후에 나타난다면, 그것은 다른 프로세스에서 먼저 할당된 원래 대체 키에 할당될 것이다.
잠재적인 레이스(race) 컨디션이 존재한다: 만약 동일한 자연 키를 갖는 두 레코드들이 동일한 시간에 서로 다른 프로세스들에서 도착한다면, key xref 스토어에 대항한 룩업은 두 프로세스들 모두에서 어떠한 매치도 보여주지 않을 것이고, 두개의 새로운 서로 다른 대체 키들은 그 자연 키를 위해 생성될 것이다. 이는 단지 로컬 key xref 스토어가 새로운 대체 키들을 가지고 업데이트되기 전에 프로세싱되는 레코드들을 위해 일어나고, 그 업테이트은 다른 프로세스들에 의해 독출된다. 모든 이후의 자연 키들은 가작 낮은 값의 대체 키를 가지고 할당될 것이다. 또한 하나 이상의 자연 키가 보여졌다는 사실을 갖는 이러한 이후의 레코드들을 마킹함으로써 마커는 상기 사실 이후에 키 충돌을 바로잡는데 사용될 수 있게 위치된다. 이러한 마커 상의 필터는 하나 이상의 대체 키 할당을 가졌던 자연 키들을 찾을 것이고, 대안적인 대체 키들은 식별되고 대체된다. 만약, 최초 충돌(들)이 발생하는 때, 자연 키가 단지 나타났다면 충돌을 모면하는 것은 여전히 가능하다. 이를 신뢰할 수 있게 검출하고 바로잡기 위해, 데이터(따라서 자연 키들)는 키 생성 프로세스를 통해 할당을 바로잡기 위해 두 번째 시간을 통과될 수 있다 - 두 번째 통과 중에 앰비규어스 할당은 명백해질 것이다. 이러한 두 번째 통과 픽스(fix)는 만약 매칭 결정이 결정적일 때까지, 자연 키들이 근사화되어지도록 단지 요구된다고 할지라도 신뢰할만하고, 즉, 동일한 데이터가 재실행된다면, 동일한 결정을 한다. 이는 두 번째 통과의 시작에 의해, 모든 로컬 key xref 스토어들이 모든 프로세스들에 의해 기록되고 독출되기 때문이다.
이러한 병렬화 방법은 클러스터링, 및 마찬가지로 다른 퍼지(fuzzy) 데이터 연산들에도 마찬가지로 적용될 수 있다. 클러스터링은 키들이 정확하지 않지만 단지 동등한 대체 키 생성의 형태로 고려될 수 있다. 로컬 스토어들의 상세한 형태는 데이터 연산에 의해 달라질 수 있으나, 유사한 기술들이 사용될 수 있다.
도 6은 자연 키 상의 파티셔닝 없이 병렬로 실행하는 대체 키 생성 절차의 예시를 도시한다. 자연 키 "n1"을 갖는 레코드는 본질적으로 파티션(파티션1)에 데이터 소스(600P1) 내에서 나타난다. 파티션(파티션1)의 key xref 스토어들 Xref1(604P1) 및 파티션(파티션2)의 Xref2(604P2)는 협의되고, "n1"은 발견되지 않으며(606), 따라서, 대체 키 "s1"은 생성되고 출력(620P1)에 기록된다. 반면, key xref 레코드 "n1 s1"은 로컬 key xref 스토어(Xref1)로 지속된다. 이후, 자연 키 "n1"을 갖는 레코드는 파티션(파티션2) 내의 데이터 소스(600P2) 내에서 나타난다(그것이 자연 키에 의해 파티셔닝되었던 데이터를 가질것이기 때문에, 파티션1 내가 아님). key xref 스토어들(Xref1(604P1) 및 Xref2(604P2))가 다시 협의되고, "n1"은 Xref2(604P2) 내에 있지 않지만 Xref1(604P1) 내에서 발견된다. 대체 키 "s1"은 검색되고, 레코드(611)에 할당되며 출력(620P2)에 기록된다.
2.5 스코어링 필드 중복제거
세그멘테이션(및 병렬화) 이후, 소정 실시예들에 있어서, 데이터 소스(100)로부터의 레코드 또는 토큰화된 데이터 레코드들(118P)의 세트는 스코어링 필드 중복제거 엔진(144)으로 통과된다. 소정 실시예들에 있어서, 앞서 설명한 바와 같이, 스코어링 필드들로 불리는 클러스터 멤버쉽을 결정하기 위해 스코어링에 사용되는 필드들은 실행 중에 결정될 수 있다. 스코어링 필드 중복제거 엔진(144)은 클러스터링 프로세스를 계속하기 위해 스코어링 필드들 상의 동일한 값들을 갖는 레코드들의 세트로부터 하나의 레코드를 선택하고, 결과 클러스터 id가 상기 세트 내의 다른 레코드들 중에 공유되도록 배열한다. 레코드들이 클러스터 멤버 결정 프로세스의 관점으로부터 동일하기 때문에, 동일한 클러스터링 결정이 그들 모두에 대해 필연적으로 도달되야만 한다.
2.6 후보 검색
2.6.1 두 개의 모드들
데이터셋 내의 모든 레코드들이 함께 프로세싱되는지 또는 레코드들이 이미 클러스터링된 레코드들에 대항하여 그들이 도착하는 것에 따라 프로세싱되는지에 의존하여 검색-기반 클러스터링 프로세스에 대한 두 개의 미세하게 다른 접근법들이 가능할 수 있다. 전자는 배치 모드를 설명하고, 반면 후자는 모든 데이터가 아웃셋(outset)에서 이용가능할 때 또한 적용될 수 있으나, 온라인 모드로서 사용될 수 있는 증가 모드이다. 두 모드들 간의 하나의 차이점은, 배치 모드 내의 클러스터링 엔진에 의해 사용되는, 변형 프로파일러 스터어들(115), 변형 네트워크 스토어들(126) 및 검색 스토어(146)을 포함하는 변형 스토어들이 전처리 스텝 동안 계산되는데 비하여, 증가 모드에서는, 소정 스토어들이 데이터가 도착하는 때, 증가적으로 집단화될 수 있는 점이다. 특히, 하나의 증가 모드 접근법은 검색 스토어(146)이 증가적으로 집단화되는 동안, 변형 프로파일러 스토어들(115) 및 변형 네트워크 스토어들(126)의 데이터의 모든 세트 상에서 미리 계산(preconpute)한다는 점이다. 증가 모드에서, 클러스터링 결과들은 레코드들이 프로세싱되는 순서에 의존할 수 있다.
2.6.2 증가 모드에서의 클러스터 발견
증가 클러스터링 프로세스에 있어서, 쿼리 레코드들이라고 불리는 유입되는 레코드들은 쿼리 레코드가 속하는 클러스터를 결정하기 위해 현재 클러스터들 내의 레코드들과 비교될 수 있다. 직접 접근법에 있어서, 각 쿼리 레코드는 가장 가까운 매치를 찾기 위해 모든 이전 레코드에 대항하여 비교될 수 있다. 만약, 가까운 매치가 없다면, 쿼리 레코드는 새로운 클로스터의 제 1 멤버가 되고, 그렇지 않다면, 그것은 그것이 가장 가깝게 매칭되는 레코드를 포함하는 클러스터에 부가된다. 직접 나가는(straightforward) 동안, 이는 잠재적으로 계산적으로 높은 비용이 소요된다. 네가티브(negative) 결론("이 클러스터가 아니다") 및 가장 나쁜 경우의 대부분의 비교 결과는 쿼리 레코드가 새로운 클러스터의 멤버인 때이다. 이러한 접근법은 각 클러스터로부터 대표 멤버를 선택하고 클러스터 대표와 쿼리 레코드를 비교함으로써 개선될 수 있다. 이는 레코드들의 변형 유사도가 적어도 부분적으로 이행적인(transitive) 관찰을 레버리징한다(leverages): 만약 쿼리 레코드가 클러스터 대표에 충분히 유사하지 않다면, 클러스터의 어떤 다름 멤버들에 충분히 가까울 가능성은 없다(왜냐하면, 그들이 클러스터 대표와 모두 유사하기 때문에).
변형 유사도가 실제로 이행적이지 않기 때문에("A가 B와 유사"하고 "B가 C와 유사"하여도, "A가 C와 유사"함을 암시하지 않음), 때때로 후보 임계값으로 불리는, 유사도의 낮은 임계값은 클러스터 멤버쉽을 결정하는데 적용되는 것보다 클러스터 대표와 쿼리를 비교하는 때 적용될 수 있다. 의도는 클러스터의 멤버들을 갖는 쿼리 레코드의 예상되는 유사도 상의 정확한 낮은 경계를 갖는 것이다. 이러한 낮은 바운드는 쿼리 레코드가 속할 수 없는 클러스터들을 성공적으로 제외하지만, 그것은 쿼리 레코드가 속하는 클러스터에 대한 질문(question)에 대답하지 않는다. 이유는 하나 이상의 클러스터 대표가 후보 임계값을 넘는 쿼리 레코드를 갖는 유사도 스코어를 가질 수 있기 때문이다. 이들은 후보 레코드들이라고 집합적으로 불린다. 후보 레코드들이 식별된 이후, 쿼리 레코드는 쿼리 레코드가 가장 가까운 밀접성(affinity)를 갖는 클러스터를 찾기 위해 소정 후보 레코드와 연관된 각 클러스터의 모든 멤버와 비교될 수 있다. 만약, 이러한 밀접성이 매치 임계값을 넘는다면, 쿼리 레코드는 대응하는 클러스터의 멤버로 생성되고, 그렇지 않다면, 그것은 새로운 클러스터에 할당된다. 단계들은 후보 레코드들이 찾아진 후에 클러스터 멤버쉽 결정의 성능을 개선하기 위해 취해질 수 있고, 일부는 다음과 같다.
심지어 클러스터 대표들에 쿼리 레코드들을 비교하는 개선점을 가지고, 새로운 클러스터들을 식별하는 경우는 여전히 나쁘다: 새로운 클러스터에 속하는 쿼리 레코드는 그것이 새롭다는 것을 확인하기 위해 모든 현재 클러스터의 대표에 비교되야만 한다. 클러스터의 수가 커질수록, 새로운 클러스터를 인정하는데 요구되는 비교들의 수가 현재 클러스터들의 수에 비례하기 때문에, 새로운 클러스터를 식별하는데 드는 시간은 증가하고, 클러스터링 프로세는 느려진다. 계산적인 도전은 모든 클러스터 대표와 각 쿼리 레코드를 비교하는 것보다 레코드들을 클러스터링하는 더 좋은 방법을 찾는 것이다.
검색-기반 클러스터링 접근법은 새로운 클러스터를 식별하는 가장 나쁜 경우를 가장 좋은 경우로 변화시키기 위해 시도함으로써 이러한 도전에 착수한다. 그것의 단순화된 형태에 있어서, 이는 그들의 클러스터 대표들 또는 현재 클러스터 멤버들로부터 집단화되는 검색 스토어에 대항하여 검색을 수행함으로써 행해진다. 쿼리 레코드들은 검색 스토어 내에서 찾아진다. 그들이 발견되지 않는다면, 쿼리 레코드는 새로운 클러스터에 속해져야만 한다. 이러한 프로세스는 도 1a 및 1c에 도시된 후보 검색 엔진(140)에 의해 수행된다. 접근법은 만약 검색 스토어(146)을 집단화하고 검색 스토어(146) 내에서 쿼리들을 찾는 시간이 클러스터 대표들의 증가하는 스토어에 직접 대항하여 모든 클러스터 대표와 각각의 쿼리 레코드를 비교하는 시간보다 적은 경우 유리하다. 접근법 아래 미세한 구별은 검색을 수행하기 위해 검색 엔진(147)(또는 변형-룩업 절차), 그것에 대한 쿼리들을 구성하기 위한 쿼리 확장 엔진(143) 및 검색 스토어(146)을 집단화하기 위해 검색-엔트리 확장 엔진(145)을 선택하는 것을 포함하는 후보 검색 엔진(140)에 의해 사용되는 프로세스를 정의하는 것에 달려있다.
도 2d는 이러한 프로세스의 예시를 도시하는데 사용될 수 있다. 소정 실시예들에 있어서, 검색 스토어(230G)는 클러스터 멤버들로 구성되는 데이터셋(220G)으로부터 계산되는 엔트리들을 가지고 집단화된다. 검색 스토어(230G)에 대항하여 확장된 쿼리 엔트리들(210G)로 변형-룩업 절차(232G)를 적용하는 것은 클러스터 멤버쉽 기준의 소정 필요한 구성요소의 프록시를 계산하는데 사용될 수 있다. 프록시는 그것이 프록시에 대항하여 적어도 최소 스코어에 도달하지 않고, 레코드가 클러스터의 멤버일 수 없다면 좋은 것이다. 이러한 최소 스코어(후보 임계값)는 후보 매치(232G)를 정의한다. 쿼리가 요구되는 최소값에 도달하는 이러한 클러스터 레코드들(236G)이 후보 레코드들이다.
프록시 스코어의 예시는 두 개인 이름들과 같이, 두 멀티워드(multiword) 필드들(또는 필드들의 조합)에 의해 공통으로 공유되는 단어들의 수이다. 두 이름들을 비교하기 위한 클러스터 멤버쉽 결정에 사용되는 스코어링 알고리즘은 각각의 이름 내의 단어들의 세트보다 많이 고려할 수 있고, 특히, 그것은 단어 순서 및 위치를 고려할 수 있다. 그러나, 두 이름들은 그들이 공통의 어떠한 단어도 갖지 않는다면 매치가 아닐 수 있고, 그들은 공통의 단어들의 작은 부분을 단지 갖는다면 높은 스코어를 가질 가능성이 없다. 두 이름들이 공통으로 갖는 단어들의 수를 카운팅하는 것은 이름 스코어에 대한 프록시이고 - 정확하지만 그럼에도 불구하고 신뢰할만하지 않다. 프록시는 만약 공통의 단어들의 수가 각 이름 내의 단어들의 수와 관련되는 것으로 알려진다면, 보다 정확해진다. 이러한 길이는 그것이 임의의 클러스터 레코드들을 인출함 없이, 프록시 스코어를 계산하는데 이용가능할 수 있도록 검색 스토어(146) 내에 저장될 수 있다.
소정 실시예들에 있어서, 쿼리의 최초 선택은 클러스터 멤버쉽 기준에 의해 안내될 수 있다. 더 좋은 성능은, 만약 원본 데이터 레코드들의 가장 그래뉼라(granular)하거나 또는 가장 구별되는 분해(decomposition)를 주는 클러스터 멤버쉽 기준의 구성요소가 로우 쿼리를 구성하기 위한 기준으로써 사용된다면 종종 달성 가능하다. 이는 검색 기준을 만족하는 레코드들의 수를 줄인다.
다수의 필드들로부터의 값들을 갖는 쿼리들에 관련된 다수의 검색들은 또한 생성될 수 있고 후보들의 더 좋은 세트들을 이끌 수 있다. 이는 다음에 설명된다. 여기서, 포커스는 상세 내용이 더 단순하기 때문에, 단일 필드로부터 취해지는 쿼리들 상에 있다.
회사가 각각 다양성의 소정 측정치를 허용하는 개인 이름, 정부 할당 식별자, 및 출생일에 기반하여 고객 데이터베이스로부터 고객들을 식별하기 원하는 예시를 고려해보자. 여기 정부 할당 식별자는 최초 쿼리에 대한 개인 이름보다 선호될 수 있다. 전형적으로 정부 할당 식별자는 가능한 앰비규어티를 위해 허용하는 개인 이름보다 더 구체적이고, 따라서, 그것은 - 후보 매치들의 세트를 보다 신속하게 좁힐 것으로 예상되는 더 좋은 쿼리를 생성한다.
그러나, 필드(또는 필드들의 조합)과 연관된 그래뉼리티는 전체 데이터셋을 가로질러 일정하지 않을 수 있다. 엄청난 수의 연관된 레코드들을 갖는 정부 할당 식별자들(예컨대, 블랭크 또는 모두 0들 또는 모두 9들)의 일부를 집단화하는 디폴트 값들이 존재할 수 있다. 이는 레코드들의 서브 세트에 대한 쿼리의 선택의 결렬을 나타낸다. 너무 많은 레코드들이 검색에 의해 검색된다면, 저장되어질 레코드들의 세트를 좁히기 위한 검색의 제 1 목적은 달성되지 않는다. 이를 처리하기 위해, 컷오프(cutoff) 제한은 주어진 쿼리 검색으로부터 반환되는 후보들의 수 상에서 적용될 수 있다: 후보 레코드들의 수가 임계값을 초과한다면, 쿼리는 거절된다.
소정 시나리오들에 있어서, 로우 쿼리는, 쿼리 레코드가 대체 검색 전략을 이용하여 재프로세싱되야만 하는 이후부터, 확장된 쿼리로부터의 모든 쿼리들이 거절될 때까지 계속할 수 있다. 예컨대, 로우 쿼리가 멀티워드 스트링인 때, 확장된 쿼리는 스트링 내의 개인 워드들로 구성될 수 있다. 스트링 내의 매우 일반적인 단어는 너무 많은 후보들을 반환함에 따라 거절될 수 있고, 반면, 남아 있는 더 드문 쿼리 단어들은 원하는 매칭 레코드들을 찾기 위해 적합하다. 로우 쿼리를 거절하는지에 대한 결정은 잠재적으로 만족하는 매칭 레코드들이 거절된 쿼리로부터의 레코드들을 포함하는 것에 실패함으로써 지나칠 것인지에 기반할 수 있다. 다수의 쿼리들이 확장된 커리 내에 내장되는 때, 다른 것들이 계속되는 동안 일부가 실패하는 것은 괜찮을 수 있다. 다수의 독립적인 쿼리들의 부재 중에, 확장된 쿼리 세트로부부터 하나의 쿼리의 거절은 전체 세트를 거절하는데 충분할 수 있다.
많은 경우들에 있어서, 검색 전략들이 예컨대, 스코어링 필드 내의 예상하지 못한 디폴트 값 또는 불완전한 레코드와 같이, 이것이 데이터 내의 데이터 퀄리티 이슈를 지시할 수 있는 것처럼 비효율적인 경우, 레코드들의 세트를 식별하는 것은 독립적으로 유용할 수 있다. 레코드들의 주요 바디(body)로부터 레코드들의 이러한 세트들을 분리하는 것은 최종 매치 결정의 일반적인 신뢰도를 지시하는 세트들로 데이터를 분류한다. 디폴트가 없거나 또는 단지 디폴트, 정부 할당 식별자만을 갖는 레코드들은, 정부 할당 식별자들을 갖는 두 레코드들 사이에서 발견될 것보다 더 적은 확신하는(conficent) 매치로 이끌 것으로 기대될 수 있다.
2.6.3 다중 검색들 및 검색 코드들
검색 스토어(330G)는 특정 검색 키(333G)를 갖는 데이터 레코드들에 대한 모든 위치 키들을 홀딩하는 위치 정보로 위치 키(335G)를 롤업하고 그들의 페어링 키(333G) 상에서 검색 엔트리들(334G)를 중복제거함으로써 개선될 수 있다. 소정 실시예들에 있어서, 위치 정보는 만약 연관된 레코드들의 수가 적다면, 키들의 단순 벡터일 수 있다. 다른 실시예들에 있어서, 위치 정보는 각각의 비트 세트가 데이터셋(320G) 내의 데이터 레코드를 명시적 또는 비명시적으로 지시하는 비트 벡터일 수 있다.
위치 정보의 비트 벡터 실시예를 이용하는 것은 검색 스토어의 크기를 줄일 수 있고, 페어링 키(333G)의 동일한 값들을 너머 룩업(332G)를 반복하는 것을 제거할 수 있으며, 그러나 진짜 이득은 다수의 검색들로부터의 결과들을 조합할 때, 얻어진다. 확장된 쿼리가 로우 쿼리의 각 단어에 대한 개별 쿼리들로 구성되는 멀티워드 스트링으로 구성되는 로우 쿼리의 예시에 있어서, 개별 확장된 쿼리들의 결과들은 위치 비트벡터들의 논리적 AND를 취함으로써 조합될 수 있다. 두 위치 비트벡터들의 AND는 두 위치 비트벡터들 내의 동일한 위치들에서 세팅되는 비트들을 찾을 것이다. 이러한 경우에 있어서, 이들은 위치 비트벡터들과 연관된 단어들 모두를 포함하는 레코드들일 것이다. 위치 비트벡터들 사이의 AND들의 모든 조합들을 형성함으로써, 데이터셋(320G) 내의 레코드들(322G) 내에서 나타나는 로우 쿼리(300G)로부터의 단어들의 모든 조합들이 발견될 것이다.
이러한 조합들을 조직화하는 것을 촉진하기 위해, 검색 코드의 컨셉이 소개될 것이다. 검색 코드는 검색 쿼리들이 최종 위치 정보결과에 기여하는 것을 인코딩하는 데이터 패턴 코드이다. 소정 실시예들에 있어서, 비트는 위치 결과에 기여하는 로우 또는 확장된 쿼리의 각 부분에 대한 비트벡터 내에서 세팅될 수 있다. 다수의 비트들 세트는 각 비트 셋트와 연관된 각 위치 정보 결과의 논리적 AND들에 대응한다. 만약 두 검색들이 존재한다면, 첫 번째 비트는 첫 번째 세트로부터 반환되는 결과들에 대해 세팅될 것이고, 두 번째 비트는 두 번째 세트로부터 반환되는 결과들에 대해 세팅될 것이며, 두 비트들 모두는 두 검색들로부터 반환되는 결과들에 대해 세팅될 것이다(각 검색의 결과들의 논리적 AND).
단일 필드로부터 취해지는 하나 이상의 토큰 상의 다수의 검색들을 생성하는 컨셉 및 검색들에 의해 검색되는 위치 정보를 논리적으로 조합하는 컨셉은 다수의 필드들(또는 문맥들)로부터의 토큰들 상의 다수의 검색들을 생성하는 것, 및 검색들에 의해 검색되는 위치 정보를 논리적으로 조합하는 것으로 일반화될 수 있다.
도 7a 내지 7d는 예시 내에서 검색 코드들의 사용 및 구성을 도시한다. 도 7a에 있어서, 로우 쿼리(700)는 데이터 레코드의 세가지 필드들, 첫 번째(first) (이름), 마지막(last) (이름) 및 거리(street)로부터의 토큰들로 구성된다. 예컨대, 마지막에 대한 쿼리는 "smit"이다. 로우 쿼리는 확장된 쿼리(704)를 주기 위해 쿼리 확장 절차(702)에 의해 확장된다. 이러한 경우에 있어서 확장된 쿼리는 변형 프로파일러 스토어들(115)로부터 가능하게 획득되는 로우 쿼리의 각 부분에 대한 변형 토큰들로 구성된다. 예컨대, "smit"와 연관된 변형 토큰들은 "smith" 및 "smiths"를 포함한다.
도 7b에 있어서, 데이터 소스(710)는 네 필드들, "key", "첫 번째(first)" , "마지막(last)" 및 "거리(street)"로 구성된다. 검색-엔트리 확장 절차(712)는 세 쿼리 필드의 각각에 대한 검색 스토어들(714)을 집단화하는데 사용된다.
도 7c에 있어서, 확장된 쿼리(704A)는 위치 결과(724A_를 주기 위해 변형-룩업 절차(720A)에 의해 프로세싱된다. 이러한 경우에 있어서, 변형-룩업 절차는 각 확장된 쿼리에 대한 검색 스토어들(714) 내의 룩업(721)과 함께 시작하면서 실행된다. 그리고는, 각 확장된 쿼리로부터의 위치 정보 결과들은 로우 쿼리의 "마지막(last)" 부분에 대한 위치 정보 결과를 주기 위해 (비트벡터들의 논리적 OR 또는 벡터들의 연합) 조합된다. 이는 "last name"으로 라벨링되는 원(730A)으로써 그래픽적으로 표현된다.
"first" 필드에 대한 두 번째 확장된 쿼리(704B)는 위치 정보 결과(724B)를 획득하기 위해 변형-룩업 절차(720B)에 의해 프로세싱된다. 이는 "first name"으로 라벨링되는 원(730B)로써 그래픽적으로 표현된다. "last name" 원(730A)과 "first name" 원(730B)의 교점은 레코드들 "[2,4]"(732)을 포함한다.
도 7d에 있어서, 모든 세 개의 로우 쿼리들의 결과들이 도시된다. 각 원(73-ABC)은 레코드들(724A, 724B, 724C)의 각 집합을 포함한다. 예컨대, "last name" 원은 레코드들(724A)"{1,2,4,5,7}"를 포함한다. 이러한 원은 검색 코드 1로 할당되고, 이는 검색-코드 테이블(740) 내에 기록된다. 유사하게, "first name" 원은 검색 코드 2로 할당되고, "street" 원은 검색 코드 4로 할당된다. 검색 코드 1, 각각, 2 및 4는 교점을 제외한 영역에 참조되지 않고 전체 대응하는 원형 영역에 참조된다는 점은 강조될 것이다. 동시에 만족되어지는 하나 이상의 쿼리들과 연관된 레코드들은 대응하는 원형 영역들에 연관된 레코드들의 세트들을 교차함으로써 찾아진다. 결과는 검색-코드 테이블(740)에 기록되고, 결과로의 개별 영역들 기여(contribution)의 검색 코드들의 합에 의해 형성되는 검색 코드와 함께 페어링된다. 여기서, 검색 코드는 각 비트 세트가 원형 영역이 존재함을 지시하는 비트 맵 표현으로써 인식될 수 있다.
마지막 단계는 검색 코드들이 클러스터 멤버쉽에 대한 더 가까운 스코어링을 받을 가치가 있도록 하기 위해, 쿼리로의 충분한 응답에 대응하도록 구체화하는 것이다. 여기서, 후보 선택 기준(742)은 검색 코드가 3, 5 또는 7이여야만 한다는 것이다. 이는 성공적인 쿼리 후보가 변형 매칭 마지막 이름(last name), 및 변형 매칭 첫 번째 이름 또는 거리 중 하나 또는 모두를 가져야만 한다는 것을 의미한다. 변형 매칭 첫 번째 이름 및 거리는 정보의 임의의 단일 변형 매칭 부분으로써 불충분하다. 스코어링을 위해 반환되는 후보들(744)은 이러한 세 개의 검색 코드들(742)와 연관된 레코드들의 연합에 의해 주어진다.
2.6.4 쿼리 구성
쿼리 구성 절차(142)에 있어서, 사용자는 토큰화된 레코드들(118) 또는 데이터 소스들(100) 중 하나로부터 독출되는 레코드들 내의 실행 파라미터들 또는 하나 이상의 필드들 전부 또는 프래그먼트들로부터 선택되는 컨텐트로부터 로우 쿼리를 구성하기 위해, 아마도 쿼리 구성 룰세트에 관련된 쿼리 구성 표현을 제공한다. 로우 쿼리는 일부가 벡터들일 수 있는 하나 이상의 쿼리 필드들에 대한 값들로 구성될 수 있다. 예컨대, 사용자는 쿼리로써 개인 이름을 사용하기 원할 수 있고, 각 필드 값 간의 공간들 및 공간들 또는 콤마들을 갖는 첫 번째, 중간 및 마지막 이름 필드들의 컨텐츠를 연결시킴으로써 그것을 구성하기 위한 룰을 구체화한다. 만약 하나 이상의 이름 필드들이 널(null) 또는 비집단화된다면, 추가적인 할당들("cases")은 이름의 구성을 구체화하기 위해 제공될 수 있다. 선택적으로, 아마 단지 첫 번째 및 중간 이름들의 이니셜들(initials)이 마지막 이름과 연결되고 유지된다. 로우 쿼리는 예컨대, 개인 이름에 대한 로우 쿼리가 개별적인 첫 번째, 중간 및 마지막 이름 쿼리 필드들로 구성될 수 있는 것과 같이, 다수의 부분들로 형성된 구성된 레코드일 수 있다. 만약 단지 단일 full_name 필드가 데이터 레코드 상에 나타났다면, 사용자 쿼리 구성 표현은 새로운 쿼리의 구성 필드들을 집단화하기 위해 상기 full_name 값을 파싱하는 방법을 구체화할 수 있다. 쿼리 구성 표현은 예컨대, 로우 쿼리의 다른 구성요소들을 구성하는데 사용되는 각 필드의 집단의 상태(예컨대, 집단화된, 블랭크(blank) 또는 널(null))를 지시하는 집단화 패턴 코드와 같이, 쿼리 레코드 내의 데이터를 특징짓는 하나 이상의 데이터 패턴 코드들을 집단화할 수 있다.
소정 실시예들에 있어서, 변형 프로파일러(110)의 데이터 준비 모듈(111) 내의 표준화기(112)와 같은 표준화기는 사용자가 제로들(zeroes) 또는 공간들(spaces), 더 낮은 케이싱(casing) 알파벳 문자들 등등과 함께 좌측 상에 숫자들을 패딩하는 대체 문자들과 그들을 대체함 또는 다른 구체화된 문자들 또는 구두점(punctuation) 문자들을 삭제하는 것과 같이(그들이 미리 정의된 연산들로써 이용가능할 수 있는 것처럼) 전부 상세하게 구체화될 필요가 요구되진 않음을 지시하는 연산들을 이용하여, 로우 쿼리에 적용될 수 있다. 소정 실시예들에 있어서, 다수의 독립적인 표준화들은 표준화된 로우 쿼리들의 벡터로 이끌면서 적용될 수 있다. 예컨대, "&"와 같은 소정 구두점 문자들은 본래 사용의 범위를 커버하기 위해 다수의 방법들로 처리되어지도록 할 필요가 있을 수 있다: 문자들은 독립적으로 삭제될 수 있고, 위치 상 좌측의 공간 문자와 대체될 수 있으며, 또는 각각 유용한 효과를 갖는 단어 "and"로 확장될 수 있다.
쿼리 접근법과 마주한 하나의 도전은 개인 또는 비즈니스 이름들과 같은 소정 필드들(또는 필드들의 조합들)이 자유 형식(freeform) 본질을 갖는다는 것이다: 두 이름들은 그들이 단어들 또는 단어 순서를 지나침으로 인해 달라짐에도 불구하고 허용가능한 매치일 수 있다(즉, 클러스터 멤버쉽 프로세싱 동안 토큰들을 비교하는데 사용되는 유사도 스코어링 함수들 또는 룰들이 단어 순서대로 단어들 또는 변화들을 지나치는 것에 패널티를 줄 수 있으나 그럼에도 불구하고, 그들을 허용할 수 있다). 이는 예컨대, 일반적으로 전체 이름이 쿼리 자신일 수 없다는 것을 의미한다 - 너무 많은 허용가능한 매치들이 지나쳐질 수 있다. 즉, 전체 이름 상의 직접적인 검색은 단어 순서 및 이름들의 수가 모든 관련된 후보들에 의해 만족될 수 없다고 추정한다. 대신에, 그것은 만약 전체 이름이 로우 쿼리로써 취급되었고, 실제 쿼리들이 그것을 확장함으로써 로우 쿼리로부터 생성되었다면 더 좋을 수 있다.
2.6.5 쿼리 확장
로우 쿼리는 확장된 쿼리를 생성하기 위해 쿼리 확장 엔진(143)에 의해 프로세싱될 수 있다. 소정 실시예들에 있어서, 변형 프로파일러(110)의 데이터 준비 모듈(111) 내의 토큰화기(113)과 같은 토큰화기는 쿼리 용어들(terms)로 불리는 토큰들로 쿼리를 분할하기 위해 쿼리 확장 동안 로우 쿼리의 구성요소들에 적용될 수 있다.
소정 실시예들에 있어서, 쿼리 용어들은 예컨대, 인쇄상의 변형들, 대체 스펠링들 및 문화적 변형들을 포함하기 위해 추가적으로 확장될 수 있다. 예컨대, 쿼리 용어 "문명(civilization)"은 "civilisation" 및 "civilizatin"을 포함하도록 확장될 수 있다. "Weber"에 대한 쿼리는 용어 "Webber"를 포함하도록 확장될 수 있다. 다른 확장들이 또한, 예컨대, 하나의 알파벳 내의 이름들이 다른 알파벳의 다수의 스펠링들을 가는 것도 가능하다(예컨대, 중국어 문자들로부터 로만(Roman) 문자들로의 변환들). 확장에서 사용을 위한 인쇄상의 변형들의 세트는 변형 프로파일러(110)에서 계산될 수 있다. 프로세싱이 변형 프로파일 스토어들의 기본 세트를 확립한 후에, 추가적인 변형들은 온라인 상으로 검출될 수 있고, 새로운 레코드들이 프로세싱되는 것과 같이, 변형 프로파일 내의 변형들의 리스트들에 부가될 것이다.
소정 실시예들에 있어서, 각각의 쿼리 용어는 변형 네트워크 스토어들(126)을 갖는 토큰-대표 스토어(127)을 이용하여 그것의 토큰-대표(들)에 의해 대체될 수 있다. 이는 동일한 이웃(예컨대, 정규 이웃) 내의 변형 토큰들이 동일한 토큰 대표에 의해 대체될 것이고, 따라서 관련된 변형 토큰들을 식별하는 것이 정확한 토큰-대표 매치들을 찾는 것을 요구하는 것과 같이 변형 토큰들의 비교를 촉진시킨다. 변형 토큰은 하나 이상의 이웃의 멤버일 수 있고, 따라서 하나 이상의 토큰-대표를 가질 수 있다. 토큰에 대응하는 모든 토큰 대표는 대체로써 사용될 수 있고, 따라서, (대체된) 쿼리 용어들의 수를 증가시킨다.
소정 실시예들에 있어서, 쿼리 확장 엔진(143)은 가능하게 토큰-대표 대체 이후에, 두 개(또는 그 이상)의 쿼리 용어들을 조합함으로써 토큰-쌍 쿼리 용어들을 형성할 수 있다. 이러한 페어링의 목적은 쿼리 용어에 기반하여 검색으로부터 반환되는 레코드들의 세트를 좁히는 것이다. 소정 실시예들에 있어서, (토큰-대표-대체되는) 토큰-쌍 쿼리 용어들은 알파벳 순서로 정렬된다. 이는 토큰-쌍 쿼리 용어들을 가지고 검색할 때, 검출가능한 단어 순서로 로컬화된 변화들을 생성한다. 만약 원래 단어 순서가 인접한 단어들의 각 쌍을 형성할 때 저장된다면, 이러한 쌍들의 세트는 블록 재배열까지 원래 어구(phrase)을 재구성하는데 사용된다. 이는 원래 단어 순서가 그것이 그들 자신 단어들의 세트에 의한 것이 아닌 방법으로 단어 쌍들 내에 캡쳐된다는 것을 의미한다.
하나의 개입되는 쿼리 용어를 갖는 쿼리 용어들로부터의 토큰-쌍 쿼리 용어들을 생성하는 것은, 단어들(또는 다른 토큰들)이 매치의 기회를 카테고리적으로 배제시킴 없이 필드(또는 필드들의 조합)으로부터 지나질 수 있고, 필드 스토어링 알고리즘이 이를 허용하도록 디자인되기 때문에, 검색함을 개선한다. 예컨대, 중간 이름들은 비즈니스 이름들로부터 "of"와 같은 관사이기 때문에, 레코드들로부터 자주 잘리고 생략된다. 단어들을 빠뜨리는 많은 다른 덜 명백한 예시들이 실제 데이터에서 발생한다. 쿼리 용어들의 트리플들(triples) 및 더 높은 세트들이 훨씬 더 좁은 쿼리들을 형성하는데 사용될 수 있다.
예컨대, 쿼리 확장 엔진(143)은 로우 쿼리 "John Jacob Jinglehiemer Schmidt"를 수신한다. 토큰-대표 스토어(127)는 토큰-대표들 "John", "Jacob", "Jingleheimer", "Schmidt"의 리스트를 반환한다. 로우 쿼리 내의 "Jingleheimer"은 "Jinglehiemer"을 포함하는 변형들의 정규 이웃 내의 토큰 대표인 그것의 더 빈번한 변형 ""Jingleheimer"의해 대체되었다는 점에 주목해야 한다. 쿼리 확장 엔진(143)은 이러한 예시에서 "Jacob John", "Jacob Jingleheimer", 및 "Jingleheimer Schmidt"와 같이, 인접한 쿼리 용어들을 이용하여 알파벳화된(토큰-대표-대체된) 토큰-쌍 쿼리 용어들을 생성한다. 쿼리 확장 절차는 또한, 하나의 개입 쿼리 용어 "Jingleheime John" 및 "Jacob Schmidt"를 갖는 쿼리 용어들에 대한 알파벳화된(토큰-대표-대체된) 토큰-쌍 쿼리 용어들을 생성한다.
소정 실시예들에 있어서, 로우 쿼리들은 앞서 설명한 바와 같이, 변형-검색의 일부로써 변형-룩업 절차 내에서 쿼리들이 되도록 디자인된 변형 쿼리들의 세트를 시스템적으로 생성하기 위해 로우 쿼리를 변형하는 쿼리 확장 절차를 적용함으로써 확장될 수 있다. 예시적으로, 두 개의 정부 할당 식별자들("gids")이 그들이 많아도 하나의 문자 내에서 변화에 의해 단지 달라진다면, 즉, 그들이 많아도 하나의 해밍 거리를 갖는다면 이때, 매치가 고려되는지 상상해보자. 삭제-조인 절차는 도 8에 도시된 바와 같이, 정확한 룩업을 통해 이를 실행하는데 사용될 수 있다. 데이터 소스(820) 내의 각각의 gid는 삭제 위치, 삭제 변형 및 연관된 키를 포함하는 검색 스토어(830)으로 각각의 삭제 엔트리를 기록하고 그것의 삭제 세트를 형성함으로서 확장된다(825). 로우 쿼리(800)는 gid로 구성된다. 로우 쿼리(800)는 검색 스토어(830)의 엔트리들을 확장하는데(825) 사용되는 동일한 삭제-조인 절차를 이용하여 그것의 삭제 세트(810)로 확장된다(805). 확장된 쿼리들은 키들로써 삭제 변형 및 삭제 위치 둘 모두를 이용하여 검색 스토어(830) 내에서 정렬된다(832). 이는 매칭 레코드들(837)을 추적하는데 사용될 수 있는 변형 매치들의 세트를 생성한다.
이러한 절차의 변형은 삭제 위치 제로(zero)를 가지고 검색 스토어(830) 내의 엔트리로써 원래 변형되지 않는 gid를 포함하는 것이고, 단지 삭제 변형(삭제 위치를 무시함)으로의 검색 룩업의 키를 변형시키는 것이다. 이는 단일 문자 삽입들, 삭제들 및 대체들, 및 두 문자 이동 및 비-인접 삽입/삭제를 포함하는 모든 삭제-조인 1 변형 매치들을 찾을 것이다 - 이는 길이-변화가 아닌 편집 거리의 대부분에서 두 개의 변화들 및 모든 편집 거리에서 하나의 변화들을 포함한다(이중-대체는 커버되지 않는다).
2.6.6 스코어링 엔진
(배치 모드에서) 데이터 소스 내의 다른 데이터 레코드들 또는 (증가 모드에서) 현재 데이터 클러스터들 내의 쿼리 데이터 레코드 및 데이터 레코드들 사이의 유사도의 측정은 스코어링 엔진(150)에 의해 계산되는 스코어로써 나타날 수 있다. 스코어링 엔진(150)은 예컨대, 이름 및/또는 주소를 개별적으로 및 집합적으로 구성하는 필드들과 같은 필드들의 조합 또는 하나 이상의 필드들의 전체 또는 부분적인 콘텐츠를 비교함으로써 두 레코드들을 비교할 수 있다. 이러한 콘텐츠는 그들인 레코드의 필드들의 값으로부터 유도되는 것과 같이, "필드-값들"로 불려질 수 있다.
소정 실시예들에 있어서, 필드-값들의 주어진 쌍 간의 스토어들은 값들 간의 편집 거리 또는 값들의 동일성과 같은 유사도 기준에 기반할 수 있다(다른 유사도 기준이 (예컨대, 안면 인식을 위한) 이미지 데이터에 대한 그래픽적 유사도 또는 음성의 유사도와 같은 다양한 타입의 데이터에 대한 유사도의 다른 형태들을 포함함). 하나 또는 두 개의 문자들로 구성되는 짧은 필드-값들은 종종 의도로부터 에러를 구별하기 위한 기초가 없는 것처럼 단지 동일성에 대해 비교될 수 있다. 개별적으로, 소정 필드-값들은 예컨대, "New York"를 포함하는 도시 필드와 같이 공간 문자들을 포함하는 것을 발생하는 유닛들로써 단지 의미론적 의미를 갖는다. 이러한 값들을 가지면, 하나의 값을 다른 것으로 바꾸기 위해 요구되는 삽입들, 삭제들 및 대체들의 수를 카운팅하는 편집 거리는 유사도의 좋은 측정치가 될 수 있다.
소정 실시예들에 있어서, 컨텐츠들이 소정 분리기(seperator)(일반적으로 그러나 독점적으로 공간 문자가 아닌)에 의해 분리되는 토큰들의 세트들이 순서화되는 필드-값들의 선택된 쌍 간의 스코어들은 변형 매치들(동일하지 않지만 또는 유사한 것처럼 인식되는), 및 토큰 순서 및 위치에서의 대응성인 그것들을 정확히 매칭하는 토큰들의 수를 고려할 수 있다. 예컨대, 개인 이름들은 공간 또는 콤마 분리자 중 어느 하나를 갖는 첫 번째, 중간 및 마지막 이름 필드들의 연결로써 구성될 수 있다. 데이터 퀄리티 이슈들은 다음을 포함한다: 집단화되지 않은 하나 이상의 필드들, 및 이름 순서 내의 변화들(예컨대, 첫 번째 및 마지막 이름들을 스와핑하는 것).
소정 실시예들에 있어서, 레코드들의 쌍 간의 스코어는 정보의 서로 다른 부분의 유사도의 존재, 부재 또는 정도에 가중치가 부여된 강조를 부여하기 위해, 조건적인 룰들의 계층에 따라, 필드-값들의 쌍들 간의 스코어-구성요소들로 불리는 스코어들의 세트들을 조합함으로써(예컨대, 함수에 의해 또는 룰셋에 의해 구체화되는)사용자-특정 스코어링 룰들 또는 미리 정의된 스코어링 룰들에 기반하여 계산될 수 있다. 예컨대, 주소 레코드들을 비교할 때, 동일한 집 넘버, 거리, 도시 및 집코드(zipcode)를 갖는 두 레코드들은 하나의 레코드가 집코드를 지나치거나 미스 매치된 집 코드들과 같이 소정 불일치가 존재하는 레코드들의 다른 쌍보다 높은 스코어를 일반적으로 받을 것이다. 스코어 구성요소들은 단일 스칼라 값으로 제한될 필요는 없지만 다수의 필드들 및 벡터들을 포함하는 레코드들을 포함하는 보다 복잡한 형태들을 취할 수 있다.
스코어들은 필드-값들의 집단의 상태와 같은 레코드 특징들 및/또는 개별 필드-값 쌍들에 대한 정성적인 스코어링 측정치들(예컨대, 스코어가 1이면, "정확한 매치(exact match)"이고 스코어가 1보다 적으나 퍼지 매치 임계값보다 크면 "퍼지 매치(fuzzy match)"임)의 세트를 인코딩하는 데이터 패턴 코드들인 매치 코드들을 포함할 수 있다. 매치 코드들은 앞서 설명한 검색 코드들과 같은 목적을 제공한다: 그들은 스코어링 측정치의 세트를 조직화하고 수적인 스코어의 계산을 요구하지 않고 정성적인 매칭 조건들의 구체화를 촉진한다.
스코어 구성요소들은 적어도 부분적인 수서를 가져야 하고, 그래서 그들은 "가장 높은(highest)" 또는 "가장 좋은(best)" 스코어를 결정하기 위해 비교되고 조합될 수 있다. 스코어 구성요소들의 부분적인 분서 및 가장 좋은 스코어를 결정하기 위해 스코어 엘리먼트들의 연관된 비교들은 순서화된 케이스-기반(case-base) 룰들의 세트와 관련된 미리 정의된 또는 사용자-특정 룰 세트의 형태를 취할 수 있다.
2.6.7 증가 모드에서의 클러스터 멤버쉽 결정
전체 클러스터링 프로세스는 클러스터 멤버쉽 결정에서 함께 온다. 도 9는 클러스터 멤버쉽을 결정하기 위한 프로세스의 예시를 도시한다. 데이터 소스(100)는 독출된다. 레코드들은 로우 쿼리가 형성되고 확장되기 전에(910), 병렬로(미도시) 세그멘테이션되고 파티셔닝된다. 소정 실시예들에 있어서, 앞서 설명한 쿼리 구성 및 쿼리 확장 절차들은 변형 프로파일러 스토어들(115) 및 변형 네트워크 스토어들(126)로부터 독출한다. 소정 실시예들에 있어서, 쿼리 레코드들은 먼저 더 많이 구별가능한 레코드들을 밀어넣기 위해 구별 가능성 기준(136)에 의해 정렬될 수 있다. 로우 후보 레코드들은 검색 스토어들(146)을 액세싱함으로써 앞서 설명한 후보 검색 엔진을 이용하여 찾아진다(920). 미리 정의된 또는 사용자-특정 컨디션들과 관련된 후보 선택 절차(930)는 후보 레코드들의 세트를 생성하기 위해 로우 후보 레코드들에 적용된다.
선택(930) 이후에 발견된 후보 레코드들은 현재 클러스터들의 멤버들이고 실제로 후보 클러스터 레코드들이며, 즉, 그들은 하나 이상의 클러스터들의 멤버들에 대한 근사적인 매치들이다. 선택 컨디션들(930)은 쿼리 레코드들이 더 가까운 조사에 대한 메리트를 위해 클러스터에 충분히 가까운지 결정하기 위해 구체화된다.
쿼리 레코드가 후보 선택(930) 이후에 어떠한 후보 클러스터 레코드들(932)도 반환하지 않는다면, 쿼리 레코드는 현재 클러스터의 어떠한 멤버들에 가깝지 않고, 새로운 클러스터가 생성된다(934). 쿼리 레코드는 마스터 레코드로써 마스터 레코드들 스토어(176)에 기록된다. 새로운 클러스터 레코드는 또한, 대표 레코드들 스토어(178)에 기록되고, 데이터 클러스터들(180)에 기록된다. 새로운 클러스터 레코드는 검색 스토어들(146)에 부가되는 검색-엔트리 확장 절차(935)를 이용하여 검색-엔트리들을 집단화하는데 사용된다. 소정 실시예들에 있어서, 로우 후보 클러스터 레코드들(920)을 찾기 위해 후보 검색 엔진에 의해 사용되는 검색 스토어들(146)은 단지 마스터 레코드들로부터 집단화된다(935). 다른 실시예들에 있어서, 마스터 레코드들에 덧붙여, 대표 레코드들 스토어(148) 내의 레코드들은 또한 검색 스토어(952)에 부가될 수 있다.
마스터 레코드는 예컨대, 클러스터의 첫 번째 멤버와 같이, 소정 방법으로 클러스터를 특징짓는 클러스터의 특정 대표 멤버이다. 소정 실시예들에 있어서, 데이터는 클러스터링이 시작하기 전에 정렬되고, 따라서, 새로운 클러스터의 첫 번째 멤버는 그 클러스터와 관련된 정렬 순서에서 첫 번째일 것이다. 예컨대, 은행 대출 당사자들의 데이터 셋에 있어서, 데이터는 마스터 레코드를 가장 긴 회사 이름을 갖는 클러스터의 멤버로 생성하는 회사 이름 내의 단어들의 수를 감소시킴으로써 정렬될 수 있다. 긴 회사 이름들을 갖는 레코드들은 그들이 더 많은 토큰들을 포함하고 또한 토큰들의 더 큰 다이버시티를 포함하기 때문에, 긴 이름들이 더 짧은 이름들보다 소정 유사도 스코어링 절차들에 의해 쉽게 구별될 수 있으므로, 클러스터를 시딩(seed)하기 위해 선택될 수 있다.
클러스터는 하나 이상의 마스터 레코드를 가질 수 있다. 이러한 특징은 클러스터들을 병합할 때 및 사람에 의해 결정되는 결정들을 갖는 알고리즘에 의해 생성되는 클러스터 멤버쉽 결정을 오버라이딩할 때 클러스터 승인 프로세스 내에서 아래와 같이 사용될 것이다.
후보 선택 절차(930)가 하나 이상의 후보 레코드들을 반환한다면, 후보 레코드들과 연관된 모든 데이터 클러스터의 멤버들은 쿼리 레코드에 대항하여 정렬되어지도록 검색된다. 연관된 데이터 클러스터들은 후보 데이터 클러스터들이라 불린다. 소정 실시예들에 있어서, 모든 클러스터 멤버는 검색되지 않지만(939), 단지 대표 레코드들 스토어(178) 내에서 정렬된 이러한 멤버들만이 추적된다. 스코어링 엔진(150)은 쿼리 레코드 및 모든 검색된 클러스터 멤버들 간의 유사도 스코어를 결정하는데 사용된다. 만약 가장 좋은 스코어가 매치 임계값보다 높다면, 쿼리 레코드는 대응하는 클러스터에 부가된다. 만약 쿼리 레코드가 하나 이상의 클러스터에 대한 매치 임계값보다 높다면, 그것은 가장 높은 스코어를 갖는 클러스터에 부가된다. 소정 실시예들에 있어서, 만약 쿼리 레코드가 하나 이상의 클러스터에 대한 동일한 가장 좋은 스코어를 갖는다면, 그것은 첫 번째 클러스터에 부가된다. 다른 실시예들에 있어서, 만약 쿼리 레코드가 하나 이상의 클러스터에 대한 동일한 가장 높은 스코어를 갖는다면, 그것은 멤버쉽의 우도(likelihood)를 반영하는 가중치를 갖는 모든 그러한 클러스터들에 부가될 수 있다.
소정 실시예들에 있어서, 쿼리 레코드가 데이터 클러스터와 연관된 이후, 클러스터 멤버쉽을 결정하는데 책임이 있는 가장 좋은 스코어는 임계값과 비교될 수 있다. 만약 가장 좋은 스코어가 이러한 임계값보다 낮다면, 쿼리 레코드는 클러스터의 다른 멤버들로부터 충분히 구별되는 것으로 고려되고, 대표 레코드들 스토어(178)에 부가된다. 여기서, 의도는 유사도 스코어들의 부분적인 이행성을 레버리징하는 것이다. 만약 A가 B와 많이 유하고, C가 A와 유사하면, B는 C와 적어도 합리적으로 유사할 것이다. 이러한 경우, A에 대한한 스코어가 충분히 정확할 것이기 때문에, B에 대항하여 C를 스코어링하는 것은 필요하지 않을 수 있다. 이러한 임계값은 "near-dulpicate" 임계값으로 불릴 수 있고 매우 높게 세팅될 수 있다. 목적은 매우 동일한 클러스터 멤버들에 특히 대항하여 중복되는 스코어링을 감소시키기 위함이다.
일 실시예에 있어서, 쿼리 및 로우 후보 레코드 간의 토큰-쌍 쿼리 용어들을 매칭하는 수는 카운팅될 수 있고 만약 상기 수가 후보 임계값을 초과한다면, 로우 후보 레코드는 후보 레코드이고, 연관된 데이터 클러스터는 후보 클러스터로 고려된다. 모든 후보 데이터 클러스터들이 식별된 이후, 쿼리 레코드는 가장 좋은 스코어를 찾기 위해 후보 클러스터들의 멤버들에 대항하여 스코어링되고, 프로세스는 전과 같이 계속된다.
도 10a 내지 10d는 멀티-토큰 쿼리 필드에 대한 클러스터링 프로세스의 실시예를 도시하는 다이어그램이다. 도 10a에 있어서, 로우 쿼리(1000)는 회사 이름 "ACME-Metl Grp"로 부터 형성된다. 그것은 표준화된 로우 쿼리(1004) "acme metl grp"를 부여하기 위해 구두점을 대체하고 로워-케이싱(lower-casing)에 의해 표준화된다(1002). 각 토큰은 도 3a 내지 3b에서와 같이 그것의 토큰-대표 벡터(1006)에 의해 대체된다. 단어 "metl"은 두 개의 정규 이웃들에 속하고, 따라서 두 토큰들 "metal" 및 "meta"를 갖는다; 둘 모두 결과 토큰-대체된 로우 쿼리 내에서 사용된다. 이러한 토큰-대체된 로우 쿼리는 예컨대, "acme metal", "group metal", group meta" 등등과 같은 단일-단어 토큰들 및 알파벳화된 토큰 워드 쌍들의 리스트로 구성되는 확장된 쿼리(101)을 생성하기 위해 확장된다(1008).
도 10b에 있어서, 프로세스는 계속된다. 표준화된 로우 쿼리(1004)는 확장된 쿼리(1010)를 부여하기 위해 토큰-대체되고(1006) 확장된다(1008). 개별적으로, 마스터 레코드들의 스토어(1050)의 엔트리들은 검색 스토어(1054)를 집단화하기 위해 확장된다(1052). 검색 스토어(1054) 내의 변형-룩업은 확장된 쿼리(1010)으로부터 각 토큰 쌍을 취하고 검색 스토어(1054) 내에서 그것을 찾음으로써(1056) 이러한 경우에서 작업한다. 공통 클러스터 id에 매칭되는 토큰 쌍들의 수는 카운팅되고(1058) 로우 후보 레코드들(1060)의 리스트 내에 저장된 결과이다. 이러한 예시에 있어서, 매칭 토큰 쌍들의 수는 두 회사 이름들의 스코어에 대한 프록시이다. 임계값은 쿼리 및 마스터 레코드 내의 토큰들의 수에 대한 너무 적은 매칭 쌍들을 갖는 후보들(1062)를 제거하는데 적용된다(마스터 레코드 내의 이름의 토큰들 내의 길이는 이러한 목적을 위해 검색 스토어(1054) 내에 저장되었음).
도 10c에 있어서, 후보 레코드들은 (클러스터 seq를 포함하는) 후보 클러스터 id들(1072)에 대한 대표 레코드 스토어(1070)으로부터 대표 레코드들을 인출하기 위해 독출된다. 표준화된 유입 레코드(1074) 내에 나타나는 스코어링 필드들은 각 대표 레코드(1076)으로부터의 검색된 필드들에 대항하여 개별적으로 스코어링된다(1078). 이러한 필드-레벨 스코어들(1080)은 비교되는 레코드들에 대한 스코어를 계산하기 위해, 케이스-기반 스코어 룰 세트(1082) 내에서 조합된다. 여기서, 스코어는 매치 결정(1084)로써 논리적 용어들로 인코딩된다. 여기서, 룰들은 "and-ing" 입력 컨디션들이 가로지르는 것으로, 및 "or-ing"에 의해 경우들이 떨어지는 것으로 독출된다. 예컨대, 이름 스코어가 near_duplicate_threshold보다 크고, id_score가 1이며, date_score가 1이라면, 매치 결정은 "Near duplicate"이다. 만약 이름 스코어가 near_duplicate_threshold보다 낮으면, 다음 로우(row)는 시도될 것이고, 그리고, 만약에 있다면, 매칭 컨디션이 발견될 때까지 시도될 것이다 소정 실시예에 있어서, 이러한 룰 세트는 여기 참조로서 첨부된 US 특허 번호 8,069,129에서 설명되는 환경과 같은 비즈니스 룰들 환경(Business Rules Environment) 을 이용하여 인코딩될 수 있다. 스코어링 룰 세트(1082)의 컬럼(column)들에 도시된 스코어 구성요소들은 예컨대, 두 번째 로우가 "311"의 매치 코드를 가질 수 있는 것과 같이, 매치 코드 내에서 인코딩될 수 있고, 여기서, 첫 번째 위치에서의 "3"은 매치 임계값보다 높은 이름 스코어를 지시하고(그러나 near-duplicate 임계값보다는 낮음) 순서 두 번째 위치들에서의 "1"은 id 스코어 및 데이트 스코어에 대한 정확한 매치들을 지시한다.
도 10d에 있어서, 스코어 룰 세트(1082)에 있어서, 비교되는 레코드들(1084)에 대한 매치 결정은 다른 케이스-기반 룰셋 내의 액션(1088)로 번역된다(1086). 서로 다른 액션들이 서로 다른 매치 결정들에 대해 발생한다. 매치 결정(1090) "Near Duplicate"는 이름 스코어가 (함축된 의미에 의해 match_score보다 큰) near_duplicate_threshold보다 크다면, 할당되고, 다른 스코어는 1이다. 결과 액션(1092)는 유입되는 레코드로 현재 클러스터 id를 할당하는 것이다. 다른 한편, 만약 매치 결정(1093)이 "Match"("Near Duplicate" 아님)였다면, 현재 매치 임계값을 할당함에 덧붙여, 액션(1094)은 대표 레코드들 스토어(1070)으로 레코드들을 추가하는 것일 것이다. 매치 결정(1095)가 "No match"였다면, 액션들(1096-1099)은 새로운 클러스터 id를 생성하고 그것을 레코드에 할당하는 것, 레코드를 마스터 레코드들 스토어(1050)에 추가하는 것, 검색-엔트리 확장 절차(1052)를 레코드에 적용하고 그 결과들을 검색 인덱스(1054)에 추가하는 것 및 그 레코드를 대표 레코드들 스토어(1070)에 추가하는 것일 것이다.
2.6.8 배치 모드에서의 클러스터 멤버쉽 결정
클러스터링 프로세스는 증가 모드에서 보다 배치 모드에서 다소 서로 다르게 진행된다. 도 11a 내지 11d는 클러스터링 프로세스의 다이어그램이다. 도 11a에 있어서, 클러스터링 프로세스의 하이-레벨 개요가 주어진다. 변형 프로파일러 스토어들(115) 및 변형 네트워크 스토어들(126)은 검색 스토어들(146) 내에서 검색-엔트리들(145)을 집단화하기 위해 검색-엔트리 확장 절차를 통해 독출되고 프로세싱될 수 있다. 이는 전처리 과정으로써 일어난다. 데이터 소스(100)는 독출된다. 로우 쿼리는 생성되고 각 레코드(1110)에 대해 확장되며, 소정 실시예들에서 변형 프로파일러 스토어들(115) 및 변형 네트워크 스토어들(126) 내의 데이터를 사용한다. 확장된 쿼리들은 클러스터 멤버쉽 기준을 만족할 수 없는 레코드를 제외하기 위한 이러한 방법으로 클러스터 멤버쉽 기준을 근사화하기 위해 마련될 수 있다. 확장된 쿼리들은 검색 스토어들(146)으로부터 로우 후보 레코드들을 검색하는 후보 검색 엔진(1120)으로 통과될 수 있다. 로우 후보 레코드들은 프록시 매치 기준을 만족하는 것을 선택하기 위해 후보 선택기(1130)에 의해 필터링된다. 소정 실시예들에 있어서, 프록시 매치 기준은 각각의 레코드에 대해 생성되는 다수의 검색들의 결과를 인코딩하는 검색 코드들을 이용하여 부분적으로 실현될 수 있다. 프록시 매치 기준을 만족하는 모든 후보 레코드들은 쿼리 레코드(1140)에 대항하여 상세 스코어링의 영향을 받을 수 있고, 그들의 결과 스코어들은 변형-쌍 스코어 스토어(1150)에 저장될 수 있다.
소정 실시예들에 있어서, 매치 코드는 스코어의 구성요소들에 대한 스코어 결정들의 퀄리티(포스트-코드 매치 또는 이름 매치의 퀄리티와 같은) 및 쌍의 레코드들 내의 필드들의 조합들 또는 필드들의 집단의 산태의 인코딩들을 포함하는 스코어링 결정 아래의 상세 내용들을 인코등하기 위해 각각의 쌍에 할당될 수 있다.
데이터 소스(100) 내의 모든 레코드들이 프로세싱된 후에, 그리고 변형-쌍 스코어 스토어(1150)이 완료된 후에, 데이터 레코드들(100)은 다시 독출된다. 데이터 소스 레코드들은 각 데이터 소스 레코드가 클러스터 멤버쉽 결정이 앰비규어스 또는 가장자리인(marginal) 때를 지시하는 것 및, 새로운 클러스터링을 생성하는 것을 포함하며 속하는 클러스터를 결정하기 위해 클러스터 멤버쉽 엔진(1150)에 의해 프로세싱될 수 있다. 사용자 인터페이스(104)를 사용하는 사용자(102)는 변형-쌍 스코어 스토어(1150)를 검토할 수 있다. 소정 실시예들에 있어서, 사용자 인터페이스는 각 레코드가 노드이고 후보 레코드들의 변형-쌍이 에지인 변형-쌍 스코어들의 네트워트를 그래픽으로 디스플레이할 수 있다. 사용자 인터페이스는 전체 스코어, 스코어 상세(전체 스코어에 기여하는 성분 스코어를 포함함), 검색 코드들 및 후보 레코드들의 쌍과 연관된 매치 코드들를 기록할 수 있다. 소정 실시예들에 있어서, 사용자(102)는 변형 페어링들의 상세를 추가, 제거 또는 변형하기 위해 변형-쌍 스코어 스토어(1150)를 조정할 수 있다.
변형-쌍 스코어 스토어가 데이터셋(100)에 대해 완전하기 때문에(1150), 배치 모드 클러스터 멤버쉽 결정은 단지 증가 모드에서와 같이, 이미 프로세싱되었던 레코드보다 차라리, 클러스터 멤버쉽 결정들을 생성하기 위해 이용가능한 레코드들의 완전한 세트를 갖는다.
도 11b에 있어서, 클러스터 멤버쉽 엔진의 하나의 배치-모드 실시예가 도시된다. 데이터 레코드들은 변형-쌍 스코어 스토어(1150)을 획득하기 위해 프로세싱되는 동일한 데이터 소스(100)로부터 독출된다. 소정 실시예들에 있어서, 레코드들은 더 많은 구별 가능한 레코드들을 먼저 밀어내기 위해 구별 가능성 기준(1151)에 따라 정렬될 수 있다. 클러스터 스토어들(170) 및 데이터 클러스터들(180)의 집단은 증가한다. 각 쿼리 레코드는 만약 그것이 이미 클러스터의 멤버라면, 그렇다면, 연관된 클러스터 id(들)을 검색할지 결정하기 위해 그것의 유니크한 레코드 식별자(그것은, 하나가 이미 부착되었다고 가정됨) 상의 클러스터 스토어들(170) 내에서 찾아진다(1152).
만약 쿼리 레코드의 유니크한 레코드 식별자가 클러스터 스토어들(170) 내에서 이미 나타났다면, 쿼리 레코드는 이전 데이터 레코드의 프로세싱 동안 클러스터 스토어들에 부가되어야만 한다. 클러스터 id(1153)을 할당하고, 데이터 클러스터들(180)을 업데이트해야 한다(1154).
만약 유니크한 레코드 식별자가 클러스터 스토어들 내에 나타나지 않는다면, 그것의 변형 페어링된 레코드들은 변형-쌍 스코어 스토어(1150)으로부터 찾아질 수 있고(1155), 스코어가 매치 임계값을 넘는 것들은 검색된다. 매치 임게값은 동일한 클러스터 내에 있는데 충분히 유사한 레코드들이 원본 레코드, 클러스터의 마스터 레코드이었음을 지시한다. 현재 세팅에 있어서, 마스터 레코드는 클러스터의 첫 번째 멤버가 되어질 것으로 고려될 수 있다. 그러므로, 대부분의 레코드들은 마스터 레코드 자신이 아니고, 이러한 매치 임계값은 변형-페어링된 레코드로써 동일한 클러스터 내의 멤버쉽을 지원하는데 충분히 유사한 레코드를 식별하는데 사용된다. 그리고는, 각각의 변형-페어링된 레코드는 그들 중 하나 이상이 이미 클러스터에 할당되었는지 결정하기 위해 클러스터 스토어들(1355) 내에서 찾아질 수 있다. 고려해야 할 세가지 경우들이 존재한다 : 변형-페어링된 레코드들 중 아무것도 클러스터 스토어들 내에 없고, 하나가 있거나 많은 것이 있는 경우.
변형-페어링된 레코드들 중 아무것도 클러스터 스토어들 내에 존재하지 않는다면, 현재 레코드는 새로운 클러스터의 첫 번째 멤버가 되어지도록 현재 클러스터들로부터 충분히 구별된다. 새로운 클러스터는 현재 레코드에 기반하여 생성되고(1156), 데이터 클러스터들은 새로운 클러스터를 가지고 업데이트된다(1154). 게다가, 매치 임계값을 넘는 변형-페어링된 레코드들의 각각은 각 변형-페어링된 레코드의 유니크한 레코드 식별자 및 변형-쌍 스코어 스토어들(1150)으로부터의 연관된 스코어링 정보를 포함하여 클러스터에 부가된다. 앞서 설명한 바와 같이, 스코어들이 매치 임계값을 초과하는 레코드들은 현재 레코드가 그것, 그것이 새로운 클러스터의 첫 번째 멤버로써, 클러스터의 마스터 레코드였던 것과 같이 동일한 클러스터 내에 있기에 충분하도록 유사하다. 이러한 레코드들은 레코드들에 대한 정보가 불완전하기 때문에, 데이터 클러스터들(180)을 업데이트하는데 사용될 수 있다. 각 레코드는 그것이 데이터 소스(100)로부터 독출되고 그것의 유니크한 레코드 식별자가 클러스터 스토어들(170) 내에서 발견되는 때, 데이터 클러스터들(180)에 부가될 것이다.
만약 하나의 변형-쌍 레코드가 변해 클러스터의 멤버가 되어질 것으로 발견된다면, 현재 레코드는 클러스터의 멤버의 매치 임계값 내에 있고, 그 클러스터의 멤버가 되어지도록 취해진다. 현재 레코드는 연관된 클러스터 id(1153)에 할당된다. 그리고는, 데이터 클러스터들(180)은 현재 레코드를 가지고 업데이트된다(1154). 클러스터 검색 스토어들(170)은 현재 레코드와 연관된 클러스터 정보를 가지고 업데이트될 수 있다(1168)
도 11c는 하나의 변형-쌍 레코드가 현재 클러스터의 멤버인 예시를 제공한다. 현재 클러스터의 마스터 레코드(1180)는 원형 내에 채워지는 검정색에 의해 마킹된다. 비-마스터 레코드들은 원형 내에 채워지는 회색에 의해 지시된다. near-duplicate 임계값(1181)은 마스터 레코드에 매우 유사한 레코드들을 둘러싸고, 예컨대, 대표 레코드들 스토어(178)(클러스터 스토어(180) 중 하나)에 부가되지 않을 수 있다. 매치 임계값(1182)은 직접 연관에 의해 클러스터의 멤버가 되어질 마스터 레코드에 충분히 유사한 모든 레코드들을 둘러싼다. 두 번째 디스조인트 클러스터의 마스터 레코드(1183)이, 그것의 near-duplicate 및 매치 임계 경계(threshold boundaries)들과 함께 도시된다.
현재 레코드(1184)는 도시되는 두 클러스터들의 매치 임계 경계들의 외곽에 떨어지는 것과 같이 현재 클러스터의 멤버가 아니다. 그것 자신의 매치 임계 경계(1185)는 하나의 데이터 레코드(1186)를 둘러싼다. 이러한 데이터 레코드(1186)는 그것이 매치 임계값 내에 있기 때문에, 데이터 레코드(1184)에 대한 변형-쌍 데이터 레코드일 것이다(그리고 데이터 레코드(1184)와 연관된 클러스터의 멤버일 것이고, 여기에 그렇지 않은 마스터 레코드인 데이터 레코드(1184)인).데이터 레코드(1186)는 이미 마스터 레코드(1180)과 연관된 클러스터의 멤버이고, 그러므로, 현재 데이터 레코드(1184)는 이러한 클러스터에 부가된다. 현재 데이터 레코드가 매치 임계값(1182)의 외곽에 있기 때문에, 에지(1187)는 그것이 클러스터 멤버쉽을 유도하는 데이터 레코드로의 연결을 도시하기 위해 그려진다.
소정 실시예들에 있어서, 연관들의 체인들(chains)을 통해 클러스터들의 성장을 제한하기 위해, 외부 서스펙트(suspect) 임계 경계(1188)는 클러스터 멤버가 발견될 수 있는 영역을 제한하기 위해 마스터 레코드(1180)의 주변에 그려질 수 있다. 데이터 레코드(1189)는 현재 클러스터의 멤버인 데이터 레코드(1184)의 매치 임계값 내에 있지만, 그것은 서스펙트 임계 경계(1188)의 외곽에 있고 따라서, 마스터 레코드(1180)의 클러스터 내의 멤버쉽으로부터 제외된다. 이러한 가장자리의 변형-페어링들은 또한, 여기 단속선(dashed line)을 가지고 있는 것과 같이 그래픽적 네트워크 다이어그램 내에서 구별될 수 있다.
도 11b로 돌아가서, 만약 많은 변형-쌍 레코드들이 형재 클러스터들의 멤버들이 되어지도록 발견된다면, 클러스터들의 세트는 중복제거된다. 만약 단지 하나의 구별되는 클러스터가 존재한다면, 이전 경우는 적용한다. 만약 현재 레코드의 하나 이상의 변형-쌍 레코드들을 포함하는 여러 구별되는 클러스터들이 존재한다면, 일 실시예에 있어서, 각 클러스터 내의 가장 좋은 스코어들 및 대응하는 매칭 변형 쌍 레코드는 클러스터 멤버쉽 결정의 불확실성 또는 앰비규어티의 근거로써 기록된다(1162). 가장 좋은 매치는 각 구별되는 클러스터로부터 가장 좋은 스코어 레코드들을 비교함으로써 찾아질 수 있다(1164). 같은 결과인 경우에는, 현재 레코드는 가장 낮은 클러스터 id 를 갖는 클러스터에 할당된다. 소정 실시예들에 있어서, 현재 레코드는 각 클러스터의 상대적인 스코어들에 의해 결정되는 가중치를 가진 하나 이상의 클러스터의 부분적인 멤버로 만들어질 수 있다.
연관된 클러스터 id는 현재 레코드에 할당된다(1153). 데이터 클러스터들(180)은 현재 레코드를 가지고 업데이트된다(1154). 클러스터 스토어들(170)은 또한 그들의 스코어들을 갖는 대체 클러스터 멤버쉽 페어링들의 리스트 및 할당된 클러스터 id 를 포함하는 현재 레코드와 연관된 클러스터 정보를 가지고 업데이트된다(1168).
도 11d는 현재 데이터 레코드가 두 구별되는 클러스터들의 매치 임계값 내에 있는 예시를 도시한다. 앞서와 같이, 데이터 레코드들(1180 및 1183)은 도시된 매치 임계 경계들 및 그들의 각각의 near-duplicate)를 갖는 구별되는 클러스터들의 마스터 레코드들이다. 현재 데이터 레코드(1190)는 클러스터 멤버쉽에 대한 고려 하에 있다. 그것은 그것의 매치 임계값, 데이터 레코드들(1193 및 1194)의 내부의 두 변형-쌍 레코드들을 갖는다. 각각은 각각 마스터 레코드들(1180 및 1183)과 연관된 클러스터의 멤버이다. 클러스터들 및 이러한 변형-페어링된 레코드들 둘 모두는 클러스터 스토어들(180) 내에 기록될 수 있다.두 개 사이의 가장 좋은 스코어가 현재 데이터 레코드(1190) 및 변형-쌍 데이터 레코드(1193) 사이의 스코어인 것을 상상해봐라. 현재 데이터 레코드(1190)는 마스터 레코드(1180)의 클러스터에 할당될 것이고, 데이터 레코드(1193)를 갖는 그것의 페어링은 검은색 에지와 함께 마킹될 것이다. 변형-쌍 데이터 레코드(1194), 마스터 레코드(1183)을 갖는 그것의 연관된 클러스터는 회색 에지에 의해 마킹되고 기록될 것이다.
GUI(104)에 있어서, 클러스터들의 네트워크는 노드로써 각가의 데이터 레코드를 가지고 디스플레이될 수 있다. 마스터 레코드들인 데이터 레코드들은 구별될 수 있다. 클러스터 내의 데이터 레코드들의 집합을 에워싸는 클러스터의 결계들은 도시될 수 있다. 클러스터 멤버를 갖는 변형-쌍에 의해 클러스터의 멤버인 매치 경계의 외곽의 데이터 레코드들은 에지에 의해 지시될 수 있다. 하나 이상의 클러스터의 잠재적인 멤버들인 이러한 데이터 레코드들은 하이라이트될 수 있다. 이들은 배치가 클러스터 승인 프로세스 동안 사용자에 의한 검토에 영향을 받을 수 있는 데이터 레코드들이고, 그들을 구별하고 다수의 클러스터로 그들의 링키를 지시하는 것은 멤버쉽 상의 최종 결정에 도달하는 중에 사용자를 도울 수 있다. 사용자(102)는 아래 설명되는 클러스터 승인 프로세스의 일부로써 또는 클러스터 네트워크의 검토의 일부로써 이러한 결정들의 하기 위해 사용자 인터페이스(104)를 사용할 수 있다.
2.6.9 토큰-쌍 쿼리 용어들에 대한 변형-룩업 절차
후보 레코드들은 클러스터 id가 검색 결과에 의해 참조되는 것으로 나타나는 서로 다른 쿼리들의 수에 기반하여 랭킹될 수 있다. 예컨대, 클러스터 1은 세 개의 쿼리들에 대한 검색 결과들에 의해 참조될 수 있다; 클러스터 10은 두 개의 쿼리들에 대한 검색 결과들에 의해 참조될 수 있다; 클러스터 15는 네 개의 쿼리들에 대한 검색 결과들에 의해 참조될 수 있다, 등등... 소정 실시예들에 있어서, 후보 레코드들은 토큰-쌍 쿼리 용어들의 수로 후보 레코드를 참조하는 검색 결과들을 생성했던 토큰-쌍 쿼리 용어들의 수의 비율에 기반하여 스코어로 주어진다. 스코어는 다음 공식을 이용하여 결정될 수 있다.
여기서, score candidate 는 클러스터의 스코어이다. QueryPairs candidate 는 클러스터를 식별하는 임으의 검색 결과를 포함하는 쿼리들의 수이다. 그리고, QueryPairs는 검색 스토어 내의 확장된 쿼리로부터 찾아지는 토큰-쌍 용어들의 수이다.
후보 레코드들은 후보 임계값과 스코어를 비교함으로써 식별될 수 있다. 예컨대, 쿼리 쌍들의 절반을 매칭하는 것은 좋은 스코어일 수 있다.
소정 실시예들에 있어서, 보충적인 정보는 어떤 후보들을 유지해야 하는지를 결정하는데 사용될 수 있다. 예컨대, (개입하는 쿼리 용어를 갖는 쿼리 용엇들 및 인접 쿼리 용어들을 포함하는) 토큰-쌍 쿼리 용어들의 수는 2N-3과 같이 쿼리 N 내의 토큰들의 수의 용어로 표현될 수 있다. 후보 레코드는 M 토큰들을 갖고, 따라서, 2M-3 토큰-쌍 쿼리 용어들을 갖는다. 후보들의 좋은 세트를 수여하는 예시 기준은 매치된 쿼리 쌍들의 수가 2*minimum(M,N)-5와 같거나 더 크도록 요구하는 것이다. 이러한 표현의 키 특징은 후보 레코드가 쿼리보다 더 적은 토큰-쌍들을 가질 것이라는 것과 결론적으로, 더 적은 매칭 쌍들이 가능한 매치를 갖기 위해 요구된다는 점을 인식하는 것이다. 다른 표현들도 가능하다.
2.6.10 쿼리 거절 취급
소정 실시예들에 있어서, 너무 많은 구별되는 레코드들을 참조하는 검색 결과들은 충분히 구별되지 않기 때문에 폐기될 수 있다. 예컨대, 토큰-쌍 쿼리 용어에 의해 반환되는 레코드들의 최대 수에 대한 임계값이 100일 수 있고, 이는 토큰-쌍 쿼리 용어가 도움이 되지 않았다면, 구별되는 레코드들의 합리적인 수가 낭비되는 시간 없이 스코어링 되어지는 것을 허용한다. 클러스터 멤버쉽은 하나 이상의 필드 유사도 스코어에 의해 전형적으로 결정된다. 만약 토큰-쌍 쿼리 용어가 많은 수의 클러스터들을 반환한다면, 이는 소정 다른 값이 후보들의 세트를 가로질러 상당히 변화하고, 반면 토큰-쌍 쿼리 용어는 그렇지 않다는 것을 의미할 수 있다. 검색되는 레코드들의 수가 임계값에 도달한 후에, 토큰-쌍 쿼리 용어는 그것이 다른 구별하는 정보가 그랬던 것과 마찬가지로 효율적이지 않을 수 있기 때문에, 드랍(dropped)될 것이다.
단일-토큰 쿼리 용어들에 대해, 임계값은 더 낮게 세팅되고, 아마도 10보다 적을 것이다. 추론은 개별 단일-토큰 쿼리 용어들이 일반적으로, 매우 구별적이지 않다는 것이다; 실제로, 그들은 쌍이 형성될 수 없는 단 하나의 단어의 토큰들을 포함하는 레코드들을 갖는 매치들을 검출하는데 가장 유용할 수 있다. 만약, 단일-토큰 쿼리 용어가 구별되는 매치를 찾는데 성공적이지 않다면, 보다 분석적인 정보의 소정 다른 부분을 사용하는 것이 더 생산적일 수 있다.
소정 시나리오들에 있어서, 로우 쿼리는 임의의 후보 쿼리들을 생성할 수 없고, 예컨대, 그것은 블랙크 또는 널일 수 있다. 또는, 쿼리 용어들은 어떠한 쿼리도 생성될 수 없는 경우에 너무 일반적이기 때문에 모두 거절될 수 있다. 두 경우들 모두에 있어서, 레코드는 쿼리 프로세스로부터 거절된다. 서로 다른 필드(또는 필드들의 조합)에 관련된 대체 쿼리 구성 표현은 클러스터링을 구동하기 위해 유용한 쿼리를 형성하기 위해 사용될 수 있다. 클러스터 전략 식별자는 그들이 클러스터링되었던 쿼리 표현 하에서 지시하기 위해 레코드들을 마킹하는데 사용될 수 있다.
예컨대, 첫 번째 클러스터링이 정부 할당 식별자에 기반하였고, 많은 수의 레코드들이 예컨대, 모두 제로들(zeroes)의 디폴트 값을 갖는 것을 상상해보자. 100 클러스터들이 모두 제로들의 정부 할당 식별자를 가지고 형성된 후에(이름 및 출생일과 같은 다른 필드는 다름), 이후의 레코드들은 거절될 것이다. 소정 실시예들에 있어서, 너무 일반적인 쿼리 용어를 공유하는 대표 레코드들의 줄어든 세트 또는 모든 레코드들은 그들의 클러스터들의 다른 멤버들 및 이미 클러스터링된 것들을 포함하여 추출된다. 레코드들의 이러한 집합은 새로운 클러스터 전략을 이용하여 재클러스터링된다. 오래된 전략 하의 원본 클러스터 id는 나중의 사용을 위해 각 레코드에 대해 저장될 수 있다. 이러한 예시에 있어서, 이름에 기반한 쿼리를 사용하는 새로운 클러스터 전략은 레코드들의 이러한 세트 상에서 보다 분석적일 것 같고, 정부 할당 식별자 클러스터 전략이 실패했었던 레코드들을 클러스터링하는데 사용될 수 있다. 일반적으로, 쿼리를 구성하는데 사용하기 위한 필드들은 가장 많은 구별적인 것으로부터 가장 적은 구별적인 것으로 선택된다. 불완전한 레코드들은 더 적은 구별적인 것이고, 잠재적으로 앰비규어스 클러스터 멤버쉽 결정들을 이끌고, 따라서, 그들이 전부 집단화된 레코드들로부터 개별적으로 클러스터링되어지는 것은 유용하다.
두 번째 클러스터 전략 하에서 클러스터링할 때, 세그먼트 값으로써 너무 일반적인 쿼리를 사용하는 것은 유용할 수 있다. 이는 공통 쿼리 값을 공유하는 세트로부터 레코드로의 클러스터링을 제한할 것이다. 두 번째 클러스터링 이후에, 오래된 및 새로운 클러스터 id들의 다수의 매치 조정은 사용될 수 있다. 첫 번째 및 두 번째 클러스터링들은 클러스터 전략의 선택이 클러스터 멤버쉽 결정들에 영향을 줄 수 있기 때문에, 클러스터로 레코드들의 서로 다른 세트들을 할당할 수 있다. 사우의 매치 조정은 서로 다른 전략들 하에서 클러스터들을 병합하는 것을 시도할 수 있다. 다수의 매치 조정의 상세는 다르지만 관련된 문맥으로 이하 설명된다.
소정 실시예들에 있어서, 검색 스토어(146)는 서로 다른 필드들(또는 필드들의 조합들)을 이용하여 쿼리들에 대응하는 다수의 검색-확장 절차들에 대한 검색 엔트리를 포함할 수 있다. 예컨대, 검색 스토어(146)는 정부 할당 식별자 쿼리들에 기반한 클러스터들에 대한 엔트리들을 포함할 수 있다. 검색-스토어 엔트리들은 이름=기반 쿼리들을 위해, 동일한 클러스터 id 키들을 보유하면서, 재확장될 수 있다. 즉, 데이터 소스로써 정부 할당 식별자 쿼리를 이용하여 클러스터링함으로써 유도되는 데이터 클러스터들을 이용하여, 이름-기반 쿼리 표현을 위한 검색 엔트리들은 확장될 수 있다. 이는 결국 검색 스토어를 재인덱싱하는 것이 된다. 만약 현재 클러스터들의 세트가 새로운 쿼리 전략을 위해 재인덱싱되었다면, 거절된 레코드들을 프로세싱하는 것은 관련된 레코드들을 추출하고 재프로세싱하는 것을 요구하지 않지만, 새로운 쿼리를 위한 재인덱싱된 검색 스토어를 이용하여 새로운 클러스터링 실행으로써 진행할 수 있다.
2.6.11 다수의 매치 조정
도 12에 있어서, 다수의 매치 조정 단계 절차가 도시된다. 만약 클러스터들이 벡터화된 형태로 홀딩된다면, 즉, 다수의 클러스터 멤버들이 단일 레코드 내에서 함께 홀딩된다면, 클러스터 멤버들은 개별 레코드들(1200)로 정규화된다. 이러한 레코드들은 유니크한 레코드 키(1202)에 의해 파티셔닝된다. 이는 각각의 원본 데이터 레코드의 모든 복사본들이 동일한 파티션 내에 있다는 것을 보장한ㄷ. 데이터 레코드들은 레코드(1204)와 연관된 구별되는 클러스터 키들의 벡터를 획득하기 위해 레코드 키 상에서 롤업된다. 하나의 클러스터 키는, 예컨대, 가장 작은, 바람직하게 선택된다. 그리고는 벡터는 각각의 다른 구별되는 클러스터 키(1206)을 갖는 바람직한(여기서는, 가장 작은) 클러스터 키를 페어링하는 클러스터 키 쌍들로 정규화된다. 그리고는, 이행적인 폐쇄(closure)가 모든 클러스터 키 쌍들의 세트에 적용된다. 이는 연결된 클러스터 키 쌍들(1208)의 각 네트워크로, 즉, 각 클러스터로, 하나의 클러스터 키의 할당의 결과를 낳고, 이러한 클러스터 키는 각 유니크한 데이터 레코드(1210)에 할당된다.
다수의 매치 조정자(165)의 일 실시예는 도 13a 내지 13c에 도시된다. 도 13a에 있어서, 다수의 파티션들 상의 레코드들(510)의 클러스터들은 개별 레코드들(1321)로 정규화된다(1320). 첫 번째 클러스터(1300)에 있어서, k1은 두 레코드들을 포함하는 클러스터에 대한 클러스터 id이다. 이러한 레코드들(1310)의 첫 번째는 세그먼트 키 "135", id "123456" 및 레코드 키 "r1"을 갖는다. 정규화 이후, 클러스터 키 k1은 레코드(1310)에 부가되고, 세그먼트 키는 레코드(1322)를 주면서 드랍된다. 그리고는, 정규화된 레코드들(1321)은 레코드 키(1324)에 의해 재파티셔닝된다. 결과(1326)는 레코드 키를 공유하는 모든 레코드들이 동일한 파티션 내에 존재한다는 것이다.
도 13b에 있어서, 레코드들(1326)은 각각 클러스터 키들(1330)의 벡터들을 포함하면서 유니크한 레코드 키를 갖는 레코드들을 생성하기 위해 레코드 키(1328) 상에서 롤업된다. 예컨대, 레코드(1331)은 레코드 키 "r1"을 갖는 유니크한 레코드이다. 그것은 id "123456"을 갖고, 두 개의 클러스터 id들의 벡터 "[k1, k2]"를 갖는다. 클러스터 키들의 쌍들은 형성된다. 여기서, 그들은 이미 쌍들이다. 만약 벡터들이 더 길지 않았다면, 예컨대, "[k1, k2, k5]"와 같이, 쌍들은 벡터 내의 인접한 구성요소들로부터 형성될 것이다: "[k1, k2]", :[k2, k5]". 이행적인 폐쇄(1332)는 결과 페어링(1334)를 주면서 연결된 쌍들의 각각의 세트에 대한 유니크한 대표 클러스터 키를 선택하기 위해 적용된다.
도 13c에 있어서, 레코드들(1330)은 이행적인 폐쇄(1332)로부터 획득되는 매칭(1334)를 이용하여 유니크한 클러스터 키들에 할당된다. 레코드들은 클러스터 키(1340) 상에서 재파티셔닝되고, 데이터 클러스터들(530)으로 클러스터 키를 통해 롤업된다.
2.6.12 클러스터 승인 프로세스
소정 실시예들에 있어서, 마스터 레코드는 클러스터링 이후에 발생하는 클러스터 승인 프로세스의 일부로써 클러스터의 멤버들 중으로부터 사용자에 의해 지정될 수 있다. 클러스터는 하나 이상의 마스터 레코드를 가질 수 있다. 동일한 클러스터 id를 갖는 다수의 마스터 레코드들은 클러스터 시퀀스 번호에 의해 구별된다.
클러스터 승인 프로세스는 원하는 바와 같이, 변화들을 생성하기 위해 그리고, UI를 통해 클러스터들로 레코드들의 그룹핑을 검토하기 위한 기회를 사용자에게 제공한다. 예컨대, 사용자는 클러스터 내의 레코드 또는 레코드들이 마스터 레코드들로써 지정되는 변화를 원할 수 있다. 마스터 레코드(들)는 클러스터의 특별한 대표들로써 기능하고, 특히 그들은 디스플레이하는데 사용될 수 있고, 때때로 검색 스토어 엔트리들이 형성되는 마스터 레코드로써 사용될 수 있다. 사용자는 아마도, 그것이 그것의 필드들 중 일부에서 (사용자에게) 더 좋은 값들을 갖기 때문에, 클러스터의 중심 또는 첫 번째 멤버보다 다른 어떤 레코드가 더 좋은 대표라고 느낄 수 있다. 소정 실시예들에 있어서, 마스터 레코드가 변경될 때, 마스터 레코드는 이전 마스터 레코드를 디스에이블하거나 제거함으로써 및 새로운 마스터 레코드를 부가함으로써 변형될 수 있다. 만약 검색 스토어가 마스터 레코드에 기반한다면, 그것은 새로운 마스터 레코드에 대응하는 엔트리를 부가하기 위해 및 오래된 마스터 레코드에 관련된 이러한 엔트리들을 디스에이블하거나 제거하기 위해 변형된다.
사용자는 또한, 하나의 클러스터의 클러스터 id가 다른 클러스터의 클러스터 id 값에 재매칭되어야만 함을 수동으로 지시함으로써 두 클러스터들을 병합하는 것을 선택할 수 있다. 예컨대, 회사 이름에 기반한 클러스터링에 대해, 사용자는 두 클러스터들 상의 회사 이름들이 동일한 법적 엔티티를 나타내고 동일한 클러스터 내의 함께 홀딩되어야 함을 인식할 수 있다. 클러스터 id(125)는 "HSBC"에 대한 레코드들을 보유하는 반면, 클러스터 id(192)는 "Midland Bank"에 대한 레코드를 보유할 수 있다. 이러한 이름들은 유사도 스코어링 룰들 하에서는 매칭들이 아니지만, 사용자는 Midland Bank가 HSBC에 의해 획득되는 것을 알고, 그들을 함께 클러스터링하길 원한다. 사용자는 클러스터 id(192)가 클러스터 id(125)에 재매핑되어지는 것을 지시할 수 있다. 클러스터 승인 변경들이 프로세싱될 때, 소정 실시예들에 있어서, 마스터 레코드 스토어는 클러스터 id(192에서 125)를 갖는 프라이머리 레코드의 클러스터 id를 변경하기 위해, 그리고 다음 더 큰 사용하지 않는 값으로 클러스터 시퀀스를 세팅하기 위해 변형될 수 있다. 마스터 레코드와 연관된 검색 스토어 엔트리들은 또한 192로부터 125로 cluster_id를 변경하기 위해 변형될 수 있다. 이후 클러스터링에 있어서, 이름 "Midland Bank"를 갖는 레코드들은 클러스터 id(125)에서 후보를 찾을 것이고, "HSBC" 레코드들을 따라 거기서, 클러스터링될 수 있다.
사용자는 유사한 방식으로 클러스터들을 스플리팅하기 위해 선택할 수 있다. 소정 실시예들에 있어서, 레코드는 새로운 클러스터의 멤버가 되어지도록 마킹될 수 있다. 클러스터 승인 변경들을 프로세싱하는 중에, 레코드는 새로운 클러스터의 마스터 레코드로써 마스터 레코드들 스토어에 부가될 수 있고 레코드로부터 집단화되는 검색-엔트리들은 검색 스토어들에 부가될 수 있다.
소정 실시예들에 있어서, 검색 스토어 엔트리들은 모든 클러스터 멤버로부터 생성되는 엔트리들의 디스조인트 연합을 가지고 집단화되고, 즉, 클러스터의 소정 멤버에 의한 검색-엔트리 확장 절차에 의해 생성되는 각 구별되는 엔트리는 클러스터에 링크하는 인덱스 내의 엔트리로써 유지된다. 이는 검색 프로세스로 클러스터의 다이버시티를 노출하는 것을 돕는다.
소정 실시예들에 있어서, 추가적인 정보는 후보의 실행 가능성(viability)의 평가를 촉징하기 위해 검색 스토어들 내에 저장될 수 있다. 예컨대, 비즈니스 또는 개인 이름과 같은 멀티워드 필드 내의 토큰들의 수가 검색 스토어 내에 저장될 수 있다.
도 14a 내지 14b는 보다 상세하게 클러스터 승인 프로세스를 도시한다. 도 14a에 있어서, 데이터 클러스터들(180)으로부터의 레코드들은 독출되고(1401) 승인 워크시트(worksheet)는 클러스터 id 및 데이터 클러스터 레코드로부터의 다른 정보를 포함하여, 선택된 데이터 클러스터들의 모든 멤버에 대한 레코드를 포함하면서 집단화된다. 소정 실시예들에 있어서, 승인 시트 내의 컬럼들은 레코드들이 확인되고 마스터 레코드들임을 지시하기 위해 집단화될 수 있다. 사용자(102)는 승인 변경들(1420)을 구체화하기 위해 사용자 인터페이스(103)를 통해 승인 워크시트를 보고 편집할 수 있다.
승인 워크 시트로 사용자(102)(또는 소정 자동 프로세스를 통해)에 의해 생성되는 임의의 변경들은 원본과 변형된 승인 워크시트를 비교함으로써 검출된다(1430).
소정 실시예들에 있어서, 사용자(102)는, 만약 이후에 클러스터링에 존재한다면, 레코드가 추가적인 프로세싱 없이 현재 클러스터 id를 수신할 이벤트 내에서 클러스터의 멤버로써 레코드를 확인할 수 있다. 소정 실시예들에 있어서, 업데이터 절차(1432)는 확인된 바와 같이 레코드를 마킹하면서, 확인된 또는 제외된 스토어(172)로의 현재 클러스터 id를 따라 레코드의 유니크한 레퍼런스 키를 부가함으로써(1433) 이를 달성한다. 사용자는 또한, 레코드가 업데이트 절차(1432)에 의해 디스에이블하다고 마킹되거나, 또는 확인된 또는 제외된 스토어(172)로부터 제거될 수 있는 이벤트에서 이미 확인된 레코드를 언컨펌(unconfirm)할 수 있다.
소정 실시예들에 있어서, 사용자는 만약 이후에 클러스터링에 존재한다면, 레코드가 추가적인 프로세싱 없이 현재 클러스터 id를 갖는 클러스터 내의 멤버쉽으로부터 차단될 이벤트 내의 클러스터의 멤버로써 레코드를 제외할 수 있다. 이는 레코드에 대한 다음 가장 좋은 클러스터를 찾기 위한 클러스터링 알고리즘을 유도하기 위한 메카니즘으로써 사용될 수 있다. 소정 실시예들에 있어서, 제외는 확인과 유사한 프로세스에 의해 달성된다. 업데이트 절차(1432)는 제외된 것으로 레코드를 마킹하면서, 확인된 또는 제외된 스토어(172)로 현재 클러스터 id를 따라 레코드의 유니트한 레퍼런스 키를 부가한다(1433). 사용자는 레코드가 업데이트 절차(1432)에 의해 디스에이블한 것으로 마킹되거나 또는 확인된 또는 제외된 스토어(172)로부터 제거될 수 있는 이벤트 내의 이미 제외된 레코드를 제외하지 않을 수 있다.
소정 실시예들에 있어서, 레코드가 클러스터의 마스터 레코드인 것은 변경될 수 있다. 새로운 클러스터 레코드가 업데이트된 마스터 레코드 스토어(1440) 내에 저장될 수 있고, 오래된 마스터 레코드는 마스터 레코드 스토어(1440)으로부터 제거될 수 있거나 디스에이블될 수 있다.
소정 실시예들에 있어서, 레코드는 새로운 클러스터로 재매핑되어지도록 마킹될 수 있다. 이는 현재 클러스터를 스플리팅하는 효과를 갖는다. 이러한 마킹된 레코드는 할당된 새로운 클러스터 id(1438)를 가질 것이고, 업데이트된 마스터 레코드들 스토어(1440) 내의 새로운 클러스터의 마스터 레코드로써 저장될 것이다. 단지 선택된 레코드들만이, 현재 클러스터의 마스터 레코드로보다 마킹된 레코드에 더 가까운 레코드로써 더 마킹될 필요가 있고, 레코드들이 다음의 단계에서 재프로세싱되는 때, 마킹된 레코드를 가지고 클러스터링할 것이다.
소정 실시예들에 있어서, 레코드는 현재 클러스터에 재매핑될 수 있다. 이는 두 클러스터들을 병합하는 효과를 갖는다. 예컨대, 레코드 클러스터 id(192)를 갖는 "Midland Bank"는 "HSBC" 클러스터(125)로 재매핑될 수 있고, 따라서, 클러스터들을 병합한다. 현재 클러스터로 레코드를 병합하는 때, 레코드는 현재 클러스터 id에 할당될 수 있고 그 클러스터에 대한 새롭고, 부가적인 마스터 레코드가 된다. 소정 실시예들에 있어서, 클러스터의 서로 다른 마스터 레코드들은 클러스터 시퀀스 번호에 의해 구별될 수 있다. 새로운 마스터 레코드가 클러스터가 부가되는 때, 가장 높은 클러스터 시퀀스 번호는 레코드가 엡데이트된 마스터 레코드들 스토어(1440)에 부가되기 전에 증가된다(1436).
적절한 업데이트들이 확인된 또는 제외된 스토어(172) 및 업데이트된 마스터 레코드들 스토어(1440)에 이루어진 이후, 변경들에 의해 잠재적으로 영향을 받은 모든 레코드들은 영향을 받은 레코드들의 데이터셋을 주기위해 데이터 클러스터들(180)으로부터 추출될 수 있다(1434). 소정 실시예들에 있어서, 영향을 받은 레코드들은 변경이 초기화되었던 클러스터 또는 레코드가 재매핑되었던 클러스터 내의 모든 레코드들을 추출함으로써 식별될 수 있다. 근본적인 이유는 이러한 클러스터들 내의 레코드들이 클러스터 멤버쉽과 관련된 관점에서, 모두 상대적으로 가깝고, 그러나 이러한 클러스터들의 멤버들로의 변화들이 다른 클러스터들 내의 멤버쉽 결정들에 영향을 주지 않을 정도로 다른 클러스터 내의 레코드로부터 충분히 멀기 때문이다.
도 14b에 있어서, 클러스터 승인 변경들에 의해 영향을 받는 레코드들을 재클러스터링하는 프로세스가 도시된다. 영향을 받는 레코드들(1450)은 독출되고(1451), 줄어든 대표 스토어들(1458) 및 줄어든 검색 스토어들(1456)을 생성하기 위해 영향을 받은 레코드들 내의 클러스터들과 연관된 (확인된 것들은 제외) 모든 레코드들(1452)을 제거하기 위해 대표 스토어들 및 검색 스토어들에 적용된다. 이는 확인된 또는 제외된 스토어들(172) 및 업데이트된 마스터 레코드들 스토어(1440)이 이미 집단화되었다는 것을 제외하고, 영향을 받은 레코드들에 대한 최초 상태로의 클러스터링 프로세스를 효율적으로 반환한다. 영향을 받은 레코드들(1450)은 확인 또는 제외된 스토어들(172), 업데이트된 마스터 레코드들 스토어(1440), 줄어든 검색 스토어들(1456) 및 줄어든 대표 스토어들(1458)을 이용하여 도 9에서와 같이, 독출되고(1459) 재클러스터링된다.
확인된 레코드들은 그들의 현재 클러스터 id에 할당될 것이다. 마스터 레코드들인 영향을 받은 레코드들은 그들 자신과 함께 정확한 매치들일 것이고 그들의 연관된 클러스터 id일 것이다. 제외된 레코드들은 특정 클러스터들로부터 차단될 것이고 적합하게 다른 클러스터들에 할당될 것이다. 이는 영향을 받은 클러스터들 사이가 아닌 클러스터로 존재할 것 같고 그럴 수 있다. 이러한 재할당은 업데이트된 마스터 레코드들 스토어(1440), 줄어든 검색 스토어(1456) 및 줄어든 대표 스토어들(1458)이 모든 다른 클러스터들에 대한 레코드들을 포함하고 있기 때문에, 가능하고, 따라서, 다른 클러스터들로의 매칭 및 할당도 가능하다. 모든 다른 레코드들은 보통의 클러스터 멤버쉽 결정 프로세스가 그들에게 취하는 데로 갈 것이다. 이전 클러스터의 레코드들보다 재매핑된 레코드에 더 가까운 레코드들은 재매핑된 레코드의 클러스터에 할당될 것이다. 이는 클러스터들의 병합 및 스플리팅 모두에 일어난다.
레코드들이 프로세싱됨에 따라, 줄어든 검색 스토어들(1456) 및 줄어든 대표 스토어들(1458)은 업데이트된 검색 스토어들(1466) 및 업데이트된 대표 스토어들(1468)을 생성하기 위해 재집단화된다(1464). 클러스터 멤버쉽 결정들의 결과는 변형되고 영향을 받은 데이터 클러스터들(1480)의 데이터셋에 기록된다. 이는 데이터 클러스터 차이들(1484)를 찾기 위해 원본 데이터 클러스터들(180)과 비교될 수 있다(1482). 소정 실시예들에 있어서, 클러스터의 이전 또는 이후 리스트들 또는 그래픽적 이미지들은 사용자 인터페이스(104) 내에서 사용자(102)에게 보여질 수 있다. 그리고는 사용자는(102)는 시작하는 것 및 변경을 폐기하는 것 또는 프로세스를 반복하고 추가적인 승인 변경들을 생성함으로써 반복하는 것을 선택할 수 있다. 사용자가 승인 변경들에 만족하는 때, 데이터 클러스터들(180) 및 확인 또는 제외된 스토어(172)를 포함하는 클러스터 스토어들(170), 마스터 레코드들 스토어(174), 검색 스토어들(146), 및 대표 레코드들 스토어(178)는 새로운 데이터 소스들의 이후의 클러스터링을 위해 사용되어지도록 공개될 수 있다.
3 원격 시스템들에 대항한 클러스터링
특히, 임의의 데이터를 유출하지 않는 것과 같은, 격리된 원격 클러스터링 시스템 내에 보유되는 데이터 클러스터들에 대항하여 레코드들을 클러스터링하는 것은 증가 모드에서 클러스터 멤버쉽 절차의 변형에 의해 취급될 수 있다. 필수적인 요구사항은, 쿼리에 덧붙여, 원래 시스템 상의 클러스터링 프로세스 동안 발견되는 소정 부가적인 데이터가 원격 클러스터링 시스템으로 통과되어져야만 한다는 것이다. 부가적인 데이터는 원래 시스템 상의 변형의 범위를 나타내는 후보 레코드들의 및 토큰들의 레벨 둘 모두에서의 변형들이다. 이러한 변형들은 원격 시스템 상의 클러스터 매치 및 광범위한 검색을 생성하기 위해 요구된다.
쿼리는 두 형태로 온다. 그것은 쿼리 레코드가 쿼리를 따라 통과되는 경우에, 쿼리 레코드로부터 형성되는 쿼리일 수 있다. 또는, 그것은 그것이 그것 자신상으로 단순히 통과되는 경우에 있어서, 어떠한 연관된 쿼리 레코드를 갖지 않는 격리된 쿼리일 수 있다. 이는 프로세스 내의 이후의 후보 매칭 레코드들의 스코어링에 영향을 미친다.
토큰에 대해서, 원래 시스템 내의 각 토큰은 원래 시스템 내에 존재하지 않는 원격 시스템 내의 변형 토큰들을 가질 수 있다. 이러한 새로운 변형들을 찾기 위해, 원래 클러스터링 프로세스 내에 참여하는 토큰과 관련된 모든 변형은 원격 시스템으로 통과되어야 한다. 소정 실시예들에 있어서, 토큰들 내의 변화의 모든 범위를 캡쳐하기 위해, 원래 확장된 쿼리 내의 임의의 토큰과 페어링되는 모든 토큰-대표들에 대응하는 토큰들의 수집된 이웃들은 검색되고 원격 클러스터링 시스템으로 통과된다. 원격 시스템 상에서, 이러한 원본 토큰들은 원래 시스템과 원격 시스템 사이의 새로운 변형 페어링들을 결정하기 위해 변형 프로파일러 및 변형 네트워크 스토어들에 부가되고, 업데이트된 변형 프로파일러 및 변형 네트워크 스토어들이 기록된다. 토큰-대표들은 엽데이트된 변형 네트워크 스토어들 내에서 형성된다. 토큰-대표들은 검색 스토어들이 이러한 토큰-대표들에 의해 인덱싱되기 때문에, 원격 시스템 상에서 근원적으로 생성되는 바와 같이 남아야만 한다. 새로운 원본 변형 토큰들, 즉, 원래 시스템으로부터의 토큰들은 원격 변형 프로파일러 또는 변형 네트워크 스토어들 내에 이미 존재하지 않고, 현재 토큰-대표 이웃들에 부가된다.
모든 원본 변형들을 통과하기 위한 유사한 요구사항은 적합한 매칭 후보 레코드들이 결정된 이후, 즉, 쿼리에 적합한 선택 기준을 만족하는 대표 레코드들 스토어로부터 검색되는 대표 레코드들에 적용된다. 이러한 대표 레코드들은 쿼리 선택 기준을 만족하는 원래 시스템 상의 레코드들의 다이버시티를 스패닝한다(span). 이러한 레코드들의 각각은 그렇지 않은 경우 검출되지 않는 원격 시스템 상의 변형 페어링들을 찾을 수 있다.
만약 쿼리와 관련된 대표 레코드들 및 변형 토큰들이 쿼리를 따라 원격 시스템에 통과된다면, 증가 모드에서 여기에 설명된 클러스터 멤버쉽 절차는 특정된 선택 기준에 따라 쿼리를 매칭하는 모든 레코드들을 검색하는데 적용될 수 있다. 소정 응용들에 있어서, 예컨대, 쿼리와 관련된 레코드들을 검색하기 위한 선택 기준, 포렌식 검사, 또는 사기(fraud) 검출은 클러스터 멤버쉽을 결정하는데 사용되는 클러스터 멤버쉽 기준보다 다를 수 있다. 클러스터 멤버쉽은 전형적으로, 폴스 포지티브 식별, 즉, 잘못된 클러스터 내에 레코드가 위치하는 것을 피하기 위해 보다 제한적인 기준을 선호하는 반면, 포렌식 쿼리들은 폴스 네가티브, 즉, 매치여야 하는 레코드를 지나치는 것을 방지하기 위해 보다 느슨한 기준을 회피하는 것을 선호한다.
도 15a 내지 15c에 있어서, 원격 클러스터링 시스템에 대항하여 생성되는 쿼리의 예시가 도시된다. 도 15a에 있어서, 사용자 인터페이스(104A)를 사용하는 사용자 A(102A)는 로컬 클러스터링 시스템으로 쿼리를 제출한다. 소정 실시예들에 있어서, 쿼리는, 예컨대, 확장된 쿼리 내에서 변형 토큰들을 대체하도록 토큰-대표들을 찾기 위해, 변형 네트워크 스토어들(126A)로부터의 레코드들에 및 로우 쿼리 내의 각 토큰과 페어링되는 변형 토큰들을 찾기 위해 변형 프로파일러 스토어들(115A)로부터의 레토드들에 가까워지면서, 확장될 수 있다. 앞서 설명한 바와 같이, 변형 네트워크 스토어들(126A) 내의 이러한 토큰들에 대한 토큰 대표들의 이웃들은 선택된 변형 네트워크 레코드들(1514)로써 추출되고 유지된다. 선택된 변형 네트워크 레코드들 내의 모든 토큰들은 변형 프로파일러 스토어들(115A)로부터 추출되고(1515) 선택된 변형 프로파일러 레코드들(1516)로써 유지된다.
로우 후보는 검색 스토어들(146A)를 이용하여 확장된 쿼리로부터 발견된다(1520). 사용된 검색 엔트리들은 선택된 검색 엔트리들(1522) 내에 보유될 수 있다. 쿼리 선택 기준은 후보 레코드들을 선택하기 위해 로우 후보 레코드들에 적용된다(1530). 만약 후보 레코드들이 존재한다면, 후보 레코드들과 연관된 클러스터들 내에 포함된 대표 레코드들은 대표 레코드들 스토어(178A)로부터 검색되고(1540) 선택된 대표 레코드들(1542)로써 보유된다. 쿼리(1500) 및 다양한 선택된 레코드들(1514, 1516 및 1542)은, 만약 존재한다면, 그들이 원격 클러스터링 시스템에 의한 프로세싱을 위해 수신되는 (미도시) 원격 클러스터링 시스템으로 통과된다.
도 15b에 있어서, 수신된 선택된 변형 프로파일러 레코드들(1516)은 업데이트된 변형 프로파일러 스토어(1552)를 생성하기 위해 원격 시스템 상에서 변형 프로파일러 스토어(115B)를 업데이트(1551)하는데 사용된다. 소정 실시예들에 있어서, 이는 단지 이러한 쿼리의 목적을 위해 사용되는 일시적인 업데이트일 수 있다. 수신된 선택된 변형 네트워크 레코드들(1514) 및 업데이트된 변형 프로파일러 스토어(1552)는 업데이트 변형 네트워크 스토어(1554)를 생성하기 위해 변형 네트워크 스토어(126B)를 업데이트(1553)하는데 사용된다.
도 15c에 있어서, 수신된 쿼리(1500) 및 수신된 선택된 대표 레코드들(1542)는 독출된다. 로우 쿼리들은 각각의 선택된 대표 레코드로부터 형성되고, 원본 쿼리와 함께 업데이트된 변형 네트워크 스토어들(1554) 및 업데이트 변형 프로파일러 스토어들(1552)를 이용하여, 확장된 쿼리들로 확장된다(1510). 로우 후보 레코드들은 원격 검색 스토어들(146B) 내에서 발견된다(1560). 쿼리 선택 기준은 선택 기준을 만족하는 것들을 찾기 위해(1565), 로우 후보 레코드들에 적용된다. 필터는 적용된다(1567). 만약 후보들이 없다면, 이는 사용자 인터페이스(104B)를 통해 사용자(102B)에 보고되지 않는다.
만약 후보들이 있다면, 그들은 이후 현재 쿼리 레코드에 대항하여 스코어링되는, 즉 현재 쿼리가 형성되었던 원본 대표 레코드 또는 원본 쿼리 레코드 중 하나인 대표 레코드들 스토어(178B) 내의 그들의 대응하는 클러스터들로부터 대표 레코드들을 검색하는데 사용된다. 원본 쿼리 자치가 연관된 쿼리 레코드를 가지지 않는다면, 모든 대표 레코드들이 취해진다. 소정 실시예들에 있어서, 원본 쿼리와 연관된 쿼리 레코드가 존재하는 때, 이것 역시 현재 쿼리 레코드와 대표 레코드 간의 스토어를 따라 리포팅되는 스코어 및 검색된 대표 레코드들(178B)에 대항하여 스코어링된다.
현재 쿼리 레코드 및 대표 레코드들(178B) 간의 결과 스코어들은 쿼리 매치 기준과 비교되고, 만약 매치 기준이 만족된다면(1575), 데이터 클러스터 레코드들은 원격 데이터 클러스터들(180B)로부터 검색되고(1577) 쿼리 결과들(1580)로써 저장된다. 그리고는, 쿼리 결과들은 사용자 인터페이스(104B)를 통해 사용자(102B)에 보고된다.
4 실시예들
앞서 설명된 클러스터링, 세그멘테이션, 및 병렬화 기술들은 컴퓨터 상의 실행을 위한 소프트웨어를 이용하여 실행될 수 있다. 예컨대, 소프트웨어는 각각 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 구성요소들), 적어도 하나의 입력 디바이스 또는 포트, 및 적어도 하나의 출력 디바이스 또는 포트를 포함하는 하나 이상의 프로그래밍된 또는 프로그래밍가능한 컴퓨터 시스템들(분산, 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처들일 수 있음) 상에서 실행하는 하나 이상의 컴퓨터 프로그램들 내에서 절차들을 형성한다. 소프트웨어는 예컨대, 데이터 플로우 그래프들의 구성 및 디자인와 관련된 다른 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈들을 형셩할 수 있다. 그래프의 노드들 및 구성요소들은 데이터 레포지토리(repository) 내에 저장되는 데이터 모델에 따르는 다른 조직화된 데이터 또는 컴퓨터 판독가능한 매체 내에 저장된 데이터 구조들로써 실행될 수 있다.
소프트웨어는 그것이 실행되는 컴퓨터의 저장 매체로 네트워크의 통신 매체를 너머 (전파되는 신호 내에 인코딩되어) 전달되거나 또는, 범용 또는 특용 프로그래밍 가능한 컴퓨터에 의해 판독가능한 CD-ROM과 같은 저장 매체 상에 제공될 수 있다. 기능들 모두는 코프로세서(coprocessors)들과 같은 특용 하드웨어를 이용하거나 특용 컴퓨터 상에서 수행될 수 있다. 소프트웨어는 소프트웨어에 의해 특정되는 계산의 서로 다른 부분들이 서로 다른 컴퓨터들에 의해 수행되는 분산 방식으로 실행될 수 있다. 이러한 각각의 컴퓨터 프로그램은, 바람직하게, 저장 매체 또는 장치가 여기에 설명된 절차들을 수행하기 위해 컴퓨터 시스템에 의해 독출되는 때, 컴퓨터를 작동시키고 구성하기 위해, 범용 또는 특용 프로그래밍 가능한 컴퓨터에 의해 판독 가능한 저장 매체 또는 장치(예컨대, SSM(Solid State Memory or media), 또는 자기 또는 광 매체)상에 저장되거나 또는 상기 저장 매체 또는 장치로 다운로딩된다. 본 발명의 시스템은 또한, 저장 매체가 컴퓨터 시스템이 여기에 설명된 기능들을 수행하기 위해 미리 정의된 방식 및 특정한 방식으로 동작하도록 야기하도록 구성된 , 컴퓨터 프로그램을 가지고 구성된 컴퓨터-판독 가능한 저장 매체로 실행되어질 것으로 고려될 수 있다.
본 발명의 많은 실시예들은 설명되었다. 그럼에도 불구하고, 다양한 변형들이 본 발명의 사상 및 범위로부터 떨어짐 없이 생성될 수 있다는 것은 이해될 것이다. 예컨대, 여기에 설명된 단계들의 일부는 독립적인 순서일 수 있고, 따라서, 여기에 설명되것과 다른 순서로 수행될 수 있다.
앞서의 설명은, 첨부된 청구범위들의 범위에 의해 정의되는 본 발명의 범위를 제한하지 않고 설명하기 위해 의도된 것으로 이해되어야 한다. 예컨대, 앞서 설명된 수많은 기능 단계들은 전체 프로세싱에 실질적으로 영향을 미치는 것 없이 다른 순서로 수행될 수 있다. 다른 실시예들이 다음의 청구범위들의 범위 내에서 존재한다.
Claims (22)
- 데이터 레코드들을 수신하는 단계, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및
각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하는 단계를 포함하되, 상기 프로세싱 단계는:
상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계;
상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계;
상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및
상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 1 항에 있어서,
상기 쿼리를 생성하는 단계는, 각각이 필드 내의 값의 프래그먼트(fragment) 또는 적어도 하나의 값 또는 상기 선택된 데이터 레코드의 필드들의 조합을 포함하는 토큰들을 식별하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 2 항에 있어서,
상기 쿼리는 상기 선택된 데이터 레코드로부터 식별된 토큰들, 및 다른 수신된 데이터 레코드들로부터 식별되었고 상기 선택된 데이터 레코드로부터 식별된 토큰들에 대한 변형 관계를 갖는 토큰들을 포함하는 것을 특징으로 하는 방법. - 제 3 항에 있어서,
상기 변형 관게는 편집 거리 상의 적어도 일부분에 기반하는 것을 특징으로 하는 방법. - 제 2 항에 있어서,
후보 데이터 레코드들을 식별하는 단계는, 데이터 스토어 내의 상기 식별된 토큰들을 룩업(looking up)하는 단계를 포함하고, 상기 데이터 스토어는 저장된 코튼들을 후보 데이터 레코드들 또는 후보 데이터 레코드들을 포함하는 현재 데이터 클러스터들에 매핑시키는 것을 특징으로 하는 방법. - 제 5 항에 있어서,
상기 후보 데이터 레코드로부터 식별된 토큰들 및 다른 수신된 데이터 레코드들로부터 식별되었고 상기 후보 데이터 레코드로부터 식별된 상기 토큰들에 대해 변형 관계를 갖는 토큰들에 기반하여 후보 데이터 레코드에 매핑되는 저장된 토큰들의 세트를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 1 항에 있어서,
상기 프로세싱 단계는, 특정 데이터 레코드 내에 포함된 적어도 하나의 값들이 다른 데이터 레코드들로부터 상기 특정 데이터 레코드를 구별할 수 있는 정도를 결정하는 구별 가능성(distinguishability) 기준에 기반하여 상기 수신된 데이터 레코드들의 적어도 최초 세트를 정렬하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 7 항에 있어서,
상기 수신된 데이터 레코드들로부터 상기 선택된 데이터는 데이터 레코드들의 상기 정렬된 세트로부터 선택된 데이터 레코드들을 포함하는 것을 특징으로 하는 방법. - 제 7 항에 있어서,
상기 구별 가능성 기준은: 값과 함께 집단화되는 수 많은 필드들, 또는 적어도 하나의 필드드 내의 토큰들의 수 중 적어도 하나에 기반하는 것을 특징으로 하는 방법. - 제 1 항에 있어서, 상기 매치된 데이터 클러스터를 선택하는 단계는:
현재 데이터 클러스터에 대한 적어도 하나의 대표 데이터 레코드와 상기 선택된 데이터 레코드를 비교함으로써 비교 스코어(score)를 계산하는 단계; 및
상기 비교 스코어가 제 1 임계값을 초과하는지 결정함에 응답하여 상기 매치된 데이터 클러스터로써 상기 현재 데이터 클러스터를 선택하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 10 항에 있어서,
제 2 임계값과 상기 비교 스코어를 비교하는 단계; 및
상기 비교 스코어가 상기 제 2 임계값을 초과하지 않는지 결정함에 응답하여 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 1 항에 있어서,
적어도 하나의 현재 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계는 상기 선택된 데이터 레코드가 클러스터 멤버쉽 기준을 만족하는 다수의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 크러스터를 선택하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 12 항에 있어서,
상기 선택된 데이터 레코드에 대한 상기 매치된 데이터 클러스터로써 선택되지 않았던 적어도 하나의 후보 데이터 클러스터들을 식별하는 정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 1 항에 있어서,
후보 데이터 레코드들을 식별하는 단계는 제 1 클러스터에 상기 쿼리를 매핑하는 엔트리(entry)를 포함하는 후보 클러스터들로 쿼리들을 매칭하는 데이터 스토어와 상기 쿼리를 비교하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
제 2 클러스터로 상기 선택된 데이터 레코드를 매칭하기 위한 요청을 수신하는 단계; 및
상기 제 2 클러스터로 상기 쿼리를 매핑하기 위해 상기 데이터 스토어를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
새로운 클러스터로 상기 데이터 레코드를 매핑하기 위한 요청을 수신하는 단계;
래오운 클러스터 지시자를 가지고 상기 데이터 스토어를 업데이트하는 단계;
새로운 클러스터를 생성하는 단계; 및
상기 새로운 클러스터에 상기 선택된 데이터를 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
상기 제 1 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 확인(confirm)하기 위한 요청을 수신하는 단계; 및
다른 데이터 레코드들과 연관된 요청들에 응답하여 상기 데이터 스토어의 업데이트들이 상기 제 1 멤버쉽 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 변경하지 않도록 상기 데이터 스토어 내에 정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
상기 제 1 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 제외하기 위한 요청을 수신하는 단계;
상기 선택된 데이터 레코드의 멤버쉽을 변경하기 위해 상기 데이터 스토어를 업데이트하는 단계; 및
다른 데이터 레코드들과 연관된 요청들에 응답하여 상기 데이터 스토어의 업데이트들이 상기 제 1 멤버쉽 클러스터 내의 상기 선택된 데이터 레코드의 멤버쉽을 허락하지 않도록 상기 데이터 스토어 내에 정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서,
매치된 데이터 클러스터들로 수신된 데이터 레코드들의 연관을 승인 또는 변형하기 위해 사용자로부터의 입력을 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 컴퓨터-판독가능한 저장 매체 상에 저장되는 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은 컴퓨팅 시스템이:
데이터 레코드들을 수신하고, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및
각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하도록 야기하기 위한 지시어들을 포함하되, 상기 프로세싱은:
상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계;
상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계;
상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및
상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터-판독가능한 저장 매체 상에 저장되는 컴퓨터 프로그램. - 데이터 레코드들을 수신하도록 구성되는 입력 디바이스 또는 포트, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및
각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하도록 구성되는 적어도 하나의 프로세서를 포함하되, 상기 프로세싱은:
상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계;
상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계;
상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및
상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템. - 데이터 레코드들을 수신하기 위한 수단, 상기 수신된 데이터 레코드들 각각은 적어도 하나의 필드들 내의 적어도 하나의 값들을 포함함; 및
각각의 수신된 데이터 레코드와 연관시키기 위해 매치되는 데이터 클러스터를 식별하기 위해 상기 수신된 데이터 레코드들을 프로세싱하기 위한 수단을 포함하되, 상기 프로세싱은:
상기 수신된 데이터 레코드들로부터의 선택된 데이터 레코드들에 대해, 상기 선택된 데이터 레코드 내에 포함된 상기 적어도 하나의 값들로부터 쿼리를 생성하는 단계;
상기 쿼리를 이용하여 상기 수신된 데이터 레코드들로부터 적어도 하나의 후보 데이터 레코드들을 식별하는 단계;
상기 선텍된 데이터 레코드가 상기 후보 레코드들을 포함하는 적어도 하나의 현재(existing) 데이터 클러스터들 중 적어도 하나의 후보 데이터 클러스터에 대한 클러스터 멤버쉽(membership) 기준을 만족하는지 그렇지 않는지를 결정하는 단계; 및
상기 후보 데이터 클러스터들에 대한 성장 기준 상의 적어도 일부에 기반한 적어도 하나의 후보 데이터 클러스터들 사이로부터 상기 매치된 데이터 클러스터를 선택하는 단계, 또는 만약 상기 선택된 데이터 레코드가 상기 성장 기준의 결과에 기반하여 또는 상기 현재 데이터 클러스터들 중 어느 것에 대한 클러스터 멤버쉽 기준을 만족하지 않는다면, 상기 선택된 데이터 레코드를 갖는 상기 매치된 데이터 클러스터를 초기화하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161560257P | 2011-11-15 | 2011-11-15 | |
US61/560,257 | 2011-11-15 | ||
US201261660259P | 2012-06-15 | 2012-06-15 | |
US61/660,259 | 2012-06-15 | ||
PCT/US2012/065265 WO2013074781A1 (en) | 2011-11-15 | 2012-11-15 | Data clustering based on candidate queries |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140096127A true KR20140096127A (ko) | 2014-08-04 |
KR102031392B1 KR102031392B1 (ko) | 2019-11-08 |
Family
ID=47258118
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147016338A KR102029514B1 (ko) | 2011-11-15 | 2012-11-15 | 변형 토큰 네트워크들에 기반한 데이터 클러스터링 |
KR1020147016343A KR102031392B1 (ko) | 2011-11-15 | 2012-11-15 | 후보 쿼리들에 기반한 데이터 클러스터링 |
KR1020147016331A KR102048597B1 (ko) | 2011-11-15 | 2012-11-15 | 데이터 클러스터링, 세그멘테이션, 및 병렬화 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147016338A KR102029514B1 (ko) | 2011-11-15 | 2012-11-15 | 변형 토큰 네트워크들에 기반한 데이터 클러스터링 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147016331A KR102048597B1 (ko) | 2011-11-15 | 2012-11-15 | 데이터 클러스터링, 세그멘테이션, 및 병렬화 |
Country Status (9)
Country | Link |
---|---|
US (6) | US9037589B2 (ko) |
EP (6) | EP3591538B1 (ko) |
JP (3) | JP6113740B2 (ko) |
KR (3) | KR102029514B1 (ko) |
CN (4) | CN104054073B (ko) |
AU (3) | AU2012340418C1 (ko) |
CA (4) | CA2855710C (ko) |
HK (4) | HK1200942A1 (ko) |
WO (3) | WO2013074770A1 (ko) |
Families Citing this family (178)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775441B2 (en) | 2008-01-16 | 2014-07-08 | Ab Initio Technology Llc | Managing an archive for approximate string matching |
CA3014839C (en) | 2008-10-23 | 2019-01-08 | Arlen Anderson | Fuzzy data operations |
US20110153737A1 (en) * | 2009-12-17 | 2011-06-23 | Chu Thomas P | Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network |
US10084856B2 (en) * | 2009-12-17 | 2018-09-25 | Wsou Investments, Llc | Method and apparatus for locating services within peer-to-peer networks |
US8468119B2 (en) * | 2010-07-14 | 2013-06-18 | Business Objects Software Ltd. | Matching data from disparate sources |
EP2727247B1 (en) * | 2011-06-30 | 2017-04-05 | Openwave Mobility, Inc. | Database compression system and method |
WO2013074770A1 (en) | 2011-11-15 | 2013-05-23 | Ab Initio Technology Llc | Data clustering, segmentation, and parallelization |
US8949199B2 (en) * | 2011-12-29 | 2015-02-03 | Dell Products L.P. | Systems and methods for de-duplication in storage systems |
WO2013123097A1 (en) * | 2012-02-13 | 2013-08-22 | SkyKick, Inc. | Migration project automation, e.g., automated selling, planning, migration and configuration of email systems |
US10467322B1 (en) * | 2012-03-28 | 2019-11-05 | Amazon Technologies, Inc. | System and method for highly scalable data clustering |
US20130268526A1 (en) * | 2012-04-06 | 2013-10-10 | Mark E. Johns | Discovery engine |
US9684395B2 (en) * | 2012-06-02 | 2017-06-20 | Tara Chand Singhal | System and method for context driven voice interface in handheld wireless mobile devices |
EP3654200A1 (en) * | 2012-08-17 | 2020-05-20 | Twitter, Inc. | Search infrastructure |
US10223697B2 (en) | 2012-08-30 | 2019-03-05 | Oracle International Corporation | Method and system for implementing a CRM quote and order capture context service |
US9251133B2 (en) | 2012-12-12 | 2016-02-02 | International Business Machines Corporation | Approximate named-entity extraction |
US10949752B1 (en) * | 2013-01-30 | 2021-03-16 | Applied Predictive Technologies, Inc. | System and method of portfolio matching |
US9830353B1 (en) * | 2013-02-27 | 2017-11-28 | Google Inc. | Determining match type for query tokens |
US20140282396A1 (en) * | 2013-03-14 | 2014-09-18 | Syntel, Inc. | Computerized system and method for extracting business rules from source code |
US20140280239A1 (en) * | 2013-03-15 | 2014-09-18 | Sas Institute Inc. | Similarity determination between anonymized data items |
US8844050B1 (en) | 2013-03-15 | 2014-09-23 | Athoc, Inc. | Personnel crisis communications management and personnel status tracking system |
US10803102B1 (en) * | 2013-04-30 | 2020-10-13 | Walmart Apollo, Llc | Methods and systems for comparing customer records |
US9411632B2 (en) * | 2013-05-30 | 2016-08-09 | Qualcomm Incorporated | Parallel method for agglomerative clustering of non-stationary data |
US11093521B2 (en) * | 2013-06-27 | 2021-08-17 | Sap Se | Just-in-time data quality assessment for best record creation |
KR20150020385A (ko) * | 2013-08-13 | 2015-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
CA2921245C (en) | 2013-09-20 | 2023-08-22 | Fulcrum Management Solutions Ltd. | Processing qualitative responses |
CN103455641B (zh) * | 2013-09-29 | 2017-02-22 | 北大医疗信息技术有限公司 | 交叉多次检索的系统和方法 |
US8831969B1 (en) * | 2013-10-02 | 2014-09-09 | Linkedin Corporation | System and method for determining users working for the same employers in a social network |
US10043182B1 (en) * | 2013-10-22 | 2018-08-07 | Ondot System, Inc. | System and method for using cardholder context and preferences in transaction authorization |
US10423890B1 (en) | 2013-12-12 | 2019-09-24 | Cigna Intellectual Property, Inc. | System and method for synthesizing data |
US10685037B2 (en) | 2013-12-18 | 2020-06-16 | Amazon Technology, Inc. | Volume cohorts in object-redundant storage systems |
CA2934041C (en) * | 2013-12-18 | 2021-04-13 | Amazon Technologies, Inc. | Reconciling volumelets in volume cohorts |
US10620830B2 (en) | 2013-12-18 | 2020-04-14 | Amazon Technologies, Inc. | Reconciling volumelets in volume cohorts |
US10026114B2 (en) * | 2014-01-10 | 2018-07-17 | Betterdoctor, Inc. | System for clustering and aggregating data from multiple sources |
US10055747B1 (en) * | 2014-01-20 | 2018-08-21 | Acxiom Corporation | Consumer Portal |
US9690844B2 (en) * | 2014-01-24 | 2017-06-27 | Samsung Electronics Co., Ltd. | Methods and systems for customizable clustering of sub-networks for bioinformatics and health care applications |
US9779146B2 (en) * | 2014-02-07 | 2017-10-03 | Sap Se | Graphical user interface for a data record matching application |
US20150269700A1 (en) | 2014-03-24 | 2015-09-24 | Athoc, Inc. | Exchange of crisis-related information amongst multiple individuals and multiple organizations |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
US10482490B2 (en) | 2014-04-09 | 2019-11-19 | Sailthru, Inc. | Behavioral tracking system and method in support of high-engagement communications |
US20150348052A1 (en) * | 2014-05-30 | 2015-12-03 | Sachin Rekhi | Crm-based discovery of contacts and accounts |
WO2015192106A1 (en) * | 2014-06-12 | 2015-12-17 | Shpanya Arie | Real-time dynamic pricing system |
US20150379033A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Parallel matching of hierarchical records |
US10318983B2 (en) * | 2014-07-18 | 2019-06-11 | Facebook, Inc. | Expansion of targeting criteria based on advertisement performance |
US10528981B2 (en) | 2014-07-18 | 2020-01-07 | Facebook, Inc. | Expansion of targeting criteria using an advertisement performance metric to maintain revenue |
US20160019284A1 (en) * | 2014-07-18 | 2016-01-21 | Linkedln Corporation | Search engine using name clustering |
US10296616B2 (en) | 2014-07-31 | 2019-05-21 | Splunk Inc. | Generation of a search query to approximate replication of a cluster of events |
US9922290B2 (en) * | 2014-08-12 | 2018-03-20 | Microsoft Technology Licensing, Llc | Entity resolution incorporating data from various data sources which uses tokens and normalizes records |
US10614912B2 (en) * | 2014-08-17 | 2020-04-07 | Hyperfine, Llc | Systems and methods for comparing networks, determining underlying forces between the networks, and forming new metaclusters when saturation is met |
US20160062979A1 (en) * | 2014-08-27 | 2016-03-03 | Google Inc. | Word classification based on phonetic features |
WO2016048295A1 (en) * | 2014-09-24 | 2016-03-31 | Hewlett Packard Enterprise Development Lp | Assigning a document to partial membership in communities |
US11461319B2 (en) * | 2014-10-06 | 2022-10-04 | Business Objects Software, Ltd. | Dynamic database query efficiency improvement |
US9600548B2 (en) * | 2014-10-10 | 2017-03-21 | Salesforce.Com | Row level security integration of analytical data store with cloud architecture |
JP6050800B2 (ja) * | 2014-10-28 | 2016-12-21 | Necパーソナルコンピュータ株式会社 | 情報処理装置、方法及びプログラム |
CN105701118B (zh) | 2014-11-28 | 2019-05-28 | 国际商业机器公司 | 用于归一化文件的非数值特征的方法和装置 |
US9483546B2 (en) * | 2014-12-15 | 2016-11-01 | Palantir Technologies Inc. | System and method for associating related records to common entities across multiple lists |
US9727906B1 (en) * | 2014-12-15 | 2017-08-08 | Amazon Technologies, Inc. | Generating item clusters based on aggregated search history data |
JP6129815B2 (ja) * | 2014-12-24 | 2017-05-17 | Necパーソナルコンピュータ株式会社 | 情報処理装置、方法及びプログラム |
US20160239499A1 (en) * | 2015-02-12 | 2016-08-18 | Red Hat, Inc. | Object Creation Based on Copying Objects Corresponding to Similar Entities |
US10339502B2 (en) * | 2015-04-06 | 2019-07-02 | Adp, Llc | Skill analyzer |
US10742731B2 (en) | 2015-06-10 | 2020-08-11 | International Business Machines Corporation | Maintaining service configuration consistency across nodes of a clustered file system |
US9940213B2 (en) | 2015-06-10 | 2018-04-10 | International Business Machines Corporation | Integrating external services with a clustered file system |
WO2017015751A1 (en) * | 2015-07-24 | 2017-02-02 | Fulcrum Management Solutions Ltd. | Processing qualitative responses and visualization generation |
US10140327B2 (en) | 2015-08-24 | 2018-11-27 | Palantir Technologies Inc. | Feature clustering of users, user correlation database access, and user interface generation system |
US10417337B2 (en) | 2015-09-02 | 2019-09-17 | Canon Kabushiki Kaisha | Devices, systems, and methods for resolving named entities |
US11392582B2 (en) * | 2015-10-15 | 2022-07-19 | Sumo Logic, Inc. | Automatic partitioning |
US10783268B2 (en) | 2015-11-10 | 2020-09-22 | Hewlett Packard Enterprise Development Lp | Data allocation based on secure information retrieval |
US10242021B2 (en) * | 2016-01-12 | 2019-03-26 | International Business Machines Corporation | Storing data deduplication metadata in a grid of processors |
US10261946B2 (en) | 2016-01-12 | 2019-04-16 | International Business Machines Corporation | Rebalancing distributed metadata |
US10255288B2 (en) * | 2016-01-12 | 2019-04-09 | International Business Machines Corporation | Distributed data deduplication in a grid of processors |
WO2017197526A1 (en) | 2016-05-20 | 2017-11-23 | Roman Czeslaw Kordasiewicz | Systems and methods for graphical exploration of forensic data |
US10740409B2 (en) | 2016-05-20 | 2020-08-11 | Magnet Forensics Inc. | Systems and methods for graphical exploration of forensic data |
JP6072334B1 (ja) * | 2016-06-09 | 2017-02-01 | 株式会社Cygames | 情報処理システム及び方法、並びにプログラム |
US20180025093A1 (en) * | 2016-07-21 | 2018-01-25 | Ayasdi, Inc. | Query capabilities of topological data analysis graphs |
US11023475B2 (en) * | 2016-07-22 | 2021-06-01 | International Business Machines Corporation | Testing pairings to determine whether they are publically known |
US10558669B2 (en) * | 2016-07-22 | 2020-02-11 | National Student Clearinghouse | Record matching system |
US11106692B1 (en) * | 2016-08-04 | 2021-08-31 | Palantir Technologies Inc. | Data record resolution and correlation system |
CN106875167B (zh) * | 2016-08-18 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 电子支付过程中资金交易路径的检测方法和装置 |
US10650008B2 (en) * | 2016-08-26 | 2020-05-12 | International Business Machines Corporation | Parallel scoring of an ensemble model |
US10817540B2 (en) | 2016-09-02 | 2020-10-27 | Snowflake Inc. | Incremental clustering maintenance of a table |
US11080301B2 (en) * | 2016-09-28 | 2021-08-03 | Hewlett Packard Enterprise Development Lp | Storage allocation based on secure data comparisons via multiple intermediaries |
US20180096018A1 (en) * | 2016-09-30 | 2018-04-05 | Microsoft Technology Licensing, Llc | Reducing processing for comparing large metadata sets |
WO2018067467A1 (en) | 2016-10-03 | 2018-04-12 | Ocient Llc | Infrastructure improvements for use in a massively parallel database management system |
US10127268B2 (en) * | 2016-10-07 | 2018-11-13 | Microsoft Technology Licensing, Llc | Repairing data through domain knowledge |
US10713316B2 (en) | 2016-10-20 | 2020-07-14 | Microsoft Technology Licensing, Llc | Search engine using name clustering |
US10585864B2 (en) | 2016-11-11 | 2020-03-10 | International Business Machines Corporation | Computing the need for standardization of a set of values |
US10353928B2 (en) * | 2016-11-30 | 2019-07-16 | International Business Machines Corporation | Real-time clustering using multiple representatives from a cluster |
US11205103B2 (en) | 2016-12-09 | 2021-12-21 | The Research Foundation for the State University | Semisupervised autoencoder for sentiment analysis |
EP3336691B1 (en) | 2016-12-13 | 2022-04-06 | ARM Limited | Replicate elements instruction |
EP3336692B1 (en) | 2016-12-13 | 2020-04-29 | Arm Ltd | Replicate partition instruction |
US10902070B2 (en) | 2016-12-15 | 2021-01-26 | Microsoft Technology Licensing, Llc | Job search based on member transitions from educational institution to company |
US10671757B1 (en) * | 2016-12-22 | 2020-06-02 | Allscripts Software, Llc | Converting an alphanumerical character string into a signature |
US20180181646A1 (en) * | 2016-12-26 | 2018-06-28 | Infosys Limited | System and method for determining identity relationships among enterprise data entities |
US20180203917A1 (en) * | 2017-01-19 | 2018-07-19 | Acquire Media Ventures Inc. | Discovering data similarity groups in linear time for data science applications |
US10679187B2 (en) | 2017-01-30 | 2020-06-09 | Microsoft Technology Licensing, Llc | Job search with categorized results |
US10783497B2 (en) | 2017-02-21 | 2020-09-22 | Microsoft Technology Licensing, Llc | Job posting data search based on intercompany worker migration |
US11138269B1 (en) | 2017-03-14 | 2021-10-05 | Wells Fargo Bank, N.A. | Optimizing database query processes with supervised independent autonomy through a dynamically scaling matching and priority engine |
US10803064B1 (en) * | 2017-03-14 | 2020-10-13 | Wells Fargo Bank, N.A. | System and method for dynamic scaling and modification of a rule-based matching and prioritization engine |
US11010675B1 (en) | 2017-03-14 | 2021-05-18 | Wells Fargo Bank, N.A. | Machine learning integration for a dynamically scaling matching and prioritization engine |
KR102594625B1 (ko) * | 2017-03-19 | 2023-10-25 | 오펙-에슈콜롯 리서치 앤드 디벨롭먼트 엘티디 | K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법 |
US10607189B2 (en) | 2017-04-04 | 2020-03-31 | Microsoft Technology Licensing, Llc | Ranking job offerings based on growth potential within a company |
US20180315019A1 (en) * | 2017-04-27 | 2018-11-01 | Linkedin Corporation | Multinodal job-search control system |
US11640436B2 (en) * | 2017-05-15 | 2023-05-02 | Ebay Inc. | Methods and systems for query segmentation |
US10740338B2 (en) * | 2017-07-23 | 2020-08-11 | International Business Machines Corporation | Systems and methods for query performance prediction using reference lists |
US9934287B1 (en) * | 2017-07-25 | 2018-04-03 | Capital One Services, Llc | Systems and methods for expedited large file processing |
US20190034475A1 (en) * | 2017-07-28 | 2019-01-31 | Enigma Technologies, Inc. | System and method for detecting duplicate data records |
EP3460808A1 (en) * | 2017-09-21 | 2019-03-27 | Koninklijke Philips N.V. | Determining patient status based on measurable medical characteristics |
US11475209B2 (en) | 2017-10-17 | 2022-10-18 | Handycontract Llc | Device, system, and method for extracting named entities from sectioned documents |
WO2019077405A1 (en) * | 2017-10-17 | 2019-04-25 | Handycontract, LLC | METHOD, DEVICE AND SYSTEM FOR IDENTIFYING DATA ELEMENTS IN DATA STRUCTURES |
US11250040B2 (en) * | 2017-10-19 | 2022-02-15 | Capital One Services, Llc | Systems and methods for extracting information from a text string generated in a distributed computing operation |
US11429642B2 (en) | 2017-11-01 | 2022-08-30 | Walmart Apollo, Llc | Systems and methods for dynamic hierarchical metadata storage and retrieval |
US10839018B2 (en) * | 2017-11-15 | 2020-11-17 | International Business Machines Corporation | Evaluation of plural expressions corresponding to input data |
US10910112B2 (en) | 2017-12-04 | 2021-02-02 | Koninklijke Philips N.V. | Apparatus for patient record identification |
US11061811B2 (en) * | 2017-12-15 | 2021-07-13 | International Business Machines Corporation | Optimizing software testing via group testing |
CN110019274B (zh) | 2017-12-29 | 2023-09-26 | 阿里巴巴集团控股有限公司 | 一种数据库系统以及查询数据库的方法和装置 |
US10579707B2 (en) * | 2017-12-29 | 2020-03-03 | Konica Minolta Laboratory U.S.A., Inc. | Method for inferring blocks of text in electronic documents |
US10817542B2 (en) | 2018-02-28 | 2020-10-27 | Acronis International Gmbh | User clustering based on metadata analysis |
US10956610B2 (en) * | 2018-03-06 | 2021-03-23 | Micro Focus Llc | Cycle walking-based tokenization |
US10719375B2 (en) * | 2018-03-13 | 2020-07-21 | Servicenow, Inc. | Systems and method for event parsing |
US11182395B2 (en) * | 2018-05-15 | 2021-11-23 | International Business Machines Corporation | Similarity matching systems and methods for record linkage |
US11244013B2 (en) * | 2018-06-01 | 2022-02-08 | International Business Machines Corporation | Tracking the evolution of topic rankings from contextual data |
US11106675B2 (en) * | 2018-06-12 | 2021-08-31 | Atos Syntel Inc. | System and method for identifying optimal test cases for software development |
US11263202B2 (en) | 2018-11-30 | 2022-03-01 | Microsoft Technology Licensing, Llc | Scalable implementations of exact distinct counts and multiple exact distinct counts in distributed query processing systems |
US11321359B2 (en) * | 2019-02-20 | 2022-05-03 | Tamr, Inc. | Review and curation of record clustering changes at large scale |
US10740347B1 (en) * | 2019-03-04 | 2020-08-11 | Capital One Services, Llc | Methods and systems for determining sets and subsets of parametric data |
US10922337B2 (en) * | 2019-04-30 | 2021-02-16 | Amperity, Inc. | Clustering of data records with hierarchical cluster IDs |
US11003643B2 (en) * | 2019-04-30 | 2021-05-11 | Amperity, Inc. | Multi-level conflict-free entity clusterings |
US11586659B2 (en) * | 2019-05-03 | 2023-02-21 | Servicenow, Inc. | Clustering and dynamic re-clustering of similar textual documents |
US11651032B2 (en) | 2019-05-03 | 2023-05-16 | Servicenow, Inc. | Determining semantic content of textual clusters |
CN110162672B (zh) * | 2019-05-10 | 2021-07-27 | 上海赜睿信息科技有限公司 | 数据处理方法及装置、电子设备和可读存储介质 |
US11321771B1 (en) * | 2019-06-03 | 2022-05-03 | Intuit Inc. | System and method for detecting unseen overdraft transaction events |
US11042555B1 (en) * | 2019-06-28 | 2021-06-22 | Bottomline Technologies, Inc. | Two step algorithm for non-exact matching of large datasets |
WO2021079230A1 (ja) * | 2019-10-25 | 2021-04-29 | 株式会社半導体エネルギー研究所 | 文書検索システム |
EP4057585A4 (en) * | 2019-12-06 | 2022-12-28 | Huawei Cloud Computing Technologies Co., Ltd. | EDGE SYSTEM AND PROCEDURES FOR PROCESSING DATA OPERATION REQUESTS |
JP2021097353A (ja) * | 2019-12-18 | 2021-06-24 | キヤノン株式会社 | データ送信装置、データ送信装置の制御方法、及びプログラム |
CN111064796B (zh) * | 2019-12-19 | 2023-03-24 | 北京明略软件系统有限公司 | 伴随关系的分析方法及装置、分析模型的训练方法 |
US11405482B2 (en) * | 2020-02-15 | 2022-08-02 | Near Intelligence Holdings, Inc. | Method for linking identifiers to generate a unique entity identifier for deduplicating high-speed data streams in real time |
US11176137B2 (en) * | 2020-02-19 | 2021-11-16 | Bank Of America Corporation | Query processing platform for performing dynamic cluster compaction and expansion |
US11768824B2 (en) | 2020-03-31 | 2023-09-26 | Wipro Limited | Method and system for performing real-time data validation |
TWI722859B (zh) * | 2020-04-07 | 2021-03-21 | 中華誠信資產管理顧問股份有限公司 | 不動產估價比較案例篩選方法及其系統 |
US11442990B2 (en) | 2020-04-08 | 2022-09-13 | Liveramp, Inc. | Asserted relationship data structure |
EP4088217A4 (en) * | 2020-05-18 | 2023-09-06 | Google LLC | INFERENCE PROCESSES FOR SEGMENTATION INTO WORDS OR PARTS OF WORDS |
US11201737B1 (en) * | 2020-05-19 | 2021-12-14 | Acronis International Gmbh | Systems and methods for generating tokens using secure multiparty computation engines |
US20230230707A1 (en) * | 2020-06-10 | 2023-07-20 | Koninklijke Philips N.V. | Methods and systems for searching an ecg database |
KR102199704B1 (ko) * | 2020-06-26 | 2021-01-08 | 주식회사 이스트시큐리티 | 다중 백신의 탐지명으로부터 대표 토큰을 선정하기 위한 장치, 이를 위한 방법 및 이 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체 |
WO2022006151A1 (en) * | 2020-06-29 | 2022-01-06 | 6Sense Insights, Inc. | Aggregation of noisy datasets into master firmographic database |
US11720601B2 (en) * | 2020-07-02 | 2023-08-08 | Sap Se | Active entity resolution model recommendation system |
US11615094B2 (en) | 2020-08-12 | 2023-03-28 | Hcl Technologies Limited | System and method for joining skewed datasets in a distributed computing environment |
EP4204979A4 (en) * | 2020-09-30 | 2024-10-02 | Liveramp Inc | SYSTEM AND METHOD FOR MATCHING IN A COMPLEX DATA SET |
US20220114624A1 (en) * | 2020-10-09 | 2022-04-14 | Adobe Inc. | Digital Content Text Processing and Review Techniques |
CN112990654B (zh) * | 2021-02-03 | 2021-11-02 | 北京大学 | 基于人口流动数据的城乡基础设施系统协同规划方法 |
US11783269B1 (en) | 2021-02-05 | 2023-10-10 | Palantir Technologies Inc. | Systems and methods for rule management |
EP4054145B1 (en) * | 2021-03-05 | 2024-01-10 | Cédric Iggiotti | Document-based access control system |
CN112948943B (zh) * | 2021-03-22 | 2022-11-18 | 西南交通大学 | 格栅式地下连续墙基础的OpenSees软件的前、后处理方法 |
CN113064870B (zh) * | 2021-03-22 | 2021-11-30 | 中国人民大学 | 一种基于压缩数据直接计算的大数据处理方法 |
KR20220134328A (ko) | 2021-03-26 | 2022-10-05 | 주식회사 팬스컴스 | 콘텐츠 저작권을 생성하는 사이니지 장치 |
US20220335075A1 (en) * | 2021-04-14 | 2022-10-20 | International Business Machines Corporation | Finding expressions in texts |
US20220342909A1 (en) * | 2021-04-22 | 2022-10-27 | Salesforce.Com, Inc. | Evaluating clustering in case of data stewardship actions |
US12020170B2 (en) * | 2021-05-24 | 2024-06-25 | Liveperson, Inc. | Systems and methods for intent discovery and process execution |
US11687559B1 (en) * | 2021-06-09 | 2023-06-27 | Morgan Stanley Services Group, Inc. | Computer systems and methods for reconciling data across data sources |
US20220414171A1 (en) * | 2021-06-28 | 2022-12-29 | Flipkart Internet Private Limited | System and method for generating a user query based on a target context aware token |
US11693821B2 (en) * | 2021-07-07 | 2023-07-04 | Collibra Belgium Bv | Systems and methods for performant data matching |
US11848824B2 (en) * | 2021-07-23 | 2023-12-19 | Vmware, Inc. | Distributed auto discovery service |
US20230034741A1 (en) * | 2021-07-28 | 2023-02-02 | Palo Alto Networks, Inc. | Token frequency based data matching |
US11630855B2 (en) * | 2021-08-04 | 2023-04-18 | Capital One Services, Llc | Variable density-based clustering on data streams |
US20230052619A1 (en) * | 2021-08-10 | 2023-02-16 | Intuit Inc. | Real-time error prevention during invoice creation |
US11841965B2 (en) * | 2021-08-12 | 2023-12-12 | EMC IP Holding Company LLC | Automatically assigning data protection policies using anonymized analytics |
US20240070321A1 (en) * | 2021-08-12 | 2024-02-29 | EMC IP Holding Company LLC | Automatically creating data protection roles using anonymized analytics |
US11841769B2 (en) * | 2021-08-12 | 2023-12-12 | EMC IP Holding Company LLC | Leveraging asset metadata for policy assignment |
US11704312B2 (en) * | 2021-08-19 | 2023-07-18 | Microsoft Technology Licensing, Llc | Conjunctive filtering with embedding models |
US11934468B2 (en) | 2021-09-16 | 2024-03-19 | Microsoft Tech nology Licensing, LLC | Content distribution control |
US11803569B2 (en) * | 2021-10-05 | 2023-10-31 | Procore Technologies, Inc. | Computer system and method for accessing user data that is distributed within a multi-zone computing platform |
AU2022396138A1 (en) * | 2021-11-24 | 2024-06-06 | Visa International Service Association | Method, system, and computer program product for community detection |
JP2023086507A (ja) * | 2021-12-10 | 2023-06-22 | キオクシア株式会社 | 情報処理装置および方法 |
US20230297623A1 (en) * | 2022-03-17 | 2023-09-21 | Yext, Inc. | Multi-record projection search platform |
USD1032628S1 (en) * | 2022-03-18 | 2024-06-25 | Ab Initio Technology Llc | Display panel portion with an animated computer icon |
US11983162B2 (en) | 2022-04-26 | 2024-05-14 | Truist Bank | Change management process for identifying potential regulatory violations for improved processing efficiency |
US20240121154A1 (en) * | 2022-09-30 | 2024-04-11 | Intuit Inc. | Modeling and managing affinity networks |
US12026140B1 (en) | 2023-02-21 | 2024-07-02 | Snowflake Inc. | Performance indexing of production databases |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6285995B1 (en) * | 1998-06-22 | 2001-09-04 | U.S. Philips Corporation | Image retrieval system using a query image |
US20040249789A1 (en) * | 2003-06-04 | 2004-12-09 | Microsoft Corporation | Duplicate data elimination system |
US20100067745A1 (en) * | 2008-09-16 | 2010-03-18 | Ivan Kovtun | System and method for object clustering and identification in video |
US20100231995A1 (en) * | 2009-03-11 | 2010-09-16 | Canon Kabushiki Kaisha | Image processing apparatus, image processing apparatus control method, and storage medium storing program |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02129756A (ja) | 1988-11-10 | 1990-05-17 | Nippon Telegr & Teleph Corp <Ntt> | 単語照合装置 |
US5179643A (en) | 1988-12-23 | 1993-01-12 | Hitachi, Ltd. | Method of multi-dimensional analysis and display for a large volume of record information items and a system therefor |
US5388259A (en) | 1992-05-15 | 1995-02-07 | Bell Communications Research, Inc. | System for accessing a database with an iterated fuzzy query notified by retrieval response |
JPH0644309A (ja) | 1992-07-01 | 1994-02-18 | Nec Corp | データベース管理方式 |
JPH0944518A (ja) | 1995-08-02 | 1997-02-14 | Adoin Kenkyusho:Kk | 画像データベースの構築方法と、画像データベースの検索方法及び検索装置 |
US5832182A (en) | 1996-04-24 | 1998-11-03 | Wisconsin Alumni Research Foundation | Method and system for data clustering for very large databases |
JPH10275159A (ja) | 1997-03-31 | 1998-10-13 | Nippon Telegr & Teleph Corp <Ntt> | 情報検索方法及び装置 |
US6026398A (en) | 1997-10-16 | 2000-02-15 | Imarket, Incorporated | System and methods for searching and matching databases |
JPH11184884A (ja) | 1997-12-24 | 1999-07-09 | Ntt Data Corp | 同一人判定システムおよび方法 |
US6581058B1 (en) | 1998-05-22 | 2003-06-17 | Microsoft Corporation | Scalable system for clustering of large databases having mixed data attributes |
US6742003B2 (en) | 2001-04-30 | 2004-05-25 | Microsoft Corporation | Apparatus and accompanying methods for visualizing clusters of data and hierarchical cluster classifications |
JP2000029899A (ja) | 1998-07-14 | 2000-01-28 | Hitachi Software Eng Co Ltd | 建物と地図とのマッチング方法および記録媒体 |
US6493709B1 (en) | 1998-07-31 | 2002-12-10 | The Regents Of The University Of California | Method and apparatus for digitally shredding similar documents within large document sets in a data processing environment |
US6658626B1 (en) | 1998-07-31 | 2003-12-02 | The Regents Of The University Of California | User interface for displaying document comparison information |
US7356462B2 (en) | 2001-07-26 | 2008-04-08 | At&T Corp. | Automatic clustering of tokens from a corpus for grammar acquisition |
US6317707B1 (en) * | 1998-12-07 | 2001-11-13 | At&T Corp. | Automatic clustering of tokens from a corpus for grammar acquisition |
US6456995B1 (en) | 1998-12-31 | 2002-09-24 | International Business Machines Corporation | System, method and computer program products for ordering objects corresponding to database operations that are performed on a relational database upon completion of a transaction by an object-oriented transaction system |
AU780926B2 (en) | 1999-08-03 | 2005-04-28 | Bally Technologies, Inc. | Method and system for matching data sets |
AU1051101A (en) | 1999-10-27 | 2001-05-08 | Zapper Technologies Inc. | Context-driven information retrieval |
US7328211B2 (en) | 2000-09-21 | 2008-02-05 | Jpmorgan Chase Bank, N.A. | System and methods for improved linguistic pattern matching |
DE10048478C2 (de) | 2000-09-29 | 2003-05-28 | Siemens Ag | Verfahren zum Zugriff auf eine Speichereinheit bei der Suche nach Teilzeichenfolgen |
US6931390B1 (en) | 2001-02-27 | 2005-08-16 | Oracle International Corporation | Method and mechanism for database partitioning |
JP3605052B2 (ja) | 2001-06-20 | 2004-12-22 | 本田技研工業株式会社 | あいまい検索機能を備える図面管理システム |
US20030033138A1 (en) | 2001-07-26 | 2003-02-13 | Srinivas Bangalore | Method for partitioning a data set into frequency vectors for clustering |
US20030041047A1 (en) | 2001-08-09 | 2003-02-27 | International Business Machines Corporation | Concept-based system for representing and processing multimedia objects with arbitrary constraints |
US7043647B2 (en) * | 2001-09-28 | 2006-05-09 | Hewlett-Packard Development Company, L.P. | Intelligent power management for a rack of servers |
US7213025B2 (en) | 2001-10-16 | 2007-05-01 | Ncr Corporation | Partitioned database system |
US20030120630A1 (en) * | 2001-12-20 | 2003-06-26 | Daniel Tunkelang | Method and system for similarity search and clustering |
AU2003210795A1 (en) * | 2002-02-01 | 2003-09-02 | John Fairweather | System and method for analyzing data |
CA2475319A1 (en) | 2002-02-04 | 2003-08-14 | Cataphora, Inc. | A method and apparatus to visually present discussions for data mining purposes |
WO2003107321A1 (en) | 2002-06-12 | 2003-12-24 | Jena Jordahl | Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view |
US6961721B2 (en) * | 2002-06-28 | 2005-11-01 | Microsoft Corporation | Detecting duplicate records in database |
US20050226511A1 (en) * | 2002-08-26 | 2005-10-13 | Short Gordon K | Apparatus and method for organizing and presenting content |
US7043476B2 (en) | 2002-10-11 | 2006-05-09 | International Business Machines Corporation | Method and apparatus for data mining to discover associations and covariances associated with data |
US20040139072A1 (en) | 2003-01-13 | 2004-07-15 | Broder Andrei Z. | System and method for locating similar records in a database |
US7912842B1 (en) | 2003-02-04 | 2011-03-22 | Lexisnexis Risk Data Management Inc. | Method and system for processing and linking data records |
US20050120011A1 (en) | 2003-11-26 | 2005-06-02 | Word Data Corp. | Code, method, and system for manipulating texts |
US7526464B2 (en) | 2003-11-28 | 2009-04-28 | Manyworlds, Inc. | Adaptive fuzzy network system and method |
US7283999B1 (en) | 2003-12-19 | 2007-10-16 | Ncr Corp. | Similarity string filtering |
US7472113B1 (en) * | 2004-01-26 | 2008-12-30 | Microsoft Corporation | Query preprocessing and pipelining |
GB0413743D0 (en) * | 2004-06-19 | 2004-07-21 | Ibm | Method and system for approximate string matching |
US8407239B2 (en) | 2004-08-13 | 2013-03-26 | Google Inc. | Multi-stage query processing system and method for use with tokenspace repository |
US7917480B2 (en) * | 2004-08-13 | 2011-03-29 | Google Inc. | Document compression system and method for use with tokenspace repository |
US20080040342A1 (en) * | 2004-09-07 | 2008-02-14 | Hust Robert M | Data processing apparatus and methods |
US7523098B2 (en) | 2004-09-15 | 2009-04-21 | International Business Machines Corporation | Systems and methods for efficient data searching, storage and reduction |
US8725705B2 (en) | 2004-09-15 | 2014-05-13 | International Business Machines Corporation | Systems and methods for searching of storage data with reduced bandwidth requirements |
US8224830B2 (en) | 2005-03-19 | 2012-07-17 | Activeprime, Inc. | Systems and methods for manipulation of inexact semi-structured data |
US9110985B2 (en) | 2005-05-10 | 2015-08-18 | Neetseer, Inc. | Generating a conceptual association graph from large-scale loosely-grouped content |
JP2007012039A (ja) * | 2005-05-31 | 2007-01-18 | Itochu Techno-Science Corp | 検索システムおよびコンピュータプログラム |
US7584205B2 (en) | 2005-06-27 | 2009-09-01 | Ab Initio Technology Llc | Aggregating data with complex operations |
US7672833B2 (en) | 2005-09-22 | 2010-03-02 | Fair Isaac Corporation | Method and apparatus for automatic entity disambiguation |
US7454449B2 (en) * | 2005-12-20 | 2008-11-18 | International Business Machines Corporation | Method for reorganizing a set of database partitions |
US20070162506A1 (en) * | 2006-01-12 | 2007-07-12 | International Business Machines Corporation | Method and system for performing a redistribute transparently in a multi-node system |
US7516279B2 (en) * | 2006-02-28 | 2009-04-07 | International Business Machines Corporation | Method using stream prefetching history to improve data prefetching performance. |
US20070244925A1 (en) | 2006-04-12 | 2007-10-18 | Jean-Francois Albouze | Intelligent image searching |
US7890533B2 (en) | 2006-05-17 | 2011-02-15 | Noblis, Inc. | Method and system for information extraction and modeling |
US7809769B2 (en) * | 2006-05-18 | 2010-10-05 | Google Inc. | Database partitioning by virtual partitions |
US8175875B1 (en) | 2006-05-19 | 2012-05-08 | Google Inc. | Efficient indexing of documents with similar content |
US7634464B2 (en) | 2006-06-14 | 2009-12-15 | Microsoft Corporation | Designing record matching queries utilizing examples |
US20080140653A1 (en) | 2006-12-08 | 2008-06-12 | Matzke Douglas J | Identifying Relationships Among Database Records |
US7630972B2 (en) | 2007-01-05 | 2009-12-08 | Yahoo! Inc. | Clustered search processing |
US7739247B2 (en) * | 2006-12-28 | 2010-06-15 | Ebay Inc. | Multi-pass data organization and automatic naming |
WO2008083504A1 (en) * | 2007-01-10 | 2008-07-17 | Nick Koudas | Method and system for information discovery and text analysis |
US8694472B2 (en) * | 2007-03-14 | 2014-04-08 | Ca, Inc. | System and method for rebuilding indices for partitioned databases |
US7711747B2 (en) * | 2007-04-06 | 2010-05-04 | Xerox Corporation | Interactive cleaning for automatic document clustering and categorization |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
WO2008146456A1 (ja) | 2007-05-28 | 2008-12-04 | Panasonic Corporation | 情報探索支援方法および情報探索支援装置 |
CN101079896B (zh) * | 2007-06-22 | 2010-05-19 | 西安交通大学 | 一种构建并行存储系统多可用性机制并存架构的方法 |
US7769778B2 (en) | 2007-06-29 | 2010-08-03 | United States Postal Service | Systems and methods for validating an address |
US7788276B2 (en) | 2007-08-22 | 2010-08-31 | Yahoo! Inc. | Predictive stemming for web search with statistical machine translation models |
US7925652B2 (en) | 2007-12-31 | 2011-04-12 | Mastercard International Incorporated | Methods and systems for implementing approximate string matching within a database |
US8775441B2 (en) * | 2008-01-16 | 2014-07-08 | Ab Initio Technology Llc | Managing an archive for approximate string matching |
US8032546B2 (en) | 2008-02-15 | 2011-10-04 | Microsoft Corp. | Transformation-based framework for record matching |
US8266168B2 (en) * | 2008-04-24 | 2012-09-11 | Lexisnexis Risk & Information Analytics Group Inc. | Database systems and methods for linking records and entity representations with sufficiently high confidence |
US7958125B2 (en) * | 2008-06-26 | 2011-06-07 | Microsoft Corporation | Clustering aggregator for RSS feeds |
US20120191973A1 (en) | 2008-09-10 | 2012-07-26 | National Ict Australia Limited | Online presence of users |
CA3014839C (en) | 2008-10-23 | 2019-01-08 | Arlen Anderson | Fuzzy data operations |
CN101751400A (zh) * | 2008-12-09 | 2010-06-23 | 财团法人工业技术研究院 | 技术数据分析的系统与方法以及专利分析的系统 |
US20100169311A1 (en) | 2008-12-30 | 2010-07-01 | Ashwin Tengli | Approaches for the unsupervised creation of structural templates for electronic documents |
US8161048B2 (en) | 2009-04-24 | 2012-04-17 | At&T Intellectual Property I, L.P. | Database analysis using clusters |
US20100274770A1 (en) | 2009-04-24 | 2010-10-28 | Yahoo! Inc. | Transductive approach to category-specific record attribute extraction |
CN102067128A (zh) * | 2009-04-27 | 2011-05-18 | 松下电器产业株式会社 | 数据处理装置、数据处理方法、程序及集成电路 |
US8195626B1 (en) * | 2009-06-18 | 2012-06-05 | Amazon Technologies, Inc. | Compressing token-based files for transfer and reconstruction |
US8285681B2 (en) * | 2009-06-30 | 2012-10-09 | Commvault Systems, Inc. | Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites |
US8572084B2 (en) * | 2009-07-28 | 2013-10-29 | Fti Consulting, Inc. | System and method for displaying relationships between electronically stored information to provide classification suggestions via nearest neighbor |
US8429179B1 (en) * | 2009-12-16 | 2013-04-23 | Board Of Regents, The University Of Texas System | Method and system for ontology driven data collection and processing |
CN101727502A (zh) * | 2010-01-25 | 2010-06-09 | 中兴通讯股份有限公司 | 一种数据查询方法及装置、系统 |
US8375061B2 (en) | 2010-06-08 | 2013-02-12 | International Business Machines Corporation | Graphical models for representing text documents for computer analysis |
US8346772B2 (en) * | 2010-09-16 | 2013-01-01 | International Business Machines Corporation | Systems and methods for interactive clustering |
US8463742B1 (en) * | 2010-09-17 | 2013-06-11 | Permabit Technology Corp. | Managing deduplication of stored data |
US8606771B2 (en) | 2010-12-21 | 2013-12-10 | Microsoft Corporation | Efficient indexing of error tolerant set containment |
US9535954B2 (en) | 2011-02-02 | 2017-01-03 | Nec Corporation | Join processing device, data management device, and string similarity join system |
US8612386B2 (en) | 2011-02-11 | 2013-12-17 | Alcatel Lucent | Method and apparatus for peer-to-peer database synchronization in dynamic networks |
WO2013074770A1 (en) * | 2011-11-15 | 2013-05-23 | Ab Initio Technology Llc | Data clustering, segmentation, and parallelization |
-
2012
- 2012-11-15 WO PCT/US2012/065249 patent/WO2013074770A1/en active Application Filing
- 2012-11-15 EP EP19190154.5A patent/EP3591538B1/en active Active
- 2012-11-15 WO PCT/US2012/065265 patent/WO2013074781A1/en active Application Filing
- 2012-11-15 CA CA2855710A patent/CA2855710C/en active Active
- 2012-11-15 KR KR1020147016338A patent/KR102029514B1/ko active IP Right Grant
- 2012-11-15 CN CN201280067076.5A patent/CN104054073B/zh active Active
- 2012-11-15 CN CN201280067136.3A patent/CN104054074B/zh active Active
- 2012-11-15 AU AU2012340418A patent/AU2012340418C1/en active Active
- 2012-11-15 KR KR1020147016343A patent/KR102031392B1/ko active IP Right Grant
- 2012-11-15 AU AU2012340423A patent/AU2012340423B2/en active Active
- 2012-11-15 CA CA3098038A patent/CA3098038C/en active Active
- 2012-11-15 US US13/678,038 patent/US9037589B2/en active Active
- 2012-11-15 CA CA2855701A patent/CA2855701C/en active Active
- 2012-11-15 JP JP2014541427A patent/JP6113740B2/ja active Active
- 2012-11-15 EP EP21158660.7A patent/EP3855321A1/en active Pending
- 2012-11-15 EP EP18193199.9A patent/EP3432169B1/en active Active
- 2012-11-15 US US13/677,991 patent/US10503755B2/en active Active
- 2012-11-15 JP JP2014542461A patent/JP6125520B2/ja active Active
- 2012-11-15 EP EP12795221.6A patent/EP2780836A1/en not_active Ceased
- 2012-11-15 JP JP2014541426A patent/JP6190817B2/ja active Active
- 2012-11-15 KR KR1020147016331A patent/KR102048597B1/ko active IP Right Grant
- 2012-11-15 AU AU2012340429A patent/AU2012340429B2/en active Active
- 2012-11-15 WO PCT/US2012/065255 patent/WO2013074774A1/en active Application Filing
- 2012-11-15 CA CA2855715A patent/CA2855715C/en active Active
- 2012-11-15 CN CN201810151609.7A patent/CN108388632B/zh active Active
- 2012-11-15 EP EP12791931.4A patent/EP2780833A1/en not_active Ceased
- 2012-11-15 EP EP12795220.8A patent/EP2780835B1/en active Active
- 2012-11-15 US US13/678,078 patent/US9361355B2/en active Active
- 2012-11-15 CN CN201280067094.3A patent/CN104040544B/zh active Active
-
2015
- 2015-02-10 HK HK15101462.0A patent/HK1200942A1/xx unknown
- 2015-02-10 HK HK15101463.9A patent/HK1200943A1/xx unknown
- 2015-02-10 HK HK19101853.3A patent/HK1259448A1/zh unknown
- 2015-02-11 HK HK15101522.8A patent/HK1201096A1/xx unknown
-
2016
- 2016-06-02 US US15/171,168 patent/US10572511B2/en active Active
-
2019
- 2019-11-07 US US16/676,704 patent/US20200320102A1/en not_active Abandoned
-
2020
- 2020-02-03 US US16/779,743 patent/US20200356579A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6285995B1 (en) * | 1998-06-22 | 2001-09-04 | U.S. Philips Corporation | Image retrieval system using a query image |
US20040249789A1 (en) * | 2003-06-04 | 2004-12-09 | Microsoft Corporation | Duplicate data elimination system |
US20100067745A1 (en) * | 2008-09-16 | 2010-03-18 | Ivan Kovtun | System and method for object clustering and identification in video |
US20100231995A1 (en) * | 2009-03-11 | 2010-09-16 | Canon Kabushiki Kaisha | Image processing apparatus, image processing apparatus control method, and storage medium storing program |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200356579A1 (en) | Data clustering based on candidate queries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |