特許法第30条第2項適用 公開日 平成30年10月3日 令和1年10月21日時点における本願に関連するソフトウェアを公開するページ https://github.com/yahoojapan/NGT https://github.com/yahoojapan/NGT/releases/tag/v1.4.4
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1を用いて、実施形態に係る情報処理の一例について説明する。図1は、実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100(図6参照)が複数のオブジェクト(以下「データセット」ともいう)を対象としたグラフ型インデックス(単に「グラフ」ともいう)の生成の際に用いるパラメータの値を調整する処理(以下「調整処理」ともいう)について説明する。図1では、情報処理装置100がデータセットを対象にグラフを生成する処理(以下「生成処理」ともいう)における基準を示す基準値として、制限時間を用いる場合を示す。なお、基準値は、制限時間に限らず、生成処理における基準となるものであればどのような情報であってもよく、検索精度や検索速度等の種々の基準値であってもよい。
図1の例では、情報処理装置100は、オブジェクトOB1、OB2、OB3、OB101等の複数のオブジェクトを含むデータセットDS1を対象としてグラフの生成を行う。データセットDS1中の各オブジェクトは、ベクトル化され、ベクトル化されたオブジェクト(ベクトル情報)を対象として、後述する検索処理などの各種処理を行う。なお、データセットDS1に含まれグラフの生成対象となる情報(オブジェクト)は、ベクトルとして表現可能であれば、どのような情報であってもよい。なお、以下では、画像情報を対象としたベクトル情報について説明するが、ベクトル情報の対象は、動画情報や音声情報等の他の対象であってもよい。
また、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。
〔1-1.生成処理〕
ここから、データセットDS1を対象としたグラフの生成処理を一例として具体的な処理を説明する。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)からデータセットDS1を取得する。データセットDS1は、100万のオブジェクトを含むものとする。図1の例では、情報処理装置100は、データセットDS1内の100万のオブジェクトを対象とするグラフGR11の生成処理を、基準値情報CR1に示す制限時間「TL1」以内に完了するように行うために、パラメータを調整する。情報処理装置100は、グラフの生成処理に要する処理時間(以下「実測処理時間」ともいう)を計時する。
また、情報処理装置100は、グラフGR11の生成が完了すると推定される時間(以下「推定処理時間」ともいう)と、基準値である制限時間「TL1」との比較を基に、グラフGR11の生成に用いる2つのパラメータの値を調整する。具体的には、情報処理装置100は、ノードに連結するエッジの数を指定するパラメータ「K」と、検索範囲を指定するパラメータ「ε」との2つのパラメータの値を調整する。例えば、パラメータ「K」は、一のノードを対象とし、他のノードにエッジを連結する処理(以下「連結処理」ともいう)において連結するエッジの数を指定するパラメータである。また、パラメータ「ε」は、詳細は後述するが、検索処理中に算出される検索範囲rの拡大係数である。例えば、パラメータ「ε」は、クエリを対象としてグラフを探索し、そのクエリに対応する近傍ノードを抽出する処理(以下「検索処理」ともいう)において探索範囲を指定するパラメータである。
ここで、グラフ型インデックス(グラフ)では通常各ノードに付与するエッジ数を増やしたり、パラメータ「ε」を大きくしたりすることで、検索時の性能(検索時間や精度)を向上させることができる。一方で、ノードに付与するエッジ数を増やしたり、パラメータ「ε」を大きくしたりすると、生成時間が増加する。また、実用時にはグラフの生成時間等の種々の制限(基準)が設けられる場合がある。このような場合、制限時間等の制限(基準)を満たしつつグラフを生成し、制限の範囲内で最大の性能を引き出すグラフ型インデックス(グラフ)を生成しなくてはならない。図1の例では、グラフ生成の制限(基準)を示す基準値の一例として、制限時間「TL1」が設定された場合を示す。情報処理装置100は、上記のようなパラメータ「K」の値及びパラメータ「ε」の値を調整することにより、制限時間「TL1」以内にデータセットDS1を対象とするグラフGR11の生成処理を完了させる。
また、図1に示す設定値情報PL1-1、PL1-2は、グラフの生成処理の過程における各パラメータの設置値を示す。例えば、設定値情報PL1-1は、各パラメータの初期値を示す。設定値情報PL1-2は、設定値情報PL1-1に示すパラメータの値が更新された後の各パラメータの設置値を示す。以下、設定値情報PL1-1、PL1-2について、特に区別なく説明する場合には、設定値情報PL1と記載する。図1の例では、情報処理装置100は、設定値情報PL1-1に示すように、連結エッジ数「K」の初期値は「120」であり、検索範囲係数「ε」の初期値は「0.1」を取得する。例えば、各パラメータの初期値はパラメータ情報記憶部124(図10参照)に記憶され、情報処理装置100は、記憶部120から各パラメータの初期値を取得する。
まず、情報処理装置100は、オブジェクトを選択する(ステップS1)。情報処理装置100は、与えられたデータセットのうち、未選択のオブジェクトを、グラフに追加(登録)するオブジェクトとして選択する。例えば、情報処理装置100は、複数のオブジェクトのうち一部のオブジェクトをノードとして追加済みの生成中のグラフの情報を取得し、グラフに追加済みのオブジェクト以外の一のオブジェクトを選択する。例えば、情報処理装置100は、データセットDS1から、未選択のオブジェクトOB1を選択する。なお、情報処理装置100は、選択済みのオブジェクトを識別するための情報(フラグ)を記憶部120に記憶してもよい。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)中のオブジェクトIDのうち、選択したオブジェクトに対応するオブジェクトIDに選択済みのフラグを付与してもよい。
そして、情報処理装置100は、グラフを生成する(ステップS2)。情報処理装置100は、選択したオブジェクトに対応するノードをグラフに新たに追加することにより、グラフを更新する。情報処理装置100は、選択したオブジェクトOB1に対応するノードN1をグラフに追加する。図1の例では、情報処理装置100は、ノードN1が最初のノードであるため、ノードN1を含むグラフGR11を新規に生成する。また、情報処理装置100は、グラフGR11には、ノードがノードN1の1個のみであるため、グラフGR11にエッジを追加しない。例えば、情報処理装置100は、グラフGR11の更新に応じて、グラフ情報記憶部123(図9参照)を更新する。
そして、情報処理装置100は、グラフの生成が完了したかを判定する(ステップS3)。例えば、情報処理装置100は、データセットDS1に未選択のオブジェクトが無い場合、グラフの生成が完了したと判定する。情報処理装置100は、グラフの生成が完了したと判定した場合(ステップS3:Yes)、生成処理を終了する。
また、例えば、情報処理装置100は、データセットDS1に未選択のオブジェクトが有る場合、グラフの生成が完了していないと判定する。図1の例では、情報処理装置100は、オブジェクトOB1の選択後において、データセットDS1にはオブジェクトOB2等の未選択のオブジェクトが有るため、グラフの生成が完了していないと判定する。
そして、情報処理装置100は、グラフの生成が完了していないと判定した場合(ステップS3:No)、グラフの生成処理が所定の条件を満たすかを判定する(ステップS4)。情報処理装置100は、グラフに追加されたノードの数が所定の条件を満たすかを判定する。図1の例では、情報処理装置100は、グラフのノード数が10万、20万、30万…90万など、新たに10万のノードが追加されたことを所定の条件とする。例えば、情報処理装置100は、前に条件を満たしてからグラフに新たに追加されたノードの数が10万に達した場合、条件を満たすと判定する。なお、情報処理装置100は、10万ごとのように一定の間隔に条件に限らず、種々の条件を用いてもよい。
情報処理装置100は、グラフの生成処理が所定の条件を満たしていないと判定した場合(ステップS4:No)、ステップS1に戻って処理を繰り返す。図1の例では、情報処理装置100は、ノードN1が最初のノードであり、グラフGR11中のノード数が1個であるため、グラフの生成処理が所定の条件を満たしていないと判定し、ステップS1に戻って処理を繰り返す。
そして、情報処理装置100は、与えられたデータセットのうち、未選択のオブジェクトを、グラフに追加するオブジェクトとして選択する。例えば、情報処理装置100は、データセットDS1から、選択済みのオブジェクトOB1以外のオブジェクトを選択する。情報処理装置100は、選択したオブジェクトに対応するノードをグラフGR11中に新たに追加することにより、グラフGR11を更新する。例えば、情報処理装置100は、グラフGR11中に新たに追加するノード(新規追加ノード)をクエリとして、グラフGR11を探索することにより、新規追加ノードの近傍に位置するノード(近傍ノード)を抽出し、抽出した近傍ノードと、新規追加ノードとの間をエッジで連結することにより、グラフGR11を更新する。ここで、グラフGR11について説明する。
図1に示すグラフGR11は、データセットDS1のうち、一部のオブジェクト(例えば1万個等)に対応するノードが追加され、各ノードとその近傍ノードとがエッジで連結されたグラフ情報を示す。なお、図1の例では、エッジが無向エッジ(双方向エッジ)である場合を示すが、有向エッジであってもよい。また、図1中のグラフGR11には、追加済みの多数のオブジェクト(ノード)が含まれるが、図面においてはその一部(ノードN1~N3、N43、N53)のみを図示する。
図1の例では、情報処理装置100は、各オブジェクトに対応する各ノードから所定数以上のエッジが他のエッジに連結されるように、グラフGR11を生成する。情報処理装置100は、グラフGR11における各ノードが、そのノードとの間の距離が近い方から所定数のノードへのエッジが連結されるようにグラフGR11を生成する。図1の例では、情報処理装置100は、パラメータ「K」が初期値「120」である場合、120個のノードへのエッジが連結されるようにグラフGR11を生成する。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離等の種々の距離が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、図1中のグラフGR11では、ノードN1は、ノードN53との間に無向エッジ(双方向エッジ)であるエッジE2が連結される。すなわち、ノードN1は、ノードN53とエッジE2により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE31」と記載した場合、そのエッジはエッジID「E31」により識別されるエッジである。例えば、ノードN1とノードN2とを連結するエッジE1により、ノードN1とノードN2との間を双方向に辿ることが可能となる。すなわち、エッジE1により、ノードN1からノードN2へ辿ることができ、かつエッジE1により、ノードN2からノードN1へ辿ることができる。
また、図1中のグラフGR11は、ユークリッド空間であってもよい。また、図1に示すグラフGR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフGR11は、多次元空間である。例えば、図1に示すグラフGR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。なお、各ノードに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。
また、図1の例では、グラフGR11においては、適宜「ノードN*(*は任意の数値)」の図示を省略し、各ノードに対応する「○」内に「ノードN*」の「*」の値を付すことにより表現する。すなわち、「ノードN*」の部分の「*」が一致するノードに対応する。例えば、グラフGR11中の左上の「○」であって、内部に「43」が付された「○」は、ノードID「N43」により識別されるノード(ノードN43)に対応する。
ここで、各ノード間の距離は、ノード(画像情報)の類似性を示し、距離が近いほど類似している。本実施形態においては、グラフGR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する画像情報の類似性が、グラフGR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1の例では、グラフGR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフGR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。
例えば、図1中のグラフGR11において、ノードN43とノードN2とは近接している、すなわち距離が短い(近い)。そのため、ノードN43に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、図1中のグラフGR11において、ノードN43とノードN53とは遠隔にある、すなわち距離が長い(遠い)。そのため、ノードN43に対応するオブジェクトと、ノードN53に対応するオブジェクトとは類似度が低いことを示す。
上述のように、情報処理装置100は、新規追加ノードをクエリ(「クエリQE1」とする)として、生成中のグラフGR11を探索することにより、新規追加ノードに連結する近傍ノードを抽出する。例えば、情報処理装置100は、図15に示すような処理により、クエリQE1を対象とする検索処理により新規追加ノードに対応するK個の近傍ノードを抽出する。情報処理装置100は、その時点での検索範囲係数「ε」の設定値を用いて、図15に示すような処理をグラフGR11を用いて行うことにより、クエリQE1に対応するK個の近傍ノードを抽出する。情報処理装置100は、検索範囲係数「ε」が初初期値「0.1」である場合、検索範囲係数「ε」を「0.1」として、クエリQE1に対応するK個の近傍ノードを抽出する。
ここで、検索範囲係数「ε」の概念について簡単に説明する。図1中のグラフGR11-1は、グラフGR11であり、「○」内に「Q」を記載したクエリQE1に対応する範囲AR1及び範囲AR2を図示するために、ノードのみを図示し、エッジの図示を省略したものである。情報処理装置100は、クエリQE1を中心とする半径r内の範囲AR1と、クエリQE1を中心とする半径r(1+ε)内の範囲AR2とを用いて、グラフGR11を検索し、近傍ノードを抽出する。このように、情報処理装置100は、検索範囲係数「ε」を適用した処理により、近傍ノードを抽出する処理を行うが、検索範囲係数「ε」を用いた処理の詳細は図15において説明する。
例えば、情報処理装置100は、オブジェクトOB1の次に追加したオブジェクト(例えばオブジェクトOB2)に対応するノードと、追加済みのオブジェクトOB1に対応するノードとの間をエッジで連結する。例えば、情報処理装置100は、オブジェクトOB1に対応するノードN1と、オブジェクトOB2に対応するノードN2との間をエッジE1で連結する。情報処理装置100は、設定値情報PL1-1に示すように連結エッジ数「K」が「120」であるため、グラフGR11中のノード数がK個(例えば120個)を超えるまで、新たに追加したノード(新規追加ノード)と、グラフGR11中に追加済みの全ノードとの間にエッジを連結する。また、情報処理装置100は、K個(例えば120個)を超えた場合、新たに追加したノードと、グラフGR11中に追加済みの全ノードのうち、その新規追加ノードに近接するK個の近傍ノードとの間をエッジで連結する。そのため、情報処理装置100は、グラフGR11中のノード数がK個を超えるまで、グラフGR11の検索処理を行うことなく、新たに追加したノードと、グラフGR11中に追加済みの全ノードとの間にエッジを連結してもよい。
情報処理装置100は、上述したようなステップS1、S2の処理を、全オブジェクトがグラフGR11に追加されるまで繰り返し実行する。
上述のような処理において、情報処理装置100は、グラフの生成処理が所定の条件を満たすと判定した場合(ステップS4:Yes)、処理時間を推定する(ステップS5)。図1の例では、情報処理装置100は、グラフのノード数が10万に達した場合、グラフの生成処理が所定の条件を満たすと判定し、推定処理時間(推定総登録時間)を推定する。例えば、情報処理装置100は、グラフGR11へ新規に追加したオブジェクトの数が10万に達した場合、グラフの生成処理が所定の条件を満たすと判定し、推定処理時間を推定する。例えば、情報処理装置100は、推定時点までの実測処理時間等の情報を用いて、推定処理時間(推定総登録時間)を推定するが詳細は後述する。
そして、情報処理装置100は、推定処理時間が制限時間と所定の関係を満たすかを判定する(ステップS6)。例えば、情報処理装置100は、推定処理時間が制限時間を超えることを所定の関係を満たすと判定する。この場合、情報処理装置100は、推定処理時間が制限時間「TL1」を超える場合、推定処理時間が制限時間と所定の関係を満たすと判定する。また、情報処理装置100は、推定処理時間が制限時間「TL1」を超えない場合、推定処理時間が制限時間と所定の関係を満たさないと判定する。
情報処理装置100は、推定処理時間が制限時間と所定の関係を満たさないと判定した場合(ステップS6:No)、ステップS1に戻って処理を繰り返す。図1の例では、情報処理装置100は、グラフのノード数が10万に達した時点で推定した推定処理時間が制限時間「TL1」を超えないものとする。そのため、情報処理装置100は、グラフのノード数が10万に達した時点で推定した推定処理時間が制限時間「TL1」を超えないため、推定処理時間が制限時間と所定の関係を満たさないと判定し、ステップS1に戻って処理を繰り返す。
一方で、情報処理装置100は、推定処理時間が制限時間と所定の関係を満たすと判定した場合(ステップS6:Yes)、調整処理を実行する(ステップS7)。図1の例では、情報処理装置100は、推定情報ES1に示すように、グラフのノード数が50万に達した時点における推定処理時間を「ET1」と推定する。情報処理装置100は、グラフのノード数が50万に達した時点における推定処理時間を「ET1」と推定する。例えば、情報処理装置100は、グラフのノード数が50万に達するまでの実測処理時間を用いて、グラフのノード数が50万に達した時点における推定処理時間を「ET1」と推定する。
また、図1の例では、推定処理時間「ET1」が制限時間「TL1」を超えるものとする。そのため、情報処理装置100は、グラフのノード数が50万に達した時点で推定した推定処理時間「ET1」が制限時間「TL1」を超えるため、推定処理時間が制限時間と所定の関係を満たすと判定し、調整処理を実行する。情報処理装置100は、調整関連情報記憶部126(図12参照)を用いて、調整処理を実行する。情報処理装置100は、判定条件「推定処理時間>TL1」を満たすため、処理時間が短くなるようにパラメータを調整する。このように、情報処理装置100は、推定処理時間(推定総登録時間)が制限時間を超える場合には、エッジ数に対応するパラメータ「K」の値や検索範囲係数に対応するパラメータ「ε」の値を小さくする。
図1の例では、情報処理装置100は、設定値情報PL1-2に示すように、パラメータ「K」の値を5だけ減少させる。これにより、情報処理装置100は、パラメータ「K」の値を「120」から「115」に減少させる。情報処理装置100は、パラメータ「K」の値を「115」に決定する。なお、図1の例では、パラメータ「K」の値を5だけ減少させる場合を一例として示すが、パラメータの変動は種々の態様であってもよい。例えば、情報処理装置100は、図1の例のように、変動(減少)させる幅(変動幅)を所定の値(図1の場合「5」)に決定してもよいし、動的に変動幅を決定してもよい。例えば、情報処理装置100は、推定値と基準値との乖離(差)が大きい程、変動幅を大きくしてもよい。情報処理装置100は、推定処理時間(推定総登録時間)と制限時間との差が大きい程、パラメータ「K」やパラメータ「ε」の変動幅を大きくしてもよい。また、例えば、情報処理装置100は、グラフに追加する残りのオブジェクト(登録前オブジェクト)の数、すなわち未追加のノード数が少ない程、変動幅を大きくしてもよい。例えば、情報処理装置100は、推定処理時間(推定総登録時間)が制限時間を超え、かつ登録前オブジェクトが少ない程、パラメータ「K」やパラメータ「ε」の変動幅を大きくしてもよい。
そして、情報処理装置100は、ステップS1に戻り、調整したパラメータを用いて処理を繰り返す。図1の例では、情報処理装置100は、グラフのノード数が60万、70万、80万、90万の各々に達した場合、グラフの生成処理が所定の条件を満たすと判定し、推定処理時間を推定する。そして、情報処理装置100は、グラフのノード数が60万、70万、80万、90万の各々に達した段階で、推定した推定処理時間が制限時間「TL1」を超える場合、推定処理時間が制限時間と所定の関係を満たすと判定し、調整処理を実行する。
上述のように、情報処理装置100は、推定処理時間が制限時間と所定の関係を満たすと判定した場合に、パラメータの値を増減させることにより、グラフの生成に用いるパラメータの値を適切に決定することができる。また、情報処理装置100は、パラメータを調整することにより、制限(基準)を満たして、グラフを生成することができる。
上述したように、情報処理装置100は、グラフ生成時にはノードを1つずつグラフに追加する。情報処理装置100は、ノードの追加時に新規追加ノードのK個の近傍ノードと新規追加ノードとの間をエッジで接続することでグラフを更新する。情報処理装置100は、新規追加ノードのK個の近傍ノードを、生成中のグラフをインデックスとして利用することで検索して抽出(取得)する。情報処理装置100は、このような処理によってグラフを生成する。この方法の場合、インデックス(グラフ)の生成時間のほとんどがグラフの検索時間となる。また、検索時間に影響するパラメータは、例えば、検索結果数に対応するパラメータ「K」と検索範囲係数に対応するパラメータ「ε」である。そのため、情報処理装置100は、グラフの生成中において、パラメータ「K」やパラメータ「ε」を調整することにより、グラフ生成の制限時間等の制限(基準)を満たしつつ、適切にグラフを生成することができる。
〔1-1-1.パラメータの調整〕
なお、パラメータの調整は、上記に限らず、種々の態様により行われてもよい。例えば、情報処理装置100は、連続して推定処理時間が制限時間を超えると判定した場合に、パラメータを増減させる幅(変動幅)を大きくしてもよい。パラメータの変動幅を大きくすることを示す情報は、調整関連情報記憶部126(図12参照)に記憶されてもよい。例えば、情報処理装置100は、連続して推定処理時間が制限時間を超えると判定した場合、調整関連情報記憶部126(図12参照)を参照し、パラメータ「K」やパラメータ「ε」の変動幅を決定してもよい。
図1の例では、情報処理装置100は、グラフのノード数が60万に達した時点で推定した推定処理時間が制限時間「TL1」を超える場合、ノード数が50万に達した時点での判定と連続して、推定処理時間が制限時間を超えるため、パラメータを増減させる幅(変動幅)を大きくしてもよい。例えば、情報処理装置100は、ノード数が50万に達した時点のパラメータ「K」の減少幅「5」を2倍した10だけパラメータ「K」を減少させる。この場合、情報処理装置100は、パラメータ「K」の値を「115」から「105」に減少させる。このように、情報処理装置100は、制限時間を超えた場合に連結エッジ数や検索範囲係数に対応するパラメータを調整したにもかかわらず、次の区間においても制限時間を超える場合に減少幅を大きくする。これにより、情報処理装置100は、より適切にパラメータの値を決定することができる。
また、図1の例では、情報処理装置100は、パラメータ「K」やパラメータ「ε」を範囲情報LG1に示すような範囲内で変動させる。情報処理装置100は、範囲情報LG1をパラメータ情報記憶部124(図10参照)から取得する。図1の例では、範囲情報LG1に示すように、パラメータ「K」は、5以上200以下の間で値が設定可能であることを示す。図1の例では、範囲情報LG1に示すように、パラメータ「ε」は、上限値がなく、-1より大きい値が設定可能であることを示す。なお、各パラメータの範囲情報には、上限値及び下限値が含まれるか否かを示す情報が含まれる。
例えば、情報処理装置100は、エッジ数に対応するパラメータ「K」の値を減らし、パラメータ「K」が下限値(例えば5等)に到達した場合にはパラメータ「ε」の値を小さくする。図1の例では、情報処理装置100は、パラメータ「K」を先に変動させ、パラメータ「K」が上限や下限に達し、変動できない場合にパラメータ「ε」を変動させる。情報処理装置100は、各パラメータの優先順位を示す情報(優先度情報)を記憶部120に記憶し、記憶部120に記憶された優先度情報を用いて、値を変更するパラメータを決定してもよい。
〔1-1-2.判定条件及びパラメータの変動方向〕
また、図1の例では、情報処理装置100は、推定処理時間が制限時間「TL1」を超えることを判定条件として、その判定条件を満たす場合、パラメータの値を減少させる場合を一例として説明したが、判定条件やパラメータの変動方向は種々の対象であってもよい。例えば、情報処理装置100は、パラメータの値を減少させる場合に限らず、パラメータの値を増加させてもよい。これらの点について、以下説明する。
例えば、判定条件は、図12中の調整関連情報記憶部126に示すように、「推定処理時間がTL1より所定値以上小さい」等の推定処理時間が制限時間「TL1」よりも小さい、すなわち生成処理が制限時間よりも早く終わることであってもよい。
このように生成処理が制限時間よりも早く終わる場合、情報処理装置100は、処理時間を増加させて、生成されるグラフの精度が高くなるようにパラメータを調整してもよい。例えば、情報処理装置100は、推定処理時間が制限時間を下回る場合、グラフの検索精度が高くなるようにパラメータの値を調整してもよい。情報処理装置100は、図12中の調整関連情報記憶部126に示すように、「推定処理時間がTL1より所定値以上小さい」場合、パラメータ「K」の値やパラメータ「ε」の値を増加させる。具体的には、情報処理装置100は、「推定処理時間がTL1より所定値以上小さい」場合、パラメータ「K」の値を5だけ増加したり、パラメータ「ε」の値を0.05だけ増加したりすることにより、生成されるグラフの精度が高くなるようにパラメータを調整してもよい。
すなわち、情報処理装置100は、推定処理時間が制限時間を超える場合に、推定処理時間が制限時間を超えないように、パラメータを調整することに限らず、推定処理時間が制限時間を超えない範囲でパラメータを調整する。上記のように、情報処理装置100は、生成処理が制限時間よりも早く終わる場合、情報処理装置100は、処理時間を増加させて、生成されるグラフの精度が高くなるようにパラメータを調整する。すなわち、情報処理装置100は、推定処理時間が制限時間を超えない範囲で、推定処理時間が制限時間に近づくようにパラメータの値を調整する。これにより、情報処理装置100は、制限時間を満たしつつ、できる限り高精度なグラフを生成することができる。
〔1-1-3.推定処理時間(推定総登録時間)〕
ここで、推定処理時間(推定総登録時間)の推定について説明する。図1の例では、情報処理装置100は、一定登録数n(図1では10万)ごとに、その区間の登録時間(実測区間処理時間)を計測し、それまでの総既登録時間(実測総処理時間)を計測する。情報処理装置100は、計測した実測区間処理時間や実測総処理時間を用いて、推定総登録時間を推定する。例えば、情報処理装置100は、計測した実測区間処理時間や実測総処理時間を用いて、残りのオブジェクトの登録に要する処理時間(残登録時間)を推定してもよい。情報処理装置100は、実測区間処理時間とその区間の登録数より1つのオブジェクトの登録時間(単一登録時間)を算出し、残登録数から残登録時間を算出してもよい。情報処理装置100は、実測総処理時間とその区間の登録数より1つのオブジェクトの登録時間を算出し、残登録数から残登録時間を算出してもよい。情報処理装置100は、単一登録時間に残登録数を乗算することにより、残登録時間を推定(算出)してもよい。
そして、情報処理装置100は、推定した残登録時間を実測総処理時間に加算することにより、推定処理時間(推定総登録時間)を推定してもよい。この場合、情報処理装置100は、実測値に予測値(推定値)を加算する「総既登録時間(実測総処理時間)+残登録時間」により、推定処理時間(推定総登録時間)を推定する。
上述した点の具体例について、図2及び図3を用いて説明する。図2は、実施形態に係る処理時間の推定の一例を示す図である。図2は、実施形態に係る処理時間の推定の他の一例を示す図である。図2及び図3では、条件情報CN1に示すように、処理条件(区間)が10万である場合を示す。すなわち、図2及び図3では、図1と同様に、グラフGR11に追加されるノード数「10万」を1つの区間として処理をすることを示す。この場合、情報処理装置100は、オブジェクトが10万登録される度に、推定処理時間(推定総登録時間)を推定する。
また、図2及び図3では、グラフGR11に50万のノードが追加された時点での処理を一例として説明する。まず、図2を用いて、それまでの処理時間の推移から、推定処理時間(推定総登録時間)を推定する場合について説明する。
図2中の関係図TG1は、縦軸が時間(総処理時間)に対応し、横軸が登録回数(追加回数)、すなわちグラフに登録(追加)されたノードの数に対応する。関係図TG1の縦軸は、対応する横軸の数のノードがグラフに登録(追加)された時点での全体の総処理時間を示す。例えば、横軸「50万」に対応する縦軸「AM1」は、グラフに50万個のノードが追加された時点での総処理時間を示す。
例えば、関係図TG1は、グラフGR11へのノードの追加(グラフGR11の生成)と、処理時間との関係を示す。関係図TG1中のポイントPT1は、縦軸が制限時間「TL1」に対応し、横軸が、データセットDS1のノード数「100万」に対応する位置を示す。例えば、情報処理装置100は、ポイントPT1でグラフ生成の処理が完了するようにパラメータの値を調整する。
また、関係図TG1中の実線で示す実測線AL1が実際の計測による処理時間を示す。このように、図2では、グラフGR11に50万のノードが追加された段階で、実測総処理時間が「AM1」であることを示す。
そして、関係図TG1中の2点鎖線で示す推定線EL1が、推定した処理時間を示す。情報処理装置100は、実測線AL1に対応する情報などの種々の情報を用いて、推定線EL1に示すような処理時間を推定する。
このように、情報処理装置100は、推定時点までのグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。情報処理装置100は、グラフGR11に50万のノードが追加された時点までのグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。
例えば、情報処理装置100は、推定時点前の所定の期間におけるグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。情報処理装置100は、推定時点前の所定の期間におけるグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。情報処理装置100は、推定時点直前の期間におけるグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。
図2の例では、情報処理装置100は、推定時点直前である40万~50万の区間(直前区間)におけるグラフGR11の生成に要した処理時間に基づいて、推定処理時間を推定する。すなわち、情報処理装置100は、直前区間における40万1個目のノードから50万個目のノードまでのグラフGR11への追加に要した処理時間に基づいて、推定処理時間を推定する。
情報処理装置100は、関数のフィッティングに関する種々の技術を適宜用いて、処理時間を推定する関数(以下「推定用関数EF」ともいう)を導出してもよい。情報処理装置100が導出する推定用関数EFは、線形関数であってもよいし、非線形関数であってもよい。例えば、情報処理装置100は、実測された50万より後のノード追加における処理時間の増加を直線で近似することにより、推定用関数EFを生成してもよい。例えば、情報処理装置100は、実測線AL1よりも後の線(図2では推定線EL1)を直線で近似することにより、推定用関数EFを生成する。例えば、情報処理装置100は、実測線AL1の処理時間に基づいて、推定用関数EFを導出する。例えば、情報処理装置100は、実測線AL1中の直前区間の形状に基づいて、推定用関数EFを導出する。例えば、情報処理装置100は、実測線AL1中の40万から50万の間の形状を基に直線を近似することにより、推定用関数EFを生成する。例えば、情報処理装置100は、実測線AL1中の40万から50万の間の処理時間の増加量から、実測線AL1中の40万から50万の間の傾き(変化の割合)を導出し、その傾きを50万より後の傾きとして推定用関数EFを生成してもよい。例えば、情報処理装置100は、推定用関数EFを用いて推定線EL1を生成する。
なお、上記は一例であり、情報処理装置100は、種々の情報を適宜用いて推定用関数EFを導出してもよい。また、情報処理装置100は、直前区間のみに限らず、種々の期間に追加したノードのグラフGR11への追加に要した処理時間に基づいて、推定用関数EFを導出してもよい。例えば、情報処理装置100は、1個目のノードから推定時間のノードまでの全追加ノードのグラフGR11への追加に要した処理時間に基づいて、推定用関数EFを導出してもよい。
そして、情報処理装置100は、導出した推定用関数EFを用いて、推定線EL1に示すような処理時間を推定する。図2の例では、情報処理装置100は、推定線EL1に示すように、データセットDS1のノード数「100万」の追加が完了した時点を示すポイントEP1に対応する総処理時間が「ET1」であると推定する。すなわち、情報処理装置100は、グラフGR11の生成が完了した時点を示すポイントEP1に対応する総処理時間が「ET1」であると推定する。このように、情報処理装置100は、推定処理時間(推定総登録時間)が制限時間「TL1」を超える「EP1」であると推定する。
この場合、情報処理装置100は、図1に示すように、処理時間が短くなるようにパラメータを調整する。
また、情報処理装置100は、関数を導出することなく、推定処理時間(推定総登録時間)を推定してもよい。この点について図3を用いて説明する。
図3中の関係図TG2は、縦軸が時間(各処理時間)に対応し、横軸が登録回数(追加回数)、すなわちグラフに登録(追加)されたノードの数に対応する。関係図TG2の縦軸は、対応する横軸の数のノードがグラフに登録(追加)される場合の単一の処理時間を示す。例えば、横軸「10万」に対応する縦軸の値は、グラフに10万個目のノードが追加される際のその追加に要する処理時間を示す。
また、関係図TG2中の各線LN1~LN3の各々は、異なるパラメータの設定値の組合せに対応する。なお、図3の関係図TG2では、3つの線のみを示すが、多数の線が含まれてもよい。例えば、実線で示す線LN1は、パラメータ「K」の値が「120」であり、パラメータ「ε」の値が「0.1」である場合の処理時間を示す。例えば、一点鎖線で示す線LN2は、パラメータ「K」の値が「150」であり、パラメータ「ε」の値が「0.1」である場合の処理時間を示す。例えば、二点鎖線で示す線LN3は、パラメータ「K」の値が「150」であり、パラメータ「ε」の値が「0.15」である場合の処理時間を示す。
例えば、情報処理装置100は、過去のグラフ生成の処理履歴を基に関係図TG2に示すような情報を生成してもよい。なお、図2中の関係図TG2に示すような情報は、情報処理装置100が生成する場合に限らず、情報処理装置100は、図2中の関係図TG2に示すような情報を情報提供装置50(図5参照)等の他の外部装置から取得してもよい。
例えば、情報処理装置100は、パラメータ「K」の値が「120」であり、パラメータ「ε」の値が「0.1」である場合、線LN1の情報を用いて、残登録時間を推定(算出)してもよい。例えば、情報処理装置100は、50万1個目のノードから100万個目のノードまでのグラフGR11への追加に要する処理時間を、線LN1の情報を用いて推定する。例えば、情報処理装置100は、50万1個目のノードから100万個目のノードまで積分値を、50万1個目のノードから100万個目のノードまでのグラフGR11への追加に要する処理時間として推定(算出)してもよい。情報処理装置100は、関係図TG2中の横軸、線LN1、50万に対応する縦方向への点線、100万に対応する縦方向への点線で囲まれた領域AR1の面積を、残登録時間として推定(算出)してもよい。
そして、情報処理装置100は、推定(算出)した残登録時間を、それまでの実測総処理時間に加えることにより、推定処理時間(推定総登録時間)を推定してもよい。
なお、上記は一例であり、情報処理装置100は、推定処理時間(推定総登録時間)が推定可能であれば、どのような処理により推定を行ってもよい。
また、情報処理装置100は、上述した各区間(1区間)をさらに数分割して登録時間を計測し、その時間から関数のフィッティングを行い、その登録時間関数を推定した上で推定総登録時間を求めてもよい。これにより、情報処理装置100は、さらに精度良く推定総登録時間を推定することができる。
〔1-2.ツリー情報〕
上述した例では、グラフ(グラフ情報)のみを生成する場合を示したが、情報処理装置100は、生成したグラフに対応するツリー情報を生成してもよい。例えば、情報処理装置100は、ツリーに関する種々の技術を適宜用いて、生成したグラフに対応するツリー情報を生成する。例えば、情報処理装置100は、図4中の情報群GINF11に示すようなツリー情報IND11を生成してもよい。そして、情報処理装置100は、生成したツリー情報など、各種のインデックスを用いて、処理を高速化してもよい。例えば、情報処理装置100は、図4中の情報群GINF11に示すようなツリー情報IND11を用いて、検索の起点となるノード(以下「起点ノード」ともいう)を決定してもよい。図4は、実施形態に係る情報処理に用いるツリーの一例を示す図である。なお、ツリー情報IND11は、情報処理装置100が生成してもよいし、情報処理装置100は、ツリー情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
例えば、情報処理装置100は、ツリー情報IND11に基づいて、クエリQE1に対応する起点ノードを決定してもよい。情報処理装置100は、ツリー情報記憶部122(図8参照)に記憶されたツリー情報IND11を用いて、起点ノードを決定する。例えば、ツリー情報IND11は、グラフGR11中のいくつかのノードに到達可能なツリー構造を有するツリーである。図4の例では説明を簡単にするために、ツリー情報IND11は、ノードN1~N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。
例えば、情報処理装置100は、図4中のツリー情報IND11に示すような木構造型のツリー情報を用いて、グラフGR11における起点ノードを決定する。図1の例では、情報処理装置100は、クエリQE1に基づいて、ツリー情報IND11を上(ルートRT)から下へ辿ることにより、ツリー情報IND11の近傍候補となる起点ノードを決定(特定)する。これにより、情報処理装置100は、効率的に検索クエリ(クエリQE1)に対応する起点ノードを決定することができる。
例えば、情報処理装置100は、ツリー情報IND11をルートRTからリーフノード(グラフGR11中のノード)まで辿ることにより、クエリQE1に対応する起点ノードを決定してもよい。例えば、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、ツリー情報IND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ノードとして決定してもよい。例えば、情報処理装置100は、クエリQE1との類似度に基づいて、ツリー情報IND11を下へ辿ることにより、起点ノードを決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、クエリQE1と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、情報処理装置100は、ルートRTから節点VT1、VT2等のうち、クエリQE1との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、情報処理装置100は、節点VT2から節点VT2-1~VT2-4等のうち、クエリQE1との類似度が最も高い節点VT2-2へ辿ると決定してもよい。
図4の例に示すツリー情報(ツリーデータ)は一例であり、情報処理装置100は、種々のツリー情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いるツリーを生成してもよい。なお、ツリーを用いることは一例であり、情報処理装置100は、検索時の起点ノードの決定の高速化が可能であれば、ツリーに限らず種々の情報を用いてもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索ツリー(ツリー情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、情報処理装置100は、図4に示すようなツリー構造(木構造)に関するツリー情報IND11を生成してもよい。例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索ツリーを生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索ツリーを生成してもよい。
また、例えば、情報処理装置100は、その他の木構造を有するツリーを生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフに接続する種々のツリーを生成してもよい。例えば、情報処理装置100は、木構造のツリーのリーフがグラフ中のノードに対応する種々のツリーを生成してもよい。また、情報処理装置100は、このようなツリーを用いて検索を行う場合、ツリーを辿って到達したリーフ(ノード)からグラフを探索してもよい。
なお、上述したようなツリーは一例であり、情報処理装置100は、グラフ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のツリーを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、ツリーを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なツリーであれば、どのようなデータ構造のツリーを生成してもよい。情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のようなツリーとグラフとを用いることにより、所定の対象に関してより高速な検索を可能にすることができる。
〔2.情報処理システムの構成〕
次に、図5を用いて、実施形態に係る情報処理システム1の構成について説明する。図5は、実施形態に係る情報処理システムの構成例を示す図である。図5に示すように、情報処理システム1には、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。なお、図5に示した情報処理システム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は、複数のオブジェクトの各々に対応するノードが近傍ノードにエッジで連結されるグラフを生成する生成装置である。また、情報処理装置100は、複数のオブジェクトを対象とし、生成中のグラフを用いた検索処理を含むグラフの生成処理時において、基準値に基づき前記グラフの生成に用いるパラメータの値を調整する調整処理により、パラメータの値を決定する決定装置である。
情報処理装置100は、クエリに類似するオブジェクトを抽出する検索装置である。例えば、情報処理装置100は、端末装置10からクエリ情報(クエリ)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置10に提供する。また、例えば、情報処理装置100が端末装置10に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
〔3.情報処理装置の構成〕
次に、図6を用いて、実施形態に係る情報処理装置100の構成について説明する。図6は、実施形態に係る情報処理装置100の構成例を示す図である。図6に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図5中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図6に示すように、オブジェクト情報記憶部121と、ツリー情報記憶部122と、グラフ情報記憶部123と、パラメータ情報記憶部124と、基準値情報記憶部125と、調整関連情報記憶部126とを有する。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、データセットごとにオブジェクトIDやベクトルデータを記憶する。図7は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図7に示すオブジェクト情報記憶部121には、「データセットID」、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「データセットID」は、データセットを識別するための識別情報を示す。「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図7の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
図7の例では、データセットID「DS1」により識別されるデータセット(データセットDS1)には、オブジェクトID「OB1」、「OB2」、「OB3」等により識別される複数のオブジェクト(対象)が含まれることを示す。オブジェクトID「OB1」により識別されるオブジェクト(オブジェクトOB1)は、「10,24,51,2...」の多次元のベクトル情報が対応付けられることを示す。また、オブジェクトID「OB2」により識別されるオブジェクト(オブジェクトOB2)は、「32,1,120,31...」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(ツリー情報記憶部122)
実施形態に係るツリー情報記憶部122は、ツリーに関する各種情報を記憶する。図8は、実施形態に係るツリー情報記憶部の一例を示す図である。具体的には、図8の例では、ツリー情報記憶部122は、ツリー構造のツリー情報を示す。図8の例では、ツリー情報記憶部122には、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目が含まれる。なお、「第1階層」~「第3階層」に限らず、ツリーの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
「ルート階層」は、ツリーを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、ツリーの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、ツリーの根(ルート)に直接結ばれる階層に対応するノードとなる。
「第2階層」は、ツリーの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、ツリーの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
図8に示す例においては、ツリー情報記憶部122には、図1中のツリー情報IND11に対応する情報が記憶される。例えば、ツリー情報記憶部122は、第1階層のノードが、節点VT1~VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
また、ツリー情報記憶部122は、節点VT2の直下の第2階層のノードが、節点VT2-1~VT2-4であることを示す。また、ツリー情報記憶部122は、節点VT2-1の直下の第3階層のノードが、ノードN1、ノードN2のグラフGR11中のノード(ベクトル)であることを示す。ツリー情報記憶部122は、節点VT2-2の直下の第3階層のノードが、ノードN3、ノードN4、ノードN5のグラフGR11中のノード(ベクトル)であることを示す。
なお、ツリー情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部123は、検索処理等の情報処理に用いられるグラフ情報を記憶する。図9の例では、グラフ情報記憶部123は、近傍グラフデータを記憶する。図9は、実施形態に係るグラフ情報記憶部の一例を示す図である。図9に示すグラフ情報記憶部123は、「ノードID」、「オブジェクトID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図9の例では、「エッジ情報」は、対応するノードに連結される無向エッジ(双方向エッジ)に関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図9の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからのエッジが連結される参照先(ノード)が対応付けられて登録されている。
図9の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図9の例では、グラフ情報におけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E2」により識別されるエッジ(エッジE2)が、ノードID「N53」により識別されるノード(ノードN53)に連結されることを示す。すなわち、図9の例では、グラフ情報におけるノードN1からはエッジE2によりノードN53へ辿ることができることを示す。
また、図9の例では、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N1」により識別されるノード(ノードN1)に連結されることを示す。すなわち、図9の例では、グラフ情報におけるノードN2からはエッジE1によりノードN1へ辿ることができることを示す。
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。グラフ情報記憶部123には、無向エッジにより連結されたグラフ情報に限らず、種々のグラフ情報が記憶されてもよい。グラフ情報記憶部123には、有向エッジにより連結されたグラフ情報が記憶されてもよい。
(パラメータ情報記憶部124)
実施形態に係るパラメータ情報記憶部124は、パラメータに関する各種情報を記憶する。パラメータ情報記憶部124は、グラフの生成に用いるパラメータに関するパラメータ情報を記憶する。図10は、実施形態に係るパラメータ情報記憶部の一例を示す図である。図10に示すパラメータ情報記憶部124は、「パラメータID」、「パラメータ」、「内容」、「値」、「範囲情報」といった項目を有する。また、「範囲情報」には、「上限値」や「下限値」といった項目が含まれる。
「パラメータID」は、パラメータを識別するための識別情報を示す。例えば、「パラメータID」は、グラフの生成に用いるパラメータを識別するための識別情報を示す。また、「パラメータ」は、対応するパラメータIDにより識別されるパラメータを示す。例えば、「パラメータ」は、パラメータの変数を示す。「内容」は、対応するパラメータIDにより識別されるパラメータの内容を示す。例えば、「内容」は、パラメータの用途を示す。
「値」は、対応するパラメータの値を示す。例えば、「値」は、対応するパラメータの最新の値(現在値)を示す。「範囲情報」は、対応するパラメータの値の範囲を示す情報が記憶される。「範囲情報」は、対応するパラメータがとり得る値の範囲を示す情報が記憶される。「上限値」は、対応するパラメータの上限値を示す。各近傍ノードの順位を示す。「下限値」は、対応するパラメータの下限値を示す。なお、「上限値」や「下限値」は、その値を含むか否かを示す情報を記憶する。
図10の例では、パラメータID「PM1」により識別されるパラメータ(パラメータPM1)は、パラメータ「K」であることを示す。パラメータ「K」は、内容が「連結エッジ数」であり、連結エッジ数を指定するパラメータである。例えば、パラメータ「K」は、ノードに連結されるエッジの数を示す。すなわち、パラメータ「K」は、ノードに近傍ノードとして連結されるノードの数を示す。
パラメータ「K」は、値が「120」であることを示す。すなわち、パラメータ「K」の現在値は、「120」であることを示す。パラメータ「K」は、上限値が「200」であり、下限値が「5」であることを示す。すなわち、パラメータ「K」は、5以上200以下の間で値が設定可能であることを示す。図10の例では、パラメータ「K」の範囲には、上限値及び下限値が含まれることを示す情報が記憶される。
図10の例では、パラメータID「PM2」により識別されるパラメータ(パラメータPM2)は、パラメータ「ε」であることを示す。パラメータ「ε」は、内容が「検索範囲係数」であり、検索処理時に用いられるパラメータ(検索範囲係数)を示す。例えば、パラメータ「ε」は、検索処理時における探索範囲の決定に用いられる検索範囲係数の値を示す。
パラメータ「ε」は、値が「0.1」であることを示す。すなわち、パラメータ「ε」の現在値は、「0.1」であることを示す。パラメータ「ε」は、上限値が「-(設定なし)」であり、下限値が「-1」であることを示す。すなわち、パラメータ「ε」は、上限値がなく、-1より大きい値が設定可能であることを示す。図10の例では、パラメータ「ε」の範囲には、下限値は含まないことを示す情報が記憶される。
なお、パラメータ情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。パラメータ情報記憶部124は、複数のグラフ情報を使い分ける場合、パラメータに、そのパラメータが用いられるグラフ情報を対応付けて記憶してもよい。例えば、パラメータ情報記憶部124は、グラフGR11以外のグラフ情報が用いられる場合、各パラメータが用いられるグラフ情報と、対応するパラメータとを対応付けて記憶してもよい。
(基準値情報記憶部125)
実施形態に係る基準値情報記憶部125は、基準に関する各種情報を記憶する。図11は、実施形態に係る基準値情報記憶部の一例を示す図である。図11の例では、基準値情報記憶部125は、「基準値ID」、「対象」、「値」といった項目を有する。
「基準値ID」は、基準値を識別する情報を示す。「対象」は、基準値の対象を示す。「値」は、対応する基準値の具体的に数値を示す。
図11の例では、基準値ID「RV1」により識別される基準値(基準値RV1)は、対象「制限時間」に関する基準値であることを示す。基準値RV1は、制限時間を示す基準値であることを示す。基準値RV1は、値が「TL1」であることを示す。なお、図11に示す例では、値を「TL1」といった抽象的な符号を図示するが、例えば「30分」や「5時間」や「1日」等、具体的な数値であるものとする。
なお、基準値情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(調整関連情報記憶部126)
実施形態に係る調整関連情報記憶部126は、パラメータの調整に関する各種情報を記憶する。図12は、実施形態に係る調整関連情報記憶部の一例を示す図である。図12の例では、調整関連情報記憶部126は、「調整ID」、「対象データセット」、「基準値」、「処理条件(区間)」、「調整情報」といった項目を有する。また、「調整情報」には、「判定条件」、「調整#1」、「調整#2」といった項目が含まれる。なお、調整#1」、「調整#2」に限らず、調整対象となるパラメータの数に応じて、「調整#3」、「調整#4」等が含まれてもよい。
「調整ID」は、調整を識別するための識別情報を示す。「対象データセット」は、調整の対象とするデータセットを識別するための識別情報を示す。「基準値」は、対応するデータセットを対象とするグラフ生成において用いる基準値を示す。「処理条件(区間)」は、処理を行うための条件を示す。例えば、「処理条件(区間)」は、調整処理を行うかどうかの判定条件を示す。なお、図12の例では、データの処理区間を「処理条件」とする場合を示すが、「処理条件」は、データの処理区間に限らず、例えば検索精度や検索速度等、種々の条件であってもよい。
「調整情報」は、調整に関する各種情報を示す。「判定条件」は、パラメータを調整するかどうかの判定条件を示す。「調整#1」や「調整#2」は、対応する判定条件を満たす場合に、調整されるパラメータ及びその調整内容を示す。「調整#1」や「調整#2」中の「対象」は、調整の対象となるパラメータを示す。「調整#1」や「調整#2」中の「変動幅」は、パラメータの値の変動幅を示す。
図12の例では、「調整#1」、「調整#2」の順にパラメータの優先度が付されているものとする。すなわち、「判定条件」を満たす場合、まず「調整#1」のパラメータが調整対象となる。そして、「調整#1」のパラメータの値が上限や下限に達した事等により、調整できない場合、「調整#2」のパラメータが調整対象となる。なお、パラメータの調整は、「調整#1」、「調整#2」の順に行う場合に限らず、「調整#1」、「調整#2」を同時に行ってもよいし、「調整#1」、「調整#2」を交互に行ってもよい。
図12の例では、調整ID「AD1」により識別される調整(調整AD1)は、データセットDS1を対象とした調整であることを示す。調整AD1は、100万オブジェクトを含むデータセットDS1を対象としたグラフの生成における調整であることを示す。調整AD1は、基準値ID「RV1」により識別される基準値が用いられることを示す。すなわち、調整AD1は、基準値として基準値ID「RV1」により識別される制限時間「TL1」が用いられることを示す。
また、調整AD1は、処理条件(区間)が「SINF1」であることを示す。調整AD1は、処理条件(区間)が10万ごとであることを示す。すなわち、調整AD1は、10万のノードが追加される度に調整処理を行うかどうかの判定を行うことを示す。なお、処理条件(区間)は、10万ごとなど、一定の間隔ではなく、例えば追加されたノード数が多くなるほど長くなったり、短くなったりする間隔、すなわち動的に変動する間隔であってもよい。
また、判定条件は「推定処理時間>TL1」や「推定処理時間がTL1より所定値以上小さい」であることを示す。判定条件「推定処理時間がTL1より所定値以上小さい」の「所定値」は、「30分」や「1時間」等、種々の値であってもよい。
例えば、判定条件「推定処理時間>TL1」を満たした場合、パラメータPM1であるパラメータ「K」の値が5だけ減算されることを示す。また、判定条件「推定処理時間>TL1」を満たし、パラメータ「K」が下限に達している場合、パラメータPM2であるパラメータ「ε」の値が0.05だけ減算されることを示す。
例えば、判定条件「推定処理時間がTL1より所定値以上小さい」を満たした場合、パラメータPM1であるパラメータ「K」の値が5だけ加算されることを示す。また、判定条件「推定処理時間がTL1より所定値以上小さい」を満たし、パラメータ「K」が上限に達している場合、パラメータPM2であるパラメータ「ε」の値が0.05だけ加算されることを示す。
なお、調整関連情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130)
図6の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図6に示すように、制御部130は、取得部131と、生成部132と、推定部133と、決定部134と、抽出部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図6に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。取得部131は、記憶部120から各種情報を取得する。取得部131は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、パラメータ情報記憶部124や、基準値情報記憶部125や、調整関連情報記憶部126等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10等の外部装置から各種情報を取得する。取得部131は、グラフ情報記憶部123からグラフ情報を取得する。取得部131は、ツリー情報記憶部122からツリー情報を取得する。
取得部131は、グラフの生成対象となる複数のオブジェクトと、複数のオブジェクトの各々に対応するノードが近傍ノードにエッジで連結されるグラフの生成における基準を示す基準値とを取得する。取得部131は、複数のオブジェクトのうち一部のオブジェクトをノードとして追加済みのグラフを取得する。取得部131は、グラフの生成における制限時間を示す基準値を取得する。
取得部131は、検索クエリに関する情報を取得する。取得部131は、画像検索に関する検索クエリを取得する。取得部131は、ユーザが利用する端末装置10からクエリを取得する。取得部131は、端末装置10からクエリを受け付けた情報提供装置50からクエリを取得してもよい。
図1の例では、取得部131は、グラフ情報記憶部123からグラフGR11を取得する。取得部131は、オブジェクト情報記憶部121(図7参照)からデータセットDS1を取得する。取得部131は、ツリー情報記憶部122からツリー情報IND11を取得する。
取得部131は、連結エッジ数「K」の初期値は「120」であり、検索範囲係数「ε」の初期値は「0.1」を取得する。取得部131は、パラメータ情報記憶部124から各パラメータの初期値を取得する。取得部131は、範囲情報LG1をパラメータ情報記憶部124から取得する。
(生成部132)
生成部132は、各種情報を生成する。生成部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を生成する。生成部132は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、パラメータ情報記憶部124や、基準値情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を生成する。
生成部132は、取得部131により取得された各種情報に基づいて、種々の情報を生成する。生成部132は、推定部133により推定された各種情報に基づいて、種々の情報を生成する。生成部132は、決定部134により決定された各種情報に基づいて、種々の情報を生成する。生成部132は、抽出部135により抽出された各種情報に基づいて、種々の情報を生成する。生成部132は、グラフ情報を生成してもよい。
生成部132は、決定部134により値が決定されたパラメータを用いて、グラフを生成する。生成部132は、複数のオブジェクトから選択された一のオブジェクトを一のノードとして、グラフに追加し、グラフに追加済みの他のノードを近傍ノードとして連結する連結処理により、グラフを更新する。生成部132は、一のノードをクエリとする検索処理によりグラフから抽出されたノードを一のノードの近傍ノードとして、一のノードに連結する連結処理により、グラフを更新する。生成部132は、複数のオブジェクトのうち、一部のオブジェクト以外の一のオブジェクトを選択し、連結処理を行うことにより、グラフを更新する。
図1の例では、生成部132は、ノードN1が最初のノードであるため、ノードN1を含むグラフGR11を新規に生成する。生成部132は、グラフGR11の更新に応じて、グラフ情報記憶部123を更新する。生成部132は、各オブジェクトに対応する各ノードから所定数以上のエッジが他のエッジに連結されるように、グラフGR11を生成する。生成部132は、パラメータ「K」が初期値「120」である場合、120個のノードへのエッジが連結されるようにグラフGR11を生成する。
(推定部133)
推定部133は、各種情報を推定する。推定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を推定する。推定部133は、各種情報を算出する。推定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を算出する。推定部133は、所定の推定値を算出する。推定部133は、記憶部120に記憶された各種情報に基づいて、所定の推定値を算出する。推定部133は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、パラメータ情報記憶部124や、基準値情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を推定する。推定部133は、取得部131により取得された各種情報に基づいて、種々の情報を推定する。推定部133は、生成部132により生成された各種情報に基づいて、種々の情報を推定する。推定部133は、抽出部135により抽出された各種情報に基づいて、種々の情報を推定する。推定部133は、決定部134により決定された各種情報に基づいて、種々の情報を推定する。
推定部133は、グラフの生成の推定処理時間を推定する。推定部133は、推定時点までのグラフの生成に関する情報に基づいて、推定処理時間を推定する。推定部133は、推定時点までのグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。推定部133は、推定時点前の所定の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。推定部133は、推定時点直前の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。
図1の例では、推定部133は、推定処理時間(推定総登録時間)を推定する。推定部133は、図2や図3に示すような処理により、推定処理時間(推定総登録時間)を推定する。推定部133は、グラフの生成処理が所定の条件を満たす場合、処理時間を推定する。推定部133は、グラフのノード数が10万、20万、30万、40万、50万、60万、70万、80万、90万の各々に達した場合、グラフの生成処理が所定の条件を満たすと判定し、推定処理時間を推定する。推定部133は、推定情報ES1に示すように、グラフのノード数が50万に達した時点における推定処理時間を「ET1」と推定する。
(決定部134)
決定部134は、各種情報を決定する。決定部134は、各種情報を判定する。決定部134は、各種情報を選択する。決定部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部134は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。決定部134は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、パラメータ情報記憶部124や、基準値情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を決定する。
決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を決定する。決定部134は、取得部131により取得された各種情報に基づいて、種々の情報を判定する。決定部134は、推定部133により推定された各種情報に基づいて、種々の情報を決定する。決定部134は、推定部133により推定された各種情報に基づいて、種々の情報を判定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を決定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を判定する。決定部134は、抽出部135により抽出された各種情報に基づいて、種々の情報を選択する。決定部134は、検索処理における判定処理や決定処理や選択処理を行う。
決定部134は、複数のオブジェクトを対象とし、生成中のグラフを用いた検索処理を含むグラフの生成処理時において、基準値に基づきグラフの生成に用いるパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、グラフの生成の推定処理時間と、基準値との比較に基づく調整処理により、パラメータの値を決定する。決定部134は、推定部133により推定された推定処理時間と、基準値との比較に基づく調整処理により、パラメータの値を決定する。
決定部134は、推定処理時間が基準値に近づくようにパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、推定処理時間が基準値を超えないようにパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、推定処理時間が基準値を超える場合、処理時間が早くなるようにパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、推定処理時間が基準値を下回る場合、グラフの検索精度が高くなるようにパラメータの値を調整する調整処理により、パラメータの値を決定する。
決定部134は、ノードと近傍ノードとの間を連結するエッジ数を含むパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、検索処理時に用いられる検索時パラメータを含むパラメータの値を調整する調整処理により、パラメータの値を決定する。決定部134は、検索処理における探索範囲を決定するための係数である検索範囲係数を含むパラメータの値を調整する調整処理により、パラメータの値を決定する。
決定部134は、グラフの生成処理が所定の条件を満たす場合、調整処理を行う。決定部134は、グラフの生成処理において処理対象としたオブジェクトの数が所定の条件を満たす場合、調整処理を行う。決定部134は、グラフの生成処理において処理対象としたオブジェクトの数が所定の閾値に達した場合、調整処理を行う。
決定部134は、検索の起点となる起点ノード決定してもよい。決定部134は、所定のツリー情報を用いて、起点ノードを決定する。決定部134は、図4中の情報群GINF11に示すようなツリー情報IND11を用いて起点ノードを決定する。決定部134は、ツリー情報IND11に基づいて、クエリQE1に対応する起点ノードを決定する。決定部134は、ツリー情報記憶部122(図8参照)に記憶されたツリー情報IND11を用いて、起点ノードを決定する。
決定部134は、図4中のツリー情報IND11に示すような木構造型のツリー情報を用いて、グラフGR11における起点ノードを決定する。決定部134は、クエリQE1に基づいて、ツリー情報IND11を上(ルートRT)から下へ辿ることにより、ツリー情報IND11の近傍候補となる起点ノードを特定する。決定部134は、2個のノードを起点ノードに決定する。
決定部134は、ツリー情報IND11をルートRTからリーフノード(グラフGR11中のノード)まで辿ることにより、クエリQE1に対応する起点ノードを決定してもよい。
図1の例では、決定部134は、調整関連情報記憶部126を用いて、調整処理を実行する。決定部134は、判定条件「推定処理時間>TL1」を満たすため、処理時間が短くなるようにパラメータを調整する。決定部134は、設定値情報PL1-2に示すように、パラメータ「K」の値を5だけ減少させる。決定部134は、パラメータ「K」の値を「120」から「115」に減少させる。決定部134は、パラメータ「K」の値を「115」に決定する。
(抽出部135)
抽出部135は、各種情報を抽出する。抽出部135は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。抽出部135は、オブジェクト情報記憶部121や、ツリー情報記憶部122や、グラフ情報記憶部123や、パラメータ情報記憶部124や、基準値情報記憶部125や、調整関連情報記憶部126等に基づいて、各種情報を抽出する。抽出部135は、取得部131により取得された各種情報に基づいて、種々の情報を抽出する。抽出部135は、生成部132により生成された各種情報に基づいて、種々の情報を抽出する。抽出部135は、推定部133により推定された各種情報に基づいて、種々の情報を抽出する。抽出部135は、決定部134により決定された各種情報に基づいて、種々の情報を抽出する。抽出部135は、検索処理における抽出処理を行う。
抽出部135は、検索クエリに類似するノードである類似ノードを抽出する。抽出部135は、各種情報を検索する検索部であってもよい。抽出部135は、グラフ情報を探索することにより、オブジェクトを検索する。抽出部135は、取得部131により取得されたクエリが取得された場合、グラフ情報を探索することにより、クエリに類似するオブジェクトを検索する。抽出部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。抽出部135は、図15に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。
図1の例では、抽出部135は、新規追加ノードをクエリ(クエリQE1)として、生成中のグラフGR11を探索することにより、新規追加ノードに連結する近傍ノードを抽出する。例えば、抽出部135は、図15に示すような処理により、クエリQE1を対象とする検索処理により新規追加ノードに対応するK個の近傍ノードを抽出する。抽出部135は、その時点での検索範囲係数「ε」の設定値を用いて、図15に示すような処理をグラフGR11を用いて行うことにより、クエリQE1に対応するK個の近傍ノードを抽出する。抽出部135は、検索範囲係数「ε」が初初期値「0.1」である場合、検索範囲係数「ε」を「0.1」として、クエリQE1に対応するK個の近傍ノードを抽出する。
(提供部136)
提供部136は、各種情報を提供する。提供部136は、端末装置10や情報提供装置50に各種情報を提供する。提供部136は、端末装置10に各種情報を送信する。提供部136は、端末装置10に各種情報を配信する。提供部136は、取得部131により取得された各種情報に基づいて、種々の情報を提供する。提供部136は、生成部132により生成された各種情報に基づいて、種々の情報を提供する。提供部136は、推定部133により推定された各種情報に基づいて、種々の情報を提供する。提供部136は、決定部134により決定された各種情報に基づいて、種々の情報を提供する。提供部136は、抽出部135により抽出された各種情報に基づいて、種々の情報を提供する。提供部136は、検索処理における提供処理を行う。
提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。提供部136は、決定部134により決定された類似ノードに関する情報を提供する。提供部136は、決定部134により決定された類似ノードを示すオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部136は、決定部134により決定されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。提供部136は、抽出部135により抽出(検索)されたオブジェクトIDを端末装置10や情報提供装置50へ提供する。提供部136は、抽出部135が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、抽出部135により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として、端末装置10や情報提供装置50に提供する。
提供部136は、抽出部135により抽出された類似ノードに関する情報を提供する。提供部136は、類似ノードに関する情報を所定のユーザが利用する端末装置10(図5参照)に提供する。提供部136は、クエリの送信元へ検索結果を提供する。
〔4.情報処理(決定処理、算出処理)のフロー〕
次に、図13及び図14を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。
〔4-1.決定処理のフロー〕
まず、図13について説明する。図13は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図13は、実施形態に係る情報処理に含まれる決定処理の一例を示すフローチャートである。
図13に示すように、情報処理装置100は、グラフの生成対象となる複数のオブジェクトを取得する(ステップS101)。例えば、情報処理装置100は、オブジェクト情報記憶部121(図7参照)から、データセットDS1に含まれる複数のオブジェクトを取得する。
そして、情報処理装置100は、グラフの生成における制限を示す基準値を取得する(ステップS102)。例えば、情報処理装置100は、基準値情報記憶部(図11参照)から、制限時間「TL1」を取得する。
そして、情報処理装置100は、グラフの生成処理時において、基準値に基づきグラフの生成に用いるパラメータの値を調整する調整処理により、パラメータの値を決定する(ステップS103)。例えば、情報処理装置100は、推定処理時間が制限時間「TL1」を超える場合、調整処理により、パラメータ「K」の値やパラメータ「ε」の値を変更して、パラメータの各々の値を決定する。
〔4-2.判定処理のフロー〕
次に、図14について説明する。図14は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図14は、実施形態に係る情報処理に含まれる判定処理の一例を示すフローチャートである。なお、図14に示す判定処理は、図13に示す調整処理内で行われてもよい。
図14に示すように、情報処理装置100は、グラフの生成処理が所定の条件を満たすかどうかを判定する(ステップS201)。例えば、情報処理装置100は、グラフに追加したノードの数が所定の条件を満たすかどうかを判定する。
そして、情報処理装置100は、グラフの生成処理が所定の条件を満たすと判定した場合(ステップS201:Yes)、調整処理を実行する(ステップS202)。例えば、情報処理装置100は、グラフに追加したノードの数が所定の条件を満たす場合、調整処理を実行するかどうかの判定を行い、調整処理を実行すると判定した場合、調整処理を実行する。
また、情報処理装置100は、グラフの生成処理が所定の条件を満たさないと判定した場合(ステップS201:No)、ステップS202の処理を実行せずに処理を終了する。
〔5.情報処理(検索処理)のフロー〕
次に、情報処理装置100による検索処理のフローについて、図15を一例として説明する。図15は、実施形態に係る情報処理の一例を示すフローチャートである。具体的には、図15は、グラフデータを用いた検索処理の一例を示すフローチャートである。なお、図15に示す検索処理には、選択処理も含まれる。以下に説明する検索処理は、情報処理装置100によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、情報処理装置100によるグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。
ここでは、近傍集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。例えば、近傍集合N(G,y)は、ノードyとの間にエッジが連結されたオブジェクト(ノード)の集合である。また、グラフのノード間が有向エッジで連結される場合、近傍集合N(G,y)は、ノードyからの出力エッジが連結されたオブジェクト(ノード)の集合である。「G」は、所定のグラフデータ(例えば、グラフGR11等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、起点ノードとして決定(選択)されたオブジェクト(ノード)を集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、検索結果(抽出候補)の集合Rの初期集合にも含められる。また、ステップS301において抽出された集合Sに含まれるオブジェクト(ノード)は、集合Cに含められてもよい。集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定されてもよい。
次に、情報処理装置100は、集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、図1の例では、情報処理装置100は、オブジェクトyであるクエリQE1に対応する起点ノードであるノードN2等が含まれる集合Sから、一のノードをオブジェクトs(対象ノード)として抽出する。次に、情報処理装置100は、オブジェクトsを集合Sから除外する(ステップS303)。例えば、図1の例では、情報処理装置100は、起点ノードであるノードN2を集合Sから除外する。
次に、情報処理装置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)。例えば、図1の例では、情報処理装置100は、ノードN2の連結ノードであるノードN1、N43等のうち、クエリQE1と最も近いノード(例えばノードN43)をオブジェクトuとして選択する。
次に、情報処理装置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は、検索における抽出数を示し、「3」や「20」や「100」等の任意の値であってもよい。集合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)の要素であるオブジェクトから全てのオブジェクトを選択したか否かを判定する(ステップS315)。オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択していない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。なお、情報処理装置100は、オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てを選択する場合に限らず、所定の閾値を設定し、その閾値に対応する個数までオブジェクトを選択してもよい。
オブジェクトsの近傍集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択した場合(ステップS315:Yes)、情報処理装置100は、集合Sが空集合であるか否かを判定する(ステップS316)。集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、図1の例では、情報処理装置100は、集合Rに含まれるノードN2、N43、N1等をクエリQE1(入力オブジェクトy)に対応する検索結果として出力する。また、例えば、情報処理装置100は、集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置10等へ提供してもよい。
〔6.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、決定部134とを有する。取得部131は、グラフの生成対象となる複数のオブジェクトと、複数のオブジェクトの各々に対応するノードが近傍ノードにエッジで連結されるグラフの生成における基準を示す基準値とを取得する。決定部134は、複数のオブジェクトを対象とし、生成中のグラフを用いた検索処理を含むグラフの生成処理時において、基準値に基づきグラフの生成に用いるパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、複数のオブジェクトを対象とし、生成中のグラフを用いた検索処理を含むグラフの生成処理時において、基準値に基づきグラフの生成に用いるパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100は、生成部132を有する。生成部132は、決定部134により値が決定されたパラメータを用いて、グラフを生成する。
このように、実施形態に係る情報処理装置100は、値が決定したパラメータを用いて、グラフを生成することにより、適切にグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部132は、複数のオブジェクトから選択された一のオブジェクトを一のノードとして、グラフに追加し、グラフに追加済みの他のノードを近傍ノードとして連結する連結処理により、グラフを更新する。
このように、実施形態に係る情報処理装置100は、複数のオブジェクトから選択された一のオブジェクトを一のノードとして、グラフに追加し、グラフに追加済みの他のノードを近傍ノードとして連結する連結処理により、グラフを更新することにより、適切にグラフを生成することができる。
また、実施形態に係る情報処理装置100において、生成部132は、一のノードをクエリとする検索処理によりグラフから抽出されたノードを一のノードの近傍ノードとして、一のノードに連結する連結処理により、グラフを更新する。
このように、実施形態に係る情報処理装置100は、一のノードをクエリとする検索処理によりグラフから抽出されたノードを一のノードの近傍ノードとして、一のノードに連結する連結処理により、グラフを更新することにより、適切にグラフを生成することができる。
また、実施形態に係る情報処理装置100において、取得部131は、複数のオブジェクトのうち一部のオブジェクトをノードとして追加済みのグラフを取得する。生成部132は、複数のオブジェクトのうち、一部のオブジェクト以外の一のオブジェクトを選択し、連結処理を行うことにより、グラフを更新する。
このように、実施形態に係る情報処理装置100は、複数のオブジェクトのうち一部のオブジェクトをノードとして追加済みのグラフを用いて、複数のオブジェクトのうち、一部のオブジェクト以外の一のオブジェクトを選択し、連結処理を行うことにより、グラフを更新することにより、適切にグラフを生成することができる。
また、実施形態に係る情報処理装置100において、取得部131は、グラフの生成における制限時間を示す基準値を取得する。決定部134は、グラフの生成の推定処理時間と、基準値との比較に基づく調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、グラフの生成の推定処理時間と、グラフの生成における制限時間を示す基準値との比較に基づく調整処理により、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100は、推定部133を有する。推定部133は、グラフの生成の推定処理時間を推定する。決定部134は、推定部133により推定された推定処理時間と、基準値との比較に基づく調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、グラフの生成の推定処理時間を推定することにより、推定した推定処理時間を用いて基準を満たすかを判定可能となり、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、推定時点までのグラフの生成に関する情報に基づいて、推定処理時間を推定する。
このように、実施形態に係る情報処理装置100は、推定時点までのグラフの生成に関する情報に基づいて、推定処理時間を推定することにより、推定した推定処理時間を用いて基準を満たすかを判定可能となり、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、推定時点までのグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。
このように、実施形態に係る情報処理装置100は、推定時点までのグラフの生成に要した処理時間に基づいて、推定処理時間を推定することにより、推定した推定処理時間を用いて基準を満たすかを判定可能となり、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、推定時点前の所定の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。
このように、実施形態に係る情報処理装置100は、推定時点前の所定の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定することにより、推定した推定処理時間を用いて基準を満たすかを判定可能となり、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、推定部133は、推定時点直前の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定する。
このように、実施形態に係る情報処理装置100は、推定時点直前の期間におけるグラフの生成に要した処理時間に基づいて、推定処理時間を推定することにより、推定した推定処理時間を用いて基準を満たすかを判定可能となり、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、推定処理時間が基準値に近づくようにパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、推定処理時間が基準値に近づくようにパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、推定処理時間が基準値を超えないようにパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、推定処理時間が基準値を超えないようにパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、推定処理時間が基準値を超える場合、処理時間が早くなるようにパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、推定処理時間が基準値を超える場合、処理時間が早くなるようにパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、推定処理時間が基準値を下回る場合、グラフの検索精度が高くなるようにパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、推定処理時間が基準値を下回る場合、グラフの検索精度が高くなるようにパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、ノードと近傍ノードとの間を連結するエッジ数を含むパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、ノードと近傍ノードとの間を連結するエッジ数を含むパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、検索処理時に用いられる検索時パラメータを含むパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、検索処理時に用いられる検索時パラメータを含むパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、検索処理における探索範囲を決定するための係数である検索範囲係数を含むパラメータの値を調整する調整処理により、パラメータの値を決定する。
このように、実施形態に係る情報処理装置100は、検索処理における探索範囲を決定するための係数である検索範囲係数を含むパラメータの値を調整することにより、グラフの生成に用いるパラメータの値を適切に決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、グラフの生成処理が所定の条件を満たす場合、調整処理を行う。
このように、実施形態に係る情報処理装置100は、グラフの生成処理が所定の条件を満たす場合、調整処理を行うことにより、適切なタイミングでグラフの生成に用いるパラメータの値を決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、グラフの生成処理において処理対象としたオブジェクトの数が所定の条件を満たす場合、調整処理を行う。
このように、実施形態に係る情報処理装置100は、グラフの生成処理において処理対象としたオブジェクトの数が所定の条件を満たす場合、調整処理を行うことにより、適切なタイミングでグラフの生成に用いるパラメータの値を決定することができる。
また、実施形態に係る情報処理装置100において、決定部134は、グラフの生成処理において処理対象としたオブジェクトの数が所定の閾値に達した場合、調整処理を行う。
このように、実施形態に係る情報処理装置100は、グラフの生成処理において処理対象としたオブジェクトの数が所定の閾値に達した場合、調整処理を行うことにより、適切なタイミングでグラフの生成に用いるパラメータの値を決定することができる。
〔7.ハードウェア構成〕
上述してきた実施形態に係る情報処理装置100は、例えば図16に示すような構成のコンピュータ1000によって実現される。図16は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ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を介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔8.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。