(57)【要約】【課題】  本明細書で説明する少なくとも１つの実装において、あいまいな重複を検出し、およびこうした重複を削除すること。【解決手段】  あいまいな重複は、データベースにおいて、同一の実世界の実体または現象を表す、複数の別個のように見えるタプル（すなわちレコード）である。あいまいな重複の削除の問題へのソリューションは、距離関数の尺度がタプルの局所的な構造的な特性に強い影響を与えるよう尺度に関し不変であるようにし、重複のグループのタプル間の距離の縮小、および限られた方法においてグループをわたるタプル間の距離の拡大によってのみ、分割を変更することができるという点で、分割／結合に関し不変であるようにし、重複の削除の関数の範囲によって実際に有用であろう、グループにすることのすべてを行うような、制約の多い豊かさを有するようにする。【選択図】  図３
2006072985.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによって実行されると、
データベースから複数のタプルを含むデータ集合を取得する動作と、
前記データ集合の前記複数のタプルの各々について、前記データ集合内の１つまたは複数の最近隣のタプルを計算する動作と、
分割内の各あいまいな重複のタプルが共通の実世界の実体または現象を表すよう、各分割内のタプルが相互のあいまいな重複を含む、複数のタプルについての複数の分離した分割を定義する動作と
を備えた動作群を実行するプロセッサ実行可能な命令を有する１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項２】
前記分割の各々によって１つの重複しないタプルが残るよう、前記複数のあいまいな重複のタプルの複数の分割内の重複を削除する動作をさらに備えたことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項３】
前記計算する動作は、前記データ集合内の定義された数の最近隣のタプルを計算する動作を含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項４】
前記計算する動作は、
前記データ集合内の定義された数の最近隣タプルを計算し、および「近傍」となる、各タプルについて定義された数の最近隣のタプルの集合を定義する動作と、
各近傍について「近傍の拡張比」を計算する動作と
を含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項５】
前記計算する動作は、前記データ集合内の前記タプルの索引によって最近隣を検索する動作を含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項６】
前記定義する動作は、「コンパクト集合」および「離散的な近傍」である各分割に基づいて複数のタプルの複数の分割を定義する動作を含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項７】
前記定義動作は、「コンパクト集合」、「離散的な近傍」および「小さいカーディナリティ」である各分割に基づいて複数のタプルの複数の分割を定義する動作を含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項８】
各分割内の前記タプルは、相互の完全な重複をさらに含むことを特徴とする請求項１に記載の１つまたは複数のプロセッサ読取可能なプログラムの媒体。
【請求項９】
あいまいな重複を削除するシステムであって、
データベースからの複数のタプルを含むデータ集合を取得するデータ集合取得手段と、
前記データ集合の前記複数のタプルの各々について前記データ集合内の１つまたは複数の最近隣のタプルを計算する計算手段と、
分割内の各あいまいな重複のタプルが共通の実世界の実体または現象を表すよう、相互のあいまいな重複を含む各分割内の外観上別個の、複数のタプルについての複数の分離した分割を定義する分割手段と、
前記分割の各々によって１つの重複しないタプルが残るよう、前記複数の分割内の複数のあいまいな重複のタプルの重複を削除する重複削除手段と
を備えたことを特徴とするシステム。
【請求項１０】
前記各分割内のタプルは、相互の完全な重複をさらに含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記計算手段は、前記データ集合内の定義された数の最近隣のタプルを計算することを特徴とする請求項９に記載のシステム。
【請求項１２】
前記計算手段は、
前記データ集合内の定義された数の最近隣のタプルを計算し、および「近傍」となる各タプルについて定義された数の最近隣のタプルの集合を定義し、
各近傍について「近傍の拡張比」を計算する
ことを特徴とする請求項９に記載のシステム。
【請求項１３】
前記計算手段は、前記データ集合内の前記タプルの索引によって最近隣を検索することを特徴とする請求項９に記載のシステム。
【請求項１４】
前記分割手段は、「コンパクト集合」および「離散的な近傍」である各分割に基づいて複数のタプルの複数の分割を定義することを特徴とする請求項９に記載のシステム。
【請求項１５】
前記分割手段は、「コンパクト集合」、「離散的な近傍」および「小さいカーディナリティ」である各分割に基づいて複数のタプルの複数の分割を定義することを特徴とする請求項９に記載のシステム。
【請求項１６】
データ集合内のあいまいな重複のタプルを削除する方法であって、
データ集合内の複数のタプルの各々について、１つまたは複数の最近隣のタプルを計算するステップと、
分割内の各あいまいな重複のタプルが共通の実世界の実体または現象を表すよう、相互のあいまいな重複を含む各分割内の外観上別個の、複数のタプルについての複数の分離した分割の境界を定めるステップと、
前記分割の各々によって１つの重複しないタプルが残るよう、複数のあいまいな重複のタプルの前記複数の分割内の重複を削除するステップと
を備えたことを特徴とする方法。
【請求項１７】
前記計算するステップは、前記データ集合内の定義された数の最近隣のタプルを計算するステップを含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記計算するステップは、
前記データ集合内の定義された数の最近隣タプルを計算し、および「近傍」となる各タプルについて定義された数の最近隣のタプルの集合を定義するステップと、
各近傍について「近傍の拡張比」を計算するステップと
を含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記計算するステップは、前記データ集合内の前記タプルの索引によって最近隣を検索するステップを含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
前記境界を定めるステップは、「コンパクト集合」および「離散的な近傍」である各分割に基づいて複数のタプルの複数の分割の境界を定めるステップを含むことを特徴とする請求項１６に記載のシステム。
【請求項２１】
前記定めるステップは、「コンパクト集合」、「離散的な近傍」および「小さいカーディナリティ」である各分割に基づいて複数のタプルの複数の分割の境界を定めるステップを含むことを特徴とする請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、データベースおよびデータウェアハウスに関連する技術に関し、より詳細には、あいまいな重複に強い検出に関する。
【背景技術】
【０００２】
データウェアハウスでの決定支援分析は、ビジネス上の重要な決定に影響を及ぼす。したがって、こうした分析の精度は重要である。しかし、データウェアハウスにおいて外部ソースから受信されるデータには、通常、エラー（例えば、つづり間違い、複数のデータソースにわたって一致しない規則など）を含む。こうしたエラーは、タプル（ｔｕｐｌｅ）の重複のエントリをもたらすことが多い。したがって、データクリーニング、データ内のエラーの検出および訂正の作業にかなりの時間およびお金が費やされる。
【０００３】
データベースにおける重複するタプルの検出および削除の問題は、データクリーニングおよびデータ品質の広大な領域での重大な問題の１つである。論理的に同一である、実世界の実体が、データウェアハウスにおいて複数の表現を有することがあるのはよくあることである。
【０００４】
例えば、Ｉｓａｂｅｌという名の顧客がＳｕｐｅｒＭｅｇａＭａｒｋｅｔから２度製品を購入する場合、彼女の名前が２つの異なるレコード、［Ｉｓａｂｅｌ  Ｃｈｒｉｓｔｉｅ，Ｓｅａｔｌｅ，ＷＡ，ＵＳＡ，９８０２５］および［Ｃｈｒｉｓｔｙ  Ｉｓａｂｅｌ，Ｓｅａｔｌｅ，ＷＡ，Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ，９８０２５］として現れるかもしれない。不一致は、データ入力のエラーおよび／またはデータを入力する営業担当者の好みのためであることがある。
【０００５】
Ｉｓａｂｅｌなどの複数の顧客が複数のカタログを受け取ることがあるので、こうした重複の情報によって、ダイレクトメールのコストが大きく増加する傾向にある。厳しい予算のダイレクトメールのキャンペーンでは、こうしたエラーは、キャンペーンの成功と失敗との差であることがある。さらに、こうしたエラーは、不正確なクエリ結果（例えば、シアトルに何人のＳｕｐｅｒＭｅｇａＭａｒｋｅｔの顧客がいるのかなど）を、誤った分析モデルの作成も同様にもたらすことがある。
【０００６】
別個のように見えるが、重複しているエントリをデータベースから取り除くことは、あいまいな重複の削除の問題（ｆｕｚｚｙ  ｄｕｐｌｉｃａｔｅ  ｅｌｉｍｉｎａｔｉｏｎ  ｐｒｏｂｌｅｍ）である。本明細書では、「あいまいな重複」は、完全には一致しないが、同一の実世界の実体または現象を表す、別個のように見えるタプル（すなわち、レコード）である。
【０００７】
この問題は、すべての属性が完全に一致する場合にだけ２つのタプルを重複と見なす、標準的な完全重複の削除の問題とは異なる。文脈で明確に示さない限り、本明細書では以下、重複の検出および削除への言及は、あいまいな重複の削除の問題に焦中させることを仮定する。
【０００８】
あいまいな重複の削除に対する以前のソリューションを、監視する手法と監視しない手法に分類することができる。監視する手法では、周知の重複で構成された訓練データから、重複の対を特徴付ける規則を学習する。さらに、監視する手法は、訓練データが、実際に見られるエラーの種類および分布を示すことを仮定する。会話型の手動の指導を必要とする欠点を有する能動的な学習手法によって、限られた範囲で、述べられた問題のような、広範囲にわたる訓練データを取得することは、不可能ではないとしても困難である。実データの統合の多くのシナリオでは、適切な訓練データまたは会話型の手動の指導を取得することは不可能である。
【０００９】
監視しない手法による重複の削除の問題は、両方がデータ集合を分離したグループに分割しよう試みる点で、クラスタリングの問題に類似する。しかし、標準的なクラスタリングの定式化と重複の削除の問題との間には、いくつかの別個の違いがある。こうした違いについて以下で論じるであろう。
【００１０】
現在の監視しない手法は、こうした違いを無視しようとする傾向にあり、代わりに、複数属性のタプル間の標準的な逐語的な類似関数（例えば、編集距離およびコサイン距離などよく知られた単一結合のクラスタリング（ｓｉｎｇｌｅ−ｌｉｎｋａｇｅ  ｃｌｕｓｔｅｒｉｎｇ）アルゴリズム）、および重複の対を検出するために閾値に基づく制約にたよる。しかし、こうした閾値に基づく手法は、多数の偽陽性（真の重複ではないが、そうであると予測されるタプル）、または多数の偽陰性（本当は重複であるが、そうであると見なされないタプル）に帰着する。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本明細書で説明する少なくとも１つの実装では、あいまいな重複を検出し、こうした重複を削除する。あいまいな重複は、データベースにおいて、同一の実世界の実体または現象を表す、別個のように見える複数のタプル（すなわち、レコード）である。
【課題を解決するための手段】
【００１２】
同様の要素および特徴を参照するために、すべての図面を通じて同一の参照符号を使用する。
【００１３】
以下の説明では、データベース内のあいまいな重複のタプルの検出および削除を円滑に行う技術について述べる。技術を、（限定はしないが）プログラムモジュール、汎用および専用のコンピューティングシステム、専用電子機器、および１つまたは複数のコンピュータネットワークの一部含む、多くの方法で実装することができる。
【００１４】
こうした技術の例示的実装を、「例示的あいまいな重複の検出器」と呼ぶことができ、以下で説明する。
【００１５】
例示的あいまいな重複の検出器は、あいまいな重複の削除の問題に向けられる。本明細書では、「あいまいな重複」は、完全には一致しないにもかかわらず同一の実世界の実体または現象を表す、別個のように見えるタプル（すなわち、レコード）である。あいまいな重複を検出および削除することは、あいまいな重複の削除の問題である。
【発明を実施するための最良の形態】
【００１６】
（重複を特徴付ける基準）
あいまいな重複を検出する際に、例示的あいまいな重複の検出器は、従来技術の手法では使用されない少なくとも２つの新しい制約を用いる。特に、これらの２つの基準は、コンパクト集合（ＣＳ：ｃｏｍｐａｃｔ  ｓｅｔ）および離散的な近傍（ＳＮ：ｓｐａｒｓｅ  ｎｅｉｇｈｂｏｒｈｏｏｄ）と呼ばれる。これらの２つ基準は、重複のタプルのグループを特徴付けるための、データの局所的な構造的な特性を明示的に獲得する。
【００１７】
ＣＳおよびＳＮの基準は、以下の特性を獲得する。
【００１８】
・  グループ内の重複は、他よりも相互に「より近接」する。
【００１９】
・  重複のタプルの「局所近傍」は、空または離散的である。
【００２０】
こうした基準を満たすタプルを、たとえ相互に遠く離れているとしても重複としてグループにすることができる一方、より近接するが、こうした基準を満たさないタプルは、グループにすることができない。こうした局所的な構造的な特性によって、標準的なクラスタリングの定式化と重複の削除の問題とを区別する。
【００２１】
【表１】
2006072985.tif 000003
【００２２】
表１は、典型的な音楽データベースの例を提供する。（アスタリスク「*」でタグ付けされた）最初の６つのタプルは、重複のタプルである一方、残りのタプル（７〜１４）は一意的である。
【００２３】
（コンパクト集合の基準）
コンパクト集合（ＣＳ）の基準は、重複の集合が、相互に最近隣（ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ）のコンパクト集合であることである。この基準の前提は、重複のタプルが、他の別個のタプルに対してよりも相互により近接することである。したがって、重複のタプルは通常、相互に最も近い近隣である。表１の例では、タプル１は、タプル２の最近隣であり、逆の場合も同様である。対照的に、タプル８は、タプル７の最近隣とすることができ、タプル９は、タプル８の最近隣とすることができる。
【００２４】
対照的に、単一結合のクラスタリングに基づく従来技術の閾値に基づく手法では、推移性（すなわち、「ａ］が「ｂ］の重複であり、「ｂ］が「ｃ］の重複であるならば、「ａ］は「ｃ］の重複である）を仮定し、閾値のグラフ内で連結された要素を識別する。したがって、閾値に基づく手法では、多数の偽陽性をもたらす可能性がより高い。
【００２５】
（離散的な近傍の基準）
離散的な近傍（ＳＮ）の基準の前提は、重複のグループの局所近傍が離散的であることである。例えば、この基準は、表１の一意的なタプル７〜１４の周辺では満たさず、重複の集合よりも大きい（この例では、４つの）グループで生じる。
【００２６】
ひとつの見方から、タプルのグループの局所近傍とは、タプルの局所分布に依存する大きさの周囲の領域に関して定義された、じかに接している近接である。例えば、それは、半径２・ｎｎ（ｖ）の領域とすることができ、ただし、ｎｎ（ｖ）は、タプルｖの最近隣への距離である。
【００２７】
タプルの周辺の拡張比、すなわち、領域の外にあるタプルの数が小さい場合は、その局所近傍は「離散的」と呼ばれる。この概念は、タプルのグループに拡張され、個々のタプルの拡張比の総計が小さい（例えば、閾値ｃより小さい）場合は、その結合された局所近傍は、「離散的」と呼ばれる。例えば、総計の関数の最大値は、グループ内のすべてのタプルの近傍の値が閾値よりも小さいことを必要とするが、関数の平均値は、すべての拡張比の平均値が小さいことだけを必要とする。最大値の関数は、平均値の関数よりも制約が大きい。
【００２８】
（基準の形式化）
以下の定義では、Ｒをリレーション（すなわち、データ集合）とし、またｄ：Ｒ  ｘ  Ｒ→［０，１］をＲ内のタプルに関する対称の距離関数とする。分かりやすく説明するために、以下、（ｉ）２つのタプル間の距離は、タプルがまったく同一である場合にだけ０であり、および（ｉｉ）Ｒ内にある２つのタプルは、相互に同一ではないと仮定する。この仮定の妥当性を、タプルが完全に同一である場合には０を返すように、およびそうではない場合には、小さいε＞０に対して、ｄ（ｖ1，ｖ2）＋εを返すように、ｄを修正することによって確保する。
【００２９】
ＣＳの基準：Ｒからのタプルの集合Ｓは、Ｓのすべてのタプルｖに対して、ｖとＳの他のタプルｖ’との間の距離ｄ（ｖ，ｖ’）が、ｖとＲ−Ｓの他のタプルｖ”との間の距離ｄ（ｖ，ｖ”）より小さい場合には、コンパクト集合である。
【００３０】
ＳＮの基準：タプルｖに対して、２つの同心球を考える。小さい方の球は、半径が、ｖとその最近隣との間の距離ｎｎ（ｖ）であり、、大きい方の球は、半径がｇ（ｎｎ（ｖ））（＞ｎｎ（ｖ））である。ここでは、ｇ（ｘ）＝２ｘを使用する。近傍の拡張比ｎｇ（ｖ）は、ｖの周辺の大きい方の球内の点の数である。
【００３１】
ＡＧＧ：２R→Ｒを総計の関数とし、ｃ（＞０）を定数とする。（ｉ）｜Ｓ｜＝１、または（ｉｉ）Ｓのすべてのタプルの近傍の拡張比の総計された値がｃより小さい（すなわち、ＡＧＧ（｛ｎｇ（ｖ）：ｖ  ｉｎ  Ｓ｝）＜ｃ）である場合、タプルＳの集合は、ＳＮ（ＡＧＧ，ｃ）のグループであると言う。
【００３２】
ＳＧ（小さいグループ）の基準：考慮することができる重複のグループの別の特徴は、それが通常、非常に小さいことである。予め定義された定数Ｋ＞１に対して、｜Ｇ｜≦Ｋが成り立つならば、重複のグループＧは小さい。グループのカーディナリティ（すなわち、メンバの数）が小さいので、これを、「小さいカーディナリティ」の基準とも呼ぶことができる。
【００３３】
（例示的あいまいな重複の検出器）
一般に、例示的あいまいな重複の検出器は、入力されたリレーションＲ（例えば、データベースのデータ集合など）を最小数の「妥当」なグループに分割し、ただし、グループは、最小数が小さく、ならびにＣＳおよびＳＮの基準を満たす場合に、妥当である。
【００３４】
例示的あいまいな重複の検出器の文脈では、これは、重複の削除（ＤＥ：Ｄｕｐｌｉｃａｔｅ  Ｅｌｉｍｉｎａｔｉｏｎ）の問題である。すなわち、リレーションＲ、距離関数ｄ、正の整数Ｋ（＞１）、総計の関数ＡＧＧ、および正の実数ｃを所与とすると、例示的あいまいな重複の検出器は、１≦ｉ≦ｍを満たすすべてのｉに対して、以下のようになるよう、リレーションＲを最小数のグループ｛Ｇ1，．．．，Ｇm｝に分割する。 
・  ｜Ｇi｜≦Ｋ
・  Ｇiはコンパクト集合である
・  ＧiはＳＮ（ＡＧＧ，ｃ）のグループである。
【００３５】
図１に、あいまいな重複の検出および削除（ＦＤＤＥ：ｆｕｚｚｙ  ｄｕｐｌｉｃａｔｅ  ｄｅｔｅｃｔｉｏｎ  ａｎｄ  ｅｌｉｍｉｎａｔｉｏｎ）システム１００を例示する。例示的あいまいな重複の検出器を、本明細書で説明するＦＤＤＥシステム１００によって実装することができる。ＦＤＤＥシステム１００の構成要素を、ソフトウェア、ハードウェア、または両方の組合せで実装することができる。一般に、ＦＤＤＥシステム１００により、最近隣の集合が等しいタプルの対を決定し、対の均等をタプルのグループに拡張する。
【００３６】
ＦＤＤＥシステム１００は、サーバまたはクライアントの一部とすることができる。このＦＤＤＥシステム１００は、汎用コンピュータ、専用コンピュータ、ポータブルコンピュータ、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、アプライアンス製品、専用電子機器、またはデータベースを管理することができる他のこうしたコンピューティングおよび電子装置上で実装することができる。
【００３７】
ＦＤＤＥシステム１００の構成要素を、図１の破線内に示す。説明するシステム１００には、データ集合取得サブシステム１１０、最近隣計算サブシステム１２０、分割サブシステム１３０および重複削除サブシステム１４０を含む。
【００３８】
システム１００は、（例えば、直接接続を介して、またはインターネットなどのネットワークを介して）データウェアハウスサーバ１６０に結合される。こうしたサーバ１６０上に、データベース１７０がある。システム１００およびデータベース１７０は、同一のコンピューティング装置（サーバ１６０など）内または複数の装置にわたって属することができる。
【００３９】
このシステム１００では、取得サブシステム１１０は、データベース１７０からデータ集合を取得する。このデータ集合は、システム１００の動作の対象である。このデータ集合を、「リレーション」および／または単に「Ｒ」と呼ぶこともできる。こうした取得の例には、タプルの集合を含むデータパケットを受信すること、タプルを含む格納されたファイルへのアクセスすること、および／またはクエリを送信し、そのクエリの結果を受信することが含まれる。
【００４０】
最近隣計算サブシステム１２０は、取得したリレーションのあらゆるタプルのＫ最近隣を決定する。最近隣計算サブシステム１２０は、索引を生成するか、または以下のクエリについての効率的な回答を考慮する既存の索引を使用する。すなわち、リレーションＲの所与のタプルｖに対して、ｖのＫ最近隣をメモリに読み出す。
【００４１】
リレーションＲの各タプルに対して、最近隣計算サブシステム１２０は、ｖの最も近いＫ個の近隣、およびｖの近傍の拡張比を決定する。このサブシステムの出力は、リレーションＮＮ＿Ｒｅｌｎ［ＩＤ，ＩＤ１，．．．，ＩＤＫ，ＮＧ］、ただし、ＩＤ１，．．．，ＩＤＫは、識別子ＩＤおよび近傍の拡張比ＮＧを有する、タプルｖのＫ最近隣の識別子である。Ｋ最近隣をメモリに読み出し、および近傍の拡張比を計算するために使用することができる索引を所与とすると、このサブシステムは、入力されたリレーションＲを精査し、およびＲの各タプルｖに対して、索引を検索し、タプル［ｖ、ｖｌ，．．．，ｖＫ，ｎｇ（ｖ）］を出力に書き込む。
【００４２】
分割サブシステム１３０は、リレーションを最小数の妥当な重複のグループに分割する。少なくとも１つの実装では、このサブシステムは、標準的なデータベース（例えば、ＳＱＬなど）のクエリを使用する。このようにして、分割サブシステム１３０は、データベースシステムの効率的なクエリ処理能力を利用して、結果として、クライアントとサーバとの間で大量のデータが移動することを回避する。
【００４３】
分割サブシステム１３０は、第１フェーズの出力を使用して、入力されたリレーションを最小数のＳＮのコンパクト集合に分割する。結果としての分割は、ＤＥ問題の解答である。
【００４４】
分割サブシステムによるあいまいな重複の識別に基づいて、重複削除サブシステム１４０は、余分な重複のタプルを取り除くことによってデータベースのクリーンアップを行う。このサブシステムはデータベース１７０を修正することにより、識別された重複を取り除く。
【００４５】
（索引の検索の順序）
次に、最近隣計算サブシステム１２０の動作に関する追加の詳細を説明する。特に、ここでは、索引をアクセスする順序についてが中心である。
【００４６】
通常、Ｋ最近隣をメモリに読み出すために使用される索引構造は、ディスクベースである。換言すると、索引構造は、高速アクセス可能な主メモリ（例えば、ランダムアクセスメモリなど）に格納されたデータではなく、より遅い補助記憶システム（例えば、ハードディスクなど）に格納されたデータにアクセスする。
【００４７】
ディスクベースの最近隣の索引を一般的に用いて検索される連続したタプルが相互に近い場合、検索手順は、索引の同一の部分にアクセスする可能性が高い。したがって、第２の検索は、第１の検索から利益を得る。これは、バッファのヒット率および全体的な実行時間を大きく改善する。例示的あいまいな重複の検出器は、効率的に実行することができる検索の順序を使用する。
【００４８】
表１の例示的タプルを考察する。システムがＲのタプルの最近隣を検索する順番が１、１２、５などであると仮定する。タプル１（「Ｔｈｅ  Ｄｏｏｒｓ，ＬＡ  Ｗｏｍａｎ」）の最近隣をメモリに読み出すために、索引を付ける手順は、索引の一部にアクセスし、および処理において、データベースのバッファの中で索引の一部をキャッシュに保持する。タプル１２（「Ａｌｉｙａｈ，Ａｒｅ  ｙｏｕ  ｒｅａｄｙ」）の最近隣の同様の検索では、タプル１２がタプル１から非常に離れているので、索引の完全に異なる部分にアクセスするであろう。あるいはまた、タプル１の処理後にタプル２（Ｄｏｏｒｓ，ＬＡ  Ｗｏｍａｎ」）の最近隣を検索する場合、システムは、索引のほぼ同一の部分を使用する。したがって、システムは、データベースのバッファ内に索引の一部が既にあるという利益を利用することができる。
【００４９】
例示的あいまいな重複の検出器は、幅優先（ＢＦ：ｂｒｅａｄｔｈ  ｆｉｒｓｔ）順を採用する。幅優先順は、適切な検索順序の２つの特性を満たす。すなわち、第１に、順序内のタプルの直前のタプルはそれに近くなければならない。第２に、入力されたタプルの順序付けの手順は効率的でなければならない。
【００５０】
順序は、以下のように構成された木Ｔの幅優先の巡回に対応する。すなわち、入力されたタプルは、木の根になるように選択される。木のノードの子は、まだ木の中にまだ挿入されていないＫ最近隣である。例示的あいまいな重複の検出器は、実際には、こうした木を構築する必要はないが、適切な順序で単に入力されたタプルをメモリに読み出すことに留意されたい。
【００５１】
ＢＦ順の各タプル（根を除く）の前に、そのタプルの兄弟または親の兄弟の子が常に先行する。こうしたタプルは、任意のタプルの対よりも相互に非常に近い。したがって、検索の順序のすべてのタプルの前に、そのタプルに非常に近いタプルが先行する。したがって、検索アルゴリズムは、局所的な索引にアクセスさせる。
【００５２】
入力されたタプルの各々の検索に対して、そのタプルのＫ最近隣のタプルが目盛りに読み出される。したがって、ＢＦ順でタプルに出くわすと、システムは、そのタプルの親のタプルが検索された場合にそれを既にメモリに読み出している。したがって、データベースのバッファは、タプルを既にキャッシュに保持している。システムは、メモリが許せば、こうしたタプルを明示的にキャッシュに保持するか、または最近のアクセスをバッファに保存するためにデータベースシステムを当てにすることができる。
【００５３】
本発明では、最近隣の索引の参照は、正確なまたは確率的な最近隣の索引を使用することを意図する。当事業者は、標準的な距離関数（例えば、コサイン距離、編集距離、およびあいまいに合致する類似度など）に基づく近似および確率を使用する多くの従来技術の索引について精通している。
【００５４】
（手順の実行）
図２に、ＦＤＤＥシステム１００の手順の実行を示す。この手順の実行を、ソフトウェア、ハードウェア、またはその両方の組合せで実行することができる。理解しやすいように、方法のステップを、別個のステップとして概説するが、しかし、これらの別個のステップは、実行において必ずしも順序に依存するとして解釈しない。
【００５５】
例示するために、この手順の実行の説明では、特定の例への適用を説明する。この例では、グループ｛１０，５０，１００，１５０｝がＳＮのコンパクト集合を形成する。各タプルの近傍の拡張比（ＮＧ：ｎｅａｒｅｓｔ  ｇｒｏｗｔｈ）の値に加えて、対｛１０，５０｝、｛１０，１００｝、｛１０，１５０｝の４最近隣の集合がすべて等しいことが分かることで十分である。対の均等、および集合の均等の推移性から、グループ｛１０，５０，１００，１５０｝がコンパクト集合であることを推定することができる。
【００５６】
図２の２１２では、ＦＤＤＥシステム１００は、データベース１７０からデータ集合（すなわち、リレーション）を取得する。
【００５７】
２１４では、ＦＤＤＥシステム１００は、取得されたリレーションのすべてのタプルのＫ最近隣を計算する。Ｋ最近隣を計算するために、既存の索引を使用するまたは索引自体を生成することがある。
【００５８】
ブロック２１４の一環として、ＦＤＤＥシステム１００は、タプルの対間で異なるサイズの近隣の集合の均等を計算する。すなわち、タプルの対（１０、１００）に対して、システムは、２最近隣の集合、３最近隣の集合、などＫ最近隣の集合までが等しいかどうかを決定する。タプルｖ１とｖ２との間のこうした比較によって、以下のブール検索の結果ＣＳ２，．．．，ＣＳＫが、近傍の拡張比ｎｇ（ｖ１）およびｎｇ（ｖ２）といっしょにもたらされる。値ＣＳi（２≦ｉ≦Ｋ）は、ｖ１およびｖ２のｉ近隣の集合が等しいかどうかを示す。結果を、一時的なリレーションのＣＳの対内に格納することができる。
【００５９】
さらにブロック２１４の一環として、ＦＤＤＥシステム１００は、ＣＳの対のリレーションを計算するために、第１フェーズの出力（ＮＮ＿Ｒｅｌｎ）に対するデータベースのクエリ（例えば、（選択するならば）ＳＱＬのクエリなど）を発行することができる。クエリには、タプルのＮＮ＿Ｒｅｌｎ１．ＩＤがＮＮ＿Ｒｅｌｎ２．ＩＤより小さく、およびタプルＮＮ＿Ｒｅｌｎ１．ＩＤがＮＮ＿Ｒｅｌｎ２．ＩＤのＫ最近隣の集合内に存在し、逆の場合も同様であるという属性によって、ＮＮ＿Ｒｅｌｎ（例えば、ＮＮ＿Ｒｅｌｎ１，ＮＮ＿Ｒｅｌｎ２からなど）の自己結合を含む。
【００６０】
選択された列リストは、以下の２つの部分を有する。（ｉ）ＮＮ＿Ｒｅｌｎ１．ＩＤ，ＮＮ＿Ｒｅｌｎ２．ＩＤ，ＮＮ＿Ｒｅｌｎ１．ＮＧ，ＮＮ＿Ｒｅｌｎ２．ＮＧ、および（ｉｉ）２とＫとの間にあるｊに対して、ＮＮ＿Ｒｅｌｎ１．ＩＤのｊ最近隣の集合がＮＮ＿Ｒｅｌｎ２．ＩＤのｊ最近隣の集合に等しい場合、１を返すｃａｓｅ文。このクエリは、標準的なＳＱＬを用いて表現され、およびデータベースサーバでの計算のすべてを実行することができることに留意されたい。
【００６１】
２１６では、ＦＤＤＥシステム１００は、リレーションを最小数の妥当な重複のグループに分割する。結果の妥当な重複のグループは、以下の各基準を満たす。 
・  ｜Ｇi｜≦Ｋ
・  Ｇiはコンパクト集合である
・  ＧiはＳＮ（ＡＧＧ，ｃ）のグループである。
【００６２】
ブロック２１６の一環として、ＦＤＤＥシステム１００は、タプルの対の近隣の集合間の均等をタプルの集合に拡張し、および近隣の集合がコンパクトであって、かつＳＮ基準を満たすかどうかを決定する。表２では、タプルの対（１０，５０）、（１０，１００）および（１０，１５０）の４近隣の集合は、等しく、したがって、サイズ４のコンパクト集合を形成する。集合｛１０，５０，１００，１５０｝を、（ｉ）このグループの総計のＳＮの値が閾値ｃより小さいこと、および（ｉｉ）このグループがより大きなコンパクトのＳＮのグループに拡張することができないことを与えられた、重複のグループとして出力することができる。集合の均等は推移的であるので、対（５０，１００）、（５０，１５０）などの４近隣の集合が等しいかどうかに関する明示的な検査はない。
【００６３】
【表２】
2006072985.tif 000004
【００６４】
ＦＤＤＥシステム１００は、以下のＣＳのグループのクエリを発行することによって、ＣＳの対のリレーション（ブロック２１４の出力）を処理する。すなわち、「ＩＤによってＣＳの対の順序から*を選択」して、タプルｖとｖの近隣ｖ’との間のすべての近隣の集合の比較した結果をグループにする。ただし、ｖ．ＩＤ＜ｖ’．ＩＤである。ＣＳのグループのクエリの結果において、各ＳＮのコンパクト集合Ｇを、Ｇ内の最小ＩＤを有するタプルのもとでいっしょにグループにするであろうことに留意されたい。
【００６５】
ＦＤＤＥシステム１００は、ＣＳのグループのクエリ結果内のタプルの各グループＱ［ＩＤ＝ｖ］（同一のＩＤで識別される）を処理する。タプルのグループＱ［ＩＤ＝ｖ］に対して、ｖがＳＮのコンパクト集合に属するとして既に識別されていない場合、システムは、ｖが属すことのできる（１より大きいサイズの）自明でない最大のＳＮのコンパクト集合Ｇｖを決定する。この集合を、単にグループＱ［ＩＤ＝ｖ］から識別することができる。システムは、集合Ｇｖを出力し、およびコンパクト集合への割当てを示すために、Ｇｖの各タプルを選び出す。例えば、タプル１０に対する集合は、｛１０，５０，１００，１５０｝である。集合｛１０，５０，１００，１５０｝が出力され、および再び処理されないように、妥当なＳＮのコンパクト集合に属するとして、タプルの識別子１０、５０、１００、１５０を選び出す。
【００６６】
２１８では、ＦＤＤＥシステム１００は、余分な重複のタプルを削除することによって、データベース１７０にクリーンアップを行う。ただし、こうした重複のタプルの識別は、ブロック２１６の結果に基づく。
【００６７】
（他の実装の詳細）
例示的あいまいな重複の検出器によって提供されるあいまいな重複の削除の問題へのソリューションは、既存の従来技術の手法よりも、より正確およびより効率的である。このソリューションは、距離関数の尺度がタプルの局所的な構造的な特性に強い影響を与えるよう尺度に関し不変である。このソリューションは、重複のグループのタプル間の距離の縮小、および限られた方法においてグループをわたるタプル間の距離の拡大によってのみ、分割を変更することができるという点で、分割／結合に関し不変である。このソリューションは、重複の削除の関数の範囲によって実際に有用であろう、グループにすることのすべてを行うような、制約の多い豊かさを有する。
【００６８】
少なくとも１つの実装では、ユーザは、離散的な近傍の閾値ｃを指定しなければならない。しかし、この計算は、自動的に行うことができ、または閾値ｃの計算においてユーザに援助をすることができる。
【００６９】
（例示的コンピューティングシステムおよび環境）
図３に、本明細書で説明する、例示的あいまいな重複の検出器を（全体か部分的にか）実装することができる適切なコンピューティング環境３００の一例を例示する。コンピューティング環境３００を、本明細書で説明するコンピュータおよびネットワークアーキテクチャにおいて使用することができる。
【００７０】
例示的コンピューティング環境３００は、コンピューティング環境の一例にすぎず、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲に関する制限を示唆する意図はない。コンピューティング環境３００は、例示的コンピューティング環境３００内に例示される構成要素のいずれか１つまたは組合せに関するいずれかの依存関係または要件を有すると解釈すべきでない。
【００７１】
例示的あいまいな重複の検出器を、複数の他の汎用または専用のコンピューティングシステム環境または構成において実装することができる。使用に適することができよう周知のコンピューティングシステム、環境および／または構成の例には、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、携帯情報端末（ＰＤＡ）、アプライアンス、専用の電子機器（ＤＶＤプレーヤなど）、プログラム可能な家庭要電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
【００７２】
例示的あいまいな重複の検出器は、コンピュータによって実行されるプログラムモジュールなどのプロセッサ実行可能命令の一般的な文脈において説明することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。例示的あいまいな重複の検出器を、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境内で実践することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルとリモートとの両方のコンピュータ記憶媒体内に配置することができる。
【００７３】
コンピューティング環境３００には、コンピュータ３０２の形式の汎用コンピューティング装置を含む。コンピュータ３０２の構成要素には、限定はしないが、１つまたは複数のプロセッサまたは処理装置３０４、システムメモリ３０６、およびプロセッサ３０４を含む種々のシステム構成要素をシステムメモリ３０６に結合するシステムバス３０８を含む。
【００７４】
システムバス３０８は、メモリバスまたはメモリコントローラ、周辺バス、グラフィックスアクセラレータのポート、およびバスアーキテクチャの種類のいずれかを用いたプロセッサまたはローカルバスを含めて、バス構造のいくつかの種類のいずれかの１つまたは複数を表す。例として、こうしたアーキテクチャには、カードバス、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ：Personal Computer Memory Card International Association）、アクセラレイテッドグラフィックポート（ＡＧＰ：Ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、小型コンピュータシステムインターフェース（ＳＣＳＩ：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ユニバーサルシリアルバス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１３９４、ビデオ電子規格協会（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）のローカルバス、およびメザニンバスとも呼ばれる周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスを含むことができる。
【００７５】
コンピュータ３０２には、通常、プロセッサ読取可能な媒体の種類を含む。こうした媒体を、コンピュータ３０２によってアクセス可能であり、および揮発性と不揮発性との両方の、取り外し可能と固定との両方の媒体を含む、あらゆる使用可能な媒体とすることができ。
【００７６】
システムメモリ３０６には、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３１０などの揮発性および／または読出し専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）３１２などの不揮発性の形式のコンピュータ読取可能な媒体を含む。起動中などにコンピュータ３０２内の要素間で情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）３１４は、ＲＯＭ３１２に格納される。ＲＡＭ３１０は、通常、処理装置３０４によって即時的にアクセス可能および／または現在、動作を受けるデータおよび／またはプログラムモジュールを含む。
【００７７】
コンピュータ３０２には、他の取外し可能／固定の、揮発性／不揮発性のコンピュータ記憶媒体をも含むことができる。例として、図３に、固定の不揮発性の磁気媒体（図示せず）に対する読み出しおよび書き込みを行うためのハードディスクドライブ３１６、取外し可能な不揮発性の磁気ディスク３２０（例えば、「フロッピー（登録商標）ディスク」など）に対する読み出しおよび書き込みを行うための磁気ディスクドライブ３１８、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性の光ディスク３２４に対する読み出しおよび／または書き込みを行うための光ディスクドライブ３２２を例示する。ハードディスクドライブ３１６、磁気ディスクドライブ３１８および光ディスクドライブ３２２は、各々、１つまたは複数のデータメディアインターフェース３２５によってシステムバス３０８に接続される。あるいはまた、ハードディスクドライブ３１６、磁気ディスクドライブ３１８および光ディスクドライブ３２２を、１つまたは複数のインターフェース（図示せず）によってシステムバス３０８に接続することができる。
【００７８】
ディスクドライブおよびディスクドライブに関連付けられたプロセッサ読取可能な媒体によって、コンピュータ読取り可能命令、データ構造体、プログラムモジュール、およびコンピュータ３０２のための他のデータの不揮発性の記憶装置を提供する。例には、ハードディスク３１６、取外し可能磁気ディスク３２０、および取外し可能光ディスク３２４を例示するが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）または他の光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、電気的消去可能なプログラム可能な読出し専用メモリ（ＥＥＰＲＯＭ：ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）など、コンピュータによってアクセス可能なデータを格納することができる他の種類のプロセッサ読取可能な媒体を使用して、例示的コンピューティングシステムおよび環境を実装することもできることを理解されたい。
【００７９】
あらゆる数のプログラムモジュールを、例えば、オペレーティングシステム３２６、１つまたは複数のアプリケーションプログラム３２８、他のプログラムモジュール３３０およびプログラムデータ３３２を含む、ハードディスク３１６、磁気ディスク３２０、光ディスク３２４、ＲＯＭ３１２および／またはＲＡＭ３１０上に格納することができる。
【００８０】
ユーザは、キーボード３３４、ポインティング装置３３６（例えば、「マウス」）などの入力装置によって、コンピュータ３０２にコマンドおよび情報を入力することができる。他の入力装置３３８（具体的には図示せず）には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、シリアルポート、スキャナおよび／またはなどを含むことができる。これらのおよび他の入力装置を、システムバス３０８に結合された入出力インターフェース３４０によって処理装置３０４に接続するが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続することもできる。
【００８１】
モニタ３４２または他の種類の表示装置もまた、ビデオアダプタ３４４などのインターフェースをよってシステムバス３０８に接続することができる。他の出力周辺装置には、モニタ３４２に加えて、入出力インターフェース３４０によってコンピュータ３０２に接続することができる、スピーカ（図示せず）およびプリンタ３４６など構成要素を含むことができる。
【００８２】
コンピュータ３０２は、リモートコンピューティング装置３４８などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。例として、リモートコンピューティング装置３４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の一般的なネットワークノードなどとすることができる。リモートコンピューティング装置３４８を、コンピュータ３０２に関して、本明細書で説明する要素および特徴の多くまたはすべてを含むことができるポータブルコンピュータとして例示する。
【００８３】
コンピュータ３０２とリモートコンピュータ３４８との間の論理接続を、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）３５０、および一般的な広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）３５２として表す。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットでは一般的である。こうしたネットワーク環境は、有線または無線とすることができる。
【００８４】
ＬＡＮのネットワーキング環境で実装する場合、コンピュータ３０２は、ネットワークインターフェースまたはアダプタ３５４を介してローカルネットワーク３５０に接続される。ＷＡＮのネットワーキング環境で実装する場合、コンピュータ３０２には、通常、モデム３５６、または広域ネットワーク３５２上での通信を確立する他の手段を含む。コンピュータ３０２の内部または外部とすることができるモデム３５６を、入出力インターフェース３４０または他の適切な機構を介してシステムバス３０８に接続することができる。例示のネットワーク接続は例示的であり、コンピュータ３０２と３４８との間の通信リンクを確立する他の手段を使用することができることを理解されたい。
【００８５】
コンピューティング環境３００で例示したようなネットワーク化された環境では、コンピュータ３０２またはその一部に関して表したプログラムモジュールを、リモートのメモリ記憶装置に格納することができる。例として、リモートのアプリケーションプログラム３５８は、リモートコンピュータ３４８のメモリ装置に属する。例示する目的のために、本明細書では、アプリケーションプログラム、およびオペレーティングシステムなどの他の実行可能なプログラムの構成要素を、別個のブロックとして例示するが、こうしたプログラムおよび構成要素は、種々の時点で、コンピューティング装置３０２の異なる記憶装置の構成要素内に属し、およびコンピュータのデータプロセッサによって実行されることが理解されよう。
【００８６】
（プロセッサ実行可能な命令）
例示的あいまいな重複の検出器の実装は、１つまたは複数のコンピュータまたは他の装置によって実行される、プログラムモジュールなどのプロセッサ実行可能な命令の一般的な文脈で説明することができる。プログラムモジュールには、一般に、特定のタスクを実行または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。プログラムモジュールの機能は、通常、種々の実装において所望のとおりに組み合わせまたは分散させることができる。
【００８７】
（例示的オペレーティング環境）
図３に、例示的あいまいな重複の検出器を実装することができる適切なオペレーティング環境３００の一例を例示する。具体的には、本明細書で説明する例示的あいまいな重複の検出器を、図３のあらゆるプログラムモジュール３２８〜３３０および／もしくはオペレーティングシステム３２６、またはその一部によって（全体または部分的に）実装することができる。
【００８８】
オペレーティング環境は、適切なオペレーティング環境の一例にすぎず、本明細書で説明する例示的あいまいな重複の検出器の使用または機能の範囲に関する制限を示唆することを意図しない。使用に適した他の周知のコンピューティングシステム、環境および／または構成には、限定はしないが、パーソナルコンピュータ（ＰＣ：ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、プログラム可能な家庭用電化製品、無線電話および装置、汎用および専用のアプライアンス、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
【００８９】
（プロセッサ読取可能な媒体）
例示的あいまいな重複の検出器の一実装を、何らかの形式のプロセッサ読取可能な媒体に対して格納するまたは送信することができる。プロセッサ読取可能な媒体は、コンピュータによってアクセスすることができるあらゆる使用可能な媒体とすることができる。例として、プロセッサ読取可能な媒体には、限定はしないが、「コンピュータ記憶媒体」および「通信媒体」を含むことができる。
【００９０】
「コンピュータ記憶媒体」には、コンピュータ読取可能な命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性および不揮発性、取外し可能および固定の媒体を含む。コンピュータ記憶媒体には、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または所望の情報を格納するために使用することができ、およびコンピュータによってアクセスすることができるあらゆる他の媒体が含まれる。
【００９１】
「通信媒体」には、通常、プロセッサ読取可能な命令、データ構造体、プログラムモジュール、または搬送波や他の転送機構などの変調されたデータ信号内の他のデータを含む。通信媒体は、あらゆる情報伝達媒体をも含む。
【００９２】
用語の「変調されたデータ信号」は、信号内の情報をエンコードする方法でその特性の１つまたは複数が設定されまたは変更された信号を意味する。例として、通信媒体には、限定はしないが、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含むことができる。上述のいずれの組合せもまた、プロセッサ読取可能な媒体の範囲内に含まれる。
【００９３】
（結論）
上述の１つまたは複数の実装について、構造上の特徴および／または手順のステップに特有の言語で説明したが、説明した具体的な特徴またはステップなしに、他の実装が実践されることがあることを理解されたい。むしろ、具体的な特徴およびステップを、好ましい形式の１つまたは複数の実装として開示する。
【図面の簡単な説明】
【００９４】
【図１】本明細書で説明する実装のブロック図である。
【図２】本明細書で説明する手順の実装を示すフロー図である。
【図３】本明細書で説明する少なくとも１つの実施形態を（全体または部分的に）実装するのに適したコンピューティング・オペレーティング環境の一例の図である。
【符号の説明】
【００９５】
３０４  処理装置
３０６  システムメモリ
３０８  システムバス
３２５  データメディアインターフェース
３２６  オペレーティングシステム
３２８  アプリケーションプログラム
３３０  プログラムモジュール
３３２  プログラムデータ
３３４  キーボード
３３６  マウス
３３８  他の装置
３４０  Ｉ／Ｏインターフェース
３４２  モニタ
３４４  ビデオアダプタ
３４６  プリンタ
３４８  リモートコンピューティング装置
３５２  インターネット
３５４  ネットワークアダプタ
３５６  モデム
３５８  リモートアプリケーションプログラム
【図１】
2006072985.tif 000005
【図２】
2006072985.tif 000006
【図３】
2006072985.tif 000007