JP6708043B2 - データ検索プログラム、データ検索方法およびデータ検索装置 - Google Patents

データ検索プログラム、データ検索方法およびデータ検索装置 Download PDF

Info

Publication number
JP6708043B2
JP6708043B2 JP2016148562A JP2016148562A JP6708043B2 JP 6708043 B2 JP6708043 B2 JP 6708043B2 JP 2016148562 A JP2016148562 A JP 2016148562A JP 2016148562 A JP2016148562 A JP 2016148562A JP 6708043 B2 JP6708043 B2 JP 6708043B2
Authority
JP
Japan
Prior art keywords
cluster
distance
data
target data
input query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016148562A
Other languages
English (en)
Other versions
JP2018018330A (ja
Inventor
樋口 大輔
大輔 樋口
雅樹 西垣
雅樹 西垣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016148562A priority Critical patent/JP6708043B2/ja
Priority to US15/631,200 priority patent/US20180032579A1/en
Publication of JP2018018330A publication Critical patent/JP2018018330A/ja
Application granted granted Critical
Publication of JP6708043B2 publication Critical patent/JP6708043B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/231Hierarchical techniques, i.e. dividing or merging pattern sets so as to obtain a dendrogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ検索プログラム等に関する。
近年、画像検索や音声検索など、データベース内の膨大な非構造データからクエリと似ているデータを検索して出力する類似検索処理がある。類似検索処理では、1)被検索対象データが膨大であること、2)データが日々増加すること、3)個々のデータの容量が大きいこと等があり処理時間が大きくなる。このため、類似検索処理を高速化することが求められている。
類似検索処理を高速化する従来技術の一例について説明する。図13は、従来技術1を説明するための図である。例えば、従来技術1では、クラスタリングを実行することで複数のデータを複数のクラスタ1〜8に分類する。従来技術1は、クエリの位置10と、クラスタ1〜8の範囲とを比較し、クエリを含むクラスタを判定する。従来技術1は、判定したクラスタに含まれるデータに対して、クエリを用いた類似検索処理を実行する。図13に示す例では、クエリを含むクラスタがクラスタ5となるため、従来技術1は、クラスタ5に含まれるデータを対象として、類似検索処理を実行する。
しかし、従来技術1で説明したように、検索対象を一つのクラスタに限定すると、本来類似しているデータが除外され、類似検索の精度が劣化する場合がある。これに対して、従来技術2が存在する。
図14は、従来技術2を説明するための図である。従来技術2では、クエリの位置10を中心とした範囲10aと重複するクラスタを判定する。従来技術2は、判定したクラスタに含まれるデータに対して、クエリを用いた類似検索処理を実行する。図14に示す例では、範囲10aと重複するクラスタは、クラスタ5,6,8となるため、従来技術2は、クラスタ5,6,8に含まれるデータを対象として、類似検索処理を実行する。
特開2009−294855号公報 米国特許出願公開第2016/0001998号明細書 特開2014−146207号公報 特表2007−521565号公報 特開2004−86538号公報 米国特許出願公開第2005/0171972号明細書
しかしながら、上述した従来技術では、計算コストを抑えて、クエリの検索対象を適切に設定することができないという問題がある。
例えば、上述した従来技術2では、従来技術1と比較して類似検索の精度を向上させることができるが、クラスタ単位で類似検索の対象となるデータが増加するため、計算コストが増加する。
1つの側面では、本発明は、クラスタの一部分のデータを、ビットベクトル化により軽減された距離演算に基づき切り出し、検索対象に含めることができるデータ検索プログラム、データ検索方法およびデータ検索装置を提供することを目的とする。
第1の案では、コンピュータに下記の処理を実行させる。コンピュータは、ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、入力クエリに最も近い第1のクラスタを特定する。コンピュータは、入力クエリの位置から第1のクラスタの中心までの距離を示す第1の距離を用いて、入力クエリとの距離が第1の距離以内となる対象データを含む第1のクラスタとは異なる他のクラスタを特定する。コンピュータは、他のクラスタに属し、かつ、入力クエリからの距離が第1の距離以内となる対象データ、または、他のクラスタに属し、かつ、他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出する。コンピュータは、第1のクラスタに属する対象データ、および、他のクラスタから抽出した対象データを対象に、入力クエリに対し類似する対象データを検索する。
クラスタの一部分のデータを、ビットベクトル化により軽減された距離演算に基づき切り出し、検索対象に含めることができる。
図1は、本実施例に係るデータ検索装置の処理の一例を説明するための図である。 図2は、本実施例に係るデータ検索装置の一例を示す図である。 図3は、被検索データ管理テーブルのデータ構造の一例を示す図である。 図4は、圧縮関数管理テーブルのデータ構造の一例を示す図である。 図5は、クラスタ管理テーブルのデータ構造の一例を示す図である。 図6は、データ分布管理テーブルのデータ構造の一例を示す図である。 図7は、ソートテーブルのデータ構造の一例を示す図である。 図8は、各種変数の一例を示す図である。 図9は、データ検索装置の処理手順を示すフローチャート(1)である。 図10は、データ検索装置の処理手順を示すフローチャート(2)である。 図11は、本実施例に係るデータ検索装置の期待値の一例を示す図である。 図12は、コンピュータのハードウェア構成の一例を示す図である。 図13は、従来技術1を説明するための図である。 図14は、従来技術2を説明するための図である。
以下に、本願の開示するデータ検索プログラム、データ検索方法およびデータ検索装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係るデータ検索装置は、被検索データを予めクラスタリングしておき、クエリデータに属するクラスタだけでなく、クエリデータの近傍にあるクラスタを求める。以下の説明では、クエリデータに属するクラスタを第1クラスタと表記する。またクエリデータの近傍にある第1クラスタ以外のクラスタを近傍クラスタと表記する。
データ検索装置は、第1クラスタに属する被検索データだけでなく、近傍クラスタに属する被検索データに対してもクエリデータに類似する類似検索処理を実行する。ここで、データ検索装置は、近傍クラスタに属する被検索データについては、クエリデータの近傍に属する可能性が高いかどうかを判定し、可能性の高い被検索データのみに対して、類似検索処理を実行する。
例えば、データ検索装置は、近傍クラスタ内の被検索データと、この近傍クラスタの中心との距離を利用する。データ検索装置は、かかる距離が、クエリデータおよび第1クラスタから求めた閾値より大きい場合に、該当する被検索データが、クエリデータの近傍に存在する可能性が高いと判定する。
図1は、本実施例に係るデータ検索装置の処理の一例を説明するための図である。図1に示す例では、複数の被検索データが、クラスタC〜Cに分類されているものとする。また、クエリデータの位置を位置10とする。第1クラスタをクラスタCとする。近傍クラスタを、クラスタC,Cとする。また、近傍クラスタとなるクラスタC,Cのうち、領域6a,8aに含まれる被検索データを、クエリデータの近傍に存在する可能性が高いと判定したものとする。この場合には、データ検索装置は、クラスタCに属する被検索データと、領域6a,8aに属する被検索データに対して、類似検索処理を実行する。上記のように、第1クラスタに加えて、近傍クラスタに属する被検索データに対して、類似検索処理を実行する場合に、クエリデータの近傍に存在する可能性が高い近傍クラスタの一部の被検索データに対してのみ、類似検索を実行する。従って、クエリの検索対象を適切に設定することができる。
なお、近傍クラスタ内の全ての被検索データに対して、クラスタ中心との距離を計算し、クエリデータの近傍に存在する可能性が高いか否かを判定すると、計算コストが大きくなってしまう場合がある。
このため、本実施例に係るデータ検索装置は、被検索データの特徴量を0と1とで表現するビットベクトルに圧縮して、計算コストを削減する。データ検索装置は、全ての被検索データを、ビットベクトルに圧縮した状態で保持しておき、各距離計算はビットベクトルを用いて行う。ビットベクトルに圧縮することにより、被検索データとクラスタ中心との距離が離散値に丸められ、複数の被検索データとクラスタ中心との距離が同一の値を取ることになる。このため、例えば、一部の被検索データのみに対して、クエリデータの近傍に存在する可能性が高いか否かを判定するだけで良いことになり、より少ない計算コストで、上記の類似検索を実行することができる。
図2は、本実施例に係るデータ検索装置の一例を示す図である。図2に示すように、このデータ検索装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
通信部110は、ネットワークを介して図示しない他の外部装置とデータ通信を実行する処理部である。通信部110は、NIC(Network Interface Card)等の通信装置に対応する。
入力部120は、各種の情報をデータ検索装置100に入力するための入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイやタッチパネル等に対応する。
記憶部140は、被検索データ管理テーブル140a、圧縮関数管理テーブル140b、クラスタ管理テーブル140c、データ分布管理テーブル140dを有する。記憶部140は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
被検索データ管理テーブル140aは、被検索データに関する各種の情報を保持するテーブルである。図3は、被検索データ管理テーブルのデータ構造の一例を示す図である。図3に示すように、この被検索データ管理テーブル140aは、データID(identification)、ビットベクトル、クラスタID、被検索データを対応付ける。データIDは、被検索データを一意に識別する情報である。ビットベクトルは、被検索データから抽出した特徴量をビットベクトル化したものである。クラスタIDは、被検索データの属するクラスタを一意に識別する情報である。
圧縮関数管理テーブル140bは、被検索データの特徴量をビットベクトルに圧縮する場合に用いる圧縮関数の各パラメータを格納するテーブルである。図4は、圧縮関数管理テーブルのデータ構造の一例を示す図である。図4に示すように、圧縮関数管理テーブル140bは、圧縮関数の第1パラメータ、第2パラメータを有する。図4では一例として、第1,2パラメータを示すが、その他のパラメータが、圧縮関数管理テーブル140bに格納されていても良い。
クラスタ管理テーブル140cは、被検索データが分類されるクラスタに関する各種の情報を保持するテーブルである。図5は、クラスタ管理テーブルのデータ構造の一例を示す図である。図5に示すように、クラスタ管理テーブル140cは、クラスタID、クラスタ中心、クラスタ半径を対応付ける。クラスタIDは、クラスタを一意に識別する情報である。クラスタ中心は、クラスタの中心位置をビットベクトルに圧縮した情報である。クラスタ半径は、クラスタの半径を示すものである。
データ分布管理テーブル140dは、クラスタとクラスタに属する被検索データとの関係に関する情報を保持するテーブルである。図6は、データ分布管理テーブルのデータ構造の一例を示す図である。図6に示すように、このデータ分布管理テーブル140dは、クラスタID、データID、中心距離を対応付ける。クラスタIDは、クラスタを一意に識別する情報である。データIDは、データを一意に識別する情報である。中心距離は、クラスタの中心と被検索データとの距離を示す情報である。
図2の説明に戻る。制御部150は、登録部150a、圧縮部150b、クラスタリング部150c、第1特定部150d、第2特定部150e、抽出部150f、検索部150gを有する。制御部150は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部150は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
登録部150aは、登録対象となる被検索データを受け付けた場合に、受け付けた被検索データを、被検索データ管理テーブル140aに登録する処理部である。例えば、登録部150は、登録対象となる被検索データを、ネットワーク上の外部装置から通信部110を介して受け付けても良いし、入力部120から受け付けても良い。
登録部150aは、被検索データにユニークなデータIDを割り当て、データIDと被検索データとを対応付けて、被検索データ管理テーブル140aに登録する。
圧縮部150bは、被検索データ管理テーブル140aに登録された各被検索データの特徴量を圧縮したビットベクトルを算出する処理部である。例えば、圧縮部150bは、各被検索データから特徴量を抽出し、特徴量を圧縮関数に代入することで、特徴量をビットベクトルに圧縮する。圧縮部150bは、圧縮関数のパラメータとして、圧縮関数管理テーブル140bに登録されている第1パラメータ、第2パラメータ等を利用する。圧縮部150bは、特徴量のビットベクトルを、被検索データ管理テーブル140aに登録する。
被検索データの特徴量はどのような特徴量であっても良い。例えば、被検索データが画像情報である場合には、特徴量は、画像の色、輝度、輪郭、固有値、固有ベクトル、写っている物体の形状、物体の数等である。被検索データが音情報である場合には、特徴量は、周波数スペクトル、音量等である。
なお、圧縮部150bは、各被検索データから特徴量を抽出し、抽出した特徴量を用いて、圧縮関数の第1パラメータおよび第2パラメータを特定する。圧縮部150bは、特定した第1パラメータおよび第2パラメータの情報を、圧縮関数管理テーブル140bに登録する。
上述した圧縮部150bがビットベクトルを算出する処理は一例であり、他の周知技術により、ビットベクトルを算出しても良い。例えば、特開2015−170217号公報に記載された技術を用いて、ビットベクトルを算出しても良い。
クラスタリング部150cは、被検索データ管理テーブル140aに登録された各被検索データをクラスタリングする処理部である。クラスタリング部150cは、最短距離法等の階層的手法またはk-means法等の非階層的手法により、各被検索データを、各クラスタに分類する。クラスタリング部150cは、クラスタとこのクラスタに属する被検索データとの関係に基づき、被検索データ管理テーブル140aにおいて、データIDに対応するクラスタIDを登録する。
クラスタリング部150cは、クラスタ毎に、クラスタ中心と、クラスタ半径とを求める。クラスタリング部150cは、クラスタID、クラスタ中心、クラスタ半径を対応付けて、クラスタ管理テーブル140cに登録する。
クラスタリング部150cは、被検索データ管理テーブル140aに登録された全ての被検索データについて、被検索データと、この被検索データの属するクラスタのクラスタ中心との中心距離を算出する。クラスタリング部150cは、算出結果を基にして、クラスタID、データID、中心距離を、データ分布管理テーブル140dに登録する。
ところで、クラスタリング部150cや、後述する第1特定部150d、第2特定部150e、抽出部150f、検索部150gが、ビットベクトルを用いて距離を計算する場合には、ハミング距離を用いる。
ビットベクトルは、図3、図5等で示したように、0または1で構成されたベクトルである。二つのビットベクトル間の距離は、ハミング距離により計算することができる。ハミング距離とは、二つの2進数の排他的論理和をとり、立っているビットの数を足し合わせた値である。ハミング距離が小さいほど、二つのビットベクトルは距離が近く、類似したデータであると言える。例えば、ビットベクトル[000110110]と[110110110]とのハミング距離は、2となる。
本実施例では、データxとデータyのハミング距離dをハミング距離出力関数hamming_distance(x,y)を用いて、式(1)のように表記する。
Figure 0006708043
第1特定部150dは、クラスタリング部150cによりクラスタリングされた複数のクラスタのうち、クエリデータに最も近い第1クラスタを特定する処理部である。第1特定部150dは、通信部110または入力部120を介して、クエリデータを取得する。
ここで、クエリデータをx、i番目のクラスタをC、i番目のクラスタの中心をcとすると、クエリデータとi番目のクラスタの中心との距離d(x)を式(2)によって算出することができる。
Figure 0006708043
第1特定部150dは、クラスタ管理テーブル140cを参照し、式(2)に基づいて、クラスタ毎に距離d(x)を算出し、距離d(x)が最小となるクラスタを、第1クラスタとして特定する。第1クラスタC1STと、クエリデータ間の距離dminは、式(3)、式(4)により定義される。第1特定部150dは、第1クラスタのクラスタIDを、抽出部150fに出力する。また、第1特定部150dは、距離dminと、各クラスタの距離d(x)の情報を、第2特定部150eに出力する。
Figure 0006708043
Figure 0006708043
第2特定部150eは、距離dminを用いて、第1クラスタ以外のクラスタから、近傍クラスタを特定する処理部である。以下において、第2特定部150eの処理の一例について説明する。第2特定部150eは、近傍閾値θと各クラスタのクラスタ半径Rに基づいて、近傍クラスタを求める。第2特定部150eは、クラスタ半径Rの情報を、クラスタ管理テーブル140cから取得する。
ここで、近傍閾値は、各クラスタが第1クラスタの近傍に存在しているかを表すものであり、各クラスタによって値が異なる。クラスタの近傍閾値の値が小さいほど、そのクラスタは第1クラスタの近傍に存在していると言える。反対に、クラスタの近傍閾値の値が大きいほど、そのクラスタは第1クラスタの遠くに存在していると言える。
第2特定部150eは、クラスタCの近傍閾値θを式(5)に基づき算出する。
Figure 0006708043
第2特定部150eは、近傍閾値θの値が、クラスタ半径Rよりも小さい場合には、クラスタCを近傍クラスタとして特定する。すなわち、第2特定部150eは、下記の条件を満たすi番目のクラスタCを近傍クラスタとして特定する。第2特定部150eは、近傍クラスタのクラスタIDを、抽出部150fに出力する。
>θ・・・(条件)
抽出部150fは、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、被検索データ管理テーブル140aから抽出する処理部である。
また、抽出部150fは、第1特定部150dから取得した、第1クラスタのクラスタIDを基にして、第1クラスタに属する被検索データを被検索データ管理テーブル140aから抽出する。抽出部150fは、第1クラスタに属する被検索データを、検索部150gに出力する。
続いて、抽出部150fが、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、被検索データ管理テーブル140aから抽出する処理の一例について説明する。以下の説明では適宜、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データを、近傍データと表記する。抽出部150fは、近傍データを検索部150gに出力する。
抽出部150fは、近傍クラスタCに属するj番目の被検索データyijと近傍クラスタの中心cとの距離が、近傍閾値θ以上となる場合に、被検索データyijを近傍データとして抽出する。すなわち、抽出部150fは、式(6)を満たす被検索データyijを近傍データとして抽出することを意味する。
Figure 0006708043
ここで、抽出部150fは、近傍クラスタ内の全ての被検索データに対して、近傍データであるか否かを判定する処理を行うと、計算コストが増加する場合がある。このため、抽出部150fは、次に説明する方法を用いて、近傍データを抽出することで、計算コストを減少させることができる。
本実施例に係るデータ検索装置100は、被検索データの特徴量をビットベクトルに圧縮しているため、被検索データとクラスタ中心との距離hamming_distance(yij,ci)が離散値に丸められている。従って、抽出部150fは、ある被検索データが近傍データであるか否かを判定した後に、同一の距離をもつ被検索データに対しては、既に行った判定結果を流用することで、判定回数を削減することができる。
例えば、抽出部150fは、近傍クラスタについて、被検索データとクラスタ中心との距離hamming_distance(yij,ci)の値で降順にソートしたソートテーブルを生成する。図7は、ソートテーブルのデータ構造の一例を示す図である。図7に示すように、ソートテーブルは、クラスタIDと、データIDと、中心距離とを対応付ける。ここでは一例として、近傍クラスタのクラスタIDを、Cとする。
例えば、近傍閾値θを「9」とすると、抽出部150fは、中心距離が小さいものから順に、大小比較を行うことなく、一致判定を行うことで、近傍閾値θ「9」と一致する中心距離のレコードを特定する。図7に示す例では、抽出部は、データID「d131」のレコードを特定する。抽出部150fは、特定したレコードおよび特定したレコードよりも上方に位置するレコードのデータIDを、近傍データとして抽出する。抽出部150fは、他の近傍クラスタについても、同様の処理を実行することで、計算量を削減して、近傍データを抽出することができる。
検索部150gは、クエリデータに類似する被検索データを検索する処理部である。検索部150gは、抽出部150fから、第1クラスタに属する被検索データと、近傍データとを取得する。上記のように、近傍データは、抽出部150fにより判定された、近傍クラスタに属する被検索データのうち、クエリデータと比較する被検索データである。
検索部150gは、通信部110または入力部120を介してクエリデータを受け付ける。検索部150gは、圧縮部150bと同様にして、クエリデータの特徴量を圧縮関数により圧縮することで、クエリデータのビットベクトルを求める。
検索部150gは、クエリデータと、各被検索データとを比較し、クエリデータと被検索データとの距離を計算する。検索部150gは、クエリデータとの距離が小さいものから順に、被検索データを出力する。なお、検索部150gは、クエリデータとの距離が小さいものから順に、被検索データをソートし、上位の一部の被検索データを、検索結果として出力しても良い。
続いて、上述した各種変数の図に組み込み示す。図8は、各種変数の一例を示す図である。図8に示す例では、クラスタC〜Cの中心と、クエリデータxとの距離d(x)〜d(x)のうち、距離d(x)を最小とすると、クラスタCが、第1クラスタとなり、距離d(x)がdminとなる。
クラスタCは、近傍閾値θの値が、クラスタ半径Rよりも小さいため、近傍クラスタとなる。クラスタCは、近傍閾値θの値が、クラスタ半径Rよりも大きいため、近傍クラスタとならない。
検索部150gは、クラスタCに属する被検索データと、クラスタCに属する近傍データとを対象として、クエリデータxとの比較を行う。クラスタCに属する近傍データは、クラスタCに属する被検索データのうち、クラスタCの中心距離が、近傍閾値θ以上となる被検索データである。
次に、本実施例に係るデータ検索装置100の処理手順について説明する。図9は、データ検索装置の処理手順を示すフローチャート(1)である。図9に示すように、データ検索装置100の登録部150aは、被検索データ管理テーブル140aに初期の被検索データを登録する(ステップS101)。
データ検索装置100の圧縮部150bは、圧縮関数を生成する(ステップS102)。圧縮部150bは、圧縮関数を基にして、被検索データの特徴量をビットベクトルに圧縮し、被検索データ管理テーブル140aに登録する(ステップS103)。
データ検索装置100のクラスタリング部150cは、クラスタリングを実行する(ステップS104)。クラスタリング部150cは、各クラスタの中心と半径をクラスタ管理テーブル140cに登録する(ステップS105)。
クラスタリング部150cは、全ての被検索データに対し、被検索データの属するクラスタ中心と被検索データとの中心距離を求める(ステップS106)。クラスタリング部150cは、データ分布管理テーブル140dに、クラスタIDとデータIDと、中心距離とを格納する(ステップS107)。
図10は、データ検索装置の処理手順を示すフローチャート(2)である。図10に示すように、データ検索装置100の検索部150gは、クエリデータxを受け付け(ステップS201)、クエリデータxの特徴量を圧縮する(ステップS202)。
データ検索装置100は、ステップS200AからS200Bまでの処理を、iの値を1からIまで変化させつつ繰り返し実行する。Iは所定の値である。データ検索装置100の第1特定部150dは、クエリデータxと各クラスタ中心cとの距離dを計算する(ステップS203)。
第1特定部150dは、距離dが最小となる第1クラスタCminを特定する(ステップS204)。データ検索装置100の抽出部150fは、第1クラスタCminに属する全ての被検索データを抽出する(ステップS205)。
データ検索装置100は、ステップS200CからS200Dまでの処理を、iの値を1からI(minを除く)まで変化させつつ繰り返し実行する。データ検索装置100の第2特定部150eは、クラスタCの近傍閾値θを算出する(ステップS206)。
第2特定部150eは、R>θとなるか否かを判定する(ステップS207)。第2特定部150eは、R>θとならない場合には(ステップS207,No)、ステップS200Cに移行する。一方、第2特定部150eは、R>θとなる場合には(ステップS207,Yes)、ステップS208に移行する。
抽出部150fは、被検索データyとクラスタ中心cとの距離がθ以上となる被検索データを抽出する(ステップS208)。検索部150gは、クエリデータxと、抽出した各被検索データとの距離を計算する(ステップS209)。検索部150gは、距離の小さい被検索データから順に出力する(ステップS210)。
次に、本実施例に係るデータ検索装置100の効果について説明する。データ検索装置100は、クエリデータに最も近い第1クラスタに加えて、近傍クラスタに属する被検索データに対して、類似検索処理を実行する。データ検索装置100は、近傍クラスタの被検索データに対して類似検索処理を実行する場合に、クエリデータの近傍に存在する可能性が高い近傍クラスタの一部の被検索データに対してのみ、類似検索を実行する。従って、クエリの検索対象を適切に設定することができる。また、クエリデータの近傍に存在する可能性が低い近傍クラスタの被検索データに対する類似検索処理を実行しないため、計算コストを削減することもできる。
また、データ検索装置100によれば、ある被検索データが近傍データであるか否かを判定した後に、同一の距離をもつ被検索データに対しては、既に行った判定結果を流用するため、判定回数を削減し、計算コストを更に削減することができる。
続いて、従来技術によりクエリデータと比較される被検索データの数と、本実施例にかかるデータ検索装置100によりクエリデータと比較される被検索データの数との比較を行う。図11は、本実施例に係るデータ検索装置の期待値の一例を示す図である。
例えば、クラスタを2次元の円と仮定すると、面積(πr)内にそのクラスタの全ての被検索データが属している。近傍閾値は、クラスタの状態やクエリデータによって異なるが、平均としてクラスタ半径の半分(r/2)であると考えることができる。従って、取り除くことのできる面積は1/4πrとなるため、クラスタ1つあたり、約四分の一の数の被検索データを削減することができる。削減できる量は、次元数によって異なるため、図11において、3次元の場合と、d次元の場合について示す。
2次元の場合には、従来技術では、取得する被検索データ数は「πr」となり、削減量は「π(r/2)」となる。本特許により取得する被検索データ数は「πr−π(r/2)」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「1:3/4」となる。
3次元の場合には、従来技術では、取得する被検索データ数は「4/3πr」となり、削減量は「4/3π(r/2)」となる。本特許により取得する被検索データ数は「4/3πr−4/3π(r/2)」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「1:7/8」となる。
d次元の場合には、従来技術では、取得する被検索データ数は「mπr」となり、削減量は「mπ(r/2)」となる。本特許により取得する被検索データ数は「mπr−mπ(r/2)」となる。従来技術による被検索データ数と、本特許の被検索データ数との比は「1:(r−1)/r」となる。mを定数とする。
次に、上記実施例に示したデータ検索装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図12は、コンピュータのハードウェア構成の一例を示す図である。
図12に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、前処理プログラム207a、第1特定プログラム207b、第2特定プログラム207c、抽出プログラム207d、検索プログラム207eを有する。CPU201は、前処理プログラム207a、第1特定プログラム207b、第2特定プログラム207c、抽出プログラム207d、検索プログラム207eを読み出してRAM206に展開する。
前処理プログラム207aは、前処理プロセス206aとして機能する。第1特定プログラム207bは、第1特定プロセス206bとして機能する。第2特定プログラム207cは、第2特定プロセス206cとして機能する。抽出プログラム207dは、抽出プロセス206dとして機能する。検索プログラム207eは、検索プロセス206eとして機能する。
例えば、前処理プロセス206aの処理は、登録部150a、圧縮部150b、クラスタリング部150cの処理に対応する。第1特定プロセス206bの処理は、第1特定部150dの処理に対応する。第2特定プロセス206cの処理は、第2特定部150eの処理に対応する。抽出プロセス206dの処理は、抽出部150fの処理に対応する。検索プロセス206eの処理は、検索部150gの処理に対応する。
なお、前処理プログラム207a、第1特定プログラム207b、第2特定プログラム207c、抽出プログラム207d、検索プログラム207eについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a〜207eを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定し、
前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出し、
前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行させることを特徴とするデータ検索プログラム。
(付記2)特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第1の距離を減算することで、前記第2の距離を算出する処理を更にコンピュータに実行させることを特徴とする付記1に記載のデータ検索プログラム。
(付記3)前記他のクラスタを特定する処理は、クラスタの半径が前記第2の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記2に記載のデータ検索プログラム。
(付記4)前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第2の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第2の距離との比較を行うことなく、ソート順に基づいて、前記第2の距離よりも大きい対象データを抽出することを特徴とする付記3に記載のデータ検索プログラム。
(付記5)コンピュータが実行するデータ検索方法であって、
ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定し、
前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定し、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出し、
前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
処理を実行することを特徴とするデータ検索方法。
(付記6)特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第1の距離を減算することで、前記第2の距離を算出する処理を更にコンピュータに実行させることを特徴とする付記5に記載のデータ検索方法。
(付記7)前記他のクラスタを特定する処理は、クラスタの半径が前記第2の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記6に記載のデータ検索方法。
(付記8)前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第2の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第2の距離との比較を行うことなく、ソート順に基づいて、前記第2の距離よりも大きい対象データを抽出することを特徴とする付記7に記載のデータ検索方法。
(付記9)ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定する第1特定部と、
前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定する第2特定部と、
前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出する抽出部と、
前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する検索部と
を有することを特徴とするデータ検索装置。
(付記10)前記第2特定部は、前記他のクラスタの中心と前記入力クエリとの距離から前記第1の距離を減算することで、前記第2の距離を算出することを特徴とする付記9に記載のデータ検索装置。
(付記11)前記第2特定部は、クラスタの半径が前記第2の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする付記10に記載のデータ検索装置。
(付記12)前記抽出部は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第2の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第2の距離との比較を行うことなく、ソート順に基づいて、前記第2の距離よりも大きい対象データを抽出することを特徴とする付記11に記載のデータ検索装置。
100 データ検索装置
110 通信部
120 入力部
130 表示部
140 記憶部
150 制御部

Claims (6)

  1. コンピュータに、
    ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定し、
    前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定し、
    前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出し、
    前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
    処理を実行させることを特徴とするデータ検索プログラム。
  2. 特定された前記他のクラスタの中心と前記入力クエリとの距離から前記第1の距離を減算することで、前記第2の距離を算出する処理を更にコンピュータに実行させることを特徴とする請求項1に記載のデータ検索プログラム。
  3. 前記他のクラスタを特定する処理は、クラスタの半径が前記第2の距離以上となるクラスタを、前記他のクラスタとして特定することを特徴とする請求項2に記載のデータ検索プログラム。
  4. 前記抽出する処理は、前記他のクラスタに属する複数の対象データと前記他のクラスタの中心との各距離をハミング距離により算出し、前記複数の対象データを、ハミング距離に応じてソートし、前記第2の距離と等しいハミング距離を有する対象データを検出した場合に、検出した対象データよりも大きいハミング距離を有する対象データと前記第2の距離との比較を行うことなく、ソート順に基づいて、前記第2の距離よりも大きい対象データを抽出することを特徴とする請求項3に記載のデータ検索プログラム。
  5. コンピュータが実行するデータ検索方法であって、
    ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定し、
    前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定し、
    前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出し、
    前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する
    処理を実行することを特徴とするデータ検索方法。
  6. ビットベクトル化された複数の対象データがクラスタリングされて生成される複数のクラスタと、ビットベクトル化された入力クエリとを基にして、前記入力クエリに最も近い第1のクラスタを特定する第1特定部と、
    前記入力クエリの位置から前記第1のクラスタの中心までの距離を示す第1の距離を用いて、前記入力クエリとの距離が前記第1の距離以内となる対象データを含む前記第1のクラスタとは異なる他のクラスタを特定する第2特定部と、
    前記他のクラスタに属し、かつ、前記入力クエリからの距離が前記第1の距離以内となる対象データ、または、前記他のクラスタに属し、かつ、前記他のクラスタの中心からの距離が、第2の距離よりも大きい対象データを抽出する抽出部と、
    前記第1のクラスタに属する対象データ、および、前記他のクラスタから抽出した対象データを対象に、前記入力クエリに対し類似する対象データを検索する検索部と
    を有することを特徴とするデータ検索装置。
JP2016148562A 2016-07-28 2016-07-28 データ検索プログラム、データ検索方法およびデータ検索装置 Active JP6708043B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016148562A JP6708043B2 (ja) 2016-07-28 2016-07-28 データ検索プログラム、データ検索方法およびデータ検索装置
US15/631,200 US20180032579A1 (en) 2016-07-28 2017-06-23 Non-transitory computer-readable recording medium, data search method, and data search device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016148562A JP6708043B2 (ja) 2016-07-28 2016-07-28 データ検索プログラム、データ検索方法およびデータ検索装置

Publications (2)

Publication Number Publication Date
JP2018018330A JP2018018330A (ja) 2018-02-01
JP6708043B2 true JP6708043B2 (ja) 2020-06-10

Family

ID=61011619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016148562A Active JP6708043B2 (ja) 2016-07-28 2016-07-28 データ検索プログラム、データ検索方法およびデータ検索装置

Country Status (2)

Country Link
US (1) US20180032579A1 (ja)
JP (1) JP6708043B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110135511B (zh) * 2019-05-22 2021-07-20 国网河北省电力有限公司 电力系统时间断面的确定方法、装置以及电子设备
US11226992B1 (en) * 2019-07-29 2022-01-18 Kensho Technologies, Llc Dynamic data clustering
CN113495710A (zh) * 2020-03-18 2021-10-12 中国电信股份有限公司 声音唤醒处理方法、装置、声音分析平台以及存储介质
JP6948425B2 (ja) * 2020-03-19 2021-10-13 ヤフー株式会社 判定装置、判定方法及び判定プログラム
JP7127080B2 (ja) * 2020-03-19 2022-08-29 ヤフー株式会社 判定装置、判定方法及び判定プログラム
CN113297331B (zh) * 2020-09-27 2022-09-09 阿里云计算有限公司 数据存储方法及装置、数据查询方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3903613B2 (ja) * 1998-11-04 2007-04-11 富士ゼロックス株式会社 検索装置及び検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US7574409B2 (en) * 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
KR101266358B1 (ko) * 2008-12-22 2013-05-22 한국전자통신연구원 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법
US8515956B2 (en) * 2009-05-11 2013-08-20 H5 Method and system for clustering datasets
JP5254893B2 (ja) * 2009-06-26 2013-08-07 キヤノン株式会社 画像変換方法及び装置並びにパターン識別方法及び装置
JP5377148B2 (ja) * 2009-08-03 2013-12-25 キヤノン株式会社 クラスタリング処理方法、クラスタリング処理装置、およびプログラム
US8116527B2 (en) * 2009-10-07 2012-02-14 The United States Of America As Represented By The Secretary Of The Army Using video-based imagery for automated detection, tracking, and counting of moving objects, in particular those objects having image characteristics similar to background
WO2015171954A2 (en) * 2014-05-09 2015-11-12 Raven Industries, Inc. Refined row guidance parameterization with hough transform
WO2016001998A1 (ja) * 2014-06-30 2016-01-07 楽天株式会社 類似度算出システム、類似度算出方法およびプログラム

Also Published As

Publication number Publication date
JP2018018330A (ja) 2018-02-01
US20180032579A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
JP6708043B2 (ja) データ検索プログラム、データ検索方法およびデータ検索装置
CN106682233B (zh) 一种基于深度学习与局部特征融合的哈希图像检索方法
EP3248143B1 (en) Reducing computational resources utilized for training an image-based classifier
KR101191223B1 (ko) 이미지 검색 방법, 장치, 및 이 방법을 실행하기 위한 컴퓨터 판독 가능한 기록 매체
US9864928B2 (en) Compact and robust signature for large scale visual search, retrieval and classification
US9483701B1 (en) System and method for using segmentation to identify object location in images
EP3203417B1 (en) Method for detecting texts included in an image and apparatus using the same
US11010337B2 (en) Fuzzy hash algorithms to calculate file similarity
KR20150054258A (ko) 인식기 학습 방법 및 장치, 데이터 인식 방법 및 장치
Ozkok et al. International Journal of Intelligent Systems and Applications in Engineering
US8027978B2 (en) Image search method, apparatus, and program
US10133811B2 (en) Non-transitory computer-readable recording medium, data arrangement method, and data arrangement apparatus
US9223804B2 (en) Determining capacity of search structures
KR20190115319A (ko) 문장을 복수의 클래스들로 분류하는 모바일 장치 및 방법
US20220179955A1 (en) Mobile malicious code classification method based on feature selection and recording medium and device for performing the same
CN103353881A (zh) 一种应用程序搜索方法及装置
JP6589639B2 (ja) 検索システム、検索方法およびプログラム
Ghan et al. Clustering and pattern matching for an automatic hotspot classification and detection system
CN110209895B (zh) 向量检索方法、装置和设备
Chu et al. Logo recognition and localization in real-world images by using visual patterns
Wang et al. δ‐Open set clustering—A new topological clustering method
CN111160391A (zh) 基于空间划分的快速相对密度噪声检测方法及存储介质
KR101815968B1 (ko) 그룹 분리 기능을 제공하기 위한 악성코드 분류 시스템 및 그 방법
CN111428064A (zh) 小面积指纹图像快速索引方法、装置、设备及存储介质
Histograms Bi-level classification of color indexed image histograms for content based image retrieval

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200504

R150 Certificate of patent or registration of utility model

Ref document number: 6708043

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150