以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.情報処理〕
図1及び図2を用いて、実施形態に係る情報処理の一例について説明する。図1及び図2は、実施形態に係る情報処理の一例を示す図である。図1及び図2では、情報処理装置100(図4参照)が所定の基準に基づいて生成した複数のセントロイドを用いて、データ検索の対象となる複数のオブジェクトをクラスタリングするための情報を生成する一例を示す。情報処理装置100は、複数のオブジェクトをグラフ構造化したグラフインデックス情報(以下「グラフ」や「グラフ情報」や「グラフデータ」ともいう)を用いて複数のオブジェクトをクラスタリングするための情報を生成する。情報処理装置100は、エッジによりオブジェクト(以下「ノード」ともいう)間を連結したグラフを用いて、各ノードを複数のセントロイドのいずれかに割当ノードとして割り当てた情報(以下「クラスタリング情報」ともいう)を生成する。すなわち、情報処理装置100は、グラフを用いて、各ノードが複数のセントロイドのいずれかに割り当てられ、セントロイドに基づいてクラスタリングされたクラスタリング情報を生成する。
図1及び図2の例では、情報処理装置100が、データ検索の対象(オブジェクト)がベクトル化された各ベクトルに対応する情報(ノード)を対象として、クラスタリング情報を生成する場合を示す。すなわち、図1及び図2の例では、情報処理装置100がベクトルをノードに対応するノード値として処理を行う場合を示す。なお、情報処理装置100が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置100は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置100は、各対象から生成された所定の数値(例えば2進数の値や16進数の値)を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
例えば、情報処理装置100は、数百万~数億等の単位の膨大な画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置100は、図1及び図2中の空間情報SP11に示すように、ノードN1~N21等に示すような複数のノード(ベクトル)に関する情報を取得する。このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。また、図1及び図2中のグラフGR11では、図示の関係上、ノードN1~N21のノードを図示して処理の概要を説明するが、ノードN1~N21以外にも多数のノードが含まれる。また、各ノードは、各オブジェクト(検索対象)に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
図1及び図2の例では、情報処理装置100は、ノードが無向エッジ(以下単に「エッジ」ともいう)により連結されたグラフGR11を用いて、情報処理を行う。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。また、図1及び図2の例では、図示の関係上、エッジE1~E23のノードを図示して処理の概要を説明するが、エッジE1~E23以外にも多数のエッジが含まれる。このように、図1及び図2中のグラフ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及び図2を用いてクラスタリング情報を生成する処理について詳述する。まず、情報処理装置100は、データ検索の対象(オブジェクト)に各々対応する複数のノードがエッジにより連結されたグラフを取得する(ステップS11)。図1及び図2の例では、情報処理装置100は、空間情報SP11-1に示すようにノードN1~N21等やエッジE1~E23等を含むグラフGR11を取得する。例えば、情報処理装置100は、グラフデータ記憶部124(図8参照)からグラフGR11を取得する。なお、情報処理装置100は、種々の従来技術を適宜用いてグラフGR11を生成してもよい。情報処理装置100は、全データ(オブジェクト)がノードとなるように、グラフGR11を生成してもよい。例えば、情報処理装置100は、各オブジェクトが少なくとも1つの他のオブジェクトと連結されることにより、全オブジェクトがノードとなるグラフGR11を生成してもよい。
図1及び図2の例では、空間情報SP11中の2つのサイズの円形のうち、ハッチングが付されていない小さい方の円形「○」にノードIDを付すことにより各ノードを表現する。例えば、ノードID「N11」により識別されるノード(ノードN11)は、空間情報SP11-1中の右下部の円形「○」として表現する。例えば、図1及び図2に示す例において、各ノードは、オブジェクトがN次元の実数値にベクトル化されたベクトルデータに対応する。また、図1及び図2に示す空間情報SP11-1~SP11-6は、空間情報の一部を模式的に示す図であり、空間情報SP11-1~SP11-6は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報SP11-1~SP11-6について、特に区別なく説明する場合には、空間情報SP11と記載する。
なお、図1及び図2中の空間情報SP11は、ユークリッド空間であってもよい。また、図1及び図2に示す空間情報SP11は、各ノード間の距離等の説明のための概念的な図である。なお、例えば、図1及び図2に示す空間情報SP11は、平面上に図示するため2次元の態様にて図示されるが、具体的には、例えば数次元~数万次元等の多次元空間であるものとする。
本実施形態においては、空間情報SP11における各ノードの距離を対応する各オブジェクト(例えば画像等)間の類似度とする。ここで、図1及び図2に示す例においては、空間情報SP11における各ノード間の距離が小さいオブジェクト同士の類似度が高く、空間情報SP11における各ノード間の距離が大きいオブジェクト同士の類似度が低い。例えば、図1及び図2中の空間情報SP11において、ノードID「N4」により識別されるノード(ノードN4)と、ノードID「N14」により識別されるノード(ノードN14)とは近接している、すなわち距離が小さい。そのため、ノードN4に対応するオブジェクトと、ノードN14に対応するオブジェクトとは類似度が高いことを示す。また、例えば、図1及び図2中の空間情報SP11において、ノードID「N4」により識別されるノード(ノードN4)と、ノードID「N11」により識別されるノード(ノードN11)とは遠隔にある、すなわち距離が大きい。そのため、ノードN1に対応するオブジェクトと、ノードN11に対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標は、本願の情報処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の情報処理に適用可能であれば、ユークリッド距離やマハラノビス距離等の種々の指標が用いられてもよい。例えば、距離は、2つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
その後、情報処理装置100は、セントロイド情報(以下単に「セントロイド」ともいう)を生成する(ステップS12)。例えば、情報処理装置100は、所定の基準に基づいて複数のセントロイドを生成する。情報処理装置100は、複数のノードから所定の基準に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。例えば、情報処理装置100は、k-means法やk-means++等の種々の従来技術を適宜用いて、所定数のセントロイドを生成してもよい。
例えば、情報処理装置100は、所定数のセントロイドをランダムに生成してもよい。また、情報処理装置100は、ノードN1~N21等から、ランダムにノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
例えば、情報処理装置100は、ノードN1~N21等から、ランダムにセントロイドとするノードを選択することにより所定数のセントロイドを生成する。例えば、情報処理装置100は、ノードN1~N21等から、所定数のノードを選択することにより所定数のセントロイドを生成する。例えば、情報処理装置100は、ノードN1~N21等から、セントロイドとして利用するノードを選択し、選択したノードのベクトルを自身のベクトルとするセントロイドを生成することにより、所定数のセントロイドを生成する。情報処理装置100は、上記のノードN1~N21等からの選択により、セントロイドC1、C2等を含む複数のセントロイドを生成する。
なお、情報処理装置100は、種々の情報を適宜用いてセントロイドを生成してもよい。例えば、情報処理装置100は、種々の情報を用いてセントロイドの数を決定してもよい。例えば、情報処理装置100は、データ検索の対象数(オブジェクト数)が「500万」である場合、「5万(=500万/100)」のセントロイドを生成する。また、情報処理装置100は、各セントロイド間の距離が遠くなるように所定数のセントロイドをランダムに生成してもよい。例えば、情報処理装置100は、任意のセントロイドを初期のセントロイドとして生成し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置(ベクトル)に対応するセントロイドを生成する処理を繰り返す。例えば、情報処理装置100は、任意のノードを初期のセントロイドとして選択(生成)し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置(ベクトル)に対応するノードをセントロイドとして選択(生成)する処理を繰り返す。なお、上記は一例であり、情報処理装置100は、種々の方法により、所定数のセントロイドを生成してもよい。
図1の例では、情報処理装置100は、所定数のセントロイドをランダムに生成するものとする。これにより、情報処理装置100は、図1中の空間情報SP11-2に示すように、セントロイドC1、C2等を含む複数のセントロイドを生成する。このように、「セントロイドC*(*は任意の数値)」と記載した場合、そのセントロイドはセントロイドID「C*」により識別されるセントロイドであることを示す。例えば、「セントロイドC1」と記載した場合、そのセントロイドはセントロイドID「C1」により識別されるセントロイド(ベクトル)である。図1及び図2の例では、説明を簡単にするためにセントロイドC1、C2のみを図示するが、情報処理装置100は、データ検索の対象数(ノード数)に基づいて、セントロイドC1、C2を含む多数のセントロイドを生成してもよい。
また、図1及び図2の空間情報SP11中では、適宜「セントロイドC*(*は任意の数値)」の図示を省略し、空間情報SP11中の2つのサイズの円形のうち、ハッチングが付された大きい方の円形「○」にセントロイドIDを付すことにより各セントロイドを表現する。例えば、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)は、空間情報SP11-2中のノードN10に重なる位置の円形「○」として表現する。このように、ステップS12で生成された時点でのセントロイドC1に位置は、ノードN10と同じであるため、空間情報SP11において、ノードN10に同じ位置になる。例えば、図1及び図2に示す例において、各セントロイドに対応するベクトルデータは、N次元の実数値ベクトルであってもよい。空間情報SP11において、セントロイドとの間の距離が近いノードが、そのセントロイドとベクトルが類似し、そのセントロイドの近傍に位置するノードであることを示す。
そして、情報処理装置100は、所定の基準に基づいて、複数のノードから各セントロイドの各々に対応する起点ノードを選択する(ステップS13)。例えば、情報処理装置100は、セントロイド生成時に選択されたノードを、起点ノードに選択する。図1の例では、情報処理装置100は、ノードN10をセントロイドC1に対応する起点ノードとして選択し、ノードN12をセントロイドC2に対応する起点ノードとして選択する。
また、情報処理装置100は、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する(ステップS14)。例えば、情報処理装置100は、セントロイドに対応して選択された起点ノードをそのセントロイドに対応付けて候補ノードリストに追加する。
図1の例では、情報処理装置100は、セントロイドC1に対応する起点ノードであるノードN10を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-1に追加する。また、情報処理装置100は、ノードN10とセントロイドC1との組合せに対応付けて、ノードN10とセントロイドC1との間の距離を候補ノードリストCNL1-1に追加する。この場合、ノードN10とセントロイドC1とは同じ位置であるため、情報処理装置100は、ノードN10とセントロイドC1との組合せに対応付けて、ノードN10とセントロイドC1との間の距離「0」を候補ノードリストCNL1-1に追加する。
また、情報処理装置100は、セントロイドC2に対応する起点ノードであるノードN12を、セントロイドC2に対応する候補ノードとして、セントロイドC2に対応付けて候補ノードリストCNL1-1に追加する。また、情報処理装置100は、ノードN12とセントロイドC2との組合せに対応付けて、ノードN12とセントロイドC2との間の距離を候補ノードリストCNL1-1に追加する。この場合、ノードN12とセントロイドC2とは同じ位置であるため、情報処理装置100は、ノードN12とセントロイドC2との組合せに対応付けて、ノードN12とセントロイドC2との間の距離「0」を候補ノードリストCNL1-1に追加する。以下では、候補ノードリストCNL1-1~CNL1-4について、特に区別なく説明する場合には、候補ノードリストCNL1と記載する。情報処理装置100は、候補ノードリストCNL1に対応する情報を記憶部120(図4参照)に記憶してもよい。以下では、候補ノードリストCNL1中の候補ノード、対応セントロイド及び距離の各々組合せを候補情報と記載する場合がある。
情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。情報処理装置100は、候補ノードリストCNL1中に含まれる各候補情報を距離が短い方から順にソートする。図1の例では、情報処理装置100は、候補ノードリストCNL1中に含まれる各候補情報が距離の短い方から順に上から下に並ぶようにソートする。例えば、候補ノードリストCNL1は配列であってもよい。なお、情報処理装置100は、各候補情報が距離順に参照可能であれば、どのようにソートを行ってもよく、例えば順番を示す情報(フラグ)を付したり、連結リストを生成したりすることにより、候補情報を距離が短い方から順にソートする処理を実現してもよい。なお、距離が等しい場合、候補ノードリストCNL1へ追加された順等、所定の基準による順序で並べてもよい。例えば、候補ノードリストCNL1-1では、ノードN12及びセントロイドC2の距離「0」と、ノードN10及びセントロイドC1の距離「0」が等しいため、ノードN12の方を上に並べる例を示すが、ノードN10の方が上であってもよい。
また、図1中に示す割当リストANL1-1は、ステップS13の時点で、各ノードが割当ノードとして割り当てられたセントロイド及びそのセントロイドとの間の距離を示す。以下では、割当リストANL1-1~ANL1-4について、特に区別なく説明する場合には、割当リストANL1と記載する。情報処理装置100は、割当リストANL1に対応する情報を記憶部120(図4参照)に記憶してもよい。割当リストANL1に示す情報は、割当処理関連情報記憶部125(図2参照)に記憶される情報であってもよい。例えば、割当リストANL1は、割当処理関連情報記憶部125(図2参照)の各セントロイドの割当ノードを、ノード側から見た形式で表現したものであってもよい。以下では、割当リストANL1中の割当ノード、セントロイド及び距離の各々組合せを割当情報と記載する場合がある。ここで、割当リストANL1では、ノードがセントロイドに未割当ての場合、セントロイド及び距離の項目は「-」(ハイフン)となる。例えば、ステップS13の時点では、全ノードがどのセントロイドにも割り当てられておらず、割当リストANL1-1は、セントロイドの項目が「-」になっている。
そして、情報処理装置100は、処理対象を選択する(ステップS15)。情報処理装置100は、候補ノードリストCNL1-1から処理対象とするノード(「第1ノード」ともいう)を選択する。情報処理装置100は、候補ノードリストCNL1-1から処理対象とする第1ノードを示す候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-1から、距離が最も短い候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-1のうち、最も上位の候補情報を選択する。図1の例では、情報処理装置100は、候補ノードリストCNL1-1からノードN12及びセントロイドC2の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN12を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL1-1からノードN12及びセントロイドC2の組合せに対応する候補情報を削除する。
そして、情報処理装置100は、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う(ステップS16)。図1の例では、情報処理装置100は、ノードN12が対応付けられた対応セントロイドであるセントロイドC2にノードN12を割当ノードとして割り当てる第1処理を行う。この場合、情報処理装置100は、ノードN12にセントロイドC2を対応付けることにより、割当リストANL1を更新する。具体的には、情報処理装置100は、割当リストANL1-2に示すように、割当ノードとしてノードN12をセントロイドC2に対応付けた割当情報を記憶する。情報処理装置100は、ノードN12、セントロイドC2、及びノードN12とセントロイドC2との間の距離「0」を含む割当情報に割当リストANL1-2を更新する。
そして、情報処理装置100は、第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う(ステップS17)。情報処理装置100は、ノードN12とエッジで連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する第2処理を行う。空間情報SP11-3に示すようにノードN12は、ノードN2、N8、N13の3つのノードとエッジで連結されている。図1の例では、情報処理装置100は、ノードN12の連結ノードであるノードN2、N8、N13の3つのノードを、対応セントロイドであるセントロイドC2に対応付けて候補ノードリストCNL1に追加することにより、候補ノードリストCNL1を更新する。情報処理装置100は、候補ノードリストCNL1-1から、候補ノードリストCNL1-2に更新する。
情報処理装置100は、第2ノードであるノードN2を、セントロイドC2に対応する候補ノードとして、セントロイドC2に対応付けて候補ノードリストCNL1-2に追加する。また、情報処理装置100は、ノードN2とセントロイドC2との組合せに対応付けて、ノードN2とセントロイドC2との間の距離を候補ノードリストCNL1-2に追加する。例えば、情報処理装置100は、ノードとセントロイド間の情報を記憶部120(図4参照)から取得してもよいし、記憶部120(図4参照)に記憶されたノードのベクトル情報やセントロイドのベクトル情報を用いて、距離を算出してもよい。例えば、情報処理装置100は、記憶部120(図4参照)からノードN2とセントロイドC2との間の距離を示す情報を取得してもよいし、ノードN2のベクトル情報やセントロイドC2のベクトル情報を用いて、ノードN2とセントロイドC2との間の距離を算出してもよい。そして、情報処理装置100は、ノードN2とセントロイドC2との組合せに対応付けて、ノードN2とセントロイドC2との間の距離「3.2」を候補ノードリストCNL1-2に追加する。
また、情報処理装置100は、第2ノードであるノードN8を、セントロイドC2に対応する候補ノードとして、セントロイドC2に対応付けて候補ノードリストCNL1-2に追加する。また、情報処理装置100は、ノードN8とセントロイドC2との組合せに対応付けて、ノードN8とセントロイドC2との間の距離を候補ノードリストCNL1-2に追加する。そして、情報処理装置100は、ノードN8とセントロイドC2との組合せに対応付けて、ノードN8とセントロイドC2との間の距離「6.3」を候補ノードリストCNL1-2に追加する。
また、情報処理装置100は、第2ノードであるノードN13を、セントロイドC2に対応する候補ノードとして、セントロイドC2に対応付けて候補ノードリストCNL1-2に追加する。また、情報処理装置100は、ノードN13とセントロイドC2との組合せに対応付けて、ノードN13とセントロイドC2との間の距離を候補ノードリストCNL1-2に追加する。そして、情報処理装置100は、ノードN13とセントロイドC2との組合せに対応付けて、ノードN13とセントロイドC2との間の距離「8.0」を候補ノードリストCNL1-2に追加する。
図1の候補ノードリストCNL1-2に示すように、情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。情報処理装置100は、ノードN10とセントロイドC1との組合せ、ノードN2とセントロイドC2との組合せ、ノードN8とセントロイドC2との組合せ、及びノードN13とセントロイドC2との組合せの順で格納する。ステップS17後の候補ノードリストCNL1-2では、距離が最も短い距離「0」であるノードN10とセントロイドC1との組合せを示す候補情報が最も上位であり、以下距離が短い方から順に候補情報が並べられる。
なお、図1及び図2の例では、第1ノードとエッジで連結された連結ノードの全てを第2ノードとして、候補ノードリストに追加する場合を示すが、連結ノードから所定の条件に基づいて第2ノードを選択してもよいが、この点についての詳細は後述する。また、情報処理装置100は、上述した第1処理や第2処理の実行に応じて、割当処理関連情報記憶部125(図2参照)を更新する。情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC2に対応する第1処理済みノードにノードN12を追加し、セントロイドC2に対する第1処理が行われた処理済ノードの数(以下「第1数」ともいう)を「1」に更新する。また、情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC2に対応する割当ノードにノードN12を追加し、セントロイドC2に割り当てられた割当ノードの数(以下「第2数」ともいう)を「1」に更新する。
そして、情報処理装置100は、処理対象を選択する(ステップS18)。情報処理装置100は、候補ノードリストCNL1-2から処理対象とするノード(第1ノード)を選択する。情報処理装置100は、候補ノードリストCNL1-2から処理対象とする第1ノードを示す候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-2から、距離が最も短い候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-2のうち、最も上位の候補情報を選択する。図1の例では、情報処理装置100は、候補ノードリストCNL1-2からノードN10及びセントロイドC1の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN10を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL1-2からノードN10及びセントロイドC1の組合せに対応する候補情報を削除する。
そして、情報処理装置100は、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う(ステップS19)。図1の例では、情報処理装置100は、ノードN10が対応付けられた対応セントロイドであるセントロイドC1にノードN10を割当ノードとして割り当てる第1処理を行う。この場合、情報処理装置100は、ノードN10にセントロイドC1を対応付けることにより、割当リストANL1を更新する。具体的には、情報処理装置100は、割当リストANL1-3に示すように、割当ノードとしてノードN10をセントロイドC1に対応付けた割当情報を記憶する。情報処理装置100は、ノードN10、セントロイドC1、及びノードN10とセントロイドC1との間の距離「0」を含む割当情報に割当リストANL1-3を更新する。
そして、情報処理装置100は、第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う(ステップS20)。情報処理装置100は、ノードN10とエッジで連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する第2処理を行う。空間情報SP11-4に示すようにノードN10は、ノードN3、N4、N18の3つのノードとエッジで連結されている。図1の例では、情報処理装置100は、ノードN10の連結ノードであるノードN3、N4、N18の3つのノードを、対応セントロイドであるセントロイドC1に対応付けて候補ノードリストCNL1に追加することにより、候補ノードリストCNL1を更新する。情報処理装置100は、候補ノードリストCNL1-2から、候補ノードリストCNL1-3に更新する。
情報処理装置100は、第2ノードであるノードN3を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-3に追加する。また、情報処理装置100は、ノードN3とセントロイドC1との組合せに対応付けて、ノードN3とセントロイドC1との間の距離「8.2」を候補ノードリストCNL1-3に追加する。
また、情報処理装置100は、第2ノードであるノードN4を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-3に追加する。また、情報処理装置100は、ノードN4とセントロイドC1との組合せに対応付けて、ノードN4とセントロイドC1との間の距離「3.1」を候補ノードリストCNL1-3に追加する。
また、情報処理装置100は、第2ノードであるノードN18を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-3に追加する。また、情報処理装置100は、ノードN18とセントロイドC1との組合せに対応付けて、ノードN18とセントロイドC1との間の距離「7.5」を候補ノードリストCNL1-3に追加する。
図1の候補ノードリストCNL1-3に示すように、情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。情報処理装置100は、ノードN4とセントロイドC1との組合せ、ノードN2とセントロイドC2との組合せ、ノードN8とセントロイドC2との組合せ、ノードN18とセントロイドC1との組合せ、ノードN13とセントロイドC2との組合せ、及びノードN3とセントロイドC1との組合せの順で格納する。ステップS20後の候補ノードリストCNL1-3では、距離が最も短い距離「3.1」であるノードN4とセントロイドC1との組合せを示す候補情報が最も上位であり、以下距離が短い方から順に候補情報が並べられる。
また、情報処理装置100は、割当処理関連情報記憶部125(図2参照)を更新する。情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC1に対応する第1処理済みノードにノードN10を追加し、セントロイドC1の第1数を「1」に更新する。また、情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC1に対応する割当ノードにノードN10を追加し、セントロイドC1の第2数を「1」に更新する。
ここからは、図2も参照して説明する。情報処理装置100は、処理対象を選択する(ステップS21)。情報処理装置100は、候補ノードリストCNL1-3から処理対象とするノード(第1ノード)を選択する。情報処理装置100は、候補ノードリストCNL1-3から処理対象とする第1ノードを示す候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-3から、距離が最も短い候補情報を選択する。情報処理装置100は、候補ノードリストCNL1-3のうち、最も上位の候補情報を選択する。図2の例では、情報処理装置100は、候補ノードリストCNL1-3からノードN4及びセントロイドC1の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN4を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL1-3からノードN4及びセントロイドC1の組合せに対応する候補情報を削除する。
そして、情報処理装置100は、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う(ステップS22)。図2の例では、情報処理装置100は、ノードN4が対応付けられた対応セントロイドであるセントロイドC1にノードN4を割当ノードとして割り当てる第1処理を行う。この場合、情報処理装置100は、ノードN4にセントロイドC1を対応付けることにより、割当リストANL1を更新する。具体的には、情報処理装置100は、割当リストANL1-4に示すように、割当ノードとしてノードN4をセントロイドC1に対応付けた割当情報を記憶する。情報処理装置100は、ノードN4、セントロイドC1、及びノードN4とセントロイドC1との間の距離「3.1」を含む割当情報に割当リストANL1-4を更新する。
そして、情報処理装置100は、第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う(ステップS23)。情報処理装置100は、ノードN4とエッジで連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する第2処理を行う。空間情報SP11-5に示すようにノードN4は、ノードN10、N14、N20の3つのノードとエッジで連結されている。
例えば、情報処理装置100は、ノードに接続された連結ノード(近傍ノード)とセントロイドの距離との距離を計算して、候補ノードリストに追加する。例えば、情報処理装置100は、第1ノードとエッジで連結された連結エッジのうち、既に対応セントロイドの第1ノードとして処理対象となったノード以外のノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。情報処理装置100は、ノードN4の連結ノードであるノードN10、N14、N20のうち、セントロイドC1の第1ノードとして処理対象となったノード以外のノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。情報処理装置100は、割当処理関連情報記憶部125に記憶された情報を用いて、セントロイドC1の第1ノードとして処理対象となったノード以外のノードを第2ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1に追加する。
例えば、情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC1に対応する処理済みノードを処理済ノードリストとして取得し、処理済ノードリストに含まれるノードを第2ノードとしない。図2の例では、情報処理装置100は、セントロイドC1の処理済ノードリストにはノードN10が含まれるため、ノードN10を第2ノードとしない。すなわち、情報処理装置100は、ノードN10を第2ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1に追加する第2処理をスキップする。図2の例では、情報処理装置100は、ノードN4の連結ノードであるノードN10、N14、N20のうち、ノードN10以外のノードN14、N20を第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。このように、情報処理装置100は、セントロイド(クラスタ)ごとに処理(アクセス)したノードの情報を保持し、一度処理(アクセス)したノードはスキップする。これにより、情報処理装置100は、既に処理されたノード及びセントロイドの組合せが再度処理対象となることを抑制し、処理時間の増大を抑制することができる。
上記のように、情報処理装置100は、ノードN4の連結ノードのうち、ノードN10以外のノードN14、N20を、セントロイドC1に対応付けて候補ノードリストCNL1に追加することにより、候補ノードリストCNL1を更新する。情報処理装置100は、候補ノードリストCNL1-3から、候補ノードリストCNL1-4に更新する。
また、情報処理装置100は、第2ノードであるノードN14を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-4に追加する。また、情報処理装置100は、ノードN14とセントロイドC1との組合せに対応付けて、ノードN14とセントロイドC1との間の距離「1.5」を候補ノードリストCNL1-4に追加する。
また、情報処理装置100は、第2ノードであるノードN20を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-4に追加する。また、情報処理装置100は、ノードN20とセントロイドC1との組合せに対応付けて、ノードN20とセントロイドC1との間の距離「5.2」を候補ノードリストCNL1-4に追加する。
図2の候補ノードリストCNL1-4に示すように、情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。ステップS23後の候補ノードリストCNL1-4では、距離が最も短い距離「1.5」であるノードN14とセントロイドC1との組合せを示す候補情報が最も上位であり、以下距離が短い方から順に候補情報が並べられる。
そして、情報処理装置100は、上述した第1処理及び第2処理を繰り返す(ステップS24)。情報処理装置100は、候補ノードリストCNL1から処理対象を繰り返し選択し、選択した処理対象に対する第1処理及び第2処理を繰り返す。例えば、情報処理装置100は、ステップS23後の繰り返しでは、情報処理装置100は、候補ノードリストCNL1-4のうち、最も上位の候補情報を選択する。図2の例では、情報処理装置100は、候補ノードリストCNL1-4からノードN14及びセントロイドC1の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN14を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL1-4からノードN14及びセントロイドC1の組合せに対応する候補情報を削除する。そして、情報処理装置100は、ノードN14を第1ノードとして、第1処理及び第2処理を行う。
例えば、情報処理装置100は、候補ノードが無くなった場合、繰り返しを終了してもよい。候補ノードリストCNL1例えば、情報処理装置100は、全ノードがいずれかのセントロイドに割り当てられた場合、繰り返しを終了してもよい。情報処理装置100は、割当リストANL1中のセントロイドの項目に「-」が無くなった場合、繰り返しを終了してもよい。情報処理装置100は、所定の条件を満たしたセントロイドから順に処理を終了し、全セントロイドの処理が終了するまで処理を繰り返してもよい。なお、この点の詳細については後述する。
上述した第1処理及び第2処理を繰り返しにより、情報処理装置100は、空間情報SP11-6に模式的に示すようなセントロイドにノードが割り当てられたクラスタリング情報を生成する。なお、空間情報SP11-6において、各セントロイドに割り当てられた割当ノードは、セントロイドとノードとの間を点線でつなぐことにより示す。空間情報SP11-6においては、グラフGR11のエッジの情報の図示を省略する。空間情報SP11-6は、セントロイドC1とノードN19が点線でつながれており、ノードN19がセントロイドC1の割当ノードであることを示す。また、セントロイドC1と位置が重なるノードN10については点線を付すことを省略するが、ノードN10はセントロイドC1の割当ノードである。同様に、セントロイドC2と位置が重なるノードN12については点線を付すことを省略するが、ノードN12はセントロイドC2の割当ノードである。例えば、情報処理装置100は、割当リストANL1を順次更新することにより、セントロイドにノードが割り当てられたクラスタリング情報を生成する。
これにより、情報処理装置100は、図2中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。情報処理装置100は、セントロイドC1にノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等が割り当てられたクラスタリング情報を生成する。また、情報処理装置100は、セントロイドC2にノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等が割り当てられたクラスタリング情報を生成する。
上述したように、情報処理装置100は、グラフGR11を用いることにより、ノードN1~N21等をセントロイドC1、C2等のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置100は、所定の基準で選択した起点ノードから開始して、順次候補ノードリストや割当リストを更新することにより、クラスタリング情報を生成する。具体的には、情報処理装置100は、セントロイドと対応付けた状態でノードを候補ノードリストに追加し、第1ノードとして処理対象となった場合、その第1ノードに対応付けられたセントロイドに、第1ノードをそのセントロイドの割当ノードとして割り当てる。また、情報処理装置100は、グラフを利用して候補ノードリストに追加する。情報処理装置100は、第1ノードに連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストに追加する。これにより、候補ノードリストに追加されるノードにはセントロイドが対応付けられており、第1ノードの処理対象となった場合は、対応付けられたセントロイドを、第1ノードの割当セントロイドとする。これにより、例えば、情報処理装置100は、各セントロイドと各ノードとの類似度(距離)を比較することなく、セントロイドに割当ノードを割り当てることができる。したがって、情報処理装置100は、各セントロイドと各ノードとの類似度(距離)を比較する場合に比べて、より高速に各ノードをクラスタリングすることができる。すなわち、情報処理装置100は、複数のオブジェクト(ノード)をグラフ構造化したグラフインデックス(グラフ情報)を用いることにより、効率的なクラスタリングを可能にすることができる。
〔1-1.割当処理後の未割当ノード〕
なお、図1の例では、クラスタリング情報を生成する生成処理の全体概要を説明したが、各部分の処理において、より詳細な種々の処理を行ってもよい。この点について、以下説明する。例えば、割当処理の終了後に、どのセントロイドにも割り当てられていないノード(未割当ノード)が有る場合、情報処理装置100は、未割当ノードの割当先(セントロイド)を所定の基準で決定してもよい。
このように、情報処理装置100は、割当処理の後において、未割当ノードを、所定の処理により複数のセントロイドのいずれかに割当ノードとして割り当てる。例えば、情報処理装置100は、複数のセントロイドのうち、未割当ノードとの間の距離が最短のセントロイドに未割当ノードを割り当てる。この場合、情報処理装置100は、複数のセントロイドの各々と未割当ノードとの間の距離を算出し、距離が最短のセントロイドに未割当ノードを割り当てる。
上記のように、情報処理装置100は、未割当ノードが有る場合、いずれかのセントロイドにそのノードを割り当てることにより、割当先がないノードの発生を抑制することができる。これにより、情報処理装置100は、適切なクラスタリング情報を生成することができる。このように、情報処理装置100は、割り当てられていないノードがある場合、には距離を計算し、割り当てた上で、割当てリストにより各クラスタのセントロイドを計算する。
〔1-2.割当てノードの更新〕
また、情報処理装置100は、既にあるセントロイド(割当済セントロイド)の割当ノードとなっているノードが、他のセントロイド(処理対象セントロイド)に対する第1ノードとして選択された場合、所定の条件に応じて、その第1ノードの割当先を変更(更新)してもよい。この点について、図13を用いて説明する。図13は、ノードが割り当てられるセントロイドの更新の一例を示す図である。図13では、図1及び図2中に示す処理において、空間情報SP11-6に示すクラスタリング情報が生成されるまでの一部分の処理を示す。なお、図1や図2と同様の点については適宜説明を省略する。
図13の例では、候補ノードリストCNL1-51に示すように、情報処理装置100は、ノードN19とセントロイドC1との組合せ、ノードN16とセントロイドC2との組合せの順で格納する。候補ノードリストCNL1-51では、距離が最も短い距離「10.8」であるノードN19とセントロイドC1との組合せを示す候補情報が最も上位であり、以下距離が短い方から順に候補情報が並べられる。
情報処理装置100は、処理対象を選択する(ステップS51)。情報処理装置100は、候補ノードリストCNL1-51から処理対象とするノード(第1ノード)を選択する。情報処理装置100は、候補ノードリストCNL1-51から、距離が最も短い候補情報を選択する。図13の例では、情報処理装置100は、候補ノードリストCNL1-51からノードN19及びセントロイドC1の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN19を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL1-51からノードN19及びセントロイドC1の組合せに対応する候補情報を削除する。
そして、情報処理装置100は、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う(ステップS52)。図13の例では、情報処理装置100は、ノードN19が対応付けられた対応セントロイドであるセントロイドC1にノードN19を割当ノードとして割り当てる第1処理を行う。ここで、割当リストANL1-51に示すように、ノードN19は、セントロイドC2に割当ノードとして割り当てられている。そのため、情報処理装置100は、セントロイドC1にノードN19を割当ノードとして割り当てる第1処理を行うかどうかを判定する。このように、情報処理装置100は、第1ノードが既に対応セントロイド(処理対象セントロイド)以外のセントロイド(割当済セントロイド)に割り当てられている場合、第1処理を行うかどうかを判定する。
情報処理装置100は、処理対象セントロイドと第1ノードとの間の第1距離と、割当済セントロイドと第1ノードとの間の第2距離との比較に基づいて、第1処理を行うかどうかを判定する。例えば、情報処理装置100は、処理対象セントロイドと第1ノードとの間の第1距離が、割当済セントロイドと第1ノードとの間の第2距離よりも短い場合、第1処理を行うと判定する。
具体的には、情報処理装置100は、処理対象セントロイドと第1ノードとの間の第1距離が、割当済セントロイドと第1ノードとの間の第2距離よりも短い場合、第1ノードの割当済セントロイドへの割当ノードとしての割り当てを解除する。そして、情報処理装置100は、第1ノードを処理対象セントロイド(対応セントロイド)に割当ノードとして割り当てる。なお、情報処理装置100は、処理対象セントロイドと第1ノードとの間の第1距離が、割当済セントロイドと第1ノードとの間の第2距離以上である場合、第1処理を行わないと判定する。この場合、情報処理装置100は、割当リストANL1を更新せずに、第1ノードの割当済セントロイドへの割当ノードとしての割当てを維持する。
図13の例では、セントロイドC1とノードN19との間の第1距離「10.8」が、セントロイドC2とノードN19との間の第2距離「15.5」よりも短い。そのため、情報処理装置100は、ノードN19のセントロイドC2への割り当てを解除する。そして、情報処理装置100は、割当リストANL1-52に示すように、ノードN19をセントロイドC1に割当ノードとして割り当てる。これにより、情報処理装置100は、ノードN19、セントロイドC1、及びノードN19とセントロイドC1との間の距離「10.8」を含む割当情報に割当リストANL1-52を更新する。
このように、情報処理装置100は、既にセントロイドに割り当てられているノードであっても、より適切なセントロイドが有る場合、そのセントロイドに割当先を更新することにより、適切なクラスタリング情報を生成することができる。
そして、情報処理装置100は、第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う(ステップS53)。情報処理装置100は、ノードN19とエッジで連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する第2処理を行う。図1中の空間情報SP11-1に示すようにノードN19は、ノードN3、N1の2つのノードとエッジで連結されている。
例えば、情報処理装置100は、第1ノードとエッジで連結された連結エッジのうち、すでに対応セントロイドの第1ノードとして処理対象となったノード以外のノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。情報処理装置100は、ノードN19の連結ノードであるノードN3、N1のうち、セントロイドC1の第1ノードとして処理対象となったノード以外のノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。情報処理装置100は、割当処理関連情報記憶部125(図9参照)に記憶された情報を用いて、セントロイドC1の第1ノードとして処理対象となったノード以外のノードを第2ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1に追加する。
例えば、情報処理装置100は、割当処理関連情報記憶部125中のセントロイドC1に対応する処理済みノードを処理済ノードリストとして取得し、処理済ノードリストに含まれるノードを第2ノードとしない。図13の例では、情報処理装置100は、セントロイドC1の処理済ノードリストにはノードN3が含まれるものとする。そのため、情報処理装置100は、ノードN3を第2ノードとしない。すなわち、情報処理装置100は、ノードN3を第2ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1に追加する第2処理をスキップする。そして、情報処理装置100は、ノードN19の連結ノードであるノードN3、N1のうち、ノードN3以外のノードN1を第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。
上記のように、情報処理装置100は、ノードN19の連結ノードのうち、ノードN30以外のノードN1を、セントロイドC1に対応付けて候補ノードリストCNL1に追加することにより、候補ノードリストCNL1を更新する。情報処理装置100は、候補ノードリストCNL1-51から、候補ノードリストCNL1-52に更新する。情報処理装置100は、第2ノードであるノードN1を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-52に追加する。また、情報処理装置100は、ノードN1とセントロイドC1との組合せに対応付けて、ノードN14とセントロイドC1との間の距離「12.6」を候補ノードリストCNL1-52に追加する。
図13の候補ノードリストCNL1-52に示すように、情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。ステップS23後の候補ノードリストCNL1-52では、距離が最も短い距離「12.6」であるノードN1とセントロイドC1との組合せを示す候補情報が最も上位であり、以下距離が短い方から順に候補情報が並べられる。そして、情報処理装置100は、第1処理及び第2処理を繰り返す。
〔1-3.第2ノードの選択〕
なお、図1及び図2の例では、第1ノードとエッジで連結された連結ノードの全てを第2ノードとして、候補ノードリストに追加する場合を示すが、連結ノードから所定の条件に基づいて第2ノードを選択してもよい。例えば、情報処理装置100は、第1ノードの連結ノードの一部を第2ノードとして選択してもよい。
例えば、情報処理装置100は、第1ノードの連結ノードのうち、複数のセントロイドのいずれかに割当ノードとしての割り当て済みのノード以外のノードを、第2ノードとして選択する。情報処理装置100は、第1ノードの連結ノードのうち、複数のセントロイドのいずれかに割当ノードとしての割り当て済みのノードが有る場合、そのノードを第2ノードとして選択しなくてもよい。例えば、情報処理装置100は、第2ノードとしての選択対象となるノードにセントロイドが割当て済みである場合、そのノードを第2ノードとして選択しなくてもよい。
また、情報処理装置100は、第1ノードの連結ノードのうち、第1処理の処理対象のノードとなった回数が所定の閾値以上のノード以外のノードを、第2ノードとして対応セントロイドに対応付けて候補ノードリストに追加する。例えば、情報処理装置100は、第1ノードの連結ノードのうち、第1処理の処理対象のノードとなった回数が所定の閾値(例えば「2」や「5」などの所定値)以上のノードを、第2ノードとして選択しなくてもよい。
また、情報処理装置100は、基準情報記憶部122(図6参照)に記憶された候補ノードリスト追加数に関する基準(基準CR12)に基づいて、第2ノードを選択してもよい。情報処理装置100は、第1ノードの連結ノードのうち、基準CR12の数NM12が示す個数のノードを第2ノードとして選択する。また、情報処理装置100は、第1ノードの連結ノードの数が、数NM12が示す個数以下である場合、全連結ノードを第2ノードして選択してもよい。例えば、情報処理装置100は、第1ノードの連結ノードの数が、数NM12が示す個数よりも多い場合、第1ノードから近い順に数NM12が示す個数の連結ノードを第2ノードして選択する。なお、数NM12は、適宜設定されてもよい。例えば、数NM12は、ベクトルの次元数や距離関数や空間上のデータ(ノード)分布等の種々の情報を用いて、適宜設定されてもよい。情報処理装置100は、ベクトルの次元数が多い程、数NM12を大きく設定してもよい。また、情報処理装置100は、空間SP11上のノードの分布が密集している程、数NM12を大きく設定してもよい。なお、上記は一例であり、数NM12は、適宜設定される。また、情報処理装置100は、数NM12を変動させてもよい。情報処理装置100は、新たにセントロイドに割り当てられるノードの数が減少している場合、数NM12を増加させてもよい。
〔1-4.セントロイドごとの処理終了〕
上述したように、情報処理装置100は、所定の条件を満たしたセントロイドから順に処理を終了し、全セントロイドの処理が終了するまで処理を繰り返してもよい。例えば、情報処理装置100は、所定の条件を満たしたセントロイドC1の処理を先に終了し、セントロイドC1の処理終了後は、セントロイドC2のみを処理対象として処理し、セントロイドC2が所定の条件を満たした場合、セントロイドC2の処理を終了する。この場合、情報処理装置100は、セントロイドC1、C2の全セントロイドの処理が終了したため、割当処理を終了する。
情報処理装置100は、セントロイド(クラスタ)ごとに処理(アクセス)したノードを保持する場合には、セントロイド(クラスタ)の割当ノード(メンバー数)に対するアクセスしたノード数が一定値以上となった場合に、そのクラスタの探索を終了してもよい。情報処理装置100は、セントロイド(クラスタ)ごとに処理(アクセス)したノードを保持する場合には、割当処理関連情報記憶部125(図9参照)中に示すように、セントロイドごとに処理したノードの情報を管理する場合、セントロイド(クラスタ)の割当ノードの数(第2数)に対するアクセスしたノード数(第1数)が一定値(例えば所定の閾値)以上となった場合に、そのセントロイドを処理済セントロイドとして処理対象外としてもよい。そして、情報処理装置100は、全セントロイド(クラスタ)の探索が終了した場合に処理を終了してもよい。例えば、情報処理装置100は、全セントロイドを処理済セントロイドと判定した場合、割当処理を終了してもよい。
例えば、情報処理装置100は、セントロイドの第1数と第2数とに基づいて、セントロイドが第1処理を終了する処理済セントロイドであるかどうかを判定してもよい。情報処理装置100は、第2数に対する第1数の割合が所定の閾値以上である場合、対応セントロイドを処理済セントロイドであると判定する。情報処理装置100は、対応セントロイドの第2数に対する第1数の割合が、基準情報記憶部122(図6参照)に記憶された閾値TH11以上である場合、対応セントロイドを処理済セントロイドであると判定してもよい。例えば、閾値TH11は、「1」や「1.5」など、0より大きい種々の値であってもよい。
そして、情報処理装置100は、処理済セントロイドと判定されたセントロイドに対応する第1処理を行わなくてもよい。例えば、情報処理装置100は、処理済セントロイドと判定されたセントロイドに対応する第1処理を行わなくてもよい。
例えば、情報処理装置100は、セントロイドが処理済セントロイドと判定した場合、割当処理関連情報記憶部125中のそのセントロイドのセントロイドIDに対応する初期化フラグを「1」に変更する。そして、情報処理装置100は、初期化フラグが「1」であるセントロイドが処理対象となった場合、その処理を行わなくてもよい。情報処理装置100は、初期化フラグが「1」であるセントロイドが処理対象となった場合、その処理をスキップする。すなわち、情報処理装置100は、候補ノードリストのうち、処理済セントロイドに対応付けられたノードを除くノードを第1ノードとして第1処理を行う。
情報処理装置100は、処理対象を選択した場合、選択した処理対象のセントロイドが処理済セントロイドであるかを判定する。例えば、情報処理装置100は、割当処理関連情報記憶部125中を参照し、選択した処理対象のセントロイドに対応する初期化フラグが「1」であるかを判定する。情報処理装置100は、割当処理関連情報記憶部125に記憶された処理対象のセントロイドに対応する初期化フラグが「1」である場合、選択した処理対象のセントロイドが処理済セントロイドであると判定する。
例えば、情報処理装置100は、候補ノードリストCNL1から第1ノードとして選択されたノードに対応付けられたセントロイドの初期化フラグが「1」である場合、その第1ノードの第1処理及び第2処理をスキップする。そして、情報処理装置100は、候補ノードリストCNL1からそのノード及びセントロイドの組合せに対応する候補情報を削除する。なお、情報処理装置100は、処理済セントロイドと判定した場合、候補ノードリストCNL1中の処理済セントロイドに対応付けられた候補ノードの候補情報を削除してもよい。
〔1-5.閾値の変動〕
また、情報処理装置100は、上記のようにセントロイドごとに処理を終了する場合、基準となる閾値TH11は、量子化誤差が改善されない場合には増加させても良い。情報処理装置100は、割当処理により更新される各セントロイドに応じて所定の閾値を変動させてもよい。
例えば、情報処理装置100は、変更条件情報記憶部123(図7参照)に記憶された変更に関する変更条件情報を用いて、セントロイドごとに処理を終了する基準となる閾値TH11を変動させてもよい。情報処理装置100は、変更条件情報記憶部123中の条件CD11の情報を用いて、閾値TH11を増加させてもよい。例えば、情報処理装置100は、条件CD11に示すように、セントロイドの位置変化や繰り返し回数に応じて、閾値TH11を増加させてもよい。
例えば、情報処理装置100は、セントロイドの位置に応じて、閾値TH11を増加させてもよい。例えば、情報処理装置100は、セントロイドの位置が収束しない場合、徐々に閾値TH11を増加させてもよい。例えば、処理開始の初期段階の繰り返し数が少ないうちは、セントロイドの精度が低いため、閾値TH11が小さくてもセントロイドの位置はある程度収束が進む。一方、処理が進むにつれて徐々に収束が進まなくなるため、閾値TH11の値を大きくすることで、ノード割り当て精度が高くなり、セントロイドの位置の収束を促進することができる。
〔1-6.並列処理〕
情報処理装置100は、処理の高速化のために並列処理により、上記処理を実行してもよい。例えば、情報処理装置100は、ある一定単位で並列処理してもよい。上記の例では、情報処理装置100は、候補リストから1つずつノードを取得して処理するが、一定数(例えば10個や100個等)のノードを取得し、取得したノードに対して並列に処理を行っても良い。また、情報処理装置100は、セントロイドの数に応じて並列処理を実行してもよい。例えば、情報処理装置100は、セントロイドごとに並列処理を実行してもよい。例えば、情報処理装置100は、スレッドごとにセントロイドを割り当てることにより、セントロイドごとに並列処理を実行してもよい。
〔1-7.更新処理(割当処理の繰返し)〕
図1では、情報処理装置100がセントロイドを生成し、各セントロイドにノードを割り当てる最初の割当処理を示したが、情報処理装置100は、割当処理後において、各セントロイドに割り当てられたノードに基づいて、セントロイドを更新し、更新後のセントロイドを用いて2回目以降の割当処理(以下「更新処理」ともいう)を繰り返す。この点について、図14を用いて以下説明する。図14は、実施形態に係るセントロイドの更新の一例を示す図である。図14に示す空間情報SP11-6は、図2に示す空間情報SP11-6と同様である。すなわち、図14では、図1及び図2の処理で生成されたクラスタリング情報を基にセントロイドを更新し、更新処理を実行する場合を一例として示す。なお、図1や図2と同様の点については適宜説明を省略する。
情報処理装置100は、セントロイドを更新する(ステップS61)。図14の例では、情報処理装置100は、セントロイドC1、C2の空間情報SP11における位置を割当ノードに応じて更新する。情報処理装置100は、セントロイドに割り当てられたデータ(ノード)を基にセントロイドを再計算する。情報処理装置100は、セントロイドに割り当てられたデータ(ノード)の平均を基にセントロイドを更新する。
情報処理装置100は、各セントロイドのベクトルを割当ノードのベクトルに応じて更新する。例えば、情報処理装置100は、一のセントロイドに割り当てられた複数データ(割当ノード)の中央座標(重心)を一のセントロイドの座標(セントロイド値)としてもよい。例えば、情報処理装置100は、一のセントロイドの割当ノードに対応するベクトルの平均値を、一のセントロイドのベクトルとして生成する。
図14の例では、情報処理装置100は、セントロイドC1にノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等が割当ノードとして割り当てられたため、セントロイドC1の割当ノードに応じて、セントロイドC1を更新する。具体的には、情報処理装置100は、ノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等のベクトルを用いて、セントロイドC1のベクトルを更新する。
これにより、情報処理装置100は、セントロイドC1のベクトルを、空間情報SP11-6中の位置(ベクトル)から、空間情報SP11-61中の位置(ベクトル)に更新する。例えば、図14の空間情報SP11中に示すセントロイドC1の位置は、ノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等の中央座標に更新される。図14の例では、空間情報SP11におけるセントロイドC1の位置が、左下方向に移動する。このように、情報処理装置100は、セントロイドの割当ノードに応じて、セントロイドを更新する。例えば、情報処理装置100は、あるセントロイドの割当ノードに変更があった場合、変更後の割当ノードに基づいて、セントロイドを更新後セントロイドに更新する。
また、情報処理装置100は、セントロイドC2にノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等が割当ノードとして割り当てられたため、セントロイドC2の割当ノードに応じて、セントロイドC2を更新する。具体的には、情報処理装置100は、ノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等のベクトルを用いて、セントロイドC2のベクトルを更新する。
これにより、情報処理装置100は、セントロイドC2のベクトルを、空間情報SP11-6中の位置(ベクトル)から、空間情報SP11-61中の位置(ベクトル)に更新する。例えば、図14の空間情報SP11中に示すセントロイドC2の位置は、ノノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等の中央座標に更新される。図14の例では、空間情報SP11におけるセントロイドC2の位置が、左下方向に移動する。
情報処理装置100は、上述したセントロイドの更新に応じて、セントロイド記憶部126に記憶された情報を更新する。また、情報処理装置100は、セントロイドの更新に応じて、割当処理関連情報記憶部125に記憶される情報を初期化する。例えば、情報処理装置100は、セントロイドの更新に応じて、割当処理関連情報記憶部125に記憶されるセントロイドID以外の情報を初期値に変更したり、削除したりすることにより、初期化する。例えば、情報処理装置100は、割当処理関連情報記憶部125に記憶されるセントロイドID以外の情報のうち、初期化フラグを初期値(例えば0)に変更し、他の情報を削除することにより、初期化する。
そして、情報処理装置100は、更新後のセントロイドC1、C2等を用いて、再度割当処理(割当て処理)を繰り返してもよい。例えば、情報処理装置100は、セントロイドC1、C2等の更新後において、セントロイドC1、C2等へのノードの割当てを再度行うことにより、クラスタリング情報を再生成してもよい。例えば、情報処理装置100は、図1に示すステップS13の起点ノード選択の処理以降の処理を実行してもよい。
情報処理装置100は、所定の基準に基づいて、複数のノードから各セントロイドの各々に対応する起点ノードを選択する(ステップS62)。例えば、情報処理装置100は、前回の割当処理において各セントロイドに割り当てられた割当ノードのうち、各セントロイドとの間の距離が近いノードを起点ノードとして選択する。情報処理装置100は、前回の割当処理において各セントロイドに割り当てられた割当ノードのうち、各セントロイドとの間の距離が最短のノードを起点ノードとして選択する。情報処理装置100は、クラスタリング情報記憶部127に記憶されたクラスタリング情報を用いて、起点ノードを選択する。
図14の例では、情報処理装置100は、前回の割当処理においてセントロイドC1に割り当てられたノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等のうち、セントロイドC1から最も近いノードN10を起点ノードとして選択する。また、情報処理装置100は、前回の割当処理においてセントロイドC2に割り当てられたノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等のうち、セントロイドC2から最も近いノードN12を起点ノードとして選択する。
また、情報処理装置100は、起点ノードを選択した後、クラスタリング情報記憶部127に記憶される情報を初期化してもよい。例えば、情報処理装置100は、前回の割当処理での割当ノードに基づく起点ノードの選択後に、クラスタリング情報記憶部127に記憶されるセントロイドID以外の情報を削除することにより、初期化する。なお、情報処理装置100は、前回の割当処理において各セントロイドに割り当てられた割当ノードの情報を用いることなく、起点ノードを選択してもよい。情報処理装置100は、前回の割当処理における割当ノードに関わらず全ノードのうち、更新後のセントロイドと最も近いノードを起点ノードとして選択してもよい。
また、情報処理装置100は、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する(ステップS63)。例えば、情報処理装置100は、セントロイドに対応して選択された起点ノードをそのセントロイドに対応付けて候補ノードリストに追加する。
図14の例では、情報処理装置100は、セントロイドC1に対応する起点ノードであるノードN10を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL61-1に追加する。また、情報処理装置100は、ノードN10とセントロイドC1との組合せに対応付けて、ノードN10とセントロイドC1との間の距離「0.3」を候補ノードリストCNL61-1に追加する。
また、情報処理装置100は、セントロイドC2に対応する起点ノードであるノードN12を、セントロイドC2に対応する候補ノードとして、セントロイドC2に対応付けて候補ノードリストCNL61-1に追加する。また、情報処理装置100は、ノードN12とセントロイドC2との組合せに対応付けて、ノードN12とセントロイドC2との間の距離「2.2」を候補ノードリストCNL61-1に追加する。
図14の候補ノードリストCNL61-1に示すように、情報処理装置100は、候補ノードリストCNL1に距離が短い方から順に各候補情報を並べて格納する。情報処理装置100は、ノードN10とセントロイドC1との組合せ、ノードN12とセントロイドC2との組合せの順で格納する。候補ノードリストCNL1-61では、距離が最も短い距離「0.3」であるノードN10とセントロイドC1との組合せを示す候補情報が最も上位であり、その次に距離「2.2」であるノードN12とセントロイドC2との組合せの候補情報が並べられる。
また、図14中に示す割当リストANL61-1は、ステップS62の時点で、各ノードが割当ノードとして割り当てられたセントロイド及びそのセントロイドとの間の距離を示す。例えば、ステップS62の時点では、全ノードがどのセントロイドにも割り当てられておらず、割当リストANL61-1は、セントロイドの項目が「-」になっている。
そして、情報処理装置100は、第1処理及び第2処理を繰り返す(ステップS64)。情報処理装置100は、候補ノードリストCNL1から処理対象を繰り返し選択し、選択した処理対象に対する第1処理及び第2処理を繰り返す。例えば、情報処理装置100は、候補ノードリストCNL61-1のうち、最も上位の候補情報を選択する。図14の例では、情報処理装置100は、候補ノードリストCNL61-1からノードN10及びセントロイドC1の組合せに対応する候補情報を選択する。この場合、情報処理装置100は、ノードN10を第1ノードとして選択する。また、情報処理装置100は、候補ノードリストCNL61-1からノードN10及びセントロイドC1の組合せに対応する候補情報を削除する。そして、情報処理装置100は、ノードN10を第1ノードとして、第1処理及び第2処理を行う。
情報処理装置100は、所定の終了条件を満たすまで、割当処理(更新処理)を繰り返してもよい。この場合、情報処理装置100は、所定の終了条件に基づいて、更新処理の繰り返しの終了を判定してもよい。情報処理装置100は、セントロイドが移動しなければ終了してもよい。また、情報処理装置100は、繰り返しの回数が一定数以上になったら終了してもよい。また、情報処理装置100は、量子化誤差一定数以内になったら終了してもよい。
また、例えば、所定の終了条件は、k-means法と同一であってもよい。ここでいう所定の終了条件は、例えば、セントロイドの座標の変化がなくなることや、変化量が一定量以下になることや、量子化誤差が一定量以下になること等、種々の条件であってもよい。情報処理装置100は、所定の終了条件を満たすまで、更新処理を繰り返す。例えば、情報処理装置100は、割当ノードの変更が無くなるまで、上記のような更新処理を繰り返し実行してもよい。また、情報処理装置100は、所定の終了条件を満たすまで、割当処理(更新処理)の回数が所定の閾値(例えば100回や5000回等)に達した場合、処理を終了してもよい。
上述したように、情報処理装置100は、割当処理後においてセントロイドを更新し、更新したセントロイドを用いて、再度割当処理(更新処理)を行うことにより、効率的にクラスタリング情報を生成することができる。
〔2.情報処理システムの構成〕
図3に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図3は、実施形態に係る情報処理システムの構成例を示す図である。なお、図3に示した情報処理システム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.情報処理装置の構成〕
次に、図4を用いて、実施形態に係る情報処理装置100の構成について説明する。図4は、実施形態に係る情報処理装置100の構成例を示す図である。図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図3中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、オブジェクト情報記憶部121と、基準情報記憶部122と、変更条件情報記憶部123と、グラフデータ記憶部124と、割当処理関連情報記憶部125と、セントロイド記憶部126と、クラスタリング情報記憶部127とを有する。
(オブジェクト情報記憶部121)
実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図5は、実施形態に係るオブジェクト情報記憶部の一例を示す図である。図5に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図5の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
例えば、図5の例では、オブジェクトID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(基準情報記憶部122)
実施形態に係る基準情報記憶部122は、各種処理の基準に関する各種情報を記憶する。図6は、実施形態に係る基準情報記憶部の一例を示す図である。図6に示す基準情報記憶部122は、「基準ID」、「対象」、「基準内容」といった項目が含まれる。例えば、基準情報記憶部122は、各種処理を実行する基準や条件に関する各種情報を記憶する。
「基準ID」は、基準を識別する情報を示す。「対象」は、基準の対象を示す。また、「基準内容」は、対応する基準として用いる具体的な内容を示す。なお、図6に示す例では、「基準内容」を「CINF11」や「NM12」や「TH11」といった抽象的な符号を図示するが、具体的な基準となる情報や値等であるものとする。
図6の例では、基準ID「CR11」により識別される基準(基準CR11)は、起点ノードに関連する基準であることを示す。基準CR11の対象は、起点ノードであり、その基準内容は「CINF11」であることを示す。図6の距離CINF11は、距離を示す情報であり、起点ノードの選択基準が距離であることを示す。
また、基準ID「CR12」により識別される基準(基準CR12)は、候補ノードリスト追加数、すなわち第2処理に関連する基準であることを示す。基準CR12の対象は、第2処理であり、その基準内容は「NM12」であることを示す。図6の数NM12は、具体的な数(値)である。
また、基準ID「CR13」により識別される基準(基準CR13)は、処理済セントロイドの判定に関連する基準であることを示す。基準CR12の対象は、処理済セントロイド判定であり、その基準内容は「TH11」であることを示す。図6の閾値TH11は、具体的な数(値)である。
なお、基準情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(変更条件情報記憶部123)
実施形態に係る変更条件情報記憶部123は、変更に関する変更条件に関する各種情報を記憶する。図7は、実施形態に係る変更条件情報記憶部の一例を示す図である。図7に示す変更条件情報記憶部123は、「条件ID」、「対象」、「判定内容」、「判定条件」、「変更内容」といった項目を有する。例えば、変更条件情報記憶部123は、基準や処理対象の変更に関する変更条件に関する各種情報を記憶する。
「条件ID」は、変更に関する条件を識別する情報を示す。「対象」は、変更の対象を示す。
「判定内容」は、変更の判定に用いられる情報を示す。なお、図7に示す例では、「判定内容」を「JINF11」や「JINF12」といった抽象的な符号を図示するが、具体的な判定に用いる情報を示すものとする。
「判定条件」は、変更の条件として用いられる情報を示す。なお、図7に示す例では、「判定条件」を「TH11」や「CND12」といった抽象的な符号を図示するが、具体的な数(値)等、判定の条件に用いる情報を示すものとする。
「変更内容」は、対応する条件を満たす場合に基準を変更する具体的な内容を示す。なお、図7に示す例では、「変更内容」は、数の変更である場合、「+1」や「5増加」や「2減少」や「10%増加」や「5%減少」等の種々の変更内容であってもよい。
図7の例では、条件ID「CD11」により識別される条件(条件CD11)は、閾値TH11に関連する変更の条件であることを示す。具体的には、条件CD11は、閾値TH11を増加するかどうかの判定に用いる条件であることを示す。
条件CD12の判定内容は「JINF12」であることを示す。図7の判定内容JINF12は、セントロイドの位置を示す情報であり、判定に用いる情報がセントロイドの位置であることを示す。
条件CD12の判定条件は「CND12」であることを示す。図7では、条件CD12の判定条件が位置変化や繰り返し回数であることを示す。また、条件CD12を満たす場合、変更内容は、「増加」であることを示す。この場合、セントロイドの位置などの情報が条件CD12を満たす場合、閾値TH11が増加されることを示す。
なお、変更条件情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフデータ記憶部124)
実施形態に係るグラフデータ記憶部124は、グラフデータに関する各種情報を記憶する。例えば、グラフデータ記憶部124は、生成したグラフデータを記憶する。図8は、実施形態に係るグラフデータ記憶部の一例を示す図である。図8に示すグラフデータ記憶部124は、「ノードID」、「オブジェクトID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図8の例では、「エッジ情報」は、エッジが無向エッジである場合を示し、対応するノードと参照先のノードとを連結するエッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図8の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードとエッジにより連結される参照先(ノード)が対応付けられて登録されている。
図8の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、エッジID「E1」により識別されるエッジ(エッジE1)が、ノードID「N2」により識別されるノード(ノードN2)に連結されることを示す。すなわち、図8の例では、グラフデータにおけるノードN1からはエッジE1によりノードN2へ辿ることができることを示す。また、ノードN1からは、エッジID「E2」により識別されるエッジ(エッジE2)が、ノードID「N5」により識別されるノード(ノードN5)に連結されることを示す。すなわち、図8の例では、グラフデータにおけるノードN1からはエッジE2によりノードN5へ辿ることができることを示す。
また。図8の例では、ノードID「N2」には、参照先をノードID「N1」とするエッジID「E1」を含むエッジ情報が対応付けて記憶される。このように、ノードN2は、エッジE1により、ノードN1と連結されることを示す。すなわち、図8の例では、ノードN2からはノードN1に辿ることができることを示す。
なお、グラフデータ記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフデータ記憶部124は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフデータ記憶部124は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部123は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。例えば、グラフ情報記憶部123は、エッジIDに、そのエッジIDにより識別されるエッジが連結するセントロイドを識別する情報を対応付けて記憶してもよい。
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータGR11は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータGR11は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータGR11は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
(割当処理関連情報記憶部125)
実施形態に係る割当処理関連情報記憶部125は、割当処理に関する各種情報を記憶する。図9は、実施形態に係る割当処理関連情報記憶部の一例を示す図である。図9の例では、割当処理関連情報記憶部125には、「セントロイドID」、「処理済みフラグ」、「第1処理関連情報」、「割当ノード関連情報」といった項目が含まれる。例えば、割当処理関連情報記憶部125は、割当処理中に更新される各種の情報を記憶する。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。「処理済みフラグ」は、セントロイドが処理済セントロイドであるかどうかを示す。例えば、「処理済みフラグ」が「0」である場合、そのセントロイドが処理済セントロイドではないことを示し、「処理済みフラグ」が「1」である場合、そのセントロイドが処理済セントロイドであることを示す。
「第1処理関連情報」は、対応するセントロイドの第1処理に関連する情報を示す。「第1処理関連情報」には、「処理済みノード」や「第1数」といった項目が含まれる。「処理済みノード」は、対応するセントロイドの第1ノードとして第1処理が行われたノードを示す。なお、図9に示す例では、「処理済みノード」を「PNINF1」や「PNINF2」といった抽象的な符号を図示するが、「処理済みノード」は、「N1」、「N2」といった具体的な処理済みノードを示す情報であるものとする。「第1数」は、対応するセントロイドに対する第1処理が行われた処理済ノードの数を示す。なお、図9に示す例では、「第1数」を「FNM1」や「FNM2」といった抽象的な符号を図示するが、「第1数」は、「3」、「10」、「500」といった具体的な数(値)が格納される。
「割当ノード関連情報」は、対応するセントロイドの割当ノードに関連する情報を示す。「第1処理関連情報」には、「割当ノード」や「第2数」といった項目が含まれる。「割当ノード」は、対応するセントロイドに割り当てられたノードを示す。なお、図9に示す例では、「割当ノード」を「ANINF1」や「ANINF2」といった抽象的な符号を図示するが、「割当ノード」は、「N1」、「N2」具体的な割当ノードを示す情報であるものとする。「第2数」は、対応するセントロイドの割当てノードの数を示す。なお、図9に示す例では、「第2数」を「ANM1」や「ANM2」といった抽象的な符号を図示するが、「第2数」は、「2」、「15」、「100」といった具体的な数(値)が格納される。
図9に示す例では、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)は、処理済みフラグが「0」であり、処理済セントロイドではないことを示す。セントロイドC1は、処理済みノードが「PNINF1」であり、ノードN1やノードN2が第1処理の対象として処理されたことを示す。また、セントロイドC1は、第1数が「FNM1」であり、処理済みノードであるノードN1やノードN2等の数(この場合例えば100等、2以上の数)を示す。
また、セントロイドC1は、処理済みノードが「ANINF1」であり、ノードN1やノードN2が割当てノードとして割当てられていることを示す。また、セントロイドC1は、第2数が「ANM1」であり、割当てノードであるノードN1やノードN2等の数(この場合例えば50等、2以上の数)を示す。
なお、割当処理関連情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(セントロイド記憶部126)
実施形態に係るセントロイド情報記憶部126は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部126は、セントロイドIDやベクトル情報(ベクトルデータ)を記憶する。図10は、実施形態に係るセントロイド情報記憶部の一例を示す図である。図10に示すセントロイド情報記憶部126は、「セントロイドID」、「ベクトル情報」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「ベクトル情報」は、セントロイドIDにより識別されるセントロイド(ベクトル)に対応するベクトル情報を示す。
図10に示す例では、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応するベクトル情報は、「10,24,54,2・・・」のN次元ベクトルであることを示す。
また、図10に示す例では、セントロイドID「C4」により識別されるセントロイド(セントロイドC4)に対応するベクトル情報は、「32,1,120,31・・・」のN次元ベクトルであることを示す。
なお、セントロイド情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(クラスタリング情報記憶部127)
実施形態に係るクラスタリング情報記憶部127は、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部127は、セントロイド情報記憶部122に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図11は、実施形態に係るクラスタリング情報記憶部の一例を示す図である。図11の例では、クラスタリング情報記憶部127は、「セントロイドID」、「ノードID」といった項目が含まれる。
「セントロイドID」は、セントロイドを識別するための識別情報を示す。また、「ノードID」は、セントロイドIDにより識別されるセントロイドに対応付けられたノード(オブジェクト)を示す。
図11に示す例では、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)に対応付けられたノード(オブジェクト)は、ノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等であることを示す。また、セントロイドID「C2」により識別されるセントロイド(セントロイドC2)に対応付けられたノード(オブジェクト)は、ノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等であることを示す。
なお、クラスタリング情報記憶部127は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(制御部130)
図4の説明に戻って、制御部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)等の集積回路により実現される。
図4に示すように、制御部130は、取得部131と、選択部132と、判定部133と、生成部134と、検索部135と、提供部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、基準情報記憶部122や、変更条件情報記憶部123や、グラフデータ記憶部124や、割当処理関連情報記憶部125や、セントロイド記憶部126や、クラスタリング情報記憶部127等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。取得部131は、対応セントロイドに対する第1処理が行われたノードである処理済ノードが登録された対応セントロイドに対応する処理済ノードリストを取得する。取得部131は、生成部134により生成された複数のセントロイドを取得する。
また、取得部131は、グラフデータを取得してもよい。例えば、情報処理装置100は、図1中のグラフGR11を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフデータを取得してもよい。
図1の例では、取得部131は、空間情報SP11-1に示すようにノードN1~N121等やエッジE1~E23等を含むグラフGR11を取得する。取得部131は、グラフデータ記憶部124からグラフGR11を取得する。
例えば、取得部131は、検索クエリに関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
(選択部132)
選択部132は、各種情報を選択する。選択部132は、各種情報を抽出する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を選択する。選択部132は、記憶部120に記憶された各種情報に基づいて、種々の情報を抽出する。
選択部132は、所定の基準に基づいて、複数のノードから各セントロイドの各々に対応する起点ノードを選択し、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する。選択部132は、候補ノードリストのうち、対応セントロイドとの間の距離に基づいて第1ノードを選択する。
選択部132は、候補ノードリストのうち、対応セントロイドとの間の距離が最も短い一のノードを第1ノードとして選択する。選択部132は、2回目以降の割当処理である場合、前回の割当処理において所定のセントロイドに割り当てられた割当ノードのうち、所定のセントロイドとの間の距離が近いノードを起点ノードとして選択する。選択部132は、複数のセントロイドの各々を所定のセントロイドとして、起点ノードを選択する。
図1の例では、選択部132は、セントロイド生成時に選択されたノードを、起点ノードに選択する。選択部132は、ノードN10をセントロイドC1に対応する起点ノードとして選択し、ノードN12をセントロイドC2に対応する起点ノードとして選択する。選択部132は、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する。選択部132は、セントロイドに対応して選択された起点ノードをそのセントロイドに対応付けて候補ノードリストに追加する。
選択部132は、セントロイドC1に対応する起点ノードであるノードN10を、セントロイドC1に対応する候補ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1-1に追加する。また、選択部132は、ノードN10とセントロイドC1との組合せに対応付けて、ノードN10とセントロイドC1との間の距離を候補ノードリストCNL1-1に追加する。この場合、ノードN10とセントロイドC1とは同じ位置であるため、選択部132は、ノードN10とセントロイドC1との組合せに対応付けて、ノードN10とセントロイドC1との間の距離「0」を候補ノードリストCNL1-1に追加する。
そして、選択部132は、処理対象を選択する。選択部132は、候補ノードリストCNL1-1から処理対象とするノード(第1ノード)を選択する。選択部132は、候補ノードリストCNL1-1から処理対象とする第1ノードを示す候補情報を選択する。選択部132は、候補ノードリストCNL1-1から、距離が最も短い候補情報を選択する。選択部132は、候補ノードリストCNL1-1のうち、最も上位の候補情報を選択する。図1の例では、選択部132は、候補ノードリストCNL1-1からノードN12及びセントロイドC2の組合せに対応する候補情報を選択する。この場合、選択部132は、ノードN12を第1ノードとして選択する。また、選択部132は、候補ノードリストCNL1-1からノードN12及びセントロイドC2の組合せに対応する候補情報を削除する。
(判定部133)
判定部133は、各種情報を判定する。判定部133は、各種情報を決定する。判定部133は、各種情報を変更する。判定部133は、各種情報を更新する。判定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を判定する。判定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を決定する。判定部133は、記憶部120に記憶された各種情報に基づいて、種々の情報を変更する。判定部133は、各種情報を更新する。
判定部133は、種々の情報を用いて、変更条件を満たすかを判定する。判定部133は、種々の情報を用いて、基準を変更する変更条件を満たすかを判定する。判定部133は、判定結果に基づいて、種々の情報や処理を変更する。判定部133は、判定結果に基づいて、所定の基準を変更する。判定部133は、判定結果に基づいて、所定の処理をスキップさせる。
判定部133は、第1ノードとして対応セントロイドに対する第1処理が行われた処理済ノードの数である第1数と、対応セントロイドに割り当てられた割当ノードの数である第2数とに基づいて、対応セントロイドが第1処理を終了する処理済セントロイドであるかどうかを判定する。判定部133は、第2数に対する第1数の割合が所定の閾値以上である場合、対応セントロイドを処理済セントロイドであると判定する。判定部133は、割当処理により更新される各セントロイドに応じて所定の閾値を変動させ、割合が、所定の閾値以上である場合、対応セントロイドを処理済セントロイドであると判定する。
図2の例では、判定部133は、割当処理関連情報記憶部125中のセントロイドC1に対応する処理済みノードを処理済ノードリストとして取得し、処理済ノードリストに含まれるノードを第2ノードとしないと判定する。判定部133は、セントロイドC1の処理済ノードリストにはノードN10が含まれるため、ノードN10を第2ノードとしないと判定する。判定部133は、ノードN10を第2ノードとして、セントロイドC1に対応付けて候補ノードリストCNL1に追加する第2処理をスキップすると判定する。判定部133は、判定結果に応じた処理を生成部134に実行させる。
(生成部134)
生成部134は、各種情報を生成する。例えば、生成部134は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部134は、オブジェクト情報記憶部121や、基準情報記憶部122や、変更条件情報記憶部123や、グラフデータ記憶部124や、割当処理関連情報記憶部125や、セントロイド記憶部126や、クラスタリング情報記憶部127等に記憶された情報(データ)から各種情報を生成する。例えば、生成部134は、クラスタリング情報を生成する。
生成部134は、候補ノードリストのうち、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う。また、生成部134は、第1処理に対象となった当該第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う。生成部134は、第1処理及び第2処理を含む割当処理をおこなう。生成部134は、第1処理及び第2処理を含む割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
生成部134は、選択部132により選択された第1ノードを対象とする第1処理により、クラスタリング情報を生成する。生成部134は、第1ノードが割当ノードとして対応セントロイド以外の他のセントロイドに割当て済みであり、第1ノードと対応セントロイドとの間の第1距離が、第1ノードと他のセントロイドとの間の第2距離よりも短い場合、第1ノードの他のセントロイドへの割当ノードとしての割り当てを解除し、第1ノードを対応セントロイドに割当ノードとして割り当てる第1処理により、クラスタリング情報を生成する。
生成部134は、判定部133により第1処理の対象にしないと判定された処理済セントロイドに対応する第1処理を行わない。生成部134は、候補ノードリストのうち、処理済セントロイドに対応付けられたノードを除くノードを第1ノードとして第1処理を行う。
生成部134は、第2ノードが対応セントロイドに対応する処理済ノードリストに含まれない場合、第2ノードを対応セントロイドに対応付けて候補ノードリストに追加する。生成部134は、第1ノードとして対応セントロイドに対する第1処理が行われた処理済ノードを、対応セントロイドに対応する処理済ノードリストに追加する。生成部134は、第1ノードとエッジで連結された連結ノードのうち、所定の条件に基づいて選択される第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する。
生成部134は、第1ノードの連結ノードのうち、複数のセントロイドのいずれかに割当ノードとしての割り当て済みのノード以外のノードを、第2ノードとして対応セントロイドに対応付けて候補ノードリストに追加する。生成部134は、第1ノードの連結ノードのうち、第1処理の処理対象のノードとなった回数が所定の閾値以上のノード以外のノードを、第2ノードとして対応セントロイドに対応付けて候補ノードリストに追加する。生成部134は、第2ノードを選択する。
生成部134は、複数のセントロイドを生成する。生成部134は、複数のノードから、ランダムにノードをセントロイドとして選択することにより、複数のセントロイドを生成する。生成部134は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。
生成部134は、クラスタリング情報を生成する割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、2回目以降の割当処理によるクラスタリング情報の生成を繰り返し、2回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。生成部134は、割当処理の後において、いずれのセントロイドにも割り当てられていないノードである未割当ノードを、所定の処理により複数のセントロイドのいずれかに割当ノードとして割り当てる。生成部134は、複数のセントロイドのうち、未割当ノードとの間の距離が最短のセントロイドに未割当ノードを割り当てる。
図1の例では、生成部134は、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理を行う。生成部134は、ノードN12が対応付けられた対応セントロイドであるセントロイドC2にノードN12を割当ノードとして割り当てる第1処理を行う。生成部134は、ノードN12にセントロイドC2を対応付けることにより、割当リストANL1を更新する。生成部134は、割当リストANL1-2に示すように、割当ノードとしてノードN12をセントロイドC2に対応付けた割当情報を記憶する。生成部134は、ノードN12、セントロイドC2、及びノードN12とセントロイドC2との間の距離「0」を含む割当情報に割当リストANL1-2を更新する。
生成部134は、第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を行う。生成部134は、ノードN12とエッジで連結された連結ノードを第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する第2処理を行う。生成部134は、ノードN12の連結ノードであるノードN2、N8、N13の3つのノードを、対応セントロイドであるセントロイドC2に対応付けて候補ノードリストCNL1に追加することにより、候補ノードリストCNL1を更新する。生成部134は、候補ノードリストCNL1-1から、候補ノードリストCNL1-2に更新する。
図2の例では、生成部134は、ノードN4の連結ノードであるノードN10、N14、N20のうち、ノードN10以外のノードN14、N20を第2ノードとして、対応セントロイドに対応付けて候補ノードリストCNL1に追加する。
生成部134は、上述した第1処理及び第2処理を繰り返す。生成部134は、候補ノードリストCNL1から処理対象を繰り返し選択し、選択した処理対象に対する第1処理及び第2処理を繰り返す。例えば、生成部134は、ステップS23後の繰り返しでは、生成部134は、候補ノードリストCNL1-4のうち、最も上位の候補情報を選択する。生成部134は、候補ノードリストCNL1-4からノードN14及びセントロイドC1の組合せに対応する候補情報を選択する。生成部134は、ノードN14を第1ノードとして選択する。また、生成部134は、候補ノードリストCNL1-4からノードN14及びセントロイドC1の組合せに対応する候補情報を削除する。そして、生成部134は、ノードN14を第1ノードとして、第1処理及び第2処理を行う。
生成部134は、図2中のクラスタリング情報記憶部127に示すようなクラスタリング情報を生成する。生成部134は、セントロイドC1にノードN3、N4、N6、N7、N10、N14、N18、N19、N20、N21等が割り当てられたクラスタリング情報を生成する。また、生成部134は、セントロイドC2にノードN1、N2、N5、N8、N9、N11、N12、N13、N15、N16、N17等が割り当てられたクラスタリング情報を生成する。
(検索部135)
検索部135は、オブジェクトに関する検索サービスを提供する。検索部135は、各種情報を探索する。検索部135は、各種情報を検索する。例えば、検索部135は、グラフデータを探索することにより、オブジェクトを検索する。例えば、検索部135は、取得部131により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索部135は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索部135は、図15に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置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.情報処理のフロー〕
次に、図12を用いて、実施形態に係る情報処理システム1による情報処理の手順について説明する。図12は、実施形態に係る情報処理の一例を示すフローチャートである。
図12に示すように、情報処理装置100は、複数のノードがエッジにより連結されたグラフを取得する(ステップS101)。図1の例では、情報処理装置100は、グラフデータ記憶部124(図8参照)からグラフGR11を取得する。
そして、情報処理装置100は、複数のセントロイドを取得する(ステップS102)。図1の例では、情報処理装置100は、選択したノードN10やノードN12からセントロイドを生成することにより、複数のセントロイドを取得する。
そして、情報処理装置100は、所定の基準に基づいて、複数のノードから各セントロイドの各々に対応する起点ノードを選択する(ステップS103)。図1の例では、情報処理装置100は、起点ノードとして、ノードN10、N12を選択する。
そして、情報処理装置100は、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する(ステップS104)。図1の例では、情報処理装置100は、ノードN10の対応セントロイドであるセントロイドC10にノードN10を対応付けて候補ノードリストに追加し、ノードN12の対応セントロイドであるセントロイドC20にノードN12を対応付けて候補ノードリストに追加する。
そして、情報処理装置100は、第1ノードを対応セントロイドに割当ノードとして割り当てる第1処理、及び第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を含む割当処理により、クラスタリング情報を生成する(ステップS105)。図1の例では、情報処理装置100は、クラスタリング情報記憶部127に示すような、クラスタリング情報を生成する。
〔5.検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図15を一例として説明する。図15は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置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)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
〔6.効果〕
上述してきたように、実施形態に係る情報処理装置100は、取得部131と、選択部132と、生成部134とを有する。取得部131は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。選択部132は、所定の基準に基づいて、複数のノードから各セントロイドの各々に対応する起点ノードを選択し、起点ノードに対応する対応セントロイドに起点ノードを対応付けて候補ノードリストに追加する。生成部134は、候補ノードリストのうち、第1ノードを第1ノードが対応付けられた対応セントロイドに割当ノードとして割り当てる第1処理、及び当該第1処理に対象となった当該第1ノードとエッジで連結された第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する第2処理を含む割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、第1処理及び第2処理を含む割当処理を実行することにより、グラフにおける連結関係を利用してクラスタリングを行うことができるため、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、選択部132は、候補ノードリストのうち、対応セントロイドとの間の距離に基づいて第1ノードを選択する。生成部134は、選択部132により選択された第1ノードを対象とする第1処理により、クラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、候補ノードリストのうち、対応セントロイドとの間の距離に基づいて第1ノードを選択することにより、適切なノードを第1ノードとして選択することができるため、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、選択部132は、候補ノードリストのうち、対応セントロイドとの間の距離が最も短い一のノードを第1ノードとして選択する。
このように、実施形態に係る情報処理装置100は、セントロイドに近いノードから順に第1ノードとして選択することにより、適切なノードを第1ノードとして選択することができるため、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1ノードが割当ノードとして対応セントロイド以外の他のセントロイドに割当て済みであり、第1ノードと対応セントロイドとの間の第1距離が、第1ノードと他のセントロイドとの間の第2距離よりも短い場合、第1ノードの他のセントロイドへの割当ノードとしての割り当てを解除し、第1ノードを対応セントロイドに割当ノードとして割り当てる第1処理により、クラスタリング情報を生成する。
このように、実施形態に係る情報処理装置100は、各セントロイドとの距離に応じてクラスタリングを更新することにより、適切なセントロイドにノードを割り当てることが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100は、判定部133を有する。判定部133は、第1ノードとして対応セントロイドに対する第1処理が行われた処理済ノードの数である第1数と、対応セントロイドに割り当てられた割当ノードの数である第2数とに基づいて、対応セントロイドが第1処理を終了する処理済セントロイドであるかどうかを判定する。生成部134は、判定部133により第1処理の対象にしないと判定された処理済セントロイドに対応する第1処理を行わない。
このように、実施形態に係る情報処理装置100は、処理の対象とした回数(処理済ノードの数)や割り当てられているノード数(割当ノードの数)を用いた判定により、セントロイドから順に処理対象から除いていくことにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、判定部133は、第2数に対する第1数の割合が所定の閾値以上である場合、対応セントロイドを処理済セントロイドであると判定する。
このように、実施形態に係る情報処理装置100は、割当ノードの数に対する処理済ノードの数の割合を用いた判定により、セントロイドから順に処理対象から除いていくことにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、判定部133は、割当処理により更新される各セントロイドに応じて所定の閾値を変動させ、割合が、所定の閾値以上である場合、対応セントロイドを処理済セントロイドであると判定する。
このように、実施形態に係る情報処理装置100は、割当処理により更新される各セントロイドに応じて変動させた所定の閾値を用いた判定により、セントロイドから順に処理対象から除いていくことにより、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、候補ノードリストのうち、処理済セントロイドに対応付けられたノードを除くノードを第1ノードとして第1処理を行う。
このように、実施形態に係る情報処理装置100は、候補ノードリストのうち、処理済セントロイドとなったセントロイドと対応付けられているノードを処理対象から除外することにより、不要な処理を行うことを抑制することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、取得部131は、対応セントロイドに対する第1処理が行われたノードである処理済ノードが登録された対応セントロイドに対応する処理済ノードリストを取得する。生成部134は、第2ノードが対応セントロイドに対応する処理済ノードリストに含まれない場合、第2ノードを対応セントロイドに対応付けて候補ノードリストに追加する。
このように、実施形態に係る情報処理装置100は、処理済ノードリストを用いて、対応セントロイドの第1ノードとして第1処理が行われたノードが再度対応ノードの第1処理の対象となることを抑制することにより、不要な処理を行うことを抑制することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1ノードとして対応セントロイドに対する第1処理が行われた処理済ノードを、対応セントロイドに対応する処理済ノードリストに追加する。
このように、実施形態に係る情報処理装置100は、処理済ノードリストを更新することにより、不要な処理を行うことを抑制することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1ノードとエッジで連結された連結ノードのうち、所定の条件に基づいて選択される第2ノードを、対応セントロイドに対応付けて候補ノードリストに追加する。
このように、実施形態に係る情報処理装置100は、候補ノードリストに追加するノードを所定の条件で選択することにより、適切なノードを候補ノードリストに追加することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1ノードの連結ノードのうち、複数のセントロイドのいずれかに割当ノードとしての割り当て済みのノード以外のノードを、第2ノードとして対応セントロイドに対応付けて候補ノードリストに追加する。
このように、実施形態に係る情報処理装置100は、既にいずれかのセントロイドに割当て済みのノードを、候補ノードリストに追加しないことにより、処理対象となるノード数の増大を抑制することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、第1ノードの連結ノードのうち、第1処理の処理対象のノードとなった回数が所定の閾値以上のノード以外のノードを、第2ノードとして対応セントロイドに対応付けて候補ノードリストに追加する。
このように、実施形態に係る情報処理装置100は、既に所定の回数以上処理対象となったノードを、候補ノードリストに追加しないことにより、処理対象となるノード数の増大を抑制することが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、複数のセントロイドを生成する。取得部131は、生成部134により生成された複数のセントロイドを取得する。
このように、実施形態に係る情報処理装置100は、複数のセントロイドを生成することにより、生成したセントロイドを基にクラスタリングすることが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、複数のノードから、ランダムにノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
このように、実施形態に係る情報処理装置100は、ランダムにノードをセントロイドとすることにより、既存のノードをセントロイドとして用いることが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。
このように、実施形態に係る情報処理装置100は、割当処理の後にセントロイドを更新することにより、適切なセントロイドを生成でき、更新したセントロイドを用いて再度割当処理を行うことが可能となり、生成したセントロイドを基にクラスタリングすることが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、生成部134は、クラスタリング情報を生成する割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、2回目以降の割当処理によるクラスタリング情報の生成を繰り返し、2回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。
このように、実施形態に係る情報処理装置100は、終了条件を満たすまで、割当処理を繰り返すことにより、適切なクラスタリングを行うことが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、選択部132は、2回目以降の割当処理である場合、前回の割当処理において所定のセントロイドに割り当てられた割当ノードのうち、所定のセントロイドとの間の距離が近いノードを起点ノードとして選択する。
このように、実施形態に係る情報処理装置100は、2回目以降の割当処理の場合、前回の割当処理の結果を用いて、起点ノードを選択することで、適切なノードを起点として処理を行うことが可能となり、効率的なクラスタリングを可能にすることができる。
また、実施形態に係る情報処理装置100において、選択部132は、複数のセントロイドの各々を所定のセントロイドとして、起点ノードを選択する。
このように、実施形態に係る情報処理装置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)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。