(58)【調査した分野】(Int.Cl.,DB名)
前記代表選択部は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項4に記載のインデックス生成装置。
前記閾値決定部は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に2分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項2から5のいずれか1項に記載のインデックス生成装置。
前記代表選択部は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項7に記載のインデックス生成装置。
前記代表エントリの選択は、他の各エントリにより示される各データとの類似度の分散が最小となるデータを示すエントリ、又は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを前記代表エントリとして選択する、
請求項13に記載のインデックス生成方法。
前記類似度閾値の決定は、既に決定されている類似度閾値と均等間隔の値、既に決定されている類似度閾値と最大類似度とを再帰的に2分割して得られる値、又は、前記代表データと前記上位ノードに含まれる他のエントリとの類似度から得られる値を新たな類似度閾値に決定する、
請求項11から14のいずれか1項に記載のインデックス生成方法。
前記代表エントリの選択は、前記上位ノードのエントリ数が所定エントリ閾値を超える場合に、前記上位ノードに含まれる複数エントリで示される複数データの中から複数の代表データを選択し、
前記エントリの選択は、前記選択された複数の代表データとの複数の類似度の中の少なくとも1つが新たに決定される類似度閾値以上のデータを選択し、
前記下位ノードの生成は、前記選択されたデータを示すエントリを含む下位ノードを生成し、
前記リンク関係の設定は、前記上位ノードには前記複数データを示すエントリを生成し、該エントリに前記下位ノードへのリンク関係を設定する、
請求項13又は14に記載のインデックス生成方法。
前記代表エントリの選択は、前記上位ノードに含まれる複数エントリで示される複数データの中から、類似度の値が最大又は最小となるデータの組み合わせを前記複数の代表データとして選択する請求項16に記載のインデックス生成方法。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
【0020】
図1は、本発明の実施の形態に係るインデックス生成装置100の構成例を概念的に示す図である。インデックス生成装置100は、インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。ここで、「ノード」とは、生成されるインデックスのデータ構造を構成する1つのデータ要素を意味し、例えば、配列や構造体やクラス等により実現される。また、「インデックス対象となるデータ」とは、インデックスが付与されるデータを意味する。本実施形態では、インデックス対象となるデータのデータ構造は何ら制限されない。即ち、当該データの次元数は制限されず、かつ、当該データのデータ構造は未知であってもよい。また、本実施形態では、ノードに含まれるエントリとデータとの関連付け形態は、制限されない。エントリにデータが含まれていてもよいし、エントリにはデータの格納領域を指すポインタが含まれていてもよい。
【0021】
図1に示されるように、インデックス生成装置100は、類似度算出部105により算出されるデータ間の類似度を用いて、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がそのリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成するインデックス生成部101と、上記類似度閾値を階層が下がる程大きい値に決定する閾値決定部102と、を有する。本実施形態における類似度とは、近似する度合いを意味し、類似度の値が大きい程、近似する度合いが増し、逆に、類似度の値が小さい程、近似する度合いが低下する。
【0022】
また、本実施形態では、上位ノードに含まれるエントリによる下位ノードとのリンク関係の持ち方は制限されない。例えば、エントリが下位ノードを指すポインタを有していてもよい。また、エントリが下位ノードの識別IDを有し、この下位ノードの識別IDと下位ノードを指すポインタとの対応関係が保持されていてもよい。更に、エントリがリンクの識別IDを有し、このリンクの識別IDと下位ノードを指すポインタとの対応関係が保持されていてもよい。
【0023】
インデックス生成装置100は、例えば、後述する詳細実施形態における高次元データ検索装置1と同様のハードウェア構成を有し、その高次元データ検索装置1と同様にプログラムが処理されることで、上述の各処理部が実現される。類似度算出部105は、インデックス生成装置100により実現されてもよいし、他のコンピュータにより実現されてもよい。
【0024】
また、本発明の実施の形態に係るインデックス生成方法は、インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。本インデックス生成方法は、インデックス生成装置100等のようなコンピュータにより実行され、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度が当該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成し、上記類似度閾値を階層が下がる程大きい値に決定する、ことを含む。但し、本インデックス生成方法に含まれる各工程は、順不同に逐次的に実行されてもよいし、同時に実行されてもよい。
【0025】
図2は、本実施形態で生成されるインデックスの一部の例を概念的に示す図である。
図2に示されるように、本実施形態では、下位ノードL1と、下位ノードL1とリンク関係R1を持つエントリE2であって、下位ノードL1のエントリE1(1)、E1(2)、E1(3)及びE1(n)により示されるデータ(f1、f3、f9等)との類似度がそのリンク関係R1に付与される類似度閾値T1以上の代表データf8を示すエントリE2を含む上位ノードL2と、を含むインデックスを生成する。更に、類似度閾値T1は、階層が下がる程大きい値に決定される。従って、
図2の例によれば、類似度閾値T1は、それより上位のリンク関係に付与される類似度閾値T2よりも大きい値に決定される。なお、
図2の例では、代表データf8を示すエントリは、上位ノードL2のみに含まれるが、上位ノードL2及び下位ノードL1の両方にそれぞれ含まれていてもよい。
【0026】
以下、本実施形態により具現化されている技術的思想と共に、本実施形態の作用及び効果について説明する。
【0027】
本発明者は、データAとデータBとが類似し、かつ、データBとデータCとが類似する場合、データAとデータCとが類似するという規則(非特許文献2)に着眼し、この規則を類似検索のためのインデックスのデータ構造に採用するという着想を得た。この規則は、必ずしも真とはならないが、真となる可能性が高い。この点の実世界での例として、いわゆるSMALL−WORLD理論が知られている(上記非特許文献3及び4参照)。即ち、この理論は、実世界において、人物Aと人物Bとが友人であり、かつ、人物Bと人物Cとが友人である場合、人物Aと人物Cとが友人である可能性が高いことを示す。
【0028】
ここで、インデックス対象となる3つのデータをfa、fb及びfcで表し、インデックス対象となるデータfiの集合をFで表し、検索対象データをfqで表す。ここで、データfbは集合Fに属し、データfbは集合Fに含まれる全データの代表であると仮定する。この場合、上記規則は、以下の式で表すことができる。下記式におけるsim()は、2つのデータ間の類似度を計算する関数であり、データとデータの集合との類似度を計算することもできる。例えば、sim()は、類似度算出部105に相当する。また、δは、類似度の閾値を示す。
【数1】
【0029】
上記式(1)は、上述の規則を表す。即ち、上記式(1)は、データfaとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータfcとの類似度が閾値δ以上である場合、データfaとデータfcとの類似度は閾値δ以上であることを示す。ここで、上記式(1)のデータfaを検索対象データfqに置き換えると、上記式(2)が成立する。即ち、データfqとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータfcとの類似度が閾値δ以上である場合、データfqとデータfcとの類似度は閾値δ以上であると判断することができる。
【0030】
更に、上記式(2)のデータfcをデータ集合Fに置き換えると、上記式(3)が成立する。即ち、データfqとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータ集合Fとの類似度が閾値δ以上である場合、データfqとデータ集合Fとの類似度は閾値δ以上であると判断することができる。
【0031】
上述したように、データfbは集合Fに含まれる全データの代表である。よって、上記式(3)によれば、データfbとデータ集合Fに含まれる各データfiとの類似度が予めそれぞれ算出されている状態では、検索対象データfqと代表のデータfbとの類似度のみ算出することで、検索対象データfqとデータ集合F内の各データfiとの類似性が計算なく判断され得る。本発明者は、このような規則を本実施形態におけるインデックスのデータ構造に採用した。
【0032】
図2によれば、下位ノードL1がデータ集合Fに相当し、代表データf8が集合Fの代表のデータfbに相当する。下位ノードL1には、代表データf8との類似度が類似度閾値T1以上のデータを示すエントリが設定される。これにより、本実施形態によれば、代表データf8と検索対象データfqとの類似度のみを算出することで、検索対象データfqと下位ノードL1で示されるデータ集合との類似度を、計算することなく、判断することができる。例えば、代表データf8と検索対象データfqとの類似度が類似度閾値T1未満の場合には、検索対象データfqと下位ノードL1により示される全データとの類似度も、類似度計算することなく、類似度閾値T1未満と判断することができる。
【0033】
従って、本実施形態により生成されるインデックスを用いることにより、検索時の計算量(類似度計算回数)を減らすことができる。
【0034】
更に、
図2の例によれば、類似度閾値T1は、それより上位のリンク関係に付与される類似度閾値T2よりも大きい値に決定される。これにより、上位ノードL2に含まれる各エントリで示される各データと、更なる上位ノードL3に含まれるその代表データf13との類似度が類似度閾値T2以上かつ類似度閾値T1未満となる。結果として、本実施形態で生成されたインデックスでは、階層が下がる程、高い類似度を持つデータ集合が示される。
【0035】
このように、本実施形態では、対象データのデータ構造に依存せず、データ間の類似度に基づいて階層化された木構造のインデックスが生成される。更に、本実施形態におけるインデックス生成は、対象データの次元数にも依存しない。これは、本実施形態がデータの次元に対応する幾何学的性質に依存することなく、データ間の類似度に基づいてインデックスを生成しているからである。
【0036】
従って、本実施形態により生成されるインデックスを用いることにより、対象データのデータ構造が未知である場合や対象データが高次元データである場合等においても、類似検索をすることができる。即ち、本実施形態によれば、対象データのデータ構造に依存しない汎用的な類似検索技術を提供することができる。
【0037】
更に、本実施形態によれば、類似度の関係を用いた上述の規則をインデックスのデータ構造に採用しているため、上述のように類似度計算量を削減することができ、ひいては、対象データの次元数の増加に伴う検索効率の低下を防ぐこともできる。この点、背景技術で述べた提案手法によれば、データの次元数の増加に伴い、空間索引内でのノード間のオーバーラップが大量に発生するため、検索時に全データをスキャンすることになり、検索効率が急激に低下していた。
【0038】
更に、本実施形態では、データ間の類似度に基づいてインデックスを生成するため、上述の類似度算出部105の類似度算出手法はブラックボックスでもよい。よって、本実施形態によれば、対象データのデータ構造だけでなく、類似度算出手法にも依存しない汎用的でかつ効率的な類似検索技術を提供することができる。
【0039】
以下、上述の実施形態について更に詳細を説明する。以下には、詳細実施形態として、第1実施形態及び第2実施形態を例示する。以下の各実施形態は、上述のインデックス生成装置及びインデックス生成方法を高次元データ検索装置に適用した場合の例である。なお、上述のインデックス生成装置及びインデックス生成方法は、高次元データを扱う検索装置への適用に限定されるものではなく、類似度を算出し得る様々なデータの検索装置に適用可能である。
【0040】
[第1実施形態]
〔装置構成〕
図3は、第1実施形態における高次元データ検索装置(以降、単に検索装置と表記する)1のハードウェア構成例を概念的に示す図である。第1実施形態における検索装置1は、
図3に示されるように、ハードウェア構成として、相互にバス15により接続される、CPU(Central Processing Unit)10、メモリ11、入出力インタフェース(I/F)12、通信装置13等を有する。メモリ11は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク、可搬型記憶(記録)媒体等である。入出力I/F12は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置(図示せず)、表示装置やプリンタ等のようなユーザに情報を提供する出力装置(図示せず)などと接続可能である。通信装置13は、他のノードと通信を行う。なお、検索装置1は、入力装置や出力装置を持たなくてもよく、検索装置1のハードウェア構成は制限されない。
【0041】
検索装置1は、インデックス対象データを取得し、取得されるインデックス対象データに基づいて上述の実施形態で示されるデータ構造を持つインデックスを生成する。また、検索装置1は、検索対象データ及び類似度条件を取得し、上述のように生成されたインデックスを用いて、検索対象データに関し類似度条件に適合するデータを検索する。本実施形態では、検索装置1により生成されるインデックスを類似度木と表記する場合もある。類似度木とは、類似度に基づく階層構造を持つインデックスを意味する。検索装置1の一部が上述のインデックス生成装置100に相当する。
【0042】
〔処理構成〕
図4は、第1実施形態における検索装置1の処理構成例を概念的に示す図である。第1実施形態における検索装置1は、対象取得部20、インデックス生成部21、閾値決定部22、検索部30、データベース35等を有する。これら各処理部は、例えば、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F12を介してインストールされ、メモリ11に格納されてもよい。
【0043】
対象取得部20は、映像等のような高次元の特徴量データをインデックス対象データとして取得する。特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信装置13を経由して取得された情報であってもよい。
【0044】
インデックス生成部21は、上述のインデックス生成装置100におけるインデックス生成部101と同様に、対象取得部20により取得される特徴量データのインデックスとなる類似度木を生成及び更新する。生成又は更新された類似度木のデータは、データベース35に格納される。なお、当該類似度木のデータは、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信装置13を介して他のコンピュータに送信されてもよい。
【0045】
本実施形態は、類似度木を構成する各ノードが次のようなデータ構造を持つ形態を採用する。下位ノードとリンク関係を持つ上位ノードのエントリは、その下位ノードを指すポインタと、そのリンク関係に付与される類似度閾値と、そのエントリにより示される特徴量データとを含む。その上位ノードにおける、下位ノードとリンク関係を持たないエントリは、そのエントリにより示される特徴量データを含む。また、下位ノードへのポインタを含むエントリを1つも持たないノードに含まれる各エントリは、各エントリにより示される特徴量データのデータベース35内の格納領域を指すポインタをそれぞれ含む。また、下位ノードへのポインタが設定されたエントリが持つ特徴量データは、その下位ノードに含まれるエントリにも設定されるか、又は、その下位ノードに含まれるエントリにその特徴量データへのポインタが設定される。
【0046】
以降、下位ノードへのポインタを含むエントリを1つも持たないノードは、葉ノードと表記され、下位ノードへのポインタを含むエントリを1つでも持つノードは、中間ノードと表記される場合がある。また、中間ノードの中で最上位のノードは、ルートノードと表記される場合もある。よって、
図2によれば、ノードL3はルートノード又は中間ノードと表記され、ノードL2は中間ノードと表記され、ノードL1は葉ノードと表記され得る。
【0047】
また、上位ノードと、その上位ノードに含まれるエントリのポインタでリンクされる下位ノードとの関係は、親子関係と表記される場合もあり、その親子関係を持つ上位ノード及び下位ノードは、親ノード及び下位ノードとそれぞれ表記される場合もある。よって、
図2によれば、ノードL2とノードL1との関係では、ノードL2は親ノードと表記され、ノードL1は子ノードと表記され得る。
【0048】
インデックス生成部21は、対象取得部20により取得された対象の特徴量データを類似度木に反映する際、当該対象の特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される特徴量データとの類似度を類似度算出部25から取得し、その類似度とそのエントリに含まれる類似度閾値とを比較し、この比較結果に基づいて、当該対象の特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部21は、類似度が類似度閾値以上であれば、当該対象の特徴量データを含むエントリの挿入先を下位ノードに決定し、類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。
【0049】
また、インデックス生成部21は、代表選択部23及び溢れ調整部24を含む。
【0050】
代表選択部23は、特徴量データの追加時又は削除時に、必要に応じて、或るノードに含まれる複数エントリの中から代表エントリを選択する。これは、データ集合Fの中から代表のデータfbを選択することに相当する。よって、代表エントリとは、代表として選択された特徴量データを示すエントリを意味する。また、代表エントリに含まれる特徴量データは代表特徴量データとも表記される。代表エントリを選択するエントリの母集団は、対象ノードに含まれる全エントリであってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。母集団を対象ノードに含まれる全エントリとする場合、既に存在する子ノードの再構成が必要になる場合がある。
【0051】
例えば、代表選択部23は、以下に示す2つの選択方法のいずれか1つを用いて、代表エントリを選択する。但し、本実施形態は、代表エントリ選択方法を以下のような方法に制限しない。代表選択部23は、以下に示す2つの選択方法以外で、任意のエントリを代表エントリとしてランダムに選択してもよい。
【0052】
第1の選択方法では、代表選択部23は、他の各エントリにより示される各特徴量データとの類似度の分散が最小となる特徴量データを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部23は、下記式に表わされるように、集合Fに属する各特徴量データfiに関し、特徴量データfiと他の特徴量データfjとの全ての類似度をそれぞれ算出し、類似度分布の分散値σが最小となる特徴量データfiを、集合Fの代表として選出する。但し、第1の選択方法において、代表エントリとして選択されるエントリは、各データとの類似度の分散が最小となるデータを示すエントリのみに制限されるわけではない。代表エントリは、各データとの類似度の分散が小さいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該分散が2番目に小さいデータを示すエントリが代表エントリに選択されてもよい。
【数2】
【0053】
第2の選択方法では、代表選択部23は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部23は、下記式に表わされるように、集合Fに属する各特徴量データfiに関し、特徴量データfiが最近傍となる他の特徴量データの数RNN(Reverse Nearest Neighbors)(fi)が最大となる特徴量データfiを、集合Fの代表として選出する。但し、第2の選択方法において、代表エントリとして選択されるエントリは、当該データの数が最大となるデータを示すエントリのみに制限されるわけではない。代表エントリは、当該データの数が大きいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該データの数が2番目に大きいデータを示すエントリが代表エントリに選択されてもよい。
【数3】
【0054】
溢れ調整部24は、対象取得部20により取得された特徴量データを含むエントリが挿入されたノードのエントリ数が所定エントリ閾値を超える場合に、そのノードを子ノードと親ノードとに分割する。このようにノードを親ノードと子ノードとに分割することを溢れ調整とも表記する。このとき、溢れ調整部24は、エントリ数が所定エントリ閾値を超えたノードを対象に代表選択部23に代表エントリを選択させ、更に、閾値決定部22に新たな類似度閾値を決定させる。溢れ調整部24は、代表選択部23により選択された代表エントリに含まれる特徴量データとの類似度が閾値決定部22により決定された新たな類似度閾値以上の特徴量データを含むエントリを選択し、この選択されたエントリを含む下位ノード(子ノード)を生成し、元のノード(親ノード)の代表エントリにその下位ノードへのポインタとその新たな類似度閾値とを設定する。ここで、代表エントリは、子ノード及び親ノードの両方に含められてもよいし、親ノードのみに含められてもよい。
【0055】
閾値決定部22は、上述のインデックス生成装置100における閾値決定部102と同様に、類似度閾値を階層が下がる程大きい値に決定する。例えば、閾値決定部22は、以下に示す3つの決定方法のいずれか1つを用いて、新たな類似度閾値を決定する。但し、本実施形態は、類似度決定方法を以下のような方法に制限しない。
【0056】
第1の決定方法では、新たな類似度閾値が、既に決定されている類似度閾値と均等間隔の値に決定される。言い換えれば、第1の決定方法では、0から1までの類似度範囲を等間隔に分割することにより、各類似度閾値がそれぞれ決定される。例えば、0.1の等間隔で[0,1]の類似度範囲区間を10等分割し、各類似度閾値はそれぞれの分割点の数値に決定される。この場合、類似度閾値は、0.1、0.2、0.3、...、0.9、1.0といった値に決定される。
【0057】
第2の決定方法では、新たな類似度閾値が、既に決定されている類似度閾値と最大類似度とを再帰的に2分割して得られる値に決定される。言い換えれば、第2の決定方法では、0から1までの類似度範囲を再帰的にLogスケールに分割することにより、各類似度閾値がそれぞれ決定される。例えば、1番目の類似度閾値が0.2に設定され、2番目の類似度閾値が、0.2から1.0までの範囲を2等分割することにより、その分割点0.6に決定される。このように2等分割が繰り返されることで、3番目以降の各類似度閾値は、0.8、0.9、0.95、0.975、0.9875などに決定される。
【0058】
第3の決定方法では、新たな類似度閾値が、代表の特徴量データと、代表の特徴量データが属するデータ集合の他の特徴量データとの類似度から得られる値に決定される。例えば、算出される複数の類似度の中の中央値となる類似度が、新たな類似度閾値に決定される。具体的には、データ集合に含まれる5つの特徴量データと代表の特徴量データとの類似度がそれぞれ、0.5、0.3、0.6、0.9、0.95である場合、新たな類似度閾値が、中央値0.6に決定される。また、算出される複数の類似度の中の最大値と最小値との間を2等分割し、その分割点が新たな類似度閾値に決定されてもよい。
【0059】
類似度算出部25は、2つの特徴量データ間の類似度を算出する。本実施形態では、類似度算出部25による類似度算出手法は何ら制限されない。類似度算出部25は、外部から提供される内部処理がブラックボックス化されたAPI(Application Programming Interface)やライブラリ等を用いて、当該類似度を算出してもよい。
【0060】
データベース35は、インデックス対象となる特徴量データ群、インデックス生成部21により生成された類似度木の情報、この類似度木に関連する情報(類似度木の生成のために算出された類似度等)を格納する。インデックス対象となるデータ群が、表形式データを形成する或る属性のデータである場合には、データベース35は、その表形式データを格納してもよい。データベース35は、メモリ11に含まれるハードディスク等のような外部メモリ上に実現される。また、類似度木の生成及び検索を高速化するために、データベース35に格納される類似度木の葉ノード以外のノードの情報は、メモリ11に含まれる主記憶にバッファリングされる。
【0061】
検索部30は、インデックス生成部21により生成される類似度木を用いて、データベース35に格納される特徴量データ群の中から、検索対象データに関し類似度条件に適合する特徴量データを検索する。検索結果のデータは、入出力I/F12を介して表示装置や印刷装置に出力されてもよいし、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信装置13を介して他のコンピュータに送信されてもよい。
【0062】
検索部30は、
図4に示されるように、条件取得部31、類似度算出部32及び検索処理部33を含む。
【0063】
条件取得部31は、検索対象の特徴量データ及び類似度条件を取得する。検索対象の特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信装置13を経由して取得された情報であってもよい。
【0064】
類似度算出部32は、類似度算出部25と同様である。検索装置1において、類似度算出部25と類似度算出部32とは1つの処理部として共有されてもよい。
【0065】
検索処理部33は、類似度算出部32により取得される類似度と、類似度閾値、又は、条件取得部31により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値を持つエントリ、及び、その類似度閾値を含むエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象(検索結果)から除外する。但し、検索処理部33は、辿り着いたノードに含まれる全エントリをチェックする幅優先探索法を用いてもよいし、同一ノード内の他のエントリよりもリンク先の子ノードのエントリを優先的にチェックする深さ優先探索法を用いてもよい。
【0066】
〔動作例〕
まず、第1実施形態におけるインデックス生成方法について
図5及び
図6を用いて説明する。以下の説明では、検索装置1が各方法の実行主体となるが、検索装置1に含まれる上述の各処理部が実行主体となってもよい。
【0067】
図5は、インデックス生成処理に関する検索装置1の動作例を示すフローチャートである。ここでは、子ノードへのポインタ及び類似度閾値が設定された少なくとも1つのエントリを含むルートノードが、既に生成されていると仮定する。また、
図5には示されていないが、インデックス生成処理を開始する前には、検索装置1は、類似度木の生成に関する各種パラメータを既に保持している。パラメータには、エントリ閾値、代表エントリの選択方法及び類似度閾値の決定方法が含まれる。また、パラメータには、類似度木の階層の深さの閾値が含まれていてもよい。
【0068】
検索装置1は、インデックス対象となる特徴量データfiを取得する(S50)。
続いて、検索装置1は、対象ノードをルートノードに設定する(S51)。対象ノードとは、その特徴量データfiを示すエントリの挿入候補となるノードを意味する。このように、検索装置1は、上位ノードから下位ノードへと順にエントリの挿入候補を選んでいく。
【0069】
検索装置1は、対象ノードに含まれる、子ノードへのポインタを含む各エントリについて、そのエントリに含まれる特徴量データfeと特徴量データfiとの類似度Sをそれぞれ算出し、類似度Sが類似度閾値以上となる特徴量データfeを含むエントリを特定する(S52)。検索装置1は、対象ノードに、類似度Sが類似度閾値以上となる特徴量データfeを含むエントリが存在する場合(S52;YES)、その特定されたエントリの中で類似度Sが最大となるエントリのポインタが示す子ノードを対象ノードに設定する(S53)。
【0070】
検索装置1は、対象ノードが葉ノードでない場合(S54;NO)、工程(S52)以降を再度実行する。検索装置1は、対象ノードが葉ノードである場合(S54;YES)、又は、対象ノードに、該当するエントリが存在しない場合(S52;NO)、特徴量データfiを含むエントリをその対象ノードに追加する(S55)。
【0071】
検索装置1は、エントリが追加された対象ノードのエントリ数が所定エントリ閾値を超えるか否かを判定する(S56)。検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超える場合(S56;YES)、次のように、その対象ノードに含まれるエントリを親ノードと子ノードとに分割する。
【0072】
検索装置1は、対象ノードのエントリの中から代表エントリを選択する(S57)。ここでの代表エントリの選択方法には、例えば、上述のような2つの選択方法のいずれか1つが利用される。また、代表エントリを選択するエントリの母集団は、対象ノードに含まれる全エントリであってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。
【0073】
検索装置1は、選択された代表エントリに設定するための類似度閾値を決定する(S58)。ここでの類似度閾値の決定方法には、例えば、上述のような3つの決定方法のいずれか1つが利用される。
【0074】
検索装置1は、代表エントリに含まれる特徴量データと、代表エントリを選択した母集団に含まれる代表エントリ以外の各エントリに含まれる各特徴量データとの類似度をそれぞれ算出する(S59)。
【0075】
続いて、検索装置1は、類似度閾値以上の類似度を示す特徴量データを持つエントリを含む子ノードを生成する(S60)。このとき、検索装置1は、対象ノードから、その子ノードに追加されたエントリを削除する。また、代表エントリを選択したエントリの母集団が、対象ノードに含まれる全エントリであり、かつ、選択された代表エントリが既に子ノードへのポインタを持っていた場合には、検索装置1は、新たに子ノードを生成することなく、既に存在する子ノードに、類似度閾値以上の類似度を示す特徴量データを持つエントリを追加してもよい。
【0076】
検索装置1は、対象ノードの代表エントリに、(S60)で生成された子ノードへのポインタと(S58)で決定された類似度閾値とを設定する(S61)。
【0077】
検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超えない場合(S56;NO)、又は、(S61)の完了後、特徴量データfiと共に、類似度木データをデータベース35に格納する(S62)。ここで、検索装置1は、類似度木データのうち更新された箇所のデータのみをデータベース35に反映してもよい。また、類似度木データの格納前に、検索装置1は、類似度木の葉ノードのエントリに設定されている特徴量データfiをデータベース35に格納される特徴量データfiへのポインタに置き換える。
【0078】
図6は、データ削除処理に関する検索装置1の動作例を示すフローチャートである。
【0079】
検索装置1は、削除対象となる特徴量データfd(以降、削除データと表記する)を取得すると、その削除データfdを示すエントリを特定する(S71)。このとき、検索装置1は、葉ノードの各エントリにより示される特徴量データを、そのエントリに含まれるポインタを用いて、データベース35から取得する。削除データfdの特定方法は、
図7を用いて後述する類似検索方法と同様でよいため、ここでは説明を省略する。但し、この場合には、類似度条件δは1(一致)に設定される。
【0080】
検索装置1は、特定されたエントリの中の葉ノードのエントリを削除する(S72)。削除データfdが或るデータ集合の代表に設定されている場合、特定されたエントリの中には中間ノードも含まれる。また、検索装置1は、削除データfdをデータベース35から削除してもよい。
【0081】
続いて、検索装置1は、削除されたエントリを含む葉ノードへのポインタを含む親ノードのエントリを対象エントリに設定する(S73)。
【0082】
検索装置1は、この対象エントリを更新する必要があるか否かを判定する(S74)。例えば、対象エントリが削除データfdを含む場合、上述の(S57)で実行される代表エントリの選択方法が子ノードで示される特徴量データ集合の値分布に依存する場合などには、検索装置1は、対象エントリを更新する必要があると判定する(S74;YES)。
【0083】
例えば、一方、代表エントリの選択方法が任意のエントリの選択である場合で、かつ、対象エントリが削除データfdを含まない場合には、検索装置1は、対象エントリを更新する必要がないと判定する(S74;NO)。対象エントリを更新する必要がないと判定すると(S74;NO)、検索装置1は、データ削除処理を終了する。
【0084】
検索装置1は、対象エントリを更新する必要があると判定すると(S74;YES)、代表エントリを再選択する(S75)。ここでの代表エントリを選択する母集団は、例えば、対象エントリの子ノードに含まれるエントリとされる。但し、当該母集団には、その対象エントリを含むノードの他のエントリが更に加えられてもよい。
【0085】
検索装置1は、対象エントリに含まれる元の特徴量データを再選択された代表エントリの特徴量データに更新する(S76)。
【0086】
検索装置1は、更に、その対象エントリに設定されている類似度閾値を更新する必要があるか否かを判定する(S77)。例えば、上述の(S58)で実行される類似度閾値の決定方法が、上述の第3の決定方法のように、代表エントリを選択する母集団に関する類似度に依存する場合には、検索装置1は、類似度閾値を更新する必要があると判定する(S77;YES)。検索装置1は、類似度閾値を更新する必要があると判定すると(S77;YES)、新たな類似度閾値を決定し、対象エントリの元の類似度閾値をこの新たな類似度閾値に更新する(S78)。
【0087】
検索装置1は、対象エントリに設定されている特徴量データ及び類似度閾値に基づいて、対象エントリを含むノード及びその対象エントリの現在の子ノードを再構成する必要があるか否かを判定する(S79)。具体的には、検索装置1は、対象エントリの特徴量データと同一ノードの他のエントリの特徴量データとの類似度を対象エントリに設定される類似度閾値と比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、当該類似度閾値以上となる類似度を示すエントリは、子ノードに移動させるべきと判定される。
【0088】
検索装置1は、対象エントリを含むノードの他のエントリを子ノードへ移動させることで、対象エントリを含むノード及び対象エントリの子ノードを再構成する(S80)。
【0089】
続いて、検索装置1は、対象エントリを含むノードの親ノードが存在するか否かを判定する(S81)。具体的には、検索装置1は、対象エントリを含むノードへのポインタを含むエントリを持つ中間ノードが存在するか否かを判定する。
【0090】
検索装置1は、対象エントリを含むノードの親ノードが存在する場合(S81;YES)、現対象エントリを含むノードへのポインタを含む親ノードのエントリを新たな対象エントリに設定する(S82)。検索装置1は、この新たな対象エントリについて、工程(S74)以降を実行する。ここで、検索装置1は、類似度木データのうち更新された箇所のデータをデータベース35に反映する。
【0091】
次に、第1実施形態における類似検索方法について
図7を用いて説明する。
図7は、類似検索処理に関する検索装置1の動作例を示すフローチャートである。
【0092】
検索装置1は、検索対象の特徴量データ(以降、クエリデータfqと表記)及び類似度条件δを取得する(S90)。ここで取得されたデータは、クエリデータfqと類似度条件δ以上の類似度を示す特徴量データをデータベース35から抽出することを要求する。
【0093】
検索装置1は、対象ノードをルートノードに設定する(S91)。対象ノードとは、クエリデータfqとの比較候補となるノードを意味する。このように、検索装置1は、上位ノードから下位ノードへと順に比較候補を選んでいく。
【0094】
検索装置1は、対象ノードの各エントリの各特徴量データfeとクエリデータfqとの類似度Sをそれぞれ算出する(S92)。
【0095】
検索装置1は、対象ノードが葉ノードである場合(S93;YES)、対象ノードに含まれるエントリの中から、類似度条件δ未満の類似度Sを示す特徴量データfeを示すエントリを抽出対象から除外する(S94)。
【0096】
一方、検索装置1は、対象ノードが葉ノードでない場合(S93;NO)、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の類似度Sを示す特徴量データfeを示すエントリを抽出対象から除外する(S95)。
【0097】
検索装置1は、対象ノードに、子ノードを持つエントリが除外されず残っているか否かを判定する(S96)。検索装置1は、子ノードを持つエントリが残っている場合(S96;YES)、現対象ノードの子ノードを新たな対象ノードに設定する(S97)。検索装置1は、この新たな対象ノードについて、(S92)以降を実行する。
【0098】
検索装置1は、抽出対象に残ったエントリの特徴量データfeを検索結果に設定する(S98)。
【0099】
上述の類似検索方法は、幅優先探索法を用いた方法であったが、深さ優先探索法が用いられてもよい。深さ優先探索法が用いられる類似検索方法では、対象ノードが中間ノードである場合、(S92)では、対象ノードの1つのエントリの特徴量データfeとクエリデータfqとの類似度Sが算出される。更に、(S94)の実行後、クエリデータfqとの比較を行っていないエントリを有する最上位の中間ノードを新たな対象ノードに設定し、(S92)以降が更に実行される。
【0100】
本実施形態におけるインデックス生成方法及び類似検索方法は、
図5、
図6及び
図7に示される例に制限されない。例えば、
図5の例では、特徴量データfiが取得される度に、その特徴量データfi及び類似度木データがデータベース35に格納されたが、特徴量データfi及び類似度木データのデータベース35への格納タイミングは、任意である。また、(S59)等の類似度を算出する工程は、毎回、類似度計算をすることなく、過去に算出されている類似度を保持部から取得するようにしてもよい。
【0101】
〔第1実施形態の作用及び効果〕
上述のように、第1実施形態では、インデックス対象となる特徴量データの形態に依存することなく、特徴量データ間の類似度及び類似度に関する上述の規則に基づいて、階層化された類似度木が生成される。そして、この類似度木に基づいて、検索対象の特徴量データに関し類似度条件を満たす特徴量データが抽出される。また、第1実施形態では、類似度算出部25及び類似度算出部32における類似度算出手法自体は、何ら制限されない。このように、第1実施形態では、インデックス対象データの幾何学的性質やデータ構造に依存せず、インデックスである類似度木が生成される。更に、第1実施形態では、類似度算出手法に依存することもなく、当該類似度木の生成及び類似検索が実行される。
【0102】
従って、第1実施形態によれば、インデックス対象のデータ構造が未知である場合や特徴量データが高次元データである場合等においても、適切に類似検索をすることができる。即ち、第1実施形態によれば、インデックス対象のデータ構造に依存しない汎用的な類似検索技術を提供することができる。
【0103】
また、第1実施形態では、類似度木に新たな特徴量データを反映させる(追加する)際に、その新たな特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される特徴量データとの類似度が算出され、その類似度とそのエントリに含まれる類似度閾値とが比較され、この比較結果に基づいて、当該新たな特徴量データを含むエントリの挿入先がその中間ノード又はその下位ノードに決定される。更に、第1実施形態では、ノード内のエントリ数が制限(所定エントリ閾値)を超えた場合には、溢れ調整されることにより、そのノードが親ノードと子ノードとに分割される。その溢れ調整では、そのノード内のエントリから代表エントリが選択され、その代表エントリに設定される新たな類似度閾値が決定され、代表エントリの特徴量データと他のエントリの特徴量データとの類似度とその新たな類似度閾値との関係から、各エントリの配置が子ノード又は親ノードに決定される。
【0104】
このように、第1実施形態では、各ノードの特徴量データとの類似度に基づいて、上位階層から下位階層へ順番に各ノードがチェックされることにより、取得されたインデックス対象の特徴量データに対応するエントリが適切なノードに挿入される。更に、各ノードのエントリ数に応じて、各ノードが階層的に分割される。
【0105】
従って、第1実施形態によれば、インデックス対象のデータに基づいて、インデックス対象のデータ規模によらず、動的に、類似度木を生成及び更新することができる。一方、背景技術で述べた提案技術には、動的なインデックスの生成及び更新をサポートするものが少ない。R木技術のようにそれをサポートしている既存技術であったとしても、大規模データには対応し難い。
【0106】
また、第1実施形態では、検索対象の特徴量データ(クエリデータ)及び類似度条件が取得され、類似度木において上位ノードから下位ノードへ順にチェックされることにより、クエリデータに関する類似度条件を満たす特徴量データが特定され、データベース35から抽出される。このとき、中間ノードでは、エントリにより示される特徴量データとクエリデータとの類似度が算出され、この類似度と、そのエントリに含まれる類似度閾値又は類似度条件とが比較され、この比較結果に基づいて、中間ノードのそのエントリ、及び、そのエントリの子ノード以下の下位ノードのエントリが抽出対象から除外される。
【0107】
このように、第1実施形態では、類似度木の上位ノードから順に各エントリがチェックされ、当該類似度条件を満たさないエントリ及びそのエントリの子ノードを含む子孫ノードのエントリが抽出対象から逐次除外される。従って、第1実施形態によれば、類似度木に基づいてチェックするノードを制限することができるため、高い検索効率を実現することができる。更に、第1実施形態によれば、上述のように、類似度木は特徴量データの次元数に依存しないため、特徴量データの次元数が増加することに伴う検索効率の低減を防ぐことが出来る。
【0108】
また、第1実施形態では、ノードの溢れ調整時などに代表エントリを選出する方法として、上述のような2つの選択方法が例示された。代表エントリは、子ノードにより示される特徴量データの集合の代表であり、上述の規則に示されるように、類似度閾値と共に、その子ノードに含めるべき特徴量データを決める判断材料となる。よって、代表エントリは、既に類似度木に登録されている特徴量データに関する親ノードと子ノードとのエントリ数のバランスを取るためには、それら特徴量データの集合の中心近辺に位置することが望ましい。上記2つの選択方法によれば、ノードの溢れ調整直後の親ノードと子ノードとのエントリ数のバランスを取ることができる。但し、上記2つの選択方法以外でランダムに選択する方法が採用された場合には、代表エントリ選出の処理負荷を削減することができると共に、ノードの溢れ調整後(ノード分割後)、類似度木生成が進むにつれ、親ノードと子ノードとのエントリ数のバランスは取られる。
【0109】
また、第1実施形態では、ノードの溢れ調整時などに類似度閾値を決定する方法として、上述のような3つの決定方法が例示された。類似度閾値は、子ノードにより示される特徴量データの集合における、代表の特徴量データからの距離の閾値に相当し、上述の規則に示されるように、代表データと共に、その子ノードに含めるべき特徴量データを決める判断材料となる。上述の例における、新たな類似度閾値が、既に登録されている特徴量データの代表データとの類似度の分布から決定される方法によれば、既に類似度木に登録されている特徴量データに関する親ノードと子ノードとのエントリ数のバランスを取ることができる。但し、他の類似度閾値の決定方法においても、類似度閾値決定の処理負荷を削減することができると共に、ノードの溢れ調整後(ノード分割後)、類似度木生成が進むにつれ、親ノードと子ノードとのエントリ数のバランスは取られる。
【0110】
[第2実施形態]
上述の第1実施形態では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる1つの特徴量データを含んでいた。第2実施形態では、代表となる複数の特徴量データが、子ノードへのポインタと共に当該エントリに含まれる。代表となる特徴量データの数の上限は、例えば、子ノードで示される特徴量データの数より小さい値に設定される。以下、第2実施形態における検索装置1について、第1実施形態と異なる内容を中心に説明する。以下の説明では、第1実施形態と同様の内容については適宜省略する。
【0111】
図8は、第2実施形態における類似度木の一部の例を概念的に示す図である。
図8に示されるように、第2実施形態では、下位ノードL1へのポインタ(リンク関係R1)を含む上位(中間)ノードL2のエントリE2は、類似度閾値T1と、下位ノードL1に含まれる複数エントリE1(n)で示される複数の特徴量データ(f1、f3、f9等)の代表となる複数の特徴量データf8及びf11とを含む。
【0112】
代表選択部23は、特徴量データの追加時又は削除時に、必要に応じて、或るノードに含まれる複数の特徴量データの中から代表となる複数の特徴量データを選択する。中間ノードには、複数の特徴量データ及び子ノードへのポインタを含むエントリと、子ノードへのポインタを含まず1つの特徴量データを含むエントリとが混在する場合がある。この場合、代表選択部23は、子ノードへのポインタを含まないエントリの中から代表となる複数の特徴量データを選択するようにしてもよい。また、代表選択部23は、その中間ノードに含まれる全エントリの全特徴量データの中から代表となる複数の特徴量データを選択するようにしてもよい。
【0113】
例えば、代表選択部23は、以下に示す2つの選択方法のいずれか1つを用いて、代表となる複数の特徴量データを選択する。但し、本実施形態は、代表となる複数の特徴量データの選択方法を以下のような方法に制限しない。代表選択部23は、代表となる複数の特徴量データをランダムに選択するようにしてもよい。
【0114】
第1の選択方法では、代表選択部23は、類似度の値が最大となる特徴量データの組み合わせを代表として選択する。2つの特徴量データが代表として選択される場合、代表選択部23は、類似度の値が最大となる特徴量データのペアを代表として選択する。
【0115】
第2の選択方法では、代表選択部23は、類似度の値が最小となる特徴量データの組み合わせを代表として選択する。2つの特徴量データが代表として選択される場合、代表選択部23は、類似度の値が最小となる特徴量データのペアを代表として選択する。
【0116】
閾値決定部22は、第1実施形態における3つの決定方法に加えて、以下に示す第4の決定方法を用いてもよい。第4の決定方法では、新たな類似度閾値が、複数の代表の特徴量データの中心点となる特徴量データと他の特徴量データとの類似度に決定される。
【0117】
インデックス生成部21は、新たな特徴量データを類似度木に反映する場合に、当該新たな特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される複数の特徴量データとの各類似度をそれぞれ取得し、各類似度と類似度閾値とをそれぞれ比較し、各比較結果に基づいて、当該新たな特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部21は、全ての類似度が類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、いずれか1つの類似度でも類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。但し、インデックス生成部21は、いずれか1つの類似度でも類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、全ての類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定するようにしてもよい。
【0118】
検索処理部33は、検索対象の特徴量データとエントリに含まれる複数の特徴量データとに関し取得される各類似度と、類似度閾値、又は、条件取得部31により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値を持つエントリ、及び、その類似度閾値を含むエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象(検索結果)から除外する。このとき、全ての類似度が、類似度閾値と類似度条件との小さい方の値未満であれば、その類似度閾値を含むエントリは抽出対象から除外される。
【0119】
〔動作例〕
以下、第2実施形態におけるインデックス生成方法について
図5及び
図6を用いて説明する。第2実施形態では、(S52)、(S53)、(S57)、(S59)、(S60)及び(S61)において、複数の特徴量データが処理対象とされる点において、第1実施形態と異なる。
【0120】
具体的には、(S52)では、検索装置1は、対象ノードに含まれる各エントリについて、そのエントリに含まれる複数の特徴量データfeと特徴量データfiとの各類似度Sをそれぞれ算出し、類似度閾値以上の複数の類似度Sを示す複数の特徴量データfeを示すエントリを特定する。但し、検索装置1は、類似度閾値以上の類似度Sを示す1つの特徴量データを含む複数の特徴量データfeを示すエントリが特定されてもよい。(S53)では、検索装置1は、その特定されたエントリの中で類似度Sが最大となるエントリのポインタが示す子ノードを対象ノードに設定する。
【0121】
具体的には、(S57)では、検索装置1は、対象ノードのエントリの中から複数の特徴量データを代表として選択する。(S59)では、検索装置1は、(S57)で代表として選択された複数の特徴量データと、それら代表を選択した母集団に含まれるそれら代表以外の各特徴量データとの類似度をそれぞれ算出する。(S60)において、検索装置1は、代表として選択された複数の特徴量データとの類似度が類似度閾値以上を示す特徴量データを持つエントリを含む子ノードを生成する。但し、検索装置1は、代表として選択された複数の特徴量データの中の1つとの類似度が類似度閾値以上を示す特徴量データを持つエントリを子ノードに含めてもよい。
【0122】
(S61)では、検索装置1は、代表として選択された複数の特徴量データを含む1つのエントリを生成し、それら代表を含んでいたエントリを削除し、その生成されたエントリに(S60)で生成された子ノードへのポインタと(S58)で決定された類似度閾値とを設定する。
【0123】
第2実施形態では、(S75)、(S76)及び(S79)において、複数の特徴量データが処理対象とされる点において、第1実施形態と異なる。
【0124】
(S75)では、検索装置1は、代表となる複数の特徴量データを再選択する。
(S76)では、検索装置1は、再選択された複数の特徴量データを対象エントリに設定する。
【0125】
(S79)では、検索装置1は、対象エントリの複数の特徴量データと同一ノードの他のエントリの特徴量データとの各類似度を対象エントリに設定される類似度閾値とそれぞれ比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、対象エントリの複数の特徴量データと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させるべきと判定される。但し、対象エントリの複数の特徴量データの中の1つと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させると判定されてもよい。
【0126】
次に、第2実施形態における類似検索方法について
図7を用いて説明する。第2実施形態では、(S92)及び(S95)において、複数の特徴量データが処理対象とされる点において、第1実施形態と異なる。
【0127】
(S92)では、検索装置1は、対象ノードが中間ノードである場合、対象ノードの各エントリの複数の特徴量データfeとクエリデータfqとの各類似度Sをそれぞれ算出する。(S95)では、検索装置1は、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の複数の類似度Sを示す複数の特徴量データfeを示すエントリを抽出対象から除外する。
【0128】
〔第2実施形態の作用及び効果〕
第2実施形態では、子ノードへのポインタを含む中間ノードのエントリは、複数の特徴量データを示す。即ち、第2実施形態では、子ノードで示される特徴量データ集合の代表となる複数の特徴量データが選出され、当該複数の特徴量データが親ノードのエントリに設定される。そして、子ノードで示される特徴量データの集合は、親ノードのエントリに含まれる全ての特徴量データ又はいずれか1つの特徴量データとの類似度がその類似度閾値以上を示す。
【0129】
このように、第2実施形態によれば、親ノードのエントリで示される複数の特徴量データが用いられることにより、子ノードで示される特徴量データ集合との類似度が判定されるため、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を、第1実施形態に比べより厳密に定義することができる。
【0130】
また、類似度の値が最大となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データの分散が大きい場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。一方、類似度の値が最小となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データが密集する場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。
【0131】
このように、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができるため、第2実施形態によれば、類似度木のバランスを取り易くなり、ひいては、検索効率を向上させることができる。
【0132】
以下に実施例を挙げ、上述の各実施形態を更に詳細に説明する。本発明は以下の実施例から何ら限定を受けない。
【実施例1】
【0133】
実施例1は、上述の第1実施形態に対応する。以下、実施例1における検索装置1の動作及びインデックス生成方法について、
図5に沿って説明する。
【0134】
図9から
図18は、実施例1におけるインデックス生成過程を概念的に示す図である。実施例1では、
図9に示されるように、子ノードへのポインタ、類似度閾値(0.1)及び特徴量データf1が設定されたエントリを持つルートノードが既に生成されていると仮定する。また、エントリ閾値が3に設定されていると仮定する。また、以降、特徴量データを単にデータと表記する。
【0135】
検索装置1は、インデックス対象となるデータf5を取得する(S50)。その後、検索装置1は、データf1とデータf5との類似度(0.8)が類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。ここで、ノードN1は葉ノードであるため(S54;YES)、検索装置1は、データf5を含むエントリを対象ノードN1に追加する(S55)。
【0136】
検索装置1は、対象ノードのエントリ数(4)が所定エントリ閾値(3)を超えているため(S56;YES)、溢れ調整を行う。溢れ調整において、検索装置1は、対象ノードN1の代表エントリを選択する(S57)。
図10の例によれば、データf2を含むエントリが代表エントリに選択される。更に、検索装置1は、新たな類似度閾値(0.8)を決定する(S58)。
【0137】
検索装置1は、代表エントリのデータf2と、他の各エントリのデータf3、f4及びf5の各々との類似度をそれぞれ算出する(S59)。
図10の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置1は、
図11に示されるように、類似度閾値(0.8)以上の類似度を示すデータf3及びf4を持つ2つのエントリを含む子ノードN2を生成する(S60)。更に、検索装置1は、対象ノードN1の代表エントリに子ノードN2へのポインタと類似度閾値(0.8)とを設定する(S61)。検索装置1は、データf5をデータベース35に格納すると共に、更新された類似度木データをデータベース35に格納する(S62)。
【0138】
続いて、
図11に示されるように、検索装置1は、新たなデータf6を取得する(S50)。検索装置1は、データf1とデータf6との類似度(0.9)が類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。ここで、ノードN1は中間ノードであるため(S54;NO)、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータf2とデータf6との類似度を算出する。
図11の例では、データf2とデータf6との類似度は0.85であるため、検索装置1は、類似度閾値(0.8)以上の類似度を示すデータf2を含むエントリを特定する(S52)。
【0139】
検索装置1は、その特定されたエントリのポインタが示す子ノードN2を対象ノードに設定し(S53)、
図12に示されるように、データf6を含むエントリをその対象ノードN2に追加する(S55)。ここで、対象ノードN2のエントリ数(3)は、所定エントリ閾値(3)を超えていないため(S56;NO)、検索装置1は、データf6及び更新された類似度木データをデータベース35に格納する(S62)。
【0140】
続いて、
図13に示される場面について説明する。ここでは、データf7がノードN1に追加された状態で、検索装置1が新たなデータf8を取得する(S50)。検索装置1は、データf1とデータf8との類似度(0.7)が類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。
【0141】
ここで、ノードN1は中間ノードであるため(S54;NO)、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータf2とデータf8との類似度を算出する。
図13の例では、データf2とデータf8との類似度は0.75であり、類似度閾値(0.8)以上の類似度を示すデータを含むエントリが対象ノードN1に存在しない。検索装置1は、該当するエントリが対象ノードN1に存在しないため(S52;NO)、
図13に示されるように、データf8を含むエントリを対象ノードN1に追加する(S55)。
【0142】
検索装置1は、対象ノードN1のエントリ数(4)が所定エントリ閾値(3)を超えているため(S56;YES)、溢れ調整を行う。
図13の例では、検索装置1は、対象ノードN1に含まれる全エントリを母集団として、その母集団の中から代表エントリを選択する(S57)。
図13の例によれば、データf5を含むエントリが代表エントリに選択される。更に、検索装置1は、新たな類似度閾値(0.8)を決定する(S58)。
【0143】
検索装置1は、代表エントリのデータf5と、他の各エントリのデータf2、f7及びf8の各々との類似度をそれぞれ算出する(S59)。
図14の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置1は、
図14及び
図15に示されるように、類似度閾値(0.8)以上の類似度を示すデータf8を持つ1つのエントリを含む子ノードN3を生成する(S60)。更に、検索装置1は、対象ノードN1におけるデータf5を含む代表エントリに、子ノードN3へのポインタと類似度閾値(0.8)とを設定する(S61)。このとき、検索装置1は、ノードN2へのポインタを含むエントリについてノードN1に残ることを決めたため、そのエントリに含まれるそのポインタや類似度閾値(0.8)をそのままとする。これにより、更新された類似度木は、
図15に示されるようになる。検索装置1は、データf8をデータベース35に格納すると共に、更新された類似度木データをデータベース35に格納する(S62)。
【0144】
図16及び
図17Aは、
図14及び
図15に示される例とは異なるインデックス生成例を示す図である。
図14の例では、代表エントリがデータf5を含むエントリに決められ、新たな類似度閾値が0.8に決められた。
図16は、新たな類似度閾値が0.75に決められる例を示す。この場合、
図16の例に示されるような各類似度がそれぞれ算出される。
【0145】
この場合、検索装置1は、類似度閾値(0.75)以上の類似度を示すデータf2及びf8を持つ2つのエントリを子ノードへ移すことを決める。しかし、この場合、データf2を含むエントリは、子ノードN2とリンクされている。そこで、検索装置1は、
図17に示されるように、データf2を含むエントリに設定されている子ノードN2へのポインタと類似度閾値(0.8)とをそのまま維持しつつ、データf2及びf8を含む2つのエントリを含む子ノードN4を生成し(S60)、親ノードとなるノードN1から、データf2及びf8を含む2つのエントリを削除する。更に、検索装置1は、対象ノードN1におけるデータf5を含む代表エントリに、子ノードN4へのポインタと類似度閾値(0.75)とを設定する(S61)。結果、更新された類似度木は、
図17Aに示されるようになる。
図17Aに示されるように、既に設定されているリンク関係を維持することで、ノードの溢れ調整を簡易処理で実現することができる。
【0146】
図17Bは、
図17Aに示される例とは異なるインデックス生成例を示す図である。検索装置1は、ノードの溢れ調整において、既に子ノードとリンクされているエントリを子ノードへ移すことを決めた場合、
図17Bに示されるように、既に設定されているリンク関係を解除するようにしてもよい。この場合、検索装置1は、
図17Bに示されるように、データf2及びf8を含む2つのエントリと共に、子ノードN2に含まれる3つのエントリ(データf3、f4及びf6を含む)を含む子ノードN4を生成し(S60)、親ノードとなるノードN1から、データf2及びf8を含む2つのエントリを削除する。
【0147】
図16、
図17A及び
図17Bの例において、ノードN1の溢れ調整時に、代表エントリに含まれるデータf5と、ノードN2に含まれていたデータf3、f4及びf6の各々との類似度は、計算されなくてもよい。これは、上述の規則に基づいている。即ち、データf2は、データf3、f4及びf6の各々と類似度閾値(0.8)以上の類似度を示す代表データであり、かつ、代表データf2とデータf5とが新たな類似度閾値(0.75)以上の類似度を示す場合、代表データf2のデータ集合(f3、f4及びf6)とデータf5とについても新たな類似度閾値(0.75)以上の類似度を示す可能性が高いからである。
【0148】
図18は、
図15に示される類似度木が既に生成されている状態で、新たなデータf9が取得された場合のインデックス生成過程を概念的に示す図である。この場合、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含む2つのエントリについて、そのエントリに含まれるデータf2及びf5と、データf9との各類似度をそれぞれ算出する。
図18の例では、データf2とデータf9との類似度は0.85であり、その類似度がデータf2のエントリの類似度閾値(0.8)より大きい。更に、データf5とデータf9との類似度は0.86であり、その類似度がデータf5のエントリの類似度閾値(0.8)より大きい。即ち、(S52)に該当するエントリが複数存在する(S52;YES)。
【0149】
この場合、検索装置1は、(S52)の条件を満たすエントリであって、かつ、データf9との類似度が最大となるエントリ、即ち、データf5を含むエントリを特定する。検索装置1は、データf5を含むエントリのポインタが示す子ノードN3を対象ノードに設定する(S53)。検索装置1は、データf9を含むエントリを対象ノードN3に追加する(S55)。
【実施例2】
【0150】
実施例2は、上述の第2実施形態に対応する。以下、実施例2における検索装置1の動作及びインデックス生成方法について、
図5に沿って説明する。実施例2では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる2つの特徴量データを含む例が示される。また、子ノードへのポインタを含むエントリの2つの特徴量データとの各類似度がそれぞれ類似度閾値以上となるデータが、その子ノードへの追加対象とされる例が示される。
【0151】
図19及び
図20は、実施例2におけるインデックス生成過程を概念的に示す図である。
図19に示されるように、子ノードへのポインタ、類似度閾値(0.2)及びデータf1及びf2が設定されたエントリを持つルートノードが既に生成されており、ノードN1には、データf3、f4及びf5を含む3つのエントリが設定されている。
【0152】
この状態で、検索装置1は、データf6を取得する(S50)。検索装置1は、データf1及びf2の各々と、データf6との各類似度(0.9)(0.85)が類似度閾値(0.2)よりそれぞれ大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。
【0153】
ここで、ノードN1は葉ノードであるため(S54;NO)、検索装置1は、データf6を含むエントリを対象ノードN1に追加する(S55)。検索装置1は、対象ノードN1のエントリ数(4)が所定エントリ閾値(3)を超えているため(S56;YES)、溢れ調整を行う。
【0154】
この溢れ調整において、検索装置1は、
図19に示されるように、対象ノードN1に含まれる全エントリの全データの中から2つのデータを代表として選択する(S57)。ここでは、上述の第1の選択方法が用いられることにより、検索装置1は、類似度の値が最大となる2つのデータを代表として選択する。
図19の例では、データf3及びデータf4が代表に選択される。更に、検索装置1は、新たな類似度閾値(0.6)を決定する(S58)。
【0155】
検索装置1は、代表として選択されたデータf3及びf4の各々と、他のエントリのデータf5及びf6の各々との類似度をそれぞれ算出する(S59)。ここでは、
図20の例に示されるような各類似度がそれぞれ算出される。これにより、検索装置1は、
図20に示されるように、データf3及びf4の各々と類似度閾値(0.6)以上の類似度を示すデータf5を持つ1つのエントリを含む子ノードN2を生成する(S60)。
図20の例では、データf6とデータf4との類似度(0.6)は、類似度閾値(0.6)以上となるが、データf6とデータf3との類似度(0.5)が類似度閾値(0.6)未満となるため、データf6は、ノードN1に残される。
【0156】
検索装置1は、対象ノードN1におけるデータf3及びf4を含む1つのエントリを生成し、そのエントリに、子ノードN2へのポインタと類似度閾値(0.6)とを設定する(S61)。これにより、更新された類似度木は、
図20に示されるようになる。
【0157】
[変形例]
上述の各実施形態及び各実施例では、代表となる特徴量データを示すエントリは、親ノードのみに含まれるが、親ノードと子ノードとの両方にそれぞれ含まれていてもよい。
【0158】
また、上述の各実施形態では、検索装置1は、1つの装置(コンピュータ)として実現されたが、複数の装置として実現されてもよい。上述の各実施形態は、例えば、類似度木を生成するインデックス生成装置と、類似検索を行う検索装置とから構成されてもよい。この場合、インデックス生成装置は、対象取得部20、インデックス生成部21、閾値決定部22及び類似度算出部25を含み、検索装置は、検索部30及びデータベース35を含む。更に、各実施形態は、インデックス生成装置、検索装置及びデータベース装置から構成されてもよい。
【0159】
また、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
【0160】
この出願は、2013年1月11日に出願された日本出願特願2013−003970号を基礎とする優先権を主張し、その開示の全てをここに取り込む。