(57)【要約】【課題】インデックスデータを用いて元のデータ間の距離を示す指標値を計算可能とするインデックス技術を提供する。【解決手段】インデックス生成装置１００は、高次元データを取得するデータ取得部１０１と、相互に可約できない、上記高次元データの次元数分の変換係数を取得する係数取得部１０２と、係数取得部１０２で取得される複数の変換係数を用いて、上記高次元データを一次元空間へ唯一にマッピングする変換部１０３と、変換部１０３により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部１０４と、を有する。【選択図】図１
2015049574.tif 000002
【特許請求の範囲】
【請求項１】
高次元データを取得するデータ取得部と、
相互に可約できない、前記高次元データの次元数分の変換係数を取得する係数取得部と、
前記係数取得部で取得される複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングする変換部と、
前記変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、
を備えるインデックス生成装置。
【請求項２】
前記変換部は、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
請求項１に記載のインデックス生成装置。
【請求項３】
前記係数取得部は、前記高次元データの次元数分の素数を選択し、該選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
請求項２に記載のインデックス生成装置。
【請求項４】
前記係数取得部は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
前記変換部は、前記データ取得部により取得される高次元データを自然数に正規化し、該正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記係数取得部で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
請求項１に記載のインデックス生成装置。
【請求項５】
請求項１から４のいずれか１項に記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
前記高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、
前記係数取得部で取得される前記複数の変換係数と同じ複数の変換係数を用いて、前記変換部と同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングする検索対象変換部と、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象変換部により得られる検索対象一次元データと前記インデックスに前記インデックスデータとして含まれる前記一次元データとの間の距離を算出する距離算出部と、
を備える検索装置。
【請求項６】
前記検索対象データからの距離条件を取得する第１条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する範囲検索部と、
を更に備え、
前記範囲検索部は、
前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する範囲取得部、
を含み、
前記検索対象変換部は、前記複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
前記範囲検索部は、
前記インデックスに含まれる前記インデックスデータの中から、前記検索対象変換部により前記上界データ及び前記下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する第１対象特定部、
を更に含み、
前記距離算出部は、前記第１対象特定部により特定されるインデックスデータと前記検索対象変換部により得られる前記検索対象一次元データとの間の距離を算出し、
前記範囲検索部は、
前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記距離算出部により算出される距離との比較により、前記第１対象特定部により特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する候補抽出部、
を更に含む、
請求項５に記載の検索装置。
【請求項７】
前記範囲検索部は、
前記候補抽出部により抽出された前記解候補のインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出する第１類似度算出部、
を更に含み、
前記第１類似度算出部により算出される実距離と前記距離条件との比較により、前記範囲問合せの解となる高次元データを抽出する、
請求項６に記載の検索装置。
【請求項８】
データ数ｋ（ｋは自然数）を示すデータ数情報を取得する第２条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記データ数情報により示されるｋ最近傍探索の解となる高次元データを抽出する最近傍探索部と、
を更に備え、
前記最近傍探索部は、
前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象変換部により得られる前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定する第２対象特定部と、
前記第２対象特定部により特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出する第２類似度算出部と、
を含み、
前記第２類似度算出部により算出された実距離の中の前記ｋ番目に小さい実距離を前記距離条件として、前記検索対象データと共に用いて、前記範囲検索部を動作させることにより抽出される高次元データの中から、実距離の小さい順で上位ｋ個の高次元データをｋ最近傍探索の解として抽出する、
請求項７に記載の検索装置。
【請求項９】
少なくとも１つのコンピュータにより実行されるインデックス生成方法において、
高次元データを取得し、
相互に可約できない、前記高次元データの次元数分の変換係数を取得し、
前記取得された複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングし、
前記マッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、
ことを含むインデックス生成方法。
【請求項１０】
請求項９に記載のインデックス生成方法により生成される前記インデックスを用い、かつ、少なくとも１つのコンピュータにより実行される検索方法において、
前記高次元データと同じ次元数の検索対象データを取得し、
前記複数の変換係数を用いて、前記インデックス生成方法に含まれる前記マッピングと同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングし、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象データの前記マッピングにより得られる検索対象一次元データと前記インデックスに含まれる前記一次元データとの間の距離を算出する、
ことを含む検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのインデックス（索引）技術に関する。
【背景技術】
【０００２】
現在、様々な類似検索手法が提案されている。このような類似検索は、画像の特徴量データのような多次元データや高次元データを対象に行われることが多い。
【０００３】
例えば、特許文献１、３及び６には、類似画像検索方法に関する技術が記載されている。特許文献２には、一方のデータから他方のデータへ辿るためのリンクがデータ間に設定されたデータベースを用いて、類似データの検索を行う手法が記載されている。特許文献５には、任意の画像集合を階層的に分類する手法が記載されている。特許文献７には、高次元の特徴ベクトルの集合から、クエリ特徴ベクトルに類似した特徴ベクトルを検索する手法が記載されている。特許文献９には、ハッシュ関数を用いて各学習パターンをハッシュ値に対応するバケットに分類し、入力パターンのハッシュ値に対応するバケットに属する学習パターンの中から、入力パターンに最も類似する学習パターンを探索する手法が記載されている。特許文献１０には、複数の特徴量をベクトルで表現可能な多次元のデータに対し、条件を指定して所望のデータを抽出するデータマッチング方法が記載されている。以降、「高次元」と「多次元」とは、特別に区別することなく用いられる。
【０００４】
このような類似検索では、通常、類似度関数等を用いて対象データ間の類似度が算出される。類似度が高いほど、対象データどうしがより類似すると判断できる。または、距離関数等を用いて、対象データ間の距離が算出される。距離が小さいほど、対象データどうしがより類似すると判断できる。例えば、画像の特徴量データは、多次元の数値ベクトルで表わされ、比較対象の特徴量データ間の類似度が類似度関数により算出される。特許文献４には、データベース内の全ての特徴量に関し、他の特徴量との類似度を計算し、類似度の高い順に上位ｆ（ｘ）件分のＩＤ情報を、類似度順付きで格納しておき、この格納内容を検索することにより、類似特徴量を検索する手法が記載されている。
【０００５】
また、対象データに関しインデックス（索引）が構築され、このインデックスを用いて類似検索を行うことで、検索の高速化が図られる。多次元データのインデックス生成手法としては、Ｒ木（R-Tree）が知られている（非特許文献１参照）。また、特許文献８には、特徴ベクトル空間を複数個の近似領域に分割し、各近似領域の疎密に応じて階層化されたインデックスツリーを生成する手法が記載されている。
【０００６】
また、多次元のデータを元のデータ空間から一次元空間へマッピングし、マッピング後の一次元データを用いてインデックスを構築する手法も存在する。この手法によれば、一次元データを用いて類似検索を行うことで、検索の高速化が実現できる。多次元データを一次元空間へマッピングする手法は、空間充填曲線（Spatial Filling Curve）と呼ばれる。空間充填曲線としては、Ｚカーブ（Ｚ−ｃｕｒｖｅまたはＺ−ｏｒｄｅｒ）（非特許文献２参照）、Ｈｉｌｂｅｒｔ曲線（非特許文献３参照）等が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４５４５６４１号公報
【特許文献２】特開２０１１−０９０３５２号公報
【特許文献３】特開２０１２−０７９１８６号公報
【特許文献４】特開２０００−０３５９６５号公報
【特許文献５】特開２００１−１６００５７号公報
【特許文献６】特許第４９０６９００号公報
【特許文献７】特開２０１１−２５７９７０号公報
【特許文献８】特開２００２−１６３２７２号公報
【特許文献９】特開２００９−０２０７６９号公報
【特許文献１０】特開２００４−０４６６１２号公報
【非特許文献】
【０００８】
【非特許文献１】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年
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のような類似検索手法は、検索処理で距離（類似度）を計算する際に、インデックスデータを元のデータへアクセスするためだけに利用するため、検索処理の更なる高速化の余地を残す。即ち、インデックスデータを元のデータの代わりに用いて、データ間の距離を示す指標値を計算することができれば、検索処理の更なる高速化を実現することができる。
【００１０】
Ｒ木のような空間インデックスを用いた手法は、最小包含矩形（ＭＢＲ；Minimum Bounding Rectangle）を用いて、元のデータを階層的に囲み、木構造インデックスを構築する。そして、そのインデックスを基に検索時に枝刈りを行うことで、元のデータへのアクセス回数を減らし、結果、類似検索を高速化する。このような空間インデックス技術は、インデックスデータをデータ間の距離の計算に用いることを想定していないため、その空間インデックスを用いる類似検索処理において、インデックスデータを用いてデータ間の距離を計算することはできない。
【００１１】
一方、空間充填曲線を用いて手法によれば、生成されるインデックスデータは、一次元空間上での順番を示すため、そのインデックスデータを用いて順番の遠近を判定し、この判定結果をデータ間距離として利用することは可能である。ところが、その手法によれば、隣接するインデックスデータ間の距離は全て等しくなるため、データ間の距離の大きさを区別することは困難となり、類似検索の効率を低下させる。
【００１２】
本発明は、上述のような事情に鑑みてなされたものであり、インデックスデータを用いて元のデータ間の距離を示す指標値を計算可能とするインデックス技術を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【００１４】
第１の側面は、インデックス生成装置に関する。第１の側面に係るインデックス生成装置は、高次元データを取得するデータ取得部と、相互に可約できない、当該高次元データの次元数分の変換係数を取得する係数取得部と、係数取得部で取得される複数の変換係数を用いて、当該高次元データを一次元空間へ唯一にマッピングする変換部と、変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、を有する。
【００１５】
第２の側面は、少なくとも１つのコンピュータにより実行されるインデックス生成方法に関する。第２の側面に係るインデックス生成方法は、高次元データを取得し、相互に可約できない、当該高次元データの次元数分の変換係数を取得し、取得された複数の変換係数を用いて、当該高次元データを一次元空間へ唯一にマッピングし、マッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、ことを含む。
【００１６】
第３の側面は、第１の側面に係るインデックス生成装置により生成されるインデックスを用いる検索装置に関する。第３の側面に係る検索装置は、当該高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、上記係数取得部で取得される複数の変換係数と同じ複数の変換係数を用いて、上記変換部と同じ手法で、検索対象データを一次元空間へ唯一にマッピングする検索対象変換部と、当該高次元データと検索対象データとの間の類似度を評価する際に、検索対象変換部により得られる検索対象一次元データとインデックスにインデックスデータとして含まれる一次元データとの間の距離を算出する距離算出部と、を有する。
【００１７】
第４の側面は、第２の側面に係るインデックス生成方法により生成されるインデックスを用いる検索方法に関する。第４の側面に係る検索方法は、当該高次元データと同じ次元数の検索対象データを取得し、上記複数の変換係数を用いて、第２の側面に係るインデックス生成方法に含まれるマッピングと同じ手法で、検索対象データを一次元空間へ唯一にマッピングし、当該高次元データと検索対象データとの間の類似度を評価する際に、検索対象データのマッピングにより得られる検索対象一次元データとインデックスに含まれる一次元データとの間の距離を算出する、ことを含む。
【００１８】
本発明の他の側面としては、第２の側面又は第４の側面に係る方法を少なくとも１つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【発明の効果】
【００１９】
上記各側面によれば、インデックスデータを用いて元のデータ間の距離を示す指標値を計算可能とするインデックス技術を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】第１実施形態におけるインデックス生成装置の処理構成例を概念的に示す図である。
【図２】第１実施形態におけるインデックス生成装置の動作例を示すフローチャートである。
【図３】第１実施形態における検索装置の処理構成例を概念的に示す図である。
【図４】第１実施形態における検索装置の動作例を示すフローチャートである。
【図５】第２実施形態における高次元データ検索装置のハードウェア構成例を概念的に示す図である。
【図６】第２実施形態における高次元データ検索装置の処理構成例を概念的に示す図である。
【図７】第２実施形態における高次元データ検索装置の、インデックス生成に関する動作例を示すフローチャートである。
【図８】第２実施形態における高次元データ検索装置の、範囲問合せ（Range Query）に関する検索方法に関する動作例を示すフローチャートである。
【図９】第３実施形態における高次元データ検索装置の処理構成例を概念的に示す図である。
【図１０】第３実施形態における高次元データ検索装置の、ｋ最近傍探索の動作例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について説明する。なお、以下に挙げる各実施形態はそれぞれ例示であり、本発明は以下の各実施形態の構成に限定されない。
【００２２】
［第１実施形態］
まず、第１実施形態として、インデックス生成装置、インデックス生成方法、そのインデックス生成装置で生成されるインデックスを用いる検索装置、及び、そのインデックス生成方法で生成されるインデックスを用いる検索方法について、説明する。
【００２３】
図１は、第１実施形態におけるインデックス生成装置１００の処理構成例を概念的に示す図である。第１実施形態におけるインデックス生成装置１００は、高次元データを取得するデータ取得部１０１と、相互に可約できない、上記高次元データの次元数分の変換係数を取得する係数取得部１０２と、係数取得部１０２で取得される複数の変換係数を用いて、上記高次元データを一次元空間へ唯一にマッピングする変換部１０３と、変換部１０３により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部１０４と、を有する。
【００２４】
インデックス生成装置１００は、例えば、後述する詳細実施形態（第２実施形態以降）における高次元データ検索装置１と同様のハードウェア構成を有する。その高次元データ検索装置１と同様に、プログラムが処理されることで、上述の各処理部が実現される。インデックス生成装置１００のハードウェア構成は制限されない。
【００２５】
次に、第１実施形態におけるインデックス生成方法について図２を用いて説明する。図２は、第１実施形態におけるインデックス生成装置１００の動作例を示すフローチャートである。以下の説明では、インデックス生成装置１００が当該インデックス生成方法の実行主体となるが、インデックス生成装置１００に含まれる上述の各処理部が実行主体となってもよい。
【００２６】
第１実施形態におけるインデックス生成方法は、インデックス生成装置１００のような、少なくとも１つのコンピュータにより実行される。当該インデックス生成方法は、高次元データを取得し（Ｓ２１）、相互に可約できない、上記高次元データの次元数分の変換係数を取得し（Ｓ２２）、（Ｓ２２）で取得された複数の変換係数を用いて、上記高次元データを一次元空間へ唯一にマッピングし（Ｓ２３）、（Ｓ２３）のマッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する（Ｓ２４）、ことを含む。
【００２７】
本実施形態では、インデックスが付与される対象となる高次元データが取得され、更に、この高次元データの次元数分の変換係数が取得される。取得される高次元データのデータ型は制限されない。更に、上述したように、高次元データは、複数次元のデータを意味し、多次元データや複数次元データと区別されない。また、取得される複数の変換係数は、相互に可約できないという特性を持つ。ここで、相互に可約できないとは、更なる単純化を行うことができないことを意味する。具体的には、全ての変換係数が整数である場合に、当該変換係数の全てのペアが、１以外の公約数を持たないことを意味し、小数の変換係数を含む場合に、当該変換係数の全てのペアが自然数で割り切れないことを意味する。
【００２８】
このような相互に可約できない複数の変換係数を用いて、上記高次元データが、一次元空間へ唯一にマッピングされる。唯一にマッピングとは、複数の高次元データがその一次元空間の同じ点（１つの一次元データ）に写像されないことを意味する。この唯一のマッピングは、相互に可約できない複数の変換係数を用いることで実現することができる。本実施形態は、相互に可約できない複数の変換係数を用いるマッピングであれば、マッピング方法自体を制限しない。
【００２９】
本実施形態では、上記マッピングにより高次元データから変換された一次元データをインデックスデータとして含むインデックスが生成される。生成されたインデックスでは、当該インデックスデータが、昇順又は降順に整列された状態で階層的に管理される。このインデックスの生成には、Ｂ木（Ｂ＋木、Ｂ＊木など）と呼ばれる周知の階層型インデックスを利用することができる。このインデックスデータは、元の高次元データへのポインタとしても利用されてもよい。
【００３０】
このように、本実施形態によれば、各高次元データに対応する各インデックスデータが独自の（唯一性を持つ）実数となるため、各インデックスデータを用いて、高次元データ間の距離（類似度）を示す指標値を算出することができる。即ち、インデックスデータ間の距離が、対応する高次元データ間の距離を示す指標値となり得る。ここで、指標値とは、高次元データ間の距離の値と完全に一致しないとしても、その距離の指標となり得る値を意味する。また、本実施形態によれば、元の高次元データが一次元空間上に唯一にマッピングされて得られる一次元データをインデックスデータとすることで、元の高次元データが有する情報を失うことなく、インデックス空間の複雑さを大幅に削減することができる。
【００３１】
ここで、上述のインデックス生成装置１００及びインデックス生成方法に具現化されている技術的思想を説明すると共に、相互に可約できない変換係数及び高次元データの一次元空間へのマッピング処理に関する具体例を例示する。
【００３２】
本発明者は、数論における素因数分解の基本原理に着眼し、この基本原理の逆、即ち、素因数分解の逆を類似検索のためのインデックスデータの生成に採用するという着想を得た。素因数分解は、任意の正の整数（自然数）を素数の積の形で表すことである。「素因数分解の基本原理」とは、素因数分解の変換過程に持つ特殊な性質を意味する。素因数分解には、次のような性質がある。
【００３３】
任意の正の整数に対して、素因数分解は一意的に決定される。この性質は、素因数分解の一意性とも表記される。
【００３４】
例えば、正の整数２８８を素因数分解すると、次のようになる。
２８８＝２×２×２×２×２×３×３＝２５×３２
即ち、正の整数２８８は、一義的に「２×２×２×２×２×３×３」に因数分解される。また、このような連続積は、素数の冪乗と他の素数の冪乗との積としても表すこともできる。即ち、正の整数２８８は、素数２の５乗と素数３の２乗との積と表すこともできる。
【００３５】
このような素因数分解の性質により、素因数分解の逆演算も一義的である。よって、素数を予め選択し、選択された各素数に、対応する冪数を与えることにより、必ず唯一の正の整数が得られる。
例えば、素数２及び素数３を選択し、素数２の冪数に５を、素数３の冪数に２を与え、素因数分解の逆演算をすると、正の整数２８８が一意的に算出される。
２５×３２＝２×２×２×２×２×３×３＝２８８
【００３６】
本発明者は、このような素因数分解の逆演算の一意性を踏まえつつ、素因数分解の視点を変えて、次の考察を行った。
【００３７】
まず、上述のように選択される素数の個数を類似検索処理のデータ空間の次元数と定義する。これにより、当該データ空間の次元数が、選択される素数の個数となるように、当該データ空間の次元数分の素数が予め選択される。上述の例では、２つの素数２及び３が選ばれているため、データ空間の次元数は２である。
【００３８】
更に、選択された各素数に与えられる冪数を、当該データ空間上の高次元データを形成する各次元の要素値又はその要素値が自然数に正規化された数値と定義する。これにより、対象となる高次元データの各次元の要素値が自然数の場合には、その要素値が、選択された各素数に冪数として与えられる。また、対象となる高次元データの各次元の要素値が自然数でない場合には、その要素値が自然数に正規化された数値が、選択された各素数に冪数として与えられる。上述の例では、対象の高次元データは、素数２及び３に与えられる冪数５及び２を各次元の要素値として持つ２次元のベクトルデータ、又は、各次元の要素値が正規化されることで得られる数値が冪数５及び２となる２次元ベクトルデータと考えられる。
【００３９】
ここで、上述のような素因数分解の逆演算を特定の変換関数と捉えると、素因数分解の逆演算は、ある種の変換（又はマッピング）と見なすことができる。そして、この考え方と上述の定義とを合わせると、上述の例は、２次元空間の点（５，２）を１次元の点（２８８）に変換することに相当する。素因数分解及びその逆演算の一意性から、この変換も一意的である。
【００４０】
このような考察から、本発明者は、「素因数分解の逆演算を利用することにより、任意のｄ次元空間上のベクトルデータを１次元空間の単一の正の整数へ唯一に変換することができる」こと（以降、第１補題と表記する）を見出した。以下、この第１補題を用いた具体例を実施例１として説明する。
【実施例１】
【００４１】
実施例１におけるインデックス生成装置１００では、係数取得部１０２は、当該高次元データの次元数分の素数を複数の変換係数として取得する。変換部１０３は、データ取得部１０１により取得される高次元データを自然数に正規化し、この正規化された高次元データを形成する各次元の要素データを冪数として用いて、係数取得部１０２で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する。インデックス生成部１０４は、変換部１０３によりこのようにして算出された一次元データがインデックスデータとして含まれるインデックスを生成する。
【００４２】
以下、実施例１におけるインデックス生成装置１００の上記処理をより詳細に図２を用いて説明する。
【００４３】
インデックス生成装置１００は、インデックス対象となるｄ次元データｖを取得する（Ｓ２１）。ｄは２以上の整数である。データｖは、ｄ次元空間上の任意の点であり、次のように表記される。
ｖ（ｘ１，ｘ２，・・・，ｘｄ）
【００４４】
ここで、各次元の要素データ（ｘ１，ｘ２，・・・，ｘｄ）は自然数である。但し、取得されたｄ次元データｖの各次元の要素データは、自然数でなくてもよい。この場合には、インデックス生成装置１００は、ｄ次元データｖを自然数に正規化すればよい。具体的には、インデックス生成装置１００は、ｄ次元データｖの各次元の要素データを、元のデータに復元可能に、自然数にそれぞれ変換する。
【００４５】
インデックス生成装置１００は、ｄ個の素数を適当に選択する（Ｓ２２）。インデックス生成装置１００は、素数表を予め保持していてもよい。選択された素数は、ｐ１，ｐ２，・・・，ｐｄと表記される。
【００４６】
インデックス生成装置１００は、各次元の要素データを冪数として用いて、上記選択された各素数を底としてそれぞれ冪乗して得られる値の積を算出する（Ｓ２３）。この処理は、次の（式１）で表わされる。
【数１】
2015049574.tif 000003
【００４７】
上記（式１）は、自然数を要素データとしても持つｄ次元空間上のデータＮｄを変換関数ｆを用いて、１次元の自然数Ｎへ変換することを示す。ここで、変換関数ｆは、以下の（式２）で表すことができる。（式２）において、ｐ及びｖは上述のとおりである。ｕは、一次元への変換後（マッピング後）の値を示す。
【数２】
2015049574.tif 000004
【００４８】
しかしながら、実施例１の手法では、次元数ｄが大きくなる程、変換後の一次元データの値（ｕ）が急激に大きくなる。よって、実施例１によれば、実行するコンピュータ（インデックス生成装置１００）の要求性能が高くなってしまう。そこで、本発明者は、実施例１の課題に対して次のような考察を行い、上記第１補題を更に発展させた。
【００４９】
素因数分解の逆演算の上記例において、両辺に対して、素数２及び３の積を底とする対数を取る。この演算は、次のように表わされる。
【数３】
2015049574.tif 000005
【００５０】
ここで、次のようなα１及びα２を定義し、α１及びα２を用いると、上記（式３）は、次の（式４）のように表わされる。以下の（式４）の右辺は実数である。また、α１及びα２は、定数であり、かつ、選択される素数のみに依存しているため、事前に計算しておくことが可能である。
【数４】
2015049574.tif 000006
【００５１】
このように、上記例で示される、素数２及び３を用いて、２次元空間上の点（５，２）を一次元の値（２８８）に変換することは、上記（式４）に示される変換に置き換えられる。（式４）は、定数α１及びα２を係数とする線形変換を示し、定数α１及びα２は、素数の積を底とする対数計算で求められる、線形変換の係数である。そして、この線形変換に潜在する本質は、変換係数α１及びα２がお互いに可約ではないことにある。
【００５２】
このような考察から、本発明者は、「相互に可約できない変換係数を取る線形変換を利用することにより、任意のｄ次元空間上のベクトルデータを１次元空間上の単一の正の実数へ一意的に変換することができる」こと（以降、第２補題と表記する）を見出した。以下、この第２補題を用いた具体例を実施例２として説明する。
【実施例２】
【００５３】
実施例２におけるインデックス生成装置１００では、変換部１０３は、高次元データを形成する各次元の要素データと、係数取得部１０２で取得される各変換係数との積の和を算出する。言い換えれば、変換部１０３は、各変換係数を用いて、高次元データを線形変換する。例えば、係数取得部１０２は、上記（式４）で定義される定数α１及びα２のような変換係数を取得する。具体的には、係数取得部１０２は、高次元データの次元数分の素数を選択し、この選択された素数の積を底とする各素数の対数を当該変換係数として取得する。
【００５４】
以下、実施例２におけるインデックス生成装置１００の上記処理をより詳細に図２を用いて説明する。
【００５５】
インデックス生成装置１００は、インデックス対象となるｄ次元データｖを取得する（Ｓ２１）。ｄは２以上の整数である。データｖは、ｄ次元空間上の任意の点であり、次のように表記される。実施例２では、各次元の要素データ（ｘ１，ｘ２，・・・，ｘｄ）は自然数でなくてもよい。
ｖ（ｘ１，ｘ２，・・・，ｘｄ）
【００５６】
インデックス生成装置１００は、ｄ個の素数を適当に選択する。インデックス生成装置１００は、素数表を予め保持していてもよい。選択された素数は、ｐ１，ｐ２，・・・，ｐｄと表記される。更に、インデックス生成装置１００は、その選択された素数の積を底とする各素数の対数を当該変換係数として取得する（Ｓ２２）。この変換係数の算出は、以下の（式５）で表すことができる。
【００５７】
【数５】
2015049574.tif 000007
上記（式５）において、αｉは、取得される複数の変換係数を示す。ｄ及びｐは上述のとおりである。
【００５８】
インデックス生成装置１００は、高次元データを形成する各次元の要素データと、変換係数αｉとの積の和を算出する（Ｓ２３）。この処理は、次の（式６）で表わされる。
【数６】
2015049574.tif 000008
【００５９】
上記（式６）は、ｄ次元空間上のデータＮｄを変換関数ｇを用いて、１次元の正の実数Ｒへ変換することを示す。ここで、変換関数ｇは、以下の（式７）で表すことができる。（式７）において、ｄ及びｖ並びにαは上述のとおりである。ｕは、一次元への変換後（マッピング後）の値を示す。
【数７】
2015049574.tif 000009
【００６０】
第２補題で示されるように、高次元データの一次元空間への唯一のマッピングは、相互に可約できない変換係数を用いた線形変換で実現することができる。従って、変換係数自体は、上記内容、即ち、素数の積を底とする各素数の対数に制限されない。例えば、インデックス生成装置１００（係数取得部１０２）は、選択された各素数の平方根をそれぞれ変換係数として取得することもできる。
【００６１】
このように、実施例１及び２によれば、素因数分解の逆演算の一意性、又は、相互に可約でない係数を用いた線形変換の一意性を用いることにより、任意のｄ次元空間上のベクトルデータを１次元空間の単一の正の実数（自然数を含む）へ一意的に変換することができる。そして、得られた一次元データがインデックスデータとして用いられ、このインデックスデータにおける数値が異なる唯一性を持つ実数であるため、このインデックスデータを用いて元のデータ間の距離を示す指標値を計算することができる。
【００６２】
図３は、第１実施形態における検索装置２００の処理構成例を概念的に示す図である。第１実施形態における検索装置２００は、上述のインデックス生成装置１００で生成されたインデックスを用いる。検索装置２００は、必要に応じて、そのインデックスに含まれるインデックスデータ（一次元データ）をインデックス生成装置１００から取得してもよいし、インデックス全体を予めインデックス生成装置１００から取得し保持していてもよい。
【００６３】
検索装置２００は、上記高次元データと同じ次元数の検索対象データを取得するクエリ取得部２０１と、上記係数取得部１０２で取得される複数の変換係数と同じ複数の変換係数を用いて、上記変換部１０３と同じ手法で、その検索対象データを一次元空間へ唯一にマッピングする検索対象変換部２０２と、上記高次元データとその検索対象データとの間の類似度を評価する際に、検索対象変換部２０２により得られる検索対象一次元データと上記インデックスに含まれる一次元データとの間の距離を算出する距離算出部２０３と、を有する。
【００６４】
検索装置２００は、例えば、後述する詳細実施形態（第２実施形態以降）における高次元データ検索装置１と同様のハードウェア構成を有する。その高次元データ検索装置１と同様に、プログラムが処理されることで、上述の各処理部が実現される。検索装置２００のハードウェア構成は制限されない。
【００６５】
以下、第１実施形態における検索方法について図４を用いて説明する。図４は、第１実施形態における検索装置２００の動作例を示すフローチャートである。以下の説明では、検索装置２００が当該検索方法の実行主体となるが、検索装置２００に含まれる上述の各処理部が実行主体となってもよい。
【００６６】
第１実施形態における検索方法は、検索装置２００のような、少なくとも１つのコンピュータにより実行される方法であって、かつ、上述のインデックス生成方法により生成されるインデックスを用いる方法である。第１実施形態における検索方法は、上記高次元データと同じ次元数の検索対象データを取得し（Ｓ４１）、上述のインデックス生成方法で取得されたものと同じ複数の変換係数を用いて、上述のインデックス生成方法に含まれる上記マッピングと同じ手法で、検索対象データを一次元空間へ唯一にマッピングし（Ｓ４２）、上記高次元データとその検索対象データとの間の類似度を評価する際に、その検索対象データの（Ｓ４２）のマッピングにより得られる検索対象一次元データと上記インデックスにインデックスデータとして含まれる一次元データとの間の距離を算出する（Ｓ４３）、ことを含む。
【００６７】
上述のインデックス生成装置１００及びインデックス生成方法によれば、上述したように、インデックスデータ間の距離が、対応する高次元データ間の距離を示す指標値となり得る。そこで、本実施形態では、当該インデックスデータの生成手法と同様に、検索対象データが一次元空間へ唯一にマッピングされ、検索対象一次元データが取得される。そして、当該インデックスデータの元となる高次元データとその検索対象データとの間の類似度を評価する際に、検索対象一次元データと、当該インデックスデータとしての一次元データとの間の距離が算出される。算出された距離は、対応する高速データ間の距離の指標値となり得るため、その距離を用いて、検索処理を行うことができる。
【００６８】
このように、本実施形態によれば、インデックスデータを用いて、対応する高次元データ間の距離の指標値を算出することができるため、その指標値を用いて検索結果の正解となる高次元データの数を或る程度絞り込むことができる。従って、本実施形態によれば、実距離を計算すべき高次元データの数を減らすことができ、ひては、検索処理の更なる効率化及び高速化を実現することができる。
【００６９】
以下、上述の第１実施形態について更に詳細を説明する。以下には、詳細実施形態として、第２実施形態及び第３実施形態を例示する。以下の各実施形態は、第１実施形態における、インデックス生成装置１００、検索装置２００、インデックス生成方法及び検索方法を高次元データ検索装置に適用した場合の例である。なお、上述の第１実施形態は、高次元データを扱う検索装置への適用に限定されるものではなく、類似度を算出し得る様々なデータの検索装置に適用可能である。
【００７０】
［第２実施形態］
〔装置構成〕
図５は、第２実施形態における高次元データ検索装置（以降、単に検索装置と表記する）１のハードウェア構成例を概念的に示す図である。第２実施形態における検索装置１は、図５に示されるように、ハードウェア構成として、相互にバスにより接続される、ＣＰＵ（Central Processing Unit）１０、メモリ１１、入出力インタフェース（Ｉ／Ｆ）１２、通信装置１３等を有する。
【００７１】
メモリ１１は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク等である。入出力Ｉ／Ｆ１２は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置（図示せず）、表示装置やプリンタ等のようなユーザに情報を提供する出力装置（図示せず）、可搬型記録媒体などとデータをやりとりする装置などと接続可能である。通信装置１３は、他のノードと通信を行う。検索装置１は、入力装置や出力装置を持たなくてもよく、検索装置１のハードウェア構成は制限されない。
【００７２】
〔処理構成〕
図６は、第２実施形態における検索装置１の処理構成例を概念的に示す図である。第２実施形態における検索装置１は、図６に示されるように、データ取得部２０、インデックス生成部２１、データベース（ＤＢ）２７、クエリ取得部３０、検索部３１等を有する。これら各処理部は、例えば、ＣＰＵ１０によりメモリ１１に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体から入出力Ｉ／Ｆ１２を介して、又は、ネットワーク上の他のコンピュータから通信装置１３を介してインストールされ、メモリ１１に格納されてもよい。
【００７３】
また、上述の処理部は、複数台のコンピュータにより実現されてもよい。例えば、インデックス生成のためのデータ取得部２０及びインデックス生成部２１は、１つのコンピュータで実現され、クエリ取得部３０及び検索部３１は、他のコンピュータで実現されてもよい。また、ＤＢ２７は、更に異なる他のコンピュータで実現されてもよい。
【００７４】
データ取得部２０は、上述のデータ取得部１０１に相当する。データ取得部２０は、映像等のような高次元の特徴量データを高次元データとして取得する。特徴量データは、入力画面等を入力装置を用いてユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力Ｉ／Ｆ１２又は通信装置１３を経由して取得された情報であってもよい。データ取得部２０により取得される高次元データの内容自体は制限されない。
【００７５】
インデックス生成部２１は、データ取得部２０により取得される特徴量データ（高次元データ）に対しインデックスを付与し、その特徴量データ及びインデックス情報をＤＢ２７に格納する。インデックス生成部２１は、係数取得部２３、変換部２４、並び替え処理部２５等を含む。図６では、説明の便宜のために、係数取得部２３、変換部２４及び並び替え処理部２５が、インデックス生成部２１に内包されるように図示される。これら各処理部の関係を図６に示される関係に限定されない。
【００７６】
ＤＢ２７は、多数の特徴量データ及びそのインデックス情報を格納する。但し、ＤＢ２７は、検索装置１以外の他のコンピュータ上に実現されてもよい。この場合、インデックス生成部２１は、他のコンピュータと通信を行うことにより、ＤＢ２７にアクセスする。
【００７７】
係数取得部２３及び変換部２４は、上述の係数取得部１０２及び変換部１０３に相当する。係数取得部２３及び変換部２４は、上記補題１に基づく処理を実行してもよいし、上記補題２に基づく処理を実行してもよい。並び替え処理部２５は、上述のインデックス生成部１０４に相当する。並び替え処理部２５は、変換部２４により特徴量データから変換される一次元データを昇順又は降順に並び替えてインデックスデータとし、Ｂ＋木を用いてインデックスを生成する。
【００７８】
クエリ取得部３０は、上述のクエリ取得部２０１に相当する。クエリ取得部３０は、検索対象の特徴量データを取得する。検索対象の特徴量データは、データ取得部２０で取得される特徴量データと同じ次元数のデータであり、以降、検索対象データと表記する。クエリ取得部３０は、検索対象データに加えて、その検索対象データからの距離条件を更に取得する。この距離条件は、検索対象データの高次元空間における距離情報であり、その距離条件には、例えば、検索対象データの高次元空間上における、検索対象データを中心とする半径ｒが用いられる。クエリ取得部３０により取得される検索対象データ及び距離条件は、類似検索の範囲問合せで指定される情報であり、類似検索の問い合わせ範囲を示す。
【００７９】
検索部３１は、ＤＢ２７に格納されるインデックスを用いて、ＤＢ２７に格納される特徴量データの中から、検索対象データ及び距離条件に基づく範囲問合せに適合する特徴量データを検索する。範囲問合せとは、検索対象データとの距離が距離条件に適合する特徴量データを、ＤＢ２７から抽出する類似検索要求を意味する。検索結果のデータは、入出力Ｉ／Ｆ１２を介して表示装置や印刷装置に出力されてもよいし、入出力Ｉ／Ｆ１２を介して可搬型記録媒体に格納されてもよいし、通信装置１３を介して他のコンピュータに送信されてもよい。
【００８０】
検索部３１は、図６に示されるように、検索対象変換部３２、距離算出部３３、範囲検索部３４等を含む。
【００８１】
検索対象変換部３２は、上述の検索対象変換部２０２に相当する。検索対象変換部３２は、検索対象変換部２０２と同様に、クエリ取得部３０で取得された検索対象データを検索対象一次データに変換する。更に、検索対象変換部３２は、検索対象データの変換と同様の手法で、後述する範囲取得部３５により取得される、上界データ及び下界データを一次元空間へ唯一にマッピングする。これは、検索対象データ及び距離条件により示される、高次元空間上の類似検索範囲を一次元空間に写像することに相当する。この処理により、特徴量データが属する高次元空間上の上界データ及び下界データが上界一次元データ及び下界一次元データに変換される。
【００８２】
検索対象変換部３２は、係数取得部２３で取得される複数の変換係数をインデックス生成部２１から取得してもよいし、係数取得部２３と同じ手法で、係数取得部２３で取得される複数の変換係数と同じ複数の変換係数を取得してもよい。また、検索対象変換部３２は、変換部２４と同じ変換ルール（マッピングルール、変換関数）を持つ。
【００８３】
距離算出部３３は、上述の距離算出部２０３に相当する。距離算出部３３は、後述の第１対象特定部３６により特定されるインデックスデータと検索対象変換部３２により得られる検索対象一次元データとの間の距離を算出する。そのインデックスデータ及び検索対象一次元データは共に一次元の値であるため、距離算出部３３は、各値の差を当該距離として算出する。
【００８４】
範囲検索部３４は、ＤＢ２７に格納されるインデックスに含まれるインデックスデータを参照することにより、検索対象データ及び距離条件に基づく範囲問合せの解となる特徴量データを抽出する。
【００８５】
範囲検索部３４は、図６に示されるように、範囲取得部３５、第１対象特定部３６、候補抽出部３７、第１類似度算出部３８等を含む。範囲検索部３４は、後述の第１類似度算出部３８により算出される実距離と問合せ範囲情報との比較により、当該範囲問合せの解となる特徴量データを抽出する。但し、範囲検索部３４は、後述の候補抽出部３７により解候補として抽出されるインデックスデータに対応する特徴量データを当該範囲問合せの解として抽出することもできる。この場合には、範囲検索部３４は、第１類似度算出部３８を持たなくてもよい。更に、範囲検索部３４は、後述の第１対象特定部３６により特定されるインデックスデータに対応する特徴量データを当該範囲問合せの解として抽出することもできる。この場合には、範囲検索部３４は、候補抽出部３７及び第１類似度算出部３８を持たなくてもよい。
【００８６】
範囲取得部３５は、クエリ取得部３０により取得される検索対象データ及び距離条件により示される、検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する。距離条件が半径ｒを示す場合、上界データ及び下界データは、その高次元空間上で、検索対象データに対応する点から半径ｒ以内に含まれる特徴量データ群の中の上界及び下界を示す。よって、範囲取得部３５により取得される上界データ及び下界データは、検索対象データと同じ次元数を持つ。
【００８７】
第１対象特定部３６は、ＤＢ２７に格納されるインデックスの中から、検索対象変換部３２により上界データ及び下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する。具体的には、第１対象特定部３６は、当該インデックスの中から、下界一次元データより大きく、かつ、上界一次元データよりも小さいインデックスデータを特定する。
【００８８】
候補抽出部３７は、距離条件から得られる一次元空間上の一次元距離条件と、距離算出部３３により算出される距離との比較により、第１対象特定部３６により特定されたインデックスデータをフィルタリングし、このフィルタリングで得られるインデックスデータを解候補として抽出する。クエリ取得部３０により取得される距離条件は、上述のとおり、特徴量データの高次元空間における距離を示し、一次元距離条件は、その高次元空間の距離に対応する一次元空間上の距離を示す。この一次元距離条件は、例えば、ヘルダーの不等式を用いて算出される。よって、候補抽出部３７は、第１対象特定部３６により特定される、上界一次元データ及び下界一次元データの間の範囲内のインデックスデータの中から、各インデックスデータと検索対象変換部３２により得られる検索対象一次元データとの間の距離がその一次元距離条件に合致しないインデックスデータを除外し、残ったインデックスデータを解候補とする。
【００８９】
第１類似度算出部３８は、候補抽出部３７により抽出された解候補のインデックスデータに対応する特徴量データと検索対象データとの間の実距離を算出する。算出される実距離は、特徴量データ及び検索対象データが属する高次元空間上の距離である。
【００９０】
〔動作例〕
以下、第２実施形態におけるインデックス生成方法及び検索方法を、第２実施形態における検索装置１の動作に基づいて、説明する。以下の説明では、検索装置１が各方法の実行主体となるが、検索装置１に含まれる上述の各処理部が実行主体となってもよい。また、実行主体は、複数の装置（コンピュータ）であってもよい。
【００９１】
まず、第２実施形態におけるインデックス生成方法について図７を用いて説明する。図７は、第２実施形態における検索装置１の、インデックス生成に関する動作例を示すフローチャートである。但し、図７には、上記第１補題に基づくインデックス生成方法が例示されている。
【００９２】
検索装置１は、インデックス対象となる特徴量データの次元数ｄを取得する（Ｓ７１）。次元数ｄは、入力装置を用いて入力画面等をユーザが操作することにより入力されてもよいし、可搬型記録媒体、他のコンピュータ等から取得されてもよい。
【００９３】
検索装置１は、ｄ個の素数を選択する（Ｓ７２）。検索装置１は、素数表からその素数を選択してもよい。この場合、検索装置１は、十分な数の素数を含む素数表を予め保持していてもよいし、他のコンピュータ等から取得してもよい。
【００９４】
続いて、検索装置１は、（Ｓ７２）で選択されたｄ個の素数に基づいて、変換係数を決定する（Ｓ７３）。図７の例では、選択されたｄ個の素数がそのままｄ個の変換係数に決定される。上記第２補題に基づくインデックス生成方法の場合には、検索装置１は、選択されたｄ個の素数の積を底とするｄ個の素数の各々の対数をｄ個の変換係数として算出する。また、他の方法の場合には、検索装置１は、選択されたｄ個の素数の各々の平方根をｄ個の変換係数として算出してもよい。変換係数の全てのペアが相互に可約できないように、複数の変換係数が決められるのであれば、具体的な決定方法は制限されない。
【００９５】
検索装置１は、インデックス対象となる特徴量データを取得する（Ｓ７４）。特徴量データは、入力装置を用いて入力画面等をユーザが操作することにより入力されてもよいし、可搬型記録媒体、他のコンピュータ等から取得されてもよい。
【００９６】
検索装置１は、（Ｓ７４）で取得された特徴量データを正規化する（Ｓ７５）。具体的には、検索装置１は、特徴量データの各次元の要素データを自然数にそれぞれ正規化する。ここでの正規化とは、各次元の要素データを、元のデータに復元可能に、自然数に変換することを意味する。よって、小数を単純に小数点以下を全て削除することで自然数に変換することはこの正規化には該当しない。
【００９７】
検索装置１は、（Ｓ７３）で決定された変換係数を用いて、（Ｓ７５）で正規化された特徴量データを一次元へ唯一に変換する（Ｓ７６）。図７の例では、実施例１に示されるように、検索装置１は、正規化された特徴量データの各次元の要素データを冪数として用いて、（Ｓ７３）で取得された各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する。
【００９８】
検索装置１は、（Ｓ７６）で変換された一次元のデータを昇順又は降順に整列する（Ｓ７７）。
【００９９】
検索装置１は、インデックス対象となる他の特徴量データが有るか否かを判断する（Ｓ７８）。検索装置１は、他の特徴量データが有れば（Ｓ７８；ＹＥＳ）、その特徴量データを取得し（Ｓ７４）、その取得された特徴量データに対して、（Ｓ７５）以降を実行する。
【０１００】
検索装置１は、他の特徴量データがなければ（Ｓ７８；ＮＯ）、（Ｓ７７）で整列された一次元データを各特徴量データのインデックスデータとしても含む階層的なインデックスを生成し、そのインデックスと特徴量データとをＤＢ２７に格納する（Ｓ７９）。但し、検索装置１は、インデックス及び特徴量データを、可搬型記録媒体に格納してもよいし、他のコンピュータに送信してもよい。
【０１０１】
第２実施形態におけるインデックス生成方法は、図７の例に限定されない。予め、処理対象となる高次元データの次元数が分かっている場合には、（Ｓ７３）で決定される変換係数は、予め、検索装置１に保持されていてもよく、この場合、（Ｓ７１）、（Ｓ７２）及び（Ｓ７３）は、当該インデックス生成方法に含まれなくてもよい。また、図７の例では、上記第１補題が利用されたが、第２実施形態におけるインデックス生成方法は、第２補題に基づいていてもよい。この場合には、検索装置１は、（Ｓ７５）を実行せず、（Ｓ７６）では、（Ｓ７３）で決定された各変換係数を含む線形変換関数に、特徴量データの各次元の要素データを代入することにより、その特徴量データを一次元データに変換する。
【０１０２】
次に、第２実施形態における検索方法について図８を用いて説明する。図８は、第２実施形態における検索装置１の、範囲問合せ（Range Query）に関する検索方法に関する動作例を示すフローチャートである。以下の説明では、検索対象データはクエリデータｑと表記される。
【０１０３】
検索装置１は、クエリデータｑ及び距離条件をクエリパラメータとして取得する（Ｓ８１）。クエリデータｑは、検索対象データであり、高次元の特徴量データである。図８の例では、距離条件として距離半径ｒが指定される。
【０１０４】
検索装置１は、クエリデータｑ及び距離半径ｒにより、元の高次元空間において範囲問合せの解となりうる上界及び下界の各データ点を求める（Ｓ８２）。上界のデータ点は、上界データと表記され、下界のデータ点は、下界データと表記される。
【０１０５】
検索装置１は、（Ｓ８２）で取得された上界データ及び下界データを、図７の（Ｓ７６）と同様の手法により、一次元へ唯一に変換する（Ｓ８３）。このとき、検索装置１は、図７の（Ｓ７３）で決定されるものと同じ変換係数を用いる。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、上界データ及び下界データが上界一次元データ及び下界一次元データに変換される。
【０１０６】
検索装置１は、ＤＢ２７に格納されるインデックスから、（Ｓ８３）で得られる上界一次元データと下界一次元データとの間の範囲内のインデックスデータを特定する（Ｓ８４）。その範囲内のインデックスデータが存在しない場合、検索装置１は、解なしと判断する。
【０１０７】
検索装置１は、クエリデータｑを、（Ｓ８３）と同様の手法により、一次元へ唯一に変換する（Ｓ８５）。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、クエリデータｑがクエリ一次元データに変換される。
【０１０８】
検索装置１は、（Ｓ８５）で得られるクエリ一次元データと、（Ｓ８４）で特定される各インデックスデータとの距離をそれぞれ算出する（Ｓ８６）。インデックスデータ及びクエリ一次元データは共に一次元の値であるため、検索装置１は、各値の差を当該距離として算出する。
【０１０９】
検索装置１は、（Ｓ８６）で算出される距離を用いて、（Ｓ８４）で特定されたインデックスデータをフィルタリングし、残ったインデックスデータを解候補として抽出する（Ｓ８７）。検索装置１は、当該フィルタリングを具体的に次のように実行する。検索装置１は、ヘルダーの不等式等を用いて、（Ｓ８１）で得られた半径ｒに対応する一次元空間上の一次元距離条件を算出し、（Ｓ８６）で算出された距離がその一次元距離条件に合致しないインデックスデータを解候補から除外する。
【０１１０】
検索装置１は、（Ｓ８７）で抽出された解候補のインデックスデータに対応する特徴量データをＤＢ２７から取得し、この特徴量データとクエリデータｑとの実距離を算出する（Ｓ８８）。
【０１１１】
検索装置１は、（Ｓ８８）で算出された実距離が（Ｓ８２）で得られた半径ｒより小さい特徴量データを当該範囲問合せの解として抽出する（Ｓ８９）。
【０１１２】
第２実施形態における検索方法は、図８の例に限定されない。例えば、検索装置１は、（Ｓ８４）で特定されたインデックスデータを解候補に設定してもよい。この場合には、当該検索方法は、（Ｓ８５）、（Ｓ８６）及び（Ｓ８７）を含まなくてもよい。また、検索装置１は、（Ｓ８４）で特定されたインデックスデータに対応する特徴量データを範囲問合せの解に設定してもよい。この場合には、当該検索方法は、（Ｓ８５）以降を含まなくてもよい。また、検索装置１は、（Ｓ８７）で解候補として抽出されたインデックスデータに対応する特徴量データを範囲問合せの解に設定してもよい。この場合には、当該検索方法は、（Ｓ８８）以降を含まなくてもよい。また、当該検索方法は、図８に示される工程の実行順に制限されない。例えば、（Ｓ８５）は、（Ｓ８２）以降で、かつ、（Ｓ８６）より前であれば、どこ時点で実行されてもよい。
【０１１３】
〔第２実施形態における作用及び効果〕
上述のように、第２実施形態では、インデックス対象となる高次元の特徴量データが、相互に可約できない変換係数を用いた変換規則により、一意的に、一次元データに変換され、この一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれる階層的なインデックスが生成される。そして、このインデックスを用いた範囲問合せの検索処理が実行される。この検索処理では、インデックスデータが属する一次元空間上での計算のみにより、範囲問合せの解となる特徴量データに対応するインデックスデータを或る程度絞り込むことができる。つまり、第２実施形態によれば、高次元空間上の距離計算（類似度計算）のような高負荷の処理を行うことなく、一次元空間上の距離計算（減算）のような低負荷の処理で、範囲問合せの解候補を絞り込むことができるため、範囲問合せの検索処理を高速化することができる。
【０１１４】
具体的には、第２実施形態では、範囲問合せの距離条件から得られる高次元空間の上界及び下界が、インデックスデータの生成のためのものと同様の変換規則で、インデックスデータの一次元空間にマッピングされる。このマッピングにより、当該一次元空間上における上界点（上界一次元データ）及び下界点（下界一次元データ）が得られ、上界点と下界点との間の範囲内のインデックスデータが特定される。このように、第２実施形態では、範囲問合せの上界及び下界を一次元空間に変換することで、全インデックスデータの中から、範囲問合せの解に対応し得るインデックスデータを絞り込むことができる。
【０１１５】
更に、範囲問合せのクエリデータ（検索対象データ）も、インデックスデータの生成のためのものと同様の変換規則で、一次元データ（クエリ一次元データ）に変換され、そのクエリ一次元データとインデックスデータとの距離（差）から、解候補としてのインデックスデータが更に絞り込まれる。このような解候補の更なる絞り込みについても、一次元空間上での計算のみで実現することができる。このように絞り込まれた解候補に関し、高次元空間上での実距離が計算され、その実距離に応じて、範囲問合せの最終的な解が得られる。
【０１１６】
このように、第２実施形態における範囲問合せの検索処理によれば、一次元空間での段階的な解候補の絞り込みにより、処理負荷の高い高次元空間上での実距離計算の対象を減らすことに成功し、ひいては、範囲問合せの検索処理の高速化を実現している。
【０１１７】
［第３実施形態］
第２実施形態では、範囲問合せの検索機能のみが説明された。第３実施形態における検索装置１は、範囲問合せの検索機能に加えて、ｋ最近傍探索（k-Nearest Neighbors Query）の検索機能も備える。以下、第３実施形態における検索装置１について、第２実施形態と異なる内容を中心に説明する。以下の説明では、第２実施形態と同様の内容については適宜省略する。
【０１１８】
〔処理構成〕
図９は、第３実施形態における検索装置１の処理構成例を概念的に示す図である。第３実施形態における検索装置１では、検索部３１が、第２実施形態の構成に加えて、最近傍探索部４０を更に有する。最近傍探索部４０についても、他の処理部と同様に、ＣＰＵ１０によりメモリ１１に格納されるプログラムが実行されることにより実現される。
【０１１９】
クエリ取得部３０は、ｋ最近傍探索の際には、検索対象データ及びデータ数ｋ（ｋは自然数）を示すデータ数情報を取得する。
【０１２０】
最近傍探索部４０は、ＤＢ２７に格納されるインデックスに含まれるインデックスデータを参照することにより、検索対象データ及びデータ数情報により示されるｋ最近傍探索の解となる特徴量データを抽出する。ｋ最近傍探索とは、ＤＢ２７から、検索対象データとの距離が最小であるものから上位ｋ個の特徴量データを抽出する類似検索処理である。最近傍探索部４０は、後述する第２類似度算出部４２により算出された実距離の中のｋ番目に小さい実距離を距離条件として、検索対象データと共に用いて、範囲検索部３４を動作させ、それにより抽出される特徴量データの中から、実距離の小さい順で上位ｋ個の特徴量データをｋ最近傍探索の解として抽出する。
【０１２１】
最近傍探索部４０は、第２対象特定部４１、第２類似度算出部４２等を含む。
第２対象特定部４１は、ＤＢ２７に格納されるインデックスに含まれるインデックスデータの並び順における、検索対象変換部３２により得られた検索対象一次元データの位置に基づいて、その検索対象一次元データの直前及び直後から、データ数情報で示される数ｋの所定倍の数のインデックスデータを特定する。例えば、第２対象特定部４１は、検索対象一次元データの直前ｋ個のインデックスデータを特定し、検索対象一次元データの直後ｋ個のインデックスデータを特定し、トータルで、２ｋ個のインデックスデータを特定する。データ数ｋの所定倍の数のインデックスデータの具体的特定手法は制限されない。直前及び直後で異なる数のインデックスデータが特定されてもよい。例えば、検索対象一次元データに近い順に、データ数ｋの所定倍の数のインデックスデータが特定されてもよい。
【０１２２】
第２類似度算出部４２は、第２対象特定部４１により特定された各インデックスデータに対応する各特徴量データと検索対象データとの間の実距離を算出する。
【０１２３】
〔動作例〕
以下、第３実施形態における検索方法を図１０を用いて説明する。図１０は、第３実施形態における検索装置１の、ｋ最近傍探索の動作例を示すフローチャートである。以下の説明では、検索装置１が各方法の実行主体となるが、検索装置１に含まれる上述の各処理部が実行主体となってもよい。また、実行主体は、複数の装置（コンピュータ）であってもよい。以下の説明では、検索対象データはクエリデータｑと表記される。
【０１２４】
検索装置１は、クエリデータｑ及びデータ数情報を取得する（Ｓ１０１）。クエリデータｑは、検索対象データであり、高次元の特徴量データである。図１０の例では、データ数情報はデータ数ｋを示す。
【０１２５】
検索装置１は、クエリデータｑを、図８の（Ｓ８５）と同様の手法により、一次元へ唯一に変換する（Ｓ１０２）。これにより、インデックス対象の特徴量データからインデックスデータへの変換と同様の変換規則により、クエリデータｑがクエリ一次元データに変換される。
【０１２６】
検索装置１は、ＤＢ２７に格納されるインデックスに含まれるインデックスデータの並び順における、（Ｓ１０２）で得られたクエリ一次元データの位置を取得する（Ｓ１０３）。例えば、検索装置１は、クエリ一次元データが前からｍ番目のインデックスデータと前からｎ番目のインデックスデータとの間に位置することを認識する。
【０１２７】
検索装置１は、検索対象一次元データの直前及び直後から、データ数情報で示される数ｋの所定倍の数のインデックスデータを特定する（Ｓ１０４）。例えば、検索装置１は、クエリ一次元データの直前ｋ個のインデックスデータを特定し、クエリ一次元データの直後ｋ個のインデックスデータを特定し、トータルで、２ｋ個のインデックスデータを特定する。
【０１２８】
検索装置１は、（Ｓ１０４）で特定されたインデックスデータに対応する各特徴量データとクエリデータｑとの実距離をそれぞれ算出する（Ｓ１０５）。上記例によれば、検索装置１は、２ｋ個のインデックスデータに対応する２ｋ個の特徴量データの各々と、クエリデータｑとの実距離をそれぞれ算出し、２ｋ個の実距離を得る。
【０１２９】
検索装置１は、（Ｓ１０５）で算出された実距離の中から、ｋ番目に小さい実距離ｓを選択する（Ｓ１０６）。
検索装置１は、（Ｓ１０６）で選択された実距離ｓを距離条件に設定し、図８に示される動作を遂行する（Ｓ１０７）。この動作では、（Ｓ１０２）で既にクエリ一次元データが取得されているため、（Ｓ８５）は実行されなくてもよい。
【０１３０】
検索装置１は、図８の（Ｓ８９）で解として得られた特徴量データの中から、実距離の小さい順で上位ｋ個の特徴量データをｋ最近傍探索の解として抽出する（Ｓ１０８）。
【０１３１】
〔第３実施形態における作用及び効果〕
第３実施形態では、上述のインデックスを用いたｋ最近傍探索処理が実行される。具体的には、インデックスデータが属する一次元空間上におけるクエリ一次元データの位置に基づいて、クエリ一次元データの周辺の、データ数ｋの所定倍の数のインデックスデータが特定され、この特定されたインデックスデータとクエリデータとの間の高次元空間上での実距離が計算される。そして、この実距離が距離条件の半径に設定され、第２実施形態の範囲問合せの検索処理が実行される。範囲問合せの検索処理で解として抽出された特徴量データの中から、実距離の小さい順でｋ個の特徴量データがｋ最近傍探索の解として抽出される。
【０１３２】
このように、第３実施形態によれば、ｋ最近傍探索処理において、処理負荷の高い高次元空間上での実距離の計算対象を減らしているため、ｋ最近傍探索処理を高速化することができる。
【０１３３】
上述の説明で用いた複数のフローチャートでは、複数の工程（処理）が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各実施例は、内容が相反しない範囲で組み合わせることができる。
【０１３４】
上記の各実施形態及び各実施例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各実施例が以下の記載に限定されるものではない。
【０１３５】
（付記１）高次元データを取得するデータ取得部と、
相互に可約できない、前記高次元データの次元数分の変換係数を取得する係数取得部と、
前記係数取得部で取得される複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングする変換部と、
前記変換部により得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成するインデックス生成部と、
を備えるインデックス生成装置。
【０１３６】
（付記２）前記変換部は、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
付記１に記載のインデックス生成装置。
【０１３７】
（付記３）前記係数取得部は、前記高次元データの次元数分の素数を選択し、該選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
付記２に記載のインデックス生成装置。
【０１３８】
（付記４）前記係数取得部は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
前記変換部は、前記データ取得部により取得される高次元データを自然数に正規化し、該正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記係数取得部で取得される各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
付記１に記載のインデックス生成装置。
【０１３９】
（付記５）付記１から４のいずれか１つに記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
前記高次元データと同じ次元数の検索対象データを取得するクエリ取得部と、
前記係数取得部で取得される前記複数の変換係数と同じ複数の変換係数を用いて、前記変換部と同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングする検索対象変換部と、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象変換部により得られる検索対象一次元データと前記インデックスに前記インデックスデータとして含まれる前記一次元データとの間の距離を算出する距離算出部と、
を備える検索装置。
【０１４０】
（付記６）前記検索対象データからの距離条件を取得する第１条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する範囲検索部と、
を更に備え、
前記範囲検索部は、
前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得する範囲取得部、
を含み、
前記検索対象変換部は、前記複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
前記範囲検索部は、
前記インデックスに含まれる前記インデックスデータの中から、前記検索対象変換部により前記上界データ及び前記下界データから得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定する第１対象特定部、
を更に含み、
前記距離算出部は、前記第１対象特定部により特定されるインデックスデータと前記検索対象変換部により得られる前記検索対象一次元データとの間の距離を算出し、
前記範囲検索部は、
前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記距離算出部により算出される距離との比較により、前記第１対象特定部により特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する候補抽出部、
を更に含む、
付記５に記載の検索装置。
【０１４１】
（付記７）前記範囲検索部は、
前記候補抽出部により抽出された前記解候補のインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出する第１類似度算出部、
を更に含み、
前記第１類似度算出部により算出される実距離と前記距離条件との比較により、前記範囲問合せの解となる高次元データを抽出する、
付記６に記載の検索装置。
【０１４２】
（付記８）データ数ｋ（ｋは自然数）を示すデータ数情報を取得する第２条件取得部と、
前記インデックスに含まれる前記インデックスデータを参照することにより、前記検索対象データ及び前記データ数情報により示されるｋ最近傍探索の解となる高次元データを抽出する最近傍探索部と、
を更に備え、
前記最近傍探索部は、
前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象変換部により得られる前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定する第２対象特定部と、
前記第２対象特定部により特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出する第２類似度算出部と、
を含み、
前記第２類似度算出部により算出された実距離の中の前記ｋ番目に小さい実距離を前記距離条件として、前記検索対象データと共に用いて、前記範囲検索部を動作させることにより抽出される高次元データの中から、実距離の小さい順で上位ｋ個の高次元データをｋ最近傍探索の解として抽出する、
付記７に記載の検索装置。
【０１４３】
（付記９）少なくとも１つのコンピュータにより実行されるインデックス生成方法において、
高次元データを取得し、
相互に可約できない、前記高次元データの次元数分の変換係数を取得し、
前記取得された複数の変換係数を用いて、前記高次元データを一次元空間へ唯一にマッピングし、
前記マッピングにより得られる一次元データが昇順又は降順に整列された状態でインデックスデータとして含まれ、階層構造を持つインデックスを生成する、
ことを含むインデックス生成方法。
【０１４４】
（付記１０）前記マッピングは、前記高次元データを形成する各次元の要素データと、前記係数取得部で取得される各変換係数との積の和を算出する、
付記９に記載のインデックス生成方法。
【０１４５】
（付記１１）前記高次元データの次元数分の素数を選択する、
ことを更に含み、
前記変換係数の取得は、前記選択された素数の積を底とする各素数の対数を前記複数の変換係数として取得する、
付記１０に記載のインデックス生成方法。
【０１４６】
（付記１２）前記高次元データを自然数に正規化する、
ことを更に含み、
前記変換係数の取得は、前記高次元データの次元数分の素数を前記複数の変換係数として取得し、
前記マッピングは、前記正規化された高次元データを形成する各次元の要素データを冪数として用いて、前記取得された各変換係数を底としてそれぞれ冪乗して得られる値の積を算出する、
付記９に記載のインデックス生成方法。
【０１４７】
（付記１３）付記９から１２のいずれか１つに記載のインデックス生成方法により生成される前記インデックスを用い、かつ、少なくとも１つのコンピュータにより実行される検索方法において、
前記高次元データと同じ次元数の検索対象データを取得し、
前記複数の変換係数を用いて、前記インデックス生成方法に含まれる前記マッピングと同じ手法で、前記検索対象データを前記一次元空間へ唯一にマッピングし、
前記高次元データと前記検索対象データとの間の類似度を評価する際に、前記検索対象データの前記マッピングにより得られる検索対象一次元データと前記インデックスに含まれる前記一次元データとの間の距離を算出する、
ことを含む検索方法。
【０１４８】
（付記１４）前記検索対象データからの距離条件を取得し、
前記検索対象データ及び前記距離条件により示される、前記検索対象データの高次元空間における問合せ範囲に関する、上界データ及び下界データを取得し、
前記検索対象データのマッピングと同じ手法及び同じ複数の変換係数を用いて、前記上界データ及び前記下界データを前記一次元空間へ唯一にマッピングし、
前記インデックスに含まれる前記インデックスデータの中から、前記上界データ及び前記下界データの前記マッピングにより得られる上界一次元データ及び下界一次元データの間の範囲内のインデックスデータを特定し、
前記特定されたインデックスデータと前記検索対象一次元データとの間の距離を算出し、
前記距離条件から得られる前記一次元空間上の一次元距離条件と、前記算出された距離との比較により、前記特定されたインデックスデータをフィルタリングし、該フィルタリングで得られるインデックスデータを解候補として抽出する、
ことを更に含む付記１３に記載の検索方法。
【０１４９】
（付記１５）前記解候補として抽出されたインデックスデータに対応する高次元データと前記検索対象データとの間の実距離を算出し、
前記算出された実距離と前記距離条件との比較により、前記検索対象データ及び前記距離条件に基づく範囲問合せの解となる高次元データを抽出する、
ことを更に含む付記１４に記載の検索方法。
【０１５０】
（付記１６）データ数ｋ（ｋは自然数）を示すデータ数情報を取得し、
前記インデックスに含まれる前記インデックスデータの並び順における、前記検索対象一次元データの位置に基づいて、前記検索対象一次元データの直前及び直後から、前記データ数情報で示される数の所定倍の数のインデックスデータを特定し、
前記特定された各インデックスデータに対応する各高次元データと前記検索対象データとの間の実距離を算出し、
前記算出された実距離の中の前記ｋ番目に小さい実距離を前記距離条件として特定し、
前記検索対象データ及び前記距離条件に基づく前記範囲問合せの解として抽出される高次元データの中から、実距離の小さい順で上位ｋ個の高次元データをｋ最近傍探索の解として抽出する、
ことを更に含む付記１５に記載の検索方法。
【０１５１】
（付記１７）付記９から１２のいずれか１つに記載のインデックス生成方法を少なくとも１つのコンピュータに実行させるプログラム。
【０１５２】
（付記１８）付記１３から１６のいずれか１つに記載の検索方法を少なくとも１つのコンピュータに実行させるプログラム。
【符号の説明】
【０１５３】
１  高次元データ検索装置（検索装置）
１０  ＣＰＵ
１１  メモリ
２０、１０１  データ取得部
２１、１０４  インデックス生成部
２３、１０２  係数取得部
２４、１０３  変換部
２５  並び替え処理部
２７  データベース（ＤＢ）
３０、２０１  クエリ取得部
３１  検索部
３２、２０２  検索対象変換部
３３、２０３  距離算出部
３４  範囲検索部
３５  範囲取得部
３６  第１対象特定部
３７  候補抽出部
３８  第１類似度算出部
４０  最近傍探索部
４１  第２対象特定部
４２  第２類似度算出部
１００  インデックス生成装置
２００  検索装置
【図１】
2015049574.tif 000010
【図２】
2015049574.tif 000011
【図３】
2015049574.tif 000012
【図４】
2015049574.tif 000013
【図５】
2015049574.tif 000014
【図６】
2015049574.tif 000015
【図７】
2015049574.tif 000016
【図８】
2015049574.tif 000017
【図９】
2015049574.tif 000018
【図１０】
2015049574.tif 000019