(57)【要約】    インデックス生成装置（１００）は、類似度算出部（１０５）により算出されるデータ間の類似度を用いて、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がそのリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成するインデックス生成部（１０１）と、上記類似度閾値を階層が下がる程大きい値に決定する閾値決定部（１０２）と、を有する。
2014109127.tif 000002
【特許請求の範囲】
【請求項１】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成装置において、
類似度算出部により算出されるデータ間の類似度を用いて、下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成するインデックス生成部と、
前記類似度閾値を階層が下がる程大きい値に決定する閾値決定部と、
を備えるインデックス生成装置。
【請求項２】
インデックス対象データを取得する対象取得部、
を更に備え、
前記インデックス生成部は、前記上位ノードのエントリにより示される前記代表データと前記対象取得部により取得されるインデックス対象データとの類似度を前記類似度算出部から取得し、該取得される類似度と前記類似度閾値とを比較し、該比較結果に基づいて、該インデックス対象データを示すエントリの挿入先を前記上位ノード又は前記下位ノードに決定する、
請求項１に記載のインデックス生成装置。
【請求項３】
前記インデックス生成部は、
前記上位ノードに含まれる複数エントリの中から代表エントリを選択する代表選択部と、
前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリの中から、前記代表選択部により選択される代表エントリにより示されるデータとの類似度が前記閾値決定部により決定される新たな類似度閾値以上のデータを示すエントリを選択し、該選択されたエントリを含む下位ノードを生成し、該上位ノードの該代表エントリに該下位ノードへのリンク関係を設定し、該リンク関係に該新たな類似度閾値を付与する溢れ調整部と、
を含む請求項１又は２に記載のインデックス生成装置。
【請求項４】
前記代表選択部は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項３に記載のインデックス生成装置。
【請求項５】
前記閾値決定部は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に２分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項１から４のいずれか１項に記載のインデックス生成装置。
【請求項６】
前記代表選択部は、前記上位ノードに含まれる複数エントリで示される複数データの中から複数の代表データを選択し、
前記溢れ調整部は、前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリで示される複数データの中から、前記代表選択部により選択される複数の代表データとの複数の類似度の中の少なくとも１つが前記閾値決定部により決定される新たな類似度閾値以上のデータを選択し、該選択されたデータを示すエントリを含む下位ノードを生成し、該上位ノードには該複数の代表データを示すエントリを生成し、該エントリに該下位ノードへのリンク関係を設定し、該リンク関係に該新たな類似度閾値を付与する、
請求項３又は４に記載のインデックス生成装置。
【請求項７】
前記代表選択部は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項６に記載のインデックス生成装置。
【請求項８】
請求項１から７のいずれか１項に記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
検索対象データ及び類似度条件を取得する条件取得部と、
前記上位ノードのエントリにより示される少なくとも１つの代表データと前記検索対象データとの少なくとも１つの類似度を取得する類似度取得部と、
前記類似度取得部により取得される少なくとも１つの類似度と、前記少なくとも１つの代表データを示すエントリの前記リンク関係に付与された類似度閾値又は前記類似度条件とを比較し、該比較結果に基づいて、前記上位ノードに含まれる前記少なくとも１つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する検索処理部と、
を備える検索装置。
【請求項９】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成方法において、
下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成し、
前記類似度閾値を階層が下がる程大きい値に決定する、
ことを含むインデックス生成方法。
【請求項１０】
インデックス対象データを取得し、
前記上位ノードのエントリにより示される前記代表データと前記取得されたインデックス対象データとの類似度を取得し、
前記取得された類似度と前記類似度閾値とを比較し、
前記比較結果に基づいて、前記インデックス対象データを示すエントリの挿入先を前記上位ノード又は前記下位ノードに決定する、
ことを更に含む請求項９に記載のインデックス生成方法。
【請求項１１】
前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリの中から、代表エントリを選択し、
前記選択された代表エントリにより示されるデータとの類似度が新たに決定される類似度閾値以上のデータを示すエントリを選択し、
前記選択されたエントリを含む下位ノードを生成し、
前記上位ノードの前記代表エントリに前記下位ノードへのリンク関係を設定し、
前記リンク関係に前記新たな類似度閾値を付与する、
ことを更に含む請求項９又は１０に記載のインデックス生成方法。
【請求項１２】
前記代表エントリの選択は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項１１に記載のインデックス生成方法。
【請求項１３】
前記類似度閾値の決定は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に２分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項９から１２のいずれか１項に記載のインデックス生成方法。
【請求項１４】
前記代表エントリの選択は、前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリで示される複数データの中から複数の代表データを選択し、
前記エントリの選択は、前記選択された複数の代表データとの複数の類似度の中の少なくとも１つが新たに決定される類似度閾値以上のデータを選択し、
前記下位ノードの生成は、前記選択されたデータを示すエントリを含む下位ノードを生成し、
前記リンク関係の設定は、前記上位ノードには前記複数データを示すエントリを生成し、該エントリに前記下位ノードへのリンク関係を設定する、
請求項１１又は１２に記載のインデックス生成方法。
【請求項１５】
前記代表エントリの選択は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項１４に記載のインデックス生成方法。
【請求項１６】
請求項９から１５のいずれか１項に記載のインデックス生成方法により生成される前記インデックスを用いる検索方法において、
検索対象データ及び類似度条件を取得し、
前記上位ノードのエントリにより示される少なくとも１つの代表データと前記検索対象データとの少なくとも１つの類似度を取得し、
前記取得された少なくとも１つの類似度と、前記少なくとも１つの代表データを示すエントリの前記リンク関係に付与された類似度閾値又は前記類似度条件とを比較し、
前記比較結果に基づいて、前記上位ノードに含まれる前記少なくとも１つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する、
ことを含む検索方法。
【請求項１７】
請求項９から１５のいずれか１項に記載のインデックス生成方法を少なくとも１つのコンピュータに実行させるプログラム。
【請求項１８】
請求項１６に記載の検索方法を少なくとも１つのコンピュータに実行させるプログラム。
【請求項１９】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスのデータ構造において、
前記インデックスが、
下位ノードと、
前記下位ノードとリンク関係を持つエントリであって、前記下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、
を含み、
前記類似度閾値が階層が下がる程大きい値に設定されており、
コンピュータが、前記上位ノードのエントリにより示される前記代表データと検索対象データとの類似度を算出し、該類似度と前記上位ノードのエントリが持つ前記リンク関係に付与された前記類似度閾値とを比較し、該比較結果に基づいて該検索対象データに対応する検索結果を得るために参照する、
前記インデックスのデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの類似検索技術に関する。
【背景技術】
【０００２】
下記特許文献１から１０に示されるように、現在、様々な類似検索手法が提案されている。このような類似検索は、画像の特徴量データのような多次元データや高次元データを対象に行われることが多い。例えば、特許文献１、３及び６は、類似画像検索方法を提案する。特許文献２は、一方のデータから他方のデータに辿るためのリンクがデータ間に設定されたデータベースを用いて、類似データの検索を行う手法を提案する。特許文献５は、任意の画像集合を階層的に分類する手法を提案する。特許文献７は、高次元の特徴ベクトルの集合から、クエリ特徴ベクトルに類似した特徴ベクトルを検索する手法を提案する。特許文献９は、ハッシュ関数を用いて各学習パターンをハッシュ値に対応するバケットに分類し、入力パターンのハッシュ値に対応するバケットに属する学習パターンの中から、入力パターンに最も類似する学習パターンを探索する手法を提案する。特許文献１０は、複数の特徴量をベクトルで表現可能な多次元のデータに対し、条件を指定して所望のデータを抽出するデータマッチング方法を提案する。なお、以降、「高次元」と「多次元」とは、特別に区別されることなく用いられる。【０００３】
このような類似検索では、類似度関数等を用いて、対象データ間の類似度が算出される。例えば、画像の特徴量データは、多次元の数値ベクトルで表わされ、比較対象の特徴量データ間の類似度が類似度関数により算出される。特許文献４は、データベース内の全ての特徴量に関し、他の特徴量との類似度を計算し、類似度の高い順に上位ｆ（ｘ）件分のＩＤ情報を、類似度順付で格納しておき、この格納内容を検索することにより、類似特徴量を検索する手法を提案する。【０００４】
また、対象データに関し索引が構築され、この索引を用いて類似検索を行うことで、検索の高速化が図られる。多次元データの索引生成手法として、Ｒ木（R-tree）が知られている（非特許文献１参照）。また、特許文献８は、特徴ベクトル空間を複数個の近似領域に分割し、各近似領域を近似領域の密疎に応じて階層化されたインデクシングツリーを生成する手法を提案する。なお、下記非特許文献２、３及び４については後述する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４５４５６４１号公報
【特許文献２】特開２０１１−０９０３５２号公報
【特許文献３】特開２０１２−０７９１８６号公報
【特許文献４】特開２０００−０３５９６５号公報
【特許文献５】特開２００１−１６００５７号公報
【特許文献６】特許第４９０６９００号公報
【特許文献７】特開２０１１−２５７９７０号公報
【特許文献８】特開２００２−１６３２７２号公報
【特許文献９】特開２００９−０２０７６９号公報
【特許文献１０】特開２００４−０４６６１２号公報
【非特許文献】
【０００６】
【非特許文献１】Antonin Guttman著「R-Trees：A Dynamic Index Structure for Spatial Searching」、SIGMOD Conference出版、1984年、pp.47-57
【非特許文献２】Wei Dong、Moses Charikar、Kai Li、「Efficient k-nearest neighbor graph construction for generic similarity measures」、WWW 2011、577-586
【非特許文献３】Stanley Milgram、「The Small World Problem」、Psychology Today、May 1967、pp.60-67
【非特許文献４】J.Travers and S.Milgram、「An experimental study of the small world problem」、Sociometry 32、425、1969
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のような類似検索手法は、対象データのデータ構造に強く依存しているため、対象データの次元数が所定数を超える場合、対象データの次元数や、各次元におけるデータ型等のようなデータ内部構造が未知の場合等には、対応できない。例えば、Ｒ木のような空間索引を用いた手法は、距離空間における三角不等式等の幾何学的性質を用いて類似検索処理を行うため、次元数や各次元のデータ内部構造が未知の場合、空間索引を構築することができず、ひいては、類似検索処理を行うことができない。ここで、対象データのデータ構造とは、対象データの全体のデータフォーマット、対象データの次元数、各次元のデータの内部構造などを意味する。【０００８】
本発明は、このような事情に鑑みてなされたものであり、対象データのデータ構造に依存しない汎用的な類似検索技術を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の各側面では、上述した課題を解決するために、それぞれ以下の構成を採用する。【００１０】
第１の側面は、インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成装置に関する。第１の側面に係るインデックス生成装置は、類似度算出部により算出されるデータ間の類似度を用いて、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成するインデックス生成部と、上記類似度閾値を階層が下がる程大きい値に決定する閾値決定部と、を有する。【００１１】
第２の側面は、インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成方法に関する。第２の側面に係るインデックス生成方法は、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成し、上記類似度閾値を階層が下がる程大きい値に決定する、ことを含む。【００１２】
第３の側面は、上述の第１の側面又は第２の側面により生成されるインデックスを用いる検索装置に関する。第３の側面に係る検索装置は、検索対象データ及び類似度条件を取得する条件取得部と、上位ノードのエントリにより示される少なくとも１つの代表データと検索対象データとの少なくとも１つの類似度を取得する類似度取得部と、類似度取得部により取得される少なくとも１つの類似度と、少なくとも１つの代表データを示すエントリのリンク関係に付与された類似度閾値又は類似度条件とを比較し、比較結果に基づいて、上位ノードに含まれる少なくとも１つの代表データを示すエントリ、及び、そのエントリとリンク関係を持つ下位ノード以下の下位ノードのエントリを、検索対象データに関し類似度条件に適合する抽出対象から除外する検索処理部と、を有する。【００１３】
第４の側面は、上述の第１の側面又は第２の側面により生成されるインデックスを用いる検索方法に関する。第４の側面に係る検索方法は、検索対象データ及び類似度条件を取得し、上位ノードのエントリにより示される少なくとも１つの代表データと検索対象データとの少なくとも１つの類似度を取得し、取得された少なくとも１つの類似度と、少なくとも１つの代表データを示すエントリのリンク関係に付与された類似度閾値又は類似度条件とを比較し、この比較結果に基づいて、上位ノードに含まれる少なくとも１つの代表データを示すエントリ、及び、このエントリとリンク関係を持つ下位ノード以下の下位ノードのエントリを、検索対象データに関し類似度条件に適合する抽出対象から除外する、ことを含む。【００１４】
第５の側面は、インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスのデータ構造に関する。第５の側面に係るインデックスのデータ構造は、当該インデックスが、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含み、上記類似度閾値が階層が下がる程大きい値に設定されており、コンピュータが、上位ノードのエントリにより示される代表データと検索対象データとの類似度を算出し、この類似度と上位ノードのエントリが持つリンク関係に付与された類似度閾値とを比較し、この比較結果に基づいて検索対象データに対応する検索結果を得るために参照する。【００１５】
なお、本発明の他の側面としては、上記第２又は第４の側面の方法を少なくとも１つのコンピュータに実行させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。また、上記第５の側面のデータ構造を持つインデックスを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【発明の効果】
【００１６】
上記各側面によれば、対象データのデータ構造に依存しない汎用的な類似検索技術を提供することができる。
【図面の簡単な説明】
【００１７】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１８】
【図１】本発明の実施の形態に係るインデックス生成装置の構成例を概念的に示す図である。
【図２】本実施形態で生成されるインデックスの一部の例を概念的に示す図である。
【図３】第１実施形態における高次元データ検索装置のハードウェア構成例を概念的に示す図である。
【図４】第１実施形態における高次元データ検索装置の処理構成例を概念的に示す図である。
【図５】インデックス生成処理に関する高次元データ検索装置の動作例を示すフローチャートである。
【図６】データ削除処理に関する高次元データ検索装置の動作例を示すフローチャートである。
【図７】類似検索処理に関する高次元データ検索装置の動作例を示すフローチャートである。
【図８】第２実施形態における類似度木の一部の例を概念的に示す図である。
【図９】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１０】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１１】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１２】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１３】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１４】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１５】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１６】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１７Ａ】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１７Ｂ】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１８】実施例１におけるインデックス生成過程を概念的に示す図である。
【図１９】実施例２におけるインデックス生成過程を概念的に示す図である。
【図２０】実施例２におけるインデックス生成過程を概念的に示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
【００２０】
図１は、本発明の実施の形態に係るインデックス生成装置１００の構成例を概念的に示す図である。インデックス生成装置１００は、インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。ここで、「ノード」とは、生成されるインデックスのデータ構造を構成する１つのデータ要素を意味し、例えば、配列や構造体やクラス等により実現される。また、「インデックス対象となるデータ」とは、インデックスが付与されるデータを意味する。本実施形態では、インデックス対象となるデータのデータ構造は何ら制限されない。即ち、当該データの次元数は制限されず、かつ、当該データのデータ構造は未知であってもよい。また、本実施形態では、ノードに含まれるエントリとデータとの関連付け形態は、制限されない。エントリにデータが含まれていてもよいし、エントリにはデータの格納領域を指すポインタが含まれていてもよい。
【００２１】
図１に示されるように、インデックス生成装置１００は、類似度算出部１０５により算出されるデータ間の類似度を用いて、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がそのリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成するインデックス生成部１０１と、上記類似度閾値を階層が下がる程大きい値に決定する閾値決定部１０２と、を有する。本実施形態における類似度とは、近似する度合いを意味し、類似度の値が大きい程、近似する度合いが増し、逆に、類似度の値が小さい程、近似する度合いが低下する。
【００２２】
また、本実施形態では、上位ノードに含まれるエントリによる下位ノードとのリンク関係の持ち方は制限されない。例えば、エントリが下位ノードを指すポインタを有していてもよい。また、エントリが下位ノードの識別ＩＤを有し、この下位ノードの識別ＩＤと下位ノードを指すポインタとの対応関係が保持されていてもよい。更に、エントリがリンクの識別ＩＤを有し、このリンクの識別ＩＤと下位ノードを指すポインタとの対応関係が保持されていてもよい。
【００２３】
インデックス生成装置１００は、例えば、後述する詳細実施形態における高次元データ検索装置１と同様のハードウェア構成を有し、その高次元データ検索装置１と同様にプログラムが処理されることで、上述の各処理部が実現される。類似度算出部１０５は、インデックス生成装置１００により実現されてもよいし、他のコンピュータにより実現されてもよい。
【００２４】
また、本発明の実施の形態に係るインデックス生成方法は、インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。本インデックス生成方法は、インデックス生成装置１００等のようなコンピュータにより実行され、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度が当該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成し、上記類似度閾値を階層が下がる程大きい値に決定する、ことを含む。但し、本インデックス生成方法に含まれる各工程は、順不同に逐次的に実行されてもよいし、同時に実行されてもよい。
【００２５】
図２は、本実施形態で生成されるインデックスの一部の例を概念的に示す図である。図２に示されるように、本実施形態では、下位ノードＬ１と、下位ノードＬ１とリンク関係Ｒ１を持つエントリＥ２であって、下位ノードＬ１のエントリＥ１（１）、Ｅ１（２）、Ｅ１（３）及びＥ１（ｎ）により示されるデータ（ｆ１、ｆ３、ｆ９等）との類似度がそのリンク関係Ｒ１に付与される類似度閾値Ｔ１以上の代表データｆ８を示すエントリＥ２を含む上位ノードＬ２と、を含むインデックスを生成する。更に、類似度閾値Ｔ１は、階層が下がる程大きい値に決定される。従って、図２の例によれば、類似度閾値Ｔ１は、それより上位のリンク関係に付与される類似度閾値Ｔ２よりも大きい値に決定される。なお、図２の例では、代表データｆ８を示すエントリは、上位ノードＬ２のみに含まれるが、上位ノードＬ２及び下位ノードＬ１の両方にそれぞれ含まれていてもよい。
【００２６】
以下、本実施形態により具現化されている技術的思想と共に、本実施形態の作用及び効果について説明する。
【００２７】
本発明者は、データＡとデータＢとが類似し、かつ、データＢとデータＣとが類似する場合、データＡとデータＣとが類似するという規則（非特許文献２）に着眼し、この規則を類似検索のためのインデックスのデータ構造に採用するという着想を得た。この規則は、必ずしも真とはならないが、真となる可能性が高い。この点の実世界での例として、いわゆるＳＭＡＬＬ−ＷＯＲＬＤ理論が知られている（上記非特許文献３及び４参照）。即ち、この理論は、実世界において、人物Ａと人物Ｂとが友人であり、かつ、人物Ｂと人物Ｃとが友人である場合、人物Ａと人物Ｃとが友人である可能性が高いことを示す。
【００２８】
ここで、インデックス対象となる３つのデータをｆａ、ｆｂ及びｆｃで表し、インデックス対象となるデータｆｉの集合をＦで表し、検索対象データをｆｑで表す。ここで、データｆｂは集合Ｆに属し、データｆｂは集合Ｆに含まれる全データの代表であると仮定する。この場合、上記規則は、以下の式で表すことができる。下記式におけるｓｉｍ（）は、２つのデータ間の類似度を計算する関数であり、データとデータの集合との類似度を計算することもできる。例えば、ｓｉｍ（）は、類似度算出部１０５に相当する。また、δは、類似度の閾値を示す。
【数１】
2014109127.tif 000003
【００２９】
上記式（１）は、上述の規則を表す。即ち、上記式（１）は、データｆａとデータｆｂとの類似度が閾値δ以上であり、かつ、データｆｂとデータｆｃとの類似度が閾値δ以上である場合、データｆａとデータｆｃとの類似度は閾値δ以上であることを示す。ここで、上記式（１）のデータｆａを検索対象データｆｑに置き換えると、上記式（２）が成立する。即ち、データｆｑとデータｆｂとの類似度が閾値δ以上であり、かつ、データｆｂとデータｆｃとの類似度が閾値δ以上である場合、データｆｑとデータｆｃとの類似度は閾値δ以上であると判断することができる。
【００３０】
更に、上記式（２）のデータｆｃをデータ集合Ｆに置き換えると、上記式（３）が成立する。即ち、データｆｑとデータｆｂとの類似度が閾値δ以上であり、かつ、データｆｂとデータ集合Ｆとの類似度が閾値δ以上である場合、データｆｑとデータ集合Ｆとの類似度は閾値δ以上であると判断することができる。
【００３１】
上述したように、データｆｂは集合Ｆに含まれる全データの代表である。よって、上記式（３）によれば、データｆｂとデータ集合Ｆに含まれる各データｆｉとの類似度が予めそれぞれ算出されている状態では、検索対象データｆｑと代表のデータｆｂとの類似度のみ算出することで、検索対象データｆｑとデータ集合Ｆ内の各データｆｉとの類似性が計算なく判断され得る。本発明者は、このような規則を本実施形態におけるインデックスのデータ構造に採用した。
【００３２】
図２によれば、下位ノードＬ１がデータ集合Ｆに相当し、代表データｆ８が集合Ｆの代表のデータｆｂに相当する。下位ノードＬ１には、代表データｆ８との類似度が類似度閾値Ｔ１以上のデータを示すエントリが設定される。これにより、本実施形態によれば、代表データｆ８と検索対象データｆｑとの類似度のみを算出することで、検索対象データｆｑと下位ノードＬ１で示されるデータ集合との類似度を、計算することなく、判断することができる。例えば、代表データｆ８と検索対象データｆｑとの類似度が類似度閾値Ｔ１未満の場合には、検索対象データｆｑと下位ノードＬ１により示される全データとの類似度も、類似度計算することなく、類似度閾値Ｔ１未満と判断することができる。
【００３３】
従って、本実施形態により生成されるインデックスを用いることにより、検索時の計算量（類似度計算回数）を減らすことができる。
【００３４】
更に、図２の例によれば、類似度閾値Ｔ１は、それより上位のリンク関係に付与される類似度閾値Ｔ２よりも大きい値に決定される。これにより、上位ノードＬ２に含まれる各エントリで示される各データと、更なる上位ノードＬ３に含まれるその代表データｆ１３との類似度が類似度閾値Ｔ２以上かつ類似度閾値Ｔ１未満となる。結果として、本実施形態で生成されたインデックスでは、階層が下がる程、高い類似度を持つデータ集合が示される。
【００３５】
このように、本実施形態では、対象データのデータ構造に依存せず、データ間の類似度に基づいて階層化された木構造のインデックスが生成される。更に、本実施形態におけるインデックス生成は、対象データの次元数にも依存しない。これは、本実施形態がデータの次元に対応する幾何学的性質に依存することなく、データ間の類似度に基づいてインデックスを生成しているからである。
【００３６】
従って、本実施形態により生成されるインデックスを用いることにより、対象データのデータ構造が未知である場合や対象データが高次元データである場合等においても、類似検索をすることができる。即ち、本実施形態によれば、対象データのデータ構造に依存しない汎用的な類似検索技術を提供することができる。
【００３７】
更に、本実施形態によれば、類似度の関係を用いた上述の規則をインデックスのデータ構造に採用しているため、上述のように類似度計算量を削減することができ、ひいては、対象データの次元数の増加に伴う検索効率の低下を防ぐこともできる。この点、背景技術で述べた提案手法によれば、データの次元数の増加に伴い、空間索引内でのノード間のオーバーラップが大量に発生するため、検索時に全データをスキャンすることになり、検索効率が急激に低下していた。
【００３８】
更に、本実施形態では、データ間の類似度に基づいてインデックスを生成するため、上述の類似度算出部１０５の類似度算出手法はブラックボックスでもよい。よって、本実施形態によれば、対象データのデータ構造だけでなく、類似度算出手法にも依存しない汎用的でかつ効率的な類似検索技術を提供することができる。
【００３９】
以下、上述の実施形態について更に詳細を説明する。以下には、詳細実施形態として、第１実施形態及び第２実施形態を例示する。以下の各実施形態は、上述のインデックス生成装置及びインデックス生成方法を高次元データ検索装置に適用した場合の例である。なお、上述のインデックス生成装置及びインデックス生成方法は、高次元データを扱う検索装置への適用に限定されるものではなく、類似度を算出し得る様々なデータの検索装置に適用可能である。
【００４０】
［第１実施形態］
〔装置構成〕
図３は、第１実施形態における高次元データ検索装置（以降、単に検索装置と表記する）１のハードウェア構成例を概念的に示す図である。第１実施形態における検索装置１は、図３に示されるように、ハードウェア構成として、相互にバス１５により接続される、ＣＰＵ（Central Processing Unit）１０、メモリ１１、入出力インタフェース（Ｉ／Ｆ）１２、通信装置１３等を有する。メモリ１１は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、可搬型記憶（記録）媒体等である。入出力Ｉ／Ｆ１２は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置（図示せず）、表示装置やプリンタ等のようなユーザに情報を提供する出力装置（図示せず）などと接続可能である。通信装置１３は、他のノードと通信を行う。なお、検索装置１は、入力装置や出力装置を持たなくてもよく、検索装置１のハードウェア構成は制限されない。
【００４１】
検索装置１は、インデックス対象データを取得し、取得されるインデックス対象データに基づいて上述の実施形態で示されるデータ構造を持つインデックスを生成する。また、検索装置１は、検索対象データ及び類似度条件を取得し、上述のように生成されたインデックスを用いて、検索対象データに関し類似度条件に適合するデータを検索する。本実施形態では、検索装置１により生成されるインデックスを類似度木と表記する場合もある。類似度木とは、類似度に基づく階層構造を持つインデックスを意味する。検索装置１の一部が上述のインデックス生成装置１００に相当する。
【００４２】
〔処理構成〕
図４は、第１実施形態における検索装置１の処理構成例を概念的に示す図である。第１実施形態における検索装置１は、対象取得部２０、インデックス生成部２１、閾値決定部２２、検索部３０、データベース３５等を有する。これら各処理部は、例えば、ＣＰＵ１０によりメモリ１１に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ１２を介してインストールされ、メモリ１１に格納されてもよい。
【００４３】
対象取得部２０は、映像等のような高次元の特徴量データをインデックス対象データとして取得する。特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力Ｉ／Ｆ１２又は通信装置１３を経由して取得された情報であってもよい。
【００４４】
インデックス生成部２１は、上述のインデックス生成装置１００におけるインデックス生成部１０１と同様に、対象取得部２０により取得される特徴量データのインデックスとなる類似度木を生成及び更新する。生成又は更新された類似度木のデータは、データベース３５に格納される。なお、当該類似度木のデータは、入出力Ｉ／Ｆ１２を介して可搬型記録媒体に格納されてもよいし、通信装置１３を介して他のコンピュータに送信されてもよい。
【００４５】
本実施形態は、類似度木を構成する各ノードが次のようなデータ構造を持つ形態を採用する。下位ノードとリンク関係を持つ上位ノードのエントリは、その下位ノードを指すポインタと、そのリンク関係に付与される類似度閾値と、そのエントリにより示される特徴量データとを含む。その上位ノードにおける、下位ノードとリンク関係を持たないエントリは、そのエントリにより示される特徴量データを含む。また、下位ノードへのポインタを含むエントリを１つも持たないノードに含まれる各エントリは、各エントリにより示される特徴量データのデータベース３５内の格納領域を指すポインタをそれぞれ含む。また、下位ノードへのポインタが設定されたエントリが持つ特徴量データは、その下位ノードに含まれるエントリにも設定されるか、又は、その下位ノードに含まれるエントリにその特徴量データへのポインタが設定される。
【００４６】
以降、下位ノードへのポインタを含むエントリを１つも持たないノードは、葉ノードと表記され、下位ノードへのポインタを含むエントリを１つでも持つノードは、中間ノードと表記される場合がある。また、中間ノードの中で最上位のノードは、ルートノードと表記される場合もある。よって、図２によれば、ノードＬ３はルートノード又は中間ノードと表記され、ノードＬ２は中間ノードと表記され、ノードＬ１は葉ノードと表記され得る。
【００４７】
また、上位ノードと、その上位ノードに含まれるエントリのポインタでリンクされる下位ノードとの関係は、親子関係と表記される場合もあり、その親子関係を持つ上位ノード及び下位ノードは、親ノード及び下位ノードとそれぞれ表記される場合もある。よって、図２によれば、ノードＬ２とノードＬ１との関係では、ノードＬ２は親ノードと表記され、ノードＬ１は子ノードと表記され得る。
【００４８】
インデックス生成部２１は、対象取得部２０により取得された対象の特徴量データを類似度木に反映する際、当該対象の特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される特徴量データとの類似度を類似度算出部２５から取得し、その類似度とそのエントリに含まれる類似度閾値とを比較し、この比較結果に基づいて、当該対象の特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部２１は、類似度が類似度閾値以上であれば、当該対象の特徴量データを含むエントリの挿入先を下位ノードに決定し、類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。
【００４９】
また、インデックス生成部２１は、代表選択部２３及び溢れ調整部２４を含む。
【００５０】
代表選択部２３は、特徴量データの追加時又は削除時に、必要に応じて、或るノードに含まれる複数エントリの中から代表エントリを選択する。これは、データ集合Ｆの中から代表のデータｆｂを選択することに相当する。よって、代表エントリとは、代表として選択された特徴量データを示すエントリを意味する。また、代表エントリに含まれる特徴量データは代表特徴量データとも表記される。代表エントリを選択するエントリの母集団は、対象ノードに含まれる全エントリであってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。母集団を対象ノードに含まれる全エントリとする場合、既に存在する子ノードの再構成が必要になる場合がある。
【００５１】
例えば、代表選択部２３は、以下に示す２つの選択方法のいずれか１つを用いて、代表エントリを選択する。但し、本実施形態は、代表エントリ選択方法を以下のような方法に制限しない。代表選択部２３は、以下に示す２つの選択方法以外で、任意のエントリを代表エントリとしてランダムに選択してもよい。
【００５２】
第１の選択方法では、代表選択部２３は、他の各エントリにより示される各特徴量データとの類似度の分散が最小となる特徴量データを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部２３は、下記式に表わされるように、集合Ｆに属する各特徴量データｆｉに関し、特徴量データｆｉと他の特徴量データｆｊとの全ての類似度をそれぞれ算出し、類似度分布の分散値σが最小となる特徴量データｆｉを、集合Ｆの代表として選出する。但し、第１の選択方法において、代表エントリとして選択されるエントリは、各データとの類似度の分散が最小となるデータを示すエントリのみに制限されるわけではない。代表エントリは、各データとの類似度の分散が小さいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該分散が２番目に小さいデータを示すエントリが代表エントリに選択されてもよい。
【数２】
2014109127.tif 000004
【００５３】
第２の選択方法では、代表選択部２３は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部２３は、下記式に表わされるように、集合Ｆに属する各特徴量データｆｉに関し、特徴量データｆｉが最近傍となる他の特徴量データの数ＲＮＮ（Reverse Nearest Neighbors）（ｆｉ）が最大となる特徴量データｆｉを、集合Ｆの代表として選出する。但し、第２の選択方法において、代表エントリとして選択されるエントリは、当該データの数が最大となるデータを示すエントリのみに制限されるわけではない。代表エントリは、当該データの数が大きいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該データの数が２番目に大きいデータを示すエントリが代表エントリに選択されてもよい。
【数３】
2014109127.tif 000005
【００５４】
溢れ調整部２４は、対象取得部２０により取得された特徴量データを含むエントリが挿入されたノードのエントリ数が所定エントリ閾値を超える場合に、そのノードを子ノードと親ノードとに分割する。このようにノードを親ノードと子ノードとに分割することを溢れ調整とも表記する。このとき、溢れ調整部２４は、エントリ数が所定エントリ閾値を超えたノードを対象に代表選択部２３に代表エントリを選択させ、更に、閾値決定部２２に新たな類似度閾値を決定させる。溢れ調整部２４は、代表選択部２３により選択された代表エントリに含まれる特徴量データとの類似度が閾値決定部２２により決定された新たな類似度閾値以上の特徴量データを含むエントリを選択し、この選択されたエントリを含む下位ノード（子ノード）を生成し、元のノード（親ノード）の代表エントリにその下位ノードへのポインタとその新たな類似度閾値とを設定する。ここで、代表エントリは、子ノード及び親ノードの両方に含められてもよいし、親ノードのみに含められてもよい。
【００５５】
閾値決定部２２は、上述のインデックス生成装置１００における閾値決定部１０２と同様に、類似度閾値を階層が下がる程大きい値に決定する。例えば、閾値決定部２２は、以下に示す３つの決定方法のいずれか１つを用いて、新たな類似度閾値を決定する。但し、本実施形態は、類似度決定方法を以下のような方法に制限しない。
【００５６】
第１の決定方法では、新たな類似度閾値が、既に決定されている類似度閾値と均等間隔の値に決定される。言い換えれば、第１の決定方法では、０から１までの類似度範囲を等間隔に分割することにより、各類似度閾値がそれぞれ決定される。例えば、０．１の等間隔で［０，１］の類似度範囲区間を１０等分割し、各類似度閾値はそれぞれの分割点の数値に決定される。この場合、類似度閾値は、０．１、０．２、０．３、...、０．９、１．０といった値に決定される。
【００５７】
第２の決定方法では、新たな類似度閾値が、既に決定されている類似度閾値と最大類似度とを再帰的に２分割して得られる値に決定される。言い換えれば、第２の決定方法では、０から１までの類似度範囲を再帰的にＬｏｇスケールに分割することにより、各類似度閾値がそれぞれ決定される。例えば、１番目の類似度閾値が０．２に設定され、２番目の類似度閾値が、０．２から１．０までの範囲を２等分割することにより、その分割点０．６に決定される。このように２等分割が繰り返されることで、３番目以降の各類似度閾値は、０．８、０．９、０．９５、０．９７５、０．９８７５などに決定される。
【００５８】
第３の決定方法では、新たな類似度閾値が、代表の特徴量データと、代表の特徴量データが属するデータ集合の他の特徴量データとの類似度から得られる値に決定される。例えば、算出される複数の類似度の中の中央値となる類似度が、新たな類似度閾値に決定される。具体的には、データ集合に含まれる５つの特徴量データと代表の特徴量データとの類似度がそれぞれ、０．５、０．３、０．６、０．９、０．９５である場合、新たな類似度閾値が、中央値０．６に決定される。また、算出される複数の類似度の中の最大値と最小値との間を２等分割し、その分割点が新たな類似度閾値に決定されてもよい。
【００５９】
類似度算出部２５は、２つの特徴量データ間の類似度を算出する。本実施形態では、類似度算出部２５による類似度算出手法は何ら制限されない。類似度算出部２５は、外部から提供される内部処理がブラックボックス化されたＡＰＩ（Application Programming Interface）やライブラリ等を用いて、当該類似度を算出してもよい。
【００６０】
データベース３５は、インデックス対象となる特徴量データ群、インデックス生成部２１により生成された類似度木の情報、この類似度木に関連する情報（類似度木の生成のために算出された類似度等）を格納する。インデックス対象となるデータ群が、表形式データを形成する或る属性のデータである場合には、データベース３５は、その表形式データを格納してもよい。データベース３５は、メモリ１１に含まれるハードディスク等のような外部メモリ上に実現される。また、類似度木の生成及び検索を高速化するために、データベース３５に格納される類似度木の葉ノード以外のノードの情報は、メモリ１１に含まれる主記憶にバッファリングされる。
【００６１】
検索部３０は、インデックス生成部２１により生成される類似度木を用いて、データベース３５に格納される特徴量データ群の中から、検索対象データに関し類似度条件に適合する特徴量データを検索する。検索結果のデータは、入出力Ｉ／Ｆ１２を介して表示装置や印刷装置に出力されてもよいし、入出力Ｉ／Ｆ１２を介して可搬型記録媒体に格納されてもよいし、通信装置１３を介して他のコンピュータに送信されてもよい。
【００６２】
検索部３０は、図４に示されるように、条件取得部３１、類似度算出部３２及び検索処理部３３を含む。
【００６３】
条件取得部３１は、検索対象の特徴量データ及び類似度条件を取得する。検索対象の特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力Ｉ／Ｆ１２又は通信装置１３を経由して取得された情報であってもよい。
【００６４】
類似度算出部３２は、類似度算出部２５と同様である。検索装置１において、類似度算出部２５と類似度算出部３２とは１つの処理部として共有されてもよい。
【００６５】
検索処理部３３は、類似度算出部３２により取得される類似度と、類似度閾値、又は、条件取得部３１により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値を持つエントリ、及び、その類似度閾値を含むエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象（検索結果）から除外する。但し、検索処理部３３は、辿り着いたノードに含まれる全エントリをチェックする幅優先探索法を用いてもよいし、同一ノード内の他のエントリよりもリンク先の子ノードのエントリを優先的にチェックする深さ優先探索法を用いてもよい。
【００６６】
〔動作例〕
まず、第１実施形態におけるインデックス生成方法について図５及び図６を用いて説明する。以下の説明では、検索装置１が各方法の実行主体となるが、検索装置１に含まれる上述の各処理部が実行主体となってもよい。
【００６７】
図５は、インデックス生成処理に関する検索装置１の動作例を示すフローチャートである。ここでは、子ノードへのポインタ及び類似度閾値が設定された少なくとも１つのエントリを含むルートノードが、既に生成されていると仮定する。また、図５には示されていないが、インデックス生成処理を開始する前には、検索装置１は、類似度木の生成に関する各種パラメータを既に保持している。パラメータには、エントリ閾値、代表エントリの選択方法及び類似度閾値の決定方法が含まれる。また、パラメータには、類似度木の階層の深さの閾値が含まれていてもよい。
【００６８】
検索装置１は、インデックス対象となる特徴量データｆｉを取得する（Ｓ５０）。
続いて、検索装置１は、対象ノードをルートノードに設定する（Ｓ５１）。対象ノードとは、その特徴量データｆｉを示すエントリの挿入候補となるノードを意味する。このように、検索装置１は、上位ノードから下位ノードへと順にエントリの挿入候補を選んでいく。
【００６９】
検索装置１は、対象ノードに含まれる、子ノードへのポインタを含む各エントリについて、そのエントリに含まれる特徴量データｆｅと特徴量データｆｉとの類似度Ｓをそれぞれ算出し、類似度Ｓが類似度閾値以上となる特徴量データｆｅを含むエントリを特定する（Ｓ５２）。検索装置１は、対象ノードに、類似度Ｓが類似度閾値以上となる特徴量データｆｅを含むエントリが存在する場合（Ｓ５２；ＹＥＳ）、その特定されたエントリの中で類似度Ｓが最大となるエントリのポインタが示す子ノードを対象ノードに設定する（Ｓ５３）。
【００７０】
検索装置１は、対象ノードが葉ノードでない場合（Ｓ５４；ＮＯ）、工程（Ｓ５２）以降を再度実行する。検索装置１は、対象ノードが葉ノードである場合（Ｓ５４；ＹＥＳ）、又は、対象ノードに、該当するエントリが存在しない場合（Ｓ５２；ＮＯ）、特徴量データｆｉを含むエントリをその対象ノードに追加する（Ｓ５５）。
【００７１】
検索装置１は、エントリが追加された対象ノードのエントリ数が所定エントリ閾値を超えるか否かを判定する（Ｓ５６）。検索装置１は、対象ノードのエントリ数が所定エントリ閾値を超える場合（Ｓ５６；ＹＥＳ）、次のように、その対象ノードに含まれるエントリを親ノードと子ノードとに分割する。
【００７２】
検索装置１は、対象ノードのエントリの中から代表エントリを選択する（Ｓ５７）。ここでの代表エントリの選択方法には、例えば、上述のような２つの選択方法のいずれか１つが利用される。また、代表エントリを選択するエントリの母集団は、対象ノードに含まれる全エントリであってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。
【００７３】
検索装置１は、選択された代表エントリに設定するための類似度閾値を決定する（Ｓ５８）。ここでの類似度閾値の決定方法には、例えば、上述のような３つの決定方法のいずれか１つが利用される。
【００７４】
検索装置１は、代表エントリに含まれる特徴量データと、代表エントリを選択した母集団に含まれる代表エントリ以外の各エントリに含まれる各特徴量データとの類似度をそれぞれ算出する（Ｓ５９）。
【００７５】
続いて、検索装置１は、類似度閾値以上の類似度を示す特徴量データを持つエントリを含む子ノードを生成する（Ｓ６０）。このとき、検索装置１は、対象ノードから、その子ノードに追加されたエントリを削除する。また、代表エントリを選択したエントリの母集団が、対象ノードに含まれる全エントリであり、かつ、選択された代表エントリが既に子ノードへのポインタを持っていた場合には、検索装置１は、新たに子ノードを生成することなく、既に存在する子ノードに、類似度閾値以上の類似度を示す特徴量データを持つエントリを追加してもよい。
【００７６】
検索装置１は、対象ノードの代表エントリに、（Ｓ６０）で生成された子ノードへのポインタと（Ｓ５８）で決定された類似度閾値とを設定する（Ｓ６１）。
【００７７】
検索装置１は、対象ノードのエントリ数が所定エントリ閾値を超えない場合（Ｓ５６；ＮＯ）、又は、（Ｓ６１）の完了後、特徴量データｆｉと共に、類似度木データをデータベース３５に格納する（Ｓ６２）。ここで、検索装置１は、類似度木データのうち更新された箇所のデータのみをデータベース３５に反映してもよい。また、類似度木データの格納前に、検索装置１は、類似度木の葉ノードのエントリに設定されている特徴量データｆｉをデータベース３５に格納される特徴量データｆｉへのポインタに置き換える。
【００７８】
図６は、データ削除処理に関する検索装置１の動作例を示すフローチャートである。
【００７９】
検索装置１は、削除対象となる特徴量データｆｄ（以降、削除データと表記する）を取得すると、その削除データｆｄを示すエントリを特定する（Ｓ７１）。このとき、検索装置１は、葉ノードの各エントリにより示される特徴量データを、そのエントリに含まれるポインタを用いて、データベース３５から取得する。削除データｆｄの特定方法は、図７を用いて後述する類似検索方法と同様でよいため、ここでは説明を省略する。但し、この場合には、類似度条件δは１（一致）に設定される。
【００８０】
検索装置１は、特定されたエントリの中の葉ノードのエントリを削除する（Ｓ７２）。削除データｆｄが或るデータ集合の代表に設定されている場合、特定されたエントリの中には中間ノードも含まれる。また、検索装置１は、削除データｆｄをデータベース３５から削除してもよい。
【００８１】
続いて、検索装置１は、削除されたエントリを含む葉ノードへのポインタを含む親ノードのエントリを対象エントリに設定する（Ｓ７３）。
【００８２】
検索装置１は、この対象エントリを更新する必要があるか否かを判定する（Ｓ７４）。例えば、対象エントリが削除データｆｄを含む場合、上述の（Ｓ５７）で実行される代表エントリの選択方法が子ノードで示される特徴量データ集合の値分布に依存する場合などには、検索装置１は、対象エントリを更新する必要があると判定する（Ｓ７４；ＹＥＳ）。
【００８３】
例えば、一方、代表エントリの選択方法が任意のエントリの選択である場合で、かつ、対象エントリが削除データｆｄを含まない場合には、検索装置１は、対象エントリを更新する必要がないと判定する（Ｓ７４；ＮＯ）。対象エントリを更新する必要がないと判定すると（Ｓ７４；ＮＯ）、検索装置１は、データ削除処理を終了する。
【００８４】
検索装置１は、対象エントリを更新する必要があると判定すると（Ｓ７４；ＹＥＳ）、代表エントリを再選択する（Ｓ７５）。ここでの代表エントリを選択する母集団は、例えば、対象エントリの子ノードに含まれるエントリとされる。但し、当該母集団には、その対象エントリを含むノードの他のエントリが更に加えられてもよい。
【００８５】
検索装置１は、対象エントリに含まれる元の特徴量データを再選択された代表エントリの特徴量データに更新する（Ｓ７６）。
【００８６】
検索装置１は、更に、その対象エントリに設定されている類似度閾値を更新する必要があるか否かを判定する（Ｓ７７）。例えば、上述の（Ｓ５８）で実行される類似度閾値の決定方法が、上述の第３の決定方法のように、代表エントリを選択する母集団に関する類似度に依存する場合には、検索装置１は、類似度閾値を更新する必要があると判定する（Ｓ７７；ＹＥＳ）。検索装置１は、類似度閾値を更新する必要があると判定すると（Ｓ７７；ＹＥＳ）、新たな類似度閾値を決定し、対象エントリの元の類似度閾値をこの新たな類似度閾値に更新する（Ｓ７８）。
【００８７】
検索装置１は、対象エントリに設定されている特徴量データ及び類似度閾値に基づいて、対象エントリを含むノード及びその対象エントリの現在の子ノードを再構成する必要があるか否かを判定する（Ｓ７９）。具体的には、検索装置１は、対象エントリの特徴量データと同一ノードの他のエントリの特徴量データとの類似度を対象エントリに設定される類似度閾値と比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、当該類似度閾値以上となる類似度を示すエントリは、子ノードに移動させるべきと判定される。
【００８８】
検索装置１は、対象エントリを含むノードの他のエントリを子ノードへ移動させることで、対象エントリを含むノード及び対象エントリの子ノードを再構成する（Ｓ８０）。
【００８９】
続いて、検索装置１は、対象エントリを含むノードの親ノードが存在するか否かを判定する（Ｓ８１）。具体的には、検索装置１は、対象エントリを含むノードへのポインタを含むエントリを持つ中間ノードが存在するか否かを判定する。
【００９０】
検索装置１は、対象エントリを含むノードの親ノードが存在する場合（Ｓ８１；ＹＥＳ）、現対象エントリを含むノードへのポインタを含む親ノードのエントリを新たな対象エントリに設定する（Ｓ８２）。検索装置１は、この新たな対象エントリについて、工程（Ｓ７４）以降を実行する。ここで、検索装置１は、類似度木データのうち更新された箇所のデータをデータベース３５に反映する。
【００９１】
次に、第１実施形態における類似検索方法について図７を用いて説明する。図７は、類似検索処理に関する検索装置１の動作例を示すフローチャートである。
【００９２】
検索装置１は、検索対象の特徴量データ（以降、クエリデータｆｑと表記）及び類似度条件δを取得する（Ｓ９０）。ここで取得されたデータは、クエリデータｆｑと類似度条件δ以上の類似度を示す特徴量データをデータベース３５から抽出することを要求する。
【００９３】
検索装置１は、対象ノードをルートノードに設定する（Ｓ９１）。対象ノードとは、クエリデータｆｑとの比較候補となるノードを意味する。このように、検索装置１は、上位ノードから下位ノードへと順に比較候補を選んでいく。
【００９４】
検索装置１は、対象ノードの各エントリの各特徴量データｆｅとクエリデータｆｑとの類似度Ｓをそれぞれ算出する（Ｓ９２）。
【００９５】
検索装置１は、対象ノードが葉ノードである場合（Ｓ９３；ＹＥＳ）、対象ノードに含まれるエントリの中から、類似度条件δ未満の類似度Ｓを示す特徴量データｆｅを示すエントリを抽出対象から除外する（Ｓ９４）。
【００９６】
一方、検索装置１は、対象ノードが葉ノードでない場合（Ｓ９３；ＮＯ）、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の類似度Ｓを示す特徴量データｆｅを示すエントリを抽出対象から除外する（Ｓ９５）。
【００９７】
検索装置１は、対象ノードに、子ノードを持つエントリが除外されず残っているか否かを判定する（Ｓ９６）。検索装置１は、子ノードを持つエントリが残っている場合（Ｓ９６；ＹＥＳ）、現対象ノードの子ノードを新たな対象ノードに設定する（Ｓ９７）。検索装置１は、この新たな対象ノードについて、（Ｓ９２）以降を実行する。
【００９８】
検索装置１は、抽出対象に残ったエントリの特徴量データｆｅを検索結果に設定する（Ｓ９８）。
【００９９】
上述の類似検索方法は、幅優先探索法を用いた方法であったが、深さ優先探索法が用いられてもよい。深さ優先探索法が用いられる類似検索方法では、対象ノードが中間ノードである場合、（Ｓ９２）では、対象ノードの１つのエントリの特徴量データｆｅとクエリデータｆｑとの類似度Ｓが算出される。更に、（Ｓ９４）の実行後、クエリデータｆｑとの比較を行っていないエントリを有する最上位の中間ノードを新たな対象ノードに設定し、（Ｓ９２）以降が更に実行される。
【０１００】
本実施形態におけるインデックス生成方法及び類似検索方法は、図５、図６及び図７に示される例に制限されない。例えば、図５の例では、特徴量データｆｉが取得される度に、その特徴量データｆｉ及び類似度木データがデータベース３５に格納されたが、特徴量データｆｉ及び類似度木データのデータベース３５への格納タイミングは、任意である。また、（Ｓ５９）等の類似度を算出する工程は、毎回、類似度計算をすることなく、過去に算出されている類似度を保持部から取得するようにしてもよい。
【０１０１】
〔第１実施形態の作用及び効果〕
上述のように、第１実施形態では、インデックス対象となる特徴量データの形態に依存することなく、特徴量データ間の類似度及び類似度に関する上述の規則に基づいて、階層化された類似度木が生成される。そして、この類似度木に基づいて、検索対象の特徴量データに関し類似度条件を満たす特徴量データが抽出される。また、第１実施形態では、類似度算出部２５及び類似度算出部３２における類似度算出手法自体は、何ら制限されない。このように、第１実施形態では、インデックス対象データの幾何学的性質やデータ構造に依存せず、インデックスである類似度木が生成される。更に、第１実施形態では、類似度算出手法に依存することもなく、当該類似度木の生成及び類似検索が実行される。
【０１０２】
従って、第１実施形態によれば、インデックス対象のデータ構造が未知である場合や特徴量データが高次元データである場合等においても、適切に類似検索をすることができる。即ち、第１実施形態によれば、インデックス対象のデータ構造に依存しない汎用的な類似検索技術を提供することができる。
【０１０３】
また、第１実施形態では、類似度木に新たな特徴量データを反映させる（追加する）際に、その新たな特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される特徴量データとの類似度が算出され、その類似度とそのエントリに含まれる類似度閾値とが比較され、この比較結果に基づいて、当該新たな特徴量データを含むエントリの挿入先がその中間ノード又はその下位ノードに決定される。更に、第１実施形態では、ノード内のエントリ数が制限（所定エントリ閾値）を超えた場合には、溢れ調整されることにより、そのノードが親ノードと子ノードとに分割される。その溢れ調整では、そのノード内のエントリから代表エントリが選択され、その代表エントリに設定される新たな類似度閾値が決定され、代表エントリの特徴量データと他のエントリの特徴量データとの類似度とその新たな類似度閾値との関係から、各エントリの配置が子ノード又は親ノードに決定される。
【０１０４】
このように、第１実施形態では、各ノードの特徴量データとの類似度に基づいて、上位階層から下位階層へ順番に各ノードがチェックされることにより、取得されたインデックス対象の特徴量データに対応するエントリが適切なノードに挿入される。更に、各ノードのエントリ数に応じて、各ノードが階層的に分割される。
【０１０５】
従って、第１実施形態によれば、インデックス対象のデータに基づいて、インデックス対象のデータ規模によらず、動的に、類似度木を生成及び更新することができる。一方、背景技術で述べた提案技術には、動的なインデックスの生成及び更新をサポートするものが少ない。Ｒ木技術のようにそれをサポートしている既存技術であったとしても、大規模データには対応し難い。
【０１０６】
また、第１実施形態では、検索対象の特徴量データ（クエリデータ）及び類似度条件が取得され、類似度木において上位ノードから下位ノードへ順にチェックされることにより、クエリデータに関する類似度条件を満たす特徴量データが特定され、データベース３５から抽出される。このとき、中間ノードでは、エントリにより示される特徴量データとクエリデータとの類似度が算出され、この類似度と、そのエントリに含まれる類似度閾値又は類似度条件とが比較され、この比較結果に基づいて、中間ノードのそのエントリ、及び、そのエントリの子ノード以下の下位ノードのエントリが抽出対象から除外される。
【０１０７】
このように、第１実施形態では、類似度木の上位ノードから順に各エントリがチェックされ、当該類似度条件を満たさないエントリ及びそのエントリの子ノードを含む子孫ノードのエントリが抽出対象から逐次除外される。従って、第１実施形態によれば、類似度木に基づいてチェックするノードを制限することができるため、高い検索効率を実現することができる。更に、第１実施形態によれば、上述のように、類似度木は特徴量データの次元数に依存しないため、特徴量データの次元数が増加することに伴う検索効率の低減を防ぐことが出来る。
【０１０８】
また、第１実施形態では、ノードの溢れ調整時などに代表エントリを選出する方法として、上述のような２つの選択方法が例示された。代表エントリは、子ノードにより示される特徴量データの集合の代表であり、上述の規則に示されるように、類似度閾値と共に、その子ノードに含めるべき特徴量データを決める判断材料となる。よって、代表エントリは、既に類似度木に登録されている特徴量データに関する親ノードと子ノードとのエントリ数のバランスを取るためには、それら特徴量データの集合の中心近辺に位置することが望ましい。上記２つの選択方法によれば、ノードの溢れ調整直後の親ノードと子ノードとのエントリ数のバランスを取ることができる。但し、上記２つの選択方法以外でランダムに選択する方法が採用された場合には、代表エントリ選出の処理負荷を削減することができると共に、ノードの溢れ調整後（ノード分割後）、類似度木生成が進むにつれ、親ノードと子ノードとのエントリ数のバランスは取られる。
【０１０９】
また、第１実施形態では、ノードの溢れ調整時などに類似度閾値を決定する方法として、上述のような３つの決定方法が例示された。類似度閾値は、子ノードにより示される特徴量データの集合における、代表の特徴量データからの距離の閾値に相当し、上述の規則に示されるように、代表データと共に、その子ノードに含めるべき特徴量データを決める判断材料となる。上述の例における、新たな類似度閾値が、既に登録されている特徴量データの代表データとの類似度の分布から決定される方法によれば、既に類似度木に登録されている特徴量データに関する親ノードと子ノードとのエントリ数のバランスを取ることができる。但し、他の類似度閾値の決定方法においても、類似度閾値決定の処理負荷を削減することができると共に、ノードの溢れ調整後（ノード分割後）、類似度木生成が進むにつれ、親ノードと子ノードとのエントリ数のバランスは取られる。
【０１１０】
［第２実施形態］
上述の第１実施形態では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる１つの特徴量データを含んでいた。第２実施形態では、代表となる複数の特徴量データが、子ノードへのポインタと共に当該エントリに含まれる。代表となる特徴量データの数の上限は、例えば、子ノードで示される特徴量データの数より小さい値に設定される。以下、第２実施形態における検索装置１について、第１実施形態と異なる内容を中心に説明する。以下の説明では、第１実施形態と同様の内容については適宜省略する。
【０１１１】
図８は、第２実施形態における類似度木の一部の例を概念的に示す図である。図８に示されるように、第２実施形態では、下位ノードＬ１へのポインタ（リンク関係Ｒ１）を含む上位（中間）ノードＬ２のエントリＥ２は、類似度閾値Ｔ１と、下位ノードＬ１に含まれる複数エントリＥ１（ｎ）で示される複数の特徴量データ（ｆ１、ｆ３、ｆ９等）の代表となる複数の特徴量データｆ８及びｆ１１とを含む。
【０１１２】
代表選択部２３は、特徴量データの追加時又は削除時に、必要に応じて、或るノードに含まれる複数の特徴量データの中から代表となる複数の特徴量データを選択する。中間ノードには、複数の特徴量データ及び子ノードへのポインタを含むエントリと、子ノードへのポインタを含まず１つの特徴量データを含むエントリとが混在する場合がある。この場合、代表選択部２３は、子ノードへのポインタを含まないエントリの中から代表となる複数の特徴量データを選択するようにしてもよい。また、代表選択部２３は、その中間ノードに含まれる全エントリの全特徴量データの中から代表となる複数の特徴量データを選択するようにしてもよい。
【０１１３】
例えば、代表選択部２３は、以下に示す２つの選択方法のいずれか１つを用いて、代表となる複数の特徴量データを選択する。但し、本実施形態は、代表となる複数の特徴量データの選択方法を以下のような方法に制限しない。代表選択部２３は、代表となる複数の特徴量データをランダムに選択するようにしてもよい。
【０１１４】
第１の選択方法では、代表選択部２３は、類似度の値が最大となる特徴量データの組み合わせを代表として選択する。２つの特徴量データが代表として選択される場合、代表選択部２３は、類似度の値が最大となる特徴量データのペアを代表として選択する。
【０１１５】
第２の選択方法では、代表選択部２３は、類似度の値が最小となる特徴量データの組み合わせを代表として選択する。２つの特徴量データが代表として選択される場合、代表選択部２３は、類似度の値が最小となる特徴量データのペアを代表として選択する。
【０１１６】
閾値決定部２２は、第１実施形態における３つの決定方法に加えて、以下に示す第４の決定方法を用いてもよい。第４の決定方法では、新たな類似度閾値が、複数の代表の特徴量データの中心点となる特徴量データと他の特徴量データとの類似度に決定される。
【０１１７】
インデックス生成部２１は、新たな特徴量データを類似度木に反映する場合に、当該新たな特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される複数の特徴量データとの各類似度をそれぞれ取得し、各類似度と類似度閾値とをそれぞれ比較し、各比較結果に基づいて、当該新たな特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部２１は、全ての類似度が類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、いずれか１つの類似度でも類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。但し、インデックス生成部２１は、いずれか１つの類似度でも類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、全ての類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定するようにしてもよい。
【０１１８】
検索処理部３３は、検索対象の特徴量データとエントリに含まれる複数の特徴量データとに関し取得される各類似度と、類似度閾値、又は、条件取得部３１により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値を持つエントリ、及び、その類似度閾値を含むエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象（検索結果）から除外する。このとき、全ての類似度が、類似度閾値と類似度条件との小さい方の値未満であれば、その類似度閾値を含むエントリは抽出対象から除外される。
【０１１９】
〔動作例〕
以下、第２実施形態におけるインデックス生成方法について図５及び図６を用いて説明する。第２実施形態では、（Ｓ５２）、（Ｓ５３）、（Ｓ５７）、（Ｓ５９）、（Ｓ６０）及び（Ｓ６１）において、複数の特徴量データが処理対象とされる点において、第１実施形態と異なる。
【０１２０】
具体的には、（Ｓ５２）では、検索装置１は、対象ノードに含まれる各エントリについて、そのエントリに含まれる複数の特徴量データｆｅと特徴量データｆｉとの各類似度Ｓをそれぞれ算出し、類似度閾値以上の複数の類似度Ｓを示す複数の特徴量データｆｅを示すエントリを特定する。但し、検索装置１は、類似度閾値以上の類似度Ｓを示す１つの特徴量データを含む複数の特徴量データｆｅを示すエントリが特定されてもよい。（Ｓ５３）では、検索装置１は、その特定されたエントリの中で類似度Ｓが最大となるエントリのポインタが示す子ノードを対象ノードに設定する。
【０１２１】
具体的には、（Ｓ５７）では、検索装置１は、対象ノードのエントリの中から複数の特徴量データを代表として選択する。（Ｓ５９）では、検索装置１は、（Ｓ５７）で代表として選択された複数の特徴量データと、それら代表を選択した母集団に含まれるそれら代表以外の各特徴量データとの類似度をそれぞれ算出する。（Ｓ６０）において、検索装置１は、代表として選択された複数の特徴量データとの類似度が類似度閾値以上を示す特徴量データを持つエントリを含む子ノードを生成する。但し、検索装置１は、代表として選択された複数の特徴量データの中の１つとの類似度が類似度閾値以上を示す特徴量データを持つエントリを子ノードに含めてもよい。
【０１２２】
（Ｓ６１）では、検索装置１は、代表として選択された複数の特徴量データを含む１つのエントリを生成し、それら代表を含んでいたエントリを削除し、その生成されたエントリに（Ｓ６０）で生成された子ノードへのポインタと（Ｓ５８）で決定された類似度閾値とを設定する。
【０１２３】
第２実施形態では、（Ｓ７５）、（Ｓ７６）及び（Ｓ７９）において、複数の特徴量データが処理対象とされる点において、第１実施形態と異なる。
【０１２４】
（Ｓ７５）では、検索装置１は、代表となる複数の特徴量データを再選択する。
（Ｓ７６）では、検索装置１は、再選択された複数の特徴量データを対象エントリに設定する。
【０１２５】
（Ｓ７９）では、検索装置１は、対象エントリの複数の特徴量データと同一ノードの他のエントリの特徴量データとの各類似度を対象エントリに設定される類似度閾値とそれぞれ比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、対象エントリの複数の特徴量データと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させるべきと判定される。但し、対象エントリの複数の特徴量データの中の１つと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させると判定されてもよい。
【０１２６】
次に、第２実施形態における類似検索方法について図７を用いて説明する。第２実施形態では、（Ｓ９２）及び（Ｓ９５）において、複数の特徴量データが処理対象とされる点において、第１実施形態と異なる。
【０１２７】
（Ｓ９２）では、検索装置１は、対象ノードが中間ノードである場合、対象ノードの各エントリの複数の特徴量データｆｅとクエリデータｆｑとの各類似度Ｓをそれぞれ算出する。（Ｓ９５）では、検索装置１は、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の複数の類似度Ｓを示す複数の特徴量データｆｅを示すエントリを抽出対象から除外する。
【０１２８】
〔第２実施形態の作用及び効果〕
第２実施形態では、子ノードへのポインタを含む中間ノードのエントリは、複数の特徴量データを示す。即ち、第２実施形態では、子ノードで示される特徴量データ集合の代表となる複数の特徴量データが選出され、当該複数の特徴量データが親ノードのエントリに設定される。そして、子ノードで示される特徴量データの集合は、親ノードのエントリに含まれる全ての特徴量データ又はいずれか１つの特徴量データとの類似度がその類似度閾値以上を示す。
【０１２９】
このように、第２実施形態によれば、親ノードのエントリで示される複数の特徴量データが用いられることにより、子ノードで示される特徴量データ集合との類似度が判定されるため、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を、第１実施形態に比べより厳密に定義することができる。
【０１３０】
また、類似度の値が最大となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データの分散が大きい場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。一方、類似度の値が最小となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データが密集する場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。
【０１３１】
このように、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができるため、第２実施形態によれば、類似度木のバランスを取り易くなり、ひいては、検索効率を向上させることができる。
【０１３２】
以下に実施例を挙げ、上述の各実施形態を更に詳細に説明する。本発明は以下の実施例から何ら限定を受けない。
【実施例１】
【０１３３】
実施例１は、上述の第１実施形態に対応する。以下、実施例１における検索装置１の動作及びインデックス生成方法について、図５に沿って説明する。【０１３４】
図９から図１８は、実施例１におけるインデックス生成過程を概念的に示す図である。実施例１では、図９に示されるように、子ノードへのポインタ、類似度閾値（０．１）及び特徴量データｆ１が設定されたエントリを持つルートノードが既に生成されていると仮定する。また、エントリ閾値が３に設定されていると仮定する。また、以降、特徴量データを単にデータと表記する。【０１３５】
検索装置１は、インデックス対象となるデータｆ５を取得する（Ｓ５０）。その後、検索装置１は、データｆ１とデータｆ５との類似度（０．８）が類似度閾値（０．１）より大きいため、ルートノードの子ノードであるノードＮ１を対象ノードに設定する（Ｓ５３）。ここで、ノードＮ１は葉ノードであるため（Ｓ５４；ＹＥＳ）、検索装置１は、データｆ５を含むエントリを対象ノードＮ１に追加する（Ｓ５５）。【０１３６】
検索装置１は、対象ノードのエントリ数（４）が所定エントリ閾値（３）を超えているため（Ｓ５６；ＹＥＳ）、溢れ調整を行う。溢れ調整において、検索装置１は、対象ノードＮ１の代表エントリを選択する（Ｓ５７）。図１０の例によれば、データｆ２を含むエントリが代表エントリに選択される。更に、検索装置１は、新たな類似度閾値（０．８）を決定する（Ｓ５８）。【０１３７】
検索装置１は、代表エントリのデータｆ２と、他の各エントリのデータｆ３、ｆ４及びｆ５の各々との類似度をそれぞれ算出する（Ｓ５９）。図１０の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置１は、図１１に示されるように、類似度閾値（０．８）以上の類似度を示すデータｆ３及びｆ４を持つ２つのエントリを含む子ノードＮ２を生成する（Ｓ６０）。更に、検索装置１は、対象ノードＮ１の代表エントリに子ノードＮ２へのポインタと類似度閾値（０．８）とを設定する（Ｓ６１）。検索装置１は、データｆ５をデータベース３５に格納すると共に、更新された類似度木データをデータベース３５に格納する（Ｓ６２）。【０１３８】
続いて、図１１に示されるように、検索装置１は、新たなデータｆ６を取得する（Ｓ５０）。検索装置１は、データｆ１とデータｆ６との類似度（０．９）が類似度閾値（０．１）より大きいため、ルートノードの子ノードであるノードＮ１を対象ノードに設定する（Ｓ５３）。ここで、ノードＮ１は中間ノードであるため（Ｓ５４；ＮＯ）、検索装置１は、対象ノードＮ１に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータｆ２とデータｆ６との類似度を算出する。図１１の例では、データｆ２とデータｆ６との類似度は０．８５であるため、検索装置１は、類似度閾値（０．８）以上の類似度を示すデータｆ２を含むエントリを特定する（Ｓ５２）。【０１３９】
検索装置１は、その特定されたエントリのポインタが示す子ノードＮ２を対象ノードに設定し（Ｓ５３）、図１２に示されるように、データｆ６を含むエントリをその対象ノードＮ２に追加する（Ｓ５５）。ここで、対象ノードＮ２のエントリ数（３）は、所定エントリ閾値（３）を超えていないため（Ｓ５６；ＮＯ）、検索装置１は、データｆ６及び更新された類似度木データをデータベース３５に格納する（Ｓ６２）。【０１４０】
続いて、図１３に示される場面について説明する。ここでは、データｆ７がノードＮ１に追加された状態で、検索装置１が新たなデータｆ８を取得する（Ｓ５０）。検索装置１は、データｆ１とデータｆ８との類似度（０．７）が類似度閾値（０．１）より大きいため、ルートノードの子ノードであるノードＮ１を対象ノードに設定する（Ｓ５３）。【０１４１】
ここで、ノードＮ１は中間ノードであるため（Ｓ５４；ＮＯ）、検索装置１は、対象ノードＮ１に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータｆ２とデータｆ８との類似度を算出する。図１３の例では、データｆ２とデータｆ８との類似度は０．７５であり、類似度閾値（０．８）以上の類似度を示すデータを含むエントリが対象ノードＮ１に存在しない。検索装置１は、該当するエントリが対象ノードＮ１に存在しないため（Ｓ５２；ＮＯ）、図１３に示されるように、データｆ８を含むエントリを対象ノードＮ１に追加する（Ｓ５５）。【０１４２】
検索装置１は、対象ノードＮ１のエントリ数（４）が所定エントリ閾値（３）を超えているため（Ｓ５６；ＹＥＳ）、溢れ調整を行う。図１３の例では、検索装置１は、対象ノードＮ１に含まれる全エントリを母集団として、その母集団の中から代表エントリを選択する（Ｓ５７）。図１３の例によれば、データｆ５を含むエントリが代表エントリに選択される。更に、検索装置１は、新たな類似度閾値（０．８）を決定する（Ｓ５８）。【０１４３】
検索装置１は、代表エントリのデータｆ５と、他の各エントリのデータｆ２、ｆ７及びｆ８の各々との類似度をそれぞれ算出する（Ｓ５９）。図１４の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置１は、図１４及び図１５に示されるように、類似度閾値（０．８）以上の類似度を示すデータｆ８を持つ１つのエントリを含む子ノードＮ３を生成する（Ｓ６０）。更に、検索装置１は、対象ノードＮ１におけるデータｆ５を含む代表エントリに、子ノードＮ３へのポインタと類似度閾値（０．８）とを設定する（Ｓ６１）。このとき、検索装置１は、ノードＮ２へのポインタを含むエントリについてノードＮ１に残ることを決めたため、そのエントリに含まれるそのポインタや類似度閾値（０．８）をそのままとする。これにより、更新された類似度木は、図１５に示されるようになる。検索装置１は、データｆ８をデータベース３５に格納すると共に、更新された類似度木データをデータベース３５に格納する（Ｓ６２）。【０１４４】
図１６及び図１７Ａは、図１４及び図１５に示される例とは異なるインデックス生成例を示す図である。図１４の例では、代表エントリがデータｆ５を含むエントリに決められ、新たな類似度閾値が０．８に決められた。図１６は、新たな類似度閾値が０．７５に決められる例を示す。この場合、図１６の例に示されるような各類似度がそれぞれ算出される。【０１４５】
この場合、検索装置１は、類似度閾値（０．７５）以上の類似度を示すデータｆ２及びｆ８を持つ２つのエントリを子ノードへ移すことを決める。しかし、この場合、データｆ２を含むエントリは、子ノードＮ２とリンクされている。そこで、検索装置１は、図１７に示されるように、データｆ２を含むエントリに設定されている子ノードＮ２へのポインタと類似度閾値（０．８）とをそのまま維持しつつ、データｆ２及びｆ８を含む２つのエントリを含む子ノードＮ４を生成し（Ｓ６０）、親ノードとなるノードＮ１から、データｆ２及びｆ８を含む２つのエントリを削除する。更に、検索装置１は、対象ノードＮ１におけるデータｆ５を含む代表エントリに、子ノードＮ４へのポインタと類似度閾値（０．７５）とを設定する（Ｓ６１）。結果、更新された類似度木は、図１７Ａに示されるようになる。図１７Ａに示されるように、既に設定されているリンク関係を維持することで、ノードの溢れ調整を簡易処理で実現することができる。【０１４６】
図１７Ｂは、図１７Ａに示される例とは異なるインデックス生成例を示す図である。検索装置１は、ノードの溢れ調整において、既に子ノードとリンクされているエントリを子ノードへ移すことを決めた場合、図１７Ｂに示されるように、既に設定されているリンク関係を解除するようにしてもよい。この場合、検索装置１は、図１７Ｂに示されるように、データｆ２及びｆ８を含む２つのエントリと共に、子ノードＮ２に含まれる３つのエントリ（データｆ３、ｆ４及びｆ６を含む）を含む子ノードＮ４を生成し（Ｓ６０）、親ノードとなるノードＮ１から、データｆ２及びｆ８を含む２つのエントリを削除する。【０１４７】
図１６、図１７Ａ及び図１７Ｂの例において、ノードＮ１の溢れ調整時に、代表エントリに含まれるデータｆ５と、ノードＮ２に含まれていたデータｆ３、ｆ４及びｆ６の各々との類似度は、計算されなくてもよい。これは、上述の規則に基づいている。即ち、データｆ２は、データｆ３、ｆ４及びｆ６の各々と類似度閾値（０．８）以上の類似度を示す代表データであり、かつ、代表データｆ２とデータｆ５とが新たな類似度閾値（０．７５）以上の類似度を示す場合、代表データｆ２のデータ集合（ｆ３、ｆ４及びｆ６）とデータｆ５とについても新たな類似度閾値（０．７５）以上の類似度を示す可能性が高いからである。【０１４８】
図１８は、図１５に示される類似度木が既に生成されている状態で、新たなデータｆ９が取得された場合のインデックス生成過程を概念的に示す図である。この場合、検索装置１は、対象ノードＮ１に含まれる、子ノードへのポインタを含む２つのエントリについて、そのエントリに含まれるデータｆ２及びｆ５と、データｆ９との各類似度をそれぞれ算出する。図１８の例では、データｆ２とデータｆ９との類似度は０．８５であり、その類似度がデータｆ２のエントリの類似度閾値（０．８）より大きい。更に、データｆ５とデータｆ９との類似度は０．８６であり、その類似度がデータｆ５のエントリの類似度閾値（０．８）より大きい。即ち、（Ｓ５２）に該当するエントリが複数存在する（Ｓ５２；ＹＥＳ）。【０１４９】
この場合、検索装置１は、（Ｓ５２）の条件を満たすエントリであって、かつ、データｆ９との類似度が最大となるエントリ、即ち、データｆ５を含むエントリを特定する。検索装置１は、データｆ５を含むエントリのポインタが示す子ノードＮ３を対象ノードに設定する（Ｓ５３）。検索装置１は、データｆ９を含むエントリを対象ノードＮ３に追加する（Ｓ５５）。
【実施例２】
【０１５０】
実施例２は、上述の第２実施形態に対応する。以下、実施例２における検索装置１の動作及びインデックス生成方法について、図５に沿って説明する。実施例２では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる２つの特徴量データを含む例が示される。また、子ノードへのポインタを含むエントリの２つの特徴量データとの各類似度がそれぞれ類似度閾値以上となるデータが、その子ノードへの追加対象とされる例が示される。【０１５１】
図１９及び図２０は、実施例２におけるインデックス生成過程を概念的に示す図である。図１９に示されるように、子ノードへのポインタ、類似度閾値（０．２）及びデータｆ１及びｆ２が設定されたエントリを持つルートノードが既に生成されており、ノードＮ１には、データｆ３、ｆ４及びｆ５を含む３つのエントリが設定されている。【０１５２】
この状態で、検索装置１は、データｆ６を取得する（Ｓ５０）。検索装置１は、データｆ１及びｆ２の各々と、データｆ６との各類似度（０．９）（０．８５）が類似度閾値（０．２）よりそれぞれ大きいため、ルートノードの子ノードであるノードＮ１を対象ノードに設定する（Ｓ５３）。【０１５３】
ここで、ノードＮ１は葉ノードであるため（Ｓ５４；ＮＯ）、検索装置１は、データｆ６を含むエントリを対象ノードＮ１に追加する（Ｓ５５）。検索装置１は、対象ノードＮ１のエントリ数（４）が所定エントリ閾値（３）を超えているため（Ｓ５６；ＹＥＳ）、溢れ調整を行う。【０１５４】
この溢れ調整において、検索装置１は、図１９に示されるように、対象ノードＮ１に含まれる全エントリの全データの中から２つのデータを代表として選択する（Ｓ５７）。ここでは、上述の第１の選択方法が用いられることにより、検索装置１は、類似度の値が最大となる２つのデータを代表として選択する。図１９の例では、データｆ３及びデータｆ４が代表に選択される。更に、検索装置１は、新たな類似度閾値（０．６）を決定する（Ｓ５８）。【０１５５】
検索装置１は、代表として選択されたデータｆ３及びｆ４の各々と、他のエントリのデータｆ５及びｆ６の各々との類似度をそれぞれ算出する（Ｓ５９）。ここでは、図２０の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置１は、図２０に示されるように、データｆ３及びｆ４の各々と類似度閾値（０．６）以上の類似度を示すデータｆ５を持つ１つのエントリを含む子ノードＮ２を生成する（Ｓ６０）。図２０の例では、データｆ６とデータｆ４との類似度（０．６）は、類似度閾値（０．６）以上となるが、データｆ６とデータｆ３との類似度（０．５）が類似度閾値（０．６）未満となるため、データｆ６は、ノードＮ１に残される。【０１５６】
検索装置１は、対象ノードＮ１におけるデータｆ３及びｆ４を含む１つのエントリを生成し、そのエントリに、子ノードＮ２へのポインタと類似度閾値（０．６）とを設定する（Ｓ６１）。これにより、更新された類似度木は、図２０に示されるようになる。【０１５７】
［変形例］
上述の各実施形態及び各実施例では、代表となる特徴量データを示すエントリは、親ノードのみに含まれるが、親ノードと子ノードとの両方にそれぞれ含まれていてもよい。【０１５８】
また、上述の各実施形態では、検索装置１は、１つの装置（コンピュータ）として実現されたが、複数の装置として実現されてもよい。上述の各実施形態は、例えば、類似度木を生成するインデックス生成装置と、類似検索を行う検索装置とから構成されてもよい。この場合、インデックス生成装置は、対象取得部２０、インデックス生成部２１、閾値決定部２２及び類似度算出部２５を含み、検索装置は、検索部３０及びデータベース３５を含む。更に、各実施形態は、インデックス生成装置、検索装置及びデータベース装置から構成されてもよい。【０１５９】
また、上述の説明で用いた複数のフローチャートでは、複数の工程（処理）が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。【０１６０】
この出願は、２０１３年１月１１日に出願された日本出願特願２０１３−００３９７０号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2014109127.tif 000006
【図２】
2014109127.tif 000007
【図３】
2014109127.tif 000008
【図４】
2014109127.tif 000009
【図５】
2014109127.tif 000010
【図６】
2014109127.tif 000011
【図７】
2014109127.tif 000012
【図８】
2014109127.tif 000013
【図９】
2014109127.tif 000014
【図１０】
2014109127.tif 000015
【図１１】
2014109127.tif 000016
【図１２】
2014109127.tif 000017
【図１３】
2014109127.tif 000018
【図１４】
2014109127.tif 000019
【図１５】
2014109127.tif 000020
【図１６】
2014109127.tif 000021
【図１７Ａ】
2014109127.tif 000022
【図１７Ｂ】
2014109127.tif 000023
【図１８】
2014109127.tif 000024
【図１９】
2014109127.tif 000025
【図２０】
2014109127.tif 000026
【手続補正書】
【提出日】平成26年3月7日(2014.3.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成装置において、
類似度算出部により算出されるデータ間の類似度を用いて、下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成するインデックス生成部と、
を備えるインデックス生成装置。
【請求項２】
前記類似度閾値を階層が下がる程大きい値に決定する閾値決定部、
を更に備える請求項１に記載のインデックス生成装置。
【請求項３】
インデックス対象データを取得する対象取得部、
を更に備え、
前記インデックス生成部は、前記上位ノードのエントリにより示される前記代表データと前記対象取得部により取得されるインデックス対象データとの類似度を前記類似度算出部から取得し、該取得される類似度と前記類似度閾値とを比較し、該比較結果に基づいて、該インデックス対象データを示すエントリの挿入先を前記上位ノード又は前記下位ノードに決定する、
請求項２に記載のインデックス生成装置。
【請求項４】
前記インデックス生成部は、
前記上位ノードに含まれる複数エントリの中から代表エントリを選択する代表選択部と、
前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリの中から、前記代表選択部により選択される代表エントリにより示されるデータとの類似度が前記閾値決定部により決定される新たな類似度閾値以上のデータを示すエントリを選択し、該選択されたエントリを含む下位ノードを生成し、該上位ノードの該代表エントリに該下位ノードへのリンク関係を設定し、該リンク関係に該新たな類似度閾値を付与する溢れ調整部と、
を含む請求項２又は３に記載のインデックス生成装置。
【請求項５】
前記代表選択部は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項４に記載のインデックス生成装置。
【請求項６】
前記閾値決定部は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に２分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項２から５のいずれか１項に記載のインデックス生成装置。
【請求項７】
前記代表選択部は、前記上位ノードに含まれる複数エントリで示される複数データの中から複数の代表データを選択し、
前記溢れ調整部は、前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリで示される複数データの中から、前記代表選択部により選択される複数の代表データとの複数の類似度の中の少なくとも１つが前記閾値決定部により決定される新たな類似度閾値以上のデータを選択し、該選択されたデータを示すエントリを含む下位ノードを生成し、該上位ノードには該複数の代表データを示すエントリを生成し、該エントリに該下位ノードへのリンク関係を設定し、該リンク関係に該新たな類似度閾値を付与する、
請求項４又は５に記載のインデックス生成装置。
【請求項８】
前記代表選択部は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項７に記載のインデックス生成装置。
【請求項９】
請求項１から８のいずれか１項に記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
検索対象データ及び類似度条件を取得する条件取得部と、
前記上位ノードのエントリにより示される少なくとも１つの代表データと前記検索対象データとの少なくとも１つの類似度を取得する類似度取得部と、
前記類似度取得部により取得される少なくとも１つの類似度と、前記少なくとも１つの代表データを示すエントリの前記リンク関係に付与された類似度閾値又は前記類似度条件とを比較し、該比較結果に基づいて、前記上位ノードに含まれる前記少なくとも１つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する検索処理部と、
を備える検索装置。
【請求項１０】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成方法において、
下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成する、
ことを含むインデックス生成方法。
【請求項１１】
前記類似度閾値を階層が下がる程大きい値に決定する、
ことを更に含む請求項１０に記載のインデックス生成方法。
【請求項１２】
インデックス対象データを取得し、
前記上位ノードのエントリにより示される前記代表データと前記取得されたインデックス対象データとの類似度を取得し、
前記取得された類似度と前記類似度閾値とを比較し、
前記比較結果に基づいて、前記インデックス対象データを示すエントリの挿入先を前記上位ノード又は前記下位ノードに決定する、
ことを更に含む請求項１１に記載のインデックス生成方法。
【請求項１３】
前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリの中から、代表エントリを選択し、
前記選択された代表エントリにより示されるデータとの類似度が新たに決定される類似度閾値以上のデータを示すエントリを選択し、
前記選択されたエントリを含む下位ノードを生成し、
前記上位ノードの前記代表エントリに前記下位ノードへのリンク関係を設定し、
前記リンク関係に前記新たな類似度閾値を付与する、
ことを更に含む請求項１１又は１２に記載のインデックス生成方法。
【請求項１４】
前記代表エントリの選択は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項１３に記載のインデックス生成方法。
【請求項１５】
前記類似度閾値の決定は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に２分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項１１から１４のいずれか１項に記載のインデックス生成方法。
【請求項１６】
前記代表エントリの選択は、前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリで示される複数データの中から複数の代表データを選択し、
前記エントリの選択は、前記選択された複数の代表データとの複数の類似度の中の少なくとも１つが新たに決定される類似度閾値以上のデータを選択し、
前記下位ノードの生成は、前記選択されたデータを示すエントリを含む下位ノードを生成し、
前記リンク関係の設定は、前記上位ノードには前記複数データを示すエントリを生成し、該エントリに前記下位ノードへのリンク関係を設定する、
請求項１３又は１４に記載のインデックス生成方法。
【請求項１７】
前記代表エントリの選択は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項１６に記載のインデックス生成方法。
【請求項１８】
請求項１０から１７のいずれか１項に記載のインデックス生成方法により生成される前記インデックスを用いる検索方法において、
検索対象データ及び類似度条件を取得し、
前記上位ノードのエントリにより示される少なくとも１つの代表データと前記検索対象データとの少なくとも１つの類似度を取得し、
前記取得された少なくとも１つの類似度と、前記少なくとも１つの代表データを示すエントリの前記リンク関係に付与された類似度閾値又は前記類似度条件とを比較し、
前記比較結果に基づいて、前記上位ノードに含まれる前記少なくとも１つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する、
ことを含む検索方法。
【請求項１９】
請求項１０から１７のいずれか１項に記載のインデックス生成方法を少なくとも１つのコンピュータに実行させるプログラム。
【請求項２０】
請求項１８に記載の検索方法を少なくとも１つのコンピュータに実行させるプログラム。
【請求項２１】
インデックス対象となるデータを示す少なくとも１つのエントリをそれぞれ含む複数のノードが階層化されたインデックスのデータ構造において、
前記インデックスが、
下位ノードと、
前記下位ノードとリンク関係を持つエントリであって、前記下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、
を含み、
コンピュータが、前記上位ノードのエントリにより示される前記代表データと検索対象データとの類似度を算出し、該類似度と前記上位ノードのエントリが持つ前記リンク関係に付与された前記類似度閾値とを比較し、該比較結果に基づいて該検索対象データに対応する検索結果を得るために参照する、
前記インデックスのデータ構造。
【国際調査報告】
2014109127.tif 000027
2014109127.tif 000028
2014109127.tif 000029