(57)【特許請求の範囲】
【請求項１】
複数のベクトルデータと前記複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納するデータベースと、前記複数のベクトルデータのうちの特定のベクトルデータから、前記グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する検索部と、前記データベースのグラフインデックスの更新を行うインデックス更新部とを備えており、
前記インデックス更新部は、
前記複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理と、
前記ベクトルデータ集合に属する第１のベクトルデータから、第２のベクトルデータを、前記グラフインデックスを用いて、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程において取得した第３のベクトルデータと前記第２のベクトルデータとの間の距離が、前記第１のベクトルデータから前記第２のベクトルデータまでの距離より短い場合には、前記第３のベクトルデータと前記第２のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
グラフインデックス更新装置。
【請求項２】
前記第２のベクトルデータは、前記ベクトルデータ集合において、前記第１のベクトルデータに対して最も近いベクトルデータである
請求項１に記載のグラフインデックス更新装置。
【請求項３】
前記インデックス更新部は、さらに、
前記第２のベクトルデータから、前記第１のベクトルデータを、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程によって取得した第４のベクトルデータと前記第１のベクトルデータとの間の距離が、前記第３のベクトルデータから前記第１のベクトルデータまでの距離より短い場合には、前記第４のベクトルデータと前記第１のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
請求項１又は２に記載のグラフインデックス更新装置。
【請求項４】
データベースに格納された複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定するステップと、
前記ベクトルデータ集合に属する第１のベクトルデータから、第２のベクトルデータを、前記複数のベクトルデータ間のリンク関係を示すグラフインデックスを用いて検索するステップと、
前記グラフインデックスを用いた検索の過程において取得した第３のベクトルデータと前記第２のベクトルデータとの間の距離が、前記第１のベクトルデータから前記第２のベクトルデータまでの距離より短い場合には、前記第３のベクトルデータと前記第２のベクトルデータとの間に新たなリンクを生成して、前記グラフインデックスを更新するステップと
を備えた装置のグラフインデックス更新方法。
【請求項５】
請求項４に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ検索のために用いられるグラフインデックスを更新するための装置及び方法に関するものである。特に、本発明は、ノード間のリンクを新たに生成してグラフインデックスを更新するため技術に関するものである。
【背景技術】
【０００２】
例えば、ある画像（検索画像）に類似する画像を、多数の画像（対象画像）の中から検索する場合がある。この場合、各画像の特徴を、多次元のベクトルデータ（すなわち特徴量）で表し、各ベクトルデータ間の類似度を用いて、類似画像を抽出する方法が考えられる。
【０００３】
類似画像の検索作業において、対象画像の数が多い場合には、検索画像と対象画像との類似度（例えばユークリッド距離や色差式）を逐一計算していると、検索に要する時間が非常に長くなってしまう。そこで、木構造のグラフインデックス（索引）を用いて、検索を高速化する方法が提案されている。
【０００４】
一般に、多次元のベクトル空間において、ある範囲の多次元データを高速に検索するには、多次元空間インデックスであるkd-tree若しくは R-treeや、又は、距離空間インデックスである Vp-treeなどが知られている。これらの手法は、空間を分割して木構造のグラフインデックスを生成し、生成された木構造を辿ることで高速な検索を目指している。
【０００５】
ところで、一旦生成したグラフインデックスから、ベクトルデータを削除する場合がある。この場合には、通常、ベクトルデータだけでなく、削除対象のベクトルデータに接続するリンクをすべて削除する。しかし、あるベクトルデータが、他の複数のベクトルデータ間の橋渡しをしているような場合において、この橋渡しをするベクトルデータを削除すると、複数のベクトルデータ間のリンクが完全に切れてしまい、分離したグラフ構造になってしまうことがある。つまり、検索時において、ベクトルデータを辿れない場合が生じ、検索漏れが発生する。あるいは、仮に辿れるとしても、辿るべきリンク数が多すぎる等の問題を生じることがある。
【０００６】
そこで、本発明者による下記特許文献１では、ベクトルデータの削除時に、削除対象のベクトルデータからリンクしていたベクトルデータどうしを互いにリンクすることにより、前記の問題を解消している。この方法は簡便なために、ベクトルデータを高速に削減できるという利点があるが、遠いベクトルデータ間をリンクしてしまう可能性がある。つまり、過剰に長いリンクを生成してしまう可能性がある。このようなリンクを生成すると、検索効率や検索精度が劣化する可能性がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−７９８７１号公報（例えば図４１）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、前記した状況に鑑みてなされたものである。本発明の主な目的は、グラフインデックスの更新において、過剰に長いリンクの生成を抑制することが可能な装置又は方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、以下のいずれかの項目に記載の構成とされている。
【００１０】
（項目１）
複数のベクトルデータと前記複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納するデータベースと、前記複数のベクトルデータのうちの特定のベクトルデータから、前記グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する検索部と、前記データベースのグラフインデックスの更新を行うインデックス更新部とを備えており、
前記インデックス更新部は、
前記複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理と、
前記ベクトルデータ集合に属する第１のベクトルデータから、第２のベクトルデータを、前記グラフインデックスを用いて、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程において取得した第３のベクトルデータと前記第２のベクトルデータとの間の距離が、前記第１のベクトルデータから前記第２のベクトルデータまでの距離より短い場合には、前記第３のベクトルデータと前記第２のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
グラフインデックス更新装置。
【００１１】
（項目２）
前記第２のベクトルデータは、前記ベクトルデータ集合において、前記第１のベクトルデータに対して最も近いベクトルデータである
項目１に記載のグラフインデックス更新装置。
【００１２】
（項目３）
前記インデックス更新部は、さらに、
前記第２のベクトルデータから、前記第１のベクトルデータを、前記検索部によって検索させる処理と、
前記グラフインデックスを用いた検索における前記リンク関係を辿る過程によって取得した第４のベクトルデータと前記第１のベクトルデータとの間の距離が、前記第３のベクトルデータから前記第１のベクトルデータまでの距離より短い場合には、前記第４のベクトルデータと前記第１のベクトルデータとの間に新たなリンクを生成して前記データベースの前記グラフインデックスを更新する処理と
を行う構成となっている
項目１又は２に記載のグラフインデックス更新装置。
【００１３】
（項目４）
データベースに格納された複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定するステップと、
前記ベクトルデータ集合に属する第１のベクトルデータから、第２のベクトルデータを、前記複数のベクトルデータ間のリンク関係を示すグラフインデックスを用いて検索するステップと、
前記グラフインデックスを用いた検索の過程において取得した第３のベクトルデータと前記第２のベクトルデータとの間の距離が、前記第１のベクトルデータから前記第２のベクトルデータまでの距離より短い場合には、前記第３のベクトルデータと前記第２のベクトルデータとの間に新たなリンクを生成して、前記グラフインデックスを更新するステップと
を備えた装置のグラフインデックス更新方法。
【００１４】
（項目５）
項目４に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。
【００１５】
このコンピュータプログラムは、適宜な記録媒体（例えばＣＤ−ＲＯＭやＤＶＤディスクのような光学的な記録媒体、ハードディスクやフレキシブルディスクのような磁気的記録媒体、あるいはＭＯディスクのような光磁気記録媒体）に格納することができる。このコンピュータプログラムは、インターネットなどの通信回線を介して伝送されることができる。
【発明の効果】
【００１６】
本発明によれば、過剰に長いリンクの生成を抑制することが可能な装置又は方法を提供することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明のインデックス更新装置が用いられるシステム全体の概略を説明するためのブロック図である。
【図２】本発明の第１実施形態におけるグラフインデックス更新の手順を説明するためのフローチャートである。
【図３】第１実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図４】第１実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図５】第１実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図６】第１実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【図７】第２実施形態におけるグラフインデックス更新の利点を説明するための説明図である。
【図８】第２実施形態におけるグラフインデックス更新の手順を説明するための説明図である。
【発明を実施するための形態】
【００１８】
（第１実施形態の構成）
第１実施形態のグラフインデックス更新装置を説明する前提として、この更新装置を含む検索システム全体の構成を、図１に基づいて説明する。
【００１９】
この検索システムは、検索サーバ１と、クライアント端末２と、ネットワーク３とを主要な構成として備えている。そして、この検索システムは、ネットワーク３を介してクライアント端末２から検索サーバ１にクエリを送ることにより、類似データをクライアント端末２に送り返すことができるようになっている。このような検索システム全体の構成は、例えば前記特許文献１と同様なので、これについての詳しい説明は省略する。
【００２０】
第１実施形態のグラフインデックス更新装置は、前記した検索サーバ１として実装される。すなわち、この検索サーバ１は、データベース１１と、検索部１２と、インデックス更新部１３とを備えている。
【００２１】
データベース１１は、複数のベクトルデータを格納するベクトルデータDB１１１と、これらの複数のベクトルデータ間のリンク関係を示すグラフインデックスとを格納グラフインデックスDB１１２とを備えている。
【００２２】
検索部１２は、複数のベクトルデータのうちの特定のベクトルデータから、グラフインデックスが示すリンク関係を辿ることで他のベクトルデータを検索する構成となっている。
【００２３】
これらのデータベース１１と検索部１２は、基本的には、従来（例えば前記した特許文献１）と同様に構成することができるので、これ以上詳しい説明は省略する。
【００２４】
インデックス更新部１３は、データベースのグラフインデックスの更新を行う構成となっている。より具体的には、インデックス更新部は、以下の処理を行う構成となっている：
・複数のベクトルデータの一部又は全部によって構成される特定のベクトルデータ集合を特定する処理；
・ベクトルデータ集合に属する第１のベクトルデータから、第２のベクトルデータを、グラフインデックスを用いて、検索部１２によって検索させる処理；
・グラフインデックスを用いた検索におけるリンク関係を辿る過程において取得した第３のベクトルデータと第２のベクトルデータとの間の距離が、第１のベクトルデータから第２のベクトルデータまでの距離より短い場合には、第３のベクトルデータと第２のベクトルデータとの間に新たなリンクを生成してデータベース１１のグラフインデックスを更新する処理。
【００２５】
インデックス更新部１３の詳しい動作は後述する。
【００２６】
（グラフインデックスの更新手順）
以下、図２をさらに参照しながら、本実施形態の更新装置を用いたグラフインデックスの更新手順を詳しく説明する。なお、以下の説明では、ベクトルデータのことをノードと称することがある。また、以下に説明する更新手順は、特に説明のない限り、基本的にはインデックス更新部１３により実行される。
【００２７】
（図２のステップＳＡ−１）
まず、インデックス更新部１３が、ノード集合Ｓを特定する。ここで、本実施形態では、グラフインデックスの初期状態を、図３（ａ）に示す状態であると仮定する。この状態において、ノードＤをこのグラフインデックスから削除する（図３（ｂ）参照）。本実施形態では、削除されたノードＤに直接に連結していたノードＳｎ（本実施形態ではＳ１〜Ｓ４）によってノード集合Ｓが形成される。
【００２８】
（図２のステップＳＡ−２）
ついで、インデックス更新部１３が、ノード集合Ｓから、始点のノードとして、任意の一つのノードＳｉ（第１のベクトルデータの一例に相当）を特定する。本実施形態では、ノードＳ１を始点ノードとする。
【００２９】
（図２のステップＳＡ−３）
次に、インデックス更新部１３が、選択したノードＳ１から最も距離が近いノードＳｊ（本例ではＳ２）を、集合Ｓから取得する。ノードＳｊは、第２のベクトルデータの一例に相当する。
【００３０】
ついで、インデックス更新部１３は、検索部１２を用いて、ノードＳ１からグラフを辿ることによって、ノードＳ２の近傍点をｎ個検索する。検索部１２によるこの検索処理は、通常のグラフインデックスにおける検索処理と同一でよいので、これについての詳しい説明は省略する。ここで、検索対象のノード数であるｎを大きくすることにより精度よい検索となる一方、処理が遅くなるので、ｎの値は、用途に応じて適宜設定すれば良い。
【００３１】
（図２のステップＳＡ−４）
検索結果として得られたｎ個のノードの中にノードＳ２が含まれていた場合には、ノードＳ１とノードＳ２との間に既にパス（つまりリンク）が存在すると判断できる。したがってこの場合は、新たにリンクを生成する必要はないので、ステップＳＡ−８に進む。ステップＳＡ−４での判断がNoであった場合には次のステップＳＡ−５に進む。
【００３２】
（図２のステップＳＡ−５及びＳＡ−６）
次に、インデックス更新部１３は、検索結果として得られたｎ個のノード中に、ノードＳ１とノードＳ２との間の距離よりもノードＳ２からの距離が近いノードＰ（第３のベクトルデータの一例に相当）が検索されたかどうかを判定する。このようなノードＰが検索された場合（かつノードＳ１とノードＳ２間には途中までのパスが存在する場合）、ノードＰとノードＳ２との間にリンクを生成する（図４（ａ）及び（ｂ）参照）。その後、ステップＳＡ−８に移る。
【００３３】
（図２のステップＳＡ−７）
ｎ個の検索結果中に、「ノードＳ１とノードＳ２との間の距離よりもノードＳ２からの距離が近いノード」が検索されなかった場合（つまり、ノードＳ２から最も近いノードがＳ１であった場合であり、かつ、両者間に全くパスが存在しない場合）には、ノードＳ１とノードＳ２との間にリンクを生成する。
【００３４】
（図２のステップＳＡ−８）
集合Ｓに他のノードがあれば、それをＳ２とし、上記したノードＳ２をＳ１として、ステップＳＡ−３からの処理を再度行う。前記作業を、集合Ｓに属するすべてのノードについて行ったら、上記手順を終了する。
【００３５】
以降の手順を、図５及び図６をさらに参照しながら、説明する。
【００３６】
図５では、Ｓ１とＳ２とが前記の手順で連結された（図４の例では、ノードＰを介して連結された）後に、ノードＳ２を前記のノードＳｉとし、ノードＳ３を前記のノードＳｊとして、図３の手順を行った例を示している。ここでは、図２のステップＳＡ−４において、「検索結果として得られたｎ個のノードの中にノードＳｊが含まれていた場合」に該当するので、「ノードＳ２とノードＳ３との間に既にパス（つまりリンク）が存在する」と判断できる。したがってこの場合は、新たにリンクを生成する必要はないので、ステップＳＡ−８に進むことができる。
【００３７】
図６の例では、Ｓ２とＳ３との連結が前記の手順で確認された後に、ノードＳ３を前記のノードＳｉとし、ノードＳ４を前記のノードＳｊとして、図３の手順を行った例を示している。この例では、ステップＳＡ−５での判定がNoとなるので、ステップＳＡ−７に進み、ノードＳ３とノードＳ４とを直接にリンクする。ここまでの手順によって、集合Ｓに属する全てのノードについての処理が完了する。完了した状態を図６（ｃ）に示す。
【００３８】
前記した本実施形態によれば、ノード間のリンクを短くすることが可能となるという利点がある。
【００３９】
なお、前記の説明では、ノードＳｉからノードＳｊを検索する例を説明したが、逆に、ノードＳｊからノードＳｉを検索することもできる。さらには、ノードＳｉからノードＳｊを検索した後に、ノードＳｊからノードＳｉを検索することもできる。そして、ノードＳｊからノードＳｉに向けてリンクを辿る過程によって取得した第４のベクトルデータ（図示せず）と第１のベクトルデータ（ノードＳｉ）との間の距離が、第３のベクトルデータ（ノードＰ）から第１のベクトルデータ（ノードＳｉ）までの距離より短い場合には、第４のベクトルデータと第１のベクトルデータ（ノードＳｉ）との間に新たなリンクを生成してデータベース１１のグラフインデックスを更新することができる。この場合は、第３のベクトルデータ（ノードＰ）から第１のベクトルデータ（ノードＳｉ）へのリンク生成を省略することができる。
【００４０】
（第２実施形態）
次に、第２実施形態に係るグラフインデックス更新装置を、図７及び図８を参照しながら説明する。なお、第２実施形態の説明においては、前記した第１実施形態と基本的に共通する処理手順あるいは構成については、符号を援用することにより、説明の煩雑を避ける。
【００４１】
まず、説明の前提として、第２実施形態の手法が有効な状況を、図７により説明する。ここでは、グラフインデックスから、リンクが集中しているノードＤ（図７（ａ）参照）を削除する。すると、図７（ｂ）に示すように、リンク切れの状態が現れる。そこで、図２に示す手順を実施する。この場合は、ノード集合Ｓが、ノードＳ１〜Ｓ８により構成される。図２の手順を実施した結果、各ノード間のリンクを確保することは可能である。しかしながら、ノードＳ４とノードＳ８との間を直接にリンクすることが最適であるにも拘わらず、前記の手順では、ノードＳ８よりもノードＳ５がノードＳ４に近いため、ノードＳ４とノードＳ８との間にはリンクが生成されない（図７（ｃ）の破線参照）。
【００４２】
そこで、第２実施形態では、以下のような手順を採用する。すなわち、第１実施形態では、集合Ｓ中の一つのノードＳｉを順次更新していた。これに対して、第２実施形態では、既に辿られた全てのノードから、次のノードを辿る。例えば、図８（ａ）に示すように、ノードＳ１からノードＳ２へは、第１実施形態と同じ方法で辿り、両者間にリンクを貼ることができる（図２のステップＳＡ−７）。その後、第２実施形態では、第１実施形態と異なり、二つのノードＳ１及びＳ２を、図２のノードＳｉとみなして、それぞれから、ノードＳ３（つまりノードＳｊ）を辿る（図８（ｂ）参照）。その結果、二通りのリンク（エッジ）が形成された場合は、両リンクを評価して、より良いリンクを残す。リンクの評価基準としては、例えば、「リンクが短いほど良いリンクとする」という基準を用いることができる。この例では、図８（ｃ）に示すように、ノードＳ２とノードＳ３との間にリンクを生成することができる。その後、さらに、リンクが張られた各ノードＳ１〜Ｓ３を前記したノードＳｉとみなして、これらの各ノードＳ１〜Ｓ３からノードＳ４を辿る。以降、同様の操作を繰り返す。
【００４３】
この第２実施形態によれば、より適切なリンクを生成できる可能性が高まる。
【００４４】
第２実施形態における他の構成及び利点は、前記した第１実施形態と同様なので、これ以上詳しい説明は省略する。
【００４５】
前記した各実施形態の動作は、コンピュータに適宜のコンピュータソフトウエアを組み込むことにより実施することができる。
【００４６】
なお、本発明の内容は、前記実施形態に限定されるものではない。本発明は、特許請求の範囲に記載された範囲内において、具体的な構成に対して種々の変更を加えうるものである。
【００４７】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良く、本発明における複数の機能要素が一つの機能要素により実現されても良い。
【００４８】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。グリッドコンピューティングにより機能を実現し、あるいは機能要素を構成することも可能である。
【００４９】
さらに、前記した各実施形態では、グラフインデックスからノードを削除する例を説明した。しかしながら、本発明は、ノードの削除に限らず、例えば、破損したグラフインデックスの修復や、複数のグラフインデックスの統合にも利用することができる。例えば、二つのグラフインデックスGA、GBを結合する場合には、
・各々のグラフインデックスに対応するノード集合をSA,SBとし、
・これらのノード集合SA又はSBから任意の１ノードを取得し、
・ノード集合SA及びSBで構成されるノード集合Sを本発明のベクトルデータ集合と把握して、
・前記実施形態の手法により、集合S内のノード間でのリンク結合を行う
ことが可能である。
【符号の説明】
【００５０】
１  検索サーバ
１１  データベース
１１１  ベクトルデータDB
１１２  格納グラフインデックスDB
１２  検索部
１３  インデックス更新部
２  クライアント端末
３  ネットワーク
【図１】
0005383776.tif 000002
【図２】
0005383776.tif 000003
【図３】
0005383776.tif 000004
【図４】
0005383776.tif 000005
【図５】
0005383776.tif 000006
【図６】
0005383776.tif 000007
【図７】
0005383776.tif 000008
【図８】
0005383776.tif 000009