【文献】
Vernica, Rares et al.,Efficient Parallel Set-Similarity Joins Using MapReduce,Proceedings of the 2010 ACM SIGMOD International Conference on Management of data,ACM,2010年 6月 6日,pp.495-506
【文献】
成田和世、外1名,編集距離制約下におけるトライを用いた高速並列類似結合,第3回データ工学と情報マネジメントに関するフォーラム 論文集 [online],電子情報通信学会データ工学専門委員会,2011年 8月 4日,Internet<URL:http://db-event.jpn.org/deim2011/proceedings/pdf/c7-4.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
第1処理エンティティによって第1オリジナルレコードセットを処理して、前記オリジナルレコードと該オリジナルレコードそれぞれの1又は2以上のコピーとを含む第2レコードセットを生成することであって、それぞれのオリジナルレコードが1又は2以上のフィールドを含み、前記オリジナルレコードの少なくともいくつかの各レコードを処理することが、
前記オリジナルレコードの少なくとも1つのコピーを生成すること、及び
前記オリジナルレコードに第1セグメント値を関連付けるとともに、前記コピーに第2セグメント値を関連付け、前記第1セグメント値が、前記オリジナルレコードそれぞれのフィールドの1又は2以上のデータ値の最初の文字に対する偶数位置の文字に対応し、前記第2セグメント値が、前記オリジナルレコードの前記それぞれのフィールドの1又は2以上のデータ値の最初の文字に対する奇数位置の文字に対応することを含み、
前記第2レコードセットの中の前記レコードに関連付けられる前記セグメント値に基づいて、複数の受信側処理エンティティの間で前記第2レコードセットを分割し、各受信側処理エンティティにおいて、前記受信側処理エンティティにおいて受信した前記レコードの1又は2以上のデータ値に基づいて結果を生成する操作を実行することを含む方法。
受信側処理エンティティにおいて受信したレコードの1又は2以上のデータ値に基づいて操作を実行することが、第1レコードの1又は2以上のデータ値の中で出現する文字ストリングと、少なくとも第2レコードの1又は2以上のデータ値の中で出現する文字ストリングとを照合し、一致を判定することを含む、請求項1に記載の方法。
近似照合が、第1レコードのデータ値と第2レコードのデータ値の間の許容される差分を定義する照合基準に基づき、それぞれのオリジナルレコードに関して、1又は2以上のデータ値の最初の文字に対する偶数位置の文字、及び前記1又は2以上のデータ値の最初の文字に対する奇数位置の文字が、前記許容される差分のいずれかによる前記1又は2以上のデータ値の変更に応答して、第1セグメント値又は第2セグメント値の少なくとも1つは変化しないように選択される、請求項4に記載の方法。
受信側処理エンティティで生成される結果が、前記受信側処理エンティティにおいて受信した各レコードに関して、前記レコードの1又は2以上のデータ値に基づく割り当てられた代替キーで拡張された前記レコードを含む、請求項9に記載の方法。
受信側処理エンティティにおいて受信したレコードの1又は2以上のデータ値に基づいて操作を実行することが、前記受信したレコードを1又は2以上のクラスタにクラスタ化することを含む、請求項1に記載の方法。
受信側処理エンティティにおいて生成される結果が、前記受信側処理エンティティにおいて受信した各レコードに関して、前記レコードの1又は2以上のデータ値、及び前記受信側処理エンティティにおいて受信したその他のレコードの少なくともいくつかのレコードの1又は2以上のデータ値に基づく割り当てられたクラスタで拡張された前記レコードを含む、請求項11に記載の方法。
第2処理エンティティにおいて各受信側処理エンティティからの結果を受信すること、及び冗長な結果を削除するように前記受信した結果を処理することをさらに含む、請求項1に記載の方法。
冗長な結果を削除するように受信した結果を処理することが、オリジナルレコードに関連付けられる第1結果、又は前記オリジナルレコードのコピーに関連付けられる第2結果の最大で1つを選択することを含む、請求項16に記載の方法。
第1処理エンティティにおいて各受信側処理エンティティからの結果を受信すること、及び冗長な結果を削除するように前記受信した結果を処理することをさらに含む、請求項1に記載の方法。
受信側処理エンティティの数が、それぞれのオリジナルレコード、及び前記オリジナルレコードのコピーに関連付けられる異なるセグメント値以上である、請求項1に記載の方法。
処理エンティティが、マルチコアプロセッサにおけるコアであり、さらに第1処理エンティティが、第2レコードセットから分割されたレコードを、前記マルチコアプロセッサにおける相互接続ネットワークを介して受信側処理エンティティに送信する、請求項1に記載の方法。
処理エンティティが、マルチプロセッサコンピュータシステムにおけるプロセッサであり、さらに第1処理エンティティが、第2レコードセットから分割されたレコードを、前記マルチプロセッサコンピュータシステムにおける相互接続ネットワークを介して受信側処理エンティティに送信する、請求項1に記載の方法。
処理エンティティが、ラックマウント型サーバシステムにおけるサーバコンピュータであり、さらに第1処理エンティティが、第2レコードセットから分割されたレコードを、前記ラックマウント型サーバシステムにおける相互接続ネットワークを介して受信側処理エンティティに送信する、請求項1に記載の方法。
処理エンティティが、ネットワークを介して通信状態にあるコンピュータシステムであり、さらに第1処理エンティティが、第2レコードセットから分割されたレコードを、前記ネットワークを介して受信側処理エンティティに送信する、請求項1に記載の方法。
第1オリジナルレコードセットを処理して、前記オリジナルレコードと該オリジナルレコードそれぞれの1又は2以上のコピーとを含む第2レコードセットを生成するように構成された第1処理エンティティであって、それぞれのオリジナルレコードが1又は2以上のフィールドを含み、
前記オリジナルレコードの少なくともいくつかの各レコードを処理することが、
前記オリジナルレコードの少なくとも1つのコピーを生成すること、及び
前記オリジナルレコードに第1セグメント値を関連付けるとともに、前記コピーに第2セグメント値を関連付け、前記第1セグメント値が、前記オリジナルレコードそれぞれのフィールドの1又は2以上のデータ値の最初の文字に対する偶数位置の文字に対応し、さらに前記第2セグメント値が、前記オリジナルレコードそれぞれのフィールドの1又は2以上のデータ値の最初の文字に対する奇数位置の文字に対応することを含む、第1処理エンティティと、
前記第2レコードセットの中の前記レコードに関連付けられる前記セグメント値に基づいて分割された前記第2レコードセットそれぞれのサブセットを受信する複数の受信側処理エンティティとを含み、各受信側処理エンティティが、前記受信側処理エンティティにおいて受信した前記レコードの1又は2以上のデータ値に基づいて結果を生成する操作を実行するように構成される、コンピューティングシステム。
【発明を実施するための形態】
【0063】
1 概略
1.1 検索ベースのクラスタプロセス概略
図1Aを参照すると、データ処理システム10が、データソース100からのデータをクラスタ化するのに使用される。一部の実施例において、データ処理システム10によって実行されるクラスタ化プロセスが、場合により、無効な値を含め、それぞれのフィールド(「属性」又は「カラム」とも呼ばれる)に関する値を有するレコードとして編成されたデータ内で出現するトークンを解析する。トークンは、フィールド又はフィールドの組み合わせの中の少なくとも1つの値、又は値の少なくとも1つの断片である。ユーザ102が、ユーザインターフェース104を使用して、データソース100、及びデータソース100の変数関係のネットワークにおける選択されたフィールド(又はフィールドの組み合わせ)における値、トークン、並びに値及びトークンの変数のコレクションに関して、場合により、表とグラフの両方として、レポートを受信すること、変数トークン、類似した句(すなわち、マルチトークン単位)、及び類似したレコードを識別し、トークン、句、又はレコードのあいまいな照合又は偽陽性の照合を見つけ出して、解決し、さらにクラスタメンバシップ判定を行って、各レコードを1又は2以上のクラスタに割り当てるビジネス規則を作成し、保持すること、並びに変数ネットワーク接続及びクラスタメンバシップ判定を点検し、変更し、承認することを含む、クラスタ化プロセスの様々な態様を監視して、制御する。
【0064】
データソース100は、一般に、データセットとも呼ばれる、様々な個々のデータソースを含み、これらのデータソースそれぞれが、独自の格納フォーマット及びインターフェース(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット)を有することが可能である。個々のデータソースは、クラスタ化システム10にローカルであることが可能であり、例えば、同一のコンピュータシステム上でホストされ、又はクラスタ化システム10から遠隔であることが可能であり、例えば、ローカルエリアネットワーク若しくはワイドエリアネットワークを介してアクセスされる、又はクラウドにおけるウェブサービスを介してクラスタ化システム10にアクセスする、若しくはそのようなクラスタ化システム10によってアクセスされる遠隔コンピュータ上でホストされる。
【0065】
データソースにおけるデータは、1又は2以上のレコードとして編成されることが可能であり、各レコードは、値を含む1又は2以上のフィールドを含み、各値は、文字のストリング又はバイナリ値からなる。ストリング文字は、単一バイト又はマルチバイトの文字、例えば、ASCII又はユニコードであることが可能である。バイナリデータは、整数などの数、及び画像データなどの生のデータ及び/又は圧縮されたデータを含み得る。
【0066】
データソース100から読み取られたデータが、変数プロファイラ110によって処理される。変数プロファイラ110は、トークンを識別し(例えば、所定の規則に基づいて)、データの中の特定のトークンの出現(例えば、特定のトークンが出現するレコードの数)をカウントし、さらに一部の実施例において、特定のトークンが出現する特定のレコードを識別する情報を格納する。また、変数プロファイラ110は、何らかの類似性スコアに基づいて、例えば、編集距離、音声上の類似性、又は共有される文字のシーケンスに基づく測定(例えば、「eqty fnd」は、「equity fund」に対して、「eqty fnd」のすべての文字が「equity fund」の中で同一の順序で出現するので、類似している)によって、互いの変数である識別された異なるトークンのペア(「変数トークンペア」と呼ばれる)を識別することもする。外部データ106が、例えば、語の辞書、同義語及び省略形のリスト、ユーザが供給した変数ペアリング(例えば、会社特有の同義語、省略形、又は頭字語)、又は名前の文化的変数ペアリング(例えば、ニックネーム、変数つづり、外来名の変数音訳など)を供給することによって、類似性スコアを使用して変数プロファイラ110によって識別されたトークン及び変数トークンペアのコレクションを豊富化する、又は変更するのに使用され得る。そのようなリストは、オリジナルデータセットの中に存在しないトークンを追加する、又は無関係であるトークンの間に類似性によって変数ペアリングを生じさせることが可能である。また、外部データ106が、変数ペアリングに関連付けられるスコアを変更するのに(スコアが近さを示すのに使用される場合、このことは、トークン間の見た目の距離を変更するのに使用され得る)、変数ペアリング(例えば、偶然に類似している辞書語間の)を断つのに、又はトークンを削除するのに使用されることも可能である。
【0067】
トークンの例が、値がスペースによって分離された複数の語からなるフィールドの中の語(スペースなしの文字のストリング)、例えば、フルネームを含むフィールドからとられた個人のファーストネーム、又はストリートアドレス(場合により、複数のフィールドを連結することによって形成された)の中の語である。トークンは、都市の名前、「New York」のようにスペースを含むことも可能である。トークンは、政府識別子(id)又はインボイス番号のように、数値、場合により、バイナリであることが可能である。トークンは、1つの文字が削除されているストリング、数字が削除されている数、ストリング若しくは数からとられたn個の文字の隣り合ったシーケンスからなるnグラムなどの、ストリング値又は数値の断片であることが可能である。トークンは、画像の中の領域に対応するデータのような、バイナリフィールドの断片であることも可能である。
【0068】
変数プロファイラ110によって識別された変数トークンのペアリング(変数トークンペアにする)は、各トークンがノードで表され、変数トークンの間のペアリングが、それらのトークンを表すノード間のエッジに対応する変数ネットワークを規定する。この変数ネットワークが、変数ネットワークアナライザ120によって解析されることが可能である。通常のネットワークは、接続された複数の構成要素のコレクションを含むことが可能であり、接続された各構成要素のノードはすべて、その構成要素における別のノードにエッジで接続されるが、互いに接続される、異なる構成要素におけるノードは存在しない。接続された構成要素は、エッジによって接続されたノードのセットの閉包である。定義により、異なる、接続された構成要素は、互いに素である。変数ネットワークアナライザ120が、ネットワークの接続された構成要素のコレクションを識別することが可能であり、1又は2以上のトークン代表を、変数ネットワークの接続された構成要素内の各トークンに関連付けることが可能である。変数ネットワークのノードを特徴付ける数量の中には、データセットの中のすべてのレコードにわたる選択されたフィールド(又はフィールドの組み合わせ)の中の関連付けられるトークンのインスタンスのカウントがあり、別個に、トークンとペアにされた変数の数、つまり、そのトークンを代表するノードに接続されたエッジの数に対応する、トークンの度数(又は配位数)が存在する。
【0069】
ユーザ102が、ユーザインターフェース104において、トークンに関する、詳細には、単一の接続された構成要素内のトークンに関する変数ペアリングのネットワークのグラフ表示を見ることが可能である。変数ネットワークの接続された構成要素の特定のサブセットが重要なものとなる可能性があり、グラフ表示の中で強調表示されてもよい。例えば、より大きいカウントを有するノードに接続されていないノードを考慮されたい。一部の実施例において、これらのノードは、接続された構成要素に関するトークン代表のコレクションとして選択され得る。等しいカウント、又はより小さいカウントのノードにだけ接続するエッジをたどることによって得られたノードのツリーからなるサブネットワークは、トークン代表の正規の近隣と呼ばれ得る。正規の近隣の中のすべてのノードが、その正規の近隣のトークン代表によって表されることが可能である。正規の近隣は、重なり合ってもよい。したがって、トークンは、そのトークンがそれ自体、トークン代表ではない場合、2つ以上のトークン代表に関連付けられることが可能である。ユーザ102が、グラフィカルユーザインターフェース104を介して正規の近隣、及び正規の近隣の重なり合いを視覚化できることが有用である。
【0070】
選択されたトークンとペアにされた変数トークンのセットは、そのトークンのローカル近隣と呼ばれる。選択されたトークンは、ローカル近隣に関するプライマリと呼ばれる。グラフ表示において、ローカル近隣は、選択された(プライマリ)ノードにエッジで接続されたノードのセットである。トークンの度数(又はグラフ的な意味における配位数)は、ローカル近隣のサイズ(トークン自体を除外するように1を引いた)である。選択されたトークンの重要度は、選択されたトークンのローカル近隣における各トークンに関する出現のカウントの合計を、少なくとも1つのトークン(その選択されたトークンが出現する所与のソース及びフィールド又はコンテキスト)を含むレコードの数で割った比のログとして計算される。この重要度は、様々なトークンの相対的重要性が比較されることを可能にし、すなわち、より高い重要度を有するトークンは、より少ないレコードの中で出現し、したがって、検索において使用される際、より区別する役割をする。
【0071】
一部の実施例において、統計試験によって特異であると識別されるトークン、例えば、カウントが、平均にローカル近隣におけるトークンのカウントの標準偏差を足した合計を超えるトークンが、「(ローカルの)陽性のトークン」と識別され得る。(正規の近隣における、又は実際、任意の近隣におけるトークンに関して同様の識別が行われ得る。)会社名又は個人名の中の個々の語から形成されたトークンに関して、陽性のトークンは、例えば、誤りで形成されたタイプ入力上の変数ではなく、統計的に「実際の」語又は名前である可能性が高い。つまり、そのトークンの出現の頻度が、十分に高く、したがって、データセット内のそのトークンの近隣のコンテキスト内で、そのトークンが偶然、出現した可能性は低い。
【0072】
陽性のトークンは、必ずしも辞書の中で見つかるものと予期されないことに留意されたい。データセットの中でつづりの間違った語が優勢である体系的な理由が存在し得る。詳細には、沢山の勝手に作られた、又は意図的につづりの誤った語が、独特の会社名を形成するのに使用される。同様に、データセットの統計がすべての辞書語の識別をサポートするわけではない可能性があるため、すべての辞書語が陽性のトークンとして認識されるわけではない。
【0073】
多くのローカル近隣は、1つの陽性のトークンを有する。陽性のトークンは、統計的な意味で、「実際の」トークンであり、その他のトークンは、比較的稀な変数である。一部のローカル近隣は、すべての変数トークンの出現の頻度が同様であるため、陽性のトークンを全く有さない可能性がある。このことは、特に、陽性のトークンを区別するのに不十分な統計しか存在しない場合に、データセットの中で稀であるトークンに関して生じ得る。陽性のプライマリトークンのローカル近隣が、2つ以上の陽性のトークンを有する場合、その他の陽性のトークンは、「偽陽性」と見なされる。つまり、それらのトークンは、統計的に、プライマリ陽性トークンの偶然の変数ではなく、他の「実際の」トークンである可能性が高い。そのような偽陽性を識別することは、そのような偽陽性が、意味上の意義に基づいてペアにされるべきではない類似性に基づいてペアにされたトークンを表すので、有用である。変数ネットワークの精度が、そのような変数ペアリングを断つことによって向上させられることが可能である。複数形のような一部の「偽」陽性は、変数として残されるべきであるため、いくらかの配慮が要求される。
【0074】
トークン代表のコンテキストにおいて、正規の近隣に関して陽性のトークンを識別することは、有用であり得る。一部の非常に一般的な個人名は、非常に類似している。例えば、「Hernandez」と「Fernandez」を考慮されたい。1つの代入だけで異なることが、「Hernandez」と「Fernandez」を変数ペアにする。所与のデータセットの中で「Hernandez」と「Fernandez」のいずれかが、他方より頻繁であり、そのいずれかが、「Hernandez」と「Fernandez」の両方を含む正規の近隣において最も頻繁に出現するトークンである可能性が高く、したがって、一部の実施例において、その正規の近隣のトークン代表である。「Hernandez」と「Fernandez」の間の結び付きを断つことによって、「Hernandez」と「Fernandez」はともに、より大きいカウントの別のトークンに結び付けられる可能性が低いトークンになり、すると、それぞれの独自の(重なり合う)正規の近隣を有するトークン代表となる。例えば、「Hernandez」と「Fernandez」の間の結び付き、及び他の類似したペアを断つ、さらなる剪定が、これらの正規の近隣をより完全に分離するのに必要である可能性がある。
【0075】
ユーザ102が、ユーザインターフェース104を使用して、例えば、ノード間でエッジを追加すること、若しくは削除すること、又はノードを追加すること、若しくは削除することによって、変数ネットワークを操作することが可能である。このことは、適切な外部データ106を供給することによって変数プロファイラ110によって実行される手順において行われている可能性があるのと同様に、変数ペアリングを追加すること、若しくは断つこと、又はトークンを追加すること、若しくは削除することに対応する。グラフィカルユーザインターフェース104が、このことを行う有用な方法をもたらす。また、グラフィカルユーザインターフェース104は、陽性のトークンを他のトークンからグラフィックスで区別し、陽性のトークンを接続するエッジを強調表示することも可能である。接続された陽性のトークンのすべての変数ペアをリストアップするビューが、いずれのエッジを断ち、いずれのエッジを保つかを選択する機構と一緒に与えられることが可能である。
【0076】
検索ベースのクラスタ化エンジン130が、一部の実施例では、並列に処理されるようにセグメントに分けられ、及び/又はプロセッサの間で分割された「トークン化されたレコード」(コンテンツがトークン化されているレコード)を処理して、類似したコンテンツを有するレコードをグループ化して(それらのレコードに対応するトークンに基づいて)、データクラスタ180のコレクションを生成する。クラスタ化エンジン130は、データソース100におけるレコードのバッチ内のすべてのレコードが最初から比較のためにひとまとめに利用できる「バッチモード」(又は「オフラインモード」)で、又はレコードが、到着するにつれ、それまでに処理されているレコードのコレクションに照らして処理される「インクリメンタルモード」(又は「オンラインモード」)で実行されることが可能である。
【0077】
一部の実施例において、バッチモードが、初期のクラスタ化を得るのに使用され、後のレコードが、インクリメンタルモードで追加される。すると、データを追加することは、蓄積されたデータの完全なセットを最初から再クラスタ化することを要求しない。追加のレコードだけを処理する明白なパフォーマンス上の利点に加えて、このことは、クラスタに対するレコードのそれまでに決定された割り当てが、データセット全体が最初から再クラスタ化されるとした場合に生じ得るように、新たなデータが到着するにつれて変わることがあり得ないというさらなる利点を有する。このことは、クラスタ、及びクラスタのメンバが、クラスタ化プロセスとは無関係にビジネス意義を有するとともに、企業は、より多くのデータが利用可能になるというだけの理由でクラスタメンバシップが変わり得るという考え方には抵抗があるので、ビジネスコンテキストでクラスタ化を行う際に特に重要である。
【0078】
クラスタストア170は、検索ストア146及び代表的レコードストア178(
図1D及び
図1G参照)を含め、クラスタ化エンジン130によって保持され、クラスタプロセスに参加する。一部の実施例において、クラスタストア170に加えて、変数プロファイラ110及び変数ネットワークアナライザ120からの結果が、クラスタ化プロセス中に類似性に関してレコードを比較する際に考慮に入れられることが可能である。
【0079】
データクラスタは、コンテンツが十分に類似していると判断されているデータレコードのセットである。クラスタに含められたデータレコードは、そのクラスタのメンバであると言われる。一部の実施例において、クラスタの中のレコードは、そのクラスタの他のメンバと高い度合の類似性を示し、他のクラスタのメンバと低い度合の類似性を示す。
【0080】
セグメントは、クラスタにおけるメンバシップに関して互いに比較され得るデータレコードのセットである。異なるセグメントの中のレコードは、クラスタ化エンジン130によって比較されず、必然的に、別々のクラスタに対するメンバシップを割り当てられる。データレコードセットをセグメントに入れることは、セグメント化と呼ばれる。レコードは、2つ以上のセグメントのメンバであり得る。一部のシナリオにおいて、例えば、レコードのコレクションを、製品識別子、又は郵便番号若しくは出所の国のような地理的数量のような互いに素なセットに分割する特性を分類する、クラスタにわたって共通であると見込まれる値に基づく自然なセグメント化が存在する。一部の実施例において、データクラスタは、他の基準に基づいてセグメント化されることが可能であり、例えば、データが、政府によって割り当てられた識別子の断片に基づいてセグメント化されることが可能である。一部の実施例において、複数のレベルのセグメント化が可能である。例えば、データが、出所の国別にまずセグメント化されることが可能であり、それぞれの出所の国セグメント内のデータクラスタが、政府によって割り当てられた識別子の断片によってさらにセグメント化されることが可能である。
【0081】
一部の実施例において、並列に処理する際、各セグメントは、異なるセグメントの中のレコード間で比較は全く行われないため、別の処理パーティションに送られることが可能である。他の実施例において、検索ストアを含め、クラスタ化エンジン130によって使用される或るデータが、すべてのパーティションによって共有されるという条件付きで、同一のセグメントの中のデータレコードが、並列に処理されるべき別々のパーティションに分割されることが可能である。
【0082】
遠隔処理システム間の情報の制限された流れ、又は単方向の流れが関与する一部の実施例において、クエリ、並びに検索ストアエントリのような共有される情報が、制限された遠隔処理システムにおいて閲覧される結果の信頼性を損なうことなしに、制限された遠隔処理システムに単方向で送られることが可能である。例えば、一部の国々は、それらの国々の国境をまたいだ個人情報の共有を制限し、すなわち、いくつかの国は、他のすべての国へのデータエクスポートを禁止する(例えば、スイス国)一方で、他の国々は、米国を含む、選択された他の国々へのデータエクスポートを禁止する(例えば、フランス)。
図1Bにおいて、クエリ20が、ユーザ22によって米国21内で開始される。このクエリは、個人名、政府によって割り当てられた識別子、及び生年月日からなることが可能であり、このクエリの目的は、名前を指定された個人によって所有されるすべての銀行口座を見つけ出すことである。このクエリが、米国21内で保持されるデータクラスタ23に適用され、いくつかのレコード(候補レコードと呼ばれる)が返される。検索ストア146からの検索エントリ、又は代表的レコードストア178からの代表的レコードなどのさらなる情報が、このクエリの結果として取り出され、保持されることが可能である。このクエリ、候補レコード、及び、場合により、さらなる情報が、選択的データエクスポートの国41内で保持されるデータクラスタ43に照らして、ローカルユーザ42によってローカルでクラスタ化されるように、選択的データエクスポートの国41に送られることが可能である(40)。同様に、このクエリ、候補レコード、及び、場合により、さらなる情報が、選択的データエクスポートの国51内で保持されるデータクラスタ53に照らして、ローカルユーザ52によってローカルでクラスタ化されるように、データエクスポート禁止の国51に送られることが可能である(50)。クラスタ化の結果は、適切なローカルアクションのために、例えば、詐欺検知又は法律執行のために、制限されたデータエクスポートの国々の国内で利用可能となる。制限されたデータエクスポートの国がその国のデータ、又はその国の共有される情報(検索エントリ又は代表的レコードのような)をエクスポートしないことは、制限されたデータエクスポートの国におけるデータから導き出されるクラスタメンバがその国の外では見えないことを単に意味する。その制限された国の外でクラスタ化されたデータの完全性は、影響を受けない。
【0083】
一部の実施例において、レコードの類似性は、採点関数及びビジネス規則を使用して、データレコードの1又は2以上のフィールドからのトークンの比較を組み合わせてスコアにすることによって測定される。検索コード及び照合コードなどのデータパターンコードが、レコードの特性を要約し、類似性を測定するためのビジネス規則を作成する際と、結果をユーザ102に提示する際の両方で役立つ。例えば、レコードに関する検索コードが、レコードのセットの間で共有されるトークンの組み合わせにラベルを付けることが可能である一方で、ペアに関する照合コードが、比較されている各フィールド、又はフィールドの各組み合わせに関して照合品質、及び入力の状態を符号化することが可能である。例えば、比較されるフィールド値のペアに関する照合コード内の照合品質状態は、それらの値が同一であった場合、「厳密な照合」を含むことが可能であり、又は類似性スコアがファジー照合閾値より大きかった場合、「ファジー照合」を含むことが可能である。照合コード内の入力状態は、ペアのレコード1における値が無効又は空白(0以上のスペース文字)である場合、「入力されていない1」を含むことが可能であり、あるいはペアのレコード1における値とレコード2における値がともに入力されている、又はともに無効若しくは空白である場合、「相互に関係する入力」を含むことが可能である。検索コード又は照合コードは、検索又は照合ペアを特徴付ける様々な属性に関するそのようなコード化された状態のコレクションから組み立てられる。各検索コードを有するサンプルレコード、又は各照合コードを有する照合するペアからのサンプルレコードが、ユーザに表示され得る。このことは、ユーザが、クラスタメンバシップ判定を行うのに使用される類似性の測定を開発し、改良し、調整するのに役立ち得る。
【0084】
クラスタ承認エンジン190が、ユーザ対話を介してクラスタ判定を繰り返し改良するのに使用され得る。ユーザ102が、例えば、レコードをクラスタのメンバとして確認して、又はレコードを新たなクラスタ若しくは既存のクラスタに再マップして、ユーザインターフェース104を介して一連のクラスタ承認判定を行う。クラスタ全体を分割するのに、又はマージするのに、選択されたレコードがユーザ102によって再マップされるだけでよい。クラスタ承認判定によって潜在的に影響を受けるレコードが、クラスタ化エンジン130を介して識別され、取り出され、再処理されて、変更されたデータクラスタ180がもたらされる。個々のレコードを再マップすることは、クラスタメンバシップに対してカスケード効果を有し、影響を受けるレコードが再クラスタ化されると、既存のクラスタが分割される、又はマージされることをもたらし、つまり、クラスタのオリジナルプライマリレコードに対してよりも、再マップされるレコードに近いレコードは、再マップされるレコードと一緒に再マップされるレコードの新たなクラスタに移動する。ユーザ102には、ユーザによるクラスタ承認選択によって誘発された変化を検証するようにユーザインターフェース104においてデータクラスタの「前と後の」表現が示されることが可能である。次に、ユーザ102が、結果に満足するまで、クラスタを変更することを繰り返しで継続することが可能である。再マップすることによって生じるカスケード効果のため、ユーザは、個々のすべてのレコードの配置を細かく管理する必要なしに、いくつかの賢明な変更で多くのレコードの配置を操作することができる。
【0085】
1.2 クラスタ化エンジン
図1Cは、クラスタ化エンジン130の実施例の要素を図示する。一部の実施例において、データソースレコード100又はトークン化されたレコード118が、セグメント化エンジン132によって読み取られて、セグメントに分離され、及び/又は並列パーティショナ134によって並列処理のために複数のプロセスの間に分割される。
【0086】
一部の実施例において、オリジナルレコード又はトークン化されたレコードのセットが、より区別しやすいレコードを先にして、レコードの識別性又は豊かさを反映する順序を課すように並べ替えられる(136)(各セグメント内、及び/又は各プロセス内で)ことが可能である。このことは、クラスタ化の品質を向上させ得る。識別性とは、多様な値及び複数のトークンを包含するより完全に入力されたフィールドを有するレコードが、入力されていないフィールド、及びデフォルトの値又は単一トークンで入力されたフィールドを包含する、場合により、不完全なレコードの場合と比べて、他のレコードから直観的により区別しやすいということを意図している。
【0087】
例えば、1つの識別性の基準は、レコードの特徴的入力パターンに基づくことも可能である。入力パターンコードが、例えば、レコードの中の1若しくは2以上のフィールドの選択されたセット、又はフィールドの組み合わせに関する値のセット(クラスタメンバシップと関係のある)、例えば、フィールドが入力されていない(無効、空、又は空白)場合の値「0」、フィールドがデフォルトの値を包含する場合の値「1」、フィールドにデフォルトでない値が入力されている場合の値「2」を連結することによって、レコードの入力の状態を符号化するのに使用され得る。他のより大きい値が、フィールドの入力の状態、例えば、テキストフィールドの中のトークンの数のさらなる定性的な区別を行うのに使用されることも可能である(それらの数が「9」を超え得る場合、他のコード値の表現において適切な補償を行って)。識別性のスコアが、入力パターンコードにおける様々な入力値の重み付けされたスコアとして計算されることが可能である。より高いスコアは、より区別しやすいレコードを示し、レコードを編成する並べ替え136は、識別性のスコアの上位の順からの並べ替えであることが可能である。(一般に、並べ替え順序は、スコアにまず変換することをしない、入力パターンコードなどの数値でない識別性の基準から決定され得る。)識別性のより正式の測定は、所与のソース及びフィールド(又はコンテキスト)における各トークンの重要度のような統計的な測定を含む変数プロファイラストア115の中のデータを使用して構築され得る。
【0088】
識別性の並べ替え136を行う目的は、そうすることが、クラスタ化メンバシップ判定プロセスがインクリメンタルであるため、すなわち、レコードが、処理されるにつれ、クラスタに割り当てられるため、より良好なクラスタ化結果につながることである。詳細には、クラスタの数は、始めには知られておらず、レコードが処理されるにつれ、新たなクラスタが発見される。識別性の順序付けは、クラスタメンバシップ判定プロセスと一緒に機能して、クラスタメンバシップ判定プロセスと適合する最大数の個別のクラスタをもたらすように設計される。より低い識別性のスコアを有し、しばしば、それに付随するより低いデータ品質を有するレコードが先に処理された場合、それらのレコードが、さもなければ区別しやすいクラスタの凝集を誘発する傾向があることを経験が示す。
【0089】
一部の実施例において、実質的に異なるデータ品質を有するレコードが別々に処理されるデータ品質カスケードでクラスタ化を実行することが好ましい可能性がある。例えば、顧客名、政府id、及び生年月日を有する銀行レコードに関して、3つすべてのフィールドが(デフォルトでない値で)入力されているレコードのセットを、2つのフィールドが(デフォルトでない値で)入力されているレコードとは別個に、1つだけのフィールドが入力されているレコードとは別個に処理する価値がある。クラスタ化メンバシップ判定の信頼性は、レコードの完全性が低下するにつれて低下し、別々のクラスタ化動作を行うことが、ユーザがこのことの影響を理解するのを助ける可能性がある。同様に、異なる識別性のスコアのレコードが、ユーザ102のためにユーザインターフェース104においてグラフ表示で特徴付けられることも可能である。例えば、それらのレコードが、いずれのレコードの信頼性がより低いかをユーザが一目で見分けることができるように、高い識別性から低い識別性までに及ぶ階調スケールで色付けされることも可能である。また、ユーザインターフェース104は、やはり、ユーザが所与の品質のデータに集中することを可能にする、異なる範囲の識別性を有するトークンの表示のオンとオフを切り換えるためのスイッチを有することも可能である。ここで、識別性は、データ品質の代わりとして使用されているが、グラフ表示は、クラスタ化を駆動するのに使用される識別性のスコアとは無関係に導き出されたデータ品質の直接の測定を使用することも可能である。
【0090】
クラスタ化エンジン130は、比較のために利用可能なレコードのセットの中から、クエリレコードと呼ばれる、それぞれのオリジナルレコード又はトークン化されたレコードに関する候補照合を識別する候補検索エンジン140を含む。候補検索エンジンによってレコードが全く取り出されない場合、新たなクラスタidが生成されて、そのクエリレコードに割り当てられる。その新たなクラスタについての適切な情報が、クラスタストア170の中に格納される。レコードが候補検索エンジンによって取り出された場合、それらのレコードは、クラスタメンバシップ判定を行うのに先立って、採点エンジン150によってクエリレコードに照らして詳細に採点される。クラスタメンバシップエンジン160が、採点されたクエリレコードのクラスタメンバシップを判定する。変数プロファイラ110によって生成された変数プロファイラストア115、及び変数ネットワークアナライザ120によって生成された変数ネットワークストア126、並びに他のクラスタストア170がすべて、候補レコードを識別すること、及び採点することを支援するように候補検索エンジン140及び採点エンジン150によって使用され得る。
【0091】
一部の実施例において、単一のレコードが、例えば、異なるセグメントの中で、又は異なるクラスタ戦略を用いた別々のクラスタ化動作で、複数のクラスタに割り当てられることが可能である。複数照合リコンサイラ165が、各レコードを単一のクラスタに関連付けるように割り当てを調整するのに使用され得る。
【0092】
一部のシナリオにおいて、複数のクラスタに対するあいまいな照合が、複数の照合が調整された後に、例えば、レコードが2つ以上のクラスタにおけるメンバシップに近い場合のように、代替の照合を区別するのに不十分な情報しか存在しない場合に、残る可能性がある。例えば、「Acme Industries Canada」という名前、及び「Acme Industries Australia」という名前でラベルが付けられた別々の2つのクラスタが存在するものと想定されたい。「Acme Industries」というクエリレコードは、両方の名前に対して等しい照合である。他の情報がない状況において、「Acme Industries」がいずれのクラスタに割り当てられるべきかは、あいまいであり、解決できない。そのような事例において、あいまいな照合が、場合により、あいまいな照合に関与するレコードに、クラスタ化される(照合する)レコードのネットワークのグラフ表示において別の色で印を付けて、ユーザインターフェース104においてユーザ102に報告され、表示されることが可能である。
【0093】
一部の実施例において、クラスタメンバシップ判定プロセスは、あいまいなレコードを、可能な代替のクラスタのセットからの1つのクラスタに割り当てることが可能である。あいまいなメンバとペアにされたクラスタメンバシップ判定に関与するクラスタの各メンバに関して、ユーザインターフェース104が、あいまいなレコードから、メンバシップが許可されたクラスタのペアにされたメンバに至るエッジを1つの色で表示し、メンバシップが拒否されたクラスタの対応するメンバに至る各エッジを異なる色で表示することが可能である。(例えば、
図11Dで、あいまいなレコード1190と照合するクラスタのメンバ1193の間のエッジが黒で示される一方で、あいまいなレコードと照合されないクラスタのメンバ1194の間のエッジがグレーで示される。)この表示は、ユーザ102が、クラスタメンバシップエンジンによって行われた判定を、クラスタメンバシップエンジンによる割り当てを受け入れる、又は変更する前に直ちに利用可能な代替から容易に区別できるようにすることが可能である。
【0094】
候補検索エンジン140の目的は、類似性の最低限の標準を満たすレコードだけを取り出す検索を実行することによって、クエリレコードと詳細に比較される必要があるレコードの数を減らすことである。基本的に、比較に利用できるレコードのセット(バッチ事例では、セグメントの中のすべてのレコード)には、インデックスに照らした検索が、照合である可能性が全くないレコードを破棄する計算リソースをわずかしか使用しない高速のフィルタとして使用され得るように、インデックスが付けられる。クラスタ化エンジン130のパフォーマンスは、候補検索エンジン140が、詳細に考慮されるべきレコードのセットを絞ることの成功に劇的に影響され得る。
【0095】
1.3 候補検索エンジン
図1Dは、候補検索エンジン140の実施例の要素の概略を示す。クエリレコードが、データソースレコード100P又はトークン化されたレコード118Pのセットから読み取られる。このクエリレコードは、オリジナルレコード又はトークン化されたレコードが、並列に処理されるようにセグメント化され、及び/又は分割されている場合、セグメントの中に、及び/又は並列パーティションの中に入っていることが可能である。クエリは、クエリレコードの1若しくは2以上のフィールド、又はフィールドの組み合わせから1若しくは2以上のトークンを選択する事前定義された、又はユーザによって指定された手順に基づき、クエリ構築手順142によって、選択されたトークン、又は選択されたトークンの組み合わせから生成される。一部の実施例において、生成されたクエリは、クエリ展開エンジン143によって、1又は2以上の特定のクエリを含む展開されたクエリに展開される。
【0096】
一部の実施例において、採点エンジン150によるクラスタメンバシップを判定することに関与する、採点フィールドと呼ばれるフィールドのコレクションが、採点エンジン150によって使用される採点規則から見出されることが可能である。採点規則は、事前定義された、又はユーザによって指定された規則セットの中で指定され、この規則セットの中で、1若しくは2以上のフィールド、又はフィールドの組み合わせが、類似性に関して別々に比較され、その後、集合的なセットの中間フィールドスコアが組み合わされて、全体的なレコードスコアが計算される。規則セットは、規則のコレクションであり、それらの規則それぞれが、入力値、定数、パラメータ、他の中間値、他の出力値、並びに1又は2以上の事例ベースの割り当てのセットの中で他のデータセットを調べることによって得られた値を組み合わせることによって、1若しくは2以上の中間値又は出力値を計算し、このことは、組み込まれた論理演算及び数学的演算、組み込まれた関数、並びにユーザによって定義された関数の組み合わせを使用することが可能である。規則セットは、いくつかがベクトルであり得る、1又は2以上の出力値を生成することが可能である。採点規則セットの中の採点規則は、入ってくるデータレコードからの選定されたフィールドを使用し、これらのフィールドが、ひとまとめに採点フィールドと呼ばれる。
【0097】
採点フィールドの中で同一の値を共有するレコードのセットは、同一のクラスタメンバシップ判定を共有する。採点フィールド重複排除モジュール144が、そのようなレコードセットの最初のレコードだけが採点にかけられ、後続のレコードは、そのクラスタメンバシップ結果を単に継承することを確実にする。
【0098】
検索エントリ展開エンジン145が、入ってくるデータソース100全体におけるレコードに、又は既存のデータクラスタレコードのセット180に適用されて、検索ストア146が構築される。
【0099】
クエリレコードが、候補検索エンジン140のコア検索エンジン147に送られる。検索エンジン147は、展開された各クエリを取り込み、そのクエリレコードと識別された候補照合レコードの間の可能な候補照合の一意のレコード識別子の1又は2以上のリストを返す。これらのリストは、クラスタ候補セレクタ148に送られ、セレクタ148が、事前定義された規則及び/又はユーザによって指定された規則(例えば、規則セット)を適用して、採点エンジン150による詳細な採点の投資に値する最低基準を満たす候補照合レコードのリストを識別する。一部の実施例において、クエリレコードと利用可能なレコードの間で照合するトークンの組み合わせを特徴付ける検索コードが、選択プロセスを円滑にするとともに、選択プロセスを遡及的に解析するのに使用される。
【0100】
1.4 変数プロファイラ
図1Eは、変数プロファイラ110の実施例の要素の概略を示す。変数プロファイラ110は、参照により本明細書に組み込まれている、「Managing an Archive for Approximate String Matching」という名称の米国特許出願公開第2009/0182728号明細書において説明されるようなアーカイブを生成するためのプロセスを含む、変数トークンのペアリングを識別するアーカイブを生成するための様々な技法のいずれかを使用することが可能である。レコードが、データソース100から読み取られる。それらのレコードが、スタンダダイザ112及びトークナイザ113によって処理されることを含め、データ準備モジュール111におけるプロファイリングのために準備される。スタンダダイザ112が、選択されたフィールド(又はフィールドの指定された組み合わせ)の性質及び意味に基づいて、入ってくるデータを標準化するように事前定義された規則及び/又はユーザによって指定された規則を適用する。例えば、ストリング値が、小文字に変換されることが可能であり、特定の句読文字が、削除される、スペース文字で置換される、又は削除されることと、スペース文字で置換されることの両方が行われる(場合により、複数のレコードをもたらして)ことが可能である。トークナイザ113が、フィールドの性質及び意義に応じて、フィールドの中の値に適用される事前定義された規則及び/又はユーザによって指定された規則に基づいて、トークンのリストを識別する。例えば、アドレスのストリートの行が、スペース文字で分割されて、語のリストになることが可能である一方で、場合により、「New York」のような意味単位を表す値を包含する都市フィールドは、語に分割されない。トークナイザ113が、クラスタ化エンジン130によるさらなる処理のためにトークン化されたレコード118のデータセット又はデータストリームを生成する。
【0101】
トークン化されたレコードの別々のトークンが、各トークンのインスタンスの数(例えば、トークンが出現するレコードの数)をカウントすることを含め、変数プロファイリングエンジン114によってプロファイリングされる。一部の実施例において、トークンが出現したデータソース、フィールド、及び/又はコンテキスト(フィールドの論理グループ化)を識別するキーが、そのトークンに関連付けられることが可能であり、そのトークンのインスタンスの数の対応するカウントが保持されることが可能である。このことは、異なるソース、異なるフィールド、又は異なるコンテキストにおいて出現する同一のトークンに関して別々の統計が集計されることを可能にする。一部の実施例において、所与のフィールド又はコンテキストにおいてトークンが出現するレコードを識別するロケーション情報も、トークンに関連付けられる。このロケーション情報は、トークンが出現する各レコードに関してビットが設定される、圧縮されてもよい、ビットベクトルの形態であることが可能である。それらのビットの順序は、レコードのロケーションに明示的に、又は暗黙にマップされ得る。
【0102】
変数プロファイリングエンジン116が、トークン類似性測定に基づいて、互いの変数であるトークンを識別することにとりかかる。多くのトークン類似性測定が可能である。1つのトークン類似性測定は、編集距離に基づいて類似性に関してトークンを比較することである。レーベンシュタイン編集距離は、1つの語を別の語に変えるのに要求される挿入、削除、及び代入の数をカウントする。2つの語がより類似しているほど、それらの語の編集距離は小さくなる。別の測定は、例えば、SOUNDEX符号化を使用して、音声上の類似性に基づいて語を比較することである。
【0103】
第3の可能性は、共有される文字のシーケンスを比較することである。基本シーケンス類似性スコアが、共有される文字の数をカウントし、短い方のストリングの長さによって割ることによって、計算され得る。次に、完全シーケンス類似性スコアが、シーケンスの乱れた文字、及びストリングの長さの差に関して基本スコアから重み付けされたペナルティを引くことによって形成される。例えば、「eqty fnd」と「equity fund」は、それぞれ、可能な8つの文字及び11の文字のうち、スペース文字を含め、8つの文字を共有する。基本類似性スコアは、1である。シーケンスの乱れた文字は存在せず、長さの差は、3である。したがって、0.05という長さミスマッチの重みを用いると、シーケンス類似性スコアは、1−0.5
*3=0.85である。
【0104】
一部の実施例において、変数プロファイリングエンジン114は、変数ペア、及び変数ペアの類似性スコアを識別するスコアアーカイブ、並びにトークンのソース−フィールド−コンテキスト出現それぞれにおけるすべてのトークン、関連付けられるカウント、ロケーション情報、及び同一のソース−フィールド−コンテキストにおける変数トークンのリスト、及びそれらのトークンのカウントを包含する変数アーカイブを含む、変数プロファイラストア115を生成する。変数ネットワーク116が、各ノードがトークンであり、各エッジが変数トークンのペアリングである変数アーカイブから計算されることが可能である。変数ネットワーク116は、ユーザ102が、場合により、変数プロファイリングエンジン114によって変数ペアとして識別されていないトークンを結び付けるようにエッジを追加して、又は意味に基づいてではなく、類似性に基づいてのみ変数であるトークンを接続するエッジを削除して、変数ネットワーク116を操作することが可能なユーザインターフェース104においてグラフ表示されることが可能である。
【0105】
一部の実施例において、変数プロファイラストア115及び変数ネットワーク116は、外部データ106を組み込むことによって豊富化され得る。外部データ106は、ユーザによって供給された、又は第三者から入手可能な同義語及び省略形のリストを含み得る。外部データソースの一例が、ニックネーム、代替のつづり、及び代替の音訳を含む、名前の文化的変数のリストである。例えば、そのようなデータは、外部データの中のトークンのすべて、及びそれらのトークンに伴う変数ペアを変数プロファイラストア115及び変数ネットワーク116に追加することによって、又はそのデータの中で存在するトークン間のペアリングだけを追加することによって、組み込まれ得る。外部データの中のトークンのすべて、及びそれらのトークンに伴う変数ペアを変数プロファイラストア115及び変数ネットワーク116に追加する場合、そのデータの中に存在しないトークンに関連付けられるカウントは、0でなければならない。そのようなトークンが将来の処理において生じた場合には、そのトークンのカウントが増やされることが可能であるが、他のトークンに対する暗示される結び付きは、既に存在していることになる。
【0106】
1.5 変数ネットワークアナライザ概略
図1Fは、変数ネットワークアナライザ120の実施例の要素の概略を示す。変数ネットワーク116が読み取られ、ネットワーク解析エンジン122がネットワーク解析を行う。一部の実施例において、このネットワーク解析は、変数ネットワーク116内の変数トークンの接続された構成要素のセットを識別し、後段でいくつかが説明されるさらなる解析を実行することが可能である。ユーザ102が、各トークンがノードとして表示され、トークンの各変数ペアリングがエッジによって示される変数ネットワーク116のグラフ表示を、ユーザインターフェース104において閲覧することが可能である。このグラフ表示は、後段で列挙される例における情報などの、ノード及びエッジを特徴付ける情報で飾られることが可能である。ユーザ102は、ユーザインターフェース104を使用して、ノード若しくはエッジを追加して、若しくは削除して、又は飾られた情報を編集して、変数ネットワーク116を繰り返し変更することができる。
【0107】
トークンのローカル近隣が表示され得る。ネットワークアナライザ122によって行われる近隣解析が、陽性のトークン(ローカル近隣、又は他の近隣において他のトークンから統計的に区別可能なトークン)、及び陽性のトークンのペアを接続するエッジを識別し、さらにグラフ表示においてそれらのトークン及びエッジに印を付けることが可能である。
【0108】
各トークンのインスタンスのカウントが、その表示において示されることが可能であり、一部の実施例において、そのノードのために使用されるアイコンのサイズによって図示されることが可能である。より大きいカウントの変数に全く接続されないトークンが、それらのトークンの正規の近隣(最大カウントのトークンから始めて、等しいカウント、又はより小さいカウントのトークンに対するすべての変数ペアリングを追うことによって形成されるトークンのツリー)と一緒に識別され、表示されることが可能である。トークン代表は、選択された近隣におけるすべてのトークンを代表するように選択されたトークンである。トークン代表セレクタ124が、接続された各構成要素から1又は2以上のトークン代表、例えば、正規の近隣の最大カウントのトークンを選択することが可能である。トークン代表に関連付けられる正規の近隣及びその他の近隣は、重なり合う可能性がある。
【0109】
変数プロファイラストア115からとられたトークンの重要度が、いずれのトークンが、検索用語として使用された際、比較的より区別する役割をするかを示す。選択されたトークンの重要度は、その選択されたトークンのローカル近隣における変数のカウントから計算され、その選択されたトークンに関連付けられる。変数のペアにされたトークンは、異なるローカル近隣を有する可能性があるので、それらのトークンの重要度は、異なる可能性があり、それ故、各トークンに重要度を関連付けることが重要である。重要度は、変数ネットワークのグラフ表示において色のグラデーションで表示され得る別の特性である。
【0110】
ローカル近隣の(シンプソンの)多様度指数が、各トークンに関連付けられる別の数量である。正規化されると、シンプソンの多様度は、指定されたトークンの変数のカウントの分布の偏りを反映する。多様度の正規化されていない大きさは、ランダムに選択されたトークンの変数が有するものと予期されるカウントである。指定されたトークンの第k番の変数のカウントがn
kである場合、変数(指定されたトークンを含まない)の合計数は、n
kのkにわたる合計である。多様度は、
多様度=<n
k>=Σ
k in variantsn
kp
k=Σ
k in variantsn
k2/N、
ただし、
N=Σ
k in variantsn
k
は、変数の合計カウントであり、さらに
p
k=n
k/N
は、ランダムに選択された出現が第k番の変数に関連付けられる確率である。示される多様度を正規化するのに、Σ
k in variantsn
kで割って、0〜1までの範囲内の量を得る。この多様度は、トークンの相互関係が低い多様度を暗示するため、互いに関係するトークンの間の結び付きを識別するために役立ち得る。このことは、陽性のトークンを識別するのに使用される測定と類似するが、異なる測定を与える。
【0111】
ネットワーク解析の結果は、一部の実施例において、トークン代表ストア127及び近隣解析ストア128を含む、ネットワーク解析ストア126のコレクションの中に格納され得る。トークン、及びトークンに関連付けられるトークン代表は、トークン代表ストア127の中に格納され得る。近隣解析ストア128が、陽性のトークン、陽性のトークンの変数ペア、及び正規の近隣を含め、ネットワーク解析から集められた情報を包含することが可能である。
【0112】
1.6 クラスタ承認プロセス概略
図1Gは、クラスタ承認エンジン190の実施例の要素の概略を示す。クラスタメンバシップ判定が、ユーザインターフェース104を使用してユーザ102によって点検されることが可能である。1つのレコードが、メンバであり得るように2つ以上のクラスタに十分に近い、あいまいなクラスタメンバシップ判定が、クラスタ化エンジン130によって合図され、ユーザ102によって解決されることが可能である。エンジン190の図示される要素は、ユーザ入力によって開始され得るアクションに対応する。
【0113】
レコードが、所与のクラスタのメンバとして確認されることが可能である(192)。レコードの一意のレコード識別子と、関連付けられる確認されたクラスタのクラスタidをペアにする判定が、クラスタストア170の中で確認済み又は除外済みのストア172の中に格納されることが可能である。確認されたレコードが、確認済み又は除外済みのストア172の中にそのレコードの一意のレコード識別子が(確認されたセットの中に)存在することで明らかになることとして、クラスタ化エンジン130に提示された場合、その確認されたクラスタのクラスタidが、さらなる処理なしに報告される。
【0114】
レコードが、所与のクラスタから除外されることが可能である(194)。その判定が、クラスタストア170の中で確認済み又は除外済みのストア172の中に格納されることが可能である。除外されたレコードが、クラスタ化エンジン130に再び提示された場合、そのレコードは、除外されたクラスタにおけるメンバシップを阻止され、必然的に、異なる、場合により、新たなクラスタに割り当てられる。
【0115】
レコードは、他のクラスタに再マップされることが可能である(196)。詳細には、クラスタは、1又は2以上のレコードを新たなクラスタに割り当てることによって、2又は3以上の部分に分割されることが可能である(197)。多くの事例において、再処理が行われた際など、選定された個別のレコードを再マップするだけでよく、オリジナルクラスタプライマリレコードと比べて、それらのレコードにより類似したレコードは、再マップされたレコードの後を追って再マップされたレコードの新たなクラスタに入る。また、クラスタは、1又は2以上のレコードを既存のクラスタに再マップすることによって1つのクラスタにマージされることも可能である(198)。やはり、多くの事例において、再クラスタ化に先立って、選定された個別のレコードを再マップするだけでよい。
【0116】
2 実施例
2.1 変数プロファイラ及び削除−結合手順
変数プロファイラ110が、変数のペアを識別し、それらのペアの類似性を測定し、さらに変数トークンのペア、及びそれらのペアの類似性スコアを変数プロファイラストア126の中に格納する。一部の実施例において、変数プロファイラ110が、トークンのすべてのペアの間の編集距離を計算し、編集距離(「類似性スコア」)が所定の閾値を下回るトークンのペアを格納する。レーベンシュタイン編集距離が、1つのトークンを別のトークンに変えるのに要求される最低限の数の挿入、削除、及び/又は代入をカウントし、タイプ入力上の類似性の広く使用されている測度である。残念ながら、トークンのすべてのペアを比較するアプローチは、大多数のトークンペアは、類似性を全く有さず、したがって、多量の計算労力がほとんど利益なしに費やされるため、非効率である。
【0117】
削除−結合手順が、レーベンシュタイン編集距離とほぼ同じように、タイプ入力上の変数に基づいてトークンの類似性を測定するが、比較的近いトークンだけを比較するように設計され、その結果、多数の無関係のトークンを評価する計算費用が節約される。このことは、「Managing an Archive for Approximate String Matching」という名称の米国特許出願公開第2009/0182728号明細書においてより完全に説明される。
【0118】
一部の実施例において、削除−結合手順は、以下のように進められる。トークン辞書(すなわち、カタログ、又はトークンのリスト)の中の各トークン、又はトークン辞書の一部分(例えば、所与のソース、所与のフィールド、及び/又は所与のコンテキストに関する)に関して、そのトークンから単一の文字を削除することによって形成されるすべての変数が作られる。所与のトークンに関するこの「削除セット」は、オリジナルトークンを識別するキー(「token_key」)、オリジナルトークン(「original」)、削除変数トークン(「deletion_var」)、及びオリジナルトークンから削除された文字の位置(「deletion_pos」)をそれぞれが有するエントリのリストを包含する。削除セットのコレクションは、変数プロファイラストア115の中にトークン辞書と一緒に格納されることが可能であり、又はやはり変数プロファイラストア115の中に格納される変数ペアを生成するように変数プロファイリングエンジン114によって使用された後、破棄されることが可能である。
【0119】
オリジナルトークンは、削除変数と一緒に削除セットの中に0という削除された文字位置で含められることが可能である。例えば、以下が、トークンLONDONに関する削除セットである。すなわち、
【0121】
{token_key,deletion_pos}は、所与の削除変数を識別する一意の「キー」であることに留意されたい。
【0122】
削除−結合手順は、2つ以上の削除に拡張され得る。一部の実施例において、削除位置のシーケンスは、類似性を採点する際に使用するために記録されることが可能である。他の実施例において、削除位置は、保持されなくてもよく、採点は、代替の手順を使用して行われ得る。
【0123】
削除−結合手順と類似した手順が、deletion_varトークンに対して結合(又はルックアップ)操作を実行することによって1又は2以上の辞書の中のトークンの間で変数照合を判定するのに使用され得る。結合/ルックアップ操作は、高速で、選択的である。deletion_varトークンを共有する2つのトークンが、各トークンにおいて多くとも1回の削除(削除−結合1変数に関して)だけ異なることが可能であり、したがって、それらのトークンは、編集距離が「近い」。このことは、削除−結合手順の潜在的な利点、すなわち、採点する価値があるだけ十分に近いペアだけを識別することによって、採点を要求するペアの数を減らすことをもたらす。一部の実施例において、deletion_var上でペアにされたトークンの間の類似性スコアが、事前定義された、又はユーザによって指定された類似性関数を使用して、関連付けられるオリジナルトークンの間で直接に計算される。例えば、ペアにされた2つのトークンが、レーベンシュタイン編集距離又は他の何らかの編集距離測定を使用してそれらのトークンの編集距離を計算することによって比較されることが可能である。削除−結合手順のこの適用は、ユーザが、所望される任意の類似性採点手順を使用することを可能にしながら、採点すべきペアの数を減らすという潜在的な利点を有する。
【0124】
他の実施例において、変数ペアリングの品質が、削除された文字の位置を比較することによって採点される。このことは、削除−結合手順から集められた情報を活用する編集距離様の測定の高速な計算をもたらし(一方、レーベンシュタイン編集距離計算は、事実上、トークンペアに関してゼロからやり直す)、さらにペアリングの特徴を強調するスコアのカスタマイズを可能にする。類似性スコアを計算するための手順の一例において、異なるタイプの変更にポイントが以下のとおり割り当てられることが可能である。すなわち、削除(又は挿入)に関して1ポイント、最初の文字を変更することに関して1ポイント、最後の文字を変更することに関して1ポイント、削除された文字の位置が2つ以上、離隔している場合、1ポイントである。各タイプの変更に関連付けられた重みは、調整可能である。一方のトークンの削除位置が0であり、他方のトークンの削除位置がそうではない場合、このことは、単一の挿入又は単一の削除である。削除位置が同一である場合、このことは、代入である。削除位置が1だけ異なる場合、このことは、入れ換えである。同一のtoken_keyと、同一のdeletion_posとを有する照合は、厳密な照合であるので、無視される。また、同一のトークンの中のペアにされた文字の削除を示す照合も、厳密な照合として無視される(例えば、MEETが、1つのインスタンスで文字2を削除することによって、第2インスタンスにおいて文字3を削除することによってMETに変換されることが可能であり、ペアリングは、共有されるトークンMEETを単に返す)。
【0125】
以下は、オリジナルトークンLONDON、LODON、LOMDON、LODNON、LODOONに関するそれぞれの削除セットからの選択されたエントリの例である。
【0127】
この例において、削除変数エントリの多くは、関心を引く照合につながらないため、示されていない。結合操作は、第1エントリと第2エントリを、この両方のエントリがdeletion_varの同一の値を有する場合、ペアにする。オリジナルトークンのもたらされる変数ペアは、以下のとおりである。すなわち、
【0129】
前掲の例示的な変数照合は、それぞれ、トークン0−削除、代入、入れ換え、異なるパスによって得られた入れ換え、離隔した挿入及び削除、及びトークン0−挿入(又はトークン1−削除)である。変数照合を表すアーカイブの中のトークンの各ペアは、照合の品質を示す関連付けられる類似性スコアを有する。
【0130】
前述した採点を使用して、これらのペアに関する類似性スコアは、以下のとおりである。すなわち、
【0132】
これらの事例において、類似性スコアは、事実上、変数ペアの間の編集距離に対応する。単一の文字削除に基づく削除−結合手順が、すべての編集距離1変数ペア(挿入、削除、及び代入)、及びいくつかの編集距離2変数ペア(入れ換え)を見出す。離隔した挿入−削除に関するスコアは、deletion_posが2つ以上、離隔していたため、追加のペナルティによってカスタマイズされている。
【0133】
ペアに関して類似性スコアを計算した後、類似性スコアに閾値を適用すること、又はペアリングの性質に条件を適用することによって照合判定が行われる。例えば、この場合、類似性スコアに基づく規則は、類似性スコアが2以下である場合、変数ペアリングが変数照合を表すことであることが可能であり、その結果、離隔した挿入−削除ペアリング「LONDON LODOON」が変数照合として識別されることから除外される。
【0134】
ペアリングの性質に条件を適用することの例として、そのペアリングに挿入、削除、代入が関与しているかどうか、又は変更された文字が最初の文字又は最後の文字であったか、あるいはdeletion_posの位置が2つ以上、離隔していたかどうかの情報を符号化する、照合コードと呼ばれるコードが、構築されることが可能である。一部の実施例において、そのような照合コードは、ビット、又はビットの組み合わせが、識別された各条件に関して設定されたビットマップとして構築されることが可能である一方で、他の実施例において、そのような照合コードは、各条件を符号化するサブストリングの連結からなるストリング、又は、場合により、単に、情報を保持するレコード構造である。照合コードは、特定の重みを割り当てることも、実際のスコアを計算する関数を定義することもせずに、類似性スコアに寄与する可能性がある情報を符号化するデータパターンコードである。このことは、スコアを計算するステップを経る必要なしに、照合が照合コードに直接に適用されることを許容する、又は認めない一般的な条件を明らかにする。例えば、この場合、変数照合は、照合コードによって示される離隔した挿入−削除を有さない任意の変数ペアリングであることが可能である。
【0135】
2.2 変数−検索
変数−検索動作が、候補検索エンジン140の一部の実施例の動作の基礎をなす。
図2A〜
図2Dは、変数−検索動作の例を示す。
図2Aを参照すると、生のクエリ200が処理のために読み取られる。この例において、生のクエリ200は、値「82536」を有する、政府idなどの数値フィールドである。要件は、データセット220の中で政府idと照合する変数を見出すことであり、政府idは、最大で1つの代入だけ生のクエリと異なる。このことは、照合する2つの政府idが1以下のハミング距離を有することを要求するのと均等である。ハミング距離は、等しい長さの整列された2つの文字シーケンス(ときとして、長さの差を足すことによって、等しくない長さの整列されたシーケンスにまで拡張される)の間の照合しない文字の数をカウントする。
【0136】
データセット220は、ディスク上に保持される基準データセット、又は、例えば、メモリ内の結合操作中にメモリの中に保持される一時データセットであることが可能である。
【0137】
削除−結合手順の最初のステップは、クエリ展開手順として、生のクエリ200に適用されて、展開されたクエリ210と呼ばれる削除セットが生成される(205)。展開されたクエリ210は、2つの値、すなわち、deletion_posの値(「del_pos」というラベルが付けられた見出しの下の)、及びdeletion_varトークン(「del_var」というラベルが付けられた見出しの下の)をそれぞれが含むエントリを含む。同様に、検索−エントリ展開手順が、データセット220の中の各エントリに適用されて、削除セット225が生成され、次に、削除セット225が検索ストア230に書き込まれる。
【0138】
図2Bを参照すると、展開されたクエリ210の中の各エントリが、検索ストア230の中で探されて、照合するエントリ232が見出される。次に、照合するエントリ232の中のキー235が、データセット220の中で探されて(237)、さらなる処理のためにデータセットレコードが取り出される。データセット220の中の照合するレコードのコレクションはすべて、idフィールドが、生のクエリid200に対して1以下のハミング距離を有するという要件を満たす変数照合である。この例において、生のクエリid「82536」は、「82436」と「82538」の両方に対してハミング距離1照合であるが、「85236」(ハミング距離2)に対してはそうではない。
【0139】
図2Cを参照すると、idに対する照合要件が、削除−結合1照合を許容するように緩和される。前述したとおり、このことは、すべての編集距離1照合、並びに入れ換え及び離隔した挿入−削除を含む。生のクエリ200及びデータセット220は、前の場合と同様であり、展開されたクエリ210と検索ストア230がともに、前の場合と同様に、生のクエリ200、及びデータセット220の中の各idから削除セットを形成することによって構築される。この例において、展開されたクエリからのルックアップは、del_varだけを使用する。このことは、前の両方のハミング距離1照合を見出し、さらに新たな照合236も見出す。照合エントリ236の中のキー237が、データセット220の中で探されて(238)、さらなる処理のためにデータセットレコードが取り出される。この例において、生のクエリid「82536」は、入れ換えを伴う、データセットid「85236」に対する削除−結合1照合である。
【0140】
図2Dは、一般的な例を図示する。生のクエリ200Gが、クエリ展開205Gを経て、展開されたクエリ210Gを与える。クエリ展開205Gが、1又は2以上の検索キー、及び、場合によっては、オリジナルの生のクエリ、又は生のクエリが導き出されたクエリレコードからのさらなる情報からなる2又は3以上のエントリを生成する。データセット220Gの中の各エントリが、検索−エントリ展開手順によって、検索ストア230Gの中の2又は3以上のエントリに展開される(225G)。検索−エントリ展開225Gは、1又は2以上の検索キー、及び、場合によっては、データセットレコードからのさらなる情報からなる2又は3以上のエントリを生成する。検索−エントリ展開225Gは、データセット220の中に重複キーが存在し得るので、必ずしも、データセット220Gの中の各エントリに関して別々の検索−エントリを生成するとは限らない。検索−エントリ展開手順225Gは、必ずしも、クエリ展開手順205Gと同一の展開手順であるとは限らない。
【0141】
それぞれの展開されたクエリ検索キー231Gが、検索ストア230Gの中で変数−ルックアップ手順232Gを使用して探されて、照合するエントリ233Gが見出される。ルックアップ手順232Gは、クエリ検索キー231Gに対して計算を実行することが可能であり、したがって、必ずしも、検索−エントリ検索キー233Gと同一であるとは限らない。次に、照合された検索−エントリ検索キー233Gに対応するデータセットキー235Gが、データセット220Gの中でデータセットキー235Gを有するすべてのレコードを探して(236G)、取り出すのに使用される。
【0142】
2.3 変数ネットワーク解析
2.3.1 変数近隣
変数近隣は、同義語、省略形、文化的変数などの、外部データ106によって指定される変数ペアリングを場合により、含む、変数ペアリング(変数関係とも呼ばれる)のシーケンスによって関係するトークンのセットである。1つの実施例において、変数プロファイラ110が、多くとも1つの挿入及び1つの削除だけ異なるタイプ入力上の変数を検出し、識別するように削除−結合手順を使用してクラスタ化されるようにデータソース100をプロファイリングする。このことは、単一の挿入、単一の削除、及び単一の代入、並びに入れ換え及び離隔した挿入/削除を範囲に含む(例えば、「hello」と「hllio」は、削除−結合1変数である)。変数プロファイラストア115の中で、すべてのトークンは、より多くのレコードが処理されるにつれてオンラインで更新され得る1又は2以上の変数の関連付けられるリストを有する。しかし、すべての変数は、その変数自らの変数を有するトークンでもある。削除−結合手順、又は他の類似性測定によって形成された変数ペアリングのシーケンスを追うことによって得られるトークンのセットが、近隣を規定する。このセットの閉包は、閉包近隣と呼ばれ、トークンがノードであり、変数ペアリングがエッジであるグラフの変数ネットワークにおける接続された構成要素を形成する。類似性変数ペアを、外部データ106又はユーザによって供給された入力、例えば、同義語、代替のつづり、文化的変数などから得られる変数トークンペアで補足することが、関係するトークンのより大きい近隣につながる。
【0143】
図3Aで、変数アーカイブ300が、データレコードセットの中で出現するトークンのリストを包含し、各トークン(「token」というラベルが付けられた)が、そのトークンがデータセットのフィールド(又はコンテキスト)の中で出現する回数の関連付けられるカウント(「count」というラベルが付けられた)(例えば、そのトークンがフィールドの中で出現するレコードの数)、並びにそのトークンの変数トークンそれぞれのリスト(「variant」というラベルが付けられた)、及びそれらの変数トークンがデータセットの同一のフィールド(又はコンテキスト)の中で出現する回数(「variant_count」というラベルが付けられた)を有する。変数アーカイブ300のコンテンツに対応する変数近隣ネットワーク
図310が、すべてのトークンをノードとしてとり、すべてのトークンをそのトークンの変数それぞれと接続することによって構築され得る。各ノードはそのカウントに関連付けられる。一部の実施例において、より大きいカウントを有するトークンが表示上でより上にあるように(例えば、「count」というラベルが付けられた垂直軸により)ノードを配置することが、一般的な語と稀な語が容易に区別されることを可能にする有用な図示をもたらす。変数近隣ネットワークの接続された構成要素は、有向非巡回グラフであり、その接続されたセットの中のトークンに関する類似性関係の推移閉包である。データセットに関する完全なネットワーク図は、この種類の接続されていない多くのグラフを含み得る。
【0144】
2.3.2 トークン代表
トークン代表は、接続された近隣の選択されたトークンである。一部の実施例において、近隣におけるすべてのトークンが、その近隣を代表するトークンによって置き換えられることが可能である。このことは、トークン代表の検索が、その近隣における任意の変数に関連付けられるすべてのレコードを返すという効果を有する。このことは、変数を対象に繰り返される変数検索中の作業負荷を低減するので、望ましい。単純な変数検索は、各トークンを検索し、その後、そのトークンの変数それぞれを検索することである。変数を対象とした繰り返しは、トークンに遭遇するたびに行われる必要がある。近隣におけるすべての変数トークンがトークン代表で置き換えられた場合、変数トークンのいずれかに遭遇するたびに、すべての変数照合を返すのにトークン代表を1回、探すだけで十分である。
【0145】
さらに、変数トークンの近隣を扱うことが、変数検索への推移性の測度を供給することが可能である。変数−ペア関係は、BがAとの変数−ペアリングであり、CがBとの変数−ペアリングである場合、Cは、必ずしもAとの変数−ペアリングではないため、推移的ではない。例えば、削除−結合1変数ペアリングを考慮されたい。トークン「chicago」は、「chicago#」の変数であり、「chicag0」は、「chicago」の変数であるが、「chicag0」は、「chicago#」の削除−結合1変数ではない。
【0146】
しかし、変数検索に関して、Aで検索を行った際に見出されるレコードのセット、又はBで検索を行った際に見出されるレコードのセットが同一であることが望ましい。このことは、AがBの稀な変数である場合、Aによって意図される「実際の」トークンに関連付けられるレコードのより多くが、Bで検索することによって見出されるレコードであるためである。例えば、「chicago#」、及び「chicago#」の削除−結合1変数で検索することは、「chicago」照合を見出すが、「chicag0」のような「chicago」の他の照合を逃す。
【0147】
変数−ペアリングは、推移的ではないので、より高い推移性を実現するには、A又はBで検索を行う際に含められるトークンの近隣を拡大することしかない。その場合、近隣に関するトークン代表で検索することが、その近隣内のすべてのトークンが同一のレコードを返すことを確実にする。もちろん、この検索は、個々のトークンのローカル近隣を超えて展開されているので、取り出されるトークンの一部のペアは、それらのトークンがあまりにも類似していないため、照合しない可能性がある。このことは、関連付けられるレコードが依然として、他のフィールドからの強力な採点に基づいて照合し得るため、許容可能である。そのような照合は、検索によって適切な候補が返されなかったとすると、見出され得ないことになる。
【0148】
閉包近隣は、選ばれたトークンに関する変数関係の推移閉包によって見出される近隣であり、つまり、変数ペアリングの連鎖によって到達され得るすべてのトークンのセットである。閉包近隣におけるいずれのトークンも、そのトークンが、その近隣におけるすべてのトークンに関するトークン代表として使用される限り、トークン代表として選ばれ得る。しかし、閉包近隣は、データセットがより大きく、より多様になるにつれ、さもなければ接続されていない閉包近隣の間のギャップを埋めるより多くの変数が現れて、それらの閉包近隣を合体させるため、使用不能に大きく成長する可能性がある。このことにより、他の種類の近隣に注目することが重要になる。
【0149】
一部の実施例において、トークン代表は、より大きいカウントを有する変数を有さないトークンである。
図3Aにおいて、正規の近隣320が、トークン代表から始めて、1つのトークンを等しいカウント、又はより小さいカウントの別のトークンに接続する結び付きを追うことによって到達され得るすべてのトークンを含む。トークンは、2つ以上の正規の近隣に属することが可能である。そのトークンは、正規の近隣の代表トークンである。
【0150】
図3Bに図示される一実施例において、トークン代表及び正規の近隣が、カウントの大きい順に変数アーカイブ300をまず並べ替え、さらにvariant_count<countであるすべての変数を破棄して、剪定された変数アーカイブ330を得ることによって、計算され得る。変数を全く有さないエントリは、トークン代表であり、トークン−代表ベクトルストア340に即時に追加される。並べ替えられた変数アーカイブの中のレコードが処理されるにつれ、各トークンが、トークン、及びそのトークン自体からなるトークンベクトルとしてトークン−代表ベクトルに書き込まれる。それぞれの非トークン代表に関して、その非トークン代表の変数それぞれに関連付けられるトークン−代表ベクトルが、トークンファイルの中で探される(342)。これらのトークンベクトルの合併が計算されて、個別のトークン−代表のセットが見出され(344)、もたらされたトークン−代表ベクトルが、トークンと一緒にトークンファイルに書き込まれる(346)。
【0151】
別の実施例において、トークン代表は、何らかのトークン閾値より大きいカウントを有するすべてのトークンとして識別されることが可能であり、それらのトークンが、語幹抽出(例えば、複数形)によって関係する場合を例外とし、語幹抽出によって関係する場合、語幹関連のトークンは、同一の正規の近隣における変数として保持されることが可能であり、最大のカウントを有する語幹関連のトークンがトークン代表である。このことは、一般的なトークンの間の結び付きを断つ役割をし、正規の近隣のサイズを小さくする。トークン及び正規の近隣を見出すのに、前のアルゴリズムが、各トークンがトークン閾値を超えるカウントを有するトークンのすべてのペアリングに関して、変数ペアリングが断たれ、さらに以前にペアにされたトークンが、トークン代表として、すなわち、より大きいカウントの変数を全く有さないトークンとしてトークン−ベクトルファイルに追加されるという変更を伴って適用されることが可能である。
【0152】
この実施例の変数が、指定された辞書、又は指定されたトークンリストに属するすべてのトークンをトークン代表と定義することである(やはり、語幹関連のトークンについての注意を伴って)。その場合、トークンは、一般的でなくてもよく、トークンは、単に、何らかの権限によって別々のトークンとして認識されるだけでよい。
【0153】
一部の実施例において、同義語、省略形、文化的変数などの、外部データ106に基づいてペアにされた変数トークンは、それらの変数トークンがペアにされたトークンと同一の正規の近隣のメンバと見なされることが可能であり、ただし、それらの変数トークンをその正規の近隣から除外できることが貴重である状況が存在する(事実上、そのペアリングをオフにして)。トークンに、それらのトークンの出所でラベルを付けること、例えば、外部データ106から、又は変数プロファイラ110において使用された特定の類似性測定からというラベルを付けることが、任意のソースからのペアにされた変数トークンの扱いを管理する有効な手段をもたらす。
【0154】
2.4 セグメント化
図1Bの例において、データソース100から、又はトークン化されたレコード118から読み取られたデータレコードが、処理のためにクラスタ化エンジン130に供給される。一部の実施例において、データレコードは、セグメント化エンジン132に送信されることが可能である。セグメント化エンジンが、セグメント値と呼ばれる値に基づいて、データレコードにセグメント識別子を割り当てる。次に、レコードが、それらのセグメント識別子に基づいて並列パーティショナ134によって分割されて、様々な受信側処理エンティティに送信されることが可能であり、ただし、同一のセグメント識別子を有するすべてのレコードは、同一の処理エンティティに送信される。処理エンティティは、例えば、CPU(例えば、マルチコアプロセッサにおけるコア)若しくはコンピュータなど処理ノード、又はCPU上で実行される計算プロセス若しくは計算スレッドを含むことが可能である。
【0155】
一部の実施例において、セグメント値は、オリジナルレコード100若しくはトークン化されたレコード118、及び/又はランタイムに供給される情報(例えば、データを処理するデータセンタのロケーション、又はデータセットの名前)に適用された、場合により、ユーザによって指定された規則セットの中で定義された関数を使用する、ユーザによって指定された式から導き出されることが可能である。同一のセグメント値を有するレコードは、同一のセグメント識別子を受ける(それらのセグメント値が、同一の式を使用して導き出される場合)が、異なるセグメント値を有するレコードは、セグメント化スキームに依存して、異なるセグメント識別子を受けることが可能であり、又は同一のセグメント識別子を受けることも可能である。例えば、セグメント値は、データレコードの出所の国を表すことが可能である(このことは、例えば、レコードを処理するデータセンタのロケーションに基づいて暗黙であることも、レコードの中のフィールドとして明示的であることも可能である)。一部の実施例において、戦略識別子が、セグメント識別子のセットを区別するのに使用される。例えば、データレコードの出所の国が、1つの戦略識別子を有することが可能である一方で、レコードの中で名前を指定された個人の出生国は、異なる戦略識別子を有することが可能である。このことは、セグメント値とセグメント識別子が、セグメント値とセグメント識別子の間の対応が保たれることが要求されることなしに、重なり合う範囲にわたることを許容する。
【0156】
セグメント化の1つの用途は、照合を見つけるように比較されなければならない(クラスタ化中に、又は他の照合動作中に)レコードの数を減らすように、レコードのより大きいセットから単一のセグメントのレコードを分離することであり、すなわち、厳密に照合するセグメント識別子(及び存在する場合、厳密に照合する戦略識別子)を有するレコードだけが、照合のための候補である。この例において、セグメント化の後に、クラスタ化アルゴリズムの並列化のためにレコードのセグメントを複数の処理エンティティに分割することが行われる。本明細書で説明されるクラスタ化アルゴリズムは、セグメント化に基づくクラスタ化アルゴリズムの並列実行にパフォーマンス上の利益があるため、セグメント化中に、レコードの数が増やされることを許容することが可能である。その結果、セグメント識別子(すなわち、同一のセグメント)を共有するレコードのセットは、レコードを分離するためにセグメント化が使用される場合と比べて、はるかに大きいことが可能である。パフォーマンス上の利益を実現するのに、別々のセグメント値の数は、分割後に処理エンティティの間でほぼバランスのとれた配分を与えるのに十分な大きさであるだけでよい。バランスのとれた配分は、一部の並列処理システムに関して、他の並列処理システムの場合と比べて、より不可欠であり得る。また、配分のいくつかの種類の偏り(一部の処理エンティティに、他の処理エンティティと比べて、より多くのレコードが割り当てられている)は、過分割によって、すなわち、処理エンティティ数よりずっと多くの分割を使用することで対処され得る。過分割では、各処理ノードは、パーティションが大きく異なるサイズのものである場合でさえ、類似した量の作業を受け取る可能性が高い。また、パーティショナが、おおよそで照合された1又は2以上のフィールド(又はそのようなフィールドに適用されたハッシュ関数)、及び厳密に照合された1又は2以上のフィールドからなるマルチパートキーによって分割を行って、潜在的な偏りを小さくすることも可能である。
【0157】
一部の実施例において、セグメント値の選択は、クラスタメンバシップ基準の一部を形成する厳密な基準に基づく。例えば、口座レコードをクラスタ化する際、個人身元フィールドに加えて、銀行は、特定のタイプの口座に関するレコードのクラスタに関心がある可能性がある。詳細には、当座預金口座(例えば、チェッキングアカウント)に関するレコードが一緒にクラスタ化されることが可能である一方で、普通預金口座に関するレコードが別々にクラスタ化されることが可能である。この種類のセグメント化は、ときとして、暗黙であり、つまり、当座預金口座レコードと普通預金口座レコードは、異なるソースに由来することが可能であり、既に分離されている。場合によっては、データレコードの中に、セグメント値として使用され得るが、口座の性質を正確に報告するものと信頼されなければならない口座タイプ識別子が存在することが可能である。
【0158】
一部の実施例において、裏付ける確認が、セグメント化の時点で、又は後にメンバシップ判定中に行われて、セグメント値が忠実であることが検証される。例えば、普通預金口座の口座番号が、特定のセットの可能性からの数字で常に始まることが可能である。このセットがランタイムに知られている場合、口座が本当に普通預金口座であるかどうかが、セグメント化より前に確認され得る。このセットが存在することが知られているが、有効な値は知られていない場合、頭に付けられた数字が、クラスタメンバシップ基準の一部とされることが可能であり、又は、実際、セグメント値の一部とされることが可能であり、クラスタの中に存在する口座番号の間の整合性が、クラスタメンバシップ判定の一環として確立されることが可能である。
【0159】
レコードが、特定のクラスタのメンバであると判定された後、そのレコードは、その特定のクラスタを識別するcluster_idを含むように拡張されることが可能である。一部の実施例において、セグメント値(又は、ときとして、セグメント識別子自体)は、前のクラスタ化からのcluster_idに設定されることが可能である。このことは、階層クラスタ化を可能にする。例えば、データレコードが最初に名前別にクラスタ化されていた場合、類似した名前を共有するが、別々の政府によって割り当てられた識別子を有するレコードをクラスタを見つけ出す政府によって割り当てられた識別子別のその後のクラスタ化が、名前cluster_idをセグメント値として使用することも可能である。類似していない名前を有するレコードは、同一のクラスタのメンバではあり得ないため、比較されなくてもよい。
【0160】
一部の実施例において、データレコードは、複数の処理エンティティにわたってセグメント識別子でハッシュ分割されることが可能であり、したがって、共通のセグメント識別子を有するすべてのレコードは、単一の処理エンティティの中に一緒に入れられる。このことは、セグメント間の通信が要求されないため、並列処理を可能にする。
【0161】
2.4.1 レプリケートされたセグメント化を介する並列化
データソースの互いに素なセグメント化が存在しない状態での並列化が、データソース100をレプリケートすること、及び任意の2つの変数ペアレコードが少なくとも1つのセグメント値を共有しなければならないことを確実にするセグメント化の適切な選択を使用することによって実現され得る。セグメント値は、フィールド値又はフィールド値の組み合わせの1又は2以上の断片から構成され得る。セグメント値のセットは、少なくとも1つのセグメント値が、2つのレコードの間の許されるすべての変数に関して2つのレコードによって共有される場合、網羅的であると言われる。
図4で、網羅的なレプリケートされたセグメント化のプロセスが図示される。データソース400が読み取られ、すべてのデータレコード401に一意のレコードキーが、そのようなレコードキーが既に存在するのでない場合、割り当てられる。すべてのデータレコードが、十分な回数、レプリケートされて、網羅的なセットのセグメント値からの各セグメント値が、1つのレプリカントデータレコードに割り当てられる(402)。(レプリケートされるレコードの数は、各レコードの中のデータに依存することが可能である。)もたらされたデータレコードが、レプリカントに関連付けられるセグメント値で分割される(404)。レプリカントの結び付けられたペアのセットに関して各処理エンティティにおいて代理クラスタキーが生成される(406)。構造上、許容可能なすべての変数は、セグメントキーが網羅的であるため、何らかのセグメントキーのパーティションの中で検出されることになる。クラスタキーのスーパーセットは、複数照合調整手順の後に、各クラスタに関する一意のcluster_keyに解決される(408)。
【0162】
多くとも1つの代入だけ異なり得る2つの政府idを照合させる事例を考慮されたい。セグメント値の網羅的なセットがまず、政府idにおける奇数位置からの数字(又は、より一般的には、文字)をとり、その後、偶数位置から数字(又は、より一般的には、文字)をとることによって与えられる。このセットが網羅的であることは、いずれの単一の文字代入も、奇数位置であるか、偶数位置でなければならず、奇数位置と偶数位置の両方ではないため、容易に見て取れる。このため、他方のタイプのセグメント値は、単一の代入だけ異なって、2つのレコードに関して合致しなければならない。例えば、123456が、セグメントキー(135,246)を有し、124456が、セグメントキー(146,246)を有する。これらのセグメントキーは、第1セグメント値で異なるが、第2セグメント値で合致する。
【0163】
図5A〜
図5Cは、この事例における全体的なプロセスを図示する。
図5Aにおいて、データレコード700が読み取られる。第1レコード501は、数値id「123456」と、一意のレコードキー「r1」とを有する。これらのレコードが、2回、レプリケートされ(502)、奇数位置からの文字、例えば、「135」からなるセグメントキー、及び偶数位置からの文字、例えば、「246」からなるセグメントキーが割り当てられる(503)。データが、セグメントキー値で分割される(504)。同一のセグメントキーを有するレコードは、同一のパーティションの中に入るが、同一のレコードキーを有するレコードは、同一のパーティションの中に入らなくてもよい(506)。例えば、セグメントキー値「135」は、第1パーティションの中にあるが、レコードキー「r1」を有するレコードは、第1パーティションと第2パーティションの両方の中に出現することに留意されたい。
【0164】
図5Bにおいて、レコード506が、それらのレコードのパーティション508内でクラスタ化され、クラスタキーが割り当てられて、データクラスタ510がもたらされる。いくつかのレコードキーは、複数のクラスタに割り当てられることに留意されたい。例えば、レコードキー「r1」を有するレコードは、クラスタ「k1」とクラスタ「k2」の両方の中に出現する。
【0165】
図5Cにおいて、この複数照合が調整される。データクラスタ510が読み取られ、クラスタキーの複数割り当てが解決され(520)、レコードに対するクラスタキーの最終的割り当てが行われる(530)。この解決の詳細は、後段で説明される。
【0166】
2.4.2 セグメント化なしの並列化
代替キー生成は、生成された値を、1又は2以上のフィールドから構成される自然キーの値とペアにすることである。自然キーそれぞれの個別の値は、一意の代替キー値を有する。代替キーを生成するための一方法は、ときとして、キー相互参照ファイル(略して、キーxrefストア)と呼ばれる代替キー/自然キーペアのストアを保持することである。それぞれの新たなデータレコードが処理されるにつれ、自然キー値がこのストアの中で探され、自然キー値が見つかった場合、代替キーが返され、自然キー値が見つからなかった場合、新たな代替キーが生成される。キーxrefストアは、現在の実行において生成された代替キーのレコードを保持するようにメモリの中で部分的に作成されることが可能であり、以前に生成された値を保持するようにディスク上に部分的に着地させられ(さらに処理の開始時にメモリに読み込まれる)ことが可能である。キーが生成された後、新たに生成された代替キーを含むキーペアが、着地させられたキーxrefストアに追加される。ときとして、生成された最大の代替キー値は、便宜上、別に格納されて、次の実行時に、前に生成された最高のキーが、重複なしにさらなるキーを生成するための開始点として利用可能であるようにする。
【0167】
このキー生成方法を並列に適用するのに、データレコードが、自然キーで、又は分割キーと呼ばれる自然キーの何らかの断片で分割されて、その分割キーの値を共有するすべてのデータレコードが同一の処理エンティティに送信されるようにすることが可能である。このことは、自然キーを共有するすべてのレコードが、同一の処理エンティティによって扱われることを確実にする。詳細には、新たに生成されたキーの最近のメモリ内ストアに対する処理エンティティによるアクセスが可能であり、したがって、同一の自然キーを有するすべてのレコードが、同一の代替キー値を得る。何も共有しない並列アーキテクチャすなわち、プロセス間通信の全くない並列アーキテクチャにおいて、新たに生成されたキーのストアは、現在の処理エンティティによって扱われるレコードにだけ利用可能であり、したがって、同一の自然キーを有するレコードが、同一の並列実行中に異なるプロセスエンティティにおいて扱われるとした場合、それらのレコードは、異なる代替キーを得ることになる。
【0168】
一部の状況において、自然キー値の配分は、或る値を有するレコードが、他の値を有するレコードの平均数と比べて、ずっと多く存在して、不均等である可能性がある。この事例において、自然キーで分割することは(断片で分割することさえ)、データパーティションにわたるデータの偏りにつながる可能性があり、つまり、いくつかのパーティションが、他のパーティションと比べて、ずっと多くのレコードを包含することになる。このことは、処理時間が、等しい複雑度のタスク(代替キー生成のような)に関してデータ量に比例するため、並列化の効率を低下させる。この事例において、一様なデータ配分を得るようにラウンドロビン(単に、プロセスそれぞれにレコードを次々に送る)で分割してみる価値があり得る。その場合、代替キーは、前述した方法によって各プロセス内で生成されることが可能であり、代替キー生成が完了した後、同一の自然キーに対するもたらされる複数代替キー割り当てが、後処理ステップにおいて重複排除され得る。この重複排除を実行する一方法が、各パーティションの中のレコードを自然キーにロールアップして、そのパーティション内で代替キー/自然キーペアを見つけ出し、その後、その自然キーで再分割することである(今度は、その自然キーのいくつかのパーティションコピーだけが存在する)。その自然キーに対する第2ロールアップが、生成された複数の代替キーの1つ、例えば、各自然キーに関して最小の代替キーを選択することが可能である。最後に、(オリジナルのラウンドロビン分割における)レコードに対する第2走査で、それらの代替キーが選択された単一の値に更新され得る。データを2回走査することが要求されるにもかかわらず、このことは、偏りを伴った生成と比べて、よりパフォーマンスが高いことが可能である。(操作の異なる順序が関与する、大きいキーグループを扱う他の方法が存在し、例えば、自然キーを重複排除するように二重ロールアップを実行してから、代替キーを生成すること、又は他の何らかの方法を適用して、大きいキーグループを検出して、別個の処理に回すことも可能である。)
【0169】
自然キーで分割することが、並列化に関して効果的でない戦略な可能性がある第2状況は、代替キーが、必ずしも、厳密に照合する自然キーに関してではなく、おおよその(又は均等の)照合する自然キーに関して生成される場合である。この事例において、照合するすべての候補レコードを同一のプロセスに送信することが保証付きである分割キーは、存在しない可能性がある。(プロセスは、処理エンティティ内で実行される実行のインスタンスである。)このことは、照合判定は、通常、レコードの比較を含み、レコード内のデータのみに基づいて行われ得ないためである。前段で説明したマルチパスソリューションは、この事例では、重複排除プロセスが、複数の代替キーが割り当てられている場合を識別するのに自然キーに依拠するため、効果的でない。パーティションにわたって、いずれのレコードがおおよそ照合する自然キーを包含するかを識別することは、元の問題と均等である。
【0170】
両方の状況に対するソリューションが、代替キー生成の以下の例によって説明される。前述したメモリ内ストアとは異なるキーxrefストアの異なる実施例が、最近に生成された代替キーに関して使用されることが可能である。以下の特徴を有するストアが利用可能である。すなわち、1)これらのストアは、ディスク上に保持され、1つのプロセスによって更新され得る(後尾に追加することによって)、2)これらのストアは、複数のプロセスから読み取られることが可能である(さらに、変更が行われるにつれ、更新されることが可能である)。代替キー生成手順は、以下のとおりである。パーティショナが、例えば、ラウンドロビンで、プロセスにわたる均等な配分を得るようにデータを分割する。各パーティション内で、プロセスは、各自然キーをとり、すべてのパーティションに関してキーxrefストアに照らしてルックアップを実行し、その自然キーが1又は2以上のキーxrefストアの中で見つかった場合、プロセスは、最小の値を有する代替キーをとり(さらに、その自然キーが2つ以上のキーxrefストアの中に出現したかどうかの印を付け)、いずれのキーxrefストアの中でもその自然キーが見つからなかった場合、プロセスは、新たな代替キーを生成し、このパーティションに関連付けられるキーxrefストアを更新する。新たな代替キーがプロセスにおいて生成されるにつれ、それらの代替キーは、そのプロセスに関する関連付けられるキーxrefストアの中でディスクに保存される。このことにより、それらのキーのすべてが生成された後にキーxrefストアを更新する必要性が取り除かれる。さらに、そのストアを読み取るすべてのプロセスが、変更が保存された後、その変更で更新されるので、1つのプロセスにおいて最初に出現する自然キーが別のプロセスにおいて後に出現した場合、その自然キーには、その他方のプロセスで最初に割り当てられたオリジナルの代替キーが割り当てられる。
【0171】
以下の潜在的な競合条件が存在する。すなわち、同一の自然キーを有する2つのレコードが異なるプロセスに同時に到着した場合、キーxrefストアに照らしたルックアップは、いずれのプロセスにおいても照合を示さない可能性があり、その自然キーに関して、さらなる2つの新たな異なる代替キーが生成される。このことは、ローカルキーxrefストアが新たな代替キーで更新される前に処理されるレコードに限って生じ、これらの更新が、その他のプロセスによって読み取られる。その後のすべての自然キーには、最小の値の代替キーが割り当てられる。後のこれらのレコードに、2つ以上の自然キーが見られたという事実でさらなる印を付けることによって、事後にキー衝突を訂正するのに使用され得るマーカが配置される。このマーカ上のフィルタが、2つ以上の代替キー割り当てを有していた自然キーを見つけ出し、その後、代替の代替キーが識別されて、置き換えられることが可能である。初期の衝突が生じた場合に限って自然キーが現れた場合、それでも衝突を見逃す可能性がある。このことを確実に検出し、訂正するのに、データ(したがって、自然キー)が再びキー生成プロセスにかけられて、割り当てが訂正されることが可能であり、つまり、2回目で、あいまいな割り当ては、明白となる。この2回目の修正は、それらの自然キーがおおよそであることしか要求されない場合でさえ、照合判定が決定論的である限り、つまり、同一のデータが再判定された場合に同一の判定をする場合、信頼できることに留意されたい。このことは、2回目の開始までには、すべてのローカルキーxrefストアに、すべてのプロセスが書き込み及び読み取りを行っているため、うまくいく。
【0172】
この並列化方法は、クラスタ化に適用されることが可能であり、他のファジーデータ操作にも適用されることが可能である。クラスタ化は、キーが厳密ではなく、均等であるに過ぎない代替キー生成の形態であると見なされ得る。ローカルストアの詳細な形態は、データ操作により異なり得るが、類似した技法が使用されることが可能である。
【0173】
図6は、自然キーで分割することなしに並列で実行される代替キー生成手順の実施例を図示する。自然キー「n1」を有するレコードが、データソース600P1においてパーティションPartition1の中で最初に出現する。パーティションPartition1のキーxrefストアXref1 604P1、及びパーティションPartition2のキーxrefストアXref2 604P2が調べられ、「n1」が見つからず(606)、したがって、代替キー「s1」が生成されて、出力620P1に書き込まれる。その一方で、キーxrefレコード「n1 s1」が、ローカルキーxrefストアXref1 604P1に保存される(608)。後に、自然キー「n1」を有するレコードが、データソース600P2においてパーティションPartition2の中で出現する(データが自然キーで分割されていたとしたら、そうなっていたであろうPartition1の中にではなく)。やはりキーxrefストアXref1 604P1及びXref2 604P2が調べられ、「n1」は、Xref2 604P2の中にないが、Xref1 604P1の中で見出される(610)。代替キー「s1」が、取り出され、レコード611に割り当てられ、さらに出力620P2に書き込まれる。
【0174】
2.5 採点フィールド重複排除
セグメント化(及び並列化)の後、一部の実施例において、データソース100、又はトークン化されたデータレコードのセット118Pからのレコードが、採点フィールド重複排除エンジン144に送られる。一部の実施例において、前述したとおり、クラスタメンバシップを判定する採点の際に使用されるフィールド、いわゆる採点フィールドが、ランタイムに特定されることが可能である。採点フィールド重複排除エンジン144が、採点フィールド上で同一の値を有するレコードのセットから1つのレコードを選択して、クラスタ化プロセスを続け、もたらされるクラスタidが、そのセットの中のその他のレコードの間で共有されるようにする。これらのレコードは、クラスタメンバシップ判定プロセスの見地から同一であるので、これらのレコードのすべてに関して同一のクラスタ化判定に必然的に到達しなければならない。
【0175】
2.6 候補検索
2.6.1 2つのモード
データセットの中のレコードのすべてが一緒に処理されるか、又はレコードが、到着するにつれ、それまでにクラスタ化されたレコードに照らして処理されるかに依存して、検索ベースのクラスタ化プロセスのわずかに異なる2つのアプローチが可能である。そのようなレコードのすべてが一緒に処理されることは、バッチモードを説明するのに対して、レコードが、到着するにつれてそのように処理されることは、オンラインモードとして使用され得るインクリメンタルモードであるが、データのすべてが最初から利用可能である場合に適用されることも可能である。この2つのモードの間の1つの違いは、バッチモードでクラスタ化エンジンによって使用される、変数プロファイラストア115、変数ネットワークストア126及び検索ストア146を含む様々なストアが、前処理ステップ中に計算されるのに対して、インクリメンタルモードでは、一部のストアは、データが到着するにつれインクリメンタルで入力され得ることである。詳細には、1つのインクリメンタルモードアプローチは、データの完全なセットで変数プロファイラストア115及び変数ネットワークストア126を事前計算することである一方で、検索ストア146は、インクリメンタルで入力される。インクリメンタルモードで、クラスタ化結果は、レコードが処理される順序に依存することが可能である。
【0176】
2.6.2 インクリメンタルモードにおけるクラスタ発見
インクリメンタルクラスタ化プロセスにおいて、クエリレコードと呼ばれる、入ってくるレコードが、既存のクラスタの中のレコードと比較されて、そのクエリレコードがいずれのクラスタに属すべきかが判定されることが可能である。直接のアプローチにおいて、各クエリレコードが、最も近い照合を見つけ出すようにそれまでのすべてのレコードと比較されることが可能である。近い照合が全く存在しない場合、クエリレコードは、新たなクラスタの最初のメンバであり、存在する場合、クエリレコードは、そのクエリレコードが最も近く照合したレコードを包含するクラスタに追加される。このことは、単純明快であるが、潜在的に計算リソースを大量に使用する。ほとんどの比較は、否定的な結論(「このクラスタではない」)をもたらし、最悪ケースは、そのクエリレコードが新たなクラスタのメンバである場合である。このアプローチは、各クラスタから代表的なメンバを選択し、そのクエリレコードをクラスタ代表と比較することによって改良され得る。このことは、レコードの変数類似性が少なくとも部分的に推移的であるという所見を活用し、つまり、クエリレコードがクラスタ代表と十分に類似していない場合、そのクエリレコードは、クラスタの他のいずれのメンバとも十分に類似している可能性は低い(それらのメンバはすべて、そのクラスタ代表と類似しているので)。
【0177】
変数類似性は、実際には推移的ではないため(「AがBと類似する」と「BがCと類似する」は、「AがCと類似する」を暗示しない)、ときとして、候補閾値と呼ばれる、クラスタメンバシップを判定するのに適用されるのと比べてより低い類似性閾値が、クエリレコードをクラスタ代表と比較する際に適用されることが可能である。その意図は、クラスタのメンバに対するクエリレコードの予期される類似性に関して正確な下限を設けることである。この下限は、クエリレコードが属し得ないクラスタをうまく除外するが、クエリレコードがいずれのクラスタに属するかという疑問には答えない。その理由は、2つ以上のクラスタ代表が、クエリレコードに対して、その候補閾値を超える類似性スコアを有し得ることである。これらのクラスタ代表は、ひとまとめにして候補レコードと呼ばれる。候補レコードが識別された後、クエリレコードが、何らかの候補レコードに関連付けられる各クラスタのすべてのメンバと比較されて、クエリレコードが最も近い親近性を有するクラスタが見出されることが可能である。この親近性が照合閾値を超えている場合、クエリレコードは、対応するクラスタのメンバであり、超えていない場合、クエリレコードは、新たなクラスタに割り当てられる。候補レコードが見出された後、クラスタメンバシップ判定のパフォーマンスを向上させるステップが行われることが可能であり、一部のステップについて以下に説明する。
【0178】
クエリレコードをクラスタ代表と比較する改良を用いても、新たなクラスタを識別する事例は、依然として不良であり、つまり、新たなクラスタに属するクエリレコードは、そのクエリレコードが新規であることを確認するのに既存のすべてのクラスタの代表と比較されなければならない。クラスタの数が増加するにつれ、新たなクラスタを識別するのにかかる時間が増加し、新たなクラスタを認識するのに要求される比較の数が既存のクラスタの数に比例するため、クラスタ化プロセスは、遅くなる。計算上の課題は、各クエリレコードをすべてのクラスタ代表と比較することに優る、レコードをクラスタ化する方法を見出すことである。
【0179】
検索ベースのクラスタ化アプローチは、新たなクラスタを識別する最悪ケースを最良ケースに変えようと試みることによって、この課題に取り組むことである。単純化された形態で、このことは、既存のクラスタメンバ、又はそれらのクラスタメンバのクラスタ代表から入力された検索ストアに対して検索を実行することによって行われる。クエリレコードが、検索ストアの中で探される。クエリレコードが見つからなかった場合、そのクエリレコードは、新たなクラスタに属するはずである。このプロセスは、
図1A及び
図1Cに示される候補検索エンジン140によって行われる。このアプローチは、検索ストア146を入力して、検索ストア146の中でクエリを探すのにかかる時間が、各クエリレコードを、クラスタ代表の増大するストアに照らしてすべてのクラスタ代表と直接に比較するのにかかる時間より少ない場合、有利である。このアプローチの裏の巧妙さは、検索ストア146を入力する検索−エントリ展開エンジン145、候補検索エンジン140のためにクエリを構築するクエリ展開エンジン143、及び検索を実行する検索エンジン147(又は変数−ルックアップ手順)を選択することを含め、候補検索エンジン140によって使用されるプロセスを定義することにある。
【0180】
図2Dが、このプロセスの実施例を示すのに使用され得る。一部の実施例において、検索ストア230Gが、クラスタメンバからなるデータセット220Gから計算されたエントリで入力される。検索ストア230Gに照らして、展開されたクエリエントリ210Gに変数−ルックアップ手順232Gを適用することが、クラスタメンバシップ基準の何らかの必要な構成要素のプロクシを計算するのに使用され得る。プロクシは、レコードが、そのプロクシに対して少なくとも最低限のスコアに達するのでない限りクラスタのメンバであり得ない場合、良好なプロクシである。この最低限のスコア(候補閾値)が、候補照合232Gを定義する。クエリがこの要求される最低限に達するクラスタレコード236Gが候補レコードである。
【0181】
プロクシスコアの例が、2つの個人名のような、2つの複数語フィールド(又はフィールドの組み合わせ)によって共有される語の数である。2つの名前を比較するのにクラスタメンバシップ判定において使用される採点アルゴリズムは、それぞれ名前における語のセット以外も考慮に入れることが可能であり、詳細には、語の順序、及び語の位置を考慮に入れることが可能である。しかし、2つの名前は、それらの名前が語を全く共通で有さない場合、照合する可能性がなく、それらの名前が、語のほんの一部を共通で有するだけである場合、高いスコアを有する可能性は低い。2つの名前が共通で有する語の数をカウントすることが、名前スコアのプロクシであり、つまり、名前スコアほど正確ではないが、それでも信頼できる。このプロクシは、共通する語の数がそれぞれの名前における語の数との関係で知られている場合、より正確になる。この長さが、クラスタレコードを全くフェッチすることなしにプロクシスコアを計算するのに利用可能であるように、検索ストア146の中に格納され得る。
【0182】
一部の実施例において、クエリの初期選択は、クラスタメンバシップ基準によって導かれることが可能である。オリジナルデータレコードの最も粒度の高い分解、又は最も明確に区別する分解を与えるクラスタメンバシップ基準の構成要素が、生のクエリを構築するための基礎として使用される場合、しばしば、より良好なパフォーマンスが実現され得る。このことは、検索基準を満たすレコードの数を減らす。
【0183】
また、複数のフィールドからの値を用いたクエリが関与する複数の検索が行われることも可能であり、より絞られたセットの候補につながる可能性がある。これらの検索については、後段で説明する。ここでは、詳細がより単純であるため、単一のフィールドからとられたクエリに注目する。
【0184】
いくらかの度合の可変性をそれぞれにおいて許して、企業が、個人名、政府によって割り当てられた識別子、及び生年月日に基づいて顧客データベースから顧客を識別することを所望する例を考慮されたい。この場合、初期のクエリに関して、政府によって割り当てられた識別子が、個人名より選好されることが可能である。通常、政府によって割り当てられた識別子は、可能なあいまいさを見込んでも、個人名と比べてより特定的であり、したがって、より良好なクエリをもたらす、つまり、候補照合のセットをより迅速に絞るものと予期される。
【0185】
しかし、フィールド(又はフィールドの組み合わせ)に関連付けられる粒度は、データセット全体にわたって一定でない可能性がある。多数の関連付けられるレコードを伴って、政府によって割り当てられた識別子のいくつかに入力されるデフォルトの値(例えば、空白、又はすべて0若しくはすべて9)が存在する可能性がある。これは、レコードサブセットに関して、クエリの選択の破綻を表す。あまりにも多くのレコードが検索によって取り出される場合、採点されるべきレコードのセットを絞る検索の主要な目的は、達せられていない。このことに対処するのに、所与のクエリ検索から返される候補の数にカットオフ限度が課せられることが可能であり、すなわち、候補レコードの数が閾値を超えた場合、そのクエリは、拒否される。
【0186】
一部のシナリオにおいて、展開されたクエリからのすべてのクエリが拒否されるまで生のクエリが続けられることが可能であり、展開されたクエリからのすべてのクエリが拒否された後、クエリレコードが、代替の検索戦略を用いて再処理されなければならない。例えば、生のクエリが複数語ストリングである場合、展開されたクエリは、そのストリングの中の個々の語からなることが可能である。そのストリングの中の非常に一般的な語が、多過ぎる候補を返すものとして拒否されることが可能である一方で、残りの、頻度のより低いクエリ語は、所望される照合するレコードを見つけ出すのに妥当である。生のクエリを拒否すべきかどうかの判定は、潜在的に満足のいく照合するレコードが、拒否されるクエリからのレコードを含めないことによって見逃されるかどうかに基づくことが可能である。展開されたクエリ内に複数のクエリが埋め込まれる場合、いくつかのクエリが失敗する一方で、他のクエリが続けられることは問題ない可能性がある。複数の独立したクエリが存在しない状況では、展開されたクエリセットからの1つのクエリの拒否が、そのセット全体を拒否するのに十分である可能性がある。
【0187】
多くの事例において、検索戦略が破綻する場合に、そのことは、データにデータ品質問題があること、例えば、不完全なレコード、又は採点フィールドに予期されないデフォルトの値が入っていることを示し得るので、レコードのセットを独立に識別することが有用であり得る。レコードの本体からレコードのそのようなセットを分離することにより、データが、最終的な照合判定の一般的な信頼性を示すセットに分類される。政府によって割り当てられた識別子を全く有さない、又はデフォルトの、政府によって割り当てられた識別子しか有さないレコードは、政府によって割り当てられた識別子をともに有するレコードの間で見出されるより低い確度の照合につながるものと見込まれ得る。
【0188】
2.6.3 複数の検索及び検索コード
検索ストア330Gは、検索エントリ334Gをペアリングキー333Gで重複排除すること、及びロケーションキー335Gを、特定の検索キー333Gを有するデータレコードに関するすべてのロケーションキーを保持するロケーション情報にロールアップすることによって改良され得る。一部の実施例において、このロケーション情報は、関連付けられるレコードの数が少ない場合、キーの単純なベクトルであることも可能である。他の実施例において、このロケーション情報は、各ビットセットが、データセット320Gの中のデータレコードを明示的に、又は暗黙に示す、ビットベクトルであることが可能である。ビットベクトルは、圧縮されてもよい。
【0189】
ロケーション情報のビットベクトル実施例を使用することにより、検索ストアのサイズが小さくなることが可能であり、ペアリングキー333Gの同一の値に対してルックアップ332Gを繰り返すことが解消され得るが、本当の利益は、複数の検索の結果を組み合わせた際にもたらされる。展開されたクエリが、生のクエリの各語に関する別々のクエリからなる複数語ストリングからなる生のクエリの例において、別々の展開されたクエリの結果が、ロケーションビットベクトルの論理積をとることによって組み合わされることが可能である。2つのロケーションビットベクトルの論理積により、両方のロケーションビットベクトルにおける同一の位置で設定されたビットが求められる。この場合、これらのビットは、それらのロケーションビットベクトルに関連付けられる両方の語を包含するレコードである。ロケーションビットベクトルの間で論理積のすべての組み合わせを形成することによって、データセット320Gのレコード322G中に存在する生のクエリ300Gからの語のすべての組み合わせが見出されることが可能である。
【0190】
これらの組み合わせを編成することを円滑にするのに、検索コードの概念が導入され得る。検索コードは、いずれの検索クエリが最終的なロケーション情報結果に寄与するかを符号化するデータパターンコードである。一部の実施例において、ロケーション結果に寄与する生のクエリ、又は展開されたクエリの各部分に関して、ビットベクトルにおいてビットが設定されることが可能である。複数のビットセットが、各ビットセットに関連付けられる各ロケーション情報結果の論理積に対応する。2つの検索が存在したとする場合、第1ビットが、第1セットから返される結果に関して設定され、第2ビットが、第2セットに関して返される結果に関して設定され、両方のビットが、両方の検索から返される結果(各検索の結果の論理積)に関して設定される。
【0191】
単一のフィールドからの2つ以上のトークンで複数の検索を行い、それらの検索によって取り出されるロケーション情報を論理的に組み合わせるという概念は、複数のフィールド(又はコンテキスト)からのトークンで複数の検索を行い、それらの検索によって取り出されるロケーション情報を論理的に組み合わせることに一般化されることが可能である。
【0192】
図7A〜
図7Dが、実施例における検索コードの構築及び使用を示す。
図7Aで、生のクエリ700が、データレコードの3つのフィールド、first(name)、last(name)、及びstreetからのトークンから構築される。例えば、lastに関するクエリは、「smit」である。生のクエリが、展開されたクエリ704をもたらすようにクエリ展開手順702によって展開される。この事例における展開されたクエリは、場合により、変数プロファイラストア115から獲得される、生のクエリの各部分に関する変数トークンからなる。例えば、「smit」に関連付けられる変数トークンには、「smith」及び「smiths」が含まれる。
【0193】
図7Bで、データソース710が、4つのフィールド、「key」、「first」、「last」、及び「street」からなる。検索−エントリ展開手順712が、この3つのクエリフィールドそれぞれに関して検索ストア714を入力するのに使用される。
【0194】
図7Cで、展開されたクエリ704Aが、変数−ルックアップ手順720Aによって処理されて、ロケーション結果724Aがもたらされる。この事例において、変数−ルックアップ手順は、それぞれの展開されたクエリに関して検索ストア714の中を探すこと(721)から始めて、実施される。次に、それぞれの展開されたクエリからのロケーション情報結果が組み合わされて(ベクトルの合併、又はビットベクトルの論理和)、生のクエリの「last」部分に関するロケーション情報結果724Aがもたらされる。このことが、「last name」というラベルが付けられた円730Aとして図示される。
【0195】
「first」フィールドに関する第2展開されたクエリ704Bが、変数−ルックアップ手順720Bによって処理されて、ロケーション情報結果724Bが得られる。このことが、「first name」というラベルが付けられた円730Bとして図示される。「last name」円730Aと「first name」円730Bの共通部分は、レコード「[2,4]」732を包含する。
【0196】
図7Dで、3つすべての生のクエリの結果が示されている。各円730ABCが、レコードそれぞれのコレクション724A、724B、724Cを包含する。例えば、「last name」円が、レコード724A、「{1,2,4,5,7}」を包含する。この円に検索コード1が割り当てられ、このことが検索−コードテーブル740の中に記録される。同様に、「first name」円に検索コード2が割り当てられ、「street」円に検索コード4が割り当てられる。検索コード1、2、及び4はそれぞれ、共通部分を除外した領域だけでなく、対応する円領域全体を指すことが強調されなければならない。同時に満足させられる2つ以上の生のクエリに関連付けられるレコードが、対応する円形領域に関連付けられるレコードのセットを交わらせることによって見出される。その結果が、検索−コードテーブル740の中に記録され、結果に寄与する個々の領域の検索コードの合計によって形成される検索コードとペアにされる。この場合、検索コードは、各ビットセットがいずれの円形領域が存在するかを示すビットマップ表現として認識され得る。
【0197】
最終ステップは、いずれの検索コードが、クラスタメンバシップに関してより綿密な採点に値するクエリに対する十分な応答に対応するかを指定することである。この場合、候補選択基準742は、検索コードが3、5、又は7でなければならないことである。このことは、成功するクエリ候補は、last nameと照合する変数と、first name又はstreet、又はfirst nameとstreetの両方と照合する変数とを有さなければならないことを意味する。first name及びstreetと照合する変数では、情報と照合するいずれの単一の変数の場合にも同様であるように、不十分である。採点のために返される候補744は、これら3つの検索コード742に関連付けられるレコードの合併によって与えられる。
【0198】
2.6.4 クエリ構築
クエリ構築手順142において、データソース100から、又はトークン化されたレコード118から読み取られたレコードの中の1若しくは2以上のフィールド又はランタイムパラメータの断片又は全体から選ばれたコンテンツから生のクエリを構築する、場合により、クエリ構築規則セットが関与するクエリ構築式をユーザが与える。生のクエリは、いくつかがベクトルであり得る、1又は2以上のクエリフィールドの値からなることが可能である。例えば、ユーザが、個人名をクエリとして使用することを所望することが可能であり、ファーストネームフィールド、ミドルネームフィールド、及びラストネームフィールドのコンテンツを、各フィールド値の間のスペースで、又はカンマとスペースで連結することによって、そのクエリを構築する規則を指定する。1又は2以上のネームフィールドが無効である、又は入力されていない場合、その名前の構築を指定するさらなる割り当て(「大文字小文字」)が与えられることが可能である。代替として、場合により、ファーストネームとミドルネームの頭文字だけが保たれ、ラストネームと連結される。生のクエリは、複数の部分から形成された構造化されたレコードであることが可能であり、例えば、個人名に関する生のクエリは、別々のファーストネームクエリフィールド、ミドルネームクエリフィールド、及びラストネームクエリフィールドからなることも可能である。単一のfull_nameフィールドだけがデータレコード上に存在する場合、ユーザクエリ構築式は、生のクエリの構成フィールドを入力するのにそのfull_name値をどのように構文解析すべきかを指定することが可能である。クエリ構築式は、クエリレコードの中のデータを特徴付ける1又は2以上のデータパターンコード、例えば、生のクエリの他の要素を構築するのに使用される各フィールドの入力の状態(例えば、入力されている、空白、又は無効)を示す入力パターンコードを入力することが可能である。
【0199】
一部の実施例において、変数プロファイラ110のデータ準備モジュール111におけるスタンダダイザ112のようなスタンダダイザが、句読文字若しくは他の指定された文字を削除すること、又はそれらの文字を代替の文字で置き換えること、数の左側を0又はスペースで埋めること、アルファベットを小文字にすることなどのような、要求されることをユーザが示すが、完全な詳細で指定しなくてもよい(これらの操作は、事前定義された操作として利用可能であり得るので)操作を使用して、生のクエリに適用されることが可能である。一部の実施例において、独立した複数の標準化が適用されて、標準化された生のクエリのベクトルがもたらされることが可能である。例えば、「&」のような一部の句読文字が、自然な用法の範囲に及ぶように複数の様態で扱われる必要がある可能性があり、つまり、その文字は、それぞれ有用な効果を伴って、削除される、スペース文字で置き換えられる、そのままにされる、又は「and」という語に展開されることが独立に行われ得る。
【0200】
クエリアプローチが直面する1つの課題は、個人名又は企業名のような一部のフィールド(又はフィールドの組み合わせ)が、自由形式の性質を有することであり、つまり、2つの名前が、それらの名前が欠落した語で、又は語順で異なる場合でさえ、許容可能な照合であり得ることである(すなわち、クラスタメンバシップ処理中にトークンを比較するのに使用される類似性採点関数又は類似性採点規則が、欠落した語、又は語順の変更にペナルティを課すが、それでも、欠落した語、又は語順の変更を許容する可能性がある)。このことは、例えば、一般に、フルネーム自体は、クエリであり得ないことを暗示する、つまり、あまりにも多くの許容可能な照合が見逃される可能性がある。つまり、フルネームで直接に検索することは、重要なすべての候補によっては満足させられない可能性がある語順、及びいくつかの名前が存在することを前提とする。代わりに、フルネームは、生のクエリとして扱われ、実際のクエリは、その生のクエリを展開することによって生のクエリから生成されるようにした方がよい場合があり得る。
【0201】
2.6.5 クエリ展開
生のクエリが、クエリ展開エンジン143によって処理されて、展開されたクエリが生成されることが可能である。一部の実施例において、変数プロファイラ110のデータ準備モジュール111におけるトークナイザ113のようなトークナイザが、クエリ展開中に生のクエリの要素に適用されて、クエリが、クエリ語句と呼ばれるトークンに分割されることが可能である。
【0202】
一部の実施例において、クエリ語句は、例えば、タイプ入力上の変数、代替のつづり、及び文化的変数を含むようにさらに展開されることが可能である。例えば、「civilization」というクエリ語句が、「civilisation」及び「civilizatin」という語句を含むように展開され得る。「Weber」に関するクエリが、「Webber」という語句を含むように展開され得る。また、他の展開も可能であり、例えば、1つの文字体系における名前が、別の文字体系において複数のつづりを有することが可能である(例えば、漢字からローマ字への変換)。展開の際に使用すべきタイプ入力上の変数のセットは、変数プロファイル110において計算され得る。前処理が変数プロファイルストアの基本セットを確立した後、新たなレコードが処理されるにつれ、さらなる変数がオンラインで検出されて、変数プロファイラストアの変数のリストに追加されることが可能である。
【0203】
一部の実施例において、各クエリ語句は、トークン−代表ストア127を変数ネットワークストア126と一緒に使用してトークン代表で置き換えられることが可能である。このことは、同一の近隣(例えば、正規の近隣)内の変数トークンが同一のトークン−代表で置き換えられ、したがって、関連付けられる変数トークンを識別することは、単に厳密なトークン−代表照合を見つけ出すことを要求するだけであるので、変数トークンの比較を円滑にする。変数トークンは、2つ以上の近隣のメンバであることが可能であり、したがって、2つ以上のトークン−代表を有することが可能である。トークンに対応するすべてのトークン代表が、置換として使用されることが可能であり、その結果、(置換される)クエリ語句の数が増加する。
【0204】
一部の実施例において、クエリ展開エンジン143は、場合により、トークン−代表置換の後、2つ(又は3つ以上)のクエリ語句を組み合わせることによってトークン−ペアクエリ語句を形成することが可能である。このペアリングの目的は、クエリ語句に基づいて検索から返されるレコードのセットを絞ることである。一部の実施例において、(トークン−代表で置換された)トークン−ペアクエリ語句は、アルファベット順に並べ替えられる。このことは、トークン−ペアクエリ語句を検索する際に語順の局所化された変更を検出可能にする。隣接する語の各ペアを形成する際にオリジナルの語順が格納される場合、そのようなペアのセットが、ブロック再構成まで、オリジナルの句を再構築するのに使用されることが可能である。このことは、オリジナルの語順が、語のセット自体によっては捕捉されない様態で語ペアにおいて捕捉されることを意味する。
【0205】
仲介する1つのクエリ語句を有するクエリ語句からトークン−ペアクエリ語句を作成することは、照合の可能性を完全に除外することなしにフィールド(又はフィールドの組み合わせ)から語(又は他のトークン)が欠落している可能性があり、フィールド採点アルゴリズムが、このことを許容するように設計されるため、検索を向上させる。例えば、ミドルネームは、企業名からの「of」のような項目の場合にそうであるように、しばしば、切り詰められ、又はレコードから省略される。欠落した語の他の多くのそれほど明白ではない例が、現実のデータには生じる。三重のクエリ語句、及びよりより多重のセットのクエリ語句が、さらに絞ったクエリを形成するのに使用され得る。
【0206】
例えば、クエリ展開エンジン143が、「John Jacob Jinglehiemer Schmidt」という生のクエリを受け取る。トークン−代表ストア127が、トークン−代表「John」、「Jacob」、「Jingleheimer」、「Schmidt」のリストを返す。生のクエリにおける「Jinglehiemer」は、「Jinglehiemer」を包含する変数の正規の近隣におけるトークン−代表である、「Jinglehiemer」のより頻度の高い変数「Jingleheimer」で置換されていることに留意されたい。クエリ展開エンジン143が、隣接するクエリ語句、この例では、「Jacob John」、「Jacob Jingleheimer」、及び「Jingleheimer Schmidt」を使用して、アルファベット順に並べられた(トークン−代表で置換された)トークン−ペアクエリ語句を作成する。また、クエリ展開手順は、仲介する1つのクエリ語句を有するクエリ語句「Jingleheimer John」及び「Jacob Schmidt」に関してアルファベット順に並べられた(トークン−代表で置換された)トークン−ペアクエリ語句を作成することもする。
【0207】
一部の実施例において、生のクエリは、前述した変数−検索の一部として変数−ルックアップ手順におけるクエリとなるように設計された変数クエリのセットを生成するように生のクエリを体系的に変更するクエリ展開手順を適用することによって、展開され得る。例として、2つの政府によって割り当てられた識別子(「gids」)が、それらのgidsが多くとも1文字の変更だけ異なる場合に限って、つまり、それらのgidsが1以下のハミング距離を有する場合に、照合と見なされるものと想定されたい。削除−結合手順が、
図8に示されるとおり、厳密なルックアップを介してこのことを実施するのに使用され得る。データソース820における各gidが、そのgidの削除セットを形成し、さらに削除位置、削除変数、及び関連付けられるキーを含む各削除エントリを検索ストア830に書き込むことによって展開される(825)。生のクエリ800は、gidからなる。生のクエリ800が、検索ストア830のエントリを展開する(825)のに使用されるのと同一の削除−結合手順を使用して、削除セット810に展開される(805)。展開されたクエリは、削除位置と削除変数の両方をキーとして使用して検索ストア830の中でシークされる(832)。このことが、変数照合のセットをもたらし、次に、変数照合のこのセットが、照合するレコードを取り出すのに使用され得る(837)。
【0208】
この手順の変数形態が、オリジナルの変更されていないgidを、検索ストア830の中に削除位置0でエントリとして含め、検索ルックアップのキーを削除変数だけに(削除位置を無視して)変えることである。このことは、単一文字挿入、単一文字削除、及び単一文字代入、並びに2文字入れ換え及び非隣接挿入/削除を含む、すべての削除−結合1変数照合を見つけ出し、つまり、これらの照合は、すべての編集距離1変更と、長さを変えない編集距離2変更(二重代入は範囲に含まれない)の大部分とを含む。
【0209】
2.6.6 採点エンジン
クエリデータレコードと、既存のデータクラスタの中のデータレコード(インクリメンタルモードにおいて)又はデータソースにおける他のデータレコード(バッチモードにおいて)の間の類似性の測度が、採点エンジン150によって計算されるスコアとして表されることが可能である。採点エンジン150は、1若しくは2以上のフィールドの、又はフィールドの組み合わせの、例えば、名前及び/又はアドレスを個々に、又は共同で構成するフィールドのコンテンツ全体又は部分的コンテンツを比較することによって、2つのレコードを比較することが可能である。これらのコンテンツは、これらのコンテンツがレコードのフィールドの値から導き出されるので、「フィールド−値」と呼ばれることが可能である。
【0210】
一部の実施例において、フィールド−値の選択されたペアの間のスコアは、それらの値の相等性、又はそれらの値の間の編集距離などの類似性基準に基づくことが可能である(他の類似性基準には、音声上の類似性、又は画像データ(例えば、顔認証のための)に関するグラフィック上の類似性などの様々なタイプのデータに関する他の形態の類似性が含まれる)。1文字又は2文字からなる短いフィールド−値は、誤りを意図と区別するための基礎が存在しない可能性があるため、しばしば、相等性に関してしか比較されないことが可能である。別個に、一部のフィールド−値、例えば、「New York」を包含する都市フィールドは、スペース文字を包含するようなことがある単位としてだけ意味上の意義を有する。そのような値では、1つの値を別の値に変えるのに要求される挿入、削除、及び代入の回数をカウントする編集距離が、類似性の良好な測度であり得る。
【0211】
一部の実施例において、コンテンツが、何らかの分離記号(一般に、ただし、排他的にではなく、スペース文字)で分離されたトークンの順序付けられたセットである、フィールド−値の選択されたペアの間のスコアは、厳密に照合するトークンの数、変数照合(同一ではないが、均等である、又は類似していると認識される)であるトークンの数、並びにトークン順序及びトークン位置の一致を考慮に入れることが可能である。例えば、個人名が、スペース分離記号又はカンマ分離記号を用いたファーストネームフィールド、ミドルネームフィールド、及びラストネームフィールドの連結として構築されることが可能である。データ品質問題には、1又は2以上のフィールドが入力されていないこと、及び名前順序の変更(例えば、ファーストネームとラストネームを入れ替えること)が含まれる。
【0212】
一部の実施例において、レコードのペアの間のスコアが、異なる情報の類似性の存在、欠如、又は度合に重み付けされた重点を与えるように、条件付き規則の階層に応じて、フィールド−値のペアの間で、スコア−要素と呼ばれるスコアのセットを組み合わせることによって、事前定義された、又はユーザによって指定された採点規則(例えば、規則セットによって、又は関数によって指定された)に基づいて計算されることが可能である。例えば、アドレスレコードを比較する際、同一の住宅番号、同一のストリート、同一の都市、及び同一の郵便番号を有する2つのレコードには、通常、一方のレコードに郵便番号が欠けている、又は照合しない郵便番号のような何らかの矛盾が存在するレコードの別のペアと比べて、より高いスコアが与えられる。スコア要素は、単一のスカラ値に制限されなくてもよく、複数のフィールド、及び複数のベクトルを包含するレコードを含め、より複雑な形態をとることが可能である。
【0213】
スコアは、個々のフィールド−値ペアに関する定性的採点測定のセット(例えば、スコアが1である場合、「厳密な照合」、スコアが1未満であるが、ファジー照合閾値を超えている場合、「ファジー照合」など)、及び/又はフィールド−値の入力の状態のようなレコード特性を符号化するデータパターンコードである、照合コードを含み得る。照合コードは、前述した検索コードと似たような目的を果たす。つまり、照合コードは、数値スコアの計算を要求することなしに、採点測定のセットを編成し、定性的照合条件の指定を円滑にする。
【0214】
スコア要素は、少なくとも部分的な順序付けを有さなければならず、したがって、スコア要素は、「より高い」スコア、又は「最良の」スコアを判定するように組み合わされ、比較されることが可能である。スコア要素の部分的順序付け、及び最良のスコアを判定するスコア要素の関連付けられる比較は、順序付けられた事例ベースの規則セットが関与する、事前定義された、又はユーザによって指定された規則セットの形態をとることが可能である。
【0215】
2.6.7 インクリメンタルモードにおけるクラスタメンバシップ判定
クラスタ化プロセス全体が、クラスタメンバシップ判定において一体となる。
図9が、クラスタメンバシップを判定するためのプロセスの実施例の概略を示す。データソース100が読み取られる。生のクエリが形成され展開される前に、レコードはセグメント化され並列に分割される(図示せず)(910)。一部の実施例において、前述したクエリ構築手順及びクエリ展開手順は、変数プロファイラストア115及び変数ネットワークストア126から読み取る。一部の実施例において、クエリレコードは、より区別しやすいレコードを先に置くように識別性の基準136で並べ替えられることが可能である。生の候補レコードが、検索ストア146にアクセスすることによって、前述した候補検索エンジンを使用して見出される(920)。事前定義された条件、又はユーザによって指定された条件が関与する候補選択手順930が、それらの生の候補レコードに適用されて、候補レコードのセットがもたらされる。
【0216】
選択930の後に見出される候補レコードは、既存のクラスタのメンバであり、実際、候補クラスタレコードである、つまり、それらの候補レコードは、1又は2以上のクラスタのメンバに対する近似照合である。選択条件930は、クエリレコードが、より綿密な調査に値するだけクラスタに十分に近いかどうかを判定するように指定される。
【0217】
クエリレコードが、候補選択930の後に全く候補クラスタレコードを返さない場合(932)、そのクエリレコードは、既存のクラスタのいずれのメンバにも近くなく、新たなクラスタが作成される(934)。そのクエリレコードは、マスタレコードとしてマスタレコードストア176に書き込まれる。この新たなクラスタレコードが、代表的レコードストア178及びデータクラスタ180にさらに書き込まれる。この新たなクラスタレコードは、検索ストア146に追加された検索−エントリ展開手順935を使用して検索−エントリを入力するのに使用される。一部の実施例において、生の候補クラスタレコード920を見つけ出すのに候補検索エンジンによって使用される検索ストア146は、マスタレコードだけから入力される(935)。他の実施例において、マスタレコードに加えて、代表的レコードストア148の中のレコードが、検索ストアに追加されることも可能である(952)。
【0218】
マスタレコードは、クラスタを何らかの様態で特徴付ける特別なクラスタの代表的メンバ、例えば、クラスタの最初のメンバである。一部の実施例において、クラスタ化が始まる前にデータが並べ替えられ、したがって、新たなクラスタの最初のメンバは、そのクラスタに関して、並べ替え順序で先頭となる。例えば、銀行ローン相手方のデータセットの中で、データが、会社名における語の多い順に並べ替えられて、マスタレコードを、最も長い会社名を有するクラスタのメンバにすることが可能である。長い会社名を有するレコードが、クラスタのシードとなるように選択され得るのは、長い名前が、より多くのトークンを包含するとともに、より多様なトークンを包含するため、より短い名前と比べて、一部の類似性採点手順によって、より容易に区別され得るためである。
【0219】
クラスタは、2つ以上のマスタレコードを有し得る。この特徴は、クラスタをマージする際、及びアルゴリズムによって行われたクラスタメンバシップ判定を人によって行われた判定で変更する際のクラスタ承認プロセスにおいて後段で使用される。
【0220】
候補選択手順930が1又は2以上の候補レコードを返した場合、それらの候補レコードに関連付けられるすべてのデータクラスタのメンバが、クエリレコードに照らして採点されるように取り出される。これらの関連付けられるデータクラスタは、候補データクラスタと呼ばれる。一部の実施例において、すべてのクラスタメンバではなく、代表的レコードストア178の中に格納されたメンバだけが取り出される(939)。採点エンジン150が、クエリレコードと取り出されるすべてのクラスタメンバの間の類似性スコアを判定するのに使用される。最良のスコアが照合閾値を超えている場合、そのクエリレコードは、対応するクラスタに追加される。クエリレコードが、2つ以上のクラスタに関して照合閾値を超えている場合、そのクエリレコードは、そのクエリレコードがより高いスコアを有する方のクラスタに追加される。一部の実施例において、クエリレコードが、2つ以上のクラスタに関して同一の最良のスコアを有する場合、そのクエリレコードは、最初のクラスタに追加される。他の実施例において、クエリレコードが、2つ以上のクラスタに関して同一の最高スコアを有する場合、そのクエリレコードは、メンバシップの尤度を反映する重みと一緒にすべてのそのようなクラスタに追加されることが可能である。
【0221】
一部の実施例において、クエリレコードがデータクラスタに関連付けられた後、クラスタメンバシップを判定することを担う最良のスコアが、閾値と比較されることが可能である。最良のスコアがこの閾値を下回る場合、そのクエリレコードは、クラスタのその他のメンバと十分に異なっていると見なされ、代表的レコードストア178に追加される。この場合の意図は、類似性スコアの部分的推移性を活用することである。AがBと非常に類似しており、さらにCがAと非常に類似している場合、Bは、Cと少なくとも相当に類似している。このため、CをBに照らして採点することは、Aに照らしたスコアが十分に正確であるので、必要ない可能性がある。そのような閾値は、「準重複」閾値と呼ばれることが可能であり、極めて高く設定され得る。その目的は、特に、ほぼ同一であるクラスタメンバに照らした冗長な採点を減らすことである。
【0222】
一実施例において、クエリと生の候補レコードの間の照合するトークン−ペアクエリ語句の数がカウントされることが可能であり、その数が候補閾値を超えた場合、その生の候補レコードは、候補レコードであり、関連付けられるデータクラスタは、候補クラスタと見なされる。すべての候補データクラスタが識別された後、そのクエリレコードが、それらの候補クラスタのメンバに照らして採点されて、最良のスコアが見出され、プロセスは、前述したとおり、続けられる。
【0223】
図10A〜
図10Dは、マルチトークンクエリフィールドに関するクラスタ化プロセスの実施例を示す図である。
図10Aにおいて、生のクエリ1000が、会社名、「ACME−Metl Grp」から形成される。生のクエリ1000は、小文字に変換すること、及び句読点を置換することによって標準化されて(1002)、標準化された生のクエリ1004「acme metl grp」が与えられる。各トークンが、
図3A〜
図3Bにおけるとおり、そのトークンのトークン−代表ベクトル1006で置換される。語「metl」は、2つの正規の近隣に属し、したがって、2つのトークン「metal」と「meta」を有し、この両方が、もたらされるトークン置換された生のクエリにおいて使用される。このトークン置換された生のクエリが展開されて(1008)、アルファベット順に並べられたトークン語ペア及び単独語トークンのリストからなる展開されたクエリ1010、例えば、「acme metal」、「group metal」、「group meta」などがもたらされる。
【0224】
図10Bで、プロセスが続けられる。標準化された生のクエリ1004は、トークン置換され(1006)、展開されて(1008)、展開されたクエリ1010をもたらしている。別個に、マスタレコードストア1050のエントリが、検索ストア1054を入力するように展開されている(1052)。検索ストア1054における変数−ルックアップは、この事例では、展開されたクエリ1010から各トークンペアをとり、検索ストア1054の中でそのトークンペアを探す(1056)ことによって機能する。共通のクラスタidと照合するトークンペアの数がカウントされ(1058)、その結果が、生の候補レコードのリストの中に格納される(1060)。この例において、照合するトークンペアの数は、2つの会社名のスコアのプロクシである。クエリ及びマスタレコードにおけるトークンの数に対してあまりにも少ない照合するペアを有する候補を削除するように閾値が適用される(1062)(この目的で、マスタレコードにおける名前のトークン数単位での長さが、検索ストア1054の中に格納されている)。
【0225】
図10Cで、候補レコード1061が、候補クラスタid(クラスタシーケンスを含む)1072に関する代表的レコードストア1070から代表的レコードをフェッチするように読み取られる。標準化された、入ってくるレコード1074に存在する採点フィールドが、各代表的レコード1076からの取り出されたフィールドに照らして個々に採点される(1078)。これらのフィールド−レベルスコア1080が、事例ベースのスコア規則セット1082において組み合わされて、比較されるレコードのスコアが計算される。この場合、スコアは、照合判定として論理の点で符号化される(1084)。この場合、規則は、入力条件を「論理積演算すること」、及び事例を下方に「論理和演算すること」によって読み取られる。例えば、名前スコアが、near_duplicate_thresholdより高く、id_scoreが1であり、さらにdate_scoreが1である場合、照合判定は、「準重複」である。名前スコアがnear_duplicate_thresholdより低かった場合、照合する条件が、存在する場合、見出されるまで、次の行が試みられるといった具合である。一部の実施例において、この規則セットは、参照により本明細書に組み込まれている米国特許第8,069,129号明細書において説明される環境などのビジネス規則環境を使用して符号化され得る。採点規則セット1082の列に示されるスコア要素は、照合コードで符号化されることが可能であり、例えば、第2行は、最初の位置の「3」が、照合閾値を超えた(ただし、準重複閾値を下回る)名前スコアを示し、その他2つの位置の「1」が、idスコア及び日付スコアに関して厳密な照合を示す、「311」という照合コードを有することが可能である。
【0226】
図10Dで、スコア規則セット1082において、比較されたレコードに関する照合判定1084が、別の事例ベースの規則セットにおいてアクション1088に変換される(1086)。異なる照合判定に関して異なるアクションが行われる。照合判定1090「準重複」は、名前スコアがnear_duplicate_thresholdを超えており(このことにより、match_scoreより高いことが暗示される)、その他のスコアが1である場合、割り当てられる。もたらされるアクション1092は、既存のクラスタidを入ってくるレコードに割り当てることである。他方、照合判定1093が、「照合」であった(「準重複」ではなく)場合、既存の照合閾値を割り当てることに加えて、アクション1094は、代表的レコードストア1070にレコードを追加することである。照合判定1095が「照合なし」であった場合、アクション1096〜1099は、新たなクラスタidを生成して、そのidをレコードに割り当てること、そのレコードをマスタレコードストア1050に追加すること、検索−エントリ展開手順1052をレコードに適用し、それらの結果を検索インデックス1054に追加すること、及びそのレコードを代表的レコードストア1070に追加することである。
【0227】
2.6.8 バッチモードにおけるクラスタメンバシップ判定
クラスタ化プロセスは、バッチモードにおいて、インクリメンタルモードにおけるのとは多少異なったように進められる。
図11A〜
図11Dは、このクラスタ化プロセスを図示する。
図11Aで、このクラスタ化プロセスの高レベルの概略が与えられる。変数プロファイラストア115及び変数ネットワークストア126が、検索−エントリ展開手順を介して読み取られ、処理されて、検索ストア146の中に検索−エントリ145が入力されることが可能である。このことは、前処理ステップとして行われる。データソース100が読み取られる。生のクエリが、一部の実施例において、変数プロファイラストア115及び変数ネットワークストア126の中のデータを使用して、各レコードに関して生成され、展開される(1110)。展開されたクエリは、クラスタメンバシップ基準を満足させない可能性があるレコードを除外するようにクラスタメンバシップ基準を近似するように作成されることが可能である。展開されたクエリは、検索ストア146から生の候補レコードを取り出す候補検索エンジン1120に送られることが可能である。生の候補レコードが、候補セレクタ1130によってフィルタリングされて、プロクシ照合基準を満たす候補レコードが選択されることが可能である。一部の実施例において、プロクシ照合基準は、各レコードに関して行われた複数の検索の結果を符号化する、検索コードを使用して部分的に実現され得る。プロクシ照合基準を満たすすべての候補レコードが、クエリレコードに照らして詳細な採点を受けることが可能であり(1140)、もたらされるスコアが、変数−ペアスコアストアの中に保存されることが可能である(1150)。
【0228】
一部の実施例において、各ペアに、スコアの要素に関するスコア判定の品質(名前照合又は郵便番号照合の品質などの)を含む、採点判定の背後の詳細、並びにそのペアのレコードにおけるフィールド又はフィールドの組み合わせの入力の状態の符号化を符号化する照合コードが割り当てられることが可能である。
【0229】
データソース100の中のすべてのレコードが処理され、変数−ペアスコアストア1150が完成した後、データソースレコード100が再び読み取られる。データソースレコードが、クラスタメンバシップエンジンによって処理されて(1150)、新たなクラスタを作成すること、及びクラスタメンバシップ判定があいまいである、又は周辺的である場合に、そのことを示すことを含め、各データソースレコードがいずれのクラスタに属するかが判定されることが可能である。ユーザ102が、ユーザインターフェース104を使用して、変数−ペアスコアストア1150を点検することが可能である。一部の実施例において、このユーザインターフェースは、各レコードがノードであり、候補レコードの変数−ペアがエッジである、変数−ペアスコアのネットワークをグラフ表示することが可能である。このユーザインターフェースは、候補レコードのペアに関連付けられる全体的なスコア、スコア詳細(全体的なスコアに寄与する構成スコアを含む)、検索コード、及び照合コードを記録することが可能である。一部の実施例において、ユーザ102は、変数−ペアスコアストア1150を操作して、変数ペアリングの詳細を追加する、削除する、又は変更することができる。
【0230】
変数−ペアスコアストアが、データセット100に関して完成したので(1150)、バッチモードクラスタメンバシップ判定は、インクリメンタルモードの場合のように、それまでに処理されているレコードだけでなく、クラスタメンバシップ判定を行うのに利用可能なレコードの完全なセットを有する。
【0231】
図11Bで、クラスタメンバシップエンジンの1つのバッチモード実施例が図示される。データレコードが、変数−ペアスコアストア1150を得るのに処理されるのと同一のデータソース100から読み取られる。一部の実施例において、これらのレコードは、より区別しやすいレコードを先に置くように識別性の基準に応じて並べ替えられることが可能である(1151)。クラスタストア170及びデータクラスタ180の入力は、インクリメンタルである。各クエリレコードが、そのクエリレコードの一意レコード識別子(一意レコード識別子が既に付加されているものと想定される)でクラスタストア170の中で探されて(1152)、既にクラスタのメンバであるかどうかが判定され、既にクラスタのメンバである場合、関連付けられるクラスタidが取り出される。
【0232】
クエリレコードの一意のレコード識別子がクラスタストア170の中に既に存在する場合、そのクエリレコードは、以前のデータレコードの処理中にそれらのクラスタストアに追加されているはずである。クラスタidを割り当て(1153)、データクラスタ180を更新する(1154)。
【0233】
一意のレコード識別子がクラスタストアの中に存在しない場合、その一意のレコード識別子の変数ペアのレコードが、変数−ペアスコアストア1150の中で見つけ出されることが可能であり(1155)、スコアが照合閾値を超えている変数ペアのレコードが取り出される。この照合閾値は、オリジナルレコードがクラスタのマスタレコードであったとした場合に、同一のクラスタに入るだけ十分に類似しているレコードを示す。現在の設定において、マスタレコードは、クラスタの最初のメンバであると見なされ得る。したがって、ほとんどのレコードは、それら自体はマスタレコードではなく、この照合閾値は、変数−ペアのレコードと同一のクラスタにおけるメンバシップをサポートするだけ十分に類似しているレコードを識別するのに使用される。次に、各変数−ペアのレコードが、クラスタストアの中で探されて(1355)、それらのレコードの1又は2以上が、クラスタに既に割り当てられているかどうかが判定されることが可能である。考慮すべき3つの事例、すなわち、変数−ペアのレコードのいずれもクラスタストアに入っていない事例、1つが入っている事例、又は多くが入っている事例が存在する。
【0234】
クラスタストアの中に既に存在している変数−ペアのレコードが全くない場合、現在のレコードは、新たなクラスタの最初のメンバシップとなるだけ十分に既存のクラスタとは異なる。新たなクラスタが、現在のレコードに基づいて作成されると(1156)、データクラスタは、その新たなクラスタで更新される(1154)。さらに、各変数−ペアのレコードの一意のレコード識別子、及び変数−ペアスコアストア1150からの関連付けられる採点情報を含め、照合閾値を超えている変数−ペアのレコードそれぞれが、クラスタに追加される。前述したとおり、スコアが照合閾値を超えているレコードは、現在のレコードがクラスタのマスタレコードであったとした場合と同一のクラスタに入るだけ十分に類似しており、現在のレコードは、新たなクラスタの最初のメンバであるので、クラスタのマスタレコードである。これらのレコードは、これらのレコードについての情報が不完全であるため、データクラスタ180を更新するのに使用され得ない。各レコードは、そのレコードがデータソース100から読み取られ、そのレコードの一意のレコード識別子がクラスタストア170の中で見つけ出されると、データクラスタ180に追加される。
【0235】
1つの変数−ペアのレコードが既存のクラスタのメンバであることが見出された場合、現在のレコードは、クラスタのメンバの照合閾値の範囲内にあり、そのクラスタのメンバであるとされる。現在のレコードに、関連付けられるクラスタidが割り当てられる(1153)。次に、データクラスタ180が、現在のレコードで更新される(1154)。クラスタ検索ストア170が、現在のレコードに関連付けられるクラスタ情報で更新されることが可能である(1168)。
【0236】
図11Cが、1つの変数−ペアのレコードが既存のクラスタのメンバである例を与える。既存のクラスタのマスタレコード1180に、黒で塗りつぶされた円で印が付けられている。非マスタレコードが、グレーで塗りつぶされた円で示される。準重複閾値1181が、そのマスタレコードと非常に類似しており、例えば、代表的レコードストア178(クラスタストア180のいずれか)に追加されない可能性があるレコードを取り囲む。照合閾値1182が、直接の関連によってクラスタのメンバとなるだけマスタレコードと十分に類似しているすべてのレコードを取り囲む。第2互いに素なクラスタのマスタレコード1183が、そのレコードの準重複閾値境界及び照合閾値境界と一緒に示される。
【0237】
現在のレコード1184は、このレコード1184が、示される2つのクラスタの照合閾値境界の外にあるので、既存のクラスタのメンバではない。このレコード1184自らの照合閾値境界1185が、1つのデータレコード1186を取り囲む。このデータレコード1186は、このデータレコード1186が照合閾値の範囲内にあるため(このため、データレコード1184がマスタレコードであるとした場合、データレコード1184に関連付けられるクラスタのメンバであることになり、この場合、データレコード1184は、マスタレコードである)、データレコード1184に関する変数−ペアデータレコードである。データレコード1186は、既にマスタレコード1180に関連付けられるクラスタのメンバであり、したがって、現在のデータレコード1184がこのクラスタに追加される。現在のデータレコードは、照合閾値1182を外れているので、現在のデータレコードがクラスタメンバシップを導き出すデータレコードに対する接続を示すようにエッジ1187が描かれる。
【0238】
一部の実施例において、関連の連鎖を介するクラスタの成長を制限するのに、外側の疑わしい閾値境界1188がマスタレコード1180の周囲に引かれて、クラスタメンバが見出され得る領域を制限することが可能である。データレコード1189は、データレコード1184の照合閾値の範囲内にあり、現在、そのクラスタのメンバであるが、疑わしい閾値境界1188の外にあり、したがって、マスタレコード1180のクラスタにおけるメンバシップから除外される。そのような周辺的な変数−ペアリングが、この場合に破線で示されるとおり、ネットワークグラフにおいて区別されることも可能である。
【0239】
図11Bに戻る。多くの変数−ペアのレコードが既存のクラスタのメンバであることが見出された場合、クラスタのセットは、重複排除される。1つだけの明確なクラスタが存在する場合、前述の事例が当てはまる。一実施例において、現在のレコードの1又は2以上の変数−ペアのレコードを包含するいくつかの別々のクラスタが存在する場合、各クラスタ内の最良のスコア、及び対応する照合する変数ペアのレコードが、クラスタメンバシップ判定のあいまいさ又は不確かさの証拠として記録される(1162)。最良の照合は、それぞれの別個のクラスタからの最良のスコアを比較することによって見出されることが可能である(1164)。引き分けが生じた場合、現在のレコードは、最も小さいクラスタidを有するクラスタに割り当てられる。一部の実施例において、現在のレコードは、各クラスタの相対的スコアによって決定される重みと一緒に2つ以上のクラスタの部分的メンバにされてもよい。
【0240】
関連付けられるクラスタidが、現在のレコードに割り当てられる(1153)。データクラスタ180が、現在のレコードで更新される(1154)。さらに、クラスタストア170が、割り当てられたクラスタid、及びスコアを伴う代替のクラスタメンバシップペアリングのリストを含む、現在のレコードに関連付けられるクラスタ情報で更新される(1168)。
【0241】
図11Dが、現在のデータレコードが別々の2つのクラスタの照合閾値の範囲内にある実施例を示す。前述の場合と同様に、データレコード1180及び1183が、別々のクラスタのマスタレコードであり、データレコード1180及び1183それぞれの準重複閾値境界及び照合閾値境界が示されている。現在のデータレコード1190が、クラスタメンバシップに関して考慮されている。現在のデータレコード1190は、照合閾値の内側に2つの変数−ペアのレコード、データレコード1193及び1194を有する。データレコード1193は、マスタレコード1180に関連付けられるクラスタのメンバであり、データレコード1194は、マスタレコード1183に関連付けられるクラスタのメンバである。クラスタとこれらの変数−ペアのレコードがともに、クラスタストア180の中に記録されることが可能である。2つの間でより良い方のスコアが、現在のデータレコード1190と変数−ペアデータレコード1193の間のスコアであるものと想定されたい。現在のデータレコード1190は、マスタレコード1180のクラスタに割り当てられ、現在のデータレコード1190のデータレコード1193とのペアリングが、黒のエッジで印を付けられる。変数−ペアデータレコード1194、及び変数−ペアデータレコード1194に関連付けられる、マスタレコード1183を有するクラスタとの代替の関連付けが、グレーのエッジによって記録され、印を付けられる。
【0242】
グラフィカルユーザインターフェース104において、クラスタのネットワークが、各データレコードをノードとして表示されることが可能である。マスタレコードであるデータレコードが区別されることが可能である。クラスタ内のデータレコードのコレクションの回りに線を描くクラスタの境界が引かれることが可能である。クラスタメンバとの変数−ペアリングのお蔭でクラスタのメンバである照合境界の外にあるデータレコードが、エッジによって示されることが可能である。潜在的に、2つ以上のクラスタのメンバであるデータレコードが、強調表示されることが可能である。これらは、割り付けがクラスタ承認プロセス中にユーザによる点検を受ける可能性があるデータレコードであり、これらのデータレコードを区別して、複数のクラスタに対するこれらのデータレコードの結び付きを示すことは、ユーザがメンバシップに関して最終的な決定に達するのを助けることが可能である。ユーザ102は、ユーザインターフェース104を使用して、そのような決定を、後段で説明されるとおり、クラスタネットワークの点検の一環として、又はクラスタ承認プロセスの一環として行うことができる。
【0243】
2.6.9 トークン−ペアクエリ語句に関する変数−ルックアップ手順
候補レコードが、クラスタidが検索結果によって参照されて出現する、異なるクエリの数に基づいてランク付けされることが可能である。例えば、クラスタ1が、3つのクエリに関する検索結果によって参照されることが可能であり、クラスタ10が、2つのクエリに関する検索結果によって参照されることが可能であり、クラスタ15が、4つのクエリに関する検索結果によって参照されることが可能であるといった具合である。一部の実施例において、候補レコードには、それらの候補レコードを参照する検索結果を生成したトークン−ペアクエリ語句の数対トークン−ペアクエリ語句の数の比に基づくスコアが与えられる。このスコアは、以下の式を使用して算出され得る。すなわち、
score
candidate=QueryPairs
candidate/QueryPairs
ただし、score
candidateは、クラスタのスコアである。QueryPairs
candidateは、そのクラスタを識別する検索結果を含むクエリの数である。さらに、QueryPairsは、検索ストアの中の展開されたクエリから探し出されたトークン−ペアクエリ語句の数である。
【0244】
候補レコードが、スコアを候補閾値と比較することによって識別されることが可能である。例えば、クエリペアの半分が照合することが、良好なスコアであることが可能である。
【0245】
一部の実施例において、いずれの候補を保持するかを決定する際に補足的な情報が使用され得る。例えば、トークン−ペアクエリ語句の数(隣接するクエリ語句、及び仲介するクエリ語句を有するクエリ語句を含む)は、クエリにおけるトークンの数Nの点で2N−3として表現され得る。この候補レコードは、M個のトークンを有し、したがって、2M−3個のトークン−ペアクエリ語句を有する。候補の良好なセットをもたらす例示的な基準は、照合したクエリペアの数が2
*minimum(M,N)−5以上であることを要求することである。この式の重要な特徴は、この式が、候補レコードが、クエリと比べて、より少ないトークン−ペアを有する可能性があり、したがって、より少ない照合ペアが、可能な照合を有することを要求されることを認識することである。他の式も可能である。
【0246】
2.6.10 クエリ拒否処理
一部の実施例において、あまりにも多くの別々のレコードを参照する検索結果が、十分に区別する役割をしないとして破棄されることが可能である。例えば、トークン−ペアクエリ語句によって返されるレコードの最大数に関する閾値が100であることが可能であり、このことが、トークン−ペアクエリ語句が役に立たなかった場合、時間を浪費せずに適当な数の個々のレコードが採点されることを可能にする。クラスタメンバシップは、通常、2つ以上のフィールド類似性スコアによって判定される。トークン−ペアクエリ語句が、大量のクラスタを返す場合、このことは、候補のセットにわたって、トークン−ペアクエリ語句が大きく変わらない一方で、他の何らかの値が大きく変わることを意味する可能性がある。取り出されたレコードの数が閾値に達した後、トークン−ペアクエリ語句は、他の区別に役立つ情報が効果的であるほどには効果的でない可能性があるため、ドロップされることも可能である。
【0247】
単独トークンクエリ語句に関して、閾値は、より低く設定されることが可能であり、場合により、10未満に設定されることが可能である。その理由は、個々の単独トークンクエリ語句が、一般に、それほど区別に役立たないことであり、事実、個々の単独トークンクエリ語句は、ペアが形成され得ない場合に1語だけのトークンを包含するレコードとの照合を検出するのに最も役立つ可能性がある。単独トークンクエリ語句が明確な照合を見つけ出すことに成功しない場合、区別するのにより役立つ他の何らかの情報を使用する方が生産的であり得る。
【0248】
一部のシナリオにおいて、生のクエリが候補クエリを全くもたらさないことが可能であり、例えば、生のクエリが空白又は無効であることも可能である。又は、クエリ語句がすべて、一般的過ぎるとして拒否されることが可能であり、この場合、クエリは全く行われ得ない。両方の場合において、そのレコードは、クエリプロセスから拒否される。異なるフィールド(又はフィールドの組み合わせ)が関与する代替のクエリ構築式が、クラスタ化を駆動する役に立つクエリを作成するのに使用され得る。いずれのクエリ式の下でレコードがクラスタ化されたかを示すクラスタ戦略識別子が、レコードに印を付けるのに使用されてもよい。
【0249】
例えば、第1クラスタ化が、政府によって割り当てられた識別子に基づいており、多数のレコードが、例えば、すべて0のデフォルトの値を有するものと想定されたい。すべて0の政府によって割り当てられた識別子で(名前や生年月日のような他のフィールドで異なって)100のクラスタが形成された後、後続のレコードは、拒否される。一部の実施例において、一般的過ぎるクエリ語句を共有するすべてのレコード、又は代表的レコードのより小さいセットが、既にクラスタ化されたレコード、及びそれらのレコードのクラスタのその他のメンバを含め、抽出される。レコードのこのコレクションが、新たなクラスタ戦略を使用して再クラスタ化される。各レコードに関する、古い戦略の下におけるオリジナルクラスタidは、後の使用のために保存されることが可能である。この例において、名前に基づくクエリを使用する新たなクラスタ戦略は、レコードのこのセットに関して、区別するのにより役立つ可能性が高く、政府によって割り当てられた識別子のクラスタ戦略が失敗した場合にレコードをクラスタ化するのに使用され得る。一般に、クエリを構築するのに使用すべきフィールドは、区別するのに最も役立つものから区別するのに最も役立たないものの順に選択される。不完全なレコードは、区別するのにそれほど役立たず、潜在的に、あいまいなクラスタメンバシップ判定につながり、したがって、それらのレコードが、完全に入力されたレコードとは別にクラスタ化されることが有用である。
【0250】
第2クラスタ戦略の下でクラスタ化する際、一般的過ぎるクエリをセグメント値として使用することが有用であり得る。このことにより、一般的なクエリ値を共有するセットからのレコードに対してクラスタ化が制限される。第2クラスタ化の後、古いクラスタidと新たなクラスタidの複数照合調整が使用されることが可能である。最初のクラスタ化と2番目のクラスタ化は、クラスタ戦略の選択がクラスタメンバシップ判定に影響を与え得るため、異なるレコードセットをクラスタに割り当てる可能性がある。複数照合調整は、それらの異なる戦略の下におけるクラスタをマージしようと試みる。複数照合調整の詳細は、異なるが、関連付けられる脈絡において後段で説明される。
【0251】
一部の実施において、検索ストア146は、異なるフィールド(又はフィールドの組み合わせ)を使用するクエリに対応する複数の検索−展開手順に関する検索エントリを包含することが可能である。例えば、検索ストア146は、政府によって割り当てられた識別子クエリに基づくクラスタに関するエントリを包含することが可能である。これらの検索−ストアエントリが、名前ベースのクエリに関して、同一のクラスタidキーを保持して、再展開され得る。つまり、政府によって割り当てられた識別子クエリを使用してクラスタ化することによって導き出されたデータクラスタをデータソースとして使用して、名前ベースのクエリ表現のための検索エントリが、展開され得る。このことは、検索ストアにインデックスを付け直すことに相当する。既存のクラスタのセットに、新たなクエリ戦略のためにインデックスが付け直された場合、拒否されたレコードを処理することは、関連付けられるレコードを抽出して、再処理することを要求せず、新たなクエリのためにインデックスが付け直された検索ストアを使用するフレッシュなクラスタ化実行として進められることが可能である。
【0252】
2.6.11 複数照合調整
図12で、複数照合調整ステップ手順が図示される。クラスタがベクトル化された形態で保持される場合、つまり、複数クラスタメンバが、単一のレコードの中で一緒に保持される場合、それらのクラスタメンバが、個々のレコードに正規化される(1200)。これらのレコードが、一意のレコードキーで分割される(1202)。このことが、それぞれのオリジナルデータレコードのすべてのレプリカントが同一のパーティションの中に入っていることを確実にする。それらのデータレコードが、レコードキーでロールアップされて、レコードに関連付けられる別々のクラスタキーのベクトルが得られる(1204)。1つのクラスタキー、例えば、最小のクラスタキーが、選好されるものとして選択される。次に、このベクトルが、選好される(この場合は、最小の)クラスタキーを他それぞれの別個のクラスタキーとペアにする、クラスタキーペアに正規化される(1206)。次に、推移閉包が、すべてのクラスタキーペアのセットに適用される。このことは、接続されたクラスタキーペアの各ネットワークに対する、つまり、各クラスタに対する1つのクラスタキーの割り当てをもたらし(1208)、次に、このクラスタキーが、各一意のデータレコードに割り当てられる(1210)。
【0253】
複数照合リコンサイラ165の一実施例が、
図13A〜
図13Cに図示される。
図13Aで、複数のパーティション上のレコードのクラスタ510が、個々のレコード1321に正規化される(1320)。最初のクラスタ1300において、k1が、2つのレコードを包含するクラスタのクラスタidである。これらのレコード1310の最初のレコードが、セグメントキー「135」、id「123456」、及びレコードキー「r1」を有する。正規化の後、クラスタキーk1が、レコード1310に追加され、セグメントキーがドロップされて、レコード1322がもたらされる。次に、正規化されたレコード1321が、レコードキー1324で再分割される。結果1326は、レコードキーを共有するすべてのレコードが同一のパーティション内に存在することである。
【0254】
図13Bで、レコード1326が、レコードキー1328でロールアップされて、クラスタキーのベクトル1330をそれぞれが包含する、一意のレコードキーを有するレコードがもたらされる。例えば、レコード1331が、レコードキー「r1」を有する一意のレコードである。レコード1331は、id「123456」と、2つのクラスタidのベクトル「[k1,k2]」を有する。クラスタキーのペアが形成される。この場合、これらのクラスタキーは、既にペアである。ベクトルがより長い、例えば、「[k1,k2,k5]」である場合、ペアは、以下のベクトル、すなわち、「[k1,k2]」、「[k2,k5]」における隣接する要素から形成される。推移閉包1332が、接続されたペアの各セットに関して一意の代表的クラスタキーを選択するように適用されて、結果としてのペアリング1334が与えられる。
【0255】
図13Cで、レコード1330に、推移閉包1332から得られたマッピング1334を使用して一意のクラスタキーが割り当てられる。これらのレコードが、クラスタキー1340で再分割されて、クラスタキーにわたってロールアップされてデータクラスタ530にされる。
【0256】
2.6.12 クラスタ承認プロセス
一部の実施例において、マスタレコードが、クラスタ化の後に行われるクラスタ承認プロセスの一環として、クラスタのメンバの中からユーザによって指定されることが可能である。クラスタは、2つ以上のマスタレコードを有し得る。同一のクラスタidを有する複数のマスタレコードが、クラスタシーケンス番号で区別される。
【0257】
クラスタ承認プロセスは、UIを介して、レコードのクラスタへのグループ化を点検し、所望に応じて変更を行う機会をユーザに与える。例えば、ユーザが、クラスタ中のいずれのレコード、又はいずれの複数のレコードがマスタレコードとして指定されるかを変更することを所望する可能性がある。マスタレコードは、クラスタの特別の代表の役割をし、詳細には、マスタレコードは、ときとして、表示のために使用されることが可能であり、ときとして、検索ストアエントリが形成されるマスタレコードとして使用されることが可能である。ユーザが、クラスタの最初のメンバ以外、又はクラスタの重心以外の何らかのレコードが、場合により、そのレコードが、そのレコードのフィールドのいくつかの中でより良好な値(ユーザに対して)を有するため、より良好な代表であると感じることが可能である。一部の実施例において、マスタレコードが変更されると、マスタレコードストアが、新たなマスタレコードを追加し、前のマスタレコードを無効にする、又は削除することによって変更されることが可能である。検索ストアがマスタレコードに基づく場合、検索ストアは、新たなマスタレコードに対応するエントリを追加し、さらに古いマスタレコードと関係するエントリを無効にする、又は削除するように変更される。
【0258】
また、ユーザが、1つのクラスタのクラスタidが別のクラスタのクラスタidの値に再マップされるべきことを手動で示すことによって、2つのクラスタをマージすることを選択することも可能である。例えば、会社名に基づくクラスタ化に関して、ユーザが、2つのクラスタ上の会社名が同一の法人を表し、同一のクラスタの中に一緒に保持されるべきことを認識することが可能である。クラスタid125が、「HSBC」に関するレコードを保持することが可能である一方で、クラスタid192が、「Midland Bank」に関するレコードを保持する。これらの名前は、類似性採点規則の下で照合ではないが、ユーザは、Midland BankがHSBCによって買収されていることを知っており、Midland BankとHSBCを一緒にクラスタ化することを所望する。ユーザが、クラスタid192がクラスタid125に再マップされるべきことを示すことが可能である。一部の実施例において、クラスタ承認変更が処理されると、マスタレコードストアが、クラスタid192を有するプライマリレコードのクラスタidを125に変更し、クラスタシーケンスを次に大きい未使用の値に設定するように変更されることが可能である。また、マスタレコードに関連付けられる検索ストアエントリが、cluster_idを192から125に変えるように変更されることも可能である。将来のクラスタ化において、「Midland Bank」という名前を有するレコードは、クラスタid125において候補を見出し、クラスタid125において「HSBC」レコードと一緒にクラスタ化されることが可能である。
【0259】
ユーザが、クラスタを同様の様態で分割することを選択することが可能である。一部の実施例において、レコードには、新たなクラスタのメンバであるという印が付けられることが可能である。クラスタ承認変更が処理されると、そのレコードが、新たなクラスタのマスタレコードとしてマスタレコードストアに追加されることが可能であり、そのレコードから入力された検索−エントリが、検索ストアに追加されることが可能である。
【0260】
一部の実施例において、検索ストアエントリは、すべてのクラスタメンバから生成されたエントリの互いに素な合併で入力され、つまり、そのクラスタの何らかのメンバによる検索−エントリ展開手順によって生成されたそれぞれの別個のエントリが、そのクラスタに結び付けられたインデックスにおけるエントリとして保持される。このことは、そのクラスタの多様性を検索プロセスに公開するのに役立つ。
【0261】
一部の実施例において、さらなる情報が、候補の存立可能性の評価を容易にするように検索ストアの中に格納されることが可能である。例えば、企業名又は個人名のような複数語フィールドの中のトークンの数が、検索ストアの中に格納されることが可能である。
【0262】
図14A〜
図14Bは、クラスタ承認プロセスをより詳細に図示する。
図14Aで、データクラスタ180からのレコードが読み取られ(1401)、データクラスタレコードからのクラスタid及び他の情報を含む、選択されたデータクラスタのすべてのメンバに関するレコードを包含する承認ワークシートが入力される。一部の実施例において、承認シートにおける列は、いずれのレコードが確認され、いずれのレコードがマスタレコードであるかを示すように入力され得る。ユーザ102が、承認変更を指定するようにユーザインターフェース104を介して承認ワークシートを閲覧し、編集することができる(1420)。
【0263】
承認ワークシートに対してユーザ102によって(又は何らかの自動的プロセスを介して)行われた変更が、変更された承認ワークシートをオリジナルワークシートと比較することによって検出される(1430)。
【0264】
一部の実施例において、ユーザ102が、レコードをクラスタのメンバとして確認することが可能であり、確認した場合、そのレコードは、将来、クラスタ化に差し出された場合、さらなる処理なしに現在のクラスタidを受け取る。一部の実施例において、更新手順1432が、確認済み又は除外済みのストア172にレコードの一意参照キーを現在のクラスタidと一緒に追加し(1433)、そのレコードに確認済みとして印を付けることによって、このことを実現する。また、ユーザが、以前に確認されたレコードの確認を取り消すことも可能であり、確認を取り消した場合、そのレコードは、確認済み又は除外済みのストア172から削除される、又は更新手順によって無効にされたという印が付けられることが可能である(1432)。
【0265】
一部の実施例において、ユーザが、レコードを、クラスタのメンバとして除外することが可能であり、除外した場合、そのレコードは、将来、クラスタ化に差し出された場合、さらなる処理なしに、現在のクラスタidを有するクラスタにおけるメンバシップを阻止される。このことは、そのレコードに関する次善のクラスタを見つけ出すようクラスタ化アルゴリズムを仕向ける機構として使用され得る。一部の実施例において、除外は、確認と類似したプロセスによって達せられる。更新手順1432が、レコードの一意参照キーを現在のクラスタidと一緒に確認済み又は除外済みのストア172に追加して(1433)、レコードに除外されたという印を付ける。ユーザが、前に除外されたレコードの除外を取り消すことが可能であり、除外を取り消した場合、そのレコードは、確認済み又は除外済みのストア172から削除される、又は更新手順によって無効にされたという印が付けられることが可能である(1432)。
【0266】
一部の実施例において、いずれのレコードがクラスタのマスタレコードであるかが変更されることが可能である。新たなマスタレコードは、更新されたマスタレコードストア1440の中に格納されることが可能であり、古いマスタレコードは、マスタレコードストア1440から削除される又は無効にされることが可能である。
【0267】
一部の実施例において、レコードに、新たなクラスタに再マップされるように印が付けられることが可能である。このことは、既存のクラスタを分割する効果を有する。そのような印が付けられたレコードには、新たなクラスタidが割り当てられ(1438)、更新されたマスタレコードストア1440の中に新たなクラスタのマスタレコードとして格納される。現在のクラスタのマスタレコードに対してよりも、印の付けられたレコードの方に近いレコードは、後続のステップでレコードが再処理される際に、印が付けられたレコードと一緒にクラスタ化されるので、選択されたレコードにそのように印が付けられるだけでよい。
【0268】
一部の実施例において、レコードが既存のクラスタに再マップされることが可能である。このことは、2つのクラスタをマージする効果を有する。例えば、クラスタid192を有するレコード「Midland Bank」が、「HSBC」クラスタ125に再マップされて、その結果、これらのクラスタがマージされることが可能である。既存のクラスタにレコードをマージする際、そのレコードには、既存のクラスタidが割り当てられることが可能であり、そのレコードは、そのクラスタに関する新たな、さらなるマスタレコードとなる。一部の実施例において、クラスタの異なるマスタレコードが、クラスタシーケンス番号で区別されることが可能である。新たなマスタレコードがクラスタに追加されると、最高のクラスタシーケンス番号がインクリメントされてから(1436)、そのレコードが、更新されたマスタレコードストア1440に追加される。
【0269】
確認済み又は除外済みのストア172及び更新されたマスタレコードストア1440に適切な更新が行われた後、それらの変更によって潜在的に影響を受けるすべてのレコードが、データクラスタ180から抽出されて(1434)、影響を受けるレコードのデータセット1450がもたらされることが可能である。一部の実施例において、影響されるレコードは、変更が開始されたクラスタの中の、又はレコードが再マップされているクラスタの中のすべてのレコードを抽出することによって識別されることが可能である。その理由は、これらのクラスタの中のレコードがすべて、クラスタメンバシップに関係のある意味で比較的近く、それでも、これらのクラスタのメンバに対する変更が他のクラスタにおけるメンバシップ判定に影響を与えないだけ十分に他のクラスタの中のレコードから離れていることである。
【0270】
図14Bで、クラスタ承認変更による影響を受けるレコードを再クラスタ化するプロセスが図示される。影響を受けるレコード1450が読み取られ(1451)、検索ストア及び代表ストアに適用されて、影響を受けるレコードの中のクラスタに関連付けられるすべてのレコードが(確認されたレコード以外)削除されて(1452)、縮小された検索ストア1456及び縮小された代表ストア1458がもたらされる。このことは、事実上、影響を受けるレコードに関して、確認済み又は除外済みのストア172及び更新されたマスタレコードストア1440が既に入力されていること以外は、クラスタ化プロセスを初期状態に戻す。影響を受けるレコード1450は、確認済み又は除外済みのストア172、更新されたマスタレコードストア1440、縮小された検索ストア1456、及び縮小された代表ストア1458を使用して、
図9におけるとおり読み取られ(1459)、再クラスタ化される。
【0271】
確認されたレコードには、それらの既存のクラスタidが割り当てられる。マスタレコードである、影響を受けるレコードは、それらのレコード自体との厳密な照合であり、それらのレコードに関連付けられるクラスタidを割り当てられる。除外されるレコードは、特定のクラスタから阻止され、適宜、他のクラスタに割り当てられる。この割り当ては、影響を受けるクラスタの中にないクラスタに対して行われることが可能であり、そうされる可能性が高い。そのような再割り当てが可能であるのは、更新されたマスタレコードストア1440、縮小された検索ストア1456、及び縮小された代表ストア1458が、他のすべてのクラスタに関するレコードを包含し、したがって、それらの他のクラスタに対する照合及び割り当てが可能であるためである。他のすべてのレコードは、通常のクラスタメンバシップ判定プロセスがそれらのレコードを連れて行く先に向かう。前のクラスタのレコードと比べて、再マップされたレコードとより類似しているレコードは、再マップされたレコードのクラスタに割り当てられる。このことは、クラスタを分割することと、マージすることの両方に関して行われる。
【0272】
レコードが処理されるにつれ、縮小された検索ストア1456及び縮小された代表ストア1458が再入力されて(1464)、更新された検索ストア1466及び更新された代表ストア1468がもたらされる。クラスタメンバシップ判定の結果が、変更された、影響を受けるデータクラスタのデータセットに書き込まれる(1480)。この結果がオリジナルデータクラスタ180と比較されて(1482)、データクラスタ差が見出されることが可能である(1484)。一部の実施例において、クラスタの前と後のリスト又はグラフ画像が、ユーザインターフェース104においてユーザ102に示されることが可能である。次に、ユーザ102が、さらなる承認変更を行い、このプロセスを繰り返すことによって反復することを選択すること、又はそれらの変更を破棄して、やり直すことを選択することが可能である。ユーザが承認変更に満足した場合、確認済み又は除外済みのストア172、マスタレコードストア174、検索ストア146、及び代表的レコードストア178を含むデータクラスタ180及びクラスタストア170が、新たなデータソースの将来のクラスタ化のために使用されるように公開されることが可能である。
【0273】
3 遠隔システムに照らしたクラスタ化
孤立した遠隔クラスタ化システム、詳細には、データを全くエクスポートしない遠隔クラスタ化システムにおいて保持されるデータクラスタに照らしてレコードをクラスタ化することが、インクリメンタルモードにおけるクラスタメンバシップ手順の変更によって扱われることが可能である。必須の要件は、クエリに加えて、起点システム上のクラスタ化プロセス中に見出されたいくらかのさらなるデータが、遠隔クラスタ化システムに送られなければならないことである。このさらなるデータは、起点システム上の変数の範囲を代表する、トークンのレベルと候補レコードの両方のレベルで変数である。これらの変数が、遠隔システム上で包括的検索及びクラスタ照合を行うことを要求される。
【0274】
クエリには、2つの形態があり得る。クエリは、クエリレコードから形成されたクエリであることが可能であり、その場合、そのクエリレコードがそのクエリと一緒に送られる。又は、クエリは、関連付けられるクエリレコードを全く有さない孤立したクエリであることが可能であり、その場合、そのクエリ自体だけが単に送られる。このことは、このプロセスにおいて後に候補照合レコードの採点に影響を与える。
【0275】
トークンに関して、起点システムにおける各トークンが、遠隔システムにおいて、起点システムに存在しない変数トークンを有することが可能である。これらの新たな変数を見つけ出すのに、起点クラスタ化プロセスに参加するトークンと関係するすべての変数が、遠隔システムに送られなければならない。一部の実施例において、トークンの変数の全範囲を捕捉するのに、オリジナルの展開されたクエリにおけるトークンとペアにされたすべてのトークン−代表に対応するトークンの集められた近隣が取り出され、遠隔クラスタ化システムに送られる。遠隔システム上で、これらのオリジナルのトークンが変数プロファイラストア及び変数ネットワークストアに追加されて、オリジナルのシステムと遠隔システムの間で新たな変数ペアリングが判定され、更新された変数プロファイラストア及び変数ネットワークストアが書き込まれる。トークン−代表が、更新された変数ネットワークストアにおいて形成される。トークン−代表は、検索ストアにこれらのトークン−代表でインデックスが付けられるため、遠隔システム上で最初に作成されたままでなければならない。新たなオリジナルの変数トークン、すなわち、遠隔変数プロファイラストアにも、遠隔変数ネットワークストアにも既に存在しているわけではない起点システムからのトークンは、既存のトークン−代表近隣に追加される。
【0276】
すべてのオリジナルの変数を送る同様の要件が、適切に照合する候補レコード、すなわち、クエリに適切な選択基準を満たす候補レコードが特定された後に、代表的レコードストアから取り出される代表的レコードに適用される。これらの代表的レコードは、それらのクエリ選択基準を満たす起点システム上のレコードの多様性を範囲に含む。これらのレコードそれぞれが、さもなければ検出されないままになる可能性がある遠隔システム上の変数ペアリングを見つけ出すことが可能である。
【0277】
クエリと関係する変数トークンと代表的レコードの両方が、クエリと一緒に遠隔システムに送られる場合、インクリメンタルモードにおける前述したクラスタメンバシップ手順が、指定された選択基準によりクエリと照合するすべてのレコードを取り出すように適用されることが可能である。一部の応用例、例えば、詐欺検知又は法科学捜査において、クエリと関係するレコードを取り出すための選択基準は、クラスタメンバシップを判定するのに使用されるクラスタメンバシップ基準とは異なることが可能である。クラスタメンバシップは、通常、偽陽性識別、つまり、レコードを誤ったクラスタに入れることを回避するように、より制限的な基準を優先させるのに対して、法科学クエリは、偽陰性、つまり、照合であるべきレコードを見逃すことを回避するように、より緩い基準を優先させる。
【0278】
図15A〜
図15Cで、遠隔クラスタ化システムに照らして行われるクエリの例が図示される。
図15Aで、ユーザインターフェース104Aを使用するユーザA 102Aが、クエリ1500をローカルクラスタ化システムにサブミットする。一部の実施例において、変数プロファイラストア115Aからのレコードを利用して、生のクエリにおける各トークンとペアにされる変数トークンを見つけ出し、変数ネットワークストア126Aからのレコードを利用して、例えば、展開されたクエリにおいて変数トークンに取って代わるべきトークン−代表を探し出して、そのクエリが展開されることが可能である(1510)。前述したとおり、変数ネットワークストア126Aにおけるそれらのトークンに関するトークン−代表の近隣は、選択された変数ネットワークレコードとして抽出され、保持される(1514)。選択された変数ネットワークレコードにおけるすべてのトークンが、変数プロファイラストア115Aから抽出され(1515)、選択された変数プロファイラレコードとして保持される(1516)ことが可能である。
【0279】
生の候補が、検索ストア146Aを使用して、展開されたクエリから見つけ出される(1520)。使用される検索エントリが、選択された検索エントリにおいて保持されることが可能である(1522)。クエリ選択基準が、生の候補レコードに適用されて(1530)、候補レコードが選択される。候補レコードが存在する場合、それらの候補レコードに関連付けられるクラスタに包含される代表的レコードが、代表的レコードストア178Aから取り出され(1540)、選択された代表的レコードとして保持される(1542)。クエリ1500、及び、存在する場合、様々な選択されたレコード1514、1516、及び1542が、遠隔クラスタ化システムによる処理のために遠隔クラスタ化システムに送られて、受信される(図示せず)。
【0280】
図15Bで、受信し、選択された変数プロファイラレコード1516が、遠隔システム上の変数プロファイラストア115Bを更新するのに使用されて(1551)、更新された変数プロファイラストア1552がもたらされる。一部の実施例において、このことは、このクエリの目的に限って使用される一時的更新であり得る。受信し、選択された変数ネットワークレコード1514、及び更新された変数プロファイラストア1552が、変数ネットワークストア126Bを更新するのに使用されて(1553)、更新変数ネットワークストア1554がもたらされる。
【0281】
図15Cで、受信したクエリ1500及び受信した、選択された代表的レコード1542が読み取られる。生のクエリが、それぞれの選択された代表的レコードから形成され、オリジナルクエリと一緒に、更新変数プロファイラストア1552及び更新された変数ネットワークストア1554を使用して、展開されたクエリに展開される(1510)。生の候補レコードが、遠隔検索ストア146Bの中で見つけ出される(1560)。クエリ選択基準が、生の候補レコードに適用されて、それらの選択基準を満たす候補レコードが見つけ出される(1565)。フィルタが適用される(1567)。候補が全く存在しない場合、そのことが、ユーザインターフェース104Bを介してユーザ102Bに報告される。
【0282】
候補が存在する場合、それらの候補が、代表的レコードストア178Bの中のそれらの候補に対応するクラスタから代表的レコードを取り出すのに使用され、それらの代表的レコードが、次に、現在のクエリレコードに照らして、つまり、オリジナルクエリレコード、又は現在のクエリが形成される元となったオリジナルの代表的レコードに照らして採点される。オリジナルクエリ自体が関連付けられるクエリレコードを有さなかった場合、すべての代表的レコードがとられる。一部の実施例において、オリジナルクエリに関連付けられるクエリレコードが存在する場合、そのクエリレコードもまた、取り出された代表的レコード178Bに照らして採点され、そのスコアが、現在のクエリレコードと代表的レコードの間のスコアと一緒に報告される。
【0283】
現在のクエリレコードと代表的レコード178Bの間のもたらされるスコアが、クエリ照合基準と比較され、それらの照合基準が満たされた場合(1575)、データクラスタレコードが、遠隔データクラスタ180Bから取り出されて(1577)、クエリ結果として格納される(1580)。次に、それらのクエリ結果が、ユーザインターフェース104Bを介してユーザ102Bに報告される。
【0284】
4 実施例
前述したクラスタ化技法、セグメント化技法、及び並列化技法は、コンピュータ上で実行されるソフトウェアを使用して実施され得る。例えば、このソフトウェアが、少なくとも1つのプロセッサと、少なくとも1つのデータストレージシステム(揮発性メモリ及び不揮発性メモリ、及び/又は記憶素子を含む)と、少なくとも1つの入力デバイス又は入力ポートと、少なくとも1つの出力デバイス又は出力ポートとをそれぞれが含む、1又は2以上のプログラミングされた、又はプログラマブルなコンピュータシステム(分散型、クライアント/サーバ型、又はグリッド型などの様々なアーキテクチャのものであり得る)上で実行される1又は2以上のコンピュータプログラムにおける手順を形成する。このソフトウェアは、例えば、データフローグラフのデザイン及び構成と関係する他のサービスを提供するより大きいプログラムの1又は2以上のモジュールを形成することが可能である。そのグラフのノード及び要素は、コンピュータ可読媒体の中に格納されたデータ構造として、又はデータリポジトリの中に格納されたデータモデルに準拠する他の編成されたデータとして実装され得る。
【0285】
このソフトウェアは、汎用、若しくは専用のプログラマブルコンピュータによって読み取られ得る、CD−ROMなどの記憶媒体上で提供されることが可能であり、又はネットワークの通信媒体を介して、このソフトウェアが実行されるコンピュータの記憶媒体に伝送される(伝搬される信号内に符号化されて)ことが可能である。これらの機能のすべてが、専用のコンピュータ上で、又は、コプロセッサなどの専用のハードウェアを使用して実行されることが可能である。このソフトウェアは、このソフトウェアによって指定される計算の異なる部分が異なるコンピュータによって実行される分散された様態で実装されることが可能である。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用、又は専用のプログラマブルコンピュータによって読み取られることが可能な記憶媒体又はストレージデバイス(例えば、ソリッドステートメモリ又はソリッドステートメディア、又は磁気媒体又は光媒体)の上に格納され、又はダウンロードされて、その記憶媒体又はストレージデバイスがそのコンピュータシステムによって読み取られると、本明細書で説明される手順を実行するようにそのコンピュータを構成する、又は動作させるようにする。また、本発明のシステムは、コンピュータプログラムを備えて構成されたコンピュータ可読記憶媒体として実装されると考えられることも可能であり、ただし、そのように構成された記憶媒体は、コンピュータシステムが、本明細書で説明される機能を実行する特定の、事前定義された様態で動作するようにさせる。
【0286】
本発明のいくつかの実施形態が説明されてきた。それでも、本発明の趣旨及び範囲を逸脱することなく、様々な変数形態が作成され得ることが理解されよう。例えば、前述したステップのうちいくつかは、順序に依存しないことが可能であり、このため、前述した順序とは異なる順序で実行されることが可能である。
【0287】
以上の説明は、添付の特許請求の範囲において規定される本発明の範囲を例示することを意図しており、限定することは意図していないことを理解されたい。例えば、前述したいくつかの機能ステップは、全体的な処理に実質的に影響を与えることなしに、異なる順序で実行されることが可能である。その他の実施形態が、以下の特許請求の範囲に含まれる。