【文献】
山田 祥寛,データベースはじめの一歩 基礎の基礎からよくわかる,DB Magazine,日本,株式会社翔泳社,2008年11月 1日,第18巻,第7号,p.60−65
(58)【調査した分野】(Int.Cl.,DB名)
前記第1の情報は、少なくとも、完全マッチングを必要とする前記比較データの中の1つ以上の項目によって形成される組み合わせと、前記組み合わせがハッシングアルゴリズムまたは暗号化アルゴリズムによって処理された後の前記組み合わせの値とを含み、
前記第2の情報は、前記比較データの中の一部分が圧縮アルゴリズムによって処理された後に、類似度マッチングを必要とする、少なくとも前記一部分の値を含む、
請求項1に記載の方法。
前記反復データベースの中の前記データは、完全マッチングのための第1の情報と、類似度マッチングのための第2の情報とを含み、前記第1の情報および前記第2の情報は、キー値ペアの形態で前記反復データベースの中に記憶される、請求項1に記載の方法。
反復データベースの中のデータのデータ構造と同一または実質的に同一となるように、比較データのデータ構造を処理する、処理モジュールであって、前記反復データベースは、データベースの中のデータが事前設定されたデータ構造に従って処理された後に内部メモリマッピングによって形成され、前記処理された比較データは、完全マッチングのための第1の情報と、類似度マッチングのための第2の情報とを含む、処理モジュールと、
前記比較データを前記反復データベースの中の前記データと比較して、前記比較データの前記第1の情報が、前記反復データベースの中の前記データの第1の情報と同一または実質的に同一であり、かつ前記比較データの前記第2の情報と前記反復データの中の前記データの第2の情報との間の類似度が、閾値よりも高い場合、前記比較データが反復データであると判定する、比較モジュールと、
前記比較データが反復データではないという結果に応答して、前記データベースの中に前記比較データを記憶する、書き込みモジュールと、
を備える、装置。
前記比較データは、1つ以上の画像を含み、前記比較モジュールは、前記比較データの前記第1の情報が、前記反復データベースの中の前記データの第1の情報と同一または実質的に同一であり、前記比較データの前記第2の情報と前記反復データの中の前記データの第2の情報との間の類似度が、閾値よりも高いと判定した後に、前記比較データの中の1つ以上の画像のサイズと前記反復データベースの中の前記データの中の1つ以上の画像のサイズとの間の関係に従って、前記比較データと前記反復データベースの中の前記データとの間の関係の形態を判定し、前記比較データと前記反復データベースの中の前記データとの間の前記関係の形態は、
前記比較データが、前記反復データベースの中の前記データと同一である、
前記比較データが、前記反復データベースの中の前記データを含有する、
前記反復データベースの中の前記データが、前記比較データを含有する、
のうちの1つを含む、
請求項10に記載の装置。
前記第1の情報は、少なくとも、完全マッチングを必要とする前記比較データの中の1つ以上の項目によって形成される組み合わせと、前記組み合わせがハッシングアルゴリズムまたは暗号化アルゴリズムによって処理された後の前記組み合わせの値とを含み、
前記第2の情報は、前記比較データの中の一部分が圧縮アルゴリズムによって処理された後に、類似度マッチングを必要とする、少なくとも前記一部分の値を含む、
請求項10に記載の装置。
前記反復データベースの中の前記データは、完全マッチングのための第1の情報と、類似度マッチングのための第2の情報とを含み、前記第1の情報および前記第2の情報は、キー値ペアの形態で前記反復データベースの中に記憶される、請求項10に記載の装置。
前記比較データは、1つ以上の画像を含み、前記比較モジュールは、前記比較データの前記第1の情報が、前記反復データベースの中の前記データの第1の情報と同一または実質的に同一であり、かつ前記比較データの前記第2の情報と前記反復データの中の前記データの第2の情報との間の類似度が、閾値よりも高い場合、前記比較データの中の1つ以上の画像のサイズと前記反復データベースの中の前記データの中の1つ以上の画像のサイズとの間の関係に従って、前記比較データと前記反復データベースの中の前記データとの間の関係の形態を判定し、前記比較データと前記反復データベースの中の前記データとの間の前記関係の形態は、
前記比較データが、前記反復データベースの中の前記データと同一である、
前記比較データが、前記反復データベースの中の前記データを含有する、
前記反復データベースの中の前記データが、前記比較データを含有する、
のうちの1つを含む、
請求項16に記載のシステム。
【背景技術】
【0003】
ウェブサイトに関して、データ反復は不可避である。例えば、反復製品情報が、電子商取引サイトに出現する。現在の技術は、概して、データ反復を削除するために3つのステップを使用する。(説明の便宜上、それが反復データであるかどうかを判定することを必要とする情報はAと見なされ、Aと比較される、記憶システムから抽出される情報はBと見なされる。)
【0004】
システムは、データ抽出論理を行う。このステップは、データ記憶システムからの比較に必要とされるデータを抽出するために使用される。膨大なデータに関して、データセットのサイズが、システム全体の動作効率を直接決定することになる。このステップでは、線形待ち行列方法が、概して、使用される。言い換えれば、次の情報が処理される前に、第1の情報が処理される。以下の方法は、Bにフィルタをかけるために使用される。
【0005】
第1の方法では、データベースまたは他のデータソースにクエリを行うことによって、Bの中の各情報がAと比較される。第1の方法は、Bにフィルタをかけない。
【0006】
第2の方法では、Aと明白な共通点があるBの中の情報のみ(例えば、同一発行者から送信された情報またはAと同じ業界に属するBの中の情報)が、クエリ条件を制限する1つ以上の事前設定条件に基づいて、比較のためにフィルタにかけられる。
【0007】
反復製品情報を削除することの以下の実施例(他の反復情報が同様に削除されてもよい)が、上記の第2の方法を例証するために使用される。
図1は、現在の技術下で反復製品情報を削除するデータ抽出の方法例のフローチャートを図示する。
図1に示されるように、本プロセスは、以下のステップを含む。102では、要素分布情報が読み取られる。104では、情報が業界に従って1つずつ読み取られる。106では、情報が順序に従って抽出される。108では、情報が反復データであるかどうかが判定される。情報が反復データではない場合、動作106が行われる。情報が反復データである場合、動作110が行われる。110では、反復データが削除される。
【0008】
動作108は、Aが反復データであるかどうかを判定する。本動作は、情報が類似するかどうかを判定するアルゴリズムを使用する。異なるアルゴリズムは、システムの処理分解能の精度および効率に直接影響を及ぼし得る。現在の技術は、通常、以下の方法を使用する。
【0009】
第1の方法は、Aの中の全てのデータのBとの完全比較を行う。第2の方法は、AおよびBの中の選択された主要データの完全比較を行う。第3の方法は、類似度を比較し、AおよびBの中のデータ間の類似度に従って、AおよびBが同一であるかどうかを判定する。例えば、説明文のある部分が、類似度比較中に比較されてもよい。
【0010】
現在の技術における上記の処理方法は、比較的少量のデータにより適している。膨大なデータに関しては、上記の処理方法の効率は、より低くなる。例えば、反復性を削除する現在の技術のアルゴリズム効率は、O(n)であり、nは、データの量を表し、O(n)は、アルゴリズムの実行時間を表す。O(n)およびnは、直線関係または指数関数関係さえも有する。関数関係にかかわらず、O(n)の値は、nの値が増加するにつれて増加する。したがって、nが極めて大きいとき、O(n)の複雑性を伴ってアルゴリズムを行うサーバの過負荷をもたらし、したがって、時宜を得た方式で反復データを処理することができない。したがって、情報検証速度が、新しい情報の配信速度についていくことができない。
【0011】
現在の技術では、上記の問題は、サーバ負荷を低減させるようにデータセット(すなわち、n値)を低減させることによって解決される。例えば、データは、情報発行者の業界に従って1つずつ読み取られてもよい。データセット全体が、ある程度まで圧縮されるが(すなわち、値n)、アルゴリズム効率は、O(n(n−1)/2)と見なされ得る。情報発行者が多くの情報(例えば、膨大なデータ)を有するとき、アルゴリズム効率は依然として低い。したがって、この問題を解決するために、現在の技術は、データ反復を除去するための要件を満たすように、ハードウェア容量を増加させる必要があり得る。場合によっては、ハードウェア入力の依存のみでは、満足できる結果に達しない場合がある。そのようなアプローチも、将来の拡張の要件を満たすことができず、サーバリソースを無駄にし、それにより、全体的な低効率を生じるため、問題を有する。
【発明を実施するための形態】
【0028】
本開示の発明を実施するための形態が、図を参照して以下で説明される。矛盾がない限り、例示的実施形態および例示的実施形態の特徴例は、組み合わせて相互に使用されてもよいことに留意されたい。
【0029】
反復データを処理する方法は、反復データを処理するために指定されているサーバ、サーバのグループ、またはサーバ内で他の共通機能性を果たす他のモジュールと連結されたモジュールを通して、適用されてもよい。
【0030】
例示的実施形態では、データ比較のためのデータベース例は、内部メモリデータベース(以降では反復データベースと呼ばれる)方法の形態を使用する。例示的実施形態は、キーおよび値のペアに基づいて、内部メモリデータベースを使用してもよいが、それに限定されない。以下の例示的実施形態は、例証目的で、キーおよび値のペアに基づいて内部メモリデータベースを使用してもよい。現在の技術は、項目ごとの比較を実行して反復データを処理するために、データベースからデータを直接読み取って抽出する方法を使用する。
【0031】
以下の例示的実施形態は、現在の技術よりも高い処理効率を可能にする反復データベースとして、内部メモリデータベースを使用する。例えば、評価方法としてアルゴリズム複雑性O(n)を使用すると、内部データベースの処理速度が速いため、nの値は、O(n)に大きく影響を及ぼさない。したがって、現在の技術と比較して、以下の例示的実施形態は、サーバのより少ないリソースを使用しながら、サーバの内部性能を向上させ、より大量のデータ処理を完了する。言い換えれば、同一の処理効率に基づいて、以下の例示的実施形態は、現在の技術と比較して、サーバのより少ないリソースを使用する。サーバの同一のリソースに基づいて、以下の例示的実施形態は、現在の技術よりも高い処理効率を有する。加えて、例示的実施形態が処理のために内部メモリデータベースを使用すると、本開示下の拡張も、現在の技術下の拡張より比較的容易である。
【0032】
図2は、本開示による、反復データを処理する方法例のフローチャートを図示する。
【0033】
202では、比較データ(すなわち、検証されるデータ、チェックされるデータ、または処理されるデータとも呼ばれる、比較されるデータ)のデータ構造が、反復データベースの中のデータのデータ構造と同一または実質的に同一となるように処理される。反復データベースは、データベースの中のデータが事前設定されたデータ構造に従って処理された後に、内部メモリマッピングによって形成される。反復データベースの中のデータのデータ構造は、データベースの中のデータ構造と同一であり得る、事前設定されたデータ構造と同一であってもよい。しかしながら、これは、反復データベースの中の比較的大量のデータをもたらし得る。代替として、反復データベースの中のデータのデータ構造は、データベースの中のデータのデータ構造と同一ではなくてもよい。例えば、反復データベースの中のデータは、データが処理された、部分的に圧迫された後等のデータベースからのデータの内部メモリマッピングであってもよい。そのような処理は、多くの抽出および集中タスクと同等であり、それは、データベースの中のデータの量を削減するだけでなく、データ比較のためのより良好なデータ構造も提供する。
【0034】
204では、処理された比較データは、それが反復データであるかどうかを判定するように、反復データベースの中のデータと比較される。
【0035】
206では、比較データが反復データではない場合、比較データは、データベースに書き込まれる。
【0036】
上記の動作は、内部メモリマッピングを通したデータベースの項目ごとのクエリを回避するだけでなく、反復データがソースから削除されるように、情報がデータベースに入力される前にも反復を削除する。
【0037】
例示的実施形態では、反復データベースのデータ構造は、内部メモリマッピングである。さらに、同一のデータについては、反復データベースは、前処理後のデータベースの中のデータのコピーである(例えば、比較されるコアおよび必要部分が保持される)。したがって、反復データベースのサイズは、元のデータベースのサイズよりはるかに小さい。
【0038】
比較データが反復データであるかどうかを判定するために204で使用される比較方法に関して、完全比較方法等の現在の比較方法が使用されてもよい。たとえ現在の比較方法が使用されても、内部メモリデータベースが動作で使用されるため、本開示の技法は、現在の技術よりも高い効率を達成し得る。
【0039】
別の例示的実施形態では、本開示は、完全比較および類似度比較を組み合わせる比較方法を提供する。そのような比較方法は、比較精度および効率の両方を考慮する。比較方法は、以下で詳細に説明される。
【0040】
比較データは、第1の情報および第2の情報に処理されてもよい。第1の情報は、完全マッチングに使用され、第2の情報は、類似度マッチングに使用される。第1の情報が最初に比較されてもよい。比較データの第1の情報が、反復データベースの中の第1の情報に完全に合致するとき、第2の情報が比較される。比較データの第2の情報と反復データベースの中のデータの第2の情報との間の類似度が閾値を超える場合、比較データは反復データであると判定される。第1の情報は、タイトル、キーワード、発行者のID等の、重要度値が閾値よりも高い、比較的重要な情報であってもよい。この比較的重要な情報については、情報の中の1つの項目または項目の組み合わせが比較されてもよい。したがって、精度マッチングの程度が、柔軟に制御されてもよい。比較する情報が多いほど、精度の割合が高くなるであろうということが明白である。第2の情報は、製品マニュアル、製品説明等の、データ量が閾値よりも高い、比較的大量のデータを伴う情報であってもよい。大量のデータが、概して、正確には同一ではないが、しばしば類似するため、第2の情報の類似度比較が行われてもよい。
【0041】
完全マッチング比較に関して、項目ごとの比較方法を使用することによって、比較を必要とする部分が比較されてもよい。例えば、タイトルおよび発行者が比較される必要がある場合、タイトルが最初に比較されてもよい。タイトルが同一である場合、発行者が合致について比較されてもよい。この比較方法は容易に実現されるが、その効率は、やや低い。この例示的実施形態は、以下のように別の処理方法を提供する。
【0042】
完全マッチングを必要とするデータの部分に関して、データの部分の中の1つ以上の項目が、最初に組み合わせに形成され、次いで、組み合わせが、値を取得するようにハッシングまたは暗号化アルゴリズムによって処理される。次いで、この値は、比較を実行するために使用される。この種類の方法を使用することによって、比較を必要とするデータのいくつかの部分がある場合、それらを一度に比較することができる。例えば、128ビット値を達成するために完全マッチングを必要とするデータの部分の中の1つ以上の項目によって形成される組み合わせを計算するために、メッセージダイジェストアルゴリズム5(MD5)が使用されてもよい。セキュアハッシュアルゴリズム(SHA)等のいくつかの他の計算アルゴリズムが、代替として使用されてもよい。反復データベースは、完全マッチングを必要とするデータの部分、データの部分の中の1つ以上の項目の組み合わせ、あるいはハッシングまたは暗号化アルゴリズムによって処理された後の組み合わせの値を記憶してもよい。
【0043】
例えば、完全マッチングを必要とするデータの部分(またはテキスト)は、タイトルおよび発行者のIDである。タイトルおよび発行者のIDの組み合わせは、文字列を取得してもよい(例えば、sanfangmobileが製品名であり、mobie3が発行者のIDである、「sanfangmobile mobie3」)。次いで、文字列は、128ビット値を取得するためにMD5を使用して計算され、値は、比較に使用される。
【0044】
いくつかの大規模データベースでは、比較的多くのキー部分(またはテキスト)が存在し得る。融通性のために、完全マッチングを必要とする部分が、構成ファイル内で設定されてもよい。完全マッチングを必要とするキー部分(またはテキスト)は、構成ファイルが読み取られるたびに取得されてもよい。言い換えれば、組み合わせを形成する1つ以上の項目が、事前設定されてもよい。
【0045】
類似度マッチングに関して、類似度マッチングを必要とするデータの部分が比較的大きくあり得るため、キーワードを抽出する方法が使用されてもよい。例えば、異なるキーワードが、異なる行における異なる位置から抽出されてもよい。これらのキーワードが同一である(または類似度が100%である)か、または類似度が90%等の閾値よりも高い場合、データの部分は、反復データと見なされる。キーワードを抽出する方法は、比較的複雑であり得る。
【0046】
代替として、本開示は、類似度マッチングを必要とし、圧縮アルゴリズムによって処理されるデータの部分の値を比較する、別の方法を提供する。例えば、比較データの中の詳細な説明は、値を取得するように圧縮される。反復データベースの中の詳細な説明は、別の値を取得するように圧縮される。値は、例えば、圧縮後のデータのサイズであってもよい。2つの値が比較される。2つの値の間の類似度が閾値を超える場合、比較データは反復データとして判定される。例えば、Aは、圧縮後の比較データの中の詳細な説明のサイズであり、Bは、圧縮後の反復データベースの中の詳細な説明のサイズである。閾値は、例えば、(A−B)/A
*100%が1%未満であるかどうかであってもよい。閾値が1%未満である場合、比較データの中の部分は反復データとして判定される。
【0047】
上記の完全マッチング方法および類似度マッチング方法は、個別に、または組み合わせて適用されてもよい。これら2つの方法のうちの1つの適用は、より高い精度および向上した比較効率をもたらし得、組み合わせた2つの方法の適用は、さらに良好な結果を生じさせ得る。
【0048】
上記の類似度マッチング方法および完全マッチング方法は、文字だけでなく、画像にも適用されてもよい。例えば、画像は、比較のためにバイナリデータに変換されてもよい。比較データの第1の情報が、反復データベースの中のデータの第1の情報と同一または実質的に同一であり、比較データの第2の情報と反復データの中のデータの第2の情報との間の類似度が、閾値よりも高いとき、比較データの中の1つ以上の画像のサイズと反復データベースの中のデータの中の1つ以上の画像のサイズとの間の関係に基づいて、比較データと反復データとの間の関係の形態が判定される。比較データと反復データとの間の関係の形態は、比較データが、反復データベースの中のデータと同一である、比較データが、反復データベースの中のデータを含有する、または反復データベースの中のデータが、比較データを含有する等のうちの1つを含んでもよい。
【0049】
完全マッチングおよび類似度マッチングの結果をより正確にするために、比較データのデータ構造が、反復データベースの中のデータのデータ構造と同一となるように処理される前に、比較データが前処理されてもよい。前処理は、大文字および小文字変換、全角および半角変換、特殊文字フィルタリング、頭音標語置換、無意味語置換、キーワード抽出、およびHTMLタグの除去等のうちの少なくとも1つを含んでもよい。上記の前処理動作のうちの1つ以上が行われてもよい。実行される前処理動作が多いほど、比較データが反復データであるかどうかを判定することが容易である。
【0050】
大量のデータがあるとき、いくつかのサーバが反復データを処理するために使用されてもよい。例えば、負荷平衡機能を伴う非同期情報システムによって、比較データが伝送されてもよい。いくつかのサーバがあるとき、各サーバの負荷の状態または比較データのIDに従って、1つのサーバが選択されてもよい。(概して、各比較データは、数値IDを有する。比較データが数値IDを持たない場合、比較データを識別するために順序番号が使用されてもよい。例えば、比較データのIDまたは順序番号が3334である場合、3つのサーバがあれば、3を除算した後の3334の余りは1である。したがって、サーバ1が、比較データを処理するために使用される。)
【0051】
複数のサーバがあるとき、内部メモリデータベースに基づく分散データベースフレームワークが使用されてもよい。例示的実施形態は、内部メモリデータベースおよび分散データベースエージェントを統合することによって、内部メモリデータベース分散フレームワークを実装する。例えば、H2等の高性能内部メモリデータベースおよびAmoeba等の分散データベースエージェントを統合することができる。現在の技術下で、AmoebaをMysqlと統合することができる。Amoebaに関して、MysqlノードおよびH2ノード記憶は、記憶としての違いがない。したがって、現在の技術下のAmoebaおよびMysqlの統合を、AmoebaおよびH2の統合に置き換えることができる。AmoebaおよびH2の統合は、内部メモリデータベースに基づいて分散データベースフレームワークを実装するために使用することができる。
【0052】
本開示はまた、反復データを処理する装置も提供する。反復データを処理する装置は、本明細書で説明されるような方法例を実装するために使用される。簡潔にするために、すでに説明されているものの詳細は、本明細書で繰り返されない。「モジュール」という用語は、事前設定された機能を実装するソフトウェアおよび/またはハードウェアの組み合わせである。以下で説明される方法およびシステム例は、ソフトウェアの形態で実装されてもよいが、ハードウェア、あるいはハードウェアおよび/またはソフトウェアの組み合わせが実装に使用されてもよい。
【0053】
図3は、本開示による、反復データを処理する装置例300の略図を図示する。装置300は、1つ以上のプロセッサ302と、メモリ304とを含んでもよいが、それらに限定されない。メモリ304は、ランダムアクセスメモリ(RAM)等の揮発性メモリ、および/または読み出し専用メモリ(ROM)あるいはフラッシュRAM等の不揮発性メモリの形態で、コンピュータ記憶媒体を含んでもよい。メモリ304は、コンピュータ記憶媒体の実施例である。
【0054】
コンピュータ記憶媒体は、コンピュータが実行可能な命令、データ構造、プログラムモジュール、またはその他のデータ等の情報を記憶するために、任意の方法、または技術で実装される、揮発性、および不揮発性、着脱可能、および固定媒体を含む。コンピュータ記憶媒体の例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または演算処理装置によるアクセスのための情報を記憶することに使用できる任意の他の非伝送媒体を含むが、これらに限定されない。本明細書において定義される場合、コンピュータ記憶媒体は変調データ信号、および搬送波等の一過性の媒体を含まない。
【0055】
メモリ304は、その中にプログラムユニットまたはモジュールおよびプログラムデータを記憶してもよい。一実施形態では、モジュールは、処理モジュール306と、比較モジュール308と、書き込みモジュール310とを含んでもよい。したがって、これらのモジュールは、1つ以上のプロセッサ302によって実行することができるソフトウェアで実装されてもよい。他の実装では、モジュールは、ファームウェア、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。
【0056】
処理モジュール306は、反復データベースの中のデータのデータ構造と同一または実質的に同一となるように、比較データのデータ構造を処理する。反復データベースは、データベースの中のデータが事前設定されたデータ構造に従って処理された後に、内部メモリマッピングによって形成される。比較モジュール308は、処理モジュール306と接続され、比較データが反復データであるかどうかを判定するように、処理された比較データを反復データベースの中のデータと比較する。書き込みモジュール310は、比較モジュール308と接続される。比較データが反復データではないと判定された後、書き込みモジュール310は、比較データをデータベースに書き込む。
【0057】
1つの例示的実施形態では、処理された比較データが、完全マッチングのための第1の情報と、類似度マッチングのための第2の情報とを含むとき、比較データの第1の情報が、反復データベースの中のデータの第1の情報と同一であり、比較データの第2の情報と反復データベースの中のデータの第2の情報との間の類似度が、閾値よりも高い場合、比較モジュール308は、比較データを反復データとして判定する。
【0058】
別の例示的実施形態では、処理された比較データがまた、1つ以上の画像も含有するとき、比較モジュール308は、以下のように比較データが反復データであるかどうかを判定する。比較データの第1の情報が、反復データベースの中のデータの第1の情報と同一または実質的に同一であり、比較データの第2の情報と反復データの中のデータの第2の情報との間の類似度が、閾値よりも高いとき、比較モジュール308は、比較データの中の1つ以上の画像のサイズと反復データベースの中のデータの中の1つ以上の画像のサイズとの間の関係に基づいて、比較データと反復データとの間の関係の形態を判定する。例えば、制限なく、比較データと反復データとの間の関係の形態は、比較データが、反復データベースの中のデータと同一である、比較データが、反復データベースの中のデータを含有する、または反復データベースの中のデータが、比較データを含有する等のうちの1つを含む。比較データが反復データである形態はまた、他の表現を取ってもよい。
【0059】
図4は、本開示による、反復データを処理する別の装置例400の略図を図示する。装置400は、1つ以上のプロセッサ402と、メモリ404とを含んでもよいが、それらに限定されない。メモリ404は、ランダムアクセスメモリ(RAM)等の揮発性メモリ、および/または読み出し専用メモリ(ROM)あるいはフラッシュRAM等の不揮発性メモリの形態で、コンピュータ記憶媒体を含んでもよい。メモリ404は、コンピュータ記憶媒体の実施例である。
【0060】
メモリ404は、その中にプログラムユニットまたはモジュールおよびプログラムデータを記憶してもよい。一実施形態では、モジュールは、
図3に示されるような処理モジュール306、比較モジュール308、および書き込みモジュール310だけでなく、前処理モジュール405も含んでもよい。したがって、これらのモジュールは、1つ以上のプロセッサ402によって実行することができるソフトウェアで実装されてもよい。他の実装では、モジュールは、ファームウェア、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。
【0061】
前処理モジュール405は、処理モジュール306と接続される。前処理モジュール405は、比較データを前処理する。前処理例は、大文字および小文字変換、全角および半角変換、特殊文字フィルタリング、頭音標語置換、無意味語置換、キーワード抽出、およびHTMLタグの除去等のうちの少なくとも1つを含んでもよい。
【0062】
本開示はまた、反復データを処理するシステムも提供する。本システムは、反復データを処理する1つ以上の上記の装置と、配信デバイスとを含んでもよい。配信デバイスは、1つ以上の上記の装置の負荷に従って、比較データを1つ以上の上記の装置に送信する。
【0063】
上記の例示的実施形態では、製品情報の高速位置付けおよび前処理を実行する内部メモリマッピング方法(膨大なデータさえも1回限りの内部メモリマッピングのみを必要とする)、ならびに完全マッチングおよび類似度マッチングによって統合される比較方法が使用される。反復データは、ソースから削除され、それにより、情報がデータベースに入力される前に削除処理を実現し、効率を向上させ、不必要な妨害を除去し、マッチング精度を増加させる。これらの技術的結果の全ては、例示的実施形態の全てではなくいくつかで達成されてもよい。
【0064】
以下は、大規模電子商取引ウェブサイトにおける製品情報の削除処理の例示的実施形態である。以下の例示的実施形態は、実施例として製品情報を使用することに留意されたい。しかしながら、他の種類の情報のための削除処理もまた、以下の例示的実施形態における方法を使用してもよい。
【0065】
例示的実施形態は、反復データを高速検出および削除するシステムを提供する。反復データを高速検出および削除するシステムは、バックエンド検証システムのサブシステムである。比較される情報または比較データは、メッセージ待ち行列を通した処理のために、本システムに送信される。
図5は、本開示による、反復データを検出および削除するサブシステム例502の略図を図示する。反復データを検出および削除するサブシステム502は、情報削除モニタ504と、(上記の配信デバイスの機能を実現する)削除配信コンポーネント506と、nが任意の整数であり得る、1つ以上の削除モニタ508(1)、・・・、508(n)(削除機能を実装するサーバとして理解することもできる)と、データベース510とを含む。以下の説明は、製品情報の中の反復データを消去するプロセスを図示する
図5を参照することによって説明される。1つ以上の削除モニタ508は、削除論理を実施する1つ以上のサーバであってもよい。削除モニタ508の内部メモリが十分大きい場合、削除モニタ508はまた、内部メモリデータベースとしての機能を果たしてもよい。
【0066】
バックエンド情報検証モニタは、情報を検証することに関係する他の処理論理を実施する。次いで、検証情報は、メッセージ待ち行列510を通して情報削除モニタ504に送信される。削除配信コンポーネント506は、発行者のIDおよび/または各サーバの負荷に基づいて、検証情報を異なるメッセージ待ち行列に送信してもよい。例えば、削除モニタ508のうちのどれが検証情報を送信するかを判定するために、発行者のIDの最初の文字が使用されてもよい。負荷バランシング方法が、各サーバによる等しい処理量を確保するために使用されてもよい。
【0067】
mが任意の整数であり得る、512(1)、・・・、512(m)等の各メッセージ待ち行列は、削除モニタ508(1)、・・・、508(n)のうちの1つによって処理される。例えば、削除モニタ508(1)は、メッセージ待ち行列512(1)を受信してもよい。削除モニタ508(n)は、メッセージ待ち行列512(m)を受信してもよい。
【0068】
情報削除モニタ504、削除配信コンポーネント506、および1つ以上の削除モニタ508は、反復を削除する論理を実施する。反復を削除する論理は、前処理、反復を判定すること、反復を削除すること、および反復の削除の結果に応じてデータベースを更新するかどうかを判定することを含む。
【0069】
一実施例では、いったん反復情報が削除されると、反復削除ログ514が記録されるであろう。ログ問い合わせインターフェース516が、削除された情報について問い合わせるように提供されてもよい。反復削除ログ514はまた、統計レポート518を有するようにマイニングされてもよい。
【0070】
一実施例では、上記のシステムは、非同期情報システムであってもよい。本システムは、非同期および非ブロック情報伝送機構に基づいて、他のサブシステムとの弱連結を実現する。弱連結は、サブシステムとしての上記の削除システムが他のシステムに容易に接続され得ることを意味する、プラグイン方法をサポートしてもよい。上記の非同期および非ブロック情報伝送機構は、スループットおよび処理速度を向上させることができ、負荷バランシングとともに、大量スループット動作に好適である。情報削除モニタ504は、構成ファイル514に基づいて動作してもよい。
【0071】
以下は、製品情報の前処理例の例証である。前処理は、製品情報の比較の前に起こる。情報の中のテキストの前処理の実施例として、以下のモジュールのうちの少なくとも1つが、前処理を実装するために使用されてもよい。当然ながら、より多くまたは全てのモジュールが、より良好な結果を達成するために使用されてもよい。
【0072】
指定文字表から特殊文字にフィルタをかける(例えば、ダッシュ、I、←↑、ラテンアルファベット等)、特殊記号フィルタリングモジュール。
【0073】
類似形状、発音、または意味に従って文字を置換する(例えば、両方とも漢字であり、「xiang」、「Qian Ke」、および「kg」等の同一発音を有する、「像」および「相」)、頭音標語置換モジュール。
【0074】
単純および無意味文字(例えば、「of」等)を置換する、無意味語置換モジュール。
【0075】
文字表に従って、テキストから指定文字(コアキーワードとも呼ばれる)を抽出する、コアキーワード抽出モジュール。
【0076】
例えば、上記のモジュールの処理方法は、辞書方法に基づいてもよい。言い換えれば、モジュールは、それぞれの論理に基づいて、それぞれ処理規則に対応する辞書ファイルを維持してもよい。本システムが起動するとき、対応する辞書ファイルが内部メモリにロードされる。
【0077】
以下は、図を参照することによって、かつタイトル、詳細な説明、および属性等の情報のパラメータを使用することによって、情報の前処理を説明する。
【0078】
図6は、本開示による、タイトル前処理方法例のフローチャートを図示する。前処理600の前のタイトルは、以下の動作のうちの1つ以上を受けてもよい。
【0079】
602では、タイトルの中の文字が、全角から半角、および大文字から小文字に変換される。604では、タイトルの中の単純および無意味語が置換される。606では、タイトルの中の特殊文字がフィルタにかけられる。608では、タイトルの中の頭音標文字が置換される。前処理されたタイトル610が、取得される。
【0080】
図7は、本開示による、詳細説明前処理方法例のフローチャートを図示する。前処理700の前の詳細な説明は、以下の動作のうちの1つ以上を受けてもよい。
【0081】
702では、共通HTMLタグが除去される。いくつかの実施例では、画像タグが保持される。704では、詳細な説明の中の文字が、全角から半角、および大文字から小文字に変換される。706では、詳細な説明の中の特殊文字がフィルタにかけられる。708では、コアキーワードが、完全マッチングのために詳細な説明から抽出され、残りの部分が、類似度マッチングのために使用される。前処理された詳細な説明710が取得され、2つの部分に分割される。
【0082】
図8は、本開示による、製品の属性パラメータ前処理方法例のフローチャートを図示する。前処理800の前の製品の属性パラメータは、以下の動作のうちの1つ以上を受けてもよい。
【0083】
802では、属性の中の文字が、全角から半角、および大文字から小文字に変換される。804では、属性の中の特殊文字がフィルタにかけられる。806では、属性の中の頭音標文字が置換される。前処理された製品の属性パラメータ808が取得され、2つの部分に分割される。
【0084】
タイトル、詳細な説明、属性パラメータ、画像等の比較データの主要部分の前処理は、製品情報の中の多くの不必要な干渉を削除し、それにより、マッチング精度を大いに増加させてもよい。
【0085】
別の例示的実施形態では、本開示はまた、データベースによって直接循環クエリ比較を置換するために内部メモリマッピング方法を使用する、分散型バッファに基づいて、反復情報比較データベースも提供する。
図9は、分散型バッファならびにその入力および出力に基づく、反復情報比較データベース等の反復データベース例902の略図を図示する。以下は、反復データベース900を使用することによる、かつ
図9を参照することによる、膨大な製品情報を処理することの説明である。
【0086】
図9は、論理マップ構造、すなわち、内部メモリの中で維持されるキーおよび値のペアを図示する。構造は、キー904と、値906とを含む。
【0087】
一実施例では、キー904は、MD5(情報発行者ID+コアキーワード文字列+特殊属性+タイトル)と同等である。情報発行者ID、コアキーワード文字列、特殊属性、およびタイトルは、例証的実施例であり、いくつかの他のキー文字列またはキー文字列の組み合わせもまた、MD5機能に使用されてもよい。例えば、キー904は、コアキーワード部分に関係する。
【0088】
値906は、<情報ID、画像サイズリスト、前処理された詳細な説明>のリストに同等である。情報ID、画像サイズリスト、および前処理された詳細な説明は、限定のためではなく、例証的な実施例にすぎない。例えば、値906は、類似度マッチング部分912に関係する。
【0089】
キー904は、完全マッチングを必要とする製品情報の中の部分の統合から生じる、MD情報要約908を含む。キーワードが前処理されると、構造は、完全マッチングを容易かつ迅速に実現することが可能である。MD5文字列はまた、内部メモリの消費も削減する。
【0090】
キー904が合致した後、値906は、類似度アルゴリズムを使用することによって類似度マッチングに使用される。類似度が閾値よりも高い場合、比較データは反復情報として判定される。
【0091】
完全マッチングを必要とする比較データの中の部分は、実際の状況に基づいて判定されてもよい。例えば、いくつかの状況では、タイトルが同一である場合、比較データは反復情報として判定される。別の実施例について、いくつかの他の状況では、タイトルが同一であると判定された後に、比較データが反復データであるかどうかを判定するように、発行者のIDは、完全マッチングが行われる必要がある。したがって、実践では、完全マッチングを必要とする部分を事前定義するためにユーザに利用可能なインターフェースがあり得る。例えば、特殊規則構成ファイル914が、完全マッチングを必要とする部分を記録するために使用されてもよい。したがって、完全マッチングの異なる組み合わせが、異なる必要性に応じて柔軟に判定されてもよい。いくつかの実施例では、比較データ910が反復データベース902の中の反復データではないと判定された後に、データベース916の中に記憶されてもよい。いくつかの実施例では、比較データ910は、前処理918を受けてもよい。
【0092】
反復データベース902はまた、容量上限を制御するために、最長時間未使用アルゴリズム(LSU)等のアルゴリズムを使用してもよい。例えば、情報Bが、1ヶ月等の事前設定された時間閾値以上にわたって反復データベース902の中に記憶されており、合致していない場合、情報Bは、内部メモリのサイズを制御するように過多データベースから消去される。
【0093】
この例示的実施形態は、単一のサーバのクエリおよび容量ボトルネックを克服するため、かつ効率および精度の両方の考慮によって正確で迅速なマッチングおよび線形拡張を実現するために、分散型バッファシステム、MD5生成、ならびに完全マッチングおよび類似度マッチング方法の組み合わせを使用する。完全マッチングを必要とする部分は、システムの比較融通性および効率を実装する規則によって自己定義されてもよい。さらに、スループットを増加させるために、上記の非同期情報処理機構もまた、使用されてもよい。
【0094】
図10は、本開示による、反復を判定するための方法例のフローチャートである。以下は最初に、
図10および以降の図におけるいくつかの背景および用語を説明する。
【0095】
(1)比較情報Bは、システムに入り、前処理を受け、次いで、反復データベースの中の情報Aと比較される。
【0096】
(2)[M,N]は、処理結果を表し、Mは、情報がデータベースの中に記憶されており、Nは、情報が反復データベースの中に記憶されていることを表す。例えば、[A,A]は、Aが、処理後に、データベースおよび反復データベースの中に依然として存在する一方で、Bは消去され、データベースまたは反復データベースの中にもはや存在しないことを表す。
【0097】
(3)〜Aは、システムの現在の時間として情報Aの検証経過時間を更新することを表す。
【0098】
(4)A.MD5は、AのMD5値(例えば、発行者ID+コアキーワード文字列+特殊属性+タイトル)を表す。
【0099】
(5)A.Pic1は、情報Aの中の第1の画像のサイズを表す。A.PicSetは、第1の画像を除外した情報Aの中の全ての画像の一式のサイズを表す。
【0100】
(6)Similar(A,B)は、AおよびBが類似するかどうかを判定する関数を表す。1つの関数例は、zip(A+B)/zip(A)+zip(A+B)/zip(B)<2.1等の閾値によって表され、式中、zip(A)は、zip圧縮後のAの中の詳細な説明のサイズを表す。Zipは、圧縮アルゴリズムの一実施例にすぎない。いくつかの他の圧縮アルゴリズムもまた、使用されてもよい。
【0101】
(7)AおよびBが交差することは、AおよびBが反復類似情報ではないことを表す。A==Bは、AおよびBが反復類似情報であることを表す。AがBを含むことは、AがBのコンテンツを含むことを表す。BがAを含むことは、BがAのコンテンツを含むことを表す。
【0102】
(8)NEW/MODは、新情報の保留中検証/修正された情報の保留中検証といった、情報の状態を表す。APP/PUBは、バックエンド検証システムによって承認された情報/ネットワークですでに発行された情報といった、情報の別の状態を表す。TBD/DEL/EXPは、バックエンド検証システムによって承認されていない情報/バックエンド検証システムによって消去された情報/期限切れのオンライン情報といった、情報の別の状態を表す。
【0103】
図10は、以下の動作を示す。1002では、A.MD5がB.MD5と同一であるかどうかが判定される。結果が肯定的である場合、AおよびBは、1004で交差する。そうでなければ、1006での動作が行われる。
【0104】
1006では、zip(A+B)/zip(A)+zip(A+B)/zip(B)<閾値(例えば、2.1)であるかどうか等の、AがBに類似するかどうかが判定される。AおよびBが類似しない場合、AおよびBは交差する。そうでなければ、1008での動作が行われる。
【0105】
1008では、Aの第1の画像のサイズがBの第1の画像のサイズに等しいかどうかが判定される。それらが等しくない、すなわち、A.Pic1!=B.Pic1である場合、AおよびBは交差する。そうでなければ、1010での動作が行われる。
【0106】
1010では、第1の画像を除外したAの全ての画像の一式のサイズが、第1の画像を除外したBの全ての画像の一式のサイズに等しいかどうかが判定される。それらが同一である、すなわち、A.PicSet.equals(B.PicSet)である場合、1012でA==Bである。第1の画像を除外したAの全ての画像の一式のサイズが、第1の画像を除外したBの全ての画像の一式のサイズを含む、すなわち、A.PicSet.contains(B.PicSet)である場合、1014でAがBを含む。第1の画像を除外したBの全ての画像の一式のサイズが、1の画像を除外したAの全ての画像の一式のサイズを含む、すなわち、B.PicSet.contains(A.PicSet)である場合、1016でBがAを含む。
【0107】
反復データベースのサイズを制御する動作が、プロセスに追加されてもよい。例えば、それは、Bのタイムスタンプと現在の時間との間の差が閾値よりも長いかどうかを判定してもよい。結果が肯定的である場合、Bが、Bの情報IDに従って反復データベースを通して検索され、反復データベースから消去される。この動作の実施時間は、制限されなくてもよい。例えば、動作は、サーバの負荷が閾値よりも低いときに行われてもよい。
【0108】
上記の反復処理は、以下の擬似コードによって表されてもよい。
a)IF A.MD5!=B.MD5=>A and B intersect
b)ELSEIF!Similar(A,B)=>A and B intersect
c)ELSEIF A.Pic1!=B.Pic1=>A and B intersect
d)ELSEIF A.PicSet.equals(B.PicSet)=>A==B
e)ELSEIF A.PicSet.contains(B.PicSet)=>A includes B
f)ELSEIF B.PicSet.contains(A.PicSet)=>B includes A
g)ELSE A and B intersect
【0109】
図11は、本開示による、AがBを含むときの反復処理方法例のフローチャートを図示する。1102では、AがBを含む。1104では、AがNEW/MODであるかどうかが判定される。結果が肯定的である場合には、1106で、Aがデータベースおよび反復データベースの両方の中で保持されることを表す[A,A]である。そうでなければ、1104での動作が行われる。
【0110】
1108では、AがAPP/PUBであるかどうかが判定される。結果が肯定的である場合には、1110で、Aの検証経過時間がデータベースの中の現在のシステム時間に更新され、Aが反復データベースの中で保持されることを表す、[〜A,A]である。そうでなければ、1106での動作が行われる。
【0111】
1112では、AがTBD/DEL/EXPであるかどうかが判定される。結果が肯定的である場合には、1114で、Aがデータベースの中で保持され、Bの検証経過時間がデータベースの中の現在のシステム時間に更新され、Bが反復データベースの中で保持されることを表す、[A〜B,B]である。
【0112】
上記の動作は、必ずしも1102から1106の順序に従って行われなくてもよい。動作は、同一の結果を達成するように、他の順序に従って行われてもよい。1102から1106の順序は、例証のためのものにすぎない。
【0113】
図12は、本開示による、A==Bであるときの反復処理方法例のフローチャートを図示する。
図12は、
図10における動作に続く動作を図示する。1202では、A==Bである。
【0114】
1204では、AがNEW/MODであるかどうかが判定される。結果が肯定的である場合には、1206で[B,B]である。そうでなければ、1204での動作が行われる。
【0115】
1208では、AがAPP/PUBであるかどうかが判定される。結果が肯定的である場合には、1210で[〜A,A]である。そうでなければ、1206での動作が行われる。
【0116】
1212では、AがTBD/DEL/EXPであるかどうかが判定される。結果が肯定的である場合には、1214で、AおよびBが、データベースの中で保持され、Bはまた、反復データベースの中でも保持されることを表す、[AB,B]である。
【0117】
上記の動作は、必ずしも1202から1206の順序に従って行われなくてもよい。動作は、同一の結果を達成するように、他の順序に従って行われてもよい。1202から1206の順序は、例証のためのものにすぎない。
【0118】
図10および11で示されるように、AがBを含み、A==Bであるときの状況を除いて、AおよびBが交差することが判定される。上記の反復処理は、以下の擬似コードによって表されてもよい。
a)IF A includes B
i.IF A is NEW/MOD=>[A,A]
ii.ELSEIF A is APP/PUB=>[〜A,A]
iii.ELSE A is TBD/DEL/EXP=>[A〜B,B]
b)ELSEIF A==B
i.IF A is NEW/MOD=>[B,B]
ii.ELSE IF A is APP/PUB=>[〜A,A]
iii.ELSE A is TBD/DEL/EXP=>[AB,B]
c)ELSE A and B intersect=>[AB,AB]
【0119】
別の実施形態では、本開示はまた、上記の例示的実施形態で説明される技法を実装する反復データ処理ソフトウェアも提供する。
【0120】
別の実施形態では、本開示はまた、コンピュータ記憶媒体も提供する。コンピュータ記憶媒体は、上記の反復データ処理ソフトウェアを記憶し、DVD、CD−ROM、ハードドライブ、書き込み可能記憶デバイス等の形態であってもよいが、それらに限定されない。
【0121】
当業者は、本開示の実施形態が、方法、システム、またはコンピュータプログラミング製品であってもよいことを理解すべきである。したがって、本開示は、ハードウェア、ソフトウェア、または両者の組み合わせによって実装され得る。さらに、本開示は、コンピュータが実行可能な記憶媒体(ディスク、CD−ROM、光ディスク等を含むが、これらに限定されない)に実装され得る、コンピュータが実行可能なコードを含む1つ以上のコンピュータプログラムの形式であってもよい。
【0122】
当業者であれば、本明細書で説明されるモジュールまたは動作が、単一の演算処理装置の中にある、またはネットワークにおける複数の演算処理装置の間で分散された、汎用演算処理装置によって実施されてもよいことを理解するべきである。随意に、それらは、1つ以上のプロセッサによって処理されるか、または異なる回路モジュールの中へ製造される、コンピュータ記憶媒体であってもよい。代替として、いかなるモジュールまたは動作も、1つの回路モジュールに組み込まれなくてもよく、またはより多くのモジュールまたは動作が組み込まれてもよい。本開示は、ハードウェアおよび/またはソフトウェアのいかなる特定の組み合わせも限定しない。
【0123】
本開示は、本開示の実施形態の方法、装置(システム)、およびコンピュータプログラムのフローチャート、および/またはブロック図を参照して説明される。フローチャートおよび/またはブロック図の、各フローおよび/またはブロック、ならびにフローおよび/またはブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることを理解されたい。コンピュータ、または他のプログラム可能なデータプロセッサによって動作される命令を通して、フローチャートの1つ以上のフロー、および/またはブロック図の1つ以上のブロックを実装している装置が生成され得るように、これらのコンピュータプログラム命令は、マシンを生成するために、一般的なコンピュータ、特定のコンピュータ、内蔵プロセッサ、または他のプログラム可能なデータプロセッサに提供されてもよい。
【0124】
コンピュータ、または他のプログラム可能なデータプロセッサが、コンピュータによって実装される、プロセスを生成するための一連の動作ステップを実行し得るように、これらのコンピュータプログラム命令はまた、コンピュータ、または他のプログラム可能なデータプロセッサに読み込まれてもよい。これにより、コンピュータ、または他のプログラム可能なデータプロセッサで実行される命令は、フローチャートの1つ以上のフローおよび/またはブロック図の1つ以上のブロックに特定される機能を実装するステップを提供し得る。
【0125】
これらの実施形態は、本開示を説明するに過ぎず、本開示の範囲を限定するものではない。当業者には、本開示の原則から逸脱することなく、若干の変更、および改良が行われてもよく、また本開示の範囲内にあると見なされるべきであることを理解されたい。