以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100(図3参照)がオブジェクトの追加に応じて、追加されたオブジェクトに対応するノード(以下「追加ノード」ともいう)をグラフデータ(グラフ情報)に追加し、グラフデータを生成する場合を示す。以下では、グラフデータを単にグラフと記載する場合がある。なお、図1の例では、対象とする情報(オブジェクト)がベクトル化され、ベクトル化されたオブジェクトを対象としてグラフ(グラフインデックス)を生成する場合を示す。すなわち、図1の例では、情報処理装置100がベクトルをオブジェクトに対応するオブジェクト値として処理を行う場合を示す。なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いてもよい。例えば、情報処理装置100は、ベクトルに限らず、データ間の距離(類似度)が定義されていれば任意の形態のデータを用いてもよい。また、以下では、画像情報をオブジェクトとした場合を一例として説明するが、オブジェクトは、動画情報や音声情報等の種々の対象であってもよい。
また、ここでいうオブジェクトの追加は、オブジェクトの登録と読み換えてもよい。情報処理装置100が行うオブジェクトの追加とは、オブジェクトをオブジェクト情報記憶部121(図4参照)に登録(格納)することであってもよい。また、ここでいうノードの追加は、ノードの登録と読み換えてもよい。情報処理装置100が行うノードの追加とは、ノードをグラフデータ記憶部124(図7参照)に登録(格納)することであってもよい。
また、以下では、一のノードを追加する前のグラフを第1グラフと称し、その一のノードを追加したグラフを第2グラフと称する場合があるが、第1グラフ及び第2グラフは、相対的な概念であって、生成した第2グラフが次のノード追加時には第1グラフになる。例えば、一のノード追加後の第2グラフは、その次に新たなノードを追加する場合には、第1グラフとして用いられる。すなわち、ここでいう第1グラフ及び第2グラフとは、あるノードの追加前後のグラフを区別して表現可能にするための名称である。
また、情報処理装置100は、図1に示すように、ノード及び有向エッジを含むグラフを生成の対象として情報処理を行う。なお、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。
以下では、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、以下では、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2個のノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
また、ここでいう、各ノードは、各オブジェクトに対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
情報処理装置100は、例えば情報処理装置100が処理可能な範囲で(例えば数百万〜数億等)の膨大な画像情報に対応するノードを対象にグラフの生成処理を行うが、図面においてはその一部のみを図示する。図1の例では、説明を簡単にするために、最大6個のノードを図示して処理の概要を説明する。また、図1の例では、情報処理装置100は、何もない状態、すなわちノードが0個、エッジも0本である状態から、オブジェクトの追加に応じてノードN1等やエッジE1等を順次追加し、グラフGR11を生成する場合を示す。
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE1」と記載した場合、そのエッジはエッジID「E1」により識別されるエッジである。例えば、ノードN1を参照元とし、ノードN2を参照先として連結されるエッジE1により、ノードN1からノードN2に辿ることが可能となる。この場合、有向エッジであるエッジE1は、ノードN1を中心として識別される場合、出力エッジとなり、ノードN2を中心として識別される場合、入力エッジとなる。言い換えると、有向エッジであるエッジE1は、ノードN1側からの視点でとらえた場合、自身から他のエッジへ矢印が向いているエッジ、すなわち外向きエッジとなり、ノードN2側からの視点でとらえた場合、自身の方に矢印が向いているエッジ、すなわち内向きエッジとなる。つまり、ここでいう出力エッジは、外向きエッジと読み替えることができ、入力エッジは、内向きエッジと読み替えることができる。
また、図1に示す空間情報VS1−1〜VS1−4は、グラフデータの生成過程を模式的に示す図であり、空間情報VS1−1〜VS1−4に示す空間は、同一の空間であってもよい。また、以下では、空間情報VS1−1〜VS1−4について、特に区別なく説明する場合には、空間情報VS1と記載する。
また、図1中の空間情報VS1は、ユークリッド空間であってもよい。また、図1に示す空間情報VS1は、各ベクトル間の距離等の説明のための概念的な図であり、空間情報VS1は、多次元空間である。例えば、図1に示す空間情報VS1は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
また、図1に示すグラフGR11−1〜GR11−4は、グラフデータの生成過程を模式的に示す図であり、グラフGR11−1〜GR11−4は、情報処理により生成される同一のグラフデータである。また、以下では、グラフGR11−1〜GR11−4について、特に区別なく説明する場合には、グラフGR11と記載する。
また、図1に示す例においては、グラフGR11−1〜GR11−4においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、取得した各ノードを「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、空間情報VS1中の左上の「○」であって、内部に「4」が付された「○」は、ノードID「N4」により識別されるノード(ノードN4)に対応する。例えば、図1に示す例において、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
本実施形態においては、空間情報VS1における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(画像情報)の類似性が、空間情報VS1内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1に示す例においては、空間情報VS1における各ノード間の距離が短いオブジェクト同士の類似度が高く、空間情報VS1における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図1中の空間情報VS1において、ノードID「N1」により識別されるノード(ノードN1)と、ノードID「N2」により識別されるノード(ノードN2)とは近接している、すなわち距離が短い。そのため、ノードID「N1」により識別されるノードに対応するオブジェクトと、ノードID「N2」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
また、例えば、図1中の空間情報VS1において、ノードID「N2」により識別されるノードと、ノードID「N5」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードID「N2」により識別されるノードに対応するオブジェクトと、ノードID「N5」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
また、図1の例では、情報処理装置100は、後述するグラフの生成処理により、新規追加のノードをグラフGR11に追加し、ノードを有向エッジで連結することにより、グラフGR11を生成する。例えば、グラフGR11の生成時やグラフGR11を用いた検索時においては、グラフ構造型インデックスと同様の処理を行うが、開始位置(起点)は所定の起点用情報(以下「起点用インデックス」ともいう)を用いて決定したノード(以下「起点ノード」ともいう)からスタートしてもよい。また、例えば、情報処理装置100が生成したグラフGR11を用いて検索を行う場合、予め決定された起点ノードを起点として検索を行ってもよい。例えば、生成時や検索時においては、起点ノードがノードN1である場合、ノードN1から有向エッジを辿ることにより、ノードN2〜N5、N11等を検索してもよい。なお、情報処理装置100は、生成時や検索時において図16に示すような処理手順により近傍ノードの探索(検索)を行ってもよいが、詳細は後述する。
ここから、図1を用いて情報処理の詳細を説明する。なお、図1に示す各ステップは、グラフの生成を説明するための便宜的なステップであり、実際の処理はより詳細な処理ステップにより行われてもよい。なお、情報処理装置100が行う情報処理は、図1中のグラフGR11−4に示すようなグラフGR11が生成されれば、どのような処理フローであってもよい。
また、図1の例では、連結条件一覧LCL1に示すように、連結条件については、入力閾値が「2」であり、出力閾値が「1」である場合を示す。すなわち、情報処理装置100は、連結条件一覧LCL1に基づいて、各ノードに少なくとも2本の入力エッジ及び1本の出力エッジが連結されるようにグラフを生成する。また、図1の例では、変更条件一覧ACL1や変更条件一覧ACL2に示すような変更条件に基づいて、連結条件を変更する場合を示す。図1の例では、変更条件一覧ACL2に示すエッジの統計値は、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値であるものとし、閾値ETH1は「5」であるものとする。なお、図1の例では、説明を簡単にするために、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値を統計的な情報の一例として説明するが、統計的な情報は種々の情報であってもよい。例えば、統計的な情報は、グラフやどのようにエッジを追加するか等の連結条件に応じた種々の条件であってもよい。例えば、統計的な情報は、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値等の一部のノードやエッジの情報を用いるものに限らず、グラフ全体のノードやエッジの情報を用いるものであってもよい。また、例えば、統計的な情報は、一定個数の初期登録ノードの出力エッジ数の平均でもよい。例えば、統計的な情報は、最初に追加したノードから100番目に追加したノードの100個のノードの出力エッジ数の平均でもよい。情報処理装置100は、変更条件一覧ACL1や変更条件一覧ACL2に示すような情報を変更条件情報記憶部123等(図6参照)に記憶してもよい。
まず、情報処理装置100は、ノードN1を新規追加する(ステップS11)。例えば、情報処理装置100は、ノードN1をグラフに追加する。図1の例では、情報処理装置100は、ノードN1が最初のノードであるため、ノードN1を含むグラフGR11を新規に生成する。また、情報処理装置100は、ステップS11後においてグラフGR11には、ノードがノードN1の1個のみであるため、グラフGR11にエッジを追加しない。
例えば、情報処理装置100は、検索対象として新たに追加されたオブジェクトを取得し、追加されたオブジェクトに対応するノードを新規追加する。例えば、情報処理装置100は、新たに追加されたオブジェクトをオブジェクト情報記憶部121(図4参照)に記憶し、新たに追加されたオブジェクトに対応付けたノードをグラフデータ記憶部124に記憶する。情報処理装置100は、オブジェクトID「OB1」により識別されるオブジェクト(図4参照)に対応するノードN1をグラフGR11に追加する。
そして、情報処理装置100は、ノードN2を新規追加する(ステップS12)。図1の例では、例えば、情報処理装置100は、ノードN2をグラフGR11に追加する。情報処理装置100は、オブジェクトID「OB2」により識別されるオブジェクト(図4参照)に対応するノードN2をグラフGR11に追加する。
そして、情報処理装置100は、グラフを生成する(ステップS13)。情報処理装置100は、連結条件一覧LCL1に基づいて、追加したノードN2に2本の入力エッジ及び1本の出力エッジが連結されるようにグラフを生成する。情報処理装置100は、追加したノードN2に連結するエッジを追加することにより、グラフGR11−1を生成する。図1の例では、情報処理装置100は、グラフGR11中のノードN2以外にはノードN1のみしかないため、ノードN1からノードN2に入力される入力エッジであるエッジE1と、ノードN2からノードN1に出力される出力エッジであるエッジE2とを追加することにより、グラフGR11−1を生成する。そして、情報処理装置100は、グラフGR11−1には、ノードN1以外に、ノードN2との間にエッジを接続するノードが無いため、ノードN2にエッジを連結する処理を終了する。なお、情報処理装置100は、グラフGR11を探索し、ノードN2の近傍ノードとしてノードN1を選択し、ノードN1との間にエッジE1、E2とを追加することにより、グラフGR11−1を生成してもよい。
また、情報処理装置100は、グラフGR11−1に基づいて、決定用情報一覧DFI1を生成する。情報処理装置100は、グラフGR11−1に含まれるノードやエッジの情報に基づいて、決定用情報一覧DFI1を生成する。例えば、情報処理装置100は、統計的な情報を含む決定用情報一覧DFI1を生成する。情報処理装置100は、グラフGR11−1に含まれるノード数が2個であることや、グラフGR11−1に含まれるエッジ数が2本であることを示す決定用情報一覧DFI1を生成する。情報処理装置100は、条件の判定に用いる情報であれば、ノード数やエッジ数に限らず、種々のグラフの統計的な情報を生成してもよい。決定用情報一覧DFI1には、グラフGR11−1において、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値を示す情報(エッジ統計値)が含まれてもよい。なお、グラフGR11−1のように、上位20%のノードの数が「0.4(=2*0.2)」のように、1未満となる場合、情報処理装置100は、上位20%のノードの数を「1」として、最大の入力エッジ数のノードの入力エッジ数をエッジ統計値として用いる。例えば、情報処理装置100は、決定用情報一覧DFI1を記憶部120(図3参照)に記憶してもよい。また、「1」以上の場合の小数点については、切り捨ててもよいし、四捨五入してもよいし、切り上げてもよい。
そして、情報処理装置100は、グラフGR11−1が変更条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−1に含まれるノード数が2個であるため、変更条件一覧ACL1に示すノード数が100個であるという変更条件を満たさないと判定する。例えば、情報処理装置100は、決定用情報一覧DFI1中のノード数「2」と、変更条件一覧ACL1中のノード数「100」とを比較し、決定用情報一覧DFI1中のノード数「2」が変更条件一覧ACL1中のノード数「100」と異なるため、変更条件を満たさないと判定する。また、情報処理装置100は、グラフGR11−1において、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値は「1」であり、閾値ETH1未満であるため、変更条件一覧ACL2に示すエッジの統計値が閾値ETH1以上という変更条件を満たさないと判定する。このように、情報処理装置100は、グラフGR11−1が変更条件を満たさないと判定する。そのため、情報処理装置100は、連結条件を変更せずに、処理を続行する。すなわち、情報処理装置100は、入力閾値「2」及び出力閾値「1」を変更せずに、処理を続行する。
そして、情報処理装置100は、ノードN3を新規追加する(ステップS14−1)。図1の例では、例えば、情報処理装置100は、追加されたオブジェクトに対応するノードN3をグラフGR11に追加する。
そして、情報処理装置100は、グラフを探索する(ステップS14−2)。例えば、情報処理装置100は、図16に示すような処理手順により、追加ノードの近傍に位置するノード(近傍ノード)の探索(検索)を行う。例えば、情報処理装置100は、図16に示すような処理手順によりグラフを探索することにより、所定の個数(以下「選択数」ともいう)の近傍ノードを選択する。例えば、情報処理装置100は、入力閾値や出力閾値に応じて選択数を決定する。図1の例では、情報処理装置100は、より大きな値である入力閾値「2」を選択数に決定する。なお、情報処理装置100は、入力閾値や出力閾値よりも大きな値を選択数に決定してもよい。例えば、情報処理装置100は、「100」個等の種々の値を選択数に決定してもよい。例えば、情報処理装置100は、種々の情報を適宜用いて、選択数を決定してもよい。例えば、情報処理装置100は、生成後のグラフの検索の性能に基づいて、選択数(近傍ノード数)を決定してもよい。また、例えば、情報処理装置100は、グラフ生成中において動的に選択数を変更してもよい。例えば、情報処理装置100は、グラフ生成の途中で検索性能を確認して、選択数を増やしたり減らしたりしてもよい。例えば、情報処理装置100は、生成中のグラフの検索性能に基づいて、選択数を増減させてもよい。例えば、情報処理装置100は、生成中のグラフの検索性能を示す値と所定の閾値との比較に基づいて、選択数を増減させてもよい。このように、情報処理装置100は、選択数に関する条件を動的に変更させてもよい。
情報処理装置100は、追加ノードであるノードN3をクエリとして、図16に示すような処理手順によりグラフGR11−1を探索し、ノードN3の近傍ノードとして、選択数「2」に対応する2個のノードN1、N2を選択する。また、図1の例では、ノードN1の方がノードN2よりもノードN3の近傍に位置する。このように、情報処理装置100は、生成中のグラフを用いて追加ノードの近傍ノードを選択することにより、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置100は、生成中のグラフを追加ノードの近傍ノードの選択に利用することにより、近傍ノード選択の処理時間の増大を抑制し、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。すなわち、情報処理装置100は、生成中のグラフを用いて追加ノードの近傍ノードを選択することにより、より高速にグラフを生成することができる。なお、情報処理装置100は、近傍ノードを選択できればどのような方法により、近傍ノードを選択してもよく、例えば生成中のグラフ内の各ノードと追加ノードとの間の距離を示す情報を用いて、距離が近い方から順に選択数の近傍ノードを選択してもよい。
なお、情報処理装置100は、処理の高速化のために、グラフGR11−1の各ノードN1、N2をリーフとする木構造の起点用情報を用いて、起点ノードを決定してもよいが、詳細は後述する。例えば、情報処理装置100は、図15に示すような木構造の起点情報を用いて、グラフGR11−1のノードN1、N2のうち、ノードN1を起点ノードに決定してもよい。このように、情報処理装置100は、生成中のグラフに対応する起点用情報を用いて起点ノードを決定することにより、効率的にグラフを探索することができるため、より効率的に近傍ノードを選択し、効率的なグラフ生成を可能にすることができる。例えば、グラフに含まれるノード数が多くなった場合であっても、情報処理装置100は、起点用情報を用いて起点ノードを決定することにより、起点ノードの選択の処理時間の増大を抑制し、より効率的に起点ノードを選択し、効率的なグラフ生成を可能にすることができる。
そして、情報処理装置100は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第1グラフに追加することにより、第2グラフを生成する(ステップS14−3)。図1の例では、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN3と近傍ノードであるノードN1、N2との間を連結する有向エッジを第1グラフであるグラフGR11−1に追加することにより、第2グラフであるグラフGR11−2を生成する。具体的には、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN3に2本の入力エッジ及び1本の出力エッジが連結されるようにグラフGR11−2を生成する。
情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に2個のノードにノードN3への入力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N2のうち、距離が最も短いノードN1にノードN3へ入力するエッジE3を連結する。これにより、情報処理装置100は、ノードN3の近傍ノードであるノードN1とノードN3とを連結する。
情報処理装置100は、選択した近傍ノードであるノードN1、N2のうち、距離が2番目に短いノードN2にノードN3へ入力するエッジE5を連結する。これにより、情報処理装置100は、ノードN3の近傍ノードであるノードN2とノードN3とを連結する。
また、情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に1個のノードにノードN3からの出力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N2のうち、距離が最も短いノードN1にノードN3から出力するエッジE4を連結する。これにより、情報処理装置100は、ノードN3とその近傍ノードであるノードN1とを連結する。これにより、情報処理装置100は、追加したノードN3に2本の入力エッジE3、E5及び1本の出力エッジE4が連結されたグラフGR11−2を生成する。
また、情報処理装置100は、グラフGR11−2に基づいて、決定用情報一覧DFI2を生成する。例えば、情報処理装置100は、決定用情報一覧DFI1を更新することにより、決定用情報一覧DFI2を生成する。情報処理装置100は、グラフGR11−2に含まれるノード数が3個であることや、グラフGR11−2に含まれるエッジ数が5本であることを示す決定用情報一覧DFI2を生成する。例えば、情報処理装置100は、記憶部120(図3参照)に記憶された決定用情報一覧DFI1を決定用情報一覧DFI2に更新してもよい。
そして、情報処理装置100は、グラフGR11−2が変更条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−2に含まれるノード数が3個であるため、変更条件一覧ACL1に示すノード数が100個であるという変更条件を満たさないと判定する。例えば、情報処理装置100は、決定用情報一覧DFI2中のノード数「3」と、変更条件一覧ACL1中のノード数「100」とを比較し、決定用情報一覧DFI2中のノード数「3」が変更条件一覧ACL1中のノード数「100」と異なるため、変更条件を満たさないと判定する。また、情報処理装置100は、グラフGR11−2において、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値は「2」であり、閾値ETH1未満であるため、変更条件一覧ACL2に示すエッジの統計値が閾値ETH1以上という変更条件を満たさないと判定する。このように、情報処理装置100は、グラフGR11−2が変更条件を満たさないと判定する(ステップS14−4)。そのため、情報処理装置100は、連結条件を変更せずに、処理を続行する。すなわち、情報処理装置100は、入力閾値「2」及び出力閾値「1」を変更せずに、処理を続行する。
そして、情報処理装置100は、ノードN4、N5等を新規追加する(ステップS15−1)。例えば、情報処理装置100は、ノードN4、N5を含む97個のノードを順次グラフGR11−2に追加する。図1の例では、情報処理装置100は、グラフGR11−2にノードN4を追加した後、ノードN5等の96個のノードを順次グラフGR11に追加する。
そして、情報処理装置100は、グラフを探索する(ステップS15−2)。図1の例では、情報処理装置100は、追加したノードN4をクエリとして、グラフGR11−2を探索する。情報処理装置100は、図16に示すような処理手順によりグラフGR11−2を探索し、ノードN4の近傍ノードとして、選択数「2」に対応する2個のノードN1、N3を選択する。また、図1の例では、ノードN3の方がノードN1よりもノードN4の近傍に位置する。例えば、情報処理装置100は、図15に示すような木構造の起点情報を用いて、グラフGR11−2のノードN1〜N3のうち、ノードN3を起点ノードに決定してもよい。
そして、情報処理装置100は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第1グラフに追加することにより、第2グラフを生成する(ステップS15−3)。図1の例では、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN4と近傍ノードであるノードN1、N3との間を連結する有向エッジを第1グラフであるグラフGR11−2に追加することにより、第2グラフであるグラフGR11−3を生成する。具体的には、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN4に2本の入力エッジ及び1本の出力エッジが連結されるようにグラフGR11−3を生成する。
情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に2個のノードにノードN4への入力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が最も短いノードN3にノードN4へ入力するエッジE7を連結する。これにより、情報処理装置100は、ノードN4の近傍ノードであるノードN3とノードN4とを連結する。
情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が2番目に短いノードN1にノードN4へ入力するエッジE6を連結する。これにより、情報処理装置100は、ノードN4の近傍ノードであるノードN1とノードN4とを連結する。
また、情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に1個のノードにノードN4からの出力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が最も短いノードN3にノードN4から出力するエッジE8を連結する。これにより、情報処理装置100は、ノードN4とその近傍ノードであるノードN3とを連結する。これにより、情報処理装置100は、追加したノードN4に2本の入力エッジE6、E7及び1本の出力エッジE8が連結されたグラフGR11−3を生成する。
また、情報処理装置100は、ノードN5等の96個のノードについても、ノードN4と同様に、順次グラフGR11に追加することにより、グラフGR11−3を生成する。
例えば、ノードN4追加後にノードN5が追加された場合、情報処理装置100は、ノードN5の近傍ノードとして、ノードN1、N4を選択する。また、図1の例では、ノードN1の方がノードN4よりもノードN5の近傍に位置する。そして、情報処理装置100は、ノードN5への入力エッジであるエッジN9をノードN1へ連結し、ノードN5への入力エッジであるエッジN10をノードN4へ連結する。また、情報処理装置100は、ノードN5からの出力エッジであるエッジN11をノードN1へ連結する。これにより、情報処理装置100は、追加したノードN5に2本の入力エッジE9、E10及び1本の出力エッジE11が連結されたグラフGR11−3を生成する。また、情報処理装置100は、ノードN4、N5以外の残りの95個のノードについても、ノードN4、N5と同様に、順次グラフGR11に追加することにより、グラフGR11−3を生成する。
また、情報処理装置100は、グラフGR11−3に基づいて、決定用情報一覧DFI3を生成する。例えば、情報処理装置100は、決定用情報一覧DFI2を更新することにより、決定用情報一覧DFI3を生成する。情報処理装置100は、グラフGR11−3に含まれるノード数が100個であることや、グラフGR11−3に含まれるエッジ数が200本であることを示す決定用情報一覧DFI3を生成する。例えば、情報処理装置100は、記憶部120(図3参照)に記憶された決定用情報一覧DFI2を決定用情報一覧DFI3に更新してもよい。
そして、情報処理装置100は、グラフGR11−3が変更条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−3に含まれるノード数が100個であるため、変更条件一覧ACL1に示すノード数が100個であるという変更条件を満たすと判定する。例えば、情報処理装置100は、決定用情報一覧DFI3中のノード数「100」と、変更条件一覧ACL1中のノード数「100」とを比較し、決定用情報一覧DFI3中のノード数「100」が変更条件一覧ACL1中のノード数「100」と一致するため、変更条件を満たすと判定する。このように、情報処理装置100は、グラフGR11−3が変更条件を満たすと判定する(ステップS15−4)。
そのため、情報処理装置100は、連結条件を変更する(ステップS16)。図1の例では、情報処理装置100は、条件を満たした変更条件一覧ACL1の変更内容に基づいて、連結条件を変更する。情報処理装置100は、変更条件一覧ACL1に示すように、入力閾値を1増加させる。情報処理装置100は、変更条件一覧ACL1中の変更内容に基づいて、連結条件一覧LCL2を生成する。例えば、情報処理装置100は、連結条件一覧LCL1を更新することにより、連結条件一覧LCL2を生成する。情報処理装置100は、入力閾値が「3」であり、出力閾値が「1」であることを示す連結条件一覧LCL2を生成する。例えば、情報処理装置100は、連結条件情報記憶部122等(図5参照)に記憶された連結条件一覧LCL1に示す情報を連結条件一覧LCL2に示す情報に更新してもよい。
情報処理装置100は、ステップS16以後の処理においては、入力閾値を「3」として、処理を続行する。このように、情報処理装置100は、グラフの生成過程において動的に連結条件を変更することにより、グラフの生成具体等に応じて適切にグラフの生成条件を変更することができるため、適切なグラフ生成を行うことができる。また、情報処理装置100は、連結条件の変更に応じて、選択数を更新する。図1の例では、情報処理装置100は、より大きな値である入力閾値「3」を選択数に決定する。すなわち、情報処理装置100は、選択数を「2」から「3」に更新する。
そして、情報処理装置100は、ノードN11等を新規追加する(ステップS17−1)。例えば、情報処理装置100は、ノードN11を含む多数(例えば1000個等)のノードを順次グラフGR11−3に追加する。図1の例では、情報処理装置100は、グラフGR11−3にノードN11を追加した後、残りの多数のノードを順次グラフGR11に追加する。
そして、情報処理装置100は、グラフを探索する(ステップS17−2)。図1の例では、情報処理装置100は、追加したノードN11をクエリとして、グラフGR11−3を探索する。情報処理装置100は、図16に示すような処理手順によりグラフGR11−3を探索し、ノードN11の近傍ノードとして、選択数「3」に対応する3個のノードN1、N4、N5を選択する。また、図1の例では、ノードN5が最もノードN11の近傍に位置し、ノードN5、N1、N4の順でノードN11の近傍に位置する。例えば、情報処理装置100は、図15に示すような木構造の起点情報を用いて、グラフGR11−3のノードN1〜N5等を含む100個のノードのうち、ノードN5を起点ノードに決定してもよい。
そして、情報処理装置100は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第1グラフに追加することにより、第2グラフを生成する(ステップS17−3)。図1の例では、情報処理装置100は、連結条件一覧LCL2に基づいて、ノードN11と近傍ノードであるノードN1、N4、N5との間を連結する有向エッジを第1グラフであるグラフGR11−3に追加することにより、第2グラフであるグラフGR11−4を生成する。具体的には、情報処理装置100は、連結条件一覧LCL2に基づいて、ノードN11に3本の入力エッジ及び1本の出力エッジが連結されるようにグラフGR11−4を生成する。
情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に3個のノードにノードN11への入力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N4、N5のうち、距離が最も短いノードN5にノードN11へ入力するエッジE13を連結する。これにより、情報処理装置100は、ノードN11の近傍ノードであるノードN5とノードN11とを連結する。
情報処理装置100は、選択した近傍ノードであるノードN1、N4、N5のうち、距離が2番目に短いノードN1にノードN11へ入力するエッジE14を連結する。これにより、情報処理装置100は、ノードN11の近傍ノードであるノードN1とノードN11とを連結する。
情報処理装置100は、選択した近傍ノードであるノードN1、N4、N5のうち、距離が3番目に短いノードN4にノードN11へ入力するエッジE15を連結する。これにより、情報処理装置100は、ノードN11の近傍ノードであるノードN4とノードN11とを連結する。
また、情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に1個のノードにノードN11からの出力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N4、N5のうち、距離が最も短いノードN5にノードN11から出力するエッジE12を連結する。これにより、情報処理装置100は、ノードN11とその近傍ノードであるノードN5とを連結する。これにより、情報処理装置100は、追加したノードN11に3本の入力エッジE13、E14、及び1本の出力エッジE12が連結されたグラフGR11−4を生成する。
また、情報処理装置100は、ノードN11以外の他のノードについても、ノードN11と同様に、順次グラフGR11に追加することにより、グラフGR11−4を生成する。
また、情報処理装置100は、グラフGR11−4に基づいて、決定用情報一覧DFI4を生成する。例えば、情報処理装置100は、決定用情報一覧DFI3を更新することにより、決定用情報一覧DFI4を生成する。情報処理装置100は、グラフGR11−4に含まれるノード数がNNUM1個であることや、グラフGR11−4に含まれるエッジ数がENUM1本であることや、グラフGR11−4のエッジ統計値がSVL1であることを示す決定用情報一覧DFI4を生成する。決定用情報一覧DFI4では、各値をNNUM1やENUM1やSVL1等の抽象的な符号で示すが、各値は具体的な数値であるものとする。例えば、ノード数NNUM1は、「10000」であり、エッジ数ENUM1は「25000」であり、エッジ統計値SVL1は「5」であるものとする。例えば、情報処理装置100は、記憶部120(図3参照)に記憶された決定用情報一覧DFI3を決定用情報一覧DFI4に更新してもよい。
そして、情報処理装置100は、グラフGR11−4が変更条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−4に含まれるノード数がノード数NNUM1個(10000個等)であり100より大きいため、変更条件一覧ACL1に示すノード数が100個であるという変更条件を満たさないと判定する。例えば、情報処理装置100は、決定用情報一覧DFI1中のノード数「NNUM1」と、変更条件一覧ACL1中のノード数「100」とを比較し、決定用情報一覧DFI4中のノード数「NNUM1」が変更条件一覧ACL1中のノード数「100」と異なるため、変更条件を満たさないと判定する。
また、情報処理装置100は、グラフGR11−4において、入力エッジ数が多い上位20%のノードの等の入力エッジ数の平均値、すなわちエッジ統計値SVL1は「5」であり、閾値ETH1である「5」以上であるため、変更条件一覧ACL2に示すエッジの統計値が閾値ETH1以上という変更条件を満たすと判定する。このように、情報処理装置100は、グラフGR11−4が変更条件を満たすと判定する(ステップS17−4)。
そのため、情報処理装置100は、連結条件を変更する(ステップS18)。図1の例では、情報処理装置100は、条件を満たした変更条件一覧ACL2の変更内容に基づいて、連結条件を変更する。情報処理装置100は、変更条件一覧ACL2に示すように、入力閾値を1増加させ、出力閾値を5増加させる。情報処理装置100は、変更条件一覧ACL2中の変更内容に基づいて、連結条件一覧LCL3を生成する。例えば、情報処理装置100は、連結条件一覧LCL2を更新することにより、連結条件一覧LCL3を生成する。情報処理装置100は、入力閾値が「4」であり、出力閾値が「6」であることを示す連結条件一覧LCL3を生成する。例えば、情報処理装置100は、連結条件情報記憶部122等(図5参照)に記憶された連結条件一覧LCL2に示す情報を連結条件一覧LCL3に示す情報に更新してもよい。
情報処理装置100は、ステップS18以後の処理においては、入力閾値を「4」、入力閾値を「6」として、処理を続行する。このように、情報処理装置100は、グラフの生成過程において動的に連結条件を変更することにより、グラフの生成具体等に応じて適切にグラフの生成条件を変更することができるため、適切なグラフ生成を行うことができる。また、情報処理装置100は、連結条件の変更に応じて、選択数を更新する。図1の例では、情報処理装置100は、より大きな値である出力閾値「6」を選択数に決定する。すなわち、情報処理装置100は、選択数を「3」から「6」に更新する。
上述したように、情報処理装置100は、生成中のグラフにノードが追加された場合、生成中のグラフを探索し、追加されたノード(追加ノード)に対応する近傍ノードを高速に選択する。そして、情報処理装置100は、選択した近傍ノードのうち、生成中に動的に変更される連結条件に基づくノードと、追加ノードとの間に有効エッジを連結する。このように、情報処理装置100は、生成中のグラフの生成状況に応じて出力閾値や入力閾値等の連結条件を更新することにより、適切な連結条件に変更することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
〔1−1.グラフ規模に応じた連結エッジ数の増加〕
例えば、グラフの生成時において、生成の初期段階で追加されたノードには、多くのエッジが連結される傾向がある。例えば、追加したノードに3本のエッジ(2本の入力エッジ及び1本の出力エッジ等)を連結する場合であっても、最初に登録(追加)したノードには、数千や数万のエッジが連結される。そのため、情報処理装置100は、グラフの生成が進むほど、連結するエッジ数を増加させることにより、いつノードが追加されたかにより生じるエッジのばらつきを抑制することができるため、検索に用いるグラフを適切に生成することができる。
例えば、情報処理装置100は、グラフの規模に応じて動的に連結条件を変更する。この場合、情報処理装置100は、第1グラフのノード数が第1閾値(例えば千個)までの第1段階では、追加ノードに3本のエッジ(1本の入力エッジ及び2本の出力エッジ等)を連結する。例えば、情報処理装置100は、グラフのノード数が千個に達するまで、3本のエッジ(1本の入力エッジ及び2本の出力エッジ等)を連結する連結条件に基づいて、グラフにエッジを追加する。
そして、情報処理装置100は、第1グラフのノード数が第2閾値(例えば一万個)までの第2段階では、追加ノードに5本のエッジ(2本の入力エッジ及び3本の出力エッジ等)を連結する。例えば、情報処理装置100は、グラフのノード数が第1閾値の変更条件を満たす場合、連結条件を5本のエッジ(2本の入力エッジ及び3本の出力エッジ等)に変更し、グラフにノードを追加する。情報処理装置100は、グラフのノード数が一万個に達するまで、5本のエッジ(2本の入力エッジ及び3本の出力エッジ等)を連結する連結条件に基づいて、グラフにエッジを追加する。
そして、情報処理装置100は、第1グラフのノード数が第3閾値(例えば十万個)までの第3段階では、追加ノードに10本(4本の入力エッジ及び6本の出力エッジ等)のエッジを連結する。例えば、情報処理装置100は、グラフのノード数が第2閾値の変更条件を満たす場合、連結条件を10本(4本の入力エッジ及び6本の出力エッジ等)に変更し、グラフにノードを追加する。情報処理装置100は、グラフのノード数が十万個に達するまで、10本(4本の入力エッジ及び6本の出力エッジ等)を連結する連結条件に基づいて、グラフにエッジを追加する。また、情報処理装置100は、グラフのノード数が第3閾値の変更条件を満たす場合、連結条件をさらにエッジ数を増加した条件に変更し、グラフにノードを追加する。
このように、情報処理装置100は、段階的に連結するエッジ数を増加させることにより、エッジのばらつきを抑制することができるため、検索に用いるグラフを適切に生成することができる。
〔1−2.グラフデータ〕
なお、図1の例では、情報処理装置100が最初(ノード数が0個の状態)からグラフGR11を生成する場合、すなわちグラフを新規に生成する場合を示したが、情報処理装置100は、新規生成に限らず、種々のグラフを生成してもよい。例えば、情報処理装置100は、ノードやエッジが含まれるグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。例えば、情報処理装置100は、エッジが調整され再構築されたグラフに、新たに追加されたオブジェクトに対応するノードを追加することにより、グラフを生成してもよい。例えば、情報処理装置100は、図13に示す再構築グラフGR21に、新たに追加されたオブジェクトに対応するノードを追加し、再構築グラフGR21を更新することにより、グラフを生成してもよい。
〔1−3.連結条件〕
図1の例では、入力閾値や出力閾値を所定数だけ増加させる場合を示したが、情報処理装置100は、入力閾値や出力閾値について種々の態様により変更を行ってもよい。例えば、一定数の初期ノードの出力エッジの平均値を付与する入力エッジと出力エッジ数の総数としてもよい。例えば、最初に追加した一定数(例えば50個等)のノード(初期ノード)の出力エッジの平均値を、入力閾値と出力閾値の総数としてもよい。また、情報処理装置100は、入力閾値や出力閾値を所定の割合だけ増加させてもよい。例えば、対象が「入力エッジ」であり、変更条件ACDXの変更内容が「10%増加」であり、入力閾値が「10」本である場合、情報処理装置100は、入力閾値が「10」本を「11(=10+10*0.1)」本に増加させてもよい。また、情報処理装置100は、入力閾値や出力閾値の増加に限らず、入力閾値や出力閾値を減少させる変更を行ってもよい。なお、連結条件は、入力閾値や出力閾値に限らず、グラフ生成時においてエッジの連結に関連する条件であれば、どのような条件であってもよい。
〔1−4.変更条件〕
なお、図1に示す変更条件は一例であり、情報処理装置100は、種々の変更条件を用いてもよい。例えば、情報処理装置100は、グラフに追加された追加ノードの割合に基づく変更条件を用いてもよい。例えば、情報処理装置100は、図13中の再構築条件を変更条件として用いてもよい。例えば、情報処理装置100は、グラフに含まれるノードのうち、追加ノードの割合が所定の閾値以上であることを条件とする変更条件を用いてもよい。例えば、情報処理装置100は、グラフに含まれるノードのうち、有向エッジの調整処理である再構築処理以後に追加された追加ノードの割合が所定の閾値以上であることを条件とする変更条件を用いてもよい。
また、例えば、情報処理装置100は、グラフの生成時間に関する変更条件を用いてもよい。この場合、情報処理装置100は、生成処理に要する時間(生成時間)を推定する。例えば、情報処理装置100は、追加するノードの数など、グラフを構成するノード数(構成ノード数)を示す情報を取得した場合、その構成ノード数に基づいて、生成時間を推定してもよい。例えば、情報処理装置100は、グラフ生成開始時から所定数(例えば10や100等)のノードを追加時の処理時間(サンプル時間)を用いて、生成時間を推定してもよい。
例えば、情報処理装置100は、サンプル時間と、構成ノード数と、連結条件とを用いて、生成時間(推定生成時間)を推定してもよい。例えば、情報処理装置100は、過去のグラフ生成の履歴情報を用いて、推定生成時間を推定してもよい。例えば、情報処理装置100は、サンプル時間、構成ノード数及び連結条件の組合せと、過去のグラフ生成の履歴情報とを比較し、履歴情報のうち、サンプル時間、構成ノード数及び連結条件の組合せと類似する履歴に含まれる処理時間を、推定生成時間として推定してもよい。
そして、情報処理装置100は、指定された生成時間(指定時間)を超過すると推定される場合、連結エッジ数を減少させるように連結条件を変更してもよい。例えば、情報処理装置100は、推定生成時間と指定時間とを比較し、推定生成時間が指定時間を超える場合、連結エッジ数を減少させるように連結条件を変更してもよい。
〔1−5.起点用情報〕
例えば、情報処理装置100は、図15に示すようなツリー構造(木構造)に関する起点用情報IND11を起点用情報(起点用インデックス)として用いてもよい。図15は、実施形態に係る情報処理に用いる起点用情報の一例を示す図である。例えば、起点用情報IND11は、グラフGR11中のノードに到達可能なツリー構造を有するインデックスである。図15の例では説明を簡単にするために、起点用情報IND11は、ノードN1〜N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。例えば、起点用情報IND11は、グラフGR11中の全ノードに到達可能であってもよい。
なお、起点用情報IND11のような起点用情報は、情報処理装置100が生成してもよいし、情報処理装置100は、起点用情報を情報提供装置50等の他の外部装置から取得してもよい。例えば、情報処理装置100は、起点用情報を生成する場合は、木構造に関する種々の従来技術を適宜用いて、グラフ(例えばグラフGR11)に含まれるノードをリーフとする木構造の起点用情報(例えば起点用情報IND11)を生成する。また、情報処理装置100は、新たなノードがグラフ(例えばグラフGR11)に追加された場合、新たに追加されたオブジェクトに対応するノード(「追加ノード」ともいう)をリーフとして木構造の起点用情報(例えば起点用情報IND11)に追加する。これにより、情報処理装置100は、新たなノードがグラフに追加された場合、起点用情報を更新する。すなわち、情報処理装置100は、新たなノードがグラフに追加された場合、新たなノードをリーフとして追加した起点用情報を生成する。
上記のように、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、起点用情報記憶部125(図8参照)に記憶された起点用情報IND11のような、起点用インデックスを生成する。例えば、情報処理装置100は、新たにオブジェクトが追加された場合、新たに追加されたオブジェクトに対応するノードをリーフとして追加することにより、起点用情報IND11を更新してもよい。図1の例では、情報処理装置100は、ノードN3やノードN4等が追加される毎に、ノードN3やノードN4等をリーフとして追加することにより、起点用情報IND11を更新してもよい。
また、情報処理装置100は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置100は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置100は、情報提供装置50から起点用情報IND11を取得する場合は、情報提供装置50へグラフGR11を送信する。そして、情報処理装置100は、グラフGR11を受信した情報提供装置50が生成した起点用情報IND11を、情報提供装置50から取得する。例えば、情報処理装置100は、起点用情報IND11と追加ノードに関する情報とを情報提供装置50へ提供することにより、情報提供装置50から追加ノードにより更新された起点用情報IND11を取得してもよい。なお、上記は一例であり、情報提供装置50は、起点用情報IND11を取得可能であれば、どのような手段により起点用情報IND11を取得してもよい。
また、情報処理装置100は、図15中のインデックス情報群GINF11に示すような起点用情報IND11を用いて起点ノードを決定してもよい。図15の例では、情報処理装置100は、起点用情報IND11に基づいて、クエリQE1に対応する起点ノードを決定する。クエリQE1は、新たに追加するオブジェクトに対応するノードやグラフGR11を用いた検索を行う対象等であってもよい。すなわち、情報処理装置100は、グラフ生成時や検索時において、起点用情報IND11を用いて、起点ノードを決定する。
具体的には、情報処理装置100は、起点用情報記憶部125(図8参照)に記憶された起点用情報IND11を用いて、起点ノードを決定する。図15中の起点用情報IND11は、図8中の起点用情報記憶部125に示す階層構造を有する。例えば、起点用情報IND11は、ルートRTの直下に位置する第1階層のノード(ベクトル)が、節点VT1、VT2、VT3等であることを示す。また、例えば、起点用情報IND11は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4(図示せず)であることを示す。例えば、起点用情報IND11は、節点VT2−1の直下の第3階層のノードが、ノードN1、N2、すなわちグラフGR11中のノード(ベクトル)であることを示す。また、起点用情報IND11は、節点VT2−2の直下の第3階層のノードが、ノードN3、N4、N5、すなわちグラフGR11中のノード(ベクトル)であることを示す。
例えば、情報処理装置100は、図1中の起点用情報IND11に示すような木構造型の起点用インデックス情報を用いて、グラフGR11における起点ノードを決定する。図1の例では、情報処理装置100は、クエリQE1に基づいて、起点用情報IND11を上(ルートRT)から下へ辿ることにより、起点用情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。例えば、情報処理装置100は、追加ノードであるクエリQE1に対応する適切な起点ノードを高速に決定することができる。
なお、情報処理装置100は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図15の例に示す起点用情報(起点用インデックス)は一例であり、情報処理装置100は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索インデックス(起点用情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスを起点用インデックスとして生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索インデックスを起点用インデックスとして生成してもよい。
また、例えば、情報処理装置100は、その他の木構造を有する起点用インデックスとして生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフに接続する種々の起点用インデックスを生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフ中のノードに対応する種々の起点用インデックスを生成してもよい。また、情報処理装置100は、このような起点用インデックスを用いて検索を行う場合、起点用インデックスを辿って到達したリーフ(ノード)からグラフを探索してもよい。
なお、上述したような起点用インデックスは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能な起点用インデックスであれば、どのようなデータ構造の起点用インデックスを生成してもよい。情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関する検索をより高速に実行可能にすることができる。
〔2.情報処理システムの構成〕
図2に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図2は、実施形態に係る情報処理システムの構成例を示す図である。なお、図2に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
情報処理装置100は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第1グラフを用いて、第2グラフを生成する情報処理装置である。すなわち、情報処理装置100は、第1グラフを用いて、第2グラフを生成する生成装置である。例えば、情報処理装置100は、第1グラフ中の複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。そして、情報処理装置100は、一のノードを第1グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
例えば、情報処理装置100は、端末装置からクエリ情報(以下、単に「クエリ」ともいう)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
〔3.情報処理装置の構成〕
次に、図3を用いて、実施形態に係る情報処理装置100の構成について説明する。図3は、実施形態に係る情報処理装置100の構成例を示す図である。図3に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図2中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図3に示すように、オブジェクト情報記憶部121と、連結条件情報記憶部122と、変更条件情報記憶部123と、グラフデータ記憶部124と、起点用情報記憶部125と、再構築条件情報記憶部126と、再構築グラフデータ記憶部127とを有する。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図4は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図4に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図4の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
例えば、図4の例では、ID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(連結条件情報記憶部122)
実施形態に係る連結条件情報記憶部122は、エッジの連結に関する連結条件に関する各種情報を記憶する。図5は、実施形態に係る連結条件情報記憶部の一例を示す図である。図5に示す連結条件情報記憶部122は、「連結条件ID」、「対象」、「閾値名」、「値」といった項目が含まれる。
「連結条件ID」は、有向エッジの連結に関する連結条件を識別する情報を示す。「対象」は、連結条件IDにより識別される連結条件の対象を示す。「閾値名」は、閾値を識別するための情報(名称)を示す。また、「値」は、対応する閾値の具体的な値を示す。
図5の例では、連結条件ID「LCD1」により識別される連結条件(連結条件LCD1)は、入力エッジを対象とする条件であることを示す。連結条件LCD1として用いられる条件は、入力閾値であり、その値は「ITH1」であることを示す。なお、図5に示す例では、「入力閾値」の値は、「ITH1」といった抽象的な符号を図示するが、「2」や「10」等の具体的な数値であるものとする。
また、図5の例では、連結条件ID「LCD2」により識別される連結条件(連結条件LCD2)は、出力エッジを対象とする条件であることを示す。連結条件LCD2として用いられる条件は、出力閾値であり、その値は「OTH1」であることを示す。なお、図5に示す例では、「出力閾値」の値は、「OTH1」といった抽象的な符号を図示するが、「1」や「20」等の具体的な数値であるものとする。
なお、連結条件情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(変更条件情報記憶部123)
実施形態に係る変更条件情報記憶部123は、連結条件の変更に関する変更条件に関する各種情報を記憶する。図6は、実施形態に係る変更条件情報記憶部の一例を示す図である。図6に示す変更条件情報記憶部123は、「変更条件ID」、「決定用情報」、「変更情報」といった項目を有する。
「変更条件ID」は、連結条件の変更に関する条件を識別する情報を示す。「決定用情報」は、連結条件を変更するかの決定(判定)に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、連結条件を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図6に示す例では、「閾値」の値は、「NTH1」といった抽象的な符号を図示するが、「100」や「5000」や「5%」や「0.2」等の具体的な数値であるものとする。
「変更情報」は、変更される連結条件やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる連結条件を示す。「変更対象」には、対象とする連結条件を識別する情報(連結条件ID等)が記憶される。「変更内容」は、対応する条件を満たす場合に連結条件を変更する具体的な内容を示す。なお、図6に示す例では、「変更内容」は、「AINF11」といった抽象的な符号を図示するが、「+1」や「5増加」や「2減少」や「10%増加」や「5%減少」等の種々の変更内容であってもよい。
図6の例では、変更条件ID「ACD1」により識別される変更条件(変更条件ACD1)は、追加ノード数に関する情報を判定に用いる条件であることを示す。変更条件ACD1は、閾値「NTH1」であることを示す。また、変更条件ACD1を満たす場合、変更対象となる連結条件は、連結条件LCD1と連結条件LCD2であることを示す。変更条件ACD1を満たす場合、連結条件LCD1は変更内容AINF11に応じて変更されることを示す。例えば、変更内容AINF11が「2増加」である場合、情報処理装置100は、変更条件ACD1を満たすと判定した場合に、連結条件LCD1の入力閾値ITH1の値を2増加させる。また、変更条件ACD1を満たす場合、連結条件LCD2は変更内容AINF12に応じて変更されることを示す。例えば、変更内容AINF12が「1減少」である場合、情報処理装置100は、変更条件ACD2を満たすと判定した場合に、連結条件LCD2の出力閾値OTH1の値を1減少させる。
なお、変更条件情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフデータ記憶部124)
実施形態に係るグラフデータ記憶部124は、グラフデータに関する各種情報を記憶する。例えば、グラフデータ記憶部124は、生成したグラフデータを記憶する。図7は、実施形態に係るグラフデータ記憶部の一例を示す図である。図7に示すグラフデータ記憶部124は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図7の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図7の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
図7の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図7の例では、グラフデータにおけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E3」により識別されるエッジ(エッジE3)が、ノードID「N3」により識別されるノード(ノードN3)に連結されることを示す。すなわち、図7の例では、グラフデータにおけるノードN1からはエッジE3によりノードN3へ辿ることができることを示す。
なお、グラフデータ記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフデータ記憶部124は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフデータ記憶部124は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。また、例えば、グラフデータ記憶部124は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータGR11は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータGR11は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータGR11は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
(起点用情報記憶部125)
実施形態に係る起点用情報記憶部125は、起点用情報に関する各種情報を記憶する。図8は、実施形態に係る起点用情報記憶部の一例を示す図である。具体的には、図8の例では、起点用情報記憶部125は、ツリー構造の起点用インデックス情報を示す。図8の例では、起点用情報記憶部125は、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」〜「第3階層」に限らず、インデックスの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、インデックスの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、インデックスの根(ルート)に直接結ばれる階層に対応するノードとなる。
「第2階層」は、インデックスの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、インデックスの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
図8に示す例においては、起点用情報記憶部125には、図1中の起点用情報IND11に対応する情報が記憶される。例えば、起点用情報記憶部125は、第1階層のノードが、節点VT1〜VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
また、起点用情報記憶部125は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4であることを示す。また、起点用情報記憶部125は、節点VT2−1の直下の第3階層のノードが、ノードN1、ノードN2のグラフGR11中のノード(ベクトル)であることを示す。起点用情報記憶部125は、節点VT2−2の直下の第3階層のノードが、ノードN3、ノードN4、ノードN5のグラフGR11中のノード(ベクトル)であることを示す。
なお、起点用情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(再構築条件情報記憶部126)
実施形態に係る再構築条件情報記憶部126は、エッジを調整するグラフの再構築を行うかの決定に用いる条件に関する再構築条件に関する各種情報を記憶する。図9は、実施形態に係る再構築条件情報記憶部の一例を示す図である。図9に示す再構築条件情報記憶部126は、「再構築条件ID」、「決定用情報」といった項目を有する。
「再構築条件ID」は、グラフの再構築処理の実行の判定に関する条件を識別する情報を示す。「決定用情報」は、再構築を実行するかの決定(判定)に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、再構築を実行するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図9に示す例では、「閾値」の値は、「NTH2」といった抽象的な符号を図示するが、「10%」や「0.3」や「500」や「10000」等の具体的な数値であるものとする。
図9の例では、再構築条件ID「RCD1」により識別される再構築条件(再構築条件RCD1)は、追加ノード割合に関する情報を判定に用いる条件であることを示す。再構築条件RCD1は、閾値「NTH2」であることを示す。すなわち、情報処理装置100は、再構築条件RCD1を満たすと判定した場合、グラフの再構築処理を実行する。再構築条件RCD1が「10%」である場合、情報処理装置100は、グラフ中のノードのうち、追加ノードの割合が10%に達した際に、グラフの再構築処理を実行する。
なお、再構築条件情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(再構築グラフデータ記憶部127)
実施形態に係る再構築グラフデータ記憶部127は、再構築されたグラフデータに関する各種情報を記憶する。図10は、実施形態に係る再構築グラフデータ記憶部の一例を示す図である。図10の例では、再構築グラフデータ記憶部127は、「ノードID」、「オブジェクトID」、および「有向エッジ情報」といった項目を有する。また、「有向エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「有向エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図10の例では、「有向エッジ情報」は、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図10の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
図10の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図10の例では、グラフデータにおけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E13」により識別されるエッジ(エッジE13)が、ノードID「N6」により識別されるノード(ノードN6)に連結されることを示す。すなわち、図10の例では、グラフデータにおけるノードN1からはエッジE13によりノードN6へ辿ることができることを示す。
なお、再構築グラフデータ記憶部127は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、再構築グラフデータ記憶部127は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、再構築グラフデータ記憶部127は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。また、例えば、再構築グラフデータ記憶部127は、各ノードへの入力エッジの数を示す情報が記憶されてもよい。
また、図10では、再構築後のグラフデータを再構築グラフデータ記憶部127に記憶する場合を図示するが、再構築が完了後のグラフデータは、グラフデータ記憶部124に記憶される。例えば、情報処理装置100は、再構築グラフデータ記憶部127に、再構築途中のグラフデータを記憶し、再構築完了後において、再構築完了後のグラフデータにより、グラフデータ記憶部124を更新する。例えば、情報処理装置100は、再構築完了後において、再構築グラフデータ記憶部127に記憶されたグラフデータを、グラフデータ記憶部124に格納することにより、グラフデータ記憶部124を更新する。なお、上記は一例であり、グラフデータ記憶部124に再構築後のグラフデータが記憶されれば、どのような方法により、グラフデータ記憶部124を更新してもよい。
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図3に示すように、制御部130は、取得部131と、選択部132と、決定部133と、生成部134と、検索部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、連結条件情報記憶部122や、変更条件情報記憶部123や、グラフデータ記憶部124や、起点用情報記憶部125や、再構築条件情報記憶部126や、再構築グラフデータ記憶部127等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。
取得部131は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第1グラフとを取得する。
取得部131は、新規に追加されたオブジェクト(新規追加オブジェクト)を取得する。例えば、情報処理装置100は、情報提供装置50等の外部装置から新規に追加されたオブジェクト(新規追加オブジェクト)を取得してもよい。取得部131は、新規追加オブジェクトを識別する情報(オブジェクトID)と、新規追加オブジェクトから生成されたベクトルとを対応付けた情報をオブジェクト情報として取得してもよい。この場合、取得部131は、取得したオブジェクト情報をオブジェクト情報記憶部121に記憶させてもよい。そして、取得部131は、新規追加オブジェクトを取得した場合、新規追加オブジェクトに対応するノードする。
また、取得部131は、グラフデータを取得してもよい。例えば、情報処理装置100は、図1中のグラフGR11−1を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフデータを取得してもよい。
例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
(選択部132)
選択部132は、各種情報を選択する。選択部132は、各種情報を抽出する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。
選択部132は、第1グラフに基づいて、複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。選択部132は、入力閾値または出力閾値の数(選択数)の近傍ノードを選択する。選択部132は、入力閾値が出力閾値以上である場合、入力閾値の数を選択数として、選択数の近傍ノードを選択する。選択部132は、出力閾値が入力閾値より大きい場合、出力閾値の数を選択数として、選択数の近傍ノードを選択する。
選択部132は、第1グラフを探索することにより、近傍ノードを選択する。選択部132は、追加ノードをクエリとして、第1グラフを探索することにより、選択数の近傍ノードを選択する。選択部132は、図16に示すような検索処理により、第1グラフを探索することにより、近傍ノードを選択する。
選択部132は、暫定グラフを探索することにより、暫定グラフに含まれる各ノードに対応する近傍ノードを選択する。選択部132は、暫定グラフを探索することにより、選択数の近傍ノードを選択する。選択部132は、図16に示すような検索処理により、暫定グラフを探索することにより、近傍ノードを選択する。
なお、選択部132は、検索部135に要求することにより、検索部135に情報を探索させ、検索部135が探索した探索結果を用いてもよい。選択部132は、選択部132は、検索部135が探索した探索結果から情報を選択してもよい。選択部132は、第2グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、第2グラフに含まれる各ノードに対応する近傍ノードを選択する。
図1の例では、選択部132は、図16に示すような処理手順によりグラフを探索することにより、選択数の近傍ノードを選択する。選択部132は、図16に示すような処理手順によりグラフGR11−1を探索し、ノードN3の近傍ノードとして、選択数「2」に対応する2個のノードN1、N2を選択する。選択部132は、図16に示すような処理手順によりグラフGR11−2を探索し、ノードN4の近傍ノードとして、選択数「2」に対応する2個のノードN1、N3を選択する。選択部132は、図16に示すような処理手順によりグラフGR11−3を探索し、ノードN11の近傍ノードとして、選択数「3」に対応する3個のノードN1、N4、N5を選択する。
(決定部133)
決定部133は、各種情報を決定する。決定部133は、各種情報を判定する。決定部133は、各種情報を変更する。決定部133は、各種情報を更新する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を変更する。決定部133は、各種情報を更新する。
決定部133は、所定の条件である連結条件に関する変更条件に基づいて、連結条件を変更するかを決定する。決定部133は、第1グラフにおける複数のノードの数に関する変更条件に基づいて、連結条件を変更するかを決定する。決定部133は、第1グラフにおける複数のノードの数が所定の閾値以上である場合、連結条件を変更するかを決定する。決定部133は、第1グラフにおける複数のノードの数と所定の閾値とを比較し、その結果に応じて、連結条件を動的に変更する。
決定部133は、第1グラフにおける複数のノードのうち、所定の時点以後に追加されたノードである追加ノードの割合に関する変更条件に基づいて、連結条件を変更するかを決定する。決定部133は、第1グラフにおける複数のノードのうち、有向エッジの調整処理以後に追加された追加ノードの割合に関する変更条件に基づいて、連結条件を変更するかを決定する。
決定部133は、第1グラフにおける複数のノードのうち、追加ノードの割合が所定の閾値以上である場合、連結条件を変更するかを決定する。決定部133は、第1グラフにおける追加ノードの割合と所定の閾値とを比較し、その結果に応じて、連結条件を動的に変更する。決定部133は、第1グラフにおける有向エッジの数に関する変更条件に基づいて、連結条件を変更するかを決定する。決定部133は、第1グラフにおける有向エッジの統計的情報に関する変更条件に基づいて、連結条件を変更するかを決定する。
決定部133は、変更条件に基づいて、連結条件における有向エッジの数に関するエッジ数条件を変更する。決定部133は、第1グラフにおける複数のノードの数が多い程、エッジ数条件において指定される連結エッジ数を増加させる。決定部133は、指定された生成時間を超過すると推定される場合、エッジ数条件において指定される連結エッジ数を減少させる。
決定部133は、一のノードを起点とし他のノードを終点する出力エッジの数に関する出力数条件を含むエッジ数条件を変更する。決定部133は、他のノードを起点とし一のノードを終点とする入力エッジの数に関する入力数条件を含むエッジ数条件を変更する。
図1の例では、決定部133は、入力閾値「2」を選択数に決定する。決定部133は、生成中のグラフに対応する起点用情報を用いて起点ノードを決定する。また、決定部133は、連結条件の変更に応じて、選択数を更新する。決定部133は、入力閾値「3」を選択数に決定する。決定部133は、出力閾値「6」を選択数に決定する。決定部133は、選択数を「3」から「6」に更新する。
(生成部134)
生成部134は、各種情報を生成する。例えば、生成部134は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部134は、オブジェクト情報記憶部121や、連結条件情報記憶部122や、変更条件情報記憶部123や、グラフデータ記憶部124や、起点用情報記憶部125や、再構築条件情報記憶部126や、再構築グラフデータ記憶部127等から各種情報を生成する。例えば、生成部134は、グラフデータから第1グラフデータを生成する。例えば、生成部134は、第1グラフデータに新たに追加されたノードを追加した第2グラフデータを生成する。
生成部134は、一のノードを第1グラフに追加し、所定の条件により変更される有向エッジの連結に関する連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。生成部134は、決定部133により連結条件を変更すると決定された場合、変更後の連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
生成部134は、変更後のエッジ数条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。生成部134は、増加後の連結エッジ数に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。生成部134は、減少後の連結エッジ数に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
生成部134は、変更後の出力数条件に基づいて、近傍ノードのうち、出力数条件に対応する数の出力先ノードに、一のノードを起点とする出力エッジを連結した第2グラフを生成する。生成部134は、変更後のエッジ数条件に基づいて、近傍ノードのうち、入力数条件に対応する数の入力元ノードに、一のノードを終点とする入力エッジを連結した第2グラフを生成する。
生成部134は、第2グラフにおける有向エッジを更新することにより、第3グラフを生成する。生成部134は、第2グラフが、グラフの再構築に関する所定の条件を満たす場合、第3グラフを生成する。生成部134は、第2グラフの有向エッジを反転した反転エッジを追加した暫定グラフを生成し、生成した暫定グラフを用いて、第3グラフを生成する。生成部134は、連結条件に基づいて、各ノードと近傍ノードとの間を有向エッジにより連結した第3グラフを生成する。生成部134は、第2グラフに含まれる各ノードの近傍ノードに関する情報を用いて、第3グラフを生成する。
生成部134は、取得部131により新規に追加されたオブジェクトが取得された場合、新規に追加されたオブジェクトに対応するベクトルを生成してもよい。この場合、生成部134は、生成したベクトルをオブジェクトに対応付けてオブジェクト情報記憶部121に記憶させてもよい。
図1の例では、生成部134は、ノードN1が最初のノードであるため、ノードN1を含むグラフGR11を新規に生成する。生成部134は、連結条件一覧LCL1に基づいて、追加したノードN2に2本の入力エッジ及び1本の出力エッジが連結されるようにグラフを生成する。生成部134は、追加したノードN2に連結するエッジを追加することにより、グラフGR11−1を生成する。
生成部134は、グラフGR11−1に基づいて、決定用情報一覧DFI1を生成する。生成部134は、追加したノードN3に2本の入力エッジE3、E5及び1本の出力エッジE4が連結されたグラフGR11−2を生成する。
生成部134は、グラフGR11−2に基づいて、決定用情報一覧DFI2を生成する。生成部134は、追加したノードN4に2本の入力エッジE6、E7及び1本の出力エッジE8が連結されたグラフGR11−3を生成する。生成部134は、ノードN5等の96個のノードについても、ノードN4と同様に、順次グラフGR11に追加することにより、グラフGR11−3を生成する。
生成部134は、グラフGR11−3に基づいて、決定用情報一覧DFI3を生成する。生成部134は、追加したノードN11に3本の入力エッジE13、E14、及び1本の出力エッジE12が連結されたグラフGR11−4を生成する。生成部134は、変更条件一覧ACL1中の変更内容に基づいて、連結条件一覧LCL2を生成する。
生成部134は、グラフGR11−4に基づいて、決定用情報一覧DFI4を生成する。生成部134は、変更条件一覧ACL2中の変更内容に基づいて、連結条件一覧LCL3を生成する。
(検索部135)
検索部135は、オブジェクトに関する検索サービスを提供する。検索部135は、各種情報を探索する。検索部135は、各種情報を検索する。例えば、検索部135は、グラフデータを探索することにより、オブジェクトを検索する。例えば、検索部135は、取得部131により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索部135は、図16に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。なお、検索部135は、検索サービスを提供しない場合、検索部135を有しなくてもよい。
(提供部136)
提供部136は、各種情報を提供する。例えば、提供部136は、端末装置10や情報提供装置50に各種情報を提供する。例えば、提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部136は、検索部135により検索されたオブジェクトIDを情報提供装置50へ提供する。例えば、提供部136は、検索部135が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、検索部135により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
また、提供部136は、生成部134により生成された第2グラフデータを外部の情報処理装置へ提供してもよい。例えば、提供部136は、生成部134により生成されたグラフGR11を情報提供装置50に送信してもよい。
〔4.情報処理のフロー〕
次に、図11を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図11は、実施形態に係る情報処理の一例を示すフローチャートである。
図11に示すように、情報処理装置100は、一のオブジェクトを取得する(ステップS101)。例えば、情報処理装置100は、情報提供装置50からグラフに新たに追加するオブジェクト情報を取得する。
そして、情報処理装置100は、第1グラフを取得する(ステップS102)。例えば、情報処理装置100は、グラフデータ記憶部124(図7参照)に記憶されたグラフを第1グラフとして取得する。
そして、情報処理装置100は、第1グラフに基づいて、複数のノードのうち、一のオブジェクトに対応する一のノードの近傍ノードを選択する(ステップS103)。例えば、情報処理装置100は、追加する一のノードをクエリとして、第1グラフを探索することにより、近傍ノードを選択する。
そして、情報処理装置100は、一のノードを第1グラフに追加する(ステップS104)。そして、情報処理装置100は、有向エッジの連結に関する連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する(ステップS105)。
次に、図12を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図12は、実施形態に係る条件の変更処理の一例を示すフローチャートである。例えば、図12に示す条件の変更処理は、図11中のステップS101の前や、ステップS105の後に行われてもよい。
図12に示すように、情報処理装置100は、変更条件を満たすかどうかを判定する(ステップS201)。情報処理装置100は、変更条件を満たすと判定した場合(ステップS201:Yes)、変更条件に基づいて連結条件を変更する(ステップS202)。
情報処理装置100は、変更条件を満たさないと判定した場合(ステップS201:No)、連結条件を変更せずに処理を終了する。
〔5.再構築処理の例〕
図1の例では、ノードが追加される度に、追加ノードにエッジを連結する処理を繰り返すが、追加ノードの数が増えるにつれて、エッジの連結にばらつきが生じている場合等、エッジの調整処理が必要な場合がある。このような場合、連結済みのエッジを維持したまま、新たな追加ノードへの連結エッジを追加するだけでは、エッジの連結にばらつきを解消することが難しい。そのため、情報処理装置100は、エッジの調整処理が必要な場合、グラフ中の各ノードのエッジの連結を再度行う再構築処理を実行する。例えば、情報処理装置100は、グラフが再構築条件を満たす場合、そのグラフのエッジの連結を再度行う再構築処理を実行する。この再構築処理の点について、図13を用いて説明する。図13は、実施形態に係るグラフの再構築処理の一例を示す図である。なお、図1と同様の点については、適宜説明を省略する。また、図13に示す空間情報VS1−21〜VS1−24は、グラフデータの生成過程を模式的に示す図であり、空間情報VS1−21〜VS1−24に示す空間は、同一の空間であってもよい。また、空間情報VS1−21〜VS1−24について、特に区別なく説明する場合には、空間情報VS1と記載する。
図13の例では、情報処理装置100は、ノードN1〜N5等の9999個のノードを含むグラフGR11−21を生成する。例えば、情報処理装置100は、ノードN1〜N5等の9900個のノードを含むグラフ(初期グラフ)を用いて、その初期グラフに99個の追加ノードを追加して、グラフGR11−21を生成した場合を示す。図13の例では、情報処理装置100は、連結条件一覧LCL1の入力閾値「2」を選択数に決定する。
また、情報処理装置100は、グラフGR11−21に基づいて、決定用情報一覧DFI21を生成する。情報処理装置100は、グラフGR11−21に含まれるノード数が9999個であることや、グラフGR11−21に含まれる追加ノード数が99個であることを示す決定用情報一覧DFI21を生成する。例えば、情報処理装置100は、決定用情報一覧DFI21を記憶部120(図3参照)に記憶してもよい。
そして、情報処理装置100は、グラフGR11−21が再構築条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−21に含まれるノード数が9999個であり、追加ノード数が99個であるため、追加ノード割合を「0.0099(=99/9999)」と算出する。情報処理装置100は、グラフGR11−21の追加ノード割合が「0.0099」であるため、再構築条件一覧RCL21に示す追加ノード割合の閾値「0.1」以上であるという再構築条件を満たさないと判定する。そのため、情報処理装置100は、再構築処理を実行せずに、処理を続行する。
そして、情報処理装置100は、ノードN6を新規追加する(ステップS21−1)。例えば、情報処理装置100は、ノードN6をグラフGR11−21に追加する。
そして、情報処理装置100は、グラフを探索する(ステップS21−2)。図13の例では、情報処理装置100は、追加したノードN6をクエリとして、グラフGR11−21を探索する。情報処理装置100は、図16に示すような処理手順によりグラフGR11−21を探索し、ノードN6の近傍ノードとして、選択数「2」に対応する2個のノードN1、N3を選択する。また、図13の例では、ノードN1が最もノードN6の近傍に位置する。例えば、情報処理装置100は、図15に示すような木構造の起点情報を用いて、グラフGR11−21のノードN1〜N5等を含む9999個のノードのうち、ノードN1を起点ノードに決定してもよい。
そして、情報処理装置100は、連結条件に基づいて、ノードと近傍ノードとの間を連結する有向エッジを第1グラフに追加することにより、第2グラフを生成する(ステップS21−3)。図13の例では、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN6と近傍ノードであるノードN1、N3との間を連結する有向エッジを第1グラフであるグラフGR11−21に追加することにより、第2グラフであるグラフGR11−22を生成する。具体的には、情報処理装置100は、連結条件一覧LCL1に基づいて、ノードN6に2本の入力エッジ及び1本の出力エッジが連結されるようにグラフGR11−22を生成する。
情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に2個のノードにノードN6への入力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が最も短いノードN1にノードN6へ入力するエッジE13を連結する。これにより、情報処理装置100は、ノードN6の近傍ノードであるノードN1とノードN6とを連結する。
情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が2番目に短いノードN3にノードN6へ入力するエッジE14を連結する。これにより、情報処理装置100は、ノードN6の近傍ノードであるノードN3とノードN6とを連結する。図13中のグラフGR11−22では、紙面の関係上、グラフGR11−21で図示したエッジについては符号を省略し、両方向のエッジが連結される場合、双方向矢印で図示する。例えば、グラフGR11−22中のノードN3とノードN4との間を連結する双方向矢印は、ノードN3とノードN4との間がエッジE7、E8で連結されることを示す。
また、情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に1個のノードにノードN6からの出力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN1、N3のうち、距離が最も短いノードN1にノードN6から出力するエッジE12を連結する。これにより、情報処理装置100は、ノードN6とその近傍ノードであるノードN1とを連結する。これにより、情報処理装置100は、追加したノードN6に2本の入力エッジE13、E14及び1本の出力エッジE12が連結されたグラフGR11−22を生成する。このように、グラフGR11−22には、1個のノードN6が追加されたことにより、グラフGR11−22のノード数が10000(=9999+1)個になり、グラフGR11−22に含まれる追加ノード数が100(=99+1)個になる。
また、情報処理装置100は、グラフGR11−22に基づいて、決定用情報一覧DFI22を生成する。例えば、情報処理装置100は、決定用情報一覧DFI21を更新することにより、決定用情報一覧DFI22を生成する。情報処理装置100は、グラフGR11−22に含まれるノード数が10000個であることや、グラフGR11−22に含まれる追加ノード数が100個であることを示す決定用情報一覧DFI21を生成する。例えば、情報処理装置100は、記憶部120(図3参照)に記憶された決定用情報一覧DFI21を決定用情報一覧DFI22に更新してもよい。
そして、情報処理装置100は、グラフGR11−22が再構築条件を満たすかどうかを判定する。例えば、情報処理装置100は、グラフGR11−22に含まれるノード数が10000個であり、追加ノード数が100個であるため、追加ノード割合を「0.01(=100/10000)」と算出する。情報処理装置100は、グラフGR11−22の追加ノード割合が「0.01」であるため、再構築条件一覧RCL21に示す追加ノード割合の閾値「0.1」以上であるという再構築条件を満たすと判定する。このように、情報処理装置100は、グラフGR11−22が再構築条件を満たすと判定する(ステップS21−4)。そのため、情報処理装置100は、再構築処理を実行すると決定する。情報処理装置100は、第2グラフであるグラフGR11−22が、グラフの再構築に関する所定の条件を満たすため、第3グラフ(「再構築グラフ」ともいう)を生成すると決定する。
そのため、情報処理装置100は、グラフに反転エッジを追加する(ステップS22)。情報処理装置100は、ノードN6を追加した第2グラフであるグラフGR11−22に反転エッジを追加する。情報処理装置100は、グラフGR11−22の各ノードについて、他のノードとの間に一方のエッジのみが連結されている場合、そのノード間に他方のエッジを連結する。すなわち、情報処理装置100は、1本のエッジのみで連結されているノード間に、その1本のエッジを反転したエッジ(反転エッジ)を追加する。
図13の例では、情報処理装置100は、ノードN1からノードN4へのエッジE6を反転したエッジE15により、ノードN1とノードN4との間を連結する。すなわち、情報処理装置100は、ノードN4を始点とする出力エッジであるエッジE15をノードN1へ連結する。また、情報処理装置100は、1本のエッジE5で連結されたノードN2とノードN3との間に、エッジE5を反転したエッジE16を追加する。また、情報処理装置100は、1本のエッジE10で連結されたノードN4とノードN5との間に、エッジE10を反転したエッジE17を追加する。また、情報処理装置100は、1本のエッジE14で連結されたノードN3とノードN6との間に、エッジE14を反転したエッジE18を追加する。このように、情報処理装置100は、1本のエッジのみで連結されているノード間に、その1本のエッジを反転したエッジを追加することにより、仮想的なK最近傍グラフに基づく各ノードの近傍ノードのデータGR20(「近傍ノードデータGR20」とする)を生成する。
すなわち、情報処理装置100は、グラフに反転エッジを追加することにより、グラフGR11−22において少なくとも1本のノードで連結されていたノード間が、双方向に連結された仮想的なK最近傍グラフに基づく近傍ノードデータGR20を生成する。図13中の近傍ノードデータGR20は、グラフの状態で図示するが、理解を容易にするためのイメージであり、近傍ノードデータGR20は、各ノードの近傍ノードに関するデータ(情報)であるものとする。例えば、近傍ノードデータGR20は、グラフGR11−22中の各ノードから出力エッジが連結されたノード及びそのノードとの間の距離の一覧情報であってもよい。例えば、近傍ノードデータGR20には、ある対象ノードからの出力エッジが連結される近傍ノード候補と、その近傍ノード候補と対象ノードの間の距離が対応付けられた情報(以下、「近傍ノード候補の情報」ともいう)が含まれる。例えば、近傍ノードデータGR20には、ノードN1に、ノードN1からの出力エッジが連結されるノードN2、N3、N4、N5、N6等の近傍ノード候補と、そのノードとの間の距離が対応付けられた情報が含まれてもよい。また、例えば、近傍ノードデータGR20には、ノードN2に、ノードN2からの出力エッジが連結されるノードN1、N3等の近傍ノード候補と、そのノードとの間の距離が対応付けられた近傍ノード候補の情報が含まれてもよい。なお、情報処理装置100は、個々のノードの近傍ノードが選択できれば、近傍ノードデータGR20に限らず、どのような情報を用いてもよい。例えば、情報処理装置100は、近傍ノードデータGR20を用いることなく、グラフGR11に基づいて、再構築グラフGR21に含まれる各ノードの近傍ノードを選択してもよいが、この点については後述する。
そして、情報処理装置100は、グラフの再構築処理を実行し、再構築グラフを生成する(ステップS23)。情報処理装置100は、連結条件一覧LCL1に基づいて、グラフGR11に含まれるノードN1〜N6等を含む10000個のノード間をエッジで連結した再構築グラフであるグラフGR21(再構築グラフGR21)を生成する。図13の例では、情報処理装置100は、連結条件一覧LCL1の入力閾値「2」を選択数に決定する。
例えば、情報処理装置100は、ノードN1から順に対象として処理を行うことにより、再構築グラフGR21を生成する。まず、情報処理装置100は、ノードN1〜N6等を含む10000個のノードを含み、エッジを含まない再構築グラフGR21を生成する。例えば、情報処理装置100は、グラフGR11に含まれる情報のうち、ノードのみをコピーすることにより、N1〜N6等を含む10000個のノードを含み、エッジを含まない再構築グラフGR21を生成する。そして、情報処理装置100は、エッジを含まない再構築グラフGR21を初期状態として、再構築グラフGR21内のノードを対象として順次エッジを追加することにより、再構築グラフGR21を生成する。なお、図13の例では、説明を簡単にするために、グラフGR11中のノードと再構築グラフGR21のノードと同じノードIDで処理する場合を示すが、グラフGR11中のノードと再構築グラフGR21のノードとの対応付けがされていれば、どのようなノードIDにより管理されてもよい。例えば、グラフGR11中のノードN1は、再構築グラフGR21中においてはノードN1−1(すなわちノードID「N1−1」)とし、ノードN1とノードN1−1とを対応付けた情報を記憶部120(図3参照)してもよい。
また、情報処理装置100は、近傍ノードデータGR20を参照して、エッジ連結処理の対象のノード(対象ノード)からの出力エッジが接続されるノードから近傍ノードを選択してもよい。情報処理装置100は、近傍ノードデータGR20において、対象ノードからの出力エッジが連結されているノードのうち、距離が近い方から選択数のノードを近傍ノードとして選択してもよい。また、情報処理装置100は、近傍ノードデータGR20において選択した近傍ノードに対応する再構築グラフGR21中のノードを近傍ノードとして選択してもよい。また、情報処理装置100は、再構築グラフGR21を生成する際に、グラフを探索することにより、近傍ノードを選択してもよい。例えば、情報処理装置100は、再構築グラフGR21を生成する際に、グラフGR11を探索することにより、近傍ノードを選択してもよい。この場合、情報処理装置100は、近傍ノードデータGR20や仮想的なK最近傍グラフを生成しなくてもよい。
例えば、情報処理装置100は、ノードN1を対象のノード(対象ノード)としてエッジの連結を行う場合、近傍ノードデータGR20において、ノードN1からの出力エッジが連結される近傍ノード候補の情報を参照する。情報処理装置100は、近傍ノードデータGR20に含まれるノードN1の近傍ノード候補を参照し、ノードN1の近傍ノードとして、選択数「2」に対応する2個のノードN2、N6を選択する。例えば、情報処理装置100は、近傍ノードデータGR20に含まれるノードN1の近傍ノード候補の各距離を比較し、距離が短い方から順にノードN1の近傍ノードを選択する。図13の例では、情報処理装置100は、ノードN1の近傍ノード候補のうち、ノードN1と最も距離が短いノードN6と2番目に距離が短いノードN2の2つのノードを、再構築グラフGR21中のノードN1の近傍ノードとして選択する。
そして、情報処理装置100は、連結条件に基づいて、対象ノードと近傍ノードとの間を連結する有向エッジを再構築グラフGR21に追加する。図13の例では、情報処理装置100は、連結条件一覧LCL1に基づいて、再構築グラフGR21中のノードN1と近傍ノードであるノードN2、N6との間を連結する有向エッジを再構築グラフGR21に追加する。具体的には、情報処理装置100は、連結条件一覧LCL1に基づいて、再構築グラフGR21中のノードN1に2本の入力エッジ及び1本の出力エッジが連結されるように再構築グラフGR21を生成(更新)する。
情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に2個のノードにノードN1への入力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN2、N6のうち、再構築グラフGR21において、距離が最も短いノードN6にノードN1へ入力するエッジE12を連結する。また、情報処理装置100は、選択した近傍ノードであるノードN2、N6のうち、再構築グラフGR21において、距離が2番目に短いノードN2にノードN1へ入力するエッジE2を連結する。
また、情報処理装置100は、選択した近傍ノードのうち、距離が短い方から順に1個のノードにノードN1からの出力エッジを連結する。情報処理装置100は、選択した近傍ノードであるノードN2、N6のうち、再構築グラフGR21において、距離が最も短いノードN6にノードN1から出力するエッジE13を連結する。
そして、情報処理装置100は、ノードN2〜N6等を含む残りの9999個のノードについても同様に連結エッジを追加する処理を行うことにより、再構築グラフGR21を生成する。なお、情報処理装置100は、生成した再構築グラフGR21を第1グラフとして、図1に示すようなオブジェクト(ノード)の新規追加の処理を行ってもよい。例えば、情報処理装置100は、生成した再構築グラフGR21を第1グラフとして、追加されたオブジェクトに対応する追加ノードを再構築グラフGR21に追加することにより、第2グラフを生成してもよい。
上述したように、情報処理装置100は、グラフが再構築の条件を満たす場合、再構築グラフを生成することにより、適切なタイミングでエッジのバランスを調整することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
〔6.再構築処理のフロー〕
次に、図14を用いて、実施形態に係る情報処理システム1によるグラフの再構築処理の手順について説明する。図14は、実施形態に係るグラフの再構築処理の一例を示すフローチャートである。
図14に示すように、情報処理装置100は、再構築条件を満たすかどうかを判定する(ステップS501)。情報処理装置100は、再構築条件を満たさないと判定した場合(ステップS501:No)、再構築処理をせずに処理を終了する。
情報処理装置100は、再構築条件を満たすと判定した場合(ステップS501:Yes)、第2グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、第2グラフに含まれる各ノードに対応する近傍ノードを選択する(ステップS502)。そして、情報処理装置100は、有向エッジの連結に関する連結条件に基づいて、各ノードと近傍ノードとの間を有向エッジにより連結した第3グラフを生成する(ステップS503)。
〔7.検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図16を一例として説明する。図16は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100の検索部135によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、情報処理装置100(選択部132や検索部135)が検索処理を行う。なお、検索サービスを提供しない場合、情報処理装置100は検索部135を有しなくてもよい。以下で説明する処理の検索クエリは、追加ノードや対象ノードやユーザが指定したオブジェクト等であってもよい。
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、第2グラフGR12等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)のみがSの要素の場合には、結果的にルートノードがオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、選択数であってもよい。例えば、ks=2であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、情報処理装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を追加ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。また、例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
〔8.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、選択部132と、生成部134とを有する。取得部131は、データ検索の対象となる一のオブジェクトと、一のオブジェクトとは異なる他のオブジェクトの各々に対応する複数のノード、及びノード間を連結する有向エッジを含む第1グラフとを取得する。選択部132は、第1グラフに基づいて、複数のノードのうち、一のオブジェクトに対応する一のノードの近傍に位置する近傍ノードを選択する。生成部134は、一のノードを第1グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
このように、実施形態に係る情報処理装置100は、一のオブジェクトに対応する一のノードを第1グラフに追加し、有向エッジの連結に関し、所定の条件により変更される連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成することにより、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100は、決定部133を有する。決定部133は、所定の条件である連結条件に関する変更条件に基づいて、連結条件を変更するかを決定する。生成部134は、決定部133により連結条件を変更すると決定された場合、変更後の連結条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、変更条件に応じて連結条件を変更するかを決定することができるため、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける複数のノードの数に関する変更条件に基づいて、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおけるノード数に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける複数のノードの数が所定の閾値以上である場合、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおける複数のノードの数と所定の閾値とを比較し、その結果に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける複数のノードのうち、所定の時点以後に追加されたノードである追加ノードの割合に関する変更条件に基づいて、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおける追加ノードの割合に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける複数のノードのうち、追加ノードの割合が所定の閾値以上である場合、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおける追加ノードの割合と所定の閾値とを比較し、その結果に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける有向エッジの数に関する変更条件に基づいて、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおける有向エッジの数に関する変更条件に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける有向エッジの統計的情報に関する変更条件に基づいて、連結条件を変更するかを決定する。
これにより、実施形態に係る情報処理装置100は、第1グラフにおける有向エッジの数の統計的情報に応じて、連結条件を動的に変更し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、変更条件に基づいて、連結条件における有向エッジの数に関するエッジ数条件を変更する。生成部134は、変更後のエッジ数条件に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、変更条件に基づいて、エッジ数条件を動的に変更し、変更後のエッジ数条件に基づいて第2グラフを生成し、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、第1グラフにおける複数のノードの数が多い程、エッジ数条件において指定される連結エッジ数を増加させる。生成部134は、増加後の連結エッジ数に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、ノードの数が多い程、エッジ数条件において指定される連結エッジ数を増加させ、増加後のエッジ数条件に基づいて第2グラフを生成することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、指定された生成時間を超過すると推定される場合、エッジ数条件において指定される連結エッジ数を減少させる。生成部134は、減少後の連結エッジ数に基づいて、一のノードと近傍ノードとの間を有向エッジにより連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、ノ生成時間を超過する場合エッジ数条件において指定される連結エッジ数を減少させ、減少後のエッジ数条件に基づいて第2グラフを生成し、指定された生成時間の超過を抑制しつつ、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、一のノードを起点とし他のノードを終点する出力エッジの数に関する出力数条件を含むエッジ数条件を変更する。生成部134は、変更後の出力数条件に基づいて、近傍ノードのうち、出力数条件に対応する数の出力先ノードに、一のノードを起点とする出力エッジを連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、出力数条件を含むエッジ数条件を動的に変更し、出力数条件に対応する数の出力先ノードに、一のノードを起点とする出力エッジを連結することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、決定部133は、他のノードを起点とし一のノードを終点とする入力エッジの数に関する入力数条件を含むエッジ数条件を変更する。生成部134は、変更後のエッジ数条件に基づいて、近傍ノードのうち、入力数条件に対応する数の入力元ノードに、一のノードを終点とする入力エッジを連結した第2グラフを生成する。
これにより、実施形態に係る情報処理装置100は、入力数条件を含むエッジ数条件を動的に変更し、入力数条件に対応する数の入力元ノードに、一のノードを終点とする入力エッジを連結することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、選択部132は、第1グラフを探索することにより、近傍ノードを選択する。
これにより、実施形態に係る情報処理装置100は、第1グラフを探索することにより、効率的に近傍ノードを選択するができるため、生成時間の増大を抑制しつつ、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、第2グラフにおける有向エッジを更新することにより、第3グラフを生成する。
これにより、実施形態に係る情報処理装置100は、生成した第2グラフにおいて特定のノードに多数のエッジが連結されている等のエッジの連結にばらつきが生じている場合等、エッジの調整処理が必要な場合に、有向エッジを更新して第3グラフを生成することにより、エッジの連結のばらつき等が解消されたグラフを再構築することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、第2グラフが、グラフの再構築に関する所定の条件を満たす場合、第3グラフを生成する。
これにより、実施形態に係る情報処理装置100は、生成した第2グラフにおけるエッジの連結にばらつきが生じている場合等、グラフの再構築に関する所定の条件を満たす場合等、エッジの調整処理が必要な場合に、有向エッジを更新して第3グラフを生成することにより、エッジの連結のばらつき等が解消されたグラフを再構築することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、生成部134は、第2グラフに含まれる各ノードの近傍ノードに関する情報を用いて、第3グラフを生成する。
これにより、実施形態に係る情報処理装置100は、第2グラフに含まれる各ノードの近傍ノードに関する情報を用いて、第3グラフを生成することにより、例えば仮想的に近似K近傍グラフ状態とした第2グラフに含まれる各ノードの近傍ノードに関する情報を用いてグラフを生成することができるため、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
また、実施形態に係る情報処理装置100において、選択部132は、第2グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、第2グラフに含まれる各ノードに対応する近傍ノードを選択する。生成部134は、連結条件に基づいて、各ノードと近傍ノードとの間を有向エッジにより連結した第3グラフを生成する。
これにより、実施形態に係る情報処理装置100は、第2グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、効率的に近傍ノードを選択するができるため、生成時間の増大を抑制しつつ、検索に用いるグラフを適切に生成することができる。したがって、情報処理装置100は、所定の対象に関する効率的な検索を可能にするグラフデータを生成することができる。
〔9.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図17に示すような構成のコンピュータ1000によって実現される。図17は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔10.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。