以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
図1は、本発明の実施の形態に係るインデックス生成装置100の構成例を概念的に示す図である。インデックス生成装置100は、インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。ここで、「ノード」とは、生成されるインデックスのデータ構造を構成する1つのデータ要素を意味し、例えば、配列や構造体やクラス等により実現される。また、「インデックス対象となるデータ」とは、インデックスが付与されるデータを意味する。本実施形態では、インデックス対象となるデータのデータ構造は何ら制限されない。即ち、当該データの次元数は制限されず、かつ、当該データのデータ構造は未知であってもよい。また、本実施形態では、ノードに含まれるエントリとデータとの関連付け形態は、制限されない。エントリにデータが含まれていてもよいし、エントリにはデータの格納領域を指すポインタが含まれていてもよい。
図1に示されるように、インデックス生成装置100は、インデックス生成部101及び閾値決定部102を有する。インデックス生成部101は、データ間の類似度を用いて、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度がそのリンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成する。閾値決定部102は、上位ノードと下位ノードとの各リンク関係に関し、デフォルト類似度閾値及び調整値をそれぞれ決定し、デフォルト類似度閾値から調整値の減算により当該各リンク関係に付与される各類似度閾値をそれぞれ決定する。
本実施形態における類似度とは、近似する度合いを意味し、類似度の値が大きい程、近似する度合いが増し、逆に、類似度の値が小さい程、近似する度合いが低下する。類似度としては、ユークリッド距離や、ベクトル間距離や、ヒストグラム間の一致度合、相関係数等、様々な指標値が利用される。但し、データ間の類似度の算出手法については何ら制限されない。類似度は、インデックス生成装置100により算出されてもよいし、他のコンピュータにより算出されてもよい。
また、本実施形態では、上位ノードに含まれるエントリによる下位ノードとのリンク関係の持ち方は制限されない。例えば、エントリが下位ノードを指すポインタを有していてもよい。また、エントリが下位ノードの識別IDを有し、この下位ノードの識別IDと下位ノードを指すポインタとの対応関係が保持されていてもよい。更に、エントリがリンクの識別IDを有し、このリンクの識別IDと下位ノードを指すポインタとの対応関係が保持されていてもよい。
インデックス生成装置100は、例えば、後述する詳細実施形態における高次元データ検索装置1と同様のハードウェア構成を有し、その高次元データ検索装置1と同様にプログラムが処理されることで、上述の各処理部が実現される。
また、本発明の実施の形態に係るインデックス生成方法は、インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成する。本インデックス生成方法は、インデックス生成装置100等のようなコンピュータにより実行され、下位ノードと、下位ノードとリンク関係を持つエントリであって、下位ノードのエントリにより示されるデータとの類似度が当該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含むインデックスを生成し、上位ノードと下位ノードとの各リンク関係に関し、デフォルト類似度閾値及び調整値をそれぞれ決定し、デフォルト類似度閾値から調整値の減算により、当該各リンク関係に付与される各類似度閾値をそれぞれ決定する、ことを含む。但し、本インデックス生成方法に含まれる各工程は、順不同に逐次的に実行されてもよいし、同時に実行されてもよい。
図2は、本実施形態で生成されるインデックスの一部の例を概念的に示す図である。図2に示されるように、本実施形態では、下位ノードL1と、下位ノードL1とリンク関係R1を持つエントリE2であって、下位ノードL1のエントリE1(1)、E1(2)、E1(3)及びE1(n)により示されるデータ(f1、f3、f9等)との類似度がそのリンク関係R1に付与される類似度閾値T1以上の代表データf8を示すエントリE2を含む上位ノードL2と、を含むインデックスが生成される。更に、上位ノードと下位ノードとの各リンク関係には、デフォルト類似度閾値DST1及びDST2、並びに、調整値AD1及びAD2が決定されている。リンク関係R1に付与される類似度閾値T1は、デフォルト類似度閾値DST1から調整値AD1の減算により決定され、リンク関係R2に付与される類似度閾値T2は、デフォルト類似度閾値DST2から調整値AD2の減算により決定される。なお、図2の例では、代表データf8を示すエントリは、上位ノードL2のみに含まれるが、上位ノードL2及び下位ノードL1の両方にそれぞれ含まれていてもよい。
以下、本実施形態により具現化されている技術的思想と共に、本実施形態の作用及び効果について説明する。
本発明者は、データAとデータBとが類似し、かつ、データBとデータCとが類似する場合、データAとデータCとが類似するという規則(非特許文献2)に着眼し、この規則を類似検索のためのインデックスのデータ構造に採用するという着想を得た。この規則は、必ずしも真とはならないが、真となる可能性が高い。この点の実世界での例として、いわゆるSMALL−WORLD理論が知られている(上記非特許文献3及び4参照)。即ち、この理論は、実世界において、人物Aと人物Bとが友人であり、かつ、人物Bと人物Cとが友人である場合、人物Aと人物Cとが友人である可能性が高いことを示す。
ここで、インデックス対象となる3つのデータをfa、fb及びfcで表し、インデックス対象となるデータfiの集合をFで表し、検索対象データをfqで表す。ここで、データfbは集合Fに属し、データfbは集合Fに含まれる全データの代表であると仮定する。この場合、上記規則は、以下の式で表すことができる。下記式におけるsim()は、2つのデータ間の類似度を計算する関数であり、データとデータの集合との類似度を計算することもできる。δは、類似度の閾値を示す。
上記式(1)は、上述の規則を表す。即ち、上記式(1)は、データfaとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータfcとの類似度が閾値δ以上である場合、データfaとデータfcとの類似度は閾値δ以上であることを示す。ここで、上記式(1)のデータfaを検索対象データfqに置き換えると、上記式(2)が成立する。即ち、データfqとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータfcとの類似度が閾値δ以上である場合、データfqとデータfcとの類似度は閾値δ以上であると判断することができる。
更に、上記式(2)のデータfcをデータ集合Fに置き換えると、上記式(3)が成立する。即ち、データfqとデータfbとの類似度が閾値δ以上であり、かつ、データfbとデータ集合Fとの類似度が閾値δ以上である場合、データfqとデータ集合Fとの類似度は閾値δ以上であると判断することができる。
上述したように、データfbは集合Fに含まれる全データの代表である。よって、上記式(3)によれば、データfbとデータ集合Fに含まれる各データfiとの類似度が予めそれぞれ算出されている状態では、検索対象データfqと代表のデータfbとの類似度のみ算出することで、検索対象データfqとデータ集合F内の各データfiとの類似性が計算なく判断され得る。本発明者は、このような規則を本実施形態におけるインデックスのデータ構造に採用した。
図2によれば、下位ノードL1がデータ集合Fに相当し、代表データf8が集合Fの代表のデータfbに相当する。下位ノードL1には、代表データf8との類似度が類似度閾値T1以上のデータを示すエントリが設定される。これにより、本実施形態によれば、代表データf8と検索対象データfqとの類似度のみを算出することで、検索対象データfqと下位ノードL1で示されるデータ集合との類似度を、計算することなく、判断することができる。例えば、代表データf8と検索対象データfqとの類似度が類似度閾値T1未満の場合には、検索対象データfqと下位ノードL1により示される全データとの類似度も、類似度計算することなく、類似度閾値T1未満と判断することができる。
このように、本実施形態では、対象データのデータ構造に依存せず、データ間の類似度に基づいて階層化された木構造のインデックスが生成される。更に、本実施形態におけるインデックス生成は、対象データの次元数にも依存しない。これは、本実施形態がデータの次元に対応する幾何学的性質に依存することなく、データ間の類似度に基づいてインデックスを生成しているからである。
従って、本実施形態により生成されるインデックスを用いることにより、対象データのデータ構造が未知である場合や対象データが高次元データである場合等においても、類似検索をすることができる。即ち、本実施形態によれば、対象データのデータ構造に依存しない汎用的な類似検索技術を提供することができる。
更に、本実施形態では、上位ノードと下位ノードとのリンク関係に対してデフォルト類似度閾値及び調整値が決定され、そのデフォルト類似度閾値からその調整値を減じて得られる類似度閾値に基づいて、その下位ノードにより示されるデータ群が決まる。言い換えれば、類似度に関する閾値(デフォルト類似度閾値)を調整値で緩和して得られる値が最終的な類似度閾値として利用され、各ノードのエントリが決定される。これにより、似通ったデータの集合を1つのノードに集まり易くすることができる。
この効果を具体例に基づいて更に説明する。1つの閾値を用いる場合、その閾値(0.85)に対応する下位ノードには、類似度(0.86)のデータは配置されるが、類似度(0.84)のデータは配置されない。ところが、類似度(0.84)のデータと類似度(0.86)のデータとは十分に近似している可能性がある。一方、本実施形態によれば、デフォルト類似度閾値(0.85)が調整値(0.05)により緩和された閾値(0.8)が用いられる。よって、デフォルト閾値(0.85)に対応する下位ノードには、類似度(0.86)のデータも類似度(0.84)のデータも配置されることになる。
本実施形態によれば、このように似通ったデータの集合を1つのノードに集まり易くすることで、類似検索時に、誤って、比較対象外としてしまうデータを削減することができ、類似検索の再現率を向上させることができる。ここで、類似検索の再現率(Recall)とは、類似検索の正解となる結果の件数を分母として、実際の類似検索で得られた結果の件数を分子として得られる値である。更に、似通ったデータの集合を1つのノードに集まり易くすることで、類似検索において、比較対象とするエントリの数が限定され易くなり、結果、類似検索の処理速度を向上させることができる。
従って、本実施形態によれば、類似度計算量の削減により、対象データの次元数の増加に伴う検索効率の低下を防ぎ、かつ、類似検索の再現率を向上させることもできる。なお、背景技術で述べた提案手法によれば、データの次元数の増加に伴い、空間索引内でのノード間のオーバーラップが大量に発生するため、検索時に全データをスキャンすることになり、検索効率が急激に低下していた。また、本実施形態では、データ間の類似度に基づいてインデックスを生成するため、類似度算出手法はブラックボックスでもよい。よって、本実施形態によれば、対象データのデータ構造だけでなく、類似度算出手法にも依存しない汎用的でかつ効率的な類似検索技術を提供することができる。
以下、上述の実施形態について更に詳細を説明する。以下には、詳細実施形態として、第一実施形態、第二実施形態及び第三実施形態を例示する。以下の各実施形態は、上述のインデックス生成装置及びインデックス生成方法を高次元データ検索装置に適用した場合の例である。なお、上述のインデックス生成装置及びインデックス生成方法は、高次元データを扱う検索装置への適用に限定されるものではなく、類似度を算出し得る様々なデータの検索装置に適用可能である。
[第一実施形態]
〔装置構成〕
図3は、第一実施形態における高次元データ検索装置(以降、単に検索装置と表記する)1のハードウェア構成例を概念的に示す図である。第一実施形態における検索装置1は、図3に示されるように、ハードウェア構成として、CPU(Central Processing Unit)10、メモリ11、入出力インタフェース(I/F)12、通信ユニット13等を有する。各ハードウェア要素は、例えばバスにより接続される。
メモリ11は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク等である。入出力I/F12は、キーボード、マウス等のようなユーザ操作の入力を受け付ける入力装置(図示せず)、表示装置やプリンタ等のようなユーザに情報を提供する出力装置(図示せず)などと接続可能である。通信ユニット13は、他のコンピュータとの通信網を介した通信や、他の機器との信号のやりとり等を行う。通信ユニット13には、可搬型記録媒体等も接続され得る。なお、検索装置1は、入力装置や出力装置を持たなくてもよく、検索装置1のハードウェア構成は制限されない。
検索装置1は、インデックス対象データを取得し、取得されるインデックス対象データに基づいて上述の実施形態で示されるデータ構造を持つインデックスを生成する。また、検索装置1は、検索対象データ及び類似度条件を取得し、上述のように生成されたインデックスを用いて、検索対象データに関し類似度条件に適合するデータを検索する(類似検索)。本実施形態では、検索装置1により生成されるインデックスを類似度木と表記する場合もある。類似度木とは、類似度に基づく階層構造を持つインデックスを意味する。検索装置1の一部が上述のインデックス生成装置100に相当する。
〔処理構成〕
図4は、第一実施形態における検索装置1の処理構成例を概念的に示す図である。第一実施形態における検索装置1は、対象取得部20、インデックス生成部21、閾値決定部22、類似度取得部25、検索部30、データベース35等を有する。これら各処理部は、例えば、CPU10によりメモリ11に格納されるプログラムが実行されることにより実現される。また、当該プログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F12を介してインストールされ、メモリ11に格納されてもよい。
対象取得部20は、映像等のような高次元の特徴量データをインデックス対象データとして取得する。特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信ユニット13を経由して取得された情報であってもよい。
類似度取得部25は、2つの特徴量データ間の類似度を算出する。本実施形態では、類似度取得部25による類似度算出手法は何ら制限されない。類似度取得部25は、外部から提供される内部処理がブラックボックス化されたAPI(Application Programming Interface)やライブラリ等を用いて、当該類似度を算出してもよい。また、類似度取得部25は、他のコンピュータにより算出された類似度を取得することもできる。
インデックス生成部21は、上述のインデックス生成装置100におけるインデックス生成部101と同様に、対象取得部20により取得される特徴量データのインデックスとなる類似度木を生成及び更新する。生成又は更新された類似度木のデータは、データベース35に格納される。なお、当該類似度木のデータは、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信ユニット13を介して他のコンピュータに送信されてもよい。
本実施形態は、類似度木を構成する各ノードが次のようなデータ構造を持つ形態を採用する。下位ノードとリンク関係を持つ上位ノードのエントリは、その下位ノードを指すポインタと、そのリンク関係に関し算出されるデフォルト類似度閾値及び調整値と、そのエントリにより示される特徴量データとを含む。但し、当該エントリは、デフォルト類似度閾値及び調整値に代え、又は、それらと共に、それらから算出される類似度閾値を含むこともできる。その上位ノードにおける、下位ノードとリンク関係を持たないエントリは、そのエントリにより示される特徴量データを含む。また、下位ノードへのポインタを含むエントリを1つも持たないノードに含まれる各エントリは、各エントリにより示される特徴量データのデータベース35内の格納領域を指すポインタをそれぞれ含む。また、下位ノードへのポインタが設定されたエントリが持つ特徴量データは、その下位ノードに含まれるエントリにも設定されるか、又は、その下位ノードに含まれるエントリにその特徴量データへのポインタが設定される。
以降、下位ノードへのポインタを含むエントリを1つも持たないノードは、葉ノードと表記され、下位ノードへのポインタを含むエントリを1つでも持つノードは、中間ノードと表記される場合がある。また、中間ノードの中で最上位のノードは、ルートノードと表記される場合もある。よって、図2によれば、ノードL3はルートノード又は中間ノードと表記され、ノードL2は中間ノードと表記され、ノードL1は葉ノードと表記され得る。
また、上位ノードと、その上位ノードに含まれるエントリのポインタでリンクされる下位ノードとの関係は、親子関係と表記される場合もあり、その親子関係を持つ上位ノード及び下位ノードは、親ノード及び下位ノードとそれぞれ表記される場合もある。よって、図2によれば、ノードL2とノードL1との関係では、ノードL2は親ノードと表記され、ノードL1は子ノードと表記され得る。
インデックス生成部21は、対象取得部20により取得された対象の特徴量データを類似度木に反映する際、次のようにして、その対象の特徴量データを含むエントリの挿入先となるノードを決定する。インデックス生成部21は、当該対象の特徴量データと、下位ノードへのポインタを含む中間ノードのエントリに含まれる特徴量データとの類似度を類似度取得部25から取得し、そのエントリに含まれるデフォルト類似度閾値及び調整値から算出される類似度閾値とその類似度を比較する。インデックス生成部21は、この比較結果に基づいて、当該対象の特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部21は、類似度が類似度閾値以上であれば、当該対象の特徴量データを含むエントリの挿入先を下位ノードに決定し、類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。
また、インデックス生成部21は、代表選択部23及び溢れ調整部24を含む。
代表選択部23は、特徴量データの追加時又は削除時に、必要に応じて、複数エントリの中から代表エントリを選択する。これは、データ集合Fの中から代表のデータfbを選択することに相当する。よって、代表エントリとは、代表として選択された特徴量データを示すエントリを意味する。また、代表エントリに含まれる特徴量データは代表特徴量データとも表記される。特徴量データの追加時には、具体的には、代表選択部23は、新たなエントリの挿入先として決定された対象ノードに含まれるエントリ及び新たなエントリを含む対象エントリ集合の中から、代表エントリを選択する。その対象エントリ集合に含まれる、対象ノード内のエントリとは、対象ノードに含まれる全エントリであってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。対象ノードに含まれる全エントリを当該対象エントリ集合に含める場合、既に存在する子ノードの再構成が必要になる場合がある。
例えば、代表選択部23は、以下に示す2つの選択方法のいずれか1つを用いて、代表エントリを選択する。但し、本実施形態は、代表エントリ選択方法を以下のような方法に制限しない。代表選択部23は、以下に示す2つの選択方法以外で、任意のエントリを代表エントリとしてランダムに選択してもよい。
第一の選択方法では、代表選択部23は、他の各エントリにより示される各特徴量データとの類似度の分散が最小となる特徴量データを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部23は、下記式に表わされるように、集合Fに属する各特徴量データfiに関し、特徴量データfiと他の特徴量データfjとの全ての類似度をそれぞれ算出し、類似度分布の分散値σが最小となる特徴量データfiを、集合Fの代表として選出する。但し、第一の選択方法において、代表エントリとして選択されるエントリは、各データとの類似度の分散が最小となるデータを示すエントリのみに制限されるわけではない。代表エントリは、各データとの類似度の分散が小さいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該分散が2番目に小さいデータを示すエントリが代表エントリに選択されてもよい。
第二の選択方法では、代表選択部23は、自身が最近傍となる他のエントリにより示されるデータの数が最大となるデータを示すエントリを代表エントリとして選択する。この方法は、以下の式により表わすことができる。代表選択部23は、下記式に表わされるように、集合Fに属する各特徴量データfiに関し、特徴量データfiが最近傍となる他の特徴量データの数RNN(Reverse Nearest Neighbors)(fi)が最大となる特徴量データfiを、集合Fの代表として選出する。但し、第二の選択方法において、代表エントリとして選択されるエントリは、当該データの数が最大となるデータを示すエントリのみに制限されるわけではない。代表エントリは、当該データの数が大きいデータを示すエントリから優先的に選択されるとしてもよい。例えば、当該データの数が2番目に大きいデータを示すエントリが代表エントリに選択されてもよい。
溢れ調整部24は、新たなエントリの挿入先として決定された対象ノードに含まれるエントリ及び当該新たなエントリを含む対象エントリ集合のエントリ数が所定エントリ閾値を超える場合に、そのノードを子ノードと親ノードとに分割する。このようにノードを親ノードと子ノードとに分割することを溢れ調整とも表記する。溢れ調整において、溢れ調整部24は、上記対象エントリ集合の中から代表エントリを代表選択部23に選択させ、新たなデフォルト類似度閾値又は新たな類似度閾値を閾値決定部22に決定させる。溢れ調整部24は、選択された代表エントリを除く上記対象エントリ集合の中から、選択された代表エントリにより示される特徴量データとの類似度が新たなデフォルト類似度閾値又は新たな類似度閾値以上の特徴量データを示すエントリを選択し、選択されたエントリを含む下位ノード(子ノード)を生成する。溢れ調整部24は、対象ノード(親ノード)における選択された代表エントリにその下位ノードへのポインタと新たなデフォルト類似度閾値及び新たな調整値を設定する。ここで、代表エントリは、子ノード及び親ノードの両方に含められてもよいし、親ノードのみに含められてもよい。
閾値決定部22は、上述のインデックス生成装置100における閾値決定部102と同様に、各類似度閾値をそれぞれ決定する。具体的には、閾値決定部22は、各リンク関係に関し、デフォルト類似度閾値及び調整値をそれぞれ決定し、デフォルト類似度閾値から調整値の減算により各類似度閾値をそれぞれ決定する。本実施形態では、代表エントリにはデフォルト類似度閾値及び調整値が設定されるため、閾値決定部22は、類似度閾値が必要となる度に、代表エントリからデフォルト類似度閾値及び調整値を抽出し、それらから類似度閾値を算出する。以降、デフォルト類似度閾値はDS閾値と表記し、デフォルト類似度閾値から調整値を減算することにより決定される類似度閾値はS閾値と表記する場合もある。
図2の例によれば、ノードL2の代表エントリE2に、デフォルト類似度閾値DST1及び調整値AD1が設定され、ノードL3の代表エントリに、デフォルト類似度閾値DST2及び調整値AD2が設定される。閾値決定部22は、必要に応じて、デフォルト類似度閾値DST1及び調整値AD1から類似度閾値T1を算出し、デフォルト類似度閾値DST2及び調整値AD2から類似度閾値T2を算出する。
DS閾値は、溢れ調整部24による溢れ調整時に決定される。閾値決定部22は、予め選択候補となるDS閾値のリストを持ち、このリストの中から、対象リンクに付与する1つのDS閾値を選択してもよい。また、閾値決定部22は、次のような方法を用いて、新たなDS閾値を決定することもできる。但し、DS閾値の決定方法は制限されない。
例えば、閾値決定部22は、既に決定されているDS閾値と均等間隔となるように、新たなDS閾値を決定することができる。この例では、0から1までの類似度範囲を等間隔に分割することにより、各DS閾値がそれぞれ決定される。例えば、0.1の等間隔で[0,1]の類似度範囲区間を10等分割し、各DS閾値はそれぞれの分割点の数値に決定される。この場合、DS閾値は、0.1、0.2、0.3、....、0.9、1.0といった値に決定される。
他の例として、閾値決定部22は、既に決定されているDS閾値と最大類似度とを再帰的に2分割して得られる値を新たなDS閾値に決定することができる。この例では、0から1までの類似度範囲を再帰的にLogスケールに分割することにより、各DS閾値がそれぞれ決定される。例えば、1番目のDS閾値が0.2に設定され、2番目のDS閾値が、0.2から1.0までの範囲を2等分割することにより、その分割点0.6に決定される。このように2等分割が繰り返されることで、3番目以降の各DS閾値は、0.8、0.9、0.95、0.975、0.9875などに決定される。
他の例として、閾値決定部22は、溢れ調整の対象となる特徴量データの集合における、代表の特徴量データと他の各特徴量データとの各類似度から得られる値を新たなDS閾値に決定することができる。例えば、閾値決定部22は、算出される複数の類似度の中の中央値となる類似度を新たなDS閾値に決定する。データ集合に含まれる5つの特徴量データと代表の特徴量データとの類似度がそれぞれ、0.5、0.3、0.6、0.9、0.95である場合、新たなDS閾値が、中央値0.6に決定される。また、算出される複数の類似度の中の最大値と最小値との間を2等分割し、その分割点が新たなDS閾値に決定されてもよい。
調整値は、その決定方法に対応するタイミングで決定及び更新される。閾値決定部22は、例えば、次のような方法で、各調整値をそれぞれ決定する。但し、調整値の決定方法は、次のような方法のみに制限されない。
《調整値の第一決定方法》
閾値決定部22は、DS閾値が大きい程小さくなるように、調整値を決定する。本方法では、閾値決定部22は、DS閾値を上述のように決定した後、その決定されたDS閾値に基づいて、調整値を決定する。即ち、本方法では、調整値は溢れ調整部24による溢れ調整時に決定される。例えば、閾値決定部22は、調整値の最大値と、DS閾値を入力としてDS閾値と正の相関を示す出力値を出す関数とを予め持ち、決定されたDS閾値をその関数に代入することで得られる出力値を当該最大値から減算することで得られる値を調整値として決定することができる。
また、第一決定方法は、次のように実現されてもよい。閾値決定部22は、DS度閾値を階層が下がる程大きい値に設定し、当該調整値を階層が下がる程小さい値に設定する。例えば、閾値決定部22は、最上位階層を1として階層毎に1加算される階層位置hを用いて、定数(例えば、0.1)をhで除算して得られる値を調整値に決定する。但し、第一決定方法における具体的な調整値の決定方法は、このような例に制限されない。
《調整値の第二決定方法》
閾値決定部22は、上位ノードにより示される代表特徴量データと下位ノードのエントリにより示される複数の特徴量データの各々との類似度の分散度合が小さい程、その代表特徴量データを示す代表エントリ(上位ノード)とその下位ノードとのリンク関係に関する調整値を小さい値に決定する。この方法では、下位ノードが示す特徴量データ群の変更に応じて、上記分散度合も変わる。よって、この方法では、調整値は、溢れ調整部24による溢れ調整時に新たに決定され、ノードへのエントリ挿入(特徴量データ追加)時には元の値から更新される。
例えば、閾値決定部22は、上位ノードにより示される代表特徴量データと下位ノードのエントリにより示される複数の特徴量データの各々との類似度の標準偏差をその下位ノードのエントリ数で除算して得られる値を、その代表特徴量データを示す代表エントリ(上位ノード)とその下位ノードとのリンク関係に関する調整値に決定する。ここで、標準偏差を除算するエントリ数には、エントリ閾値が利用されることが望ましい。但し、そのエントリ数には、エントリ閾値の半分以上、エントリ閾値未満の値が利用されてもよい。但し、第二決定方法における具体的な調整値の決定方法は、このような例に制限されない。
このように、第二決定方法では、ノードに新たなエントリを挿入する場合には、その新たなエントリにより示される新たな特徴量データも加えて、上述のように、類似度の上記分散度合が判定され、既に設定されている調整値が更新される。一方で、その新たなエントリの挿入時には、挿入先となるノードは、既に設定されているDS閾値及び調整値から算出されるS閾値に基づいて決定される。よって、エントリ挿入後の調整値の更新により、ノードにより示される特徴量データ群の中に、そのノードが有する上位ノードとのリンク関係に付与されるS閾値の条件を満たさない特徴量データが含まれる場合が生じ得る。このような場合を排除するため、閾値決定部22は、エントリ挿入時には、まずは、仮の調整値を決定し、DS閾値とこの仮の調整値とから仮の類似度閾値を決定する。インデックス生成部21は、エントリ挿入後のノードにより示される特徴量データ群がその仮の類似度閾値の条件を満たすか否かを判定し、この判定結果に基づいて、挿入先となるべきノードを変更する。閾値決定部22は、インデックス生成部21による上記判定結果により挿入先となるべきノードが変更されない場合に、既に設定されている調整値及びS閾値をその仮の調整値及びその仮の類似度閾値に更新する。
また、閾値決定部22がこの第二決定方法を用いる場合には、溢れ調整部24は、元のノード内のエントリの中から、新たな子ノードに含めるエントリを選ぶために、DS閾値を用いる。即ち、溢れ調整部24は、選択された代表エントリに含まれる特徴量データとの類似度が閾値決定部22により決定されたDS閾値以上の特徴量データを含むエントリを選択し、この選択されたエントリを含む下位ノード(子ノード)を生成する。閾値決定部22は、DS閾値を用いてこのように生成された子ノードにより示される特徴量データ群に基づいて、調整値を決定し、先に決定されたDS閾値とこの調整値とからS閾値を算出する。なお、閾値決定部22が上記第一決定方法を用いる場合には、ノードが示す特徴量データ群に依存せず調整値が決定されるため、新たな子ノードに含めえるエントリを選ぶのにS閾値を用いる。
データベース35は、インデックス対象となる特徴量データ群、インデックス生成部21により生成された類似度木の情報、この類似度木に関連する情報(類似度木の生成のために算出された類似度等)を格納する。インデックス対象となるデータ群が、表形式データを形成する或る属性のデータである場合には、データベース35は、その表形式データを格納してもよい。データベース35は、メモリ11に含まれるハードディスク等のような外部メモリ上に実現される。また、類似度木の生成及び検索を高速化するために、データベース35に格納される類似度木の葉ノード以外のノードの情報は、メモリ11に含まれる主記憶にバッファリングされる。
検索部30は、インデックス生成部21により生成される類似度木を用いて、データベース35に格納される特徴量データ群の中から、検索対象データに関し類似度条件に適合する特徴量データを検索する。検索結果のデータは、入出力I/F12を介して表示装置や印刷装置に出力されてもよいし、入出力I/F12を介して可搬型記録媒体に格納されてもよいし、通信ユニット13を介して他のコンピュータに送信されてもよい。
検索部30は、図4に示されるように、条件取得部31、類似度取得部32及び検索処理部33を含む。
条件取得部31は、検索対象の特徴量データ及び類似度条件を取得する。検索対象の特徴量データは、入力画面等に基づいて入力装置をユーザが操作することにより入力された情報であってもよいし、可搬型記録媒体、他のコンピュータ等から入出力I/F12又は通信ユニット13を経由して取得された情報であってもよい。
類似度取得部32は、類似度取得部25と同様である。具体的には、類似度取得部32は、代表特徴量データと条件取得部31により取得された検索対象の特徴量データとの類似度を取得する。検索装置1において、類似度取得部25及び類似度取得部32とは1つの処理部として共有されてもよい。
検索処理部33は、類似度取得部32により取得された類似度と、類似度閾値、又は、条件取得部31により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値を持つエントリ、及び、その類似度閾値を含むエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象(検索結果)から除外する。検索処理部33は、類似度閾値が必要となる度に、閾値決定部22に、対象のエントリに含まれるDS閾値及び調整値からS閾値を算出させる。検索処理部33は、辿り着いたノードに含まれる全エントリをチェックする幅優先探索法を用いてもよいし、同一ノード内の他のエントリよりもリンク先の子ノードのエントリを優先的にチェックする深さ優先探索法を用いてもよい。
〔動作例〕
まず、第一実施形態におけるインデックス生成方法について図5、図6及び図7を用いて説明する。各図に示されるように、第一実施形態におけるインデックス生成方法は、検索装置1のような少なくとも1つのコンピュータにより実行される。例えば、図示される各工程は、検索装置1が有する各処理部により実行される。各工程は、検索装置1が有する上述の各処理部の処理内容と同様であるため、各工程の詳細は、適宜省略される。
図5は、調整値の第一決定方法を用いる場合のインデックス生成処理に関する検索装置1の動作例を示すフローチャートである。図6は、調整値の第二決定方法を用いる場合のインデックス生成処理に関する検索装置1の動作例を示すフローチャートである。ここでは、子ノードへのポインタ及びDS閾値及び調整値が設定された少なくとも1つのエントリを含むルートノードが、既に生成されていると仮定する。また、図5及び図6には示されていないが、インデックス生成処理を開始する前には、検索装置1は、類似度木の生成に関する各種パラメータを既に保持している。パラメータには、エントリ閾値、代表エントリの選択方法、DS閾値の決定方法及び調整値の決定方法が含まれる。図5の例では、パラメータに設定される調整値の決定方法として第一決定方法が選択されており、図6の例では、第二決定方法が選択されている。また、パラメータには、類似度木の階層の深さの閾値が含まれていてもよい。
《調整値の第一決定方法を用いるインデックス生成方法》
最初に、図5を用いて、調整値の第一決定方法を用いる場合のインデックス生成方法を説明する。
検索装置1は、インデックス対象となる特徴量データfiを取得する(S50)。
続いて、検索装置1は、対象ノードをルートノードに設定する(S51)。対象ノードとは、その特徴量データfiを示すエントリの挿入候補となるノードを意味する。このように、検索装置1は、上位ノードから下位ノードへと順にエントリの挿入候補を選んでいく。
検索装置1は、対象ノードに含まれる、子ノードへのポインタを含む各エントリについて、そのエントリに含まれる特徴量データfeと特徴量データfiとの類似度Sをそれぞれ算出し、類似度Sが類似度閾値以上となる特徴量データfeを含むエントリを特定する(S52)。このとき、検索装置1は、各エントリに含まれるDS閾値及び調整値を用いて各類似度閾値をそれぞれ決定する。検索装置1は、対象ノードに、類似度Sが類似度閾値以上となる特徴量データfeを含むエントリが存在する場合(S52;YES)、その特定されたエントリの中で類似度Sが最大となるエントリのポインタが示す子ノードを対象ノードに設定する(S53)。
検索装置1は、対象ノードが葉ノードでない場合(S54;NO)、工程(S52)以降を再度実行する。検索装置1は、対象ノードが葉ノードである場合(S54;YES)、又は、対象ノードに、該当するエントリが存在しない場合(S52;NO)、特徴量データfiを含むエントリをその対象ノードに追加する(S55)。
検索装置1は、エントリが追加された対象ノードのエントリ数が所定エントリ閾値を超えるか否かを判定する(S56)。検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超える場合(S56;YES)、次のように、その対象ノードに含まれるエントリを親ノードと子ノードとに分割する。
検索装置1は、対象ノードのエントリの中から代表エントリを選択する(S57)。ここでの代表エントリの選択方法には、例えば、上述のような2つの選択方法のいずれか1つが利用される。また、代表エントリを選択するエントリの母集団は、対象ノードに含まれる全エントリ(特徴量データfiを含む)であってもよいし、対象ノードに含まれる全エントリの中の下位ノードへのポインタを含まないエントリのみであってもよい。
検索装置1は、選択された代表エントリに設定するためのDS閾値を決定する(S58)。DS閾値の決定方法については上述のとおりである。
更に、検索装置1は、選択された代表エントリに設定するための調整値を決定する(S59)。ここでは、検索装置1は、上述の第一決定方法により調整値を決定する。上述の第一決定方法は、上述のとおりであり、言い換えれば、DS閾値や階層の位置のように固定的に決まる他の値に応じて、調整値を決定する方法である。検索装置1は、DS閾値に応じて調整値を決定してもよいし、分割される子ノードの階層位置に応じて調整値を決定してもよい。
検索装置1は、代表エントリに含まれる特徴量データと、代表エントリを選択した母集団に含まれる代表エントリ以外の各エントリに含まれる各特徴量データとの類似度をそれぞれ算出する(S60)。
続いて、検索装置1は、(S58)で決定されたDS閾値から(S59)で決定された調整値を減算することにより、S閾値を算出し、算出されたS閾値以上の類似度を示す特徴量データを持つエントリを含む子ノードを生成する(S61)。このとき、検索装置1は、対象ノードから、その子ノードに追加されたエントリを削除する。また、代表エントリを選択したエントリの母集団が、対象ノードに含まれる全エントリであり、かつ、選択された代表エントリが既に子ノードへのポインタを持っていた場合には、検索装置1は、新たに子ノードを生成することなく、既に存在する子ノードに、類似度閾値以上の類似度を示す特徴量データを持つエントリを追加してもよい。
検索装置1は、対象ノードの代表エントリに、(S61)で生成された子ノードへのポインタ、(S58)で決定されたDS閾値及び(S59)で決定された調整値を設定する(S62)。検索装置1は、代表エントリには、DS閾値及び調整値に代え、又は、それらと共に、それらから算出されるS閾値を設定してもよい。
検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超えない場合(S56;NO)、又は、(S62)の完了後、特徴量データfiと共に、類似度木データをデータベース35に格納する(S63)。ここで、検索装置1は、類似度木データのうち更新された箇所のデータのみをデータベース35に反映してもよい。また、類似度木データの格納前に、検索装置1は、類似度木の葉ノードのエントリに設定されている特徴量データfiをデータベース35に格納される特徴量データfiへのポインタに置き換える。
《調整値の第二決定方法を用いるインデックス生成方法》
次に、図6を用いて、調整値の第二決定方法を用いる場合のインデックス生成方法を説明する。図6では、図5と同じ内容となる工程には、図5と同じ符号が付されている。
検索装置1は、図5の場合と同様に、(S50)から(S56)を実行する。
検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超える場合(S56;YES)、次のように、その対象ノードに含まれるエントリを親ノードと子ノードとに分割する。検索装置1は、図5の場合と同様に、(S57)及び(S58)を実行する。続いて、検索装置1は、図5で示される(S59)を実行せず、即ち、調整値を決定せず、図5の場合と同様に、(S60)を実行する。
続いて、検索装置1は、(S58)で決定されたDS閾値以上の類似度を示す特徴量データを持つエントリを含む子ノードを生成する(S70)。(S70)は、S閾値ではなく、DS閾値を用いる点においてのみ、図5に示される(S61)と相違する。
次に、検索装置1は、選択された代表エントリに設定するための調整値を決定する(S71)。ここでは、検索装置1は、上述の第二決定方法により調整値を決定する。上述の第二決定方法は、上述のとおりであり、言い換えれば、子ノードにより示されるデータ群に応じて、調整値を決定する方法である。検索装置1は、DS閾値を用いて子ノードに含めるべく選択されたエントリにより示される各特徴量データと、代表特徴量データとの類似度の分散度合に応じて、当該調整値を決定する。
以降、検索装置1は、図5の場合と同様に、(S62)及び(S63)を実行する。
一方、検索装置1は、対象ノードのエントリ数が所定エントリ閾値を超えない場合(S56;NO)、次のように動作する。
検索装置1は、特徴量データfiを含む、対象ノードに含まれる全てのエントリにより示される特徴量データと、代表特徴量データとの類似度の分散度合に応じて、その代表特徴量データを示す代表エントリのための仮の調整値を決定する(S72)。このとき、その代表エントリにはDS閾値及び調整値が既に設定されている。検索装置1は、その代表エントリに既に設定されているDS閾値から当該仮の調整値を減算することにより、仮のS閾値を決定する(S73)。
検索装置1は、特徴量データfiと代表特徴量データとの類似度が当該仮のS閾値以上となるか否かを判定する(S74)。検索装置1は、その類似度が仮のS閾値以上となる場合(S74;YES)、代表エントリに既に設定されている調整値を(S72)で決定された仮の調整値に更新する(S75)。言い換えれば、検索装置1は、代表エントリに既に設定されている調整値をその仮の調整値に置き換える(S75)。
検索装置1は、その類似度が仮のS閾値未満となる場合(S74;NO)、特徴量データfiを含むエントリを対象ノードから削除する(S76)。これは、上位ノードの代表エントリ、及び、その代表エントリとのリンク関係を持つ下位ノードに含まれるエントリが、類似度閾値以上の特徴量データを示すという関係が崩れるからである。これにより、検索装置1は、(S52)以降で、再度、対象ノードを選びなおす。
図7は、データ削除処理に関する検索装置1の動作例を示すフローチャートである。
検索装置1は、削除対象となる特徴量データfd(以降、削除データと表記する)を取得すると、その削除データfdを示すエントリを特定する(S80)。このとき、検索装置1は、葉ノードの各エントリにより示される特徴量データを、そのエントリに含まれるポインタを用いて、データベース35から取得する。削除データfdの特定方法は、図8を用いて後述する類似検索方法と同様でよいため、ここでは説明を省略する。但し、この場合には、類似度条件δは1(一致)に設定される。
検索装置1は、特定されたエントリの中の葉ノードのエントリを削除する(S81)。削除データfdが或るデータ集合の代表に設定されている場合、特定されたエントリの中には中間ノードも含まれる。また、検索装置1は、削除データfdをデータベース35から削除してもよい。
続いて、検索装置1は、削除されたエントリを含む葉ノードへのポインタを含む親ノードのエントリを対象エントリに設定する(S82)。
検索装置1は、この対象エントリを更新する必要があるか否かを判定する(S83)。例えば、対象エントリが削除データfdを含む場合、上述の(S57)で実行される代表エントリの選択方法が子ノードで示される特徴量データ集合の値分布に依存する場合、調整値の第二決定方法が用いられる場合などには、検索装置1は、対象エントリを更新する必要があると判定する(S83;YES)。
一方、代表エントリの選択方法が任意のエントリの選択である場合で、かつ、対象エントリが削除データfdを含まない場合には、検索装置1は、対象エントリを更新する必要がないと判定する(S83;NO)。対象エントリを更新する必要がないと判定すると(S83;NO)、検索装置1は、データ削除処理を終了する。
検索装置1は、対象エントリを更新する必要があると判定すると(S83;YES)、代表エントリを再選択する(S84)。ここでの代表エントリを選択する母集団は、例えば、対象エントリの子ノードに含まれるエントリとされる。但し、当該母集団には、その対象エントリを含むノードの他のエントリが更に加えられてもよい。
検索装置1は、対象エントリに含まれる元の特徴量データを再選択された代表エントリの特徴量データに更新する(S85)。
検索装置1は、更に、その対象エントリに設定されている調整値を更新する必要があるか否かを判定する(S86)。検索装置1は、調整値の第二決定方法が用いられている場合には、調整値を更新する必要があると判定する(S86;YES)。検索装置1は、調整値を更新する必要がある場合(S86;YES)、調整値の第二決定方法によりその対象エントリに設定される調整値を更新する(S87)。具体的には、検索装置1は、再選択された代表エントリにより示される特徴量データと、削除されたエントリを含む葉ノードにより示される特徴量データとの類似度の分散度合に応じて、調整値を決定する(S87)。但し、検索装置1は、調整値の第一決定方法が用いられている場合には、調整値を更新する必要がないと判定する(S86;NO)。
検索装置1は、対象エントリを含むノード及びその対象エントリの現在の子ノードを再構成する必要があるか否かを判定する(S88)。具体的には、検索装置1は、対象エントリの特徴量データと同一ノードの他のエントリの特徴量データとの類似度を取得し、更に、その対象エントリに設定されているDS閾値及び調整値からS閾値を算出する。検索装置1は、取得された各類似度とその算出されたS閾値とを比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、当該類似度閾値以上となる類似度を示すエントリは、子ノードに移動させるべきと判定される。
検索装置1は、対象エントリを含むノードの他のエントリを子ノードへ移動させることで、対象エントリを含むノード及び対象エントリの子ノードを再構成する(S89)。
続いて、検索装置1は、対象エントリを含むノードの親ノードが存在するか否かを判定する(S90)。具体的には、検索装置1は、対象エントリを含むノードへのポインタを含むエントリを持つ中間ノードが存在するか否かを判定する。
検索装置1は、対象エントリを含むノードの親ノードが存在する場合(S90;YES)、現対象エントリを含むノードへのポインタを含む親ノードのエントリを新たな対象エントリに設定する(S91)。検索装置1は、この新たな対象エントリについて、工程(S83)以降を実行する。ここで、検索装置1は、類似度木データのうち更新された箇所のデータをデータベース35に反映する。
次に、第一実施形態における類似検索方法について図8を用いて説明する。図8は、類似検索処理に関する検索装置1の動作例を示すフローチャートである。
検索装置1は、検索対象の特徴量データ(以降、クエリデータfqと表記)及び類似度条件δを取得する(S100)。ここで取得されたデータは、クエリデータfqと類似度条件δ以上の類似度を示す特徴量データをデータベース35から抽出することを要求する。
検索装置1は、対象ノードをルートノードに設定する(S101)。対象ノードとは、クエリデータfqとの比較候補となるノードを意味する。このように、検索装置1は、上位ノードから下位ノードへと順に比較候補を選んでいく。
検索装置1は、対象ノードの各エントリの各特徴量データfeとクエリデータfqとの類似度Sをそれぞれ算出する(S102)。
検索装置1は、対象ノードが葉ノードである場合(S103;YES)、対象ノードに含まれるエントリの中から、類似度条件δ未満の類似度Sを示す特徴量データfeを示すエントリを抽出対象から除外する(S106)。
一方、検索装置1は、対象ノードが葉ノードでない場合(S103;NO)、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の類似度Sを示す特徴量データfeを示すエントリを抽出対象から除外する(S104)。このとき、検索装置1は、各エントリに設定されているDS閾値及び調整値を用いて、各エントリのための類似度閾値をそれぞれ算出する。
検索装置1は、対象ノードに、子ノードを持つエントリが除外されず残っているか否かを判定する(S105)。検索装置1は、子ノードを持つエントリが残っている場合(S105;YES)、現対象ノードの子ノードを新たな対象ノードに設定する(S107)。検索装置1は、この新たな対象ノードについて、(S102)以降を実行する。
検索装置1は、抽出対象に残ったエントリの特徴量データfeを検索結果に設定する(S108)。
上述の類似検索方法は、幅優先探索法を用いた方法であったが、深さ優先探索法が用いられてもよい。深さ優先探索法が用いられる類似検索方法では、対象ノードが中間ノードである場合、(S102)では、対象ノードの1つのエントリの特徴量データfeとクエリデータfqとの類似度Sが算出される。更に、(S104)の実行後、クエリデータfqとの比較を行っていないエントリを有する最上位の中間ノードを新たな対象ノードに設定し、(S102)以降が更に実行される。
本実施形態におけるインデックス生成方法及び類似検索方法は、図5、図6、図7及び図8に示される例に制限されない。例えば、図5及び図6の例では、特徴量データfiが取得される度に、その特徴量データfi及び類似度木データがデータベース35に格納されたが、特徴量データfi及び類似度木データのデータベース35への格納タイミングは、任意である。また、(S60)等の類似度を算出する工程は、毎回、類似度計算をすることなく、過去に算出されている類似度を保持部から取得するようにしてもよい。また、図7の例において、調整値の更新の必要性に加えて、DS閾値の更新の必要性も更に判定されてもよい。
〔第一実施形態の作用及び効果〕
上述のように、第一実施形態では、上位ノードの代表エントリと下位ノードとの間のリンク関係に対してデフォルト類似度閾値及び調整値が決定され、その代表エントリに含められる。そして、そのデフォルト類似度閾値からその調整値を減じて得られる類似度閾値に基づいて、そのリンク関係を有する下位ノードに配置される特徴量データが決定される。これは、類似度に関する或る閾値を調整値で緩和して得られる値を最終的な閾値として利用して、類似度木を構築するという技術的思想の具現化である。これにより、似通ったデータの集合を1つのノードに集まり易くすることができる。第一実施形態によれば、このように似通ったデータの集合を1つのノードに集まり易くすることで、上述の実施形態と同様の効果を得ることができる。
ここで、調整値の第一決定方法では、調整値は、デフォルト類似度閾値が大きい程、小さくなるように決定される。即ち、相対的に小さい値を持つデフォルト類似度閾値は、相対的に大きく緩和され、相対的に大きい値を持つデフォルト類似度閾値は、相対的に小さく緩和される。
一方、調整値の第二決定方法では、調整値は、代表特徴量データと各特徴量データとの類似度群の分散度合が小さい程、小さい値に決定される。類似度群の分散度合が相対的に小さい特徴量データの集合は、相対的に大きい値の類似度閾値により集められた可能性が高い。逆に、類似度群の分散度合が相対的に大きい特徴量データの集合は、相対的に小さい値の類似度閾値により集められた可能性が高い。これは、最終的に利用される類似度閾値が大きい程、調整値が小さく決定されることと等価である。よって、第二決定方法でも第一決定方法と同様の結論となる。このような結論は、上述の実施形態と同様の内容であるため、上述の実施形態と同様の効果を得ることができる。
また、第一実施形態では、各ノードの特徴量データとの類似度に基づいて、上位階層から下位階層へ順番に各ノードがチェックされることにより、取得されたインデックス対象の特徴量データに対応するエントリが適切なノードに挿入される。更に、各ノードのエントリ数に応じて、各ノードが階層的に分割される。従って、第一実施形態によれば、インデックス対象のデータに基づいて、インデックス対象のデータ規模によらず、動的に、類似度木を生成及び更新することができる。一方、背景技術で述べた提案技術には、動的なインデックスの生成及び更新をサポートするものが少ない。R木技術のようにそれをサポートしている既存技術であったとしても、大規模データには対応し難い。
また、第一実施形態では、ノードの溢れ調整時などに代表エントリを選出する方法として、上述のような2つの選択方法が例示された。更に、デフォルト類似度閾値を決定する方法も複数例示された。このような複数の方法により、代表エントリ及びデフォルト類似度閾値が既に存在するエントリを考慮して決定されることで、類似度木のエントリ数のバランスを取りやすくすることができる。
[第二実施形態]
上述の第一実施形態では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる1つの特徴量データを含んでいた。第二実施形態では、代表となる複数の特徴量データが、子ノードへのポインタと共に当該エントリに含まれる。代表となる特徴量データの数の上限は、例えば、子ノードで示される特徴量データの数より小さい値に設定される。以下、第二実施形態における検索装置1について、第一実施形態と異なる内容を中心に説明する。以下の説明では、第一実施形態と同様の内容については適宜省略する。
図9は、第二実施形態におけるインデックスの一部の例を概念的に示す図である。図9に示されるように、第二実施形態では、下位ノードL1へのポインタ(リンク関係R1)を含む上位(中間)ノードL2のエントリE2は、デフォルト類似度閾値DST1及び調整値AD1と、下位ノードL1に含まれる複数エントリE1(n)で示される複数の特徴量データ(f1、f3、f9等)の代表となる複数の特徴量データf8及びf11とを含む。
代表選択部23は、特徴量データの追加時又は削除時に、必要に応じて、或るノードに含まれる複数の特徴量データの中から代表となる複数の特徴量データを選択する。中間ノードには、複数の特徴量データ及び子ノードへのポインタを含むエントリと、子ノードへのポインタを含まず1つの特徴量データを含むエントリとが混在する場合がある。この場合、代表選択部23は、子ノードへのポインタを含まないエントリの中から代表となる複数の特徴量データを選択するようにしてもよい。また、代表選択部23は、その中間ノードに含まれる全エントリの全特徴量データの中から代表となる複数の特徴量データを選択するようにしてもよい。
例えば、代表選択部23は、以下に示す2つの選択方法のいずれか1つを用いて、代表となる複数の特徴量データを選択する。但し、本実施形態は、代表となる複数の特徴量データの選択方法を以下のような方法に制限しない。代表選択部23は、代表となる複数の特徴量データをランダムに選択するようにしてもよい。
第一の選択方法では、代表選択部23は、類似度の値が最大となる特徴量データの組み合わせを代表として選択する。2つの特徴量データが代表として選択される場合、代表選択部23は、類似度の値が最大となる特徴量データのペアを代表として選択する。
第二の選択方法では、代表選択部23は、類似度の値が最小となる特徴量データの組み合わせを代表として選択する。2つの特徴量データが代表として選択される場合、代表選択部23は、類似度の値が最小となる特徴量データのペアを代表として選択する。
閾値決定部22は、第一実施形態で説明された方法に加えて、次のような方法で、DS閾値を決定することができる。閾値決定部22は、複数の代表の特徴量データの中心点となる特徴量データと他の特徴量データとの類似度をDS閾値に決定する。
インデックス生成部21は、新たな特徴量データを類似度木に反映する場合に、当該新たな特徴量データと、下位ノードへのポインタを含む中間ノードのエントリにより示される複数の特徴量データとの各類似度をそれぞれ取得し、各類似度と類似度閾値とをそれぞれ比較し、各比較結果に基づいて、当該新たな特徴量データを含むエントリの挿入先をその中間ノード又はその下位ノードに決定する。具体的には、インデックス生成部21は、全ての類似度が類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、いずれか1つの類似度でも類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定する。但し、インデックス生成部21は、いずれか1つの類似度でも類似度閾値以上であれば、当該新たな特徴量データを含むエントリの挿入先を下位ノードに決定し、全ての類似度が類似度閾値未満であれば、当該対象の特徴量データを含むエントリの挿入先を中間ノードに決定するようにしてもよい。
検索処理部33は、検索対象の特徴量データとエントリに含まれる複数の特徴量データとに関し取得される各類似度と、類似度閾値、又は、条件取得部31により取得された類似度条件とを比較し、この比較結果に基づいて、その類似度閾値に対応するDS閾値及び調整値を含むエントリ、及び、そのエントリとリンクされる子ノード以下の下位ノードのエントリを、検索対象の特徴量データに関する類似度条件に適合する抽出対象(検索結果)から除外する。このとき、全ての類似度が、類似度閾値と類似度条件との小さい方の値未満であれば、その類似度閾値に対応するDS閾値及び調整値を含むエントリは抽出対象から除外される。
〔動作例〕
以下、第二実施形態におけるインデックス生成方法について図5、図6及び図7を用いて説明する。第二実施形態では、(S52)、(S53)、(S57)、(S60)、(S61)、(S62)及び(S70)において、複数の特徴量データが処理対象とされる点において、第一実施形態と異なる。
具体的には、(S52)では、検索装置1は、対象ノードに含まれる各エントリについて、そのエントリに含まれる複数の特徴量データfeと特徴量データfiとの各類似度Sをそれぞれ算出し、類似度閾値以上の複数の類似度Sを示す複数の特徴量データfeを示すエントリを特定する。但し、検索装置1は、類似度閾値以上の類似度Sを示す1つの特徴量データを含む複数の特徴量データfeを示すエントリが特定されてもよい。(S53)では、検索装置1は、その特定されたエントリの中で類似度Sが最大となるエントリのポインタが示す子ノードを対象ノードに設定する。
具体的には、(S57)では、検索装置1は、対象ノードのエントリの中から複数の特徴量データを代表として選択する。(S60)では、検索装置1は、(S57)で代表として選択された複数の特徴量データと、それら代表を選択した母集団に含まれるそれら代表以外の各特徴量データとの類似度をそれぞれ算出する。(S61)及び(S70)において、検索装置1は、代表として選択された複数の特徴量データとの類似度が類似度閾値以上を示す特徴量データを持つエントリを含む子ノードを生成する。但し、検索装置1は、代表として選択された複数の特徴量データの中の1つとの類似度が類似度閾値以上を示す特徴量データを持つエントリを子ノードに含めてもよい。
(S62)では、検索装置1は、代表として選択された複数の特徴量データを含む1つのエントリを生成し、それら代表を含んでいたエントリを削除し、その生成されたエントリに、(S61)及び(S70)で生成された子ノードへのポインタ、DS閾値及び調整値を設定する。
第二実施形態では、(S84)、(S85)及び(S88)において、複数の特徴量データが処理対象とされる点において、第一実施形態と異なる。
(S84)では、検索装置1は、代表となる複数の特徴量データを再選択する。
(S85)では、検索装置1は、再選択された複数の特徴量データを対象エントリに設定する。
(S88)では、検索装置1は、対象エントリの複数の特徴量データと同一ノードの他のエントリの特徴量データとの各類似度を、対象エントリに設定されるDS閾値及び調整値から算出される類似度閾値とそれぞれ比較することにより、対象ノードに含まれる他のエントリを現在の子ノードに移動させるか否かを判定する。例えば、対象エントリの複数の特徴量データと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させるべきと判定される。但し、対象エントリの複数の特徴量データの中の1つと当該類似度閾値以上となる類似度を示す特徴量データを含むエントリは、子ノードに移動させると判定されてもよい。
次に、第二実施形態における類似検索方法について図8を用いて説明する。第二実施形態では、(S102)及び(S104)において、複数の特徴量データが処理対象とされる点において、第一実施形態と異なる。
(S102)では、検索装置1は、対象ノードが中間ノードである場合、対象ノードの各エントリの複数の特徴量データfeとクエリデータfqとの各類似度Sをそれぞれ算出する。(S104)では、検索装置1は、対象ノードに含まれるエントリの中から、類似度閾値と類似度条件δとの小さい方の値未満の複数の類似度Sを示す複数の特徴量データfeを示すエントリを抽出対象から除外する。
〔第二実施形態の作用及び効果〕
第二実施形態では、子ノードへのポインタを含む中間ノードのエントリは、複数の特徴量データを示す。即ち、第二実施形態では、子ノードで示される特徴量データ集合の代表となる複数の特徴量データが選出され、当該複数の特徴量データが親ノードのエントリに設定される。そして、子ノードで示される特徴量データの集合は、親ノードのエントリに含まれる全ての特徴量データ又はいずれか1つの特徴量データとの類似度がその類似度閾値以上を示す。
このように、第二実施形態によれば、親ノードのエントリで示される複数の特徴量データが用いられることにより、子ノードで示される特徴量データ集合との類似度が判定されるため、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を、第一実施形態に比べより厳密に定義することができる。
また、類似度の値が最大となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データの分散が大きい場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。一方、類似度の値が最小となる特徴量データの組み合わせを示す複数エントリを複数代表エントリとして選択する方法によれば、当該複数エントリで示される複数の特徴量データが密集する場合でも、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができる。
このように、親ノードのエントリにより、子ノードで示されるデータ集合の類似度範囲を厳密に定義することができるため、第二実施形態によれば、類似度木のバランスを取り易くなり、ひいては、検索効率を向上させることができる。
[第三実施形態]
第三実施形態では、各ノードのエントリ容量を示すエントリ閾値がノード毎に動的に決定される。以下に説明される第三実施形態は、上述の第一実施形態にこの新たな特徴が追加された形態である。以下、第三実施形態における検索装置1について、上述の各実施形態と異なる内容を中心に説明する。以下の説明では、上述の各実施形態と同様の内容については適宜省略する。
図10は、第三実施形態における検索装置1の処理構成例を概念的に示す図である。図10に示されるように、第三実施形態における検索装置1は、上述の各実施形態の構成に加えて、エントリ調整部40を更に有する。エントリ調整部40は、他の処理部と同様に実現される。
データベース35は、類似度木に関連する情報として、各ノードについてエントリ閾値をそれぞれ更に格納する。
エントリ調整部40は、複数のノードの各々について、ノード内の最大エントリ数を示すエントリ閾値をそれぞれ決定する。具体的には、エントリ調整部40は、インデックス対象データを示すエントリの挿入先がインデックス生成部21により或るノードに決定された場合に、そのノードに含まれる複数エントリにより示される複数の特徴量データ及び当該インデックス対象データの各々と、当該複数エントリの代表エントリ(上位ノード)により示される代表特徴量データとの類似度群の分布状態に基づいて、そのノードに関するエントリ閾値を変更するか否かを判定する。類似度群の分布状態は、例えば、分布の均一度、分散度合、外れ値の有無等により表される。例えば、エントリ調整部40は、当該類似度群に対して外れ値検出を行い、外れ値が検出されない場合に、そのエントリ閾値を増加させ、外れ値が検出された場合には、そのエントリ閾値を変更しない。外れ値検出手法には、統計、距離のような様々な指標に基づく様々な周知の手法が存在するため、エントリ調整部40でも周知の外れ値検出手法が利用されればよい。
このようにして、エントリ調整部40は、近い特徴量データができる限り1つのノードで示されるように、各ノードのエントリ容量を柔軟に変更する。エントリ調整部40は、ノードが生成された時点では、エントリ閾値を任意の初期値に決定し、そのエントリ閾値を増加させてもよい。
エントリ調整部40は、エントリの挿入先として決定されたノードにそのエントリを挿入した場合に、そのノード内のエントリ数がそのノードのエントリ閾値を超えるか否かを判定し、エントリ数がそのエントリ閾値を超える場合に、上記判定を実行することが望ましい。上記判定は、類似度群の分布状態に基づくため、或る程度のデータ数を要するからである。また、上記判定の実行を溢れ調整時のみに制限できるため、全体処理を高速化できるからである。
〔動作例〕
以下、第三実施形態におけるインデックス生成方法について図11を用いて説明する。図11は、調整値の第一決定方法を用いる場合のインデックス生成処理に関する第三実施形態の検索装置1の動作例を示すフローチャートである。図11では、図5と同じ内容となる工程には、図5と同じ符号が付されている。
検索装置1は、図5の場合と同様に、(S50)から(S56)を実行する。但し、(S56)では、対象ノードに関しデータベース35に格納されるエントリ閾値が利用される。検索装置1は、対象ノードのエントリ数がその対象ノードのエントリ閾値を超える場合(S56;YES)、対象ノードのエントリにより示される特徴量データ(fiを含む)とそれらの代表特徴量データとの類似度群に対して外れ値検出を行う(S121)。
検索装置1は、(S121)で実行される外れ値検出により外れ値が検出された場合には(S122;YES)、図5と同様に、(S57)以降を実行し、その対象ノードに含まれるエントリを親ノードと子ノードとに分割する。一方、検索装置1は、外れ値が検出されなかった場合には(S122;NO)、対象ノードのエントリ閾値を増加させる(S123)。エントリ閾値は1インクリメントされる。検索装置1は、その対象ノードに関しデータベース35に格納されるエントリ閾値をその増加されたエントリ閾値に更新する(S63)。
調整値の第二決定方法を用いる場合のインデックス生成方法については、図示されていないが、図11において図5から追加された工程が同趣旨で図6に追加されればよい。即ち、調整値の第二決定方法を用いる場合、図6の(S56)と(S57)との間に、図11で示される(S121)、(S122)及び(S123)が追加される。
データ削除時については、図7と同様に、検索装置1が動作すればよい。しかし、検索装置1は、図示されていないが、削除されたエントリを含む葉ノードのエントリ閾値に関し更新の要否を判定するようにしてもよい。この場合、検索装置1は、削除されたエントリを含む葉ノードのエントリ閾値が初期値から増加されたものであるか否かを判定し、そのエントリ閾値が初期値よりも大きい場合には、そのエントリ閾値を1減少させる。
〔第三実施形態における作用及び効果〕
第三実施形態では、ノード毎に最大エントリ数を示すエントリ閾値がそれぞれデータベース35に格納される。そして、エントリの挿入先に決定されたノードのエントリ数がそのエントリの挿入によりエントリ閾値を超える場合に、そのノードのエントリ閾値を変更するか否かが判定される。具体的には、挿入先のノードで示される複数の特徴量データ及び挿入対象の特徴量データの各々と、代表特徴量データとの類似度群の分布状態が均一性(低分散)を示し外れ値が存在しないような状態である場合に、そのノードに関するエントリ閾値が増加される。
従って、第三実施形態によれば、類似する特徴量データどうしがノードのエントリ数の制限(エントリ閾値)により異なるノードに配置されるのを避けることができ、1つのノードに配置され易くなる。結果、第一実施形態で述べたとおり、類似検索の再現率を向上させることができ、かつ、類似度計算対象とするエントリの数を限定し易くなるため、類似検索の処理速度を向上させることができる。更に、似通ったデータを1つのノードに集まり易くすることで、ノード数が不必要に増えることを抑えることができる。これにより、ノードへのアクセス数を減少させることができ、ひいては、処理速度を向上させることができる。
以下に実施例を挙げ、上述の各実施形態を更に詳細に説明する。本発明は以下の実施例から何ら限定を受けない。
実施例1は、上述の第三実施形態に対応する。以下、実施例1における検索装置1の動作及びインデックス生成方法について、図11に沿って説明する。
図12から図22は、実施例1におけるインデックス生成過程を概念的に示す図である。実施例1では、図12に示されるように、子ノードへのポインタ、DS閾値(DST)、調整値(AD)及び特徴量データf1が設定されたエントリを持つルートノードが既に生成されていると仮定する。また、ノードN1のエントリ閾値(ET)が3に設定されていると仮定する。また、以降、特徴量データを単にデータと表記する。
検索装置1は、インデックス対象となるデータf5を取得する(S50)。検索装置1は、データf1とデータf5との類似度(0.8)を取得し、更に、データf1を含むエントリに設定されているDS閾値(DST=0.25)及び調整値(AD=0.15)をデータベース35から取得する。検索装置1は、DS閾値及び調整値から類似度閾値(T=0.1)を算出し、上記類似度(0.8)がその類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。ここで、ノードN1は葉ノードであるため(S54;YES)、検索装置1は、データf5を含むエントリを対象ノードN1に追加する(S55)。
検索装置1は、対象ノードのエントリ数(4)が対象ノードN1のエントリ閾値(ET=3)を超えているため(S56;YES)、外れ値検出を行う。具体的には、検索装置1は、代表特徴量データf1と、対象ノードN1に含まれる特徴量データf2、f3、f4及びf5の各々との類似度群(0.6、0.8、0.9、0.8)に対して外れ値検出を行う。検索装置1は、外れ値が検出されない場合には(S122;NO)、対象ノードN1のエントリ閾値(ET)を1増加させて(S123)、処理を終える。結果、対象ノードN1のエントリ閾値(ET=4)がデータベース35に格納される(S63)。
検索装置1は、外れ値が検出された場合(S122;YES)、溢れ調整を行う。溢れ調整において、検索装置1は、対象ノードN1の代表エントリを選択する(S57)。図13の例によれば、データf2を含むエントリが代表エントリに選択される。続いて、検索装置1は、DS閾値(DST=0.88)を決定し(S58)、更に、調整値(AD=0.08)を決定する(S59)。ここで決定されたDS閾値(0.88)は、階層位置に応じて、ルートノードのエントリに設定されているDS閾値(DST=0.25)よりも大きな値に決定されている。また、調整値(0.08)については、DS閾値の大きさに応じて、ルートノードの調整値(0.15)よりも小さい値に決定されている。
検索装置1は、代表エントリのデータf2と、他の各エントリのデータf3、f4及びf5の各々との類似度をそれぞれ算出する(S60)。図13の例に示されるような各類似度がそれぞれ算出される。更に、検索装置1は、上述のように決定されたDS閾値(0.88)から調整値(0.08)を減算することにより、代表エントリに対応する類似度閾値(0.8)を算出する。これにより、検索装置1は、図14に示されるように、類似度閾値(0.8)以上の類似度を示すデータf3及びf4を持つ2つのエントリを含む子ノードN2を生成する(S61)。このとき、検索装置1は、生成された子ノードN2のエントリ閾値を初期値(3)に決定し、データベース35に格納する。更に、検索装置1は、対象ノードN1の代表エントリに、子ノードN2へのポインタ、DS閾値(0.88)及び調整値(0.08)を設定する(S62)。検索装置1は、データf5をデータベース35に格納すると共に、更新された類似度木データをデータベース35に格納する(S63)。
続いて、図14に示されるように、検索装置1は、新たなデータf6を取得する(S50)。検索装置1は、データf1とデータf6との類似度(0.9)が、DS閾値及び調整値から算出される類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。ここで、ノードN1は中間ノードであるため(S54;NO)、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータf2とデータf6との類似度を算出する。図14の例では、データf2とデータf6との類似度は0.85であるため、検索装置1は、類似度閾値(0.8)以上の類似度を示すデータf2を含むエントリを特定する(S52)。
検索装置1は、その特定されたエントリのポインタが示す子ノードN2を対象ノードに設定し(S53)、図15に示されるように、データf6を含むエントリをその対象ノードN2に追加する(S55)。ここで、対象ノードN2のエントリ数(3)は、対象ノードN2のエントリ閾値(3)を超えていないため(S56;NO)、検索装置1は、データf6及び更新された類似度木データをデータベース35に格納する(S63)。
続いて、図16に示される場面について説明する。ここでは、データf7がノードN1に追加された状態で、検索装置1が新たなデータf8を取得する(S50)。検索装置1は、データf1とデータf8との類似度(0.7)が類似度閾値(0.1)より大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。
ここで、ノードN1は中間ノードであるため(S54;NO)、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含むエントリについて、そのエントリに含まれるデータf2とデータf8との類似度を算出する。図16の例では、データf2とデータf8との類似度は0.75であり、類似度閾値(0.8)以上の類似度を示すデータを含むエントリが対象ノードN1に存在しない。検索装置1は、該当するエントリが対象ノードN1に存在しないため(S52;NO)、図16に示されるように、データf8を含むエントリを対象ノードN1に追加する(S55)。
検索装置1は、対象ノードN1のエントリ数(4)が対象ノードN1のエントリ閾値(3)を超えているため(S56;YES)、外れ値検出を行う。具体的には、検索装置1は、代表特徴量データf1と、対象ノードN1に含まれる特徴量データf2、f5、f7及びf8の各々との類似度群(0.6、0.8、0.9、0.7)に対して外れ値検出を行う。検索装置1は、外れ値が検出されない場合には(S122;NO)、対象ノードN1のエントリ閾値(ET)を1増加させて(S123)、処理を終える。結果、対象ノードN1のエントリ閾値(ET=4)がデータベース35に格納される(S63)。
検索装置1は、外れ値が検出された場合(S122;YES)、溢れ調整を行う。図16の例では、検索装置1は、対象ノードN1に含まれる全エントリを母集団として、その母集団の中から代表エントリを選択する(S57)。図16の例によれば、データf5を含むエントリが代表エントリに選択される。検索装置1は、新たなDS閾値及び新たな調整値を決定する(S58、S59)。ここでは、新たなDS閾値(DST=0.88)及び新たな調整値(AD=0.08)が決定される。
検索装置1は、代表エントリのデータf5と、他の各エントリのデータf2、f7及びf8の各々との類似度をそれぞれ算出する(S60)。図17の例に示されるような各類似度がそれぞれ算出される。更に、検索装置1は、上述のように決定されたDS閾値(0.88)から調整値(0.08)を減算することにより、代表エントリに対応する類似度閾値(0.8)を算出する。これにより、検索装置1は、図17及び図18に示されるように、類似度閾値(0.8)以上の類似度を示すデータf8を持つ1つのエントリを含む子ノードN3を生成する(S61)。このとき、検索装置1は、生成された子ノードN3のエントリ閾値を初期値(3)に決定し、データベース35に格納する。検索装置1は、対象ノードN1におけるデータf5を含む代表エントリに、子ノードN3へのポインタ、DS閾値(0.88)及び調整値(0.08)を設定する(S62)。このとき、検索装置1は、ノードN2へのポインタを含むエントリについてノードN1に残ることを決めたため、そのエントリに含まれるそのポインタやDS閾値及び調整値をそのままとする。これにより、更新された類似度木は、図18に示されるようになる。検索装置1は、データf8をデータベース35に格納すると共に、更新された類似度木データをデータベース35に格納する(S63)。
図19及び図20は、図17及び図18に示される例とは異なるインデックス生成例を示す図である。図17の例では、代表エントリがデータf5を含むエントリに決められ、DS閾値が0.88に、調整値が0.08に決定された。図19は、DS閾値が0.86に、調整値が0.11に決められる例を示す。ここで決定されたDS閾値(0.86)は、階層位置に応じて、ルートノードのエントリに設定されているDS閾値(DST=0.25)よりも大きな値に決定されている。また、調整値(0.11)については、DS閾値の大きさに応じて、ルートノードの調整値(0.15)よりも小さく、かつ、データf2が含まれるエントリの調整値(0.08)よりも大きい値に決定されている。この場合、図19の例に示されるような各類似度がそれぞれ算出される。
この場合、検索装置1は、DS閾値(0.86)から調整値(0.11)を減算することにより、類似度閾値(0.75)を算出する。検索装置1は、この類似度閾値(0.75)以上の類似度を示すデータf2及びf8を持つ2つのエントリを子ノードへ移すことを決める。しかし、この場合、データf2を含むエントリは、子ノードN2とリンクされている。そこで、検索装置1は、図20に示されるように、データf2を含むエントリに設定されている、子ノードN2へのポインタ、DS閾値(0.88)及び調整値(0.08)をそのまま維持しつつ、データf2及びf8を含む2つのエントリを含む子ノードN4を生成する(S61)。そして、検索装置1は、親ノードとなるノードN1から、データf2及びf8を含む2つのエントリを削除する。更に、検索装置1は、対象ノードN1におけるデータf5を含む代表エントリに、子ノードN4へのポインタ、DS閾値(0.86)及び調整値(0.11)を設定する(S62)。結果、更新された類似度木は、図20に示されるようになる。図20に示されるように、既に設定されているリンク関係を維持することで、ノードの溢れ調整を簡易処理で実現することができる。
図21は、図20に示される例とは異なるインデックス生成例を示す図である。検索装置1は、ノードの溢れ調整において、既に子ノードとリンクされているエントリを子ノードへ移すことを決めた場合、図21に示されるように、既に設定されているリンク関係を解除するようにしてもよい。この場合、検索装置1は、図21に示されるように、データf2及びf8を含む2つのエントリと共に、子ノードN2に含まれる3つのエントリ(データf3、f4及びf6を含む)を含む子ノードN4を生成し(S61)、親ノードとなるノードN1から、データf2及びf8を含む2つのエントリを削除する。
図19、図20及び図21の例において、ノードN1の溢れ調整時に、代表エントリに含まれるデータf5と、ノードN2に含まれていたデータf3、f4及びf6の各々との類似度は、計算されなくてもよい。これは、上述の規則に基づいている。即ち、データf2は、データf3、f4及びf6の各々と類似度閾値(0.88−0.08=0.8)以上の類似度を示す代表データであり、かつ、代表データf2とデータf5とが類似度閾値(0.86−0.11=0.75)以上の類似度を示す場合、代表データf2のデータ集合(f3、f4及びf6)とデータf5とについても類似度閾値(0.86−0.11=0.75)以上の類似度を示す可能性が高いからである。
図22は、図18に示される類似度木が既に生成されている状態で、新たなデータf9が取得された場合のインデックス生成過程を概念的に示す図である。この場合、検索装置1は、対象ノードN1に含まれる、子ノードへのポインタを含む2つのエントリについて、そのエントリに含まれるデータf2及びf5と、データf9との各類似度をそれぞれ算出する。図22の例では、データf2とデータf9との類似度は0.85であり、その類似度がデータf2のエントリの類似度閾値(0.88−0.08=0.8)より大きい。更に、データf5とデータf9との類似度は0.86であり、その類似度がデータf5のエントリの類似度閾値(0.88−0.08=0.8)より大きい。即ち、(S52)に該当するエントリが複数存在する(S52;YES)。
この場合、検索装置1は、(S52)の条件を満たすエントリであって、かつ、データf9との類似度が最大となるエントリ、即ち、データf5を含むエントリを特定する。検索装置1は、データf5を含むエントリのポインタが示す子ノードN3を対象ノードに設定する(S53)。検索装置1は、データf9を含むエントリを対象ノードN3に追加する(S55)。
実施例2は、上述の第二実施形態に対応する。以下、実施例2における検索装置1の動作及びインデックス生成方法について、図5に沿って説明する。実施例2では、子ノードへのポインタを含むエントリが、子ノードで示される特徴量データ集合の代表となる2つの特徴量データを含む例が示される。また、子ノードへのポインタを含むエントリの2つの特徴量データとの各類似度がそれぞれ類似度閾値以上となるデータが、その子ノードへの追加対象とされる例が示される。
図23及び図24は、実施例2におけるインデックス生成過程を概念的に示す図である。図23に示されるように、子ノードへのポインタ、DS閾値(0.35)及び調整値(0.1)、並びに、データf1及びf2が設定されたエントリを持つルートノードが既に生成されており、ノードN1には、データf3、f4及びf5を含む3つのエントリが設定されている。
この状態で、検索装置1は、データf6を取得する(S50)。検索装置1は、データf1及びf2の各々とデータf6との各類似度(0.9、0.85)が類似度閾値(0.35−0.1=0.25)よりそれぞれ大きいため、ルートノードの子ノードであるノードN1を対象ノードに設定する(S53)。ここで、ノードN1は葉ノードであるため(S54;YES)、検索装置1は、データf6を含むエントリを対象ノードN1に追加する(S55)。
検索装置1は、対象ノードN1のエントリ数(4)が対象ノードN1のエントリ閾値(3)を超えているため(S56;YES)、外れ値検出を行う。具体的には、検索装置1は、代表特徴量データf1と対象ノードN1に含まれる特徴量データf3、f4、f5及びf6の各々との類似度群(0.8、0.9、0.8、0.9)、及び、代表特徴量データf2と対象ノードN1に含まれる特徴量データf3、f4、f5及びf6の各々との類似度群(0.85、0.87、0.75、0.85)に対して外れ値検出を行う。検索装置1は、外れ値が検出されない場合には(S122;NO)、対象ノードN1のエントリ閾値(ET)を1増加させて(S123)、処理を終える。結果、対象ノードN1のエントリ閾値(ET=4)がデータベース35に格納される(S63)。
検索装置1は、外れ値が検出された場合(S122;YES)、溢れ調整を行う。溢れ調整において、検索装置1は、図23に示されるように、対象ノードN1に含まれる全エントリの全データの中から2つのデータを代表として選択する(S57)。ここでは、上述の第一の選択方法が用いられることにより、検索装置1は、類似度の値が最大となる2つのデータを代表として選択する。図23の例では、データf3及びデータf4が代表に選択される。続いて、検索装置1は、新たなDS閾値(0.68)及び新たな調整値(0.08)を決定する(S58、S59)。
検索装置1は、代表として選択されたデータf3及びf4の各々と、他のエントリのデータf5及びf6の各々との類似度をそれぞれ算出する(S60)。ここでは、図24の例に示されるような各類似度がそれぞれ算出される。更に、検索装置1は、DS閾値(0.68)から調整値(0.08)を減算することにより、類似度閾値(0.6)を算出する。これにより、検索装置1は、図24に示されるように、データf3及びf4の各々と類似度閾値(0.6)以上の類似度を示すデータf5を持つ1つのエントリを含む子ノードN2を生成する(S61)。図24の例では、データf6とデータf4との類似度(0.6)は、類似度閾値(0.6)以上となるが、データf6とデータf3との類似度(0.5)が類似度閾値(0.6)未満となるため、データf6は、ノードN1に残される。
検索装置1は、対象ノードN1におけるデータf3及びf4を含む1つのエントリを生成し、そのエントリに、子ノードN2へのポインタ、DS閾値(0.68)及び調整値(0.08)を設定する(S62)。これにより、更新された類似度木は、図24に示されるようになる。
[変形例]
上述の各実施形態及び各実施例では、代表となる特徴量データを示すエントリは、親ノードのみに含まれるが、親ノードと子ノードとの両方にそれぞれ含まれていてもよい。
また、上述の各実施形態では、検索装置1は、1つの装置(コンピュータ)として実現されたが、複数の装置として実現されてもよい。上述の各実施形態は、例えば、類似度木を生成するインデックス生成装置と、類似検索を行う検索装置とから構成されてもよい。この場合、インデックス生成装置は、対象取得部20、インデックス生成部21、閾値決定部22、類似度取得部25及びエントリ調整部40を含み、検索装置は、検索部30及びデータベース35を含む。更に、各実施形態は、インデックス生成装置、検索装置及びデータベース装置から構成されてもよい。
また、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
上記の各実施形態及び各変形例の一部又は全部は、以下のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
1. インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成装置において、
データ間の類似度を用いて、下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成するインデックス生成部と、
上位ノードと下位ノードとの各リンク関係に関し、デフォルト類似度閾値及び調整値をそれぞれ決定し、該デフォルト類似度閾値から該調整値の減算により該各リンク関係に付与される各類似度閾値をそれぞれ決定する閾値決定部と、
を備えるインデックス生成装置。
2. 前記閾値決定部は、前記デフォルト類似度閾値が大きい程、小さくなるように前記調整値を決定する、
1.に記載のインデックス生成装置。
3. 前記閾値決定部は、前記デフォルト類似度閾値を階層が下がる程大きい値に設定し、前記調整値を階層が下がる程小さい値に設定する、
1.又は2.に記載のインデックス生成装置。
4. 前記閾値決定部は、前記上位ノードにより示される前記代表データと前記下位ノードのエントリにより示される複数データの各々との類似度の分散度合が小さい程、前記リンク関係に関する前記調整値を小さい値に決定する、
1.に記載のインデックス生成装置。
5. 前記閾値決定部は、前記上位ノードにより示される前記代表データと前記下位ノードのエントリにより示される複数データの各々との類似度の標準偏差を該下位ノードのエントリ数で除算して得られる値を、前記リンク関係に関する前記調整値に決定する、
4.に記載のインデックス生成装置。
6. インデックス対象データを取得する対象取得部と、
前記上位ノードのエントリにより示される前記代表データと前記対象取得部により取得されるインデックス対象データとの類似度を取得する類似度取得部と、
を更に備え、
前記インデックス生成部は、前記類似度取得部により取得される類似度と、前記デフォルト類似度閾値及び前記調整値から算出される類似度閾値とを比較し、該比較結果に基づいて、該インデックス対象データを示す新たなエントリの挿入先を前記上位ノード又は前記下位ノードに決定し、
前記インデックス生成部は、
前記新たなエントリの挿入先として決定された対象ノードに含まれるエントリ及び前記新たなエントリを含む対象エントリ集合の中から、代表エントリを選択する代表選択部と、
前記対象エントリ集合のエントリ数がエントリ閾値を超える場合に、前記選択された代表エントリを除く前記対象エントリ集合の中から、前記選択された代表エントリにより示されるデータとの類似度が前記閾値決定部により決定される新たなデフォルト類似度閾値又は新たな類似度閾値以上のデータを示すエントリを選択し、該選択されたエントリを含む下位ノードを生成し、前記対象ノードの前記選択された代表エントリに該下位ノードへのリンク関係を設定し、該リンク関係に新たなデフォルト類似度閾値及び新たな調整値を付与する溢れ調整部と、
を含む、
1.から5.のいずれか1つに記載のインデックス生成装置。
7. 1.から6.のいずれか1つに記載のインデックス生成装置により生成される前記インデックスを用いる検索装置において、
検索対象データ及び類似度条件を取得する条件取得部と、
前記上位ノードのエントリにより示される代表データと前記検索対象データとの類似度を取得する類似度取得部と、
前記類似度取得部により取得される類似度と、前記代表データを示すエントリの前記リンク関係に関し決定された前記デフォルト類似度閾値及び前記調整値から算出された類似度閾値又は前記類似度条件とを比較し、該比較結果に基づいて、前記上位ノードに含まれる前記少なくとも1つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する検索処理部と、
を備える検索装置。
8. インデックス対象データを取得する対象取得部と、
前記複数のノードの各々について、ノード内の最大エントリ数を示すエントリ閾値をそれぞれ決定するエントリ調整部と、
を更に備え、
前記エントリ調整部は、前記インデックス生成部により前記インデックス対象データを示すエントリの挿入先が前記下位ノードに決定された場合に、前記下位ノードに含まれる複数エントリにより示される複数データ及び前記インデックス対象データの各々と前記代表データとの類似度群の分布状態に基づいて、前記下位ノードに関する前記エントリ閾値を変更するか否かを判定する、
1.から6.のいずれか1つに記載のインデックス生成装置。
9. 前記エントリ調整部は、前記インデックス対象データを示すエントリが前記下位ノードに挿入された場合に、前記下位ノード内のエントリ数が前記エントリ閾値を超えるか否かを判定し、該エントリ数が前記エントリ閾値を超える場合に、前記複数データ及び前記インデックス対象データの各々と前記代表データとの類似度に対して外れ値検出を行い、外れ値が検出されない場合に、前記エントリ閾値を増加させ、外れ値が検出された場合には、前記エントリ閾値を変更しない、
8.に記載のインデックス生成装置。
10. インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成方法において、
下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成し、
上位ノードと下位ノードとの各リンク関係に関し、デフォルト類似度閾値及び調整値をそれぞれ決定し、
前記デフォルト類似度閾値から前記調整値の減算により、前記各リンク関係に付与される各類似度閾値をそれぞれ決定する、
ことを含むインデックス生成方法。
11. 前記調整値は、前記デフォルト類似度閾値が大きい程、小さくなるように決定される、
10.に記載のインデックス生成方法。
12. 前記デフォルト類似度閾値は、階層が下がる程大きい値に決定され、
前記調整値は、階層が下がる程小さい値に決定される、
10.又は11.に記載のインデックス生成方法。
13. 前記上位ノードにより示される前記代表データと前記下位ノードのエントリにより示される複数データの各々との類似度の分散度合が小さい程、前記リンク関係に関する前記調整値は小さい値に決定される、
10.に記載のインデックス生成方法。
14. 前記リンク関係に関する前記調整値は、前記上位ノードにより示される前記代表データと前記下位ノードのエントリにより示される複数データの各々との類似度の標準偏差を該下位ノードのエントリ数で除算して得られる値に決定される、
13.に記載のインデックス生成方法。
15. インデックス対象データを取得し、
前記上位ノードのエントリにより示される前記代表データと前記取得されたインデックス対象データとの類似度を取得し、
前記取得された類似度と、前記デフォルト類似度閾値及び前記調整値から算出される類似度閾値とを比較し、
前記比較結果に基づいて、該インデックス対象データを示す新たなエントリの挿入先を前記上位ノード又は前記下位ノードに決定し、
前記新たなエントリの挿入先として決定された対象ノードに含まれるエントリ及び前記新たなエントリを含む対象エントリ集合の中から、代表エントリを選択し、
前記対象エントリ集合のエントリ数がエントリ閾値を超える場合に、前記選択された代表エントリを除く前記対象エントリ集合の中から、前記選択された代表エントリにより示されるデータとの類似度が新たなデフォルト類似度閾値又は新たな類似度閾値以上のデータを示すエントリを選択し、
前記選択されたエントリを含む下位ノードを生成し、
前記対象ノードの前記選択された代表エントリに前記下位ノードへのリンク関係を設定し、
前記リンク関係に新たな類似度閾値を付与する、
ことを更に含む、
10.から14.のいずれか1つに記載のインデックス生成方法。
16. 10.から15.のいずれか1つに記載のインデックス生成方法により生成される前記インデックスを用いる検索方法において、
検索対象データ及び類似度条件を取得し、
前記上位ノードのエントリにより示される代表データと前記検索対象データとの類似度を取得し、
前記取得された類似度と、前記代表データを示すエントリの前記リンク関係に関し決定された前記デフォルト類似度閾値及び前記調整値から算出された類似度閾値又は前記類似度条件とを比較し、
前記比較結果に基づいて、前記上位ノードに含まれる前記少なくとも1つの代表データを示すエントリ、及び、該エントリとリンク関係を持つ前記下位ノード以下の下位ノードのエントリを、前記検索対象データに関し前記類似度条件に適合する抽出対象から除外する、
ことを含む検索方法。
17. インデックス対象データを取得し、
前記複数のノードの各々について、ノード内の最大エントリ数を示すエントリ閾値をそれぞれ決定する、
ことを更に含み、
前記エントリ閾値の決定は、前記インデックス対象データを示すエントリの挿入先が前記下位ノードに決定された場合に、前記下位ノードに含まれる複数エントリにより示される複数データ及び前記インデックス対象データの各々と前記代表データとの類似度群の分布状態に基づいて、前記下位ノードに関する前記エントリ閾値を変更するか否かを判定することを含む、
10.から15.のいずれか1つに記載のインデックス生成方法。
18. 前記エントリ閾値の決定は、
前記インデックス対象データを示すエントリが前記下位ノードに挿入された場合に、前記下位ノード内のエントリ数が前記エントリ閾値を超えるか否かを判定し、
前記エントリ数が前記エントリ閾値を超える場合に、前記複数データ及び前記インデックス対象データの各々と前記代表データとの類似度に対して外れ値検出を行い、
外れ値が検出されない場合に、前記エントリ閾値を増加させ、外れ値が検出された場合には、前記エントリ閾値を変更しない、
17.に記載のインデックス生成方法。
19. インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成装置において、
データ間の類似度を用いて、下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成するインデックス生成部と、
前記複数のノードの各々について、ノード内の最大エントリ数を示すエントリ閾値をそれぞれ決定するエントリ調整部と、
を備え、
前記エントリ調整部は、前記インデックス生成部により前記インデックス対象データを示すエントリの挿入先が前記下位ノードに決定された場合に、前記下位ノードに含まれる複数エントリにより示される複数データ及び前記インデックス対象データの各々と前記代表データとの類似度群の分布状態に基づいて、前記下位ノードに関する前記エントリ閾値を変更するか否かを判定する、
インデックス生成装置。
20. 前記エントリ調整部は、前記インデックス対象データを示すエントリが前記下位ノードに挿入された場合に、前記下位ノード内のエントリ数が前記エントリ閾値を超えるか否かを判定し、該エントリ数が前記エントリ閾値を超える場合に、前記複数データ及び前記インデックス対象データの各々と前記代表データとの類似度に対して外れ値検出を行い、外れ値が検出されない場合に、前記エントリ閾値を増加させ、外れ値が検出された場合には、前記エントリ閾値を変更しない、
19.に記載のインデックス生成装置。
21. インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスを生成するインデックス生成方法において、
下位ノードと、該下位ノードとリンク関係を持つエントリであって、該下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、を含む前記インデックスを生成し、
前記複数のノードの各々について、ノード内の最大エントリ数を示すエントリ閾値をそれぞれ決定する、
こと含み、
前記エントリ閾値の決定は、前記インデックス対象データを示すエントリの挿入先が前記下位ノードに決定された場合に、前記下位ノードに含まれる複数エントリにより示される複数データ及び前記インデックス対象データの各々と前記代表データとの類似度群の分布状態に基づいて、前記下位ノードに関する前記エントリ閾値を変更するか否かを判定することを含む、
インデックス生成方法。
22. 前記エントリ閾値の決定は、
前記インデックス対象データを示すエントリが前記下位ノードに挿入された場合に、前記下位ノード内のエントリ数が前記エントリ閾値を超えるか否かを判定し、
前記エントリ数が前記エントリ閾値を超える場合に、前記複数データ及び前記インデックス対象データの各々と前記代表データとの類似度に対して外れ値検出を行い、
外れ値が検出されない場合に、前記エントリ閾値を増加させ、外れ値が検出された場合には、前記エントリ閾値を変更しない、
21.に記載のインデックス生成方法。
23. 10.から15、17、18、21及び22のいずれか1つに記載のインデックス生成方法を少なくとも1つのコンピュータに実行させるプログラム。
24. 16.に記載の検索方法を少なくとも1つのコンピュータに実行させるプログラム。
25. インデックス対象となるデータを示す少なくとも1つのエントリをそれぞれ含む複数のノードが階層化されたインデックスのデータ構造において、
前記インデックスが、
下位ノードと、
前記下位ノードとリンク関係を持つエントリであって、前記下位ノードのエントリにより示されるデータとの類似度が該リンク関係に付与される類似度閾値以上の代表データを示すエントリを含む上位ノードと、
を含み、
前記代表データを示す前記上位ノードのエントリと前記下位ノードとの各リンク関係には、デフォルト類似度閾値及び調整値がそれぞれ付与されており、
前記リンク関係に付与される前記類似度閾値は、前記デフォルト類似度閾値から前記調整値を減算することで算出されており、
コンピュータが、前記上位ノードのエントリにより示される前記代表データと検索対象データとの類似度を算出し、該類似度と前記上位ノードのエントリが持つ前記リンク関係に付与された前記類似度閾値とを比較し、該比較結果に基づいて該検索対象データに対応する検索結果を得るために参照する、
前記インデックスのデータ構造。
26. 23.又は24.に記載のプログラムをコンピュータに読み取り可能に記録する記録媒体。
この出願は、2014年7月10日に出願された日本出願特願2014−142107号を基礎とする優先権を主張し、その開示の全てをここに取り込む。