JP6167767B2 - インデックス生成装置及び検索装置 - Google Patents

インデックス生成装置及び検索装置 Download PDF

Info

Publication number
JP6167767B2
JP6167767B2 JP2013179285A JP2013179285A JP6167767B2 JP 6167767 B2 JP6167767 B2 JP 6167767B2 JP 2013179285 A JP2013179285 A JP 2013179285A JP 2013179285 A JP2013179285 A JP 2013179285A JP 6167767 B2 JP6167767 B2 JP 6167767B2
Authority
JP
Japan
Prior art keywords
data
index
search
unit
dimensional
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
JP2013179285A
Other languages
English (en)
Other versions
JP2015049574A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013179285A priority Critical patent/JP6167767B2/ja
Publication of JP2015049574A publication Critical patent/JP2015049574A/ja
Application granted granted Critical
Publication of JP6167767B2 publication Critical patent/JP6167767B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データのインデックス(索引)技術に関する。
現在、様々な類似検索手法が提案されている。このような類似検索は、画像の特徴量データのような多次元データや高次元データを対象に行われることが多い。
例えば、特許文献1、3及び6には、類似画像検索方法に関する技術が記載されている。特許文献2には、一方のデータから他方のデータへ辿るためのリンクがデータ間に設定されたデータベースを用いて、類似データの検索を行う手法が記載されている。特許文献5には、任意の画像集合を階層的に分類する手法が記載されている。特許文献7には、高次元の特徴ベクトルの集合から、クエリ特徴ベクトルに類似した特徴ベクトルを検索する手法が記載されている。特許文献9には、ハッシュ関数を用いて各学習パターンをハッシュ値に対応するバケットに分類し、入力パターンのハッシュ値に対応するバケットに属する学習パターンの中から、入力パターンに最も類似する学習パターンを探索する手法が記載されている。特許文献10には、複数の特徴量をベクトルで表現可能な多次元のデータに対し、条件を指定して所望のデータを抽出するデータマッチング方法が記載されている。以降、「高次元」と「多次元」とは、特別に区別することなく用いられる。
このような類似検索では、通常、類似度関数等を用いて対象データ間の類似度が算出される。類似度が高いほど、対象データどうしがより類似すると判断できる。または、距離関数等を用いて、対象データ間の距離が算出される。距離が小さいほど、対象データどうしがより類似すると判断できる。例えば、画像の特徴量データは、多次元の数値ベクトルで表わされ、比較対象の特徴量データ間の類似度が類似度関数により算出される。特許文献4には、データベース内の全ての特徴量に関し、他の特徴量との類似度を計算し、類似度の高い順に上位f(x)件分のID情報を、類似度順付きで格納しておき、この格納内容を検索することにより、類似特徴量を検索する手法が記載されている。
また、対象データに関しインデックス(索引)が構築され、このインデックスを用いて類似検索を行うことで、検索の高速化が図られる。多次元データのインデックス生成手法としては、R木(R-Tree)が知られている(非特許文献1参照)。また、特許文献8には、特徴ベクトル空間を複数個の近似領域に分割し、各近似領域の疎密に応じて階層化されたインデックスツリーを生成する手法が記載されている。
また、多次元のデータを元のデータ空間から一次元空間へマッピングし、マッピング後の一次元データを用いてインデックスを構築する手法も存在する。この手法によれば、一次元データを用いて類似検索を行うことで、検索の高速化が実現できる。多次元データを一次元空間へマッピングする手法は、空間充填曲線(Spatial Filling Curve)と呼ばれる。空間充填曲線としては、Zカーブ(Z−curveまたはZ−order)(非特許文献2参照)、Hilbert曲線(非特許文献3参照)等が知られている。
特許第4545641号公報 特開2011−090352号公報 特開2012−079186号公報 特開2000−035965号公報 特開2001−160057号公報 特許第4906900号公報 特開2011−257970号公報 特開2002−163272号公報 特開2009−020769号公報 特開2004−046612号公報
Antonin Guttman著、「R-Trees:A Dynamic Index Structure for Spatial Searching」、SIGMOD Conference出版、1984年、pp.47-57 G. M. Morton、「A Computer Oriented Geodetic Data Base and a New Technique in File Sequencing」、Technical report、IBM、Ottawa, Canada、1966年 David Hilbert、「Ueber die stetige Abbildung einer Line auf ein Flachenstuck」、Mathematische Annalen Volume 38, Issue 3、pp 459-460、1891年
上述のような類似検索手法は、検索処理で距離(類似度)を計算する際に、インデックスデータを元のデータへアクセスするためだけに利用するため、検索処理の更なる高速化の余地を残す。即ち、インデックスデータを元のデータの代わりに用いて、データ間の距離を示す指標値を計算することができれば、検索処理の更なる高速化を実現することができる。
R木のような空間インデックスを用いた手法は、最小包含矩形(MBR;Minimum Bounding Rectangle)を用いて、元のデータを階層的に囲み、木構造インデックスを構築する。そして、そのインデックスを基に検索時に枝刈りを行うことで、元のデータへのアクセス回数を減らし、結果、類似検索を高速化する。このような空間インデックス技術は、インデックスデータをデータ間の距離の計算に用いることを想定していないため、その空間インデックスを用いる類似検索処理において、インデックスデータを用いてデータ間の距離を計算することはできない。
一方、空間充填曲線を用いて手法によれば、生成されるインデックスデータは、一次元空間上での順番を示すため、そのインデックスデータを用いて順番の遠近を判定し、この判定結果をデータ間距離として利用することは可能である。ところが、その手法によれば、隣接するインデックスデータ間の距離は全て等しくなるため、データ間の距離の大きさを区別することは困難となり、類似検索の効率を低下させる。
本発明は、上述のような事情に鑑みてなされたものであり、インデックスデータを用いて元のデータ間の距離を示す指標値を計算可能とするインデックス技術を提供することにある。
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。
第1の側面は、インデックス生成装置に関する。第1の側面に係るインデックス生成装置は、高次元データを取得するデータ取得部と、相互に可約できない、当該高次元データの次元数分の変換係数を取得する係数取得部と、係数取得部で取得される複数の変換係数を用いて、当該高次元データを一次元空間へ唯一にマッピングする変換部と、変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、を有する。
第2の側面は、データ取得部、係数取得部、変換部及びインデックス生成部を備えたコンピュータにより実行されるインデックス生成方法に関する。第2の側面に係るインデックス生成方法は、前記データ取得部が高次元データを取得し、前記係数取得部が、相互に可約できない、当該高次元データの次元数分の変換係数を取得し、前記変換部が取得された複数の変換係数を用いて、当該高次元データを一次元空間へ唯一にマッピングし、前記インデックス生成部がマッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、ことを含む。
第3の側面は、第1の側面に係るインデックス生成装置により生成されるインデックスを用いる検索装置に関する。第3の側面に係る検索装置は、当該高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、上記係数取得部で取得される複数の変換係数と同じ複数の変換係数を用いて、上記変換部と同じ手法で、検索対象データを一次元空間へ唯一にマッピングする検索対象変換部と、当該高次元データと検索対象データとの間の類似度を評価する際に、検索対象変換部により得られる検索対象一次元データとインデックスにインデックスデータとして含まれる一次元データとの間の距離を算出する距離算出部と、を有する。
第4の側面は、第2の側面に係るインデックス生成方法により生成されるインデックスを用い、かつ、クエリ取得部、検索対象変換部及び距離算出部を備えたコンピュータにより実行される検索方法に関する。第4の側面に係る検索方法は、前記クエリ取得部が当該高次元データと同じ次元数の検索対象データを取得し、前記検索対象変換部が上記複数の変換係数を用いて、第2の側面に係るインデックス生成方法に含まれるマッピングと同じ手法で、検索対象データを一次元空間へ唯一にマッピングし、前記距離算出部が当該高次元データと検索対象データとの間の類似度を評価する際に、検索対象データのマッピングにより得られる検索対象一次元データとインデックスに含まれる一次元データとの間の距離を算出する、ことを含む。
本発明の他の側面としては、第2の側面又は第4の側面に係る方法を少なくとも1つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
上記各側面によれば、インデックスデータを用いて元のデータ間の距離を示す指標値を計算可能とするインデックス技術を提供することができる。
第1実施形態におけるインデックス生成装置の処理構成例を概念的に示す図である。 第1実施形態におけるインデックス生成装置の動作例を示すフローチャートである。 第1実施形態における検索装置の処理構成例を概念的に示す図である。 第1実施形態における検索装置の動作例を示すフローチャートである。 第2実施形態における高次元データ検索装置のハードウェア構成例を概念的に示す図である。 第2実施形態における高次元データ検索装置の処理構成例を概念的に示す図である。 第2実施形態における高次元データ検索装置の、インデックス生成に関する動作例を示すフローチャートである。 第2実施形態における高次元データ検索装置の、範囲問合せ(Range Query)に関する検索方法に関する動作例を示すフローチャートである。 第3実施形態における高次元データ検索装置の処理構成例を概念的に示す図である。 第3実施形態における高次元データ検索装置の、k最近傍探索の動作例を示すフローチャートである。
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
[第1実施形態]
まず、第1実施形態として、インデックス生成装置、インデックス生成方法、そのインデックス生成装置で生成されるインデックスを用いる検索装置、及び、そのインデックス生成方法で生成されるインデックスを用いる検索方法について、説明する。
図1は、第1実施形態におけるインデックス生成装置100の処理構成例を概念的に示す図である。第1実施形態におけるインデックス生成装置100は、高次元データを取得するデータ取得部101と、相互に可約できない、上記高次元データの次元数分の変換係数を取得する係数取得部102と、係数取得部102で取得される複数の変換係数を用いて、上記高次元データを一次元空間へ唯一にマッピングする変換部103と、変換部103により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部104と、を有する。
インデックス生成装置100は、例えば、後述する詳細実施形態(第2実施形態以降)における高次元データ検索装置1と同様のハードウェア構成を有する。その高次元データ検索装置1と同様に、プログラムが処理されることで、上述の各処理部が実現される。インデックス生成装置100のハードウェア構成は制限されない。
次に、第1実施形態におけるインデックス生成方法について図2を用いて説明する。図2は、第1実施形態におけるインデックス生成装置100の動作例を示すフローチャートである。以下の説明では、インデックス生成装置100が当該インデックス生成方法の実行主体となるが、インデックス生成装置100に含まれる上述の各処理部が実行主体となってもよい。
第1実施形態におけるインデックス生成方法は、インデックス生成装置100のような、少なくとも1つのコンピュータにより実行される。当該インデックス生成方法は、高次元データを取得し(S21)、相互に可約できない、上記高次元データの次元数分の変換係数を取得し(S22)、(S22)で取得された複数の変換係数を用いて、上記高次元データを一次元空間へ唯一にマッピングし(S23)、(S23)のマッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する(S24)、ことを含む。
本実施形態では、インデックスが付与される対象となる高次元データが取得され、更に、この高次元データの次元数分の変換係数が取得される。取得される高次元データのデータ型は制限されない。更に、上述したように、高次元データは、複数次元のデータを意味し、多次元データや複数次元データと区別されない。また、取得される複数の変換係数は、相互に可約できないという特性を持つ。ここで、相互に可約できないとは、更なる単純化を行うことができないことを意味する。具体的には、全ての変換係数が整数である場合に、当該変換係数の全てのペアが、1以外の公約数を持たないことを意味し、小数の変換係数を含む場合に、当該変換係数の全てのペアが自然数で割り切れないことを意味する。
このような相互に可約できない複数の変換係数を用いて、上記高次元データが、一次元空間へ唯一にマッピングされる。唯一にマッピングとは、複数の高次元データがその一次元空間の同じ点(1つの一次元データ)に写像されないことを意味する。この唯一のマッピングは、相互に可約できない複数の変換係数を用いることで実現することができる。本実施形態は、相互に可約できない複数の変換係数を用いるマッピングであれば、マッピング方法自体を制限しない。
本実施形態では、上記マッピングにより高次元データから変換された一次元データをインデックスデータとして含むインデックスが生成される。生成されたインデックスでは、当該インデックスデータが、昇順又は降順に整列された状態で階層的に管理される。このインデックスの生成には、B木(B+木、B*木など)と呼ばれる周知の階層型インデックスを利用することができる。このインデックスデータは、元の高次元データへのポインタとしても利用されてもよい。
このように、本実施形態によれば、各高次元データに対応する各インデックスデータが独自の(唯一性を持つ)実数となるため、各インデックスデータを用いて、高次元データ間の距離(類似度)を示す指標値を算出することができる。即ち、インデックスデータ間の距離が、対応する高次元データ間の距離を示す指標値となり得る。ここで、指標値とは、高次元データ間の距離の値と完全に一致しないとしても、その距離の指標となり得る値を意味する。また、本実施形態によれば、元の高次元データが一次元空間上に唯一にマッピングされて得られる一次元データをインデックスデータとすることで、元の高次元データが有する情報を失うことなく、インデックス空間の複雑さを大幅に削減することができる。
ここで、上述のインデックス生成装置100及びインデックス生成方法に具現化されている技術的思想を説明すると共に、相互に可約できない変換係数及び高次元データの一次元空間へのマッピング処理に関する具体例を例示する。
本発明者は、数論における素因数分解の基本原理に着眼し、この基本原理の逆、即ち、素因数分解の逆を類似検索のためのインデックスデータの生成に採用するという着想を得た。素因数分解は、任意の正の整数(自然数)を素数の積の形で表すことである。「素因数分解の基本原理」とは、素因数分解の変換過程に持つ特殊な性質を意味する。素因数分解には、次のような性質がある。
任意の正の整数に対して、素因数分解は一意的に決定される。この性質は、素因数分解の一意性とも表記される。
例えば、正の整数288を素因数分解すると、次のようになる。
288=2×2×2×2×2×3×3=2×3
即ち、正の整数288は、一義的に「2×2×2×2×2×3×3」に因数分解される。また、このような連続積は、素数の冪乗と他の素数の冪乗との積としても表すこともできる。即ち、正の整数288は、素数2の5乗と素数3の2乗との積と表すこともできる。
このような素因数分解の性質により、素因数分解の逆演算も一義的である。よって、素数を予め選択し、選択された各素数に、対応する冪数を与えることにより、必ず唯一の正の整数が得られる。
例えば、素数2及び素数3を選択し、素数2の冪数に5を、素数3の冪数に2を与え、素因数分解の逆演算をすると、正の整数288が一意的に算出される。
×3=2×2×2×2×2×3×3=288
本発明者は、このような素因数分解の逆演算の一意性を踏まえつつ、素因数分解の視点を変えて、次の考察を行った。
まず、上述のように選択される素数の個数を類似検索処理のデータ空間の次元数と定義する。これにより、当該データ空間の次元数が、選択される素数の個数となるように、当該データ空間の次元数分の素数が予め選択される。上述の例では、2つの素数2及び3が選ばれているため、データ空間の次元数は2である。
更に、選択された各素数に与えられる冪数を、当該データ空間上の高次元データを形成する各次元の要素値又はその要素値が自然数に正規化された数値と定義する。これにより、対象となる高次元データの各次元の要素値が自然数の場合には、その要素値が、選択された各素数に冪数として与えられる。また、対象となる高次元データの各次元の要素値が自然数でない場合には、その要素値が自然数に正規化された数値が、選択された各素数に冪数として与えられる。上述の例では、対象の高次元データは、素数2及び3に与えられる冪数5及び2を各次元の要素値として持つ2次元のベクトルデータ、又は、各次元の要素値が正規化されることで得られる数値が冪数5及び2となる2次元ベクトルデータと考えられる。
ここで、上述のような素因数分解の逆演算を特定の変換関数と捉えると、素因数分解の逆演算は、ある種の変換(又はマッピング)と見なすことができる。そして、この考え方と上述の定義とを合わせると、上述の例は、2次元空間の点(5,2)を1次元の点(288)に変換することに相当する。素因数分解及びその逆演算の一意性から、この変換も一意的である。
このような考察から、本発明者は、「素因数分解の逆演算を利用することにより、任意のd次元空間上のベクトルデータを1次元空間の単一の正の整数へ唯一に変換することができる」こと(以降、第1補題と表記する)を見出した。以下、この第1補題を用いた具体例を実施例1として説明する。
実施例1におけるインデックス生成装置100では、係数取得部102は、当該高次元データの次元数分の素数を複数の変換係数として取得する。変換部103は、データ取得部101により取得される高次元データを自然数に正規化し、この正規化された高次元データを形成する各次元の要素データを冪数として用いて、係数取得部102で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する。インデックス生成部104は、変換部103によりこのようにして算出された一次元データがインデックスデータとして含まれるインデックスを生成する。
以下、実施例1におけるインデックス生成装置100の上記処理をより詳細に図2を用いて説明する。
インデックス生成装置100は、インデックス対象となるd次元データvを取得する(S21)。dは2以上の整数である。データvは、d次元空間上の任意の点であり、次のように表記される。
v(x,x,・・・,x
ここで、各次元の要素データ(x,x,・・・,x)は自然数である。但し、取得されたd次元データvの各次元の要素データは、自然数でなくてもよい。この場合には、インデックス生成装置100は、d次元データvを自然数に正規化すればよい。具体的には、インデックス生成装置100は、d次元データvの各次元の要素データを、元のデータに復元可能に、自然数にそれぞれ変換する。
インデックス生成装置100は、d個の素数を適当に選択する(S22)。インデックス生成装置100は、素数表を予め保持していてもよい。選択された素数は、p,p,・・・,pと表記される。
インデックス生成装置100は、各次元の要素データを冪数として用いて、上記選択された各素数を底としてそれぞれ冪乗して得られる値の積を算出する(S23)。この処理は、次の(式1)で表わされる。
Figure 0006167767
上記(式1)は、自然数を要素データとしても持つd次元空間上のデータNを変換関数fを用いて、1次元の自然数Nへ変換することを示す。ここで、変換関数fは、以下の(式2)で表すことができる。(式2)において、p及びvは上述のとおりである。uは、一次元への変換後(マッピング後)の値を示す。
Figure 0006167767
しかしながら、実施例1の手法では、次元数dが大きくなる程、変換後の一次元データの値(u)が急激に大きくなる。よって、実施例1によれば、実行するコンピュータ(インデックス生成装置100)の要求性能が高くなってしまう。そこで、本発明者は、実施例1の課題に対して次のような考察を行い、上記第1補題を更に発展させた。
素因数分解の逆演算の上記例において、両辺に対して、素数2及び3の積を底とする対数を取る。この演算は、次のように表わされる。
Figure 0006167767
ここで、次のようなα及びαを定義し、α及びαを用いると、上記(式3)は、次の(式4)のように表わされる。以下の(式4)の右辺は実数である。また、α及びαは、定数であり、かつ、選択される素数のみに依存しているため、事前に計算しておくことが可能である。
Figure 0006167767
このように、上記例で示される、素数2及び3を用いて、2次元空間上の点(5,2)を一次元の値(288)に変換することは、上記(式4)に示される変換に置き換えられる。(式4)は、定数α及びαを係数とする線形変換を示し、定数α及びαは、素数の積を底とする対数計算で求められる、線形変換の係数である。そして、この線形変換に潜在する本質は、変換係数α及びαがお互いに可約ではないことにある。
このような考察から、本発明者は、「相互に可約できない変換係数を取る線形変換を利用することにより、任意のd次元空間上のベクトルデータを1次元空間上の単一の正の実数へ一意的に変換することができる」こと(以降、第2補題と表記する)を見出した。以下、この第2補題を用いた具体例を実施例2として説明する。
実施例2におけるインデックス生成装置100では、変換部103は、高次元データを形成する各次元の要素データと、係数取得部102で取得される各変換係数との積の和を算出する。言い換えれば、変換部103は、各変換係数を用いて、高次元データを線形変換する。例えば、係数取得部102は、上記(式4)で定義される定数α1及びα2のような変換係数を取得する。具体的には、係数取得部102は、高次元データの次元数分の素数を選択し、この選択された素数の積を底とする各素数の対数を当該変換係数として取得する。
以下、実施例2におけるインデックス生成装置100の上記処理をより詳細に図2を用いて説明する。
インデックス生成装置100は、インデックス対象となるd次元データvを取得する(S21)。dは2以上の整数である。データvは、d次元空間上の任意の点であり、次のように表記される。実施例2では、各次元の要素データ(x,x,・・・,x)は自然数でなくてもよい。
v(x,x,・・・,x
インデックス生成装置100は、d個の素数を適当に選択する。インデックス生成装置100は、素数表を予め保持していてもよい。選択された素数は、p,p,・・・,pと表記される。更に、インデックス生成装置100は、その選択された素数の積を底とする各素数の対数を当該変換係数として取得する(S22)。この変換係数の算出は、以下の(式5)で表すことができる。
Figure 0006167767
上記(式5)において、αは、取得される複数の変換係数を示す。d及びpは上述のとおりである。
インデックス生成装置100は、高次元データを形成する各次元の要素データと、変換係数αとの積の和を算出する(S23)。この処理は、次の(式6)で表わされる。
Figure 0006167767
上記(式6)は、d次元空間上のデータNを変換関数gを用いて、1次元の正の実数Rへ変換することを示す。ここで、変換関数gは、以下の(式7)で表すことができる。(式7)において、d及びv並びにαは上述のとおりである。uは、一次元への変換後(マッピング後)の値を示す。
Figure 0006167767
第2補題で示されるように、高次元データの一次元空間への唯一のマッピングは、相互に可約できない変換係数を用いた線形変換で実現することができる。従って、変換係数自体は、上記内容、即ち、素数の積を底とする各素数の対数に制限されない。例えば、インデックス生成装置100(係数取得部102)は、選択された各素数の平方根をそれぞれ変換係数として取得することもできる。
このように、実施例1及び2によれば、素因数分解の逆演算の一意性、又は、相互に可約でない係数を用いた線形変換の一意性を用いることにより、任意のd次元空間上のベクトルデータを1次元空間の単一の正の実数(自然数を含む)へ一意的に変換することができる。そして、得られた一次元データがインデックスデータとして用いられ、このインデックスデータにおける数値が異なる唯一性を持つ実数であるため、このインデックスデータを用いて元のデータ間の距離を示す指標値を計算することができる。
図3は、第1実施形態における検索装置200の処理構成例を概念的に示す図である。第1実施形態における検索装置200は、上述のインデックス生成装置100で生成されたインデックスを用いる。検索装置200は、必要に応じて、そのインデックスに含まれるインデックスデータ(一次元データ)をインデックス生成装置100から取得してもよいし、インデックス全体を予めインデックス生成装置100から取得し保持していてもよい。
検索装置200は、上記高次元データと同じ次元数の検索対象データを取得するクエリ取得部201と、上記係数取得部102で取得される複数の変換係数と同じ複数の変換係数を用いて、上記変換部103と同じ手法で、その検索対象データを一次元空間へ唯一にマッピングする検索対象変換部202と、上記高次元データとその検索対象データとの間の類似度を評価する際に、検索対象変換部202により得られる検索対象一次元データと上記インデックスに含まれる一次元データとの間の距離を算出する距離算出部203と、を有する。
検索装置200は、例えば、後述する詳細実施形態(第2実施形態以降)における高次元データ検索装置1と同様のハードウェア構成を有する。その高次元データ検索装置1と同様に、プログラムが処理されることで、上述の各処理部が実現される。検索装置200のハードウェア構成は制限されない。
以下、第1実施形態における検索方法について図4を用いて説明する。図4は、第1実施形態における検索装置200の動作例を示すフローチャートである。以下の説明では、検索装置200が当該検索方法の実行主体となるが、検索装置200に含まれる上述の各処理部が実行主体となってもよい。
第1実施形態における検索方法は、検索装置200のような、少なくとも1つのコンピュータにより実行される方法であって、かつ、上述のインデックス生成方法により生成されるインデックスを用いる方法である。第1実施形態における検索方法は、上記高次元データと同じ次元数の検索対象データを取得し(S41)、上述のインデックス生成方法で取得されたものと同じ複数の変換係数を用いて、上述のインデックス生成方法に含まれる上記マッピングと同じ手法で、検索対象データを一次元空間へ唯一にマッピングし(S42)、上記高次元データとその検索対象データとの間の類似度を評価する際に、その検索対象データの(S42)のマッピングにより得られる検索対象一次元データと上記インデックスにインデックスデータとして含まれる一次元データとの間の距離を算出する(S43)、ことを含む。
上述のインデックス生成装置100及びインデックス生成方法によれば、上述したように、インデックスデータ間の距離が、対応する高次元データ間の距離を示す指標値となり得る。そこで、本実施形態では、当該インデックスデータの生成手法と同様に、検索対象データが一次元空間へ唯一にマッピングされ、検索対象一次元データが取得される。そして、当該インデックスデータの元となる高次元データとその検索対象データとの間の類似度を評価する際に、検索対象一次元データと、当該インデックスデータとしての一次元データとの間の距離が算出される。算出された距離は、対応する高速データ間の距離の指標値となり得るため、その距離を用いて、検索処理を行うことができる。
このように、本実施形態によれば、インデックスデータを用いて、対応する高次元データ間の距離の指標値を算出することができるため、その指標値を用いて検索結果の正解となる高次元データの数を或る程度絞り込むことができる。従って、本実施形態によれば、実距離を計算すべき高次元データの数を減らすことができ、ひては、検索処理の更なる効率化及び高速化を実現することができる。
以下、上述の第1実施形態について更に詳細を説明する。以下には、詳細実施形態として、第2実施形態及び第3実施形態を例示する。以下の各実施形態は、第1実施形態における、インデックス生成装置100、検索装置200、インデックス生成方法及び検索方法を高次元データ検索装置に適用した場合の例である。なお、上述の第1実施形態は、高次元データを扱う検索装置への適用に限定されるものではなく、類似度を算出し得る様々なデータの検索装置に適用可能である。
[第2実施形態]
〔装置構成〕
図5は、第2実施形態における高次元データ検索装置(以降、単に検索装置と表記する)1のハードウェア構成例を概念的に示す図である。第2実施形態における検索装置1は、図5に示されるように、ハードウェア構成として、相互にバスにより接続される、CPU(Central Processing Unit)10、メモリ11、入出力インタフェース(I/F)12、通信装置13等を有する。
メモリ11は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク等である。入出力I/F12は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置(図示せず)、表示装置やプリンタ等のようなユーザに情報を提供する出力装置(図示せず)、可搬型記録媒体などとデータをやりとりする装置などと接続可能である。通信装置13は、他のノードと通信を行う。検索装置1は、入力装置や出力装置を持たなくてもよく、検索装置1のハードウェア構成は制限されない。
〔処理構成〕
図6は、第2実施形態における検索装置1の処理構成例を概念的に示す図である。第2実施形態における検索装置1は、図6に示されるように、データ取得部20、インデックス生成部21、データベース(DB)27、クエリ取得部30、検索部31等を有する。これら各処理部は、例えば、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体から入出力I/F12を介して、又は、ネットワーク上の他のコンピュータから通信装置13を介してインストールされ、メモリ11に格納されてもよい。
また、上述の処理部は、複数台のコンピュータにより実現されてもよい。例えば、インデックス生成のためのデータ取得部20及びインデックス生成部21は、1つのコンピュータで実現され、クエリ取得部30及び検索部31は、他のコンピュータで実現されてもよい。また、DB27は、更に異なる他のコンピュータで実現されてもよい。
データ取得部20は、上述のデータ取得部101に相当する。データ取得部20は、映像等のような高次元の特徴量データを高次元データとして取得する。特徴量データは、入力画面等を入力装置を用いてユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信装置13を経由して取得された情報であってもよい。データ取得部20により取得される高次元データの内容自体は制限されない。
インデックス生成部21は、データ取得部20により取得される特徴量データ(高次元データ)に対しインデックスを付与し、その特徴量データ及びインデックス情報をDB27に格納する。インデックス生成部21は、係数取得部23、変換部24、並び替え処理部25等を含む。図6では、説明の便宜のために、係数取得部23、変換部24及び並び替え処理部25が、インデックス生成部21に内包されるように図示される。これら各処理部の関係を図6に示される関係に限定されない。
DB27は、多数の特徴量データ及びそのインデックス情報を格納する。但し、DB27は、検索装置1以外の他のコンピュータ上に実現されてもよい。この場合、インデックス生成部21は、他のコンピュータと通信を行うことにより、DB27にアクセスする。
係数取得部23及び変換部24は、上述の係数取得部102及び変換部103に相当する。係数取得部23及び変換部24は、上記補題1に基づく処理を実行してもよいし、上記補題2に基づく処理を実行してもよい。並び替え処理部25は、上述のインデックス生成部104に相当する。並び替え処理部25は、変換部24により特徴量データから変換される一次元データを昇順又は降順に並び替えてインデックスデータとし、B+木を用いてインデックスを生成する。
クエリ取得部30は、上述のクエリ取得部201に相当する。クエリ取得部30は、検索対象の特徴量データを取得する。検索対象の特徴量データは、データ取得部20で取得される特徴量データと同じ次元数のデータであり、以降、検索対象データと表記する。クエリ取得部30は、検索対象データに加えて、その検索対象データからの距離条件を更に取得する。この距離条件は、検索対象データの高次元空間における距離情報であり、その距離条件には、例えば、検索対象データの高次元空間上における、検索対象データを中心とする半径rが用いられる。クエリ取得部30により取得される検索対象データ及び距離条件は、類似検索の範囲問合せで指定される情報であり、類似検索の問い合わせ範囲を示す。
検索部31は、DB27に格納されるインデックスを用いて、DB27に格納される特徴量データの中から、検索対象データ及び距離条件に基づく範囲問合せに適合する特徴量データを検索する。範囲問合せとは、検索対象データとの距離が距離条件に適合する特徴量データを、DB27から抽出する類似検索要求を意味する。検索結果のデータは、入出力I/F12を介して表示装置や印刷装置に出力されてもよいし、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信装置13を介して他のコンピュータに送信されてもよい。
検索部31は、図6に示されるように、検索対象変換部32、距離算出部33、範囲検索部34等を含む。
検索対象変換部32は、上述の検索対象変換部202に相当する。検索対象変換部32は、検索対象変換部202と同様に、クエリ取得部30で取得された検索対象データを検索対象一次データに変換する。更に、検索対象変換部32は、検索対象データの変換と同様の手法で、後述する範囲取得部35により取得される、上界データ及び下界データを一次元空間へ唯一にマッピングする。これは、検索対象データ及び距離条件により示される、高次元空間上の類似検索範囲を一次元空間に写像することに相当する。この処理により、特徴量データが属する高次元空間上の上界データ及び下界データが上界一次元データ及び下界一次元データに変換される。
検索対象変換部32は、係数取得部23で取得される複数の変換係数をインデックス生成部21から取得してもよいし、係数取得部23と同じ手法で、係数取得部23で取得される複数の変換係数と同じ複数の変換係数を取得してもよい。また、検索対象変換部32は、変換部24と同じ変換ルール(マッピングルール、変換関数)を持つ。
距離算出部33は、上述の距離算出部203に相当する。距離算出部33は、後述の第1対象特定部36により特定されるインデックスデータと検索対象変換部32により得られる検索対象一次元データとの間の距離を算出する。そのインデックスデータ及び検索対象一次元データは共に一次元の値であるため、距離算出部33は、各値の差を当該距離として算出する。
範囲検索部34は、DB27に格納されるインデックスに含まれるインデックスデータを参照することにより、検索対象データ及び距離条件に基づく範囲問合せの解となる特徴量データを抽出する。
範囲検索部34は、図6に示されるように、範囲取得部35、第1対象特定部36、候補抽出部37、第1類似度算出部38等を含む。範囲検索部34は、後述の第1類似度算出部38により算出される実距離と問合せ範囲情報との比較により、当該範囲問合せの解となる特徴量データを抽出する。但し、範囲検索部34は、後述の候補抽出部37により解候補として抽出されるインデックスデータに対応する特徴量データを当該範囲問合せの解として抽出することもできる。この場合には、範囲検索部34は、第1類似度算出部38を持たなくてもよい。更に、範囲検索部34は、後述の第1対象特定部36により特定されるインデックスデータに対応する特徴量データを当該範囲問合せの解として抽出することもできる。この場合には、範囲検索部34は、候補抽出部37及び第1類似度算出部38を持たなくてもよい。
範囲取得部35は、クエリ取得部30により取得される検索対象データ及び距離条件により示される、検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する。距離条件が半径rを示す場合、上界データ及び下界データは、その高次元空間上で、検索対象データに対応する点から半径r以内に含まれる特徴量データ群の中の上界及び下界を示す。よって、範囲取得部35により取得される上界データ及び下界データは、検索対象データと同じ次元数を持つ。
第1対象特定部36は、DB27に格納されるインデックスの中から、検索対象変換部32により上界データ及び下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する。具体的には、第1対象特定部36は、当該インデックスの中から、下界一次元データより大きく、かつ、上界一次元データよりも小さいインデックスデータを特定する。
候補抽出部37は、距離条件から得られる一次元空間上の一次元距離条件と、距離算出部33により算出される距離との比較により、第1対象特定部36により特定されたインデックスデータをフィルタリングし、このフィルタリングで得られるインデックスデータを解候補として抽出する。クエリ取得部30により取得される距離条件は、上述のとおり、特徴量データの高次元空間における距離を示し、一次元距離条件は、その高次元空間の距離に対応する一次元空間上の距離を示す。この一次元距離条件は、例えば、ヘルダーの不等式を用いて算出される。よって、候補抽出部37は、第1対象特定部36により特定される、上界一次元データ及び下界一次元データの間の範囲内のインデックスデータの中から、各インデックスデータと検索対象変換部32により得られる検索対象一次元データとの間の距離がその一次元距離条件に合致しないインデックスデータを除外し、残ったインデックスデータを解候補とする。
第1類似度算出部38は、候補抽出部37により抽出された解候補のインデックスデータに対応する特徴量データと検索対象データとの間の実距離を算出する。算出される実距離は、特徴量データ及び検索対象データが属する高次元空間上の距離である。
〔動作例〕
以下、第2実施形態におけるインデックス生成方法及び検索方法を、第2実施形態における検索装置1の動作に基づいて、説明する。以下の説明では、検索装置1が各方法の実行主体となるが、検索装置1に含まれる上述の各処理部が実行主体となってもよい。また、実行主体は、複数の装置(コンピュータ)であってもよい。
まず、第2実施形態におけるインデックス生成方法について図7を用いて説明する。図7は、第2実施形態における検索装置1の、インデックス生成に関する動作例を示すフローチャートである。但し、図7には、上記第1補題に基づくインデックス生成方法が例示されている。
検索装置1は、インデックス対象となる特徴量データの次元数dを取得する(S71)。次元数dは、入力装置を用いて入力画面等をユーザが操作することにより入力されてもよいし、可搬型記録媒体、他のコンピュータ等から取得されてもよい。
検索装置1は、d個の素数を選択する(S72)。検索装置1は、素数表からその素数を選択してもよい。この場合、検索装置1は、十分な数の素数を含む素数表を予め保持していてもよいし、他のコンピュータ等から取得してもよい。
続いて、検索装置1は、(S72)で選択されたd個の素数に基づいて、変換係数を決定する(S73)。図7の例では、選択されたd個の素数がそのままd個の変換係数に決定される。上記第2補題に基づくインデックス生成方法の場合には、検索装置1は、選択されたd個の素数の積を底とするd個の素数の各々の対数をd個の変換係数として算出する。また、他の方法の場合には、検索装置1は、選択されたd個の素数の各々の平方根をd個の変換係数として算出してもよい。変換係数の全てのペアが相互に可約できないように、複数の変換係数が決められるのであれば、具体的な決定方法は制限されない。
検索装置1は、インデックス対象となる特徴量データを取得する(S74)。特徴量データは、入力装置を用いて入力画面等をユーザが操作することにより入力されてもよいし、可搬型記録媒体、他のコンピュータ等から取得されてもよい。
検索装置1は、(S74)で取得された特徴量データを正規化する(S75)。具体的には、検索装置1は、特徴量データの各次元の要素データを自然数にそれぞれ正規化する。ここでの正規化とは、各次元の要素データを、元のデータに復元可能に、自然数に変換することを意味する。よって、小数を単純に小数点以下を全て削除することで自然数に変換することはこの正規化には該当しない。
検索装置1は、(S73)で決定された変換係数を用いて、(S75)で正規化された特徴量データを一次元へ唯一に変換する(S76)。図7の例では、実施例1に示されるように、検索装置1は、正規化された特徴量データの各次元の要素データを冪数として用いて、(S73)で取得された各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する。
検索装置1は、(S76)で変換された一次元のデータを昇順又は降順に整列する(S77)。
検索装置1は、インデックス対象となる他の特徴量データが有るか否かを判断する(S78)。検索装置1は、他の特徴量データが有れば(S78;YES)、その特徴量データを取得し(S74)、その取得された特徴量データに対して、(S75)以降を実行する。
検索装置1は、他の特徴量データがなければ(S78;NO)、(S77)で整列された一次元データを各特徴量データのインデックスデータとしても含む階層的なインデックスを生成し、そのインデックスと特徴量データとをDB27に格納する(S79)。但し、検索装置1は、インデックス及び特徴量データを、可搬型記録媒体に格納してもよいし、他のコンピュータに送信してもよい。
第2実施形態におけるインデックス生成方法は、図7の例に限定されない。予め、処理対象となる高次元データの次元数が分かっている場合には、(S73)で決定される変換係数は、予め、検索装置1に保持されていてもよく、この場合、(S71)、(S72)及び(S73)は、当該インデックス生成方法に含まれなくてもよい。また、図7の例では、上記第1補題が利用されたが、第2実施形態におけるインデックス生成方法は、第2補題に基づいていてもよい。この場合には、検索装置1は、(S75)を実行せず、(S76)では、(S73)で決定された各変換係数を含む線形変換関数に、特徴量データの各次元の要素データを代入することにより、その特徴量データを一次元データに変換する。
次に、第2実施形態における検索方法について図8を用いて説明する。図8は、第2実施形態における検索装置1の、範囲問合せ(Range Query)に関する検索方法に関する動作例を示すフローチャートである。以下の説明では、検索対象データはクエリデータqと表記される。
検索装置1は、クエリデータq及び距離条件をクエリパラメータとして取得する(S81)。クエリデータqは、検索対象データであり、高次元の特徴量データである。図8の例では、距離条件として距離半径rが指定される。
検索装置1は、クエリデータq及び距離半径rにより、元の高次元空間において範囲問合せの解となりうる上界及び下界の各データ点を求める(S82)。上界のデータ点は、上界データと表記され、下界のデータ点は、下界データと表記される。
検索装置1は、(S82)で取得された上界データ及び下界データを、図7の(S76)と同様の手法により、一次元へ唯一に変換する(S83)。このとき、検索装置1は、図7の(S73)で決定されるものと同じ変換係数を用いる。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、上界データ及び下界データが上界一次元データ及び下界一次元データに変換される。
検索装置1は、DB27に格納されるインデックスから、(S83)で得られる上界一次元データと下界一次元データとの間の範囲内のインデックスデータを特定する(S84)。その範囲内のインデックスデータが存在しない場合、検索装置1は、解なしと判断する。
検索装置1は、クエリデータqを、(S83)と同様の手法により、一次元へ唯一に変換する(S85)。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、クエリデータqがクエリ一次元データに変換される。
検索装置1は、(S85)で得られるクエリ一次元データと、(S84)で特定される各インデックスデータとの距離をそれぞれ算出する(S86)。インデックスデータ及びクエリ一次元データは共に一次元の値であるため、検索装置1は、各値の差を当該距離として算出する。
検索装置1は、(S86)で算出される距離を用いて、(S84)で特定されたインデックスデータをフィルタリングし、残ったインデックスデータを解候補として抽出する(S87)。検索装置1は、当該フィルタリングを具体的に次のように実行する。検索装置1は、ヘルダーの不等式等を用いて、(S81)で得られた半径rに対応する一次元空間上の一次元距離条件を算出し、(S86)で算出された距離がその一次元距離条件に合致しないインデックスデータを解候補から除外する。
検索装置1は、(S87)で抽出された解候補のインデックスデータに対応する特徴量データをDB27から取得し、この特徴量データとクエリデータqとの実距離を算出する(S88)。
検索装置1は、(S88)で算出された実距離が(S82)で得られた半径rより小さい特徴量データを当該範囲問合せの解として抽出する(S89)。
第2実施形態における検索方法は、図8の例に限定されない。例えば、検索装置1は、(S84)で特定されたインデックスデータを解候補に設定してもよい。この場合には、当該検索方法は、(S85)、(S86)及び(S87)を含まなくてもよい。また、検索装置1は、(S84)で特定されたインデックスデータに対応する特徴量データを範囲問合せの解に設定してもよい。この場合には、当該検索方法は、(S85)以降を含まなくてもよい。また、検索装置1は、(S87)で解候補として抽出されたインデックスデータに対応する特徴量データを範囲問合せの解に設定してもよい。この場合には、当該検索方法は、(S88)以降を含まなくてもよい。また、当該検索方法は、図8に示される工程の実行順に制限されない。例えば、(S85)は、(S82)以降で、かつ、(S86)より前であれば、どこ時点で実行されてもよい。
〔第2実施形態における作用及び効果〕
上述のように、第2実施形態では、インデックス対象となる高次元の特徴量データが、相互に可約できない変換係数を用いた変換規則により、一意的に、一次元データに変換され、この一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれる階層的なインデックスが生成される。そして、このインデックスを用いた範囲問合せの検索処理が実行される。この検索処理では、インデックスデータが属する一次元空間上での計算のみにより、範囲問合せの解となる特徴量データに対応するインデックスデータを或る程度絞り込むことができる。つまり、第2実施形態によれば、高次元空間上の距離計算(類似度計算)のような高負荷の処理を行うことなく、一次元空間上の距離計算(減算)のような低負荷の処理で、範囲問合せの解候補を絞り込むことができるため、範囲問合せの検索処理を高速化することができる。
具体的には、第2実施形態では、範囲問合せの距離条件から得られる高次元空間の上界及び下界が、インデックスデータの生成のためのものと同様の変換規則で、インデックスデータの一次元空間にマッピングされる。このマッピングにより、当該一次元空間上における上界点(上界一次元データ)及び下界点(下界一次元データ)が得られ、上界点と下界点との間の範囲内のインデックスデータが特定される。このように、第2実施形態では、範囲問合せの上界及び下界を一次元空間に変換することで、全インデックスデータの中から、範囲問合せの解に対応し得るインデックスデータを絞り込むことができる。
更に、範囲問合せのクエリデータ(検索対象データ)も、インデックスデータの生成のためのものと同様の変換規則で、一次元データ(クエリ一次元データ)に変換され、そのクエリ一次元データとインデックスデータとの距離(差)から、解候補としてのインデックスデータが更に絞り込まれる。このような解候補の更なる絞り込みについても、一次元空間上での計算のみで実現することができる。このように絞り込まれた解候補に関し、高次元空間上での実距離が計算され、その実距離に応じて、範囲問合せの最終的な解が得られる。
このように、第2実施形態における範囲問合せの検索処理によれば、一次元空間での段階的な解候補の絞り込みにより、処理負荷の高い高次元空間上での実距離計算の対象を減らすことに成功し、ひいては、範囲問合せの検索処理の高速化を実現している。
[第3実施形態]
第2実施形態では、範囲問合せの検索機能のみが説明された。第3実施形態における検索装置1は、範囲問合せの検索機能に加えて、k最近傍探索(k-Nearest Neighbors Query)の検索機能も備える。以下、第3実施形態における検索装置1について、第2実施形態と異なる内容を中心に説明する。以下の説明では、第2実施形態と同様の内容については適宜省略する。
〔処理構成〕
図9は、第3実施形態における検索装置1の処理構成例を概念的に示す図である。第3実施形態における検索装置1では、検索部31が、第2実施形態の構成に加えて、最近傍探索部40を更に有する。最近傍探索部40についても、他の処理部と同様に、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。
クエリ取得部30は、k最近傍探索の際には、検索対象データ及びデータ数k(kは自然数)を示すデータ数情報を取得する。
最近傍探索部40は、DB27に格納されるインデックスに含まれるインデックスデータを参照することにより、検索対象データ及びデータ数情報により示されるk最近傍探索の解となる特徴量データを抽出する。k最近傍探索とは、DB27から、検索対象データとの距離が最小であるものから上位k個の特徴量データを抽出する類似検索処理である。最近傍探索部40は、後述する第2類似度算出部42により算出された実距離の中のk番目に小さい実距離を距離条件として、検索対象データと共に用いて、範囲検索部34を動作させ、それにより抽出される特徴量データの中から、実距離の小さい順で上位k個の特徴量データをk最近傍探索の解として抽出する。
最近傍探索部40は、第2対象特定部41、第2類似度算出部42等を含む。
第2対象特定部41は、DB27に格納されるインデックスに含まれるインデックスデータの並び順における、検索対象変換部32により得られた検索対象一次元データの位置に基づいて、その検索対象一次元データの直前及び直後から、データ数情報で示される数kの所定倍の数のインデックスデータを特定する。例えば、第2対象特定部41は、検索対象一次元データの直前k個のインデックスデータを特定し、検索対象一次元データの直後k個のインデックスデータを特定し、トータルで、2k個のインデックスデータを特定する。データ数kの所定倍の数のインデックスデータの具体的特定手法は制限されない。直前及び直後で異なる数のインデックスデータが特定されてもよい。例えば、検索対象一次元データに近い順に、データ数kの所定倍の数のインデックスデータが特定されてもよい。
第2類似度算出部42は、第2対象特定部41により特定された各インデックスデータに対応する各特徴量データと検索対象データとの間の実距離を算出する。
〔動作例〕
以下、第3実施形態における検索方法を図10を用いて説明する。図10は、第3実施形態における検索装置1の、k最近傍探索の動作例を示すフローチャートである。以下の説明では、検索装置1が各方法の実行主体となるが、検索装置1に含まれる上述の各処理部が実行主体となってもよい。また、実行主体は、複数の装置(コンピュータ)であってもよい。以下の説明では、検索対象データはクエリデータqと表記される。
検索装置1は、クエリデータq及びデータ数情報を取得する(S101)。クエリデータqは、検索対象データであり、高次元の特徴量データである。図10の例では、データ数情報はデータ数kを示す。
検索装置1は、クエリデータqを、図8の(S85)と同様の手法により、一次元へ唯一に変換する(S102)。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、クエリデータqがクエリ一次元データに変換される。
検索装置1は、DB27に格納されるインデックスに含まれるインデックスデータの並び順における、(S102)で得られたクエリ一次元データの位置を取得する(S103)。例えば、検索装置1は、クエリ一次元データが前からm番目のインデックスデータと前からn番目のインデックスデータとの間に位置することを認識する。
検索装置1は、検索対象一次元データの直前及び直後から、データ数情報で示される数kの所定倍の数のインデックスデータを特定する(S104)。例えば、検索装置1は、クエリ一次元データの直前k個のインデックスデータを特定し、クエリ一次元データの直後k個のインデックスデータを特定し、トータルで、2k個のインデックスデータを特定する。
検索装置1は、(S104)で特定されたインデックスデータに対応する各特徴量データとクエリデータqとの実距離をそれぞれ算出する(S105)。上記例によれば、検索装置1は、2k個のインデックスデータに対応する2k個の特徴量データの各々と、クエリデータqとの実距離をそれぞれ算出し、2k個の実距離を得る。
検索装置1は、(S105)で算出された実距離の中から、k番目に小さい実距離sを選択する(S106)。
検索装置1は、(S106)で選択された実距離sを距離条件に設定し、図8に示される動作を遂行する(S107)。この動作では、(S102)で既にクエリ一次元データが取得されているため、(S85)は実行されなくてもよい。
検索装置1は、図8の(S89)で解として得られた特徴量データの中から、実距離の小さい順で上位k個の特徴量データをk最近傍探索の解として抽出する(S108)。
〔第3実施形態における作用及び効果〕
第3実施形態では、上述のインデックスを用いたk最近傍探索処理が実行される。具体的には、インデックスデータが属する一次元空間上におけるクエリ一次元データの位置に基づいて、クエリ一次元データの周辺の、データ数kの所定倍の数のインデックスデータが特定され、この特定されたインデックスデータとクエリデータとの間の高次元空間上での実距離が計算される。そして、この実距離が距離条件の半径に設定され、第2実施形態の範囲問合せの検索処理が実行される。範囲問合せの検索処理で解として抽出された特徴量データの中から、実距離の小さい順でk個の特徴量データがk最近傍探索の解として抽出される。
このように、第3実施形態によれば、k最近傍探索処理において、処理負荷の高い高次元空間上での実距離の計算対象を減らしているため、k最近傍探索処理を高速化することができる。
上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各実施例は、内容が相反しない範囲で組み合わせることができる。
上記の各実施形態及び各実施例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各実施例が以下の記載に限定されるものではない。
(付記1)高次元データを取得するデータ取得部と、
相互に可約できない、前記高次元データの次元数分の変換係数を取得する係数取得部と、
前記係数取得部で取得される複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングする変換部と、
前記変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、
を備えるインデックス生成装置。
(付記2)前記変換部は、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
付記1に記載のインデックス生成装置。
(付記3)前記係数取得部は、前記高次元データの次元数分の素数を選択し、該選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
付記2に記載のインデックス生成装置。
(付記4)前記係数取得部は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
前記変換部は、前記データ取得部により取得される高次元データを自然数に正規化し、該正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記係数取得部で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
付記1に記載のインデックス生成装置。
(付記5)付記1から4のいずれか1つに記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
前記高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、
前記係数取得部で取得される前記複数の変換係数と同じ複数の変換係数を用いて、前記変換部と同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングする検索対象変換部と、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象変換部により得られる検索対象一次元データと前記インデックスに前記インデックスデータとして含まれる前記一次元データとの間の距離を算出する距離算出部と、
を備える検索装置。
(付記6)前記検索対象データからの距離条件を取得する第1条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する範囲検索部と、
を更に備え、
前記範囲検索部は、
前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する範囲取得部、
を含み、
前記検索対象変換部は、前記複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
前記範囲検索部は、
前記インデックスに含まれる前記インデックスデータの中から、前記検索対象変換部により前記上界データ及び前記下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する第1対象特定部、
を更に含み、
前記距離算出部は、前記第1対象特定部により特定されるインデックスデータと前記検索対象変換部により得られる前記検索対象一次元データとの間の距離を算出し、
前記範囲検索部は、
前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記距離算出部により算出される距離との比較により、前記第1対象特定部により特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する候補抽出部、
を更に含む、
付記5に記載の検索装置。
(付記7)前記範囲検索部は、
前記候補抽出部により抽出された前記解候補のインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出する第1類似度算出部、
を更に含み、
前記第1類似度算出部により算出される実距離と前記距離条件との比較により、前記範囲問合せの解となる高次元データを抽出する、
付記6に記載の検索装置。
(付記8)データ数k(kは自然数)を示すデータ数情報を取得する第2条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記データ数情報により示されるk最近傍探索の解となる高次元データを抽出する最近傍探索部と、
を更に備え、
前記最近傍探索部は、
前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象変換部により得られる前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定する第2対象特定部と、
前記第2対象特定部により特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出する第2類似度算出部と、
を含み、
前記第2類似度算出部により算出された実距離の中の前記k番目に小さい実距離を前記距離条件として、前記検索対象データと共に用いて、前記範囲検索部を動作させることにより抽出される高次元データの中から、実距離の小さい順で上位k個の高次元データをk最近傍探索の解として抽出する、
付記7に記載の検索装置。
(付記9)少なくとも1つのコンピュータにより実行されるインデックス生成方法において、
高次元データを取得し、
相互に可約できない、前記高次元データの次元数分の変換係数を取得し、
前記取得された複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングし、
前記マッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、
ことを含むインデックス生成方法。
(付記10)前記マッピングは、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
付記9に記載のインデックス生成方法。
(付記11)前記高次元データの次元数分の素数を選択する、
ことを更に含み、
前記変換係数の取得は、前記選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
付記10に記載のインデックス生成方法。
(付記12)前記高次元データを自然数に正規化する、
ことを更に含み、
前記変換係数の取得は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
前記マッピングは、前記正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記取得された各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
付記9に記載のインデックス生成方法。
(付記13)付記9から12のいずれか1つに記載のインデックス生成方法により生成される前記インデックスを用い、かつ、少なくとも1つのコンピュータにより実行される検索方法において、
前記高次元データと同じ次元数の検索対象データを取得し、
前記複数の変換係数を用いて、前記インデックス生成方法に含まれる前記マッピングと同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングし、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象データの前記マッピングにより得られる検索対象一次元データと前記インデックスに含まれる前記一次元データとの間の距離を算出する、
ことを含む検索方法。
(付記14)前記検索対象データからの距離条件を取得し、
前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得し、
前記検索対象データのマッピングと同じ手法及び同じ複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
前記インデックスに含まれる前記インデックスデータの中から、前記上界データ及び前記下界データの前記マッピングにより得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定し、
前記特定されたインデックスデータと前記検索対象一次元データとの間の距離を算出し、
前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記算出された距離との比較により、前記特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する、
ことを更に含む付記13に記載の検索方法。
(付記15)前記解候補として抽出されたインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出し、
前記算出された実距離と前記距離条件との比較により、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する、
ことを更に含む付記14に記載の検索方法。
(付記16)データ数k(kは自然数)を示すデータ数情報を取得し、
前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定し、
前記特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出し、
前記算出された実距離の中の前記k番目に小さい実距離を前記距離条件として特定し、
前記検索対象データ及び前記距離条件に基づく前記範囲問合せの解として抽出される高次元データの中から、実距離の小さい順で上位k個の高次元データをk最近傍探索の解として抽出する、
ことを更に含む付記15に記載の検索方法。
(付記17)付記9から12のいずれか1つに記載のインデックス生成方法を少なくとも1つのコンピュータに実行させるプログラム。
(付記18)付記13から16のいずれか1つに記載の検索方法を少なくとも1つのコンピュータに実行させるプログラム。
1 高次元データ検索装置(検索装置)
10 CPU
11 メモリ
20、101 データ取得部
21、104 インデックス生成部
23、102 係数取得部
24、103 変換部
25 並び替え処理部
27 データベース(DB)
30、201 クエリ取得部
31 検索部
32、202 検索対象変換部
33、203 距離算出部
34 範囲検索部
35 範囲取得部
36 第1対象特定部
37 候補抽出部
38 第1類似度算出部
40 最近傍探索部
41 第2対象特定部
42 第2類似度算出部
100 インデックス生成装置
200 検索装置

Claims (10)

  1. 高次元データを取得するデータ取得部と、
    相互に可約できない、前記高次元データの次元数分の変換係数を取得する係数取得部と、
    前記係数取得部で取得される複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングする変換部と、
    前記変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、
    を備えるインデックス生成装置。
  2. 前記変換部は、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
    請求項1に記載のインデックス生成装置。
  3. 前記係数取得部は、前記高次元データの次元数分の素数を選択し、該選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
    請求項2に記載のインデックス生成装置。
  4. 前記係数取得部は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
    前記変換部は、前記データ取得部により取得される高次元データを自然数に正規化し、該正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記係数取得部で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
    請求項1に記載のインデックス生成装置。
  5. 請求項1から4のいずれか1項に記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
    前記高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、
    前記係数取得部で取得される前記複数の変換係数と同じ複数の変換係数を用いて、前記変換部と同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングする検索対象変換部と、
    前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象変換部により得られる検索対象一次元データと前記インデックスに前記インデックスデータとして含まれる前記一次元データとの間の距離を算出する距離算出部と、
    を備える検索装置。
  6. 前記検索対象データからの距離条件を取得する第1条件取得部と、
    前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する範囲検索部と、
    を更に備え、
    前記範囲検索部は、
    前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する範囲取得部、
    を含み、
    前記検索対象変換部は、前記複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
    前記範囲検索部は、
    前記インデックスに含まれる前記インデックスデータの中から、前記検索対象変換部により前記上界データ及び前記下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する第1対象特定部、
    を更に含み、
    前記距離算出部は、前記第1対象特定部により特定されるインデックスデータと前記検索対象変換部により得られる前記検索対象一次元データとの間の距離を算出し、
    前記範囲検索部は、
    前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記距離算出部により算出される距離との比較により、前記第1対象特定部により特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する候補抽出部、
    を更に含む、
    請求項5に記載の検索装置。
  7. 前記範囲検索部は、
    前記候補抽出部により抽出された前記解候補のインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出する第1類似度算出部、
    を更に含み、
    前記第1類似度算出部により算出される実距離と前記距離条件との比較により、前記範囲問合せの解となる高次元データを抽出する、
    請求項6に記載の検索装置。
  8. データ数k(kは自然数)を示すデータ数情報を取得する第2条件取得部と、
    前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記データ数情報により示されるk最近傍探索の解となる高次元データを抽出する最近傍探索部と、
    を更に備え、
    前記最近傍探索部は、
    前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象変換部により得られる前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定する第2対象特定部と、
    前記第2対象特定部により特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出する第2類似度算出部と、
    を含み、
    前記第2類似度算出部により算出された実距離の中の前記k番目に小さい実距離を前記距離条件として、前記検索対象データと共に用いて、前記範囲検索部を動作させることにより抽出される高次元データの中から、実距離の小さい順で上位k個の高次元データをk最近傍探索の解として抽出する、
    請求項7に記載の検索装置。
  9. データ取得部、係数取得部、変換部及びインデックス生成部を備えたコンピュータにより実行されるインデックス生成方法において、
    前記データ取得部が高次元データを取得し、
    前記係数取得部が、相互に可約できない、前記高次元データの次元数分の変換係数を取得し、
    前記変換部が前記取得された複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングし、
    前記インデックス生成部が前記マッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、
    ことを含むインデックス生成方法。
  10. 請求項9に記載のインデックス生成方法により生成される前記インデックスを用い、かつ、クエリ取得部、検索対象変換部及び距離算出部を備えたコンピュータにより実行される検索方法において、
    前記クエリ取得部が前記高次元データと同じ次元数の検索対象データを取得し、
    前記検索対象変換部が前記複数の変換係数を用いて、前記インデックス生成方法に含まれる前記マッピングと同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングし、
    前記距離算出部が前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象データの前記マッピングにより得られる検索対象一次元データと前記インデックスに含まれる前記一次元データとの間の距離を算出する、
    ことを含む検索方法。
JP2013179285A 2013-08-30 2013-08-30 インデックス生成装置及び検索装置 Active JP6167767B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013179285A JP6167767B2 (ja) 2013-08-30 2013-08-30 インデックス生成装置及び検索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013179285A JP6167767B2 (ja) 2013-08-30 2013-08-30 インデックス生成装置及び検索装置

Publications (2)

Publication Number Publication Date
JP2015049574A JP2015049574A (ja) 2015-03-16
JP6167767B2 true JP6167767B2 (ja) 2017-07-26

Family

ID=52699579

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013179285A Active JP6167767B2 (ja) 2013-08-30 2013-08-30 インデックス生成装置及び検索装置

Country Status (1)

Country Link
JP (1) JP6167767B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017037754A1 (en) 2015-08-28 2017-03-09 Nec Corporation Analysis apparatus, analysis method, and storage medium
JP7103624B2 (ja) 2015-11-06 2022-07-20 日本電気株式会社 データ処理装置、データ処理方法、及び、プログラム
JP6217888B1 (ja) 2016-03-30 2017-10-25 日本電気株式会社 解析装置、解析方法及びプログラム
JP6965939B2 (ja) * 2017-10-16 2021-11-10 日本電気株式会社 検索装置、検索方法及びプログラム
WO2019146184A1 (ja) 2018-01-29 2019-08-01 日本電気株式会社 処理装置、処理方法及びプログラム
CN109783667B (zh) * 2019-01-14 2023-10-27 西安电子科技大学 一种图像存储和检索的方法、客户端及系统
JP7251609B2 (ja) * 2019-03-15 2023-04-04 日本電気株式会社 処理装置、処理方法及びプログラム
JPWO2022064631A1 (ja) 2020-09-25 2022-03-31
CN114205631A (zh) * 2021-10-28 2022-03-18 浙江大华技术股份有限公司 视频存储、目录生成、迁移方法、装置、设备和介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234563A (ja) * 2007-03-23 2008-10-02 Nec Corp オーバレイ管理装置、オーバレイ管理システム、オーバレイ管理方法およびオーバレイ管理用プログラム
US9619501B2 (en) * 2012-01-13 2017-04-11 Nec Corporation Index scan device and index scan method

Also Published As

Publication number Publication date
JP2015049574A (ja) 2015-03-16

Similar Documents

Publication Publication Date Title
JP6167767B2 (ja) インデックス生成装置及び検索装置
Large et al. On time series classification with dictionary-based classifiers
US8243988B1 (en) Clustering images using an image region graph
US10713229B2 (en) Index generating device and method, and search device and search method
US20110295904A1 (en) Cluster identification and transformation
JP6065844B2 (ja) インデックス走査装置及びインデックス走査方法
WO2018134964A1 (ja) 画像検索システム、画像検索方法およびプログラム
JPWO2013129580A1 (ja) 近似最近傍探索装置、近似最近傍探索方法およびそのプログラム
JP4937395B2 (ja) 特徴ベクトル生成装置、特徴ベクトル生成方法及びプログラム
CN113961528A (zh) 基于知识图谱的文件语义关联存储系统及方法
KR20200013130A (ko) 인공 지능 기술 기반의 머신 러닝을 사용하는 특허 도면 이미지의 도면 부호에 대응되는 도면 부호의 설명 데이터 처리 방법 및 장치
JP2016018286A (ja) 行動タイプ判定装置、行動タイプ判定方法及び行動タイプ判定プログラム
Drakopoulos et al. Higher order graph centrality measures for Neo4j
JP6434162B2 (ja) データ管理システム、データ管理方法およびプログラム
JPWO2016006276A1 (ja) インデックス生成装置及びインデックス生成方法
JP2012079186A (ja) 画像検索装置、画像検索方法及びプログラム
Son et al. Discovery of time series k-motifs based on multidimensional index
CN106933824A (zh) 在多个文档中确定与目标文档相似的文档集合的方法和装置
JP2004046612A (ja) データマッチング方法、データマッチング装置、データマッチングプログラムおよびコンピュータで読み取り可能な記録媒体
CN111708745B (zh) 一种跨媒体数据共享表示方法及用户行为分析方法、系统
JP2021152751A (ja) 分析支援装置及び分析支援方法
CN111090743A (zh) 一种基于词嵌入和多值形式概念分析的论文推荐方法及装置
WO2014170965A1 (ja) 文書処理方法、文書処理装置および文書処理プログラム
JP2019096118A (ja) パターン認識プログラム、装置、及び方法
Ramirez-Chacon et al. Indexing and searching point clouds

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170419

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: 20170530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170612

R150 Certificate of patent or registration of utility model

Ref document number: 6167767

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150