以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(第1の実施形態)
〔1.情報処理〕
図1を用いて、第1の実施形態に係る情報処理の一例について説明する。図1は、第1の実施形態に係る情報処理の一例を示す図である。図1では、情報処理装置100(図3参照)が所定の基準に基づいて生成した複数のセントロイドを用いて、データ検索の対象となる複数のオブジェクトをクラスタリングするための情報を生成する一例を示す。情報処理装置100は、複数のオブジェクトをグラフ構造化したグラフインデックス情報(以下「グラフ」や「グラフ情報」や「グラフデータ」ともいう)を用いて複数のオブジェクトをクラスタリングするための情報を生成する。情報処理装置100は、エッジによりオブジェクト(以下「ノード」ともいう)間を連結したグラフを用いて、各ノードを複数のセントロイドのいずれかに割当ノードとして割り当てた情報(以下「クラスタリング情報」ともいう)を生成する。すなわち、情報処理装置100は、グラフを用いて、各ノードが複数のセントロイドのいずれかに割り当てられ、セントロイドに基づいてクラスタリングされたクラスタリング情報を生成する。
図1の例では、情報処理装置100が、データ検索の対象(オブジェクト)がベクトル化された各ベクトルに対応する情報(ノード)を対象として、クラスタリング情報を生成する場合を示す。すなわち、図1の例では、情報処理装置100がベクトルをノードに対応するノード値として処理を行う場合を示す。なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
例えば、情報処理装置100は、数百万〜数億等の単位の膨大な画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、図1中の空間情報SP11に示すように、ノードN1〜N15等に示すような複数のノード(ベクトル)に関する情報を取得する。このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。また、図1中のグラフGR11では、図示の関係上、ノードN1〜N15のノードを図示して処理の概要を説明するが、ノードN1〜N15以外にも多数のノードが含まれる。また、各ノードは、各オブジェクト(検索対象)に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
図1の例では、情報処理装置100は、ノードが無向エッジ(以下単に「エッジ」ともいう)により連結されたグラフGR11を用いて、情報処理を行う。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。また、図1の例では、図示の関係上、エッジE1〜E16のノードを図示して処理の概要を説明するが、エッジE1〜E16以外にも多数のエッジが含まれる。このように、図1中のグラフGR11では、エッジの一部のみを図示するが、例えばk近傍グラフ(k-nearest neighbor graph)であるものとする。なお、グラフGR11は、種々のグラフであってもよい。また、グラフのエッジは、無向エッジに限らず、有向エッジであってもよい。
また、このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE1」と記載した場合、そのエッジはエッジID「E1」により識別されるエッジである。例えば、ノードN1とノードN2とを連結するエッジE1により、ノードN1とノードN2との間を双方向に辿ることが可能となる。すなわち、エッジE1により、ノードN1からノードN2へ辿ることができ、かつエッジE1により、ノードN2からノードN1へ辿ることができる。
ここから、図1を用いてクラスタリング情報を生成する処理について詳述する。まず、情報処理装置100は、データ検索の対象(オブジェクト)に各々対応する複数のノードがエッジにより連結されたグラフを取得する(ステップS11)。図1の例では、情報処理装置100は、空間情報SP11−1に示すようにノードN1〜N15等やエッジE1〜E16等を含むグラフGR11を取得する。例えば、情報処理装置100は、グラフデータ記憶部124(図7参照)からグラフGR11を取得する。なお、情報処理装置100は、種々の従来技術を適宜用いてグラフGR11を生成してもよい。情報処理装置100は、全データ(オブジェクト)がノードとなるように、グラフGR11を生成してもよい。例えば、情報処理装置100は、各オブジェクトが少なくとも1つの他のオブジェクトと連結されることにより、全オブジェクトがノードとなるグラフGR11を生成してもよい。
図1の例では、空間情報SP11中の2つのサイズの円形のうち、小さい方の円形「○」にノードIDを付すことにより各ノードを表現する。例えば、ノードID「N13」により識別されるノード(ノードN13)は、空間情報SP11−1中の左上部の円形「○」として表現する。例えば、図1に示す例において、各ノードは、オブジェクトがN次元の実数値にベクトル化されたベクトルデータに対応する。また、図1に示す空間情報SP11−1〜SP11−5は、空間情報の一部を模式的に示す図であり、空間情報SP11−1〜SP11−5は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報SP11−1〜SP11−5について、特に区別なく説明する場合には、空間情報SP11と記載する。
なお、図1中の空間情報SP11は、ユークリッド空間であってもよい。また、図1に示す空間情報SP11は、各ノード間の距離等の説明のための概念的な図である。なお、例えば、図1に示す空間情報SP11は、平面上に図示するため2次元の態様にて図示されるが、具体的には、例えば数次元〜数万次元等の多次元空間であるものとする。
本実施形態においては、空間情報SP11における各ノードの距離を対応する各オブジェクト(例えば画像等)間の類似度とする。ここで、図1に示す例においては、空間情報SP11における各ノード間の距離が小さいオブジェクト同士の類似度が高く、空間情報SP11における各ノード間の距離が大きいオブジェクト同士の類似度が低い。例えば、図1中の空間情報SP11において、ノードID「N1」により識別されるノード(ノードN1)と、ノードID「N2」により識別されるノード(ノードN2)とは近接している、すなわち距離が小さい。そのため、ノードN1に対応するオブジェクトと、ノードN2に対応するオブジェクトとは類似度が高いことを示す。また、例えば、図1中の空間情報SP11において、ノードID「N1」により識別されるノード(ノードN1)と、ノードID「N15」により識別されるノード(ノードN15)とは遠隔にある、すなわち距離が大きい。そのため、ノードN1に対応するオブジェクトと、ノードN15に対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標は、本願の情報処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の情報処理に適用可能であれば、ユークリッド距離やマハラノビス距離等の種々の指標が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
その後、情報処理装置100は、セントロイド情報(以下単に「セントロイド」ともいう)を生成する(ステップS12)。例えば、情報処理装置100は、所定の基準に基づいて複数のセントロイドを生成する。情報処理装置100は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置100は、データ検索の対象数(オブジェクト数)に基づいて決定される所定数のセントロイドを生成する。情報処理装置100は、種々の情報を用いてセントロイドの数を決定してもよい。例えば、情報処理装置100は、データ検索の対象数(オブジェクト数)が「500万」である場合、「5万(=500万/100)」のセントロイドを生成する。なお、上記は一例であり、情報処理装置100は、種々の情報に基づいて、所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、k−means法やk−means++等の種々の従来技術を適宜用いて、所定数のセントロイドを生成してもよい。
例えば、情報処理装置100は、所定数のセントロイドをランダムに生成してもよい。また、情報処理装置100は、各セントロイド間の距離が遠くなるように所定数のセントロイドをランダムに生成してもよい。例えば、情報処理装置100は、任意のセントロイドを初期のセントロイドとして生成し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置(ベクトル)に対応するセントロイドを生成する処理を繰り返す。なお、上記は一例であり、情報処理装置100は、種々の方法により、所定数のセントロイドを生成してもよい。
情報処理装置100は、ノードN1〜N15等から、セントロイドとするノードを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、ノードN1〜N15等から、所定数のノードを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置100は、ノードN1〜N15等から、セントロイドとして利用するノードを選択し、選択したノードのベクトルを自身のベクトルとするセントロイドを生成することにより、所定数のセントロイドを生成してもよい。情報処理装置100は、上記のノードN1〜N15等からの選択により、セントロイドC1〜C3等を含む複数のセントロイドを生成してもよい。
図1の例では、情報処理装置100は、所定数のセントロイドをランダムに生成するものとする。これにより、情報処理装置100は、図1中の空間情報SP11−2に示すように、セントロイドC1〜C3等を含む複数のセントロイドを生成する。このように、「セントロイドC*(*は任意の数値)」と記載した場合、そのセントロイドはセントロイドID「C*」により識別されるセントロイドであることを示す。例えば、「セントロイドC1」と記載した場合、そのセントロイドはセントロイドID「C1」により識別されるセントロイド(ベクトル)である。図1の例では、説明を簡単にするためにセントロイドC1〜C3のみを図示するが、情報処理装置100は、データ検索の対象数(ノード数)に基づいて、セントロイドC1〜C3を含む多数のセントロイドを生成してもよい。
また、図1の空間情報SP11中では、適宜「セントロイドC*(*は任意の数値)」の図示を省略し、空間情報SP11中の2つのサイズの円形のうち、大きい方の円形「○」内に「セントロイドC*」の「*」の値を付すことにより、各セントロイドを表現する。すなわち、「セントロイドC*」の部分の「*」が一致するセントロイドに対応する。例えば、空間情報SP11−2中の左上の「○」であって、内部に「1」が付された「○」は、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応する。例えば、図1に示す例において、各セントロイドに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。空間情報SP11において、セントロイドとの間の距離が近いノードが、そのセントロイドとベクトルが類似し、そのセントロイドの近傍に位置するノードであることを示す。
そして、情報処理装置100は、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。情報処理装置100は、セントロイドC1の近傍ノードを検索する(ステップS13)。情報処理装置100は、セントロイドC1をクエリとして、グラフGR11を探索することにより、セントロイドC1の近傍ノードを検索し、抽出する。図1の例では、情報処理装置100は、検索数「4」である基準CR11に基づいて、セントロイドC1の近傍ノードを検索する。この場合、情報処理装置100は、基準CR11が示す検索数「4」に対応する4個のノードを、セントロイドC1の近傍ノードとして抽出する。
なお、検索数は「4」に限らず、「30」、「100」等の種々の値であってもよい。例えば、情報処理装置100は、種々の情報を適宜用いて、検索数を決定してもよい。例えば、情報処理装置100は、全ノード数をセントロイド数で除した値(第1値)を用いて、検索数を決定してもよい。例えば、情報処理装置100は、第1値に所定の値(第2値)を乗算することにより、検索数を決定してもよい。例えば、情報処理装置100は、全ノード数が「10万」であり、セントロイド数が「200」であり、第2値が「2」である場合、検索数を「1000(=10万/200*2)」と算出してもよい。
例えば、情報処理装置100は、グラフGR11の検索時においては、グラフGR11の検索の開始位置(起点)を所定の起点用情報(以下「起点用インデックス」ともいう)を用いて決定したノード(以下「起点ノード」ともいう)からスタートしてもよい。また、例えば、情報処理装置100がグラフGR11を用いて検索を行う場合、予め決定された起点ノードやランダムに決定した起点ノードを起点として検索を行ってもよい。例えば、情報処理装置100は、起点ノードがノードN1である場合、ノードN1からエッジを辿ることにより、検索数「4」に対応する4個のノードN1〜N4等を検索してもよい。なお、情報処理装置100は図21に示すような処理手順により近傍ノードの探索(検索)を行ってもよいが、詳細は後述する。
図1の例では、情報処理装置100は、空間情報SP11−3に示すように、セントロイドC1の近傍ノードとして、ノードN1〜N4の4個のノードを抽出する。情報処理装置100は、セントロイドC1に、ノードN1〜N4、及びセントロイドC1とノードN1〜N4との間の距離を対応付けた情報(以下「対応付情報」ともいう)を、近傍ノード一覧SL1−1に追加することにより、近傍ノード一覧SL1−1を生成する。以下では、近傍ノード一覧SL1−1、SL1−2について、特に区別なく説明する場合には、近傍ノード一覧SL1と記載する。情報処理装置100は、近傍ノード一覧SL1に対応する対応付情報等の近傍ノード群情報を記憶部120(図3参照)に記憶してもよい。例えば、近傍ノード群情報とは、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む情報である。
図1の例では、情報処理装置100は、ノードN1がセントロイドC1の近傍ノードであり、セントロイドC1とノードN1との間の距離が距離D1−1であることを示す情報(対応付情報)を生成し、近傍ノード一覧SL1に追加する。また、情報処理装置100は、ノードN2〜N4がセントロイドC1の近傍ノードであり、セントロイドC1とノードN2〜N4の各々との間の距離が距離D1−2〜D1−4であることを示す対応付情報を生成し、近傍ノード一覧SL1に追加する。情報処理装置100は、セントロイドをクエリとする近傍ノードの検索結果を近傍ノード一覧SL1に追加する。なお、距離D1−1〜D1−4は、その数が大小を示すものではなく、対応するセントロイドとノードとの間の具体的な数値であるものとする。
情報処理装置100は、近傍ノード一覧SL1に距離が短い方から順に各対応付情報を並べて格納する。情報処理装置100は、近傍ノード一覧SL1中に含まれる各対応付情報を距離が短い方から順にソートする。図1の例では、情報処理装置100は、近傍ノード一覧SL1中に含まれる各対応付情報が距離の短い方から順に上から下に並ぶようにソートする。例えば、近傍ノード一覧SL1は配列であってもよい。なお、情報処理装置100は、各対応付情報が距離順に参照可能であれば、どのようにソートを行ってもよく、例えば順番を示す情報(フラグ)を付したり、連結リストを生成したりすることにより、対応付情報を距離が短い方から順にソートする処理を実現してもよい。図1の例では、情報処理装置100は、近傍ノード一覧SL1−1に示すように、セントロイドC1とノードN1との間の距離D1−1が最も短く、セントロイドC1とノードN2との間の距離D1−2が2番目に短く、距離D1−3、距離D1−4と距離が大きくなることを示す。
なお、空間情報SP11−3において、セントロイドC1の近傍ノードとして、ノードN1〜N4が抽出されたことを、セントロイドC1とノードN1〜N4を点線でつなぐことにより示す。空間情報SP11−3に示す範囲AR1は、セントロイドC1の近傍ノードのうち、セントロイドC1から最も遠い(最遠の)ノードとセントロイドC1との間の距離を半径とし、セントロイドC1を中心とする超球(図では円)を模式的に示す。図1では、範囲AR1は、セントロイドC1を中心とし、セントロイドC1とノードN4との間の距離D1−4を半径とする円を示す。
そして、情報処理装置100は、セントロイドC2、C3等の近傍ノードを検索する(ステップS14)。情報処理装置100は、セントロイドC2をクエリとして、グラフGR11を探索することにより、セントロイドC2の近傍ノードを検索し、抽出する。図1の例では、情報処理装置100は、検索数「4」である基準CR11に基づいて、セントロイドC2の近傍ノードを検索する。この場合、情報処理装置100は、基準CR11が示す検索数「4」に対応する4個のノードを、セントロイドC2の近傍ノードとして抽出する。
図1の例では、情報処理装置100は、空間情報SP11−4に示すように、セントロイドC2の近傍ノードとして、ノードN3、N5〜N7の4個のノードを抽出する。情報処理装置100は、近傍ノード一覧SL1−2に示すように、セントロイドC2に、ノードN3、N5〜N7、及びセントロイドC2とノードN3、N5〜N7との間の距離を対応付けた情報を生成する。図1の例では、情報処理装置100は、ノードN3がセントロイドC2の近傍ノードであり、セントロイドC2とノードN3との間の距離が距離D2−3であることを示す情報を生成する。また、情報処理装置100は、ノードN5〜N7がセントロイドC2の近傍ノードであり、セントロイドC2とノードN5〜N7の各々との間の距離が距離D2−5〜D2−7であることを示す情報を生成する。
また、図1の例では、情報処理装置100は、空間情報SP11−4に示すように、セントロイドC3の近傍ノードとして、ノードN8〜N11の4個のノードを抽出する。情報処理装置100は、近傍ノード一覧SL1−2に示すように、セントロイドC3に、ノードN8〜N11、及びセントロイドC3とノードN8〜N11との間の距離を対応付けた情報を生成する。図1の例では、情報処理装置100は、ノードN8がセントロイドC3の近傍ノードであり、セントロイドC3とノードN8との間の距離が距離D3−8であることを示す情報を生成する。また、情報処理装置100は、ノードN8〜N11がセントロイドC3の近傍ノードであり、セントロイドC3とノードN8〜N11の各々との間の距離が距離D3−9〜D3−11であることを示す情報を生成する。
情報処理装置100は、近傍ノード一覧SL1−2に示すように、各セントロイドC1〜C3等と近傍ノードとの対応付情報を距離順に並べる。情報処理装置100は、各セントロイドC1〜C3等と近傍ノードとの各対応付情報の距離を比較することにより、各対応付情報を距離順に並べる。図1の例では、情報処理装置100は、セントロイドC3とノードN9との間の距離D3−9が最も短いため、セントロイドC3とノードN9との対応付情報を先頭にして近傍ノード一覧SL1−2に並べる。情報処理装置100は、セントロイドC3とノードN8との間の距離D3−8が2番目に短いため、セントロイドC3とノードN9との対応付情報を近傍ノード一覧SL1−2の2番目に並べる。このように、情報処理装置100は、各セントロイドC1〜C3等と近傍ノードとの対応付情報を距離順に並べた近傍ノード一覧SL1−2を生成する。
なお、空間情報SP11−4において、セントロイドC2の近傍ノードとして、ノードN3、N5〜N7が抽出されたことを、セントロイドC2とノードN3、N5〜N7を点線でつなぐことにより示す。空間情報SP11−4に示す範囲AR2は、セントロイドC2の近傍ノードのうち、セントロイドC2から最も遠い(最遠の)ノードとセントロイドC2との間の距離を半径とし、セントロイドC2を中心とする超球(図では円)を模式的に示す。図1では、範囲AR2は、セントロイドC2を中心とし、セントロイドC2とノードN7との間の距離D2−7を半径とする円を示す。また、図1では、範囲AR3は、セントロイドC3を中心とし、セントロイドC3とノードN11との間の距離D3−11を半径とする円を示す。
そして、情報処理装置100は、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う(ステップS15)。図1の例では、情報処理装置100は、近傍ノード一覧SL1−2に含まれるノードN1〜N11を第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。情報処理装置100は、近傍ノード一覧SL1−2に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。図1の例では、情報処理装置100は、近傍ノード一覧SL1−2の先頭に位置する対応付情報に対応するセントロイドC3にノードN9を割当ノードとして割り当てる。
なお、空間情報SP11−5において、各セントロイドに割り当てられた割当ノードは、セントロイドとノードとの間を実線でつなぐことにより示す。そのため、空間情報SP11−5においては、グラフGR11のエッジの情報の図示を省略する。空間情報SP11−5は、セントロイドC3とノードN9が実線でつながれており、ノードN9がセントロイドC3の割当ノードであることを示す。
また、情報処理装置100は、近傍ノード一覧SL1−2の2番目に位置する対応付情報に対応するセントロイドC3にノードN8を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の3番目に位置する対応付情報に対応するセントロイドC3にノードN10を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の4番目に位置する対応付情報に対応するセントロイドC1にノードN1を割当ノードとして割り当てる。このように、情報処理装置100は、近傍ノード一覧SL1−2に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、図1中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。
ここで、情報処理装置100は、上記のように、取得した全セントロイドのデータ(近傍ノード)を距離の短い順にソートし、短い順にセントロイドに割り当てる。その際、情報処理装置100は、同一のデータが出現したら、割当てをスキップする。このように、情報処理装置100は、既に割当ノードとしてセントロイドに割り当てられたノードが対象となった場合、割り当て処理を行わない。
図1の例では、情報処理装置100は、近傍ノード一覧SL1−2の7番目に位置する対応付情報に対応するセントロイドC1にノードN3を割当ノードとして割り当てる。その後、情報処理装置100は、近傍ノード一覧SL1−2の8〜10番目に位置する対応付情報を対象として処理を行った後、近傍ノード一覧SL1−2の11番目に位置する対応付情報を対象として処理を行う。近傍ノード一覧SL1−2の11番目に位置する対応付情報のノードはノードN3であり、ノードN3は既にセントロイドC1の割当ノードとして割り当てられている。そのため、情報処理装置100は、近傍ノード一覧SL1−2の11番目に位置する対応付情報のセントロイドC2に、ノードN3を割り当てない。そして、情報処理装置100は、近傍ノード一覧SL1−2の12番目に位置する対応付情報に対応するセントロイドC2にノードN7を割当ノードとして割り当てる。
例えば、情報処理装置100は、既に割当済みのノードの一覧情報(割当済み一覧情報)を記憶部(図3参照)に記憶し、割当済み一覧情報を用いて、判定してもよい。情報処理装置100は、セントロイドにノードを割り当てる際に割当済み一覧情報にそのノードが含まれる場合、割当て処理を行わない。例えば、情報処理装置100は、クラスタリング情報記憶部127を参照することにより、既に割当済みのノードかどうかを判定してもよい。なお、情報処理装置100は、1個のノードが複数のセントロイドに重複して割り当てられなければ、どのような処理により、各ノードをいずれか1個のセントロイドに割り当てる処理を実現してもよい。
そして、情報処理装置100は、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う(ステップS16)。図1の例では、情報処理装置100は、第1割当処理によりセントロイドに割り当てられなかったノードN12〜N15を第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。
例えば、情報処理装置100は、セントロイドに未割当てのノードであるノードN12〜N15を、セントロイドC1〜C3等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置100は、ノードN12と、セントロイドC1〜C3との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図1の例では、情報処理装置100は、セントロイドC1〜C3等のうち、ノードN12との距離が最も近いセントロイドC2に、ノードN12を割当ノードとして割り当てる。また、情報処理装置100は、セントロイドC1〜C3等のうち、ノードN13との距離が最も近いセントロイドC1に、ノードN13を割当ノードとして割り当てる。このように、情報処理装置100は、第2対象ノードであるノードN12〜N15等をセントロイドに割り当てることにより、図1中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。
上述したように、情報処理装置100は、グラフGR11を用いることにより、ノードN1〜N15等をセントロイドC1〜C3等のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置100は、各セントロイドC1〜C3等をクエリとして、グラフGR11を探索し、検索数を基準として各セントロイドC1〜C3等の近傍ノードを抽出し、抽出した近傍ノードに基づいて、各ノードN1〜N15等が属するクラスタを適切に決定することができる。例えば、情報処理装置100は、各セントロイドC1〜C3等をクエリとして、グラフGR11を探索することにより、各セントロイドと各ノードとの類似度(距離)を比較することなく、セントロイドに割当ノードを割り当てることができる。したがって、情報処理装置100は、各セントロイドと各ノードとの類似度(距離)を比較する場合に比べて、より高速に各ノードをクラスタリングすることができる。すなわち、情報処理装置100は、複数のオブジェクト(ノード)をグラフ構造化したグラフインデックス(グラフ情報)を用いることにより、効率的なクラスタリングを可能にすることができる。
〔1−1.更新処理(繰り返し処理)〕
図1では、情報処理装置100がセントロイドを生成し、各セントロイドにノードを割り当てる最初の割当処理を示したが、情報処理装置100は、割当処理後において、各セントロイドに割り当てられたノードに基づいて、セントロイドを更新し、更新後のセントロイドを用いて2回目以降の割当処理(以下「更新処理」ともいう)を繰り返す。この点について、以下説明する。
情報処理装置100は、各セントロイドの空間情報SP11における位置を割当ノードに応じて更新する。情報処理装置100は、セントロイドに割り当てられたデータ(ノード)を基にセントロイドを再計算する。情報処理装置100は、セントロイドに割り当てられたデータ(ノード)の平均を基にセントロイドを更新する。
情報処理装置100は、各セントロイドのベクトルを割当ノードのベクトルに応じて更新する。例えば、情報処理装置100は、一のセントロイドに割り当てられた複数データ(割当ノード)の中央座標(重心)を一のセントロイドの座標(セントロイド値)としてもよい。例えば、情報処理装置100は、一のセントロイドの割当ノードに対応するベクトルの平均値を、一のセントロイドのベクトルとして生成する。
例えば、情報処理装置100は、セントロイドC1にノードN1〜N4、N13等が割当ノードとして割り当てられたため、セントロイドC1の割当ノードに応じて、セントロイドC1を更新する。このように、情報処理装置100は、セントロイドの割当ノードに応じて、セントロイドを更新する。例えば、情報処理装置100は、あるセントロイドの割当ノードに変更があった場合、変更後の割当ノードに基づいて、セントロイドを更新後セントロイドに更新する。
例えば、情報処理装置100は、セントロイドC1のベクトルを、ノードN1〜N4、N13等のベクトルに応じて変更することにより、セントロイドC1を更新する。この場合、例えば、図1の空間情報SP11−5中に示すセントロイドC1の位置は、ノードN1〜N4、N13等の中央座標に更新される。
また、例えば、情報処理装置100は、セントロイドC2のベクトルを、ノードN5〜N7、N12等のベクトルに応じて変更することにより、セントロイドC2を更新する。この場合、例えば、図1の空間情報SP11−5中に示すセントロイドC2の位置は、ノードN5〜N7、N12等の中央座標に更新される。
また、例えば、情報処理装置100は、セントロイドC3のベクトルを、ノードN8〜N11、N14等のベクトルに応じて変更することにより、セントロイドC3を更新する。この場合、例えば、図1の空間情報SP11−5中に示すセントロイドC3の位置は、ノードN8〜N11、N14等の中央座標に更新される。
そして、情報処理装置100は、更新後のセントロイドC1〜C3等を用いて、再度割当て処理を繰り返してもよい。例えば、情報処理装置100は、セントロイドC1〜C3等の更新後において、セントロイドC1〜C3等へのノードの割当てを再度行うことにより、クラスタリング情報を再生成してもよい。
情報処理装置100は、所定の終了条件を満たすまで、割当処理(更新処理)を繰り返してもよい。この場合、情報処理装置100は、所定の終了条件に基づいて、更新処理の繰り返しの終了を判定してもよい。例えば、所定の終了条件は、k−means法と同一であってもよい。ここでいう所定の終了条件は、例えば、セントロイドの座標の変化がなくなることや、変化量が一定量以下になることや、量子化誤差が一定量以下になること等、種々の条件であってもよい。情報処理装置100は、所定の終了条件を満たすまで、更新処理を繰り返す。例えば、情報処理装置100は、割当ノードの変更が無くなるまで、上記のような更新処理を繰り返し実行してもよい。また、情報処理装置100は、所定の終了条件を満たすまで、割当処理(更新処理)の回数が所定の閾値(例えば100回や5000回等)に達した場合、処理を終了してもよい。
上述したように、情報処理装置100は、割当処理後においてセントロイドを更新し、更新したセントロイドを用いて、再度割当処理(更新処理)を行うことにより、効率的にクラスタリング情報を生成することができる。なお、情報処理装置100は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。この場合、情報処理装置100は、グラフの検索範囲に関連するパラメータ値である拡張要素「ε」(図21参照)を変更する。具体的には、情報処理装置100は、拡張要素「ε」を増加する。そして、情報処理装置100は、所定の終了条件を満たすまで、増加後の拡張要素「ε」を用いて割当処理(更新処理)を繰り返す。例えば、検索精度が低い場合には結果が収束しない場合がある。一方で、検索精度を高くすると処理に時間を要することにつながる。ここで、拡張要素「ε」は検索精度を決定する要素となる。そこで、情報処理装置100は、まず小さい値の拡張要素「ε」を用いて割当処理を行う。この場合、精度が低いことから、収束しないので割当処理の実行回数が所定の回数に達する場合が多い。そこで、情報処理装置100は、拡張要素「ε」の値を増加させ再度割当処理を実行する。そして、情報処理装置100は、拡張要素「ε」の増加後の割当処理の実行回数が所定の回数に到達する前に、収束する(すなわち所定の終了条件を満たす)まで、拡張要素「ε」の増加し、割当処理を実行することを繰り返します。これにより、情報処理装置100は、所定の回数が少なく設定することができるため、全体の処理時間の増大を抑制することができます。したがって、情報処理装置100は、効率的にクラスタリング情報を生成することができる。
〔1−2.基準〕
図1の例では、クラスタリング情報の生成処理における基準として、近傍ノード検索時の検索数を用いる場合を示したが、情報処理装置100は、検索数に限らず、種々の基準を用いてクラスタリング情報の生成処理を行ってもよい。例えば、情報処理装置100は、有効半径等を示す検索範囲数を基準に用いてもよいが、この点についての詳細は後述する。
また、情報処理装置100は、変更条件を満たすかどうかに応じて、基準を変更してもよい。情報処理装置100は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、基準を変更してもよい。情報処理装置100は、全ノードに占める近傍ノードの割合であるスコア(近傍ノード割合)と、所定の閾値(例えば閾値TH12)との比較に基づいて、基準CR11である検索数を変更内容AINF12に応じて、変更してもよい。例えば、情報処理装置100は、近傍ノード割合が、閾値TH12未満である場合、変更内容AINF12である「25%増加」に応じて、基準CR11である検索数「4」を「5(=4+4*0.25)」に減少させて、更新後の検索数を用いて、割当処理を繰り返してもよい。なお、変更内容AINF12は、割合を示す情報に限らず、例えば「2増加」や「−4」などであってもよい。
また、情報処理装置100は、抽出された近傍ノードの数であるスコア(近傍ノード数)と、所定の閾値(例えば閾値TH11)との比較に基づいて、基準CR11である検索数を変更内容AINF11に応じて、変更してもよい。例えば、情報処理装置100は、近傍ノード数が、閾値TH11以上である場合、変更内容AINF11である「25%減少」に応じて、基準CR11である検索数「4」を「3(=4−4*0.25)」に減少させて、更新後の検索数を用いて、割当処理を繰り返してもよい。なお、変更内容AINF11は、割合を示す情報に限らず、例えば「1減少」や「−3」などであってもよい。
〔1−3.処理スキップ〕
また、情報処理装置100は、所定の条件を満たす場合、セントロイドへのノードの割当て処理を行うことなく、更新した基準を用いて、再度割当処理を行ってもよい。情報処理装置100は、変更条件を満たした基準が変更された場合、ノードの割当てを行うことなく、更新した基準を用いて、再度割当処理を行ってもよい。この場合、情報処理装置100は、変更条件を満たすかどうかの判定を、近傍ノード抽出後であり、割当ノードを決定前に行ってもよい。図1の例では、情報処理装置100は、変更条件を満たすかどうかの判定を、ステップS14の後、ステップS15の前に行ってもよい。そして、情報処理装置100は、変更条件を満たした基準CR11が変更された場合、ステップS13に戻って、更新された基準CR11を用いて、処理を繰り返してもよい。
なお、情報処理装置100は、変更条件を満たした基準CR11を変更する場合があっても、変更前の基準CR11でステップS15、S16の処理を行ってもよい。そして、情報処理装置100は、ステップS16の終了後に基準CR11を更新し、ステップS13に戻って、更新された基準CR11を用いて、処理を繰り返してもよい。なお、処理をスキップするかどうかの条件は、基準の変更条件とは別に設定されてもよい。
また、情報処理装置100は、第2割当処理の対象ノード(第2割当処理対象)の数が所定の閾値以上である場合、検索数を増加させてもよい。例えば、情報処理装置100は、第2割当処理対象数が所定数以上である場合、検索数を増加させ、セントロイドへのノードの割当て処理を行うことなく、更新した検索数を用いて、再度割当処理を行ってもよい。例えば、情報処理装置100は、全ノードに占める第2割当処理対象の割合が所定の閾値(例えば50%等)以上である場合、検索数を増加させ、セントロイドへのノードの割当て処理を行うことなく、更新した検索数を用いて、再度割当処理を行ってもよい。
〔1−4.変更条件〕
情報処理装置100は、種々の変更条件を用いてもよい。例えば、情報処理装置100は、第2割当処理対象数に基づく変更条件を用いてもよい。また、情報処理装置100は、第2割当処理対象数が所定の閾値以下である場合、検索数を減少させてもよい。例えば、情報処理装置100は、第2割当処理対象数が0個、すなわち第1割当処理により全ノードがセントロイドに割り当てられた場合、検索数を所定割合(例えば20%や50%等)や所定数(例えば2、5等)だけ減少させてもよい。
〔1−5.起点用情報〕
例えば、情報処理装置100は、図19に示すようなツリー構造(木構造)に関する起点用情報IND11を起点用情報(起点用インデックス)として用いてもよい。図19は、情報処理に用いる起点ノードを決定する起点用情報の一例を示す図である。例えば、起点用情報IND11は、グラフGR11中のノードに到達可能なツリー構造を有するインデックスである。図19の例では説明を簡単にするために、起点用情報IND11は、ノードN1〜N5の5個のノードに到達するルートのみを図示するが、多数(例えば500や1000等)の他のノードへ到達するルートが含まれてもよい。例えば、起点用情報IND11は、グラフGR11中の全ノードに到達可能であってもよい。
なお、起点用情報IND11のような起点用情報は、情報処理装置100が生成してもよいし、情報処理装置100は、起点用情報を情報提供装置50等の他の外部装置から取得してもよい。例えば、情報処理装置100は、起点用情報を生成する場合は、木構造に関する種々の従来技術を適宜用いて、グラフ(例えばグラフGR11)に含まれるノードをリーフとする木構造の起点用情報(例えば起点用情報IND11)を生成する。上記のように、情報処理装置100は、木構造に関する種々の従来技術を適宜用いて、起点用情報記憶部125(図8参照)に記憶された起点用情報IND11のような、起点用インデックスを生成する。
また、情報処理装置100は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置100は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置100は、情報提供装置50から起点用情報IND11を取得する場合は、情報提供装置50へグラフGR11を送信する。そして、情報処理装置100は、グラフGR11を受信した情報提供装置50が生成した起点用情報IND11を、情報提供装置50から取得する。例えば、情報処理装置100は、新たに追加されたノード(追加ノード)がある場合、起点用情報IND11と追加ノードに関する情報とを情報提供装置50へ提供することにより、情報提供装置50から追加ノードにより更新された起点用情報IND11を取得してもよい。なお、上記は一例であり、情報提供装置50は、起点用情報IND11を取得可能であれば、どのような手段により起点用情報IND11を取得してもよい。
また、情報処理装置100は、図19中のインデックス情報群GINF11に示すような起点用情報IND11を用いて起点ノードを決定してもよい。図19の例では、情報処理装置100は、起点用情報IND11に基づいて、クエリQE1に対応する起点ノードを決定する。クエリQE1は、クエリとするセントロイドやグラフGR11を用いた検索を行う対象等であってもよい。すなわち、情報処理装置100は、クラスタリング情報生成時や検索時において、起点用情報IND11を用いて、起点ノードを決定する。
具体的には、情報処理装置100は、起点用情報記憶部125(図8参照)に記憶された起点用情報IND11を用いて、起点ノードを決定する。図19中の起点用情報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は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図19の例に示す起点用情報(起点用インデックス)は一例であり、情報処理装置100は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置100は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルを高速に検索するための検索インデックス(起点用情報)を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、情報処理装置100は、kd木(k-dimensional tree)に関する検索インデックスを起点用インデックスとして生成してもよい。例えば、情報処理装置100は、VP木(Vantage-Point tree)に関する検索インデックスを起点用インデックスとして生成してもよい。
また、例えば、情報処理装置100は、その他の木構造を有するインデックスを、起点用インデックスとして生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフに接続する種々の起点用インデックスを生成してもよい。例えば、情報処理装置100は、木構造の起点用インデックスのリーフがグラフ中のノードに対応する種々の起点用インデックスを生成してもよい。また、情報処理装置100は、このような起点用インデックスを用いて検索を行う場合、起点用インデックスを辿って到達したリーフ(ノード)からグラフを探索してもよい。
なお、上述したような起点用インデックスは一例であり、情報処理装置100は、グラフ中のクエリに対応する起点ノードを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。例えば、情報処理装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックスを生成してもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能な起点用インデックスであれば、どのようなデータ構造の起点用インデックスを生成してもよい。情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置100は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関する検索をより高速に実行可能にすることができる。
〔1−6.セントロイド用インデックス〕
なお、情報処理装置100は、第2対象ノードをセントロイドに割り当てる場合に、セントロイド用のインデックス(以下「セントロイド用インデックス」ともいう)を用いて割り当てるセントロイドを決定してもよい。例えば、情報処理装置100は、図20に示すような木構造を有するインデックスを、セントロイド用インデックスST11として用いてもよい。図20は、セントロイド用のインデックスの一例を示す図である。例えば、情報処理装置100は、図20に概念的に示すようなセントロイド用インデックスを記憶部120(図4参照)に記憶してもよい。また、例えば、情報処理装置100は、高次元データを検索できるハッシュ型などその他のインデックスをセントロイド用インデックスとして用いてもよい。例えば、情報処理装置100は、高次元データを検索できるハッシュ型などその他のインデックスをセントロイド用インデックスとして記憶部120(図4参照)に記憶してもよい。
図20中のセントロイド用インデックスST11は、ルートRT1や節点ND1、ND2やセントロイドC1、C3等を含む。例えば、情報処理装置100は、セントロイド用インデックスST11を用いて、探索対象となるノードや検索クエリである探索対象に最も近いセントロイドを特定する。例えば、情報処理装置100は、セントロイド用インデックスST11を上から下(例えばルートRT1からセントロイド)へ辿ることにより、探索対象の近傍候補となるセントロイドを特定してもよい。
例えば、情報処理装置100は、セントロイド用インデックスST11を用いて、第2割当処理を行ってもよい。例えば、情報処理装置100は、セントロイド用インデックスST11を用いて、第2対象ノードに最も近いセントロイドを特定し、特定したセントロイドに第2対象ノードを割当ノードとして割り当ててもよい。
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、情報処理装置100は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造のセントロイド用インデックスを用いてもよい。例えば、情報処理装置100は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、セントロイド用インデックスを用いてもよい。例えば、情報処理装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のセントロイド用インデックスを用いてもよい。また、情報処理装置100は、上述した種々のインデックスを生成してもよい。
〔2.情報処理システムの構成〕
図2に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図2は、第1の実施形態に係る情報処理システムの構成例を示す図である。なお、図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は、複数のセントロイドの各々をクエリとして、複数のノードがエッジにより連結されたグラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出し、抽出した近傍ノードに基づいてクラスタリング情報を生成する情報処理装置である。情報処理装置100は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリングを生成する生成装置である。例えば、情報処理装置100は、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。また、情報処理装置100は、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。情報処理装置100は、第1割当処理及び第2割当処理を含む割当処理により、クラスタリング情報を生成する。
例えば、情報処理装置100は、端末装置からクエリ情報(以下、単に「クエリ」ともいう)を受信すると、クエリに類似する対象(ベクトル情報等)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置100が画像を検索する場合を一例として説明する。
〔3.情報処理装置の構成〕
次に、図3を用いて、第1の実施形態に係る情報処理装置100の構成について説明する。図3は、第1の実施形態に係る情報処理装置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)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第1の実施形態に係る記憶部120は、図3に示すように、オブジェクト情報記憶部121と、基準情報記憶部122と、変更条件情報記憶部123と、グラフデータ記憶部124と、起点用情報記憶部125と、セントロイド記憶部126と、クラスタリング情報記憶部127とを有する。
(オブジェクト情報記憶部121)
第1の実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図4は、第1の実施形態に係るオブジェクト情報記憶部の一例を示す図である。図4に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図4の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
例えば、図4の例では、オブジェクトID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(基準情報記憶部122)
第1の実施形態に係る基準情報記憶部122は、グラフ検索の基準に関する各種情報を記憶する。図5は、第1の実施形態に係る基準情報記憶部の一例を示す図である。図5に示す基準情報記憶部122は、「基準ID」、「対象」、「値」といった項目が含まれる。
「基準ID」は、グラフ検索の基準を識別する情報を示す。「対象」は、基準IDにより識別される基準の対象を示す。また、「値」は、対応する基準として用いる具体的な値を示す。
図5の例では、基準ID「CR11」により識別される基準(基準CR11)は、検索数を対象とする基準であることを示す。基準CR11として用いられる対象は、検索数であり、その値は「4」であることを示す。なお、図5に示す例では、対象「検索数」の値は、「4」に限らず、「2」や「10」や「100」等種々の値であってもよい。
また、図5の例では、基準ID「CR12」により識別される基準(基準CR12)は、対象範囲を示す有向半径を対象とする基準であることを示す。基準CR12として用いられる基準は、有効半径であり、その値は「‐」であることを示す。すなわち、図5の例では、基準CR12は未設定であることを示す。なお、図5に示す例では、対象「対象範囲(有効半径)」の値が、設定されていない場合を示すが、種々の値が設定されてもよい。
なお、基準情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(変更条件情報記憶部123)
第1の実施形態に係る変更条件情報記憶部123は、基準の変更に関する変更条件に関する各種情報を記憶する。図6は、第1の実施形態に係る変更条件情報記憶部の一例を示す図である。図6に示す変更条件情報記憶部123は、「変更条件ID」、「決定用情報」、「変更情報」といった項目を有する。
「変更条件ID」は、基準の変更に関する条件を識別する情報を示す。「決定用情報」は、基準を変更するかの決定(判定)に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、基準を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図6に示す例では、「閾値」の値は、「TH11」や「TH12」といった抽象的な符号を図示するが、「100」や「5000」や「5%」や「0.2」等の具体的な数値であるものとする。
「変更情報」は、変更される基準やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる基準を示す。「変更対象」には、対象とする基準を識別する情報(基準ID等)が記憶される。「変更内容」は、対応する条件を満たす場合に基準を変更する具体的な内容を示す。なお、図6に示す例では、「変更内容」は、「AINF11」といった抽象的な符号を図示するが、「+1」や「5増加」や「2減少」や「10%増加」や「5%減少」等の種々の変更内容であってもよい。
図6の例では、変更条件ID「ACD11」により識別される変更条件(変更条件ACD11)は、近傍ノード数に関する情報を判定に用いる条件であることを示す。変更条件ACD11は、閾値「TH11」であることを示す。また、変更条件ACD11を満たす場合、変更対象となる基準は、基準CR11であることを示す。変更条件ACD11を満たす場合、基準CR11は変更内容AINF11に応じて変更されることを示す。例えば、変更内容AINF11が「2増加」である場合、情報処理装置100は、変更条件ACD11を満たすと判定した場合に、基準CR11である検索数の値を2増加させる。
なお、変更条件情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフデータ記憶部124)
第1の実施形態に係るグラフデータ記憶部124は、グラフデータに関する各種情報を記憶する。例えば、グラフデータ記憶部124は、生成したグラフデータを記憶する。図7は、第1の実施形態に係るグラフデータ記憶部の一例を示す図である。図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「E2」により識別されるエッジ(エッジE2)が、ノードID「N3」により識別されるノード(ノードN3)に連結されることを示す。すなわち、図7の例では、グラフデータにおけるノードN1からはエッジE2によりノードN3へ辿ることができることを示す。
また。図7の例では、ノードID「N2」には、参照先をノードID「N1」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、ノードN2は、エッジE1により、ノードN1と連結されることを示す。すなわち、図7の例では、ノードN2からはノードN1に辿ることができることを示す。
なお、グラフデータ記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフデータ記憶部124は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフデータ記憶部124は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部123は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。例えば、グラフ情報記憶部123は、エッジIDに、そのエッジIDにより識別されるエッジが連結するセントロイドを識別する情報を対応付けて記憶してもよい。
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータGR11は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータGR11は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータGR11は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
(起点用情報記憶部125)
第1の実施形態に係る起点用情報記憶部125は、起点用情報に関する各種情報を記憶する。図8は、第1の実施形態に係る起点用情報記憶部の一例を示す図である。具体的には、図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)
第1の実施形態に係るセントロイド情報記憶部126は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部126は、セントロイドIDやベクトル情報(ベクトルデータ)を記憶する。図9は、第1の実施形態に係るセントロイド情報記憶部の一例を示す図である。図9に示すセントロイド情報記憶部126は、「セントロイドID」、「ベクトル情報」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「ベクトル情報」は、セントロイドIDにより識別されるセントロイド(ベクトル)に対応するベクトル情報を示す。
図9に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応するベクトル情報は、「10,24,54,2・・・」のN次元ベクトルであることを示す。
また、図9に示す例においては、セントロイドID「C4」により識別されるセントロイド(セントロイドC4)に対応するベクトル情報は、「32,1,120,31・・・」のN次元ベクトルであることを示す。
なお、セントロイド情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(クラスタリング情報記憶部127)
第1の実施形態に係るクラスタリング情報記憶部127は、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部127は、セントロイド情報記憶部122に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図10は、第1の実施形態に係るクラスタリング情報記憶部の一例を示す図である。図10の例では、クラスタリング情報記憶部127は、「セントロイドID」、「オブジェクトID」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「オブジェクトID」は、セントロイドIDにより識別されるセントロイドに対応付けられたオブジェクト(オブジェクト)を示す。
図10に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応付けられたノード(オブジェクト)は、ノードN1、N2、N3、N4、N13等であることを示す。また、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)に対応付けられたノード(オブジェクト)は、ノードN5、N6、N7、N12等であることを示す。
なお、クラスタリング情報記憶部127は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部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は、端末装置10や情報提供装置50から各種情報を取得する。
取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。取得部131は、生成部134により生成された複数のセントロイドを取得する。
また、取得部131は、グラフデータを取得してもよい。例えば、情報処理装置100は、図1中のグラフGR11を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフデータを取得してもよい。
図1の例では、取得部131は、空間情報SP11−1に示すようにノードN1〜N15等やエッジE1〜E16等を含むグラフGR11を取得する。取得部131は、グラフデータ記憶部124からグラフGR11を取得する。
例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
(抽出部132)
抽出部132は、各種情報を抽出する。抽出部132は、各種情報を選択する。抽出部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。抽出部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。
抽出部132は、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。抽出部132は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出する。
抽出部132は、グラフを探索することにより、近傍ノードを抽出する。抽出部132は、セントロイドをクエリとして、グラフを探索することにより、検索数の近傍ノードを抽出する。抽出部132は、図21に示すような検索処理により、グラフを探索することにより、近傍ノードを抽出する。
なお、抽出部132は、検索部135に要求することにより、検索部135に情報を探索させ、検索部135が探索した探索結果を用いてもよい。抽出部132は、検索部135が探索した探索結果から情報を抽出してもよい。抽出部132は、グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、グラフに含まれる各ノードに対応する近傍ノードを抽出してもよい。
図1の例では、抽出部132は、セントロイドC1の近傍ノードを検索する。抽出部132は、セントロイドC1をクエリとして、グラフGR11を探索することにより、セントロイドC1の近傍ノードを検索し、抽出する。抽出部132は、検索数「4」である基準CR11に基づいて、セントロイドC1の近傍ノードを検索する。この場合、抽出部132は、基準CR11が示す検索数「4」に対応する4個のノードを、セントロイドC1の近傍ノードとして抽出する。
抽出部132は、空間情報SP11−3に示すように、セントロイドC1の近傍ノードとして、ノードN1〜N4の4個のノードを抽出する。抽出部132は、セントロイドC2、C3等の近傍ノードを検索する。抽出部132は、セントロイドC2をクエリとして、グラフGR11を探索することにより、セントロイドC2の近傍ノードを検索し、抽出する。抽出部132は、検索数「4」である基準CR11に基づいて、セントロイドC2の近傍ノードを検索する。この場合、抽出部132は、基準CR11が示す検索数「4」に対応する4個のノードを、セントロイドC2の近傍ノードとして抽出する。
抽出部132は、空間情報SP11−4に示すように、セントロイドC2の近傍ノードとして、ノードN3、N5〜N7の4個のノードを抽出する。抽出部132は、空間情報SP11−4に示すように、セントロイドC3の近傍ノードとして、ノードN8〜N11の4個のノードを抽出する。
(決定部133)
決定部133は、各種情報を決定する。決定部133は、各種情報を判定する。決定部133は、各種情報を変更する。決定部133は、各種情報を更新する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。決定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を変更する。決定部133は、各種情報を更新する。
決定部133は、種々の情報を用いて、変更条件を満たすかを判定する。決定部133は、種々の情報を用いて、基準を変更する変更条件を満たすかを判定する。決定部133は、判定結果に基づいて、種々の情報や処理を変更する。決定部133は、判定結果に基づいて、所定の基準を変更する。決定部133は、判定結果に基づいて、所定の処理をスキップさせる。
決定部133は、抽出部132による近傍ノードの抽出結果に基づいて、検索数を決定する。決定部133は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更する。決定部133は、スコアが所定値未満である場合、検索数を増加させる。決定部133は、スコアが所定値以上である場合、検索数を減少させる。
決定部133は、種々の情報を適宜用いて、検索数を決定する。例えば、決定部133は、全ノード数をセントロイド数で除した値(第1値)を用いて、検索数を決定してもよい。例えば、決定部133は、第1値に所定の値(第2値)を乗算することにより、検索数を決定してもよい。
(生成部134)
生成部134は、各種情報を生成する。例えば、生成部134は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部134は、オブジェクト情報記憶部121や、基準情報記憶部122や、変更条件情報記憶部123や、グラフデータ記憶部124や、起点用情報記憶部125や、セントロイド記憶部126や、クラスタリング情報記憶部127等に記憶された情報(データ)から各種情報を生成する。例えば、生成部134は、クラスタリング情報を生成する。
生成部134は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
生成部134は、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する。生成部134は、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、クラスタリング情報を生成する。
生成部134は、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理と、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理とを含む割当処理により、クラスタリング情報を生成する。
生成部134は、複数のセントロイドに関する情報に基づいて、第2対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理により、クラスタリング情報を生成する。生成部134は、第2対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第2割当処理により、クラスタリング情報を生成する。
生成部134は、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、クラスタリング情報を生成する。生成部134は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成する。生成部134は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を対象として、クラスタリング情報を生成する。生成部134は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成する。
生成部134は、複数のセントロイドを生成する。生成部134は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。生成部134は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。生成部134は、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
生成部134は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。生成部134は、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てる。生成部134は、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとする。生成部134は、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、2回目以降の割当処理によるクラスタリング情報の生成を繰り返し、2回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。生成部134は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。生成部134は、グラフの検索範囲に関連するパラメータ値を変更する。生成部134は、グラフの検索の拡張要素に関するパラメータ値を変更する。生成部134は、グラフの検索の拡張要素に関するパラメータ値を増加する。
図1の例では、生成部134は、所定の基準に基づいて複数のセントロイドを生成する。生成部134は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、生成部134は、データ検索の対象数(オブジェクト数)に基づいて決定される所定数のセントロイドを生成する。
生成部134は、セントロイドC1に、ノードN1〜N4、及びセントロイドC1とノードN1〜N4との間の距離を対応付けた情報(対応付情報)を、近傍ノード一覧SL1−1に追加することにより、近傍ノード一覧SL1−1を生成する。図1の例では、生成部134は、ノードN1がセントロイドC1の近傍ノードであり、セントロイドC1とノードN1との間の距離が距離D1−1であることを示す情報(対応付情報)を生成し、近傍ノード一覧SL1に追加する。また、生成部134は、ノードN2〜N4がセントロイドC1の近傍ノードであり、セントロイドC1とノードN2〜N4の各々との間の距離が距離D1−2〜D1−4であることを示す対応付情報を生成し、近傍ノード一覧SL1に追加する。
生成部134は、近傍ノード一覧SL1−2に示すように、セントロイドC2に、ノードN3、N5〜N7、及びセントロイドC2とノードN3、N5〜N7との間の距離を対応付けた情報を生成する。図1の例では、生成部134は、ノードN3がセントロイドC2の近傍ノードであり、セントロイドC2とノードN3との間の距離が距離D2−3であることを示す情報を生成する。また、生成部134は、ノードN5〜N7がセントロイドC2の近傍ノードであり、セントロイドC2とノードN5〜N7の各々との間の距離が距離D2−5〜D2−7であることを示す情報を生成する。
生成部134は、近傍ノード一覧SL1−2に示すように、セントロイドC3に、ノードN8〜N11、及びセントロイドC3とノードN8〜N11との間の距離を対応付けた情報を生成する。図1の例では、生成部134は、ノードN8がセントロイドC3の近傍ノードであり、セントロイドC3とノードN8との間の距離が距離D3−8であることを示す情報を生成する。また、生成部134は、ノードN8〜N11がセントロイドC3の近傍ノードであり、セントロイドC3とノードN8〜N11の各々との間の距離が距離D3−9〜D3−11であることを示す情報を生成する。生成部134は、各セントロイドC1〜C3等と近傍ノードとの対応付情報を距離順に並べた近傍ノード一覧SL1−2を生成する。
生成部134は、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。生成部134は、近傍ノード一覧SL1−2に含まれるノードN1〜N11を第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。生成部134は、近傍ノード一覧SL1−2に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。生成部134は、近傍ノード一覧SL1−2の先頭に位置する対応付情報に対応するセントロイドC3にノードN9を割当ノードとして割り当てる。
また、生成部134は、近傍ノード一覧SL1−2の2番目に位置する対応付情報に対応するセントロイドC3にノードN8を割当ノードとして割り当てる。生成部134は、近傍ノード一覧SL1−2の3番目に位置する対応付情報に対応するセントロイドC3にノードN10を割当ノードとして割り当てる。生成部134は、近傍ノード一覧SL1−2の4番目に位置する対応付情報に対応するセントロイドC1にノードN1を割当ノードとして割り当てる。
生成部134は、近傍ノード一覧SL1−2の7番目に位置する対応付情報に対応するセントロイドC1にノードN3を割当ノードとして割り当てる。生成部134は、近傍ノード一覧SL1−2の11番目に位置する対応付情報のセントロイドC2に、ノードN3を割り当てない。そして、生成部134は、近傍ノード一覧SL1−2の12番目に位置する対応付情報に対応するセントロイドC2にノードN7を割当ノードとして割り当てる。このように、生成部134は、近傍ノード一覧SL1−2に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、クラスタリング情報を生成する。
生成部134は、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。生成部134は、第1割当処理によりセントロイドに割り当てられなかったノードN12〜N15を第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。
例えば、生成部134は、セントロイドに未割当てのノードであるノードN12〜N15を、セントロイドC1〜C3等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、生成部134は、ノードN12と、セントロイドC1〜C3との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図1の例では、生成部134は、セントロイドC1〜C3等のうち、ノードN12との距離が最も近いセントロイドC2に、ノードN12を割当ノードとして割り当てる。また、生成部134は、セントロイドC1〜C3等のうち、ノードN13との距離が最も近いセントロイドC1に、ノードN13を割当ノードとして割り当てる。このように、生成部134は、第2対象ノードであるノードN12〜N15等をセントロイドに割り当てることにより、クラスタリング情報を生成する。
(検索部135)
検索部135は、オブジェクトに関する検索サービスを提供する。検索部135は、各種情報を探索する。検索部135は、各種情報を検索する。例えば、検索部135は、グラフデータを探索することにより、オブジェクトを検索する。例えば、検索部135は、取得部131により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索部135は、図21に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置100は、検索サービスを提供しない場合、検索部135を有しなくてもよい。
(提供部136)
提供部136は、各種情報を提供する。例えば、提供部136は、端末装置10や情報提供装置50に各種情報を提供する。例えば、提供部136は、クエリに対応するオブジェクトIDを検索結果として提供する。例えば、提供部136は、検索部135により検索されたオブジェクトIDを情報提供装置50へ提供する。例えば、提供部136は、検索部135が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部136は、検索部135により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
また、提供部136は、生成部134により生成されたクラスタリング情報を外部の情報処理装置へ提供してもよい。例えば、提供部136は、クラスタリング情報記憶部127に記憶されたクラスタリング情報を情報提供装置50に送信してもよい。
〔4.情報処理のフロー〕
次に、図11を用いて、第1の実施形態に係る情報処理システム1による情報処理の手順について説明する。図11は、第1の実施形態に係る情報処理の一例を示すフローチャートである。
図11に示すように、情報処理装置100は、複数のノードがエッジにより連結されたグラフを取得する(ステップS101)。図1の例では、情報処理装置100は、グラフデータ記憶部124(図7参照)からグラフGR11を取得する。
そして、情報処理装置100は、複数のセントロイドを取得する(ステップS102)。図1の例では、情報処理装置100は、複数のセントロイドを生成することにより、複数のセントロイドを取得する。
そして、情報処理装置100は、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する(ステップS103)。図1の例では、情報処理装置100は、セントロイドC1の近傍ノードとして、ノードN1〜N4を抽出する。
そして、情報処理装置100は、近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する(ステップS104)。図1の例では、情報処理装置100は、クラスタリング情報記憶部127に示すような、クラスタリング情報を生成する。
〔5.割当て処理の変形例情報〕
〔5−1.検索範囲を用いた処理〕
なお、情報処理装置100は、図1の処理に限らず、種々の情報を適宜用いて、セントロイドにノードを割り当てる割当処理を行ってもよい。例えば、情報処理装置100は、検索数に加えて、有効半径に基づく範囲を用いて、割当処理を行ってもよい。この点について、図12を用いて説明する。図12は、第1の実施形態に係る検索範囲を用いた情報処理の一例を示す図である。なお、図12中の空間情報SP11−4は、図1中の空間情報SP11−4と同様である。また、図12においては、空間情報SP11−4に示す近傍ノードの抽出や近傍ノード一覧SL1を生成するまでの処理は、図1のステップS11〜S14と同様であるため説明を省略する。
情報処理装置100は、各セントロイドの範囲に基づいて、有効半径を決定する(ステップS201)。情報処理装置100は、各セントロイドの最遠の検索結果の中で最も近い検索結果に基づいて、有効半径を決定する。
図12中の空間情報SP11−4に示すように、セントロイドC1の範囲AR1は、セントロイドC1の近傍ノードのうち、最遠のノードN4とセントロイドC1との間の距離D1−4を半径とする。また、図12中の空間情報SP11−4に示すように、セントロイドC2の範囲AR2は、セントロイドC2の近傍ノードのうち、最遠のノードN7とセントロイドC2との間の距離D2−7を半径とする。また、図12中の空間情報SP11−4に示すように、セントロイドC3の範囲AR3は、セントロイドC3の近傍ノードのうち、最遠のノードN11とセントロイドC3との間の距離D3−11を半径とする。
図12の例では、情報処理装置100は、セントロイドC1の範囲AR1、セントロイドC2の範囲AR2及びセントロイドC3の範囲AR3等に基づいて、有効半径を決定する。例えば、情報処理装置100は、セントロイドC1の範囲AR1、セントロイドC2の範囲AR2及びセントロイドC3の範囲AR3等のうち、最も半径が短い範囲を用いて、有効半径を決定する。この場合、情報処理装置100は、最も半径が短いセントロイドC3の範囲AR3を用いて有効半径を決定する。情報処理装置100は、セントロイドC3の範囲AR3の半径RV3を有効半径に決定する。すなわち、情報処理装置100は、セントロイドC3の範囲AR3の半径RV3である距離D3−11を有効半径に決定する。
これにより、情報処理装置100は、対象範囲を示す有効半径である基準CR12を、セントロイドC3の範囲AR3の半径RV3に決定する。そして、情報処理装置100は、近傍ノード一覧SL1−2に示すように、全セントロイドのデータ(近傍ノード)を距離の短い順にソートし、短い順にセントロイドに割り当てる。そして図12の場合、情報処理装置100は、基準CR12が示す有効半径RV3を距離が超えたら割り当てを終了する。
そのため、図12の例では、情報処理装置100は、基準CR12を用いて、第1割当処理の対象とする第1対象ノードを決定する(ステップS202)。情報処理装置100は、近傍ノード一覧SL1−2内の対応付情報のうち、有効半径RV3以内である上から1〜6番目の対応付情報のノードを第1対象ノードに決定する。すなわち、情報処理装置100は、近傍ノード一覧SL1−2内の対応付情報のうち、6番目の対応付情報のノードN11までを第1対象ノードに決定する。また、情報処理装置100は、近傍ノード一覧SL1−2内の対応付情報のうち、有効半径RV3を超える距離D1−3である7番目以降の対応付情報を第1割当処理の対象としない。すなわち、情報処理装置100は、7番目の対応付情報のセントロイドC1へのノードN3の割当てを第1割当処理で行わないと決定する。
そして、情報処理装置100は、有効半径RV3以内である上から1〜6番目の対応付情報のノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う(ステップS203)。図12の例では、情報処理装置100は、近傍ノード一覧SL1−2中の有効半径RV3以内である上から1〜6番目のノードN1、N2、N8〜N11を第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。
図12の例では、情報処理装置100は、近傍ノード一覧SL1−2の先頭に位置する対応付情報に対応するセントロイドC3にノードN9を割当ノードとして割り当てる。また、情報処理装置100は、近傍ノード一覧SL1−2の2番目に位置する対応付情報に対応するセントロイドC3にノードN8を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の3番目に位置する対応付情報に対応するセントロイドC3にノードN10を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の4番目に位置する対応付情報に対応するセントロイドC1にノードN1を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の5番目に位置する対応付情報に対応するセントロイドC1にノードN2を割当ノードとして割り当てる。情報処理装置100は、近傍ノード一覧SL1−2の6番目に位置する対応付情報に対応するセントロイドC3にノードN11を割当ノードとして割り当てる。
そして、情報処理装置100は、近傍ノード一覧SL1−2内の対応付情報のうち、有効半径RV3を超える7〜12番目等の対応付情報を第1割当処理の対象とせず、第1割当処理を終了する。すなわち、図12の例では、情報処理装置100は、ノードN3〜N7を、第1割当処理の第1対象ノードとしない。このように、情報処理装置100は、近傍ノード一覧SL1−2に含まれる対応付情報のうち、距離が有効半径RV3以内である対応付情報のノードのみをセントロイドに割り当てることにより、図12中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。
なお、図12の例では、情報処理装置100が第1対象ノードを決定して、第1割当処理を行う場合を示したが、近傍ノード一覧SL1−2中の有効半径RV3を超える距離の対応付情報が第1割当処理の対象にならなければ、どのような処理により行われてもよい。例えば、情報処理装置100は、近傍ノード一覧SL1−2の上から順に対象ノードとして選択し、選択した対応付情報の距離が有効半径RV3以下である場合、その対応付情報のノードを対象に第1割当処理を行い、その対応付情報にセントロイドにそのノードを割り当ててもよい。そして、情報処理装置100は、近傍ノード一覧SL1−2の上から順に対象ノードとして選択し、選択した対応付情報の距離が有効半径RV3超えた場合、その対応付情報を第1割当処理の対象とせず、第1割当処理を終了し、ステップS204の第2割当処理を行ってもよい。
そして、情報処理装置100は、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う(ステップS204)。図12の例では、情報処理装置100は、第1割当処理によりセントロイドに割り当てられなかったノードN3〜N7、N12〜N15を第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。
例えば、情報処理装置100は、セントロイドに未割当てのノードであるノードN3〜N7、N12〜N15を、セントロイドC1〜C3等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置100は、ノードN3と、セントロイドC1〜C3との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図12の例では、情報処理装置100は、セントロイドC1〜C3等のうち、ノードN3との距離が最も近いセントロイドC1に、ノードN3を割当ノードとして割り当てる。また、情報処理装置100は、セントロイドC1〜C3等のうち、ノードN7との距離が最も近いセントロイドC3に、ノードN7を割当ノードとして割り当てる。このように、情報処理装置100は、第2対象ノードであるノードN3〜N7、N12〜N15等をセントロイドに割り当てることにより、図12中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。
上記のように、情報処理装置100は、図1ではセントロイドC2に割り当てられていたノードN7が、セントロイドC2によりもノードN7に距離が近いセントロイドC3に割り当てることができるため、より適切なクラスタリング情報を生成することができる。
〔5−2.未割当セントロイドが有る場合の処理〕
なお、情報処理装置100は、第1割当処理及び第2割当処理により、1つもノードが割り当てられなかったセントロイド(未割当セントロイド)が有る場合、未割当セントロイドに所定の基準で選択したノードを割り当ててもよい。この点について、図13を用いて説明する。図13は、未割当セントロイドに対するノードの割当処理の一例を示す図である。
なお、図13中の空間情報SP11−15は、未割当セントロイドであるセントロイドC8が含まれる点以外は、図12中の空間情報SP11−12と同様である。
まず、情報処理装置100は、割当処理の後において、未割当セントロイドがあるかどうかを判定する(ステップS205)。情報処理装置100は、割当処理の後において、クラスタリング情報127を参照して、未割当セントロイドがあるかどうかを判定する。例えば、情報処理装置100は、クラスタリング情報127のうち、ノードIDが1つも対応付けられていないセントロイドIDが有る場合、未割当セントロイドがあると判定する。図13の例では、情報処理装置100は、クラスタリング情報127のうち、セントロイドC8が未割当セントロイドであると判定する。
そして、情報処理装置100は、未割当セントロイドがある場合、所定の割当基準に基づいて未割当セントロイドに割り当てるノード(割当変更ノード)を決定する(ステップS206)。情報処理装置100は、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドへの割当変更ノードに決定する。図13の例では、最遠割当ノード一覧FNL1に示すように、各セントロイドとその最遠ノードとの間の距離を示す情報と用いて、割当変更ノードを決定する。情報処理装置100は、記憶部120(図3参照)に記憶された情報を用いて、最遠割当ノード一覧FNL1を生成してもよいし、外部の情報処理装置から取得してもよい。
情報処理装置100は、各セントロイドとその最遠ノードとの間の距離を比較し、最も距離が長い最遠ノードの割当て先を未割当セントロイドに変更する。図13の例では、最遠割当ノード一覧FNL1のうち、空間情報SP11−15に示すように、セントロイドC2とその最遠ノードであるノードN12との間の距離が最も遠い。そのため、情報処理装置100は、ノードN12の割当先をセントロイドC2からセントロイドC8に変更する。
これにより、情報処理装置100は、クラスタリング情報を更新する(ステップS207)。図13の例では、情報処理装置100は、クラスタリング情報記憶部127−1に示すように、ノードN12のセントロイドC2との対応付けを解除し、ノードN12をセントロイドC8に対応付けることにより、クラスタリング情報を更新する。また、情報処理装置100は、セントロイドC8の位置を更新する。この場合、セントロイドC8の割当ノードはノードN12のみであるため、情報処理装置100は、空間情報SP11−16に示すように、セントロイドC8の位置をノードN12の位置に更新する。なお、情報処理装置100は、セントロイドC2の位置も更新する。例えば、情報処理装置100は、セントロイドC2に割り当てられたノード5及びノードN6の中央座標(重心)をセントロイドC2の座標(セントロイド値)として算出し、セントロイドC2の位置を更新する。
上記のように、情報処理装置100は、未割当セントロイドが有る場合、未割当セントロイドにノードを割当て、全セントロイドに少なくとも1個のノードを割り当てることにより、割当ノードがないセントロイドの発生を抑制することができる。これにより、情報処理装置100は、適切なクラスタリング情報を生成することができる。
(第2の実施形態)
〔6.情報処理〕
上記第1の実施形態においては、検索数を基準として情報処理装置100がグラフを検索(探索)し、近傍ノードを抽出する例を示したが、グラフ検索時の基準は検索数に限らず種々の基準であってもよい。例えば、検索範囲を基準としてグラフを探索してもよい。そこで、第2の実施形態では、情報処理装置100Aが検索範囲を基準としてグラフを検索し、近傍ノードを抽出する例について説明する。なお、第1の実施形態に係る情報処理装置100と同様の点については、適宜説明を省略する。
まず、図14を用いて、第2の実施形態に係る情報処理の一例について説明する。図14は、第2の実施形態に係る情報処理の一例を示す図である。図14の例では、生成するセントロイドの数を「生成数GN」として、以下説明する。
図14の例では、情報処理装置100Aは、検索範囲の初期値を決定するが、検索範囲の初期値は適宜設定されてもよい。まず、情報処理装置100Aは、データ検索の対象(オブジェクト)に各々対応する複数のノードがエッジにより連結されたグラフを取得する(ステップS21)。図14の例では、情報処理装置100Aは、空間情報SP11−21に示すようにノードN1〜N15等やエッジE1〜E16等を含むグラフGR11を取得する。以下では、空間情報SP11−21〜SP11−24について、特に区別なく説明する場合には、空間情報SP11と記載する。
そして、情報処理装置100Aは、検索範囲を決定する処理を行う(ステップS22)。情報処理装置100Aは、所定の対象を決定に用いるクエリ(決定用クエリ)として選択する。図14の例では、情報処理装置100Aは、複数のノードを決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定する。例えば、情報処理装置100Aは、ノードN1、N6、N15等を決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定する。なお、情報処理装置100Aは、種々の対象を決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定してもよい。例えば、情報処理装置100Aは、ランダムに選択したノードを決定用クエリとして、検索範囲を決定する処理を行ってもよい。情報処理装置100Aは、ノードに限らず、種々の情報を決定用クエリとして用いてもよい。例えば、セントロイド生成後の場合、情報処理装置100Aは、セントロイドを決定用クエリとして、検索範囲を決定する処理を行ってもよい。例えば、情報処理装置100Aは、ランダムに生成したベクトルを決定用クエリとして、検索範囲を決定する処理を行ってもよい。
図14の例では、情報処理装置100Aは、各決定用クエリに対して、グラフGR11中の全ノード数を生成数GNで除した数(抽出対象数)のノードを近傍ノードとして抽出する。情報処理装置100Aは、決定用クエリであるノードN1、N6、N15等に対して、近傍ノードを抽出する処理を行う。情報処理装置100Aは、ノードN1、N6、N15等の近傍ノードを検索する(ステップS22−1)。情報処理装置100Aは、ノードN1をクエリとして、グラフGR11を探索することにより、ノードN1の近傍ノードを検索し、抽出する。図14の例では、情報処理装置100Aは、抽出対象数に基づいて、ノードN1の近傍ノードを検索する。この場合、情報処理装置100Aは、抽出対象数のノードを、ノードN1の近傍ノードとして抽出する。また、情報処理装置100Aは、ノードN6、N15等についても同様に、抽出対象数のノードを、近傍ノードとして抽出する。例えば、情報処理装置100Aは、図21に示すような処理手順により近傍ノードの探索(検索)を行う。
そして、情報処理装置100Aは、検索範囲を決定する(ステップS22−2)。情報処理装置100Aは、決定用クエリの検索結果に基づいて、検索範囲を決定する。例えば、情報処理装置100Aは、決定用クエリの各範囲の半径の平均を算出し、算出した平均を検索範囲に決定する。なお、情報処理装置100Aは、決定用クエリの各範囲の半径に限らず、種々の情報を用いて、検索範囲を決定してもよい。例えば、情報処理装置100Aは、決定用クエリの各範囲の半径のうち、最大の半径を検索範囲に決定してもよい。例えば、情報処理装置100Aは、決定用クエリの各範囲の半径のうち、最小の半径を検索範囲に決定してもよい。
図14の例では、情報処理装置100Aは、ノードN1の近傍ノードとして、空間情報SP11−22に示ようにノードN1に近いノードN1〜N3、N13を抽出する。空間情報SP11−22に示す範囲AR21は、ノードN1の近傍ノードのうち、ノードN1から最も遠い(最遠の)ノードとノードN1との間の距離を半径とし、ノードN1を中心とする超球(図では円)を模式的に示す。図14では、範囲AR21は、ノードN1を中心とし、ノードN1とノードN3との間の距離である半径RV21とする円を示す。また、図14中の範囲AR22は、ノードN6を中心とし、ノードN6とその最遠の近傍ノードとの間の距離を半径RV22とする円を示す。また、図14中の範囲AR23は、ノードN15を中心とし、ノードN15とその最遠の近傍ノードとの間の距離を半径RV23とする円を示す。
情報処理装置100Aは、範囲AR21の半径RV21や、範囲AR22の半径RV22や、範囲AR23の半径RV23等に基づいて、検索範囲を決定する。情報処理装置100Aは、範囲AR21の半径RV21や、範囲AR22の半径RV22や、範囲AR23の半径RV23等の平均を算出し、算出した平均の値を、検索範囲を示す有効半径RV20に決定する。
また、情報処理装置100Aは、セントロイドを生成する(ステップS23)。例えば、情報処理装置100Aは、所定の基準に基づいて複数のセントロイドを生成する。図14では、情報処理装置100Aは、生成数GNのセントロイドを生成する。情報処理装置100Aは、ノードN1〜N15等から、セントロイドとするノードを生成数GNだけ選択することにより生成数GNのセントロイドを生成してもよい。図14の例では、情報処理装置100Aは、生成数GNのセントロイドをランダムに生成するものとする。これにより、情報処理装置100Aは、図14中の空間情報SP11−23に示すように、セントロイドC1〜C3等を含む複数のセントロイドを生成する。このように、「セントロイドC*(*は任意の数値)」と記載した場合、そのセントロイドはセントロイドID「C*」により識別されるセントロイドであることを示す。例えば、「セントロイドC1」と記載した場合、そのセントロイドはセントロイドID「C1」により識別されるセントロイド(ベクトル)である。図14の例では、説明を簡単にするためにセントロイドC1〜C3のみを図示するが、情報処理装置100Aは、データ検索の対象数(ノード数)に基づいて、セントロイドC1〜C3を含む多数のセントロイドを生成してもよい。
そして、情報処理装置100Aは、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。情報処理装置100Aは、セントロイドC1〜C3等の近傍ノードを検索する(ステップS24)。情報処理装置100Aは、セントロイドC1〜C3等をクエリとして、グラフGR11を探索することにより、セントロイドC1の近傍ノードを検索し、抽出する。図14の例では、情報処理装置100Aは、有効半径RV20である基準CR21に基づいて、セントロイドC1の近傍ノードを検索する。例えば、情報処理装置100Aは、セントロイドC1を中心とする有効半径RV20内の範囲AR20に位置するノードを、セントロイドC1の近傍ノードとして抽出する。また、情報処理装置100Aは、セントロイドC2、C3等についても同様に、セントロイドC2、C3等を中心とする有効半径RV20内の範囲AR20に位置するノードを、セントロイドC2、C3等の近傍ノードとして抽出する。例えば、情報処理装置100Aは、図21に示すような処理手順により近傍ノードの探索(検索)を行う。
図14の例では、情報処理装置100Aは、近傍ノード一覧SL21に示すように、セントロイドC1の近傍ノードとして、ノードN1〜N4、N13等のノードを抽出し、近傍ノード一覧SL21に追加する。また、情報処理装置100Aは、近傍ノード一覧SL21に示すように、セントロイドC2の近傍ノードとして、ノードN3、N5、N6等のノードを抽出し、近傍ノード一覧SL21に追加する。また、情報処理装置100Aは、近傍ノード一覧SL21に示すように、セントロイドC3の近傍ノードとして、ノードN4、N7、N8〜N11、N14等のノードを抽出し、近傍ノード一覧SL21に追加する。情報処理装置100Aは、近傍ノード一覧SL21に対応する対応付情報等の近傍ノード群情報を記憶部120A(図15参照)に記憶してもよい。
情報処理装置100Aは、近傍ノード一覧SL21に距離が短い方から順に各対応付情報を並べて格納する。情報処理装置100Aは、近傍ノード一覧SL21中に含まれる各対応付情報を距離が短い方から順にソートする。図14の例では、情報処理装置100Aは、近傍ノード一覧SL21中に含まれる各対応付情報が距離の短い方から順に上から下に並ぶようにソートする。
そして、情報処理装置100Aは、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う(ステップS25)。図14の例では、情報処理装置100Aは、近傍ノード一覧SL21に含まれるノードN1〜N11、N13、N14を第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理を行う。情報処理装置100Aは、近傍ノード一覧SL21に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。図14の例では、情報処理装置100Aは、近傍ノード一覧SL21の先頭に位置する対応付情報に対応するセントロイドC3にノードN9を割当ノードとして割り当てる。
なお、空間情報SP11−24において、各セントロイドに割り当てられた割当ノードは、セントロイドとノードとの間を実線でつなぐことにより示す。そのため、空間情報SP11−24においては、グラフGR11のエッジの情報の図示を省略する。空間情報SP11−24は、セントロイドC3とノードN9が実線でつながれており、ノードN9がセントロイドC3の割当ノードであることを示す。
また、情報処理装置100Aは、近傍ノード一覧SL21の2番目に位置する対応付情報に対応するセントロイドC3にノードN8を割当ノードとして割り当てる。情報処理装置100Aは、近傍ノード一覧SL21の3番目に位置する対応付情報に対応するセントロイドC3にノードN10を割当ノードとして割り当てる。情報処理装置100Aは、近傍ノード一覧SL21の4番目に位置する対応付情報に対応するセントロイドC1にノードN1を割当ノードとして割り当てる。このように、情報処理装置100Aは、近傍ノード一覧SL21に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、図14中のクラスタリング情報記憶部127Aに示すようなクラスタリング情報を生成する。
ここで、情報処理装置100Aは、上記のように、取得した全セントロイドのデータ(近傍ノード)を距離の短い順にソートし、短い順にセントロイドに割り当てる。その際、情報処理装置100Aは、同一のデータが出現したら、割当てをスキップする。このように、情報処理装置100Aは、既に割当ノードとしてセントロイドに割り当てられたノードが対象となった場合、割り当て処理を行わない。
図14の例では、情報処理装置100Aは、近傍ノード一覧SL21の8番目に位置する対応付情報に対応するセントロイドC3にノードN4を割当ノードとして割り当てる。その後、情報処理装置100Aは、近傍ノード一覧SL21の9番目に位置する対応付情報を対象として処理を行う。近傍ノード一覧SL21の9番目に位置する対応付情報のノードはノードN4であり、ノードN4は既にセントロイドC3の割当ノードとして割り当てられている。そのため、情報処理装置100Aは、近傍ノード一覧SL21の9番目に位置する対応付情報のセントロイドC1に、ノードN4を割り当てない。そして、情報処理装置100Aは、近傍ノード一覧SL21の10番目以降の対応付情報を対象に処理を繰り返す。
そして、情報処理装置100Aは、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う(ステップS26)。図14の例では、情報処理装置100Aは、第1割当処理によりセントロイドに割り当てられなかったノードN12、N15を第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理を行う。
例えば、情報処理装置100Aは、セントロイドに未割当てのノードであるノードN12、N15を、セントロイドC1〜C3等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置100Aは、ノードN12と、セントロイドC1〜C3との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図14の例では、情報処理装置100Aは、セントロイドC1〜C3等のうち、ノードN12との距離が最も近いセントロイドC2に、ノードN12を割当ノードとして割り当てる。また、情報処理装置100Aは、セントロイドC1〜C3等のうち、ノードN15との距離が最も近い所定のセントロイドに、ノードN15を割当ノードとして割り当てる。このように、情報処理装置100Aは、第2対象ノードであるノードN12、N15等をセントロイドに割り当てることにより、図14中のクラスタリング情報記憶部127Aに示すようなクラスタリング情報を生成する。
上述したように、情報処理装置100Aは、グラフGR11を用いることにより、ノードN1〜N15等をセントロイドC1〜C3等のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置100Aは、各セントロイドC1〜C3等をクエリとして、グラフGR11を探索し、検索範囲を基準として各セントロイドC1〜C3等の近傍ノードを抽出し、抽出した近傍ノードに基づいて、各ノードN1〜N15等が属するクラスタを適切に決定することができる。例えば、情報処理装置100Aは、各セントロイドC1〜C3等をクエリとして、グラフGR11を探索することにより、各セントロイドと各ノードとの類似度(距離)を比較することなく、セントロイドに割当ノードの割り当てることができる。したがって、情報処理装置100Aは、各セントロイドと各ノードとの類似度(距離)を比較する場合に比べて、より高速に各ノードをクラスタリングすることができる。すなわち、情報処理装置100Aは、複数のオブジェクト(ノード)をグラフ構造化したグラフインデックス(グラフ情報)を用いることにより、効率的なクラスタリングを可能にすることができる。
〔6−1.検索範囲の更新〕
例えば、情報処理装置100Aは、割当処理を繰り返す場合、割当処理時の情報を用いて、次回の割当処理における検索範囲を決定してもよい。
例えば、情報処理装置100Aは、第1割当処理において最後にセントロイドに割り当てたノードと、そのセントロイドとの間の距離(第1最遠距離FD1)を用いて、次回の割当処理における検索範囲を決定してもよい。例えば、情報処理装置100Aは、第1最遠距離に変更係数CO21を乗算した値を、次回の割当処理における検索範囲に決定してもよい。例えば、情報処理装置100Aは、算出値「VL(=第1最遠距離FD1*変更係数CO21)」を次回の割当処理における検索範囲に決定してもよい。
図14の例では、情報処理装置100Aは、第1割当処理において最後にセントロイドに割り当てたノードN7と、その割当て先のセントロイドC3との間の距離D3−7を用いて、次回の割当処理における検索範囲を決定してもよい。例えば、情報処理装置100Aは、第1最遠距離FD1である距離D3−7に変更係数CO21である「1.2」を乗算した値を、次回の割当処理における検索範囲に決定してもよい。なお、上記は一例であり、情報処理装置100Aは、種々の情報を用いて、検索範囲を更新してもよい。
〔7.情報処理装置の構成〕
次に、図15を用いて、第2の実施形態に係る情報処理装置100Aの構成について説明する。図15は、第2の実施形態に係る情報処理装置100Aの構成例を示す図である。図15に示すように、情報処理装置100Aは、通信部110と、記憶部120Aと、制御部130Aとを有する。なお、情報処理装置100Aは、情報処理装置100Aの管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図2中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120A)
記憶部120Aは、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第2の実施形態に係る記憶部120Aは、図15に示すように、オブジェクト情報記憶部121と、基準情報記憶部122Aと、変更条件情報記憶部123Aと、グラフデータ記憶部124と、起点用情報記憶部125と、セントロイド記憶部126と、クラスタリング情報記憶部127Aとを有する。
(基準情報記憶部122A)
第2の実施形態に係る基準情報記憶部122Aは、グラフ検索の基準に関する各種情報を記憶する。図16は、第2の実施形態に係る基準情報記憶部の一例を示す図である。図16に示す基準情報記憶部122Aは、「基準ID」、「対象」、「値」といった項目が含まれる。
「基準ID」は、グラフ検索の基準を識別する情報を示す。「対象」は、基準IDにより識別される基準の対象を示す。また、「値」は、対応する基準として用いる具体的な値を示す。
図16の例では、基準ID「CR21」により識別される基準(基準CR21)は、検索範囲を対象とする基準であることを示す。基準CR21として用いられる対象は、検索範囲であり、その値は「RV20」であることを示す。なお、図16に示す例では、対象「検索範囲」の値を「RV20」といった抽象的な符号で示すが、検索範囲は、種々の具体的に数値であってもよい。
また、図16の例では、基準ID「CR22」により識別される基準(基準CR22)は、対象範囲を変更する際の変更係数を対象とする基準であることを示す。基準CR22として用いられる基準は、変更係数であり、その値は「CO21」であることを示す。なお、図16に示す例では、対象「変更係数」の値を「CO21」といった抽象的な符号で示すが、変更係数は、「1.2」や「2.5」といった種々の具体的に数値であってもよい。例えば、変更係数は、検索範囲を変更する際に、検索範囲を決定する値に乗算される所定の係数を示す。
なお、基準情報記憶部122Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(変更条件情報記憶部123A)
第2の実施形態に係る変更条件情報記憶部123Aは、基準の変更に関する変更条件に関する各種情報を記憶する。図17は、第2の実施形態に係る変更条件情報記憶部の一例を示す図である。図17に示す変更条件情報記憶部123Aは、「変更条件ID」、「決定用情報」、「変更情報」といった項目を有する。
「変更条件ID」は、基準の変更に関する条件を識別する情報を示す。「決定用情報」は、基準を変更するかの決定(判定)に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、基準を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図17に示す例では、「閾値」の値は、「TH21」や「TH22」といった抽象的な符号を図示するが、「100」や「5000」や「5%」や「0.2」等の具体的な数値であるものとする。
「変更情報」は、変更される基準やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる基準を示す。「変更対象」には、対象とする基準を識別する情報(基準ID等)が記憶される。「変更内容」は、対応する条件を満たす場合に基準を変更する具体的な内容を示す。なお、図17に示す例では、「変更内容」は、「AINF21」といった抽象的な符号を図示するが、「+1」や「5増加」や「2減少」や「10%増加」や「5%減少」等の種々の変更内容であってもよい。
図17の例では、変更条件ID「ACD21」により識別される変更条件(変更条件ACD21)は、近傍ノード数に関する情報を判定に用いる条件であることを示す。変更条件ACD21は、閾値「TH21」であることを示す。また、変更条件ACD21を満たす場合、変更対象となる基準は、基準CR21であることを示す。変更条件ACD21を満たす場合、基準CR21は変更内容AINF21に応じて変更されることを示す。例えば、変更内容AINF21が「2増加」である場合、情報処理装置100Aは、変更条件ACD21を満たすと判定した場合に、基準CR21である検索範囲の値を2増加させる。
なお、変更条件情報記憶部123Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(クラスタリング情報記憶部127A)
第2の実施形態に係るクラスタリング情報記憶部127Aは、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部127Aは、セントロイド情報記憶部122に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図18は、第2の実施形態に係るクラスタリング情報記憶部の一例を示す図である。図18の例では、クラスタリング情報記憶部127Aは、「セントロイドID」、「ノードID」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「ノードID」は、セントロイドIDにより識別されるセントロイドに対応付けられたノード(オブジェクト)を示す。
図18に示す例においては、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応付けられたノード(オブジェクト)は、ノードN1、N2、N3、N4、N13等であることを示す。また、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)に対応付けられたノード(オブジェクト)は、ノードN5、N6、N12等であることを示す。
なお、クラスタリング情報記憶部127Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130A)
図15の説明に戻って、制御部130Aは、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100A内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Aは、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図15に示すように、制御部130Aは、取得部131と、抽出部132Aと、決定部133Aと、生成部134と、検索部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Aの内部構成は、図15に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(抽出部132A)
抽出部132Aは、各種情報を抽出する。抽出部132Aは、各種情報を選択する。抽出部132Aは、記憶部120Aに記憶された各種情報に基づいて、種々の情報を抽出する。抽出部132Aは、記憶部120Aに記憶された各種情報に基づいて、種々の情報を選択する。
抽出部132Aは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。抽出部132Aは、各セントロイドに対して、所定の基準により決定される検索範囲の近傍ノードを抽出する。
抽出部132Aは、グラフを探索することにより、近傍ノードを抽出する。抽出部132Aは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。抽出部132Aは、決定部133Aにより決定された検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
なお、抽出部132Aは、検索部135に要求することにより、検索部135に情報を探索させ、検索部135が探索した探索結果を用いてもよい。抽出部132Aは、検索部135が探索した探索結果から情報を抽出してもよい。抽出部132Aは、グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、グラフに含まれる各ノードに対応する近傍ノードを抽出してもよい。
図14の例では、抽出部132Aは、各決定用クエリに対して、グラフGR11中の全ノード数を生成数GNで除した数(抽出対象数)のノードを近傍ノードとして抽出する。抽出部132Aは、決定用クエリであるノードN1、N6、N15等に対して、近傍ノードを抽出する処理を行う。抽出部132Aは、ノードN1、N6、N15等の近傍ノードを検索する。抽出部132Aは、ノードN1をクエリとして、グラフGR11を探索することにより、ノードN1の近傍ノードを検索し、抽出する。図14の例では、抽出部132Aは、抽出対象数に基づいて、ノードN1の近傍ノードを検索する。この場合、抽出部132Aは、抽出対象数のノードを、ノードN1の近傍ノードとして抽出する。また、抽出部132Aは、ノードN6、N15等についても同様に、抽出対象数のノードを、近傍ノードとして抽出する。例えば、抽出部132Aは、図21に示すような処理手順により近傍ノードの探索(検索)を行う。
抽出部132Aは、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。抽出部132Aは、セントロイドC1〜C3等の近傍ノードを検索する。抽出部132Aは、セントロイドC1〜C3等をクエリとして、グラフGR11を探索することにより、セントロイドC1の近傍ノードを検索し、抽出する。図14の例では、抽出部132Aは、有効半径RV20である基準CR21に基づいて、セントロイドC1の近傍ノードを検索する。例えば、抽出部132Aは、セントロイドC1を中心とする有効半径RV20内の範囲AR20に位置するノードを、セントロイドC1の近傍ノードとして抽出する。また、抽出部132Aは、セントロイドC2、C3等についても同様に、セントロイドC2、C3等を中心とする有効半径RV20内の範囲AR20に位置するノードを、セントロイドC2、C3等の近傍ノードとして抽出する。
(決定部133A)
決定部133Aは、各種情報を決定する。決定部133Aは、各種情報を判定する。決定部133Aは、各種情報を変更する。決定部133Aは、各種情報を更新する。決定部133Aは、記憶部120Aに記憶された各種情報に基づいて、種々の情報を決定する。決定部133Aは、記憶部120Aに記憶された各種情報に基づいて、種々の情報を判定する。決定部133Aは、記憶部120Aに記憶された各種情報に基づいて、種々の情報を変更する。決定部133Aは、各種情報を更新する。
決定部133Aは、種々の情報を用いて、変更条件を満たすかを判定する。決定部133Aは、種々の情報を用いて、基準を変更する変更条件を満たすかを判定する。決定部133Aは、判定結果に基づいて、種々の情報や処理を変更する。決定部133Aは、判定結果に基づいて、所定の基準を変更する。決定部133Aは、判定結果に基づいて、所定の処理をスキップさせる。
決定部133Aは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。決定部133Aは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。決定部133Aは、抽出部132Aによる近傍ノードの抽出結果に基づいて、検索範囲を決定する。決定部133Aは、抽出部132Aによる近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定する。
決定部133Aは、検索範囲を決定する。決定部133Aは、決定用クエリの検索結果に基づいて、検索範囲を決定する。例えば、決定部133Aは、決定用クエリの各範囲の半径の平均を算出し、算出した平均を検索範囲に決定する。
決定部133Aは、範囲AR21の半径RV21や、範囲AR22の半径RV22や、範囲AR23の半径RV23等に基づいて、検索範囲を決定する。決定部133Aは、範囲AR21の半径RV21や、範囲AR22の半径RV22や、範囲AR23の半径RV23等の平均を算出し、算出した平均の値を、検索範囲を示す有効半径RV20に決定する。
第2の実施形態に係る生成部134は、セントロイドに未割当てのノードであるノードN12、N15を、セントロイドC1〜C3等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、生成部134は、ノードN12と、セントロイドC1〜C3との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図14の例では、生成部134は、セントロイドC1〜C3等のうち、ノードN12との距離が最も近いセントロイドC2に、ノードN12を割当ノードとして割り当てる。また、生成部134は、セントロイドC1〜C3等のうち、ノードN15との距離が最も近い所定のセントロイドに、ノードN15を割当ノードとして割り当てる。このように、生成部134は、第2対象ノードであるノードN12、N15等をセントロイドに割り当てることにより、図14中のクラスタリング情報記憶部127Aに示すようなクラスタリング情報を生成する。
〔8.検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図21を一例として説明する。図21は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置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を超える場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。すなわち、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合、情報処理装置100は、ステップS315の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ksは、無限大に設定されてもよい。例えば、ks=4であってもよい。オブジェクト集合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)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
〔9.効果〕
上述してきたように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、取得部131と、抽出部132、132Aと、生成部134とを有する。取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。抽出部132、132Aは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。生成部134は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。生成部134は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てることにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理と、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理とを含む割当処理により、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、近傍ノード群情報に含まれるノードを第1対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第1割当処理と、第1割当処理によりセントロイドに割り当てられなかったノードを第2対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理により、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、複数のセントロイドに関する情報に基づいて、第2対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理により、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のセントロイドに関する情報に基づいて、第2対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第2割当処理により、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、第2対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第2割当処理により、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、第2対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第2割当処理により、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、抽出部132は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出する。生成部134は、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出し、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100は、決定部133を有する。決定部133は、抽出部132による近傍ノードの抽出結果に基づいて、検索数を決定する。
このように、第1の実施形態に係る情報処理装置100は、近傍ノードの抽出結果に基づいて、検索数を決定し、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、決定部133は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更する。
このように、第1の実施形態に係る情報処理装置100は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更し、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、決定部133は、スコアが所定値未満である場合、検索数を増加させる。
このように、第1の実施形態に係る情報処理装置100は、スコアが所定値未満である場合、検索数を増加させ、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、決定部133は、スコアが所定値以上である場合、検索数を減少させる。
このように、第1の実施形態に係る情報処理装置100は、スコアが所定値以上である場合、検索数を減少させ、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、生成部134は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100において、生成部134は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第2の実施形態に係る情報処理装置100Aにおいて、抽出部132Aは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
このように、第2の実施形態に係る情報処理装置100Aは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出することにより、効率的なクラスタリングを可能にすることができる。
また、第2の実施形態に係る情報処理装置100Aは、決定部133Aを有する。決定部133Aは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。抽出部132Aは、決定部133Aにより決定された検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
このように、第2の実施形態に係る情報処理装置100Aは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第2の実施形態に係る情報処理装置100Aにおいて、決定部133Aは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。
このように、第2の実施形態に係る情報処理装置100Aは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第2の実施形態に係る情報処理装置100Aにおいて、決定部133Aは、抽出部132Aによる近傍ノードの抽出結果に基づいて、検索範囲を決定する。
このように、第2の実施形態に係る情報処理装置100Aは、近傍ノードの抽出結果に基づいて、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第2の実施形態に係る情報処理装置100Aにおいて、決定部133Aは、抽出部132Aによる近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定する。
このように、第2の実施形態に係る情報処理装置100Aは、近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、複数のセントロイドを生成する。取得部131は、生成部134により生成された複数のセントロイドを取得する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てる。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てることにより、ノードがないセントロイドが生じることを抑制し、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとする。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとすることにより、ノードがないセントロイドが生じることを抑制し、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、2回目以降の割当処理によるクラスタリング情報の生成を繰り返し、2回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、2回目以降の割当処理によるクラスタリング情報の生成を繰り返し、2回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、グラフの検索範囲に関連するパラメータ値を変更する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、グラフの検索範囲に関連するパラメータ値を変更することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、グラフの検索の拡張要素に関するパラメータ値を変更する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、グラフの検索の拡張要素に関するパラメータ値を変更することにより、効率的なクラスタリングを可能にすることができる。
また、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aにおいて、生成部134は、グラフの検索の拡張要素に関するパラメータ値を増加する。
このように、第1の実施形態に係る情報処理装置100及び第2の実施形態に係る情報処理装置100Aは、グラフの検索の拡張要素に関するパラメータ値を増加することにより、効率的なクラスタリングを可能にすることができる。
〔10.ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置100は、例えば図22に示すような構成のコンピュータ1000によって実現される。図22は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ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が第1の実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔11.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。