(57)【要約】【課題】効率的なクラスタリングを可能にする。【解決手段】本願に係る情報処理装置は、取得部と、抽出部と、生成部とを有する。取得部は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。抽出部は、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。生成部は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。【選択図】図３
2020101893.tif 000002
【特許請求の範囲】
【請求項１】
データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する取得部と、
前記複数のセントロイドの各々をクエリとして、前記グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する抽出部と、
前記複数のセントロイドの各々に、対応する検索で抽出された前記近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、前記複数のセントロイドのいずれかに前記複数のノードの各々を割当ノードとして割り当てる割当処理により、前記複数のノードの各々を前記割当ノードとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記生成部は、
前記近傍ノード群情報において、ノードが対応付けられたセントロイドに前記ノードを前記割当ノードとして割り当てる前記割当処理により、前記クラスタリング情報を生成する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、
一のセントロイドの前記近傍ノードとして抽出された一のノードが、他のセントロイドの前記近傍ノードとして抽出された場合、前記一のノードが前記近傍ノードとして抽出されたセントロイド群のうち、前記一のノードとの距離が最も近いセントロイドに前記一のノードを前記割当ノードとして割り当てることにより、前記クラスタリング情報を生成する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記生成部は、
前記近傍ノード群情報に含まれるノードを第１対象ノードとして、前記複数のセントロイドのいずれかに前記割当ノードとして割り当てる第１割当処理と、前記第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、前記複数のセントロイドのいずれかに前記割当ノードとして割り当てる第２割当処理とを含む前記割当処理により、前記クラスタリング情報を生成する
ことを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記生成部は、
前記複数のセントロイドに関する情報に基づいて、前記第２対象ノードを前記複数のセントロイドのいずれかに前記割当ノードとして割り当てる前記第２割当処理により、前記クラスタリング情報を生成する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記生成部は、
前記第２対象ノードを、前記複数のセントロイドのうち距離が最も近いセントロイドに前記割当ノードとして割り当てる前記第２割当処理により、前記クラスタリング情報を生成する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記抽出部は、
前記各セントロイドに対して、所定の基準により決定される検索数の前記近傍ノードを抽出し、
前記生成部は、
前記各セントロイドに対応する検索数の前記近傍ノードに基づく前記割当処理により、前記クラスタリング情報を生成する
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記抽出部による前記近傍ノードの抽出結果に基づいて、前記検索数を決定する決定部、
をさらに備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記決定部は、
前記近傍ノードとして抽出されたノードの個数または前記複数のノードにおける前記近傍ノードの割合に基づくスコアに応じて、前記検索数を変更する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記決定部は、
前記スコアが所定値未満である場合、前記検索数を増加させる
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記決定部は、
前記スコアが所定値以上である場合、前記検索数を減少させる
ことを特徴とする請求項９または請求項１０に記載の情報処理装置。
【請求項１２】
前記生成部は、
前記近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する前記対応付情報以外を除く前記近傍ノード群情報に基づいて、前記クラスタリング情報を生成する
ことを特徴とする請求項７〜１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記生成部は、
前記近傍ノード群情報において、前記各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い前記近傍ノードとの間の距離のうち、最も近い距離を前記所定の閾値として、前記クラスタリング情報を生成する
ことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記抽出部は、
前記各セントロイドに対して、所定の基準により決定される検索範囲により前記グラフを検索することにより、前記各セントロイドの前記近傍ノードを抽出する
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項１５】
所定の基準により決定したクエリを用いた前記グラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、前記検索範囲を決定する決定部、
をさらに備え、
前記抽出部は、
前記決定部により決定された前記検索範囲により前記グラフを検索することにより、前記各セントロイドの前記近傍ノードを抽出する
ことを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
前記決定部は、
前記複数のノードまたは前記複数のセントロイドからクエリを選択し、選択したクエリを前記グラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、前記検索範囲を決定する
ことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記決定部は、
前記抽出部による前記近傍ノードの抽出結果に基づいて、前記検索範囲を決定する
ことを特徴とする請求項１５または請求項１６に記載の情報処理装置。
【請求項１８】
前記決定部は、
前記抽出部による前記近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、前記検索範囲を決定する
ことを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
前記生成部は、
前記複数のセントロイドを生成し、
前記取得部は、
前記生成部により生成された前記複数のセントロイドを取得する
ことを特徴とする請求項１〜１８のいずれか１項に記載の情報処理装置。
【請求項２０】
前記生成部は、
前記複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、前記複数のセントロイドを生成する
ことを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
前記生成部は、
前記複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、前記複数のセントロイドを生成する
ことを特徴とする請求項１９または請求項２０に記載の情報処理装置。
【請求項２２】
前記生成部は、
前記割当処理の後において、前記各セントロイドに割り当てられた前記割当ノードに基づいて、前記各セントロイドを更新する
ことを特徴とする請求項１〜２１のいずれか１項に記載の情報処理装置。
【請求項２３】
前記生成部は、
前記割当処理の後において、前記割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、前記未割当セントロイドに前記割当ノードとして割り当てる
ことを特徴とする請求項１〜２２のいずれか１項に記載の情報処理装置。
【請求項２４】
前記生成部は、
前記割当処理の後において、前記複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、前記未割当セントロイドの前記割当ノードとする
ことを特徴とする請求項２３に記載の情報処理装置。
【請求項２５】
前記生成部は、
前記割当処理により生成した前記クラスタリング情報が所定の終了条件を満たさない場合、２回目以降の前記割当処理による前記クラスタリング情報の生成を繰り返し、２回目以降の前記割当処理により生成した前記クラスタリング情報が前記所定の終了条件を満たす場合または前記割当処理の実行回数が所定の回数に達した場合、前記割当処理を終了する
ことを特徴とする請求項１〜２４のいずれか１項に記載の情報処理装置。
【請求項２６】
前記生成部は、
前記割当処理の実行回数が前記所定の回数に達したことにより前記割当処理を終了した場合、前記グラフの検索に関するパラメータ値を変更し、変更後の前記パラメータ値を用いて前記割当処理により前記クラスタリング情報を生成する
ことを特徴とする請求項２５に記載の情報処理装置。
【請求項２７】
前記生成部は、
前記グラフの検索範囲に関連する前記パラメータ値を変更する
ことを特徴とする請求項２６に記載の情報処理装置。
【請求項２８】
前記生成部は、
前記グラフの検索の拡張要素に関する前記パラメータ値を変更する
ことを特徴とする請求項２７に記載の情報処理装置。
【請求項２９】
前記生成部は、
前記グラフの検索の拡張要素に関する前記パラメータ値を増加する
ことを特徴とする請求項２８に記載の情報処理装置。
【請求項３０】
コンピュータが実行する情報処理方法であって、
データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する取得工程と、
前記複数のセントロイドの各々をクエリとして、前記グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する抽出工程と、
前記複数のセントロイドの各々に、対応する検索で抽出された前記近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、前記複数のセントロイドのいずれかに前記複数のノードの各々を割当ノードとして割り当てる割当処理により、前記複数のノードの各々を前記割当ノードとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成工程と、
を含むことを特徴とする情報処理方法。
【請求項３１】
データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する取得手順と、
前記複数のセントロイドの各々をクエリとして、前記グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する抽出手順と、
前記複数のセントロイドの各々に、対応する検索で抽出された前記近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、前記複数のセントロイドのいずれかに前記複数のノードの各々を割当ノードとして割り当てる割当処理により、前記複数のノードの各々を前記割当ノードとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、種々のクラスタリングに関する技術が提供されている。例えば、新たな特徴データが属するクラスタのセントロイド移動量を算出し、累積の移動量が閾値を超えている場合にのみ、近似近傍探索用インデックスを更新する技術が提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２１８８４７号公報
【特許文献２】特開２０１３−１８２３４１号公報
【特許文献３】特開２０１８−１０１２２５号公報
【特許文献４】特開２０１０−７９８７１号公報
【非特許文献】
【０００４】
【非特許文献１】岩崎雅二郎  "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索",  情報処理学会論文誌,  2011/2,  Vol.  52,  No.  2.  pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、効率的なクラスタリングを可能にすることが難しい場合がある。例えば、上記の従来技術では、インデックスの更新については考慮されているものの、最初に行うクラスタリング処理については特に考慮されていない。そのため、適切にクラスタリングが行われない場合がある。このように適切にクラスタリングが行われない場合、最初のクラスタリング処理やその後の更新等に要する時間や処理負荷が増大する等、効率的なクラスタリングを行うことが難しい場合がある。
【０００６】
本願は、上記に鑑みてなされたものであって、効率的なクラスタリングを可能にする情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する取得部と、前記複数のセントロイドの各々をクエリとして、前記グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する抽出部と、前記複数のセントロイドの各々に、対応する検索で抽出された前記近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、前記複数のセントロイドのいずれかに前記複数のノードの各々を割当ノードとして割り当てる割当処理により、前記複数のノードの各々を前記割当ノードとして前記複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する生成部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、効率的なクラスタリングを可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係る情報処理の一例を示す図である。
【図２】図２は、第１の実施形態に係る情報処理システムの構成例を示す図である。
【図３】図３は、第１の実施形態に係る情報処理装置の構成例を示す図である。
【図４】図４は、第１の実施形態に係るオブジェクト情報記憶部の一例を示す図である。
【図５】図５は、第１の実施形態に係る基準情報記憶部の一例を示す図である。
【図６】図６は、第１の実施形態に係る変更条件情報記憶部の一例を示す図である。
【図７】図７は、第１の実施形態に係るグラフデータ記憶部の一例を示す図である。
【図８】図８は、第１の実施形態に係る起点用情報記憶部の一例を示す図である。
【図９】図９は、第１の実施形態に係るセントロイド記憶部の一例を示す図である。
【図１０】図１０は、第１の実施形態に係るクラスタリング情報記憶部の一例を示す図である。
【図１１】図１１は、第１の実施形態に係る情報処理の一例を示すフローチャートである。
【図１２】図１２は、第１の実施形態に係る検索範囲を用いた情報処理の一例を示す図である。
【図１３】図１３は、未割当セントロイドに対するノードの割当処理の一例を示す図である。
【図１４】図１４は、第２の実施形態に係る情報処理の一例を示す図である。
【図１５】図１５は、第２の実施形態に係る情報処理装置の構成例を示す図である。
【図１６】図１６は、第２の実施形態に係る基準情報記憶部の一例を示す図である。
【図１７】図１７は、第２の実施形態に係る変更条件情報記憶部の一例を示す図である。
【図１８】図１８は、第２の実施形態に係るクラスタリング情報記憶部の一例を示す図である。
【図１９】図１９は、情報処理に用いる起点ノードを決定する起点用情報の一例を示す図である。
【図２０】図２０は、セントロイド用のインデックスの一例を示す図である。
【図２１】図２１は、グラフデータを用いた検索処理の一例を示すフローチャートである。
【図２２】図２２は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
（第１の実施形態）
〔１．情報処理〕
図１を用いて、第１の実施形態に係る情報処理の一例について説明する。図１は、第１の実施形態に係る情報処理の一例を示す図である。図１では、情報処理装置１００（図３参照）が所定の基準に基づいて生成した複数のセントロイドを用いて、データ検索の対象となる複数のオブジェクトをクラスタリングするための情報を生成する一例を示す。情報処理装置１００は、複数のオブジェクトをグラフ構造化したグラフインデックス情報（以下「グラフ」や「グラフ情報」や「グラフデータ」ともいう）を用いて複数のオブジェクトをクラスタリングするための情報を生成する。情報処理装置１００は、エッジによりオブジェクト（以下「ノード」ともいう）間を連結したグラフを用いて、各ノードを複数のセントロイドのいずれかに割当ノードとして割り当てた情報（以下「クラスタリング情報」ともいう）を生成する。すなわち、情報処理装置１００は、グラフを用いて、各ノードが複数のセントロイドのいずれかに割り当てられ、セントロイドに基づいてクラスタリングされたクラスタリング情報を生成する。
【００１２】
図１の例では、情報処理装置１００が、データ検索の対象（オブジェクト）がベクトル化された各ベクトルに対応する情報（ノード）を対象として、クラスタリング情報を生成する場合を示す。すなわち、図１の例では、情報処理装置１００がベクトルをノードに対応するノード値として処理を行う場合を示す。なお、情報処理装置１００が用いる情報は、ベクトルに限らず、各対象の類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、情報処理装置１００は、各対象に対応する所定のデータや値を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、情報処理装置１００は、各対象から生成された所定の数値（例えば２進数の値や１６進数の値）を用いて対象をグラフ構造化したグラフ情報を用いてもよい。例えば、ベクトルに代えて、データ間の距離（類似度）が定義されていれば任意の形態のデータであっても良い。また、以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
【００１３】
例えば、情報処理装置１００は、数百万〜数億等の単位の膨大な画像情報に対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。例えば、情報処理装置１００は、図１中の空間情報ＳＰ１１に示すように、ノードＮ１〜Ｎ１５等に示すような複数のノード（ベクトル）に関する情報を取得する。このように「ノードＮ＊（＊は任意の数値）」と記載した場合、そのノードはノードＩＤ「Ｎ＊」により識別されるノードであることを示す。例えば、「ノードＮ１」と記載した場合、そのノードはノードＩＤ「Ｎ１」により識別されるノードである。また、図１中のグラフＧＲ１１では、図示の関係上、ノードＮ１〜Ｎ１５のノードを図示して処理の概要を説明するが、ノードＮ１〜Ｎ１５以外にも多数のノードが含まれる。また、各ノードは、各オブジェクト（検索対象）に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。
【００１４】
図１の例では、情報処理装置１００は、ノードが無向エッジ（以下単に「エッジ」ともいう）により連結されたグラフＧＲ１１を用いて、情報処理を行う。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。また、図１の例では、図示の関係上、エッジＥ１〜Ｅ１６のノードを図示して処理の概要を説明するが、エッジＥ１〜Ｅ１６以外にも多数のエッジが含まれる。このように、図１中のグラフＧＲ１１では、エッジの一部のみを図示するが、例えばｋ近傍グラフ（k-nearest  neighbor  graph）であるものとする。なお、グラフＧＲ１１は、種々のグラフであってもよい。また、グラフのエッジは、無向エッジに限らず、有向エッジであってもよい。
【００１５】
また、このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ１」と記載した場合、そのエッジはエッジＩＤ「Ｅ１」により識別されるエッジである。例えば、ノードＮ１とノードＮ２とを連結するエッジＥ１により、ノードＮ１とノードＮ２との間を双方向に辿ることが可能となる。すなわち、エッジＥ１により、ノードＮ１からノードＮ２へ辿ることができ、かつエッジＥ１により、ノードＮ２からノードＮ１へ辿ることができる。
【００１６】
ここから、図１を用いてクラスタリング情報を生成する処理について詳述する。まず、情報処理装置１００は、データ検索の対象（オブジェクト）に各々対応する複数のノードがエッジにより連結されたグラフを取得する（ステップＳ１１）。図１の例では、情報処理装置１００は、空間情報ＳＰ１１−１に示すようにノードＮ１〜Ｎ１５等やエッジＥ１〜Ｅ１６等を含むグラフＧＲ１１を取得する。例えば、情報処理装置１００は、グラフデータ記憶部１２４（図７参照）からグラフＧＲ１１を取得する。なお、情報処理装置１００は、種々の従来技術を適宜用いてグラフＧＲ１１を生成してもよい。情報処理装置１００は、全データ（オブジェクト）がノードとなるように、グラフＧＲ１１を生成してもよい。例えば、情報処理装置１００は、各オブジェクトが少なくとも１つの他のオブジェクトと連結されることにより、全オブジェクトがノードとなるグラフＧＲ１１を生成してもよい。
【００１７】
図１の例では、空間情報ＳＰ１１中の２つのサイズの円形のうち、小さい方の円形「○」にノードＩＤを付すことにより各ノードを表現する。例えば、ノードＩＤ「Ｎ１３」により識別されるノード（ノードＮ１３）は、空間情報ＳＰ１１−１中の左上部の円形「○」として表現する。例えば、図１に示す例において、各ノードは、オブジェクトがＮ次元の実数値にベクトル化されたベクトルデータに対応する。また、図１に示す空間情報ＳＰ１１−１〜ＳＰ１１−５は、空間情報の一部を模式的に示す図であり、空間情報ＳＰ１１−１〜ＳＰ１１−５は、情報処理により生成される情報に対応する空間情報である。また、以下では、空間情報ＳＰ１１−１〜ＳＰ１１−５について、特に区別なく説明する場合には、空間情報ＳＰ１１と記載する。
【００１８】
なお、図１中の空間情報ＳＰ１１は、ユークリッド空間であってもよい。また、図１に示す空間情報ＳＰ１１は、各ノード間の距離等の説明のための概念的な図である。なお、例えば、図１に示す空間情報ＳＰ１１は、平面上に図示するため２次元の態様にて図示されるが、具体的には、例えば数次元〜数万次元等の多次元空間であるものとする。
【００１９】
本実施形態においては、空間情報ＳＰ１１における各ノードの距離を対応する各オブジェクト（例えば画像等）間の類似度とする。ここで、図１に示す例においては、空間情報ＳＰ１１における各ノード間の距離が小さいオブジェクト同士の類似度が高く、空間情報ＳＰ１１における各ノード間の距離が大きいオブジェクト同士の類似度が低い。例えば、図１中の空間情報ＳＰ１１において、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）と、ノードＩＤ「Ｎ２」により識別されるノード（ノードＮ２）とは近接している、すなわち距離が小さい。そのため、ノードＮ１に対応するオブジェクトと、ノードＮ２に対応するオブジェクトとは類似度が高いことを示す。また、例えば、図１中の空間情報ＳＰ１１において、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）と、ノードＩＤ「Ｎ１５」により識別されるノード（ノードＮ１５）とは遠隔にある、すなわち距離が大きい。そのため、ノードＮ１に対応するオブジェクトと、ノードＮ１５に対応するオブジェクトとは類似度が低いことを示す。なお、類似度を示す指標は、本願の情報処理に適用可能であれば、どのような指標であってもよく、距離や向き等を対象とする指標であってもよい。例えば、類似度を示す指標は、本願の情報処理に適用可能であれば、ユークリッド距離やマハラノビス距離等の種々の指標が用いられてもよい。例えば、距離は、２つのオブジェクト間の類似度を反映するものであれば、どのような情報であってもよく、例えばコサイン類似度等の角度に関する情報であってもよい。
【００２０】
その後、情報処理装置１００は、セントロイド情報（以下単に「セントロイド」ともいう）を生成する（ステップＳ１２）。例えば、情報処理装置１００は、所定の基準に基づいて複数のセントロイドを生成する。情報処理装置１００は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、情報処理装置１００は、データ検索の対象数（オブジェクト数）に基づいて決定される所定数のセントロイドを生成する。情報処理装置１００は、種々の情報を用いてセントロイドの数を決定してもよい。例えば、情報処理装置１００は、データ検索の対象数（オブジェクト数）が「５００万」である場合、「５万（＝５００万／１００）」のセントロイドを生成する。なお、上記は一例であり、情報処理装置１００は、種々の情報に基づいて、所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、ｋ−ｍｅａｎｓ法やｋ−ｍｅａｎｓ＋＋等の種々の従来技術を適宜用いて、所定数のセントロイドを生成してもよい。
【００２１】
例えば、情報処理装置１００は、所定数のセントロイドをランダムに生成してもよい。また、情報処理装置１００は、各セントロイド間の距離が遠くなるように所定数のセントロイドをランダムに生成してもよい。例えば、情報処理装置１００は、任意のセントロイドを初期のセントロイドとして生成し、その後はセントロイドの数が所定数に達するまで、生成済みのセントロイドからの平均距離が最も遠い位置（ベクトル）に対応するセントロイドを生成する処理を繰り返す。なお、上記は一例であり、情報処理装置１００は、種々の方法により、所定数のセントロイドを生成してもよい。
【００２２】
情報処理装置１００は、ノードＮ１〜Ｎ１５等から、セントロイドとするノードを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、ノードＮ１〜Ｎ１５等から、所定数のノードを選択することにより所定数のセントロイドを生成してもよい。例えば、情報処理装置１００は、ノードＮ１〜Ｎ１５等から、セントロイドとして利用するノードを選択し、選択したノードのベクトルを自身のベクトルとするセントロイドを生成することにより、所定数のセントロイドを生成してもよい。情報処理装置１００は、上記のノードＮ１〜Ｎ１５等からの選択により、セントロイドＣ１〜Ｃ３等を含む複数のセントロイドを生成してもよい。
【００２３】
図１の例では、情報処理装置１００は、所定数のセントロイドをランダムに生成するものとする。これにより、情報処理装置１００は、図１中の空間情報ＳＰ１１−２に示すように、セントロイドＣ１〜Ｃ３等を含む複数のセントロイドを生成する。このように、「セントロイドＣ＊（＊は任意の数値）」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ＊」により識別されるセントロイドであることを示す。例えば、「セントロイドＣ１」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ１」により識別されるセントロイド（ベクトル）である。図１の例では、説明を簡単にするためにセントロイドＣ１〜Ｃ３のみを図示するが、情報処理装置１００は、データ検索の対象数（ノード数）に基づいて、セントロイドＣ１〜Ｃ３を含む多数のセントロイドを生成してもよい。
【００２４】
また、図１の空間情報ＳＰ１１中では、適宜「セントロイドＣ＊（＊は任意の数値）」の図示を省略し、空間情報ＳＰ１１中の２つのサイズの円形のうち、大きい方の円形「○」内に「セントロイドＣ＊」の「＊」の値を付すことにより、各セントロイドを表現する。すなわち、「セントロイドＣ＊」の部分の「＊」が一致するセントロイドに対応する。例えば、空間情報ＳＰ１１−２中の左上の「○」であって、内部に「１」が付された「○」は、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応する。例えば、図１に示す例において、各セントロイドに対応するベクトルデータは、Ｎ次元の実数値ベクトルであってもよい。空間情報ＳＰ１１において、セントロイドとの間の距離が近いノードが、そのセントロイドとベクトルが類似し、そのセントロイドの近傍に位置するノードであることを示す。
【００２５】
そして、情報処理装置１００は、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。情報処理装置１００は、セントロイドＣ１の近傍ノードを検索する（ステップＳ１３）。情報処理装置１００は、セントロイドＣ１をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ１の近傍ノードを検索し、抽出する。図１の例では、情報処理装置１００は、検索数「４」である基準ＣＲ１１に基づいて、セントロイドＣ１の近傍ノードを検索する。この場合、情報処理装置１００は、基準ＣＲ１１が示す検索数「４」に対応する４個のノードを、セントロイドＣ１の近傍ノードとして抽出する。
【００２６】
なお、検索数は「４」に限らず、「３０」、「１００」等の種々の値であってもよい。例えば、情報処理装置１００は、種々の情報を適宜用いて、検索数を決定してもよい。例えば、情報処理装置１００は、全ノード数をセントロイド数で除した値（第１値）を用いて、検索数を決定してもよい。例えば、情報処理装置１００は、第１値に所定の値（第２値）を乗算することにより、検索数を決定してもよい。例えば、情報処理装置１００は、全ノード数が「１０万」であり、セントロイド数が「２００」であり、第２値が「２」である場合、検索数を「１０００（＝１０万／２００＊２）」と算出してもよい。
【００２７】
例えば、情報処理装置１００は、グラフＧＲ１１の検索時においては、グラフＧＲ１１の検索の開始位置（起点）を所定の起点用情報（以下「起点用インデックス」ともいう）を用いて決定したノード（以下「起点ノード」ともいう）からスタートしてもよい。また、例えば、情報処理装置１００がグラフＧＲ１１を用いて検索を行う場合、予め決定された起点ノードやランダムに決定した起点ノードを起点として検索を行ってもよい。例えば、情報処理装置１００は、起点ノードがノードＮ１である場合、ノードＮ１からエッジを辿ることにより、検索数「４」に対応する４個のノードＮ１〜Ｎ４等を検索してもよい。なお、情報処理装置１００は図２１に示すような処理手順により近傍ノードの探索（検索）を行ってもよいが、詳細は後述する。
【００２８】
図１の例では、情報処理装置１００は、空間情報ＳＰ１１−３に示すように、セントロイドＣ１の近傍ノードとして、ノードＮ１〜Ｎ４の４個のノードを抽出する。情報処理装置１００は、セントロイドＣ１に、ノードＮ１〜Ｎ４、及びセントロイドＣ１とノードＮ１〜Ｎ４との間の距離を対応付けた情報（以下「対応付情報」ともいう）を、近傍ノード一覧ＳＬ１−１に追加することにより、近傍ノード一覧ＳＬ１−１を生成する。以下では、近傍ノード一覧ＳＬ１−１、ＳＬ１−２について、特に区別なく説明する場合には、近傍ノード一覧ＳＬ１と記載する。情報処理装置１００は、近傍ノード一覧ＳＬ１に対応する対応付情報等の近傍ノード群情報を記憶部１２０（図３参照）に記憶してもよい。例えば、近傍ノード群情報とは、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む情報である。
【００２９】
図１の例では、情報処理装置１００は、ノードＮ１がセントロイドＣ１の近傍ノードであり、セントロイドＣ１とノードＮ１との間の距離が距離Ｄ１−１であることを示す情報（対応付情報）を生成し、近傍ノード一覧ＳＬ１に追加する。また、情報処理装置１００は、ノードＮ２〜Ｎ４がセントロイドＣ１の近傍ノードであり、セントロイドＣ１とノードＮ２〜Ｎ４の各々との間の距離が距離Ｄ１−２〜Ｄ１−４であることを示す対応付情報を生成し、近傍ノード一覧ＳＬ１に追加する。情報処理装置１００は、セントロイドをクエリとする近傍ノードの検索結果を近傍ノード一覧ＳＬ１に追加する。なお、距離Ｄ１−１〜Ｄ１−４は、その数が大小を示すものではなく、対応するセントロイドとノードとの間の具体的な数値であるものとする。
【００３０】
情報処理装置１００は、近傍ノード一覧ＳＬ１に距離が短い方から順に各対応付情報を並べて格納する。情報処理装置１００は、近傍ノード一覧ＳＬ１中に含まれる各対応付情報を距離が短い方から順にソートする。図１の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１中に含まれる各対応付情報が距離の短い方から順に上から下に並ぶようにソートする。例えば、近傍ノード一覧ＳＬ１は配列であってもよい。なお、情報処理装置１００は、各対応付情報が距離順に参照可能であれば、どのようにソートを行ってもよく、例えば順番を示す情報（フラグ）を付したり、連結リストを生成したりすることにより、対応付情報を距離が短い方から順にソートする処理を実現してもよい。図１の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−１に示すように、セントロイドＣ１とノードＮ１との間の距離Ｄ１−１が最も短く、セントロイドＣ１とノードＮ２との間の距離Ｄ１−２が２番目に短く、距離Ｄ１−３、距離Ｄ１−４と距離が大きくなることを示す。
【００３１】
なお、空間情報ＳＰ１１−３において、セントロイドＣ１の近傍ノードとして、ノードＮ１〜Ｎ４が抽出されたことを、セントロイドＣ１とノードＮ１〜Ｎ４を点線でつなぐことにより示す。空間情報ＳＰ１１−３に示す範囲ＡＲ１は、セントロイドＣ１の近傍ノードのうち、セントロイドＣ１から最も遠い（最遠の）ノードとセントロイドＣ１との間の距離を半径とし、セントロイドＣ１を中心とする超球（図では円）を模式的に示す。図１では、範囲ＡＲ１は、セントロイドＣ１を中心とし、セントロイドＣ１とノードＮ４との間の距離Ｄ１−４を半径とする円を示す。
【００３２】
そして、情報処理装置１００は、セントロイドＣ２、Ｃ３等の近傍ノードを検索する（ステップＳ１４）。情報処理装置１００は、セントロイドＣ２をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ２の近傍ノードを検索し、抽出する。図１の例では、情報処理装置１００は、検索数「４」である基準ＣＲ１１に基づいて、セントロイドＣ２の近傍ノードを検索する。この場合、情報処理装置１００は、基準ＣＲ１１が示す検索数「４」に対応する４個のノードを、セントロイドＣ２の近傍ノードとして抽出する。
【００３３】
図１の例では、情報処理装置１００は、空間情報ＳＰ１１−４に示すように、セントロイドＣ２の近傍ノードとして、ノードＮ３、Ｎ５〜Ｎ７の４個のノードを抽出する。情報処理装置１００は、近傍ノード一覧ＳＬ１−２に示すように、セントロイドＣ２に、ノードＮ３、Ｎ５〜Ｎ７、及びセントロイドＣ２とノードＮ３、Ｎ５〜Ｎ７との間の距離を対応付けた情報を生成する。図１の例では、情報処理装置１００は、ノードＮ３がセントロイドＣ２の近傍ノードであり、セントロイドＣ２とノードＮ３との間の距離が距離Ｄ２−３であることを示す情報を生成する。また、情報処理装置１００は、ノードＮ５〜Ｎ７がセントロイドＣ２の近傍ノードであり、セントロイドＣ２とノードＮ５〜Ｎ７の各々との間の距離が距離Ｄ２−５〜Ｄ２−７であることを示す情報を生成する。
【００３４】
また、図１の例では、情報処理装置１００は、空間情報ＳＰ１１−４に示すように、セントロイドＣ３の近傍ノードとして、ノードＮ８〜Ｎ１１の４個のノードを抽出する。情報処理装置１００は、近傍ノード一覧ＳＬ１−２に示すように、セントロイドＣ３に、ノードＮ８〜Ｎ１１、及びセントロイドＣ３とノードＮ８〜Ｎ１１との間の距離を対応付けた情報を生成する。図１の例では、情報処理装置１００は、ノードＮ８がセントロイドＣ３の近傍ノードであり、セントロイドＣ３とノードＮ８との間の距離が距離Ｄ３−８であることを示す情報を生成する。また、情報処理装置１００は、ノードＮ８〜Ｎ１１がセントロイドＣ３の近傍ノードであり、セントロイドＣ３とノードＮ８〜Ｎ１１の各々との間の距離が距離Ｄ３−９〜Ｄ３−１１であることを示す情報を生成する。
【００３５】
情報処理装置１００は、近傍ノード一覧ＳＬ１−２に示すように、各セントロイドＣ１〜Ｃ３等と近傍ノードとの対応付情報を距離順に並べる。情報処理装置１００は、各セントロイドＣ１〜Ｃ３等と近傍ノードとの各対応付情報の距離を比較することにより、各対応付情報を距離順に並べる。図１の例では、情報処理装置１００は、セントロイドＣ３とノードＮ９との間の距離Ｄ３−９が最も短いため、セントロイドＣ３とノードＮ９との対応付情報を先頭にして近傍ノード一覧ＳＬ１−２に並べる。情報処理装置１００は、セントロイドＣ３とノードＮ８との間の距離Ｄ３−８が２番目に短いため、セントロイドＣ３とノードＮ９との対応付情報を近傍ノード一覧ＳＬ１−２の２番目に並べる。このように、情報処理装置１００は、各セントロイドＣ１〜Ｃ３等と近傍ノードとの対応付情報を距離順に並べた近傍ノード一覧ＳＬ１−２を生成する。
【００３６】
なお、空間情報ＳＰ１１−４において、セントロイドＣ２の近傍ノードとして、ノードＮ３、Ｎ５〜Ｎ７が抽出されたことを、セントロイドＣ２とノードＮ３、Ｎ５〜Ｎ７を点線でつなぐことにより示す。空間情報ＳＰ１１−４に示す範囲ＡＲ２は、セントロイドＣ２の近傍ノードのうち、セントロイドＣ２から最も遠い（最遠の）ノードとセントロイドＣ２との間の距離を半径とし、セントロイドＣ２を中心とする超球（図では円）を模式的に示す。図１では、範囲ＡＲ２は、セントロイドＣ２を中心とし、セントロイドＣ２とノードＮ７との間の距離Ｄ２−７を半径とする円を示す。また、図１では、範囲ＡＲ３は、セントロイドＣ３を中心とし、セントロイドＣ３とノードＮ１１との間の距離Ｄ３−１１を半径とする円を示す。
【００３７】
そして、情報処理装置１００は、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う（ステップＳ１５）。図１の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−２に含まれるノードＮ１〜Ｎ１１を第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。情報処理装置１００は、近傍ノード一覧ＳＬ１−２に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。図１の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の先頭に位置する対応付情報に対応するセントロイドＣ３にノードＮ９を割当ノードとして割り当てる。
【００３８】
なお、空間情報ＳＰ１１−５において、各セントロイドに割り当てられた割当ノードは、セントロイドとノードとの間を実線でつなぐことにより示す。そのため、空間情報ＳＰ１１−５においては、グラフＧＲ１１のエッジの情報の図示を省略する。空間情報ＳＰ１１−５は、セントロイドＣ３とノードＮ９が実線でつながれており、ノードＮ９がセントロイドＣ３の割当ノードであることを示す。
【００３９】
また、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の２番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ８を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の３番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ１０を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の４番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ１を割当ノードとして割り当てる。このように、情報処理装置１００は、近傍ノード一覧ＳＬ１−２に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、図１中のクラスタリング情報記憶部１２７に示すようなクラスタリング情報を生成する。
【００４０】
ここで、情報処理装置１００は、上記のように、取得した全セントロイドのデータ（近傍ノード）を距離の短い順にソートし、短い順にセントロイドに割り当てる。その際、情報処理装置１００は、同一のデータが出現したら、割当てをスキップする。このように、情報処理装置１００は、既に割当ノードとしてセントロイドに割り当てられたノードが対象となった場合、割り当て処理を行わない。
【００４１】
図１の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の７番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ３を割当ノードとして割り当てる。その後、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の８〜１０番目に位置する対応付情報を対象として処理を行った後、近傍ノード一覧ＳＬ１−２の１１番目に位置する対応付情報を対象として処理を行う。近傍ノード一覧ＳＬ１−２の１１番目に位置する対応付情報のノードはノードＮ３であり、ノードＮ３は既にセントロイドＣ１の割当ノードとして割り当てられている。そのため、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の１１番目に位置する対応付情報のセントロイドＣ２に、ノードＮ３を割り当てない。そして、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の１２番目に位置する対応付情報に対応するセントロイドＣ２にノードＮ７を割当ノードとして割り当てる。
【００４２】
例えば、情報処理装置１００は、既に割当済みのノードの一覧情報（割当済み一覧情報）を記憶部（図３参照）に記憶し、割当済み一覧情報を用いて、判定してもよい。情報処理装置１００は、セントロイドにノードを割り当てる際に割当済み一覧情報にそのノードが含まれる場合、割当て処理を行わない。例えば、情報処理装置１００は、クラスタリング情報記憶部１２７を参照することにより、既に割当済みのノードかどうかを判定してもよい。なお、情報処理装置１００は、１個のノードが複数のセントロイドに重複して割り当てられなければ、どのような処理により、各ノードをいずれか１個のセントロイドに割り当てる処理を実現してもよい。
【００４３】
そして、情報処理装置１００は、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う（ステップＳ１６）。図１の例では、情報処理装置１００は、第１割当処理によりセントロイドに割り当てられなかったノードＮ１２〜Ｎ１５を第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。
【００４４】
例えば、情報処理装置１００は、セントロイドに未割当てのノードであるノードＮ１２〜Ｎ１５を、セントロイドＣ１〜Ｃ３等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置１００は、ノードＮ１２と、セントロイドＣ１〜Ｃ３との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図１の例では、情報処理装置１００は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１２との距離が最も近いセントロイドＣ２に、ノードＮ１２を割当ノードとして割り当てる。また、情報処理装置１００は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１３との距離が最も近いセントロイドＣ１に、ノードＮ１３を割当ノードとして割り当てる。このように、情報処理装置１００は、第２対象ノードであるノードＮ１２〜Ｎ１５等をセントロイドに割り当てることにより、図１中のクラスタリング情報記憶部１２７に示すようなクラスタリング情報を生成する。
【００４５】
上述したように、情報処理装置１００は、グラフＧＲ１１を用いることにより、ノードＮ１〜Ｎ１５等をセントロイドＣ１〜Ｃ３等のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置１００は、各セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索し、検索数を基準として各セントロイドＣ１〜Ｃ３等の近傍ノードを抽出し、抽出した近傍ノードに基づいて、各ノードＮ１〜Ｎ１５等が属するクラスタを適切に決定することができる。例えば、情報処理装置１００は、各セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索することにより、各セントロイドと各ノードとの類似度（距離）を比較することなく、セントロイドに割当ノードを割り当てることができる。したがって、情報処理装置１００は、各セントロイドと各ノードとの類似度（距離）を比較する場合に比べて、より高速に各ノードをクラスタリングすることができる。すなわち、情報処理装置１００は、複数のオブジェクト（ノード）をグラフ構造化したグラフインデックス（グラフ情報）を用いることにより、効率的なクラスタリングを可能にすることができる。
【００４６】
〔１−１．更新処理（繰り返し処理）〕
図１では、情報処理装置１００がセントロイドを生成し、各セントロイドにノードを割り当てる最初の割当処理を示したが、情報処理装置１００は、割当処理後において、各セントロイドに割り当てられたノードに基づいて、セントロイドを更新し、更新後のセントロイドを用いて２回目以降の割当処理（以下「更新処理」ともいう）を繰り返す。この点について、以下説明する。
【００４７】
情報処理装置１００は、各セントロイドの空間情報ＳＰ１１における位置を割当ノードに応じて更新する。情報処理装置１００は、セントロイドに割り当てられたデータ（ノード）を基にセントロイドを再計算する。情報処理装置１００は、セントロイドに割り当てられたデータ（ノード）の平均を基にセントロイドを更新する。
【００４８】
情報処理装置１００は、各セントロイドのベクトルを割当ノードのベクトルに応じて更新する。例えば、情報処理装置１００は、一のセントロイドに割り当てられた複数データ（割当ノード）の中央座標（重心）を一のセントロイドの座標（セントロイド値）としてもよい。例えば、情報処理装置１００は、一のセントロイドの割当ノードに対応するベクトルの平均値を、一のセントロイドのベクトルとして生成する。
【００４９】
例えば、情報処理装置１００は、セントロイドＣ１にノードＮ１〜Ｎ４、Ｎ１３等が割当ノードとして割り当てられたため、セントロイドＣ１の割当ノードに応じて、セントロイドＣ１を更新する。このように、情報処理装置１００は、セントロイドの割当ノードに応じて、セントロイドを更新する。例えば、情報処理装置１００は、あるセントロイドの割当ノードに変更があった場合、変更後の割当ノードに基づいて、セントロイドを更新後セントロイドに更新する。
【００５０】
例えば、情報処理装置１００は、セントロイドＣ１のベクトルを、ノードＮ１〜Ｎ４、Ｎ１３等のベクトルに応じて変更することにより、セントロイドＣ１を更新する。この場合、例えば、図１の空間情報ＳＰ１１−５中に示すセントロイドＣ１の位置は、ノードＮ１〜Ｎ４、Ｎ１３等の中央座標に更新される。
【００５１】
また、例えば、情報処理装置１００は、セントロイドＣ２のベクトルを、ノードＮ５〜Ｎ７、Ｎ１２等のベクトルに応じて変更することにより、セントロイドＣ２を更新する。この場合、例えば、図１の空間情報ＳＰ１１−５中に示すセントロイドＣ２の位置は、ノードＮ５〜Ｎ７、Ｎ１２等の中央座標に更新される。
【００５２】
また、例えば、情報処理装置１００は、セントロイドＣ３のベクトルを、ノードＮ８〜Ｎ１１、Ｎ１４等のベクトルに応じて変更することにより、セントロイドＣ３を更新する。この場合、例えば、図１の空間情報ＳＰ１１−５中に示すセントロイドＣ３の位置は、ノードＮ８〜Ｎ１１、Ｎ１４等の中央座標に更新される。
【００５３】
そして、情報処理装置１００は、更新後のセントロイドＣ１〜Ｃ３等を用いて、再度割当て処理を繰り返してもよい。例えば、情報処理装置１００は、セントロイドＣ１〜Ｃ３等の更新後において、セントロイドＣ１〜Ｃ３等へのノードの割当てを再度行うことにより、クラスタリング情報を再生成してもよい。
【００５４】
情報処理装置１００は、所定の終了条件を満たすまで、割当処理（更新処理）を繰り返してもよい。この場合、情報処理装置１００は、所定の終了条件に基づいて、更新処理の繰り返しの終了を判定してもよい。例えば、所定の終了条件は、ｋ−ｍｅａｎｓ法と同一であってもよい。ここでいう所定の終了条件は、例えば、セントロイドの座標の変化がなくなることや、変化量が一定量以下になることや、量子化誤差が一定量以下になること等、種々の条件であってもよい。情報処理装置１００は、所定の終了条件を満たすまで、更新処理を繰り返す。例えば、情報処理装置１００は、割当ノードの変更が無くなるまで、上記のような更新処理を繰り返し実行してもよい。また、情報処理装置１００は、所定の終了条件を満たすまで、割当処理（更新処理）の回数が所定の閾値（例えば１００回や５０００回等）に達した場合、処理を終了してもよい。
【００５５】
上述したように、情報処理装置１００は、割当処理後においてセントロイドを更新し、更新したセントロイドを用いて、再度割当処理（更新処理）を行うことにより、効率的にクラスタリング情報を生成することができる。なお、情報処理装置１００は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。この場合、情報処理装置１００は、グラフの検索範囲に関連するパラメータ値である拡張要素「ε」（図２１参照）を変更する。具体的には、情報処理装置１００は、拡張要素「ε」を増加する。そして、情報処理装置１００は、所定の終了条件を満たすまで、増加後の拡張要素「ε」を用いて割当処理（更新処理）を繰り返す。例えば、検索精度が低い場合には結果が収束しない場合がある。一方で、検索精度を高くすると処理に時間を要することにつながる。ここで、拡張要素「ε」は検索精度を決定する要素となる。そこで、情報処理装置１００は、まず小さい値の拡張要素「ε」を用いて割当処理を行う。この場合、精度が低いことから、収束しないので割当処理の実行回数が所定の回数に達する場合が多い。そこで、情報処理装置１００は、拡張要素「ε」の値を増加させ再度割当処理を実行する。そして、情報処理装置１００は、拡張要素「ε」の増加後の割当処理の実行回数が所定の回数に到達する前に、収束する（すなわち所定の終了条件を満たす）まで、拡張要素「ε」の増加し、割当処理を実行することを繰り返します。これにより、情報処理装置１００は、所定の回数が少なく設定することができるため、全体の処理時間の増大を抑制することができます。したがって、情報処理装置１００は、効率的にクラスタリング情報を生成することができる。
【００５６】
〔１−２．基準〕
図１の例では、クラスタリング情報の生成処理における基準として、近傍ノード検索時の検索数を用いる場合を示したが、情報処理装置１００は、検索数に限らず、種々の基準を用いてクラスタリング情報の生成処理を行ってもよい。例えば、情報処理装置１００は、有効半径等を示す検索範囲数を基準に用いてもよいが、この点についての詳細は後述する。
【００５７】
また、情報処理装置１００は、変更条件を満たすかどうかに応じて、基準を変更してもよい。情報処理装置１００は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、基準を変更してもよい。情報処理装置１００は、全ノードに占める近傍ノードの割合であるスコア（近傍ノード割合）と、所定の閾値（例えば閾値ＴＨ１２）との比較に基づいて、基準ＣＲ１１である検索数を変更内容ＡＩＮＦ１２に応じて、変更してもよい。例えば、情報処理装置１００は、近傍ノード割合が、閾値ＴＨ１２未満である場合、変更内容ＡＩＮＦ１２である「２５％増加」に応じて、基準ＣＲ１１である検索数「４」を「５（＝４＋４＊０．２５）」に減少させて、更新後の検索数を用いて、割当処理を繰り返してもよい。なお、変更内容ＡＩＮＦ１２は、割合を示す情報に限らず、例えば「２増加」や「−４」などであってもよい。
【００５８】
また、情報処理装置１００は、抽出された近傍ノードの数であるスコア（近傍ノード数）と、所定の閾値（例えば閾値ＴＨ１１）との比較に基づいて、基準ＣＲ１１である検索数を変更内容ＡＩＮＦ１１に応じて、変更してもよい。例えば、情報処理装置１００は、近傍ノード数が、閾値ＴＨ１１以上である場合、変更内容ＡＩＮＦ１１である「２５％減少」に応じて、基準ＣＲ１１である検索数「４」を「３（＝４−４＊０．２５）」に減少させて、更新後の検索数を用いて、割当処理を繰り返してもよい。なお、変更内容ＡＩＮＦ１１は、割合を示す情報に限らず、例えば「１減少」や「−３」などであってもよい。
【００５９】
〔１−３．処理スキップ〕
また、情報処理装置１００は、所定の条件を満たす場合、セントロイドへのノードの割当て処理を行うことなく、更新した基準を用いて、再度割当処理を行ってもよい。情報処理装置１００は、変更条件を満たした基準が変更された場合、ノードの割当てを行うことなく、更新した基準を用いて、再度割当処理を行ってもよい。この場合、情報処理装置１００は、変更条件を満たすかどうかの判定を、近傍ノード抽出後であり、割当ノードを決定前に行ってもよい。図１の例では、情報処理装置１００は、変更条件を満たすかどうかの判定を、ステップＳ１４の後、ステップＳ１５の前に行ってもよい。そして、情報処理装置１００は、変更条件を満たした基準ＣＲ１１が変更された場合、ステップＳ１３に戻って、更新された基準ＣＲ１１を用いて、処理を繰り返してもよい。
【００６０】
なお、情報処理装置１００は、変更条件を満たした基準ＣＲ１１を変更する場合があっても、変更前の基準ＣＲ１１でステップＳ１５、Ｓ１６の処理を行ってもよい。そして、情報処理装置１００は、ステップＳ１６の終了後に基準ＣＲ１１を更新し、ステップＳ１３に戻って、更新された基準ＣＲ１１を用いて、処理を繰り返してもよい。なお、処理をスキップするかどうかの条件は、基準の変更条件とは別に設定されてもよい。
【００６１】
また、情報処理装置１００は、第２割当処理の対象ノード（第２割当処理対象）の数が所定の閾値以上である場合、検索数を増加させてもよい。例えば、情報処理装置１００は、第２割当処理対象数が所定数以上である場合、検索数を増加させ、セントロイドへのノードの割当て処理を行うことなく、更新した検索数を用いて、再度割当処理を行ってもよい。例えば、情報処理装置１００は、全ノードに占める第２割当処理対象の割合が所定の閾値（例えば５０％等）以上である場合、検索数を増加させ、セントロイドへのノードの割当て処理を行うことなく、更新した検索数を用いて、再度割当処理を行ってもよい。
【００６２】
〔１−４．変更条件〕
情報処理装置１００は、種々の変更条件を用いてもよい。例えば、情報処理装置１００は、第２割当処理対象数に基づく変更条件を用いてもよい。また、情報処理装置１００は、第２割当処理対象数が所定の閾値以下である場合、検索数を減少させてもよい。例えば、情報処理装置１００は、第２割当処理対象数が０個、すなわち第１割当処理により全ノードがセントロイドに割り当てられた場合、検索数を所定割合（例えば２０％や５０％等）や所定数（例えば２、５等）だけ減少させてもよい。
【００６３】
〔１−５．起点用情報〕
例えば、情報処理装置１００は、図１９に示すようなツリー構造（木構造）に関する起点用情報ＩＮＤ１１を起点用情報（起点用インデックス）として用いてもよい。図１９は、情報処理に用いる起点ノードを決定する起点用情報の一例を示す図である。例えば、起点用情報ＩＮＤ１１は、グラフＧＲ１１中のノードに到達可能なツリー構造を有するインデックスである。図１９の例では説明を簡単にするために、起点用情報ＩＮＤ１１は、ノードＮ１〜Ｎ５の５個のノードに到達するルートのみを図示するが、多数（例えば５００や１０００等）の他のノードへ到達するルートが含まれてもよい。例えば、起点用情報ＩＮＤ１１は、グラフＧＲ１１中の全ノードに到達可能であってもよい。
【００６４】
なお、起点用情報ＩＮＤ１１のような起点用情報は、情報処理装置１００が生成してもよいし、情報処理装置１００は、起点用情報を情報提供装置５０等の他の外部装置から取得してもよい。例えば、情報処理装置１００は、起点用情報を生成する場合は、木構造に関する種々の従来技術を適宜用いて、グラフ（例えばグラフＧＲ１１）に含まれるノードをリーフとする木構造の起点用情報（例えば起点用情報ＩＮＤ１１）を生成する。上記のように、情報処理装置１００は、木構造に関する種々の従来技術を適宜用いて、起点用情報記憶部１２５（図８参照）に記憶された起点用情報ＩＮＤ１１のような、起点用インデックスを生成する。
【００６５】
また、情報処理装置１００は、他の外部装置から起点用情報を取得する場合は、他の外部装置へグラフを提供する。そして、情報処理装置１００は、グラフを受信した他の外部装置が生成した起点用情報を、他の外部装置から取得する。例えば、情報処理装置１００は、情報提供装置５０から起点用情報ＩＮＤ１１を取得する場合は、情報提供装置５０へグラフＧＲ１１を送信する。そして、情報処理装置１００は、グラフＧＲ１１を受信した情報提供装置５０が生成した起点用情報ＩＮＤ１１を、情報提供装置５０から取得する。例えば、情報処理装置１００は、新たに追加されたノード（追加ノード）がある場合、起点用情報ＩＮＤ１１と追加ノードに関する情報とを情報提供装置５０へ提供することにより、情報提供装置５０から追加ノードにより更新された起点用情報ＩＮＤ１１を取得してもよい。なお、上記は一例であり、情報提供装置５０は、起点用情報ＩＮＤ１１を取得可能であれば、どのような手段により起点用情報ＩＮＤ１１を取得してもよい。
【００６６】
また、情報処理装置１００は、図１９中のインデックス情報群ＧＩＮＦ１１に示すような起点用情報ＩＮＤ１１を用いて起点ノードを決定してもよい。図１９の例では、情報処理装置１００は、起点用情報ＩＮＤ１１に基づいて、クエリＱＥ１に対応する起点ノードを決定する。クエリＱＥ１は、クエリとするセントロイドやグラフＧＲ１１を用いた検索を行う対象等であってもよい。すなわち、情報処理装置１００は、クラスタリング情報生成時や検索時において、起点用情報ＩＮＤ１１を用いて、起点ノードを決定する。
【００６７】
具体的には、情報処理装置１００は、起点用情報記憶部１２５（図８参照）に記憶された起点用情報ＩＮＤ１１を用いて、起点ノードを決定する。図１９中の起点用情報ＩＮＤ１１は、図８中の起点用情報記憶部１２５に示す階層構造を有する。例えば、起点用情報ＩＮＤ１１は、ルートＲＴの直下に位置する第１階層のノード（ベクトル）が、節点ＶＴ１、ＶＴ２、ＶＴ３等であることを示す。また、例えば、起点用情報ＩＮＤ１１は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４（図示せず）であることを示す。例えば、起点用情報ＩＮＤ１１は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、Ｎ２、すなわちグラフＧＲ１１中のノード（ベクトル）であることを示す。また、起点用情報ＩＮＤ１１は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、Ｎ４、Ｎ５、すなわちグラフＧＲ１１中のノード（ベクトル）であることを示す。
【００６８】
例えば、情報処理装置１００は、図１中の起点用情報ＩＮＤ１１に示すような木構造型の起点用インデックス情報を用いて、グラフＧＲ１１における起点ノードを決定する。図１の例では、情報処理装置１００は、クエリＱＥ１に基づいて、起点用情報ＩＮＤ１１を上（ルートＲＴ）から下へ辿ることにより、起点用情報ＩＮＤ１１の近傍候補となる起点ノードを決定（特定）する。これにより、情報処理装置１００は、効率的に検索クエリ（クエリＱＥ１）に対応する起点ノードを決定することができる。例えば、情報処理装置１００は、追加ノードであるクエリＱＥ１に対応する適切な起点ノードを高速に決定することができる。
【００６９】
なお、情報処理装置１００は、上記に限らず、種々の起点用インデックスを用いてもよい。すなわち、図１９の例に示す起点用情報（起点用インデックス）は一例であり、情報処理装置１００は、種々の起点用情報を用いて、グラフ情報を検索してもよい。情報処理装置１００は、検索時の起点ノードの決定に用いる起点用インデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルを高速に検索するための検索インデックス（起点用情報）を生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００７０】
例えば、情報処理装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスを起点用インデックスとして生成してもよい。例えば、情報処理装置１００は、ＶＰ木（Vantage-Point  tree）に関する検索インデックスを起点用インデックスとして生成してもよい。
【００７１】
また、例えば、情報処理装置１００は、その他の木構造を有するインデックスを、起点用インデックスとして生成してもよい。例えば、情報処理装置１００は、木構造の起点用インデックスのリーフがグラフに接続する種々の起点用インデックスを生成してもよい。例えば、情報処理装置１００は、木構造の起点用インデックスのリーフがグラフ中のノードに対応する種々の起点用インデックスを生成してもよい。また、情報処理装置１００は、このような起点用インデックスを用いて検索を行う場合、起点用インデックスを辿って到達したリーフ（ノード）からグラフを探索してもよい。
【００７２】
なお、上述したような起点用インデックスは一例であり、情報処理装置１００は、グラフ中のクエリに対応する起点ノードを高速に特定することが可能であれば、どのようなデータ構造の起点用インデックスを生成してもよい。例えば、情報処理装置１００は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、起点用インデックスを生成してもよい。例えば、情報処理装置１００は、高次元ベクトルの検索に対応可能な起点用インデックスであれば、どのようなデータ構造の起点用インデックスを生成してもよい。情報処理装置１００は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関してより効率的な検索を可能にすることができる。すなわち、情報処理装置１００は、上述のような起点用インデックスとグラフとを用いることにより、所定の対象に関する検索をより高速に実行可能にすることができる。
【００７３】
〔１−６．セントロイド用インデックス〕
なお、情報処理装置１００は、第２対象ノードをセントロイドに割り当てる場合に、セントロイド用のインデックス（以下「セントロイド用インデックス」ともいう）を用いて割り当てるセントロイドを決定してもよい。例えば、情報処理装置１００は、図２０に示すような木構造を有するインデックスを、セントロイド用インデックスＳＴ１１として用いてもよい。図２０は、セントロイド用のインデックスの一例を示す図である。例えば、情報処理装置１００は、図２０に概念的に示すようなセントロイド用インデックスを記憶部１２０（図４参照）に記憶してもよい。また、例えば、情報処理装置１００は、高次元データを検索できるハッシュ型などその他のインデックスをセントロイド用インデックスとして用いてもよい。例えば、情報処理装置１００は、高次元データを検索できるハッシュ型などその他のインデックスをセントロイド用インデックスとして記憶部１２０（図４参照）に記憶してもよい。
【００７４】
図２０中のセントロイド用インデックスＳＴ１１は、ルートＲＴ１や節点ＮＤ１、ＮＤ２やセントロイドＣ１、Ｃ３等を含む。例えば、情報処理装置１００は、セントロイド用インデックスＳＴ１１を用いて、探索対象となるノードや検索クエリである探索対象に最も近いセントロイドを特定する。例えば、情報処理装置１００は、セントロイド用インデックスＳＴ１１を上から下（例えばルートＲＴ１からセントロイド）へ辿ることにより、探索対象の近傍候補となるセントロイドを特定してもよい。
【００７５】
例えば、情報処理装置１００は、セントロイド用インデックスＳＴ１１を用いて、第２割当処理を行ってもよい。例えば、情報処理装置１００は、セントロイド用インデックスＳＴ１１を用いて、第２対象ノードに最も近いセントロイドを特定し、特定したセントロイドに第２対象ノードを割当ノードとして割り当ててもよい。
【００７６】
なお、上述したような複数のセントロイド情報に関する木構造やグラフ型の検索インデックスは一例であり、情報処理装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、どのようなデータ構造のセントロイド用インデックスを用いてもよい。例えば、情報処理装置１００は、クエリに対応するセントロイド情報を高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、セントロイド用インデックスを用いてもよい。例えば、情報処理装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のセントロイド用インデックスを用いてもよい。また、情報処理装置１００は、上述した種々のインデックスを生成してもよい。
【００７７】
〔２．情報処理システムの構成〕
図２に示すように、情報処理システム１は、端末装置１０と、情報提供装置５０と、情報処理装置１００とが含まれる。端末装置１０と、情報提供装置５０と、情報処理装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図２は、第１の実施形態に係る情報処理システムの構成例を示す図である。なお、図２に示した情報処理システム１には、複数台の端末装置１０や、複数台の情報提供装置５０や、複数台の情報処理装置１００が含まれてもよい。
【００７８】
端末装置１０は、ユーザによって利用される情報処理装置である。端末装置１０は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置１０をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置１０と読み替えることもできる。なお、上述した端末装置１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等により実現される。
【００７９】
情報提供装置５０は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトＩＤが格納される。例えば、情報提供装置５０は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置５０は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置５０は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置１００に提供する。また、情報提供装置５０は、クエリを情報処理装置１００に送信することにより、情報処理装置１００からクエリに対応する画像を示すオブジェクトＩＤ等を受信する。
【００８０】
情報処理装置１００は、複数のセントロイドの各々をクエリとして、複数のノードがエッジにより連結されたグラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出し、抽出した近傍ノードに基づいてクラスタリング情報を生成する情報処理装置である。情報処理装置１００は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリングを生成する生成装置である。例えば、情報処理装置１００は、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。また、情報処理装置１００は、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。情報処理装置１００は、第１割当処理及び第２割当処理を含む割当処理により、クラスタリング情報を生成する。
【００８１】
例えば、情報処理装置１００は、端末装置からクエリ情報（以下、単に「クエリ」ともいう）を受信すると、クエリに類似する対象（ベクトル情報等）を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置１００が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、ＵＲＬ（Uniform  Resource  Locator）等の対応するデータを参照するための情報であってもよい。また、クエリや検索対象のデータは、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。本実施形態において、情報処理装置１００が画像を検索する場合を一例として説明する。
【００８２】
〔３．情報処理装置の構成〕
次に、図３を用いて、第１の実施形態に係る情報処理装置１００の構成について説明する。図３は、第１の実施形態に係る情報処理装置１００の構成例を示す図である。図３に示すように、情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、情報処理装置１００は、情報処理装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００８３】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、端末装置１０や情報提供装置５０との間で情報の送受信を行う。
【００８４】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第１の実施形態に係る記憶部１２０は、図３に示すように、オブジェクト情報記憶部１２１と、基準情報記憶部１２２と、変更条件情報記憶部１２３と、グラフデータ記憶部１２４と、起点用情報記憶部１２５と、セントロイド記憶部１２６と、クラスタリング情報記憶部１２７とを有する。
【００８５】
（オブジェクト情報記憶部１２１）
第１の実施形態に係るオブジェクト情報記憶部１２１は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部１２１は、オブジェクトＩＤやベクトルデータを記憶する。図４は、第１の実施形態に係るオブジェクト情報記憶部の一例を示す図である。図４に示すオブジェクト情報記憶部１２１は、「オブジェクトＩＤ」、「ベクトル情報」といった項目が含まれる。
【００８６】
「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトＩＤにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図４の例では、オブジェクトを識別するオブジェクトＩＤに対して、オブジェクトに対応するベクトルデータ（ベクトル情報）が対応付けられて登録されている。
【００８７】
例えば、図４の例では、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（対象）は、「１０，２４，５１，２・・・」の多次元のベクトル情報が対応付けられることを示す。
【００８８】
なお、オブジェクト情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００８９】
（基準情報記憶部１２２）
第１の実施形態に係る基準情報記憶部１２２は、グラフ検索の基準に関する各種情報を記憶する。図５は、第１の実施形態に係る基準情報記憶部の一例を示す図である。図５に示す基準情報記憶部１２２は、「基準ＩＤ」、「対象」、「値」といった項目が含まれる。
【００９０】
「基準ＩＤ」は、グラフ検索の基準を識別する情報を示す。「対象」は、基準ＩＤにより識別される基準の対象を示す。また、「値」は、対応する基準として用いる具体的な値を示す。
【００９１】
図５の例では、基準ＩＤ「ＣＲ１１」により識別される基準（基準ＣＲ１１）は、検索数を対象とする基準であることを示す。基準ＣＲ１１として用いられる対象は、検索数であり、その値は「４」であることを示す。なお、図５に示す例では、対象「検索数」の値は、「４」に限らず、「２」や「１０」や「１００」等種々の値であってもよい。
【００９２】
また、図５の例では、基準ＩＤ「ＣＲ１２」により識別される基準（基準ＣＲ１２）は、対象範囲を示す有向半径を対象とする基準であることを示す。基準ＣＲ１２として用いられる基準は、有効半径であり、その値は「‐」であることを示す。すなわち、図５の例では、基準ＣＲ１２は未設定であることを示す。なお、図５に示す例では、対象「対象範囲（有効半径）」の値が、設定されていない場合を示すが、種々の値が設定されてもよい。
【００９３】
なお、基準情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００９４】
（変更条件情報記憶部１２３）
第１の実施形態に係る変更条件情報記憶部１２３は、基準の変更に関する変更条件に関する各種情報を記憶する。図６は、第１の実施形態に係る変更条件情報記憶部の一例を示す図である。図６に示す変更条件情報記憶部１２３は、「変更条件ＩＤ」、「決定用情報」、「変更情報」といった項目を有する。
【００９５】
「変更条件ＩＤ」は、基準の変更に関する条件を識別する情報を示す。「決定用情報」は、基準を変更するかの決定（判定）に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、基準を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図６に示す例では、「閾値」の値は、「ＴＨ１１」や「ＴＨ１２」といった抽象的な符号を図示するが、「１００」や「５０００」や「５％」や「０．２」等の具体的な数値であるものとする。
【００９６】
「変更情報」は、変更される基準やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる基準を示す。「変更対象」には、対象とする基準を識別する情報（基準ＩＤ等）が記憶される。「変更内容」は、対応する条件を満たす場合に基準を変更する具体的な内容を示す。なお、図６に示す例では、「変更内容」は、「ＡＩＮＦ１１」といった抽象的な符号を図示するが、「＋１」や「５増加」や「２減少」や「１０％増加」や「５％減少」等の種々の変更内容であってもよい。
【００９７】
図６の例では、変更条件ＩＤ「ＡＣＤ１１」により識別される変更条件（変更条件ＡＣＤ１１）は、近傍ノード数に関する情報を判定に用いる条件であることを示す。変更条件ＡＣＤ１１は、閾値「ＴＨ１１」であることを示す。また、変更条件ＡＣＤ１１を満たす場合、変更対象となる基準は、基準ＣＲ１１であることを示す。変更条件ＡＣＤ１１を満たす場合、基準ＣＲ１１は変更内容ＡＩＮＦ１１に応じて変更されることを示す。例えば、変更内容ＡＩＮＦ１１が「２増加」である場合、情報処理装置１００は、変更条件ＡＣＤ１１を満たすと判定した場合に、基準ＣＲ１１である検索数の値を２増加させる。
【００９８】
なお、変更条件情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【００９９】
（グラフデータ記憶部１２４）
第１の実施形態に係るグラフデータ記憶部１２４は、グラフデータに関する各種情報を記憶する。例えば、グラフデータ記憶部１２４は、生成したグラフデータを記憶する。図７は、第１の実施形態に係るグラフデータ記憶部の一例を示す図である。図７に示すグラフデータ記憶部１２４は、「ノードＩＤ」、「オブジェクトＩＤ」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１００】
「ノードＩＤ」は、グラフデータにおける各ノード（対象）を識別するための識別情報を示す。また、「オブジェクトＩＤ」は、オブジェクトを識別するための識別情報を示す。
【０１０１】
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図７の例では、「エッジ情報」は、エッジが無向エッジである場合を示し、対応するノードと参照先のノードとを連結するエッジに関する情報を示す。また、「エッジＩＤ」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（ノード）を示す情報を示す。すなわち、図７の例では、ノードを識別するノードＩＤに対して、そのノードに対応するオブジェクト（対象）を識別する情報やそのノードとエッジにより連結される参照先（ノード）が対応付けられて登録されている。
【０１０２】
図７の例では、ノードＩＤ「Ｎ１」により識別されるノード（ノードＮ１）は、オブジェクトＩＤ「ＯＢ１」により識別されるオブジェクト（対象）に対応することを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ１」により識別されるエッジ（エッジＥ１）が、ノードＩＤ「Ｎ２」により識別されるノード（ノードＮ２）に連結されることを示す。すなわち、図７の例では、グラフデータにおけるノードＮ１からはエッジＥ１によりノードＮ２へ辿ることができることを示す。また、ノードＮ１からは、エッジＩＤ「Ｅ２」により識別されるエッジ（エッジＥ２）が、ノードＩＤ「Ｎ３」により識別されるノード（ノードＮ３）に連結されることを示す。すなわち、図７の例では、グラフデータにおけるノードＮ１からはエッジＥ２によりノードＮ３へ辿ることができることを示す。
【０１０３】
また。図７の例では、ノードＩＤ「Ｎ２」には、参照先をノードＩＤ「Ｎ１」とするエッジＩＤ「Ｅ１」を含むエッジ情報が対応付けて記憶される。このように、ノードＮ２は、エッジＥ１により、ノードＮ１と連結されることを示す。すなわち、図７の例では、ノードＮ２からはノードＮ１に辿ることができることを示す。
【０１０４】
なお、グラフデータ記憶部１２４は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフデータ記憶部１２４は、各ノード（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、グラフデータ記憶部１２４は、各ノード（ベクトル）間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部１２３は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。例えば、グラフ情報記憶部１２３は、エッジＩＤに、そのエッジＩＤにより識別されるエッジが連結するセントロイドを識別する情報を対応付けて記憶してもよい。
【０１０５】
また、グラフデータは、クエリを入力とし、グラフデータ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフデータは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフデータＧＲ１１は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフデータＧＲ１１は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフデータＧＲ１１は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。
【０１０６】
（起点用情報記憶部１２５）
第１の実施形態に係る起点用情報記憶部１２５は、起点用情報に関する各種情報を記憶する。図８は、第１の実施形態に係る起点用情報記憶部の一例を示す図である。具体的には、図８の例では、起点用情報記憶部１２５は、ツリー構造の起点用インデックス情報（起点用インデックス）を示す。図８の例では、起点用情報記憶部１２５は、「ルート階層」、「第１階層」、「第２階層」、「第３階層」等といった項目が含まれる。なお、「第１階層」〜「第３階層」に限らず、インデックスの階層数に応じて、「第４階層」、「第５階層」、「第６階層」等が含まれてもよい。
【０１０７】
「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート（最上位）の階層を示す。「第１階層」は、インデックスの第１階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第１階層」に格納されるノードは、インデックスの根（ルート）に直接結ばれる階層に対応するノードとなる。
【０１０８】
「第２階層」は、インデックスの第２階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第２階層」に格納されるノードは、第１階層のノードに結ばれる直下の階層に対応するノードとなる。「第３階層」は、インデックスの第３階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第３階層」に格納されるノードは、第２階層のノードに結ばれる直下の階層に対応するノードとなる。
【０１０９】
図８に示す例においては、起点用情報記憶部１２５には、図１中の起点用情報ＩＮＤ１１に対応する情報が記憶される。例えば、起点用情報記憶部１２５は、第１階層のノードが、節点ＶＴ１〜ＶＴ３等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【０１１０】
また、起点用情報記憶部１２５は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４であることを示す。また、起点用情報記憶部１２５は、節点ＶＴ２−１の直下の第３階層のノードが、ノードＮ１、ノードＮ２のグラフＧＲ１１中のノード（ベクトル）であることを示す。起点用情報記憶部１２５は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３、ノードＮ４、ノードＮ５のグラフＧＲ１１中のノード（ベクトル）であることを示す。
【０１１１】
なお、起点用情報記憶部１２５は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１１２】
（セントロイド記憶部１２６）
第１の実施形態に係るセントロイド情報記憶部１２６は、セントロイドに関する各種情報を記憶する。例えば、セントロイド情報記憶部１２６は、セントロイドＩＤやベクトル情報（ベクトルデータ）を記憶する。図９は、第１の実施形態に係るセントロイド情報記憶部の一例を示す図である。図９に示すセントロイド情報記憶部１２６は、「セントロイドＩＤ」、「ベクトル情報」といった項目が含まれる。
【０１１３】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ベクトル情報」は、セントロイドＩＤにより識別されるセントロイド（ベクトル）に対応するベクトル情報を示す。
【０１１４】
図９に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応するベクトル情報は、「１０，２４，５４，２・・・」のＮ次元ベクトルであることを示す。
【０１１５】
また、図９に示す例においては、セントロイドＩＤ「Ｃ４」により識別されるセントロイド（セントロイドＣ４）に対応するベクトル情報は、「３２，１，１２０，３１・・・」のＮ次元ベクトルであることを示す。
【０１１６】
なお、セントロイド情報記憶部１２６は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１１７】
（クラスタリング情報記憶部１２７）
第１の実施形態に係るクラスタリング情報記憶部１２７は、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部１２７は、セントロイド情報記憶部１２２に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図１０は、第１の実施形態に係るクラスタリング情報記憶部の一例を示す図である。図１０の例では、クラスタリング情報記憶部１２７は、「セントロイドＩＤ」、「オブジェクトＩＤ」といった項目が含まれる。
【０１１８】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「オブジェクトＩＤ」は、セントロイドＩＤにより識別されるセントロイドに対応付けられたオブジェクト（オブジェクト）を示す。
【０１１９】
図１０に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応付けられたノード（オブジェクト）は、ノードＮ１、Ｎ２、Ｎ３、Ｎ４、Ｎ１３等であることを示す。また、セントロイドＩＤ「Ｃ２」により識別されるセントロイド（セントロイドＣ２）に対応付けられたノード（オブジェクト）は、ノードＮ５、Ｎ６、Ｎ７、Ｎ１２等であることを示す。
【０１２０】
なお、クラスタリング情報記憶部１２７は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１２１】
（制御部１３０）
図３の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）やＧＰＵ（Graphics  Processing  Unit）等によって、情報処理装置１００内部の記憶装置に記憶されている各種プログラム（情報処理プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【０１２２】
図３に示すように、制御部１３０は、取得部１３１と、抽出部１３２と、決定部１３３と、生成部１３４と、検索部１３５と、提供部１３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１２３】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、記憶部１２０から各種情報を取得する。例えば、取得部１３１は、オブジェクト情報記憶部１２１や、基準情報記憶部１２２や、変更条件情報記憶部１２３や、グラフデータ記憶部１２４や、起点用情報記憶部１２５や、セントロイド記憶部１２６や、クラスタリング情報記憶部１２７等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。取得部１３１は、端末装置１０や情報提供装置５０から各種情報を取得する。
【０１２４】
取得部１３１は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。取得部１３１は、生成部１３４により生成された複数のセントロイドを取得する。
【０１２５】
また、取得部１３１は、グラフデータを取得してもよい。例えば、情報処理装置１００は、図１中のグラフＧＲ１１を取得してもよい。例えば、情報処理装置１００は、情報提供装置５０等の外部装置からグラフデータを取得してもよい。
【０１２６】
図１の例では、取得部１３１は、空間情報ＳＰ１１−１に示すようにノードＮ１〜Ｎ１５等やエッジＥ１〜Ｅ１６等を含むグラフＧＲ１１を取得する。取得部１３１は、グラフデータ記憶部１２４からグラフＧＲ１１を取得する。
【０１２７】
例えば、取得部１３１は、検索クエリに関する情報を取得する。例えば、取得部１３１は、画像検索に関する検索クエリを取得する。例えば、取得部１３１は、利用する端末装置１０からクエリを取得する。例えば、取得部１３１は、利用する端末装置１０からクエリを受け付けた情報提供装置５０からクエリを取得する。
【０１２８】
（抽出部１３２）
抽出部１３２は、各種情報を抽出する。抽出部１３２は、各種情報を選択する。抽出部１３２は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を抽出する。抽出部１３２は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を選択する。
【０１２９】
抽出部１３２は、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。抽出部１３２は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出する。
【０１３０】
抽出部１３２は、グラフを探索することにより、近傍ノードを抽出する。抽出部１３２は、セントロイドをクエリとして、グラフを探索することにより、検索数の近傍ノードを抽出する。抽出部１３２は、図２１に示すような検索処理により、グラフを探索することにより、近傍ノードを抽出する。
【０１３１】
なお、抽出部１３２は、検索部１３５に要求することにより、検索部１３５に情報を探索させ、検索部１３５が探索した探索結果を用いてもよい。抽出部１３２は、検索部１３５が探索した探索結果から情報を抽出してもよい。抽出部１３２は、グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、グラフに含まれる各ノードに対応する近傍ノードを抽出してもよい。
【０１３２】
図１の例では、抽出部１３２は、セントロイドＣ１の近傍ノードを検索する。抽出部１３２は、セントロイドＣ１をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ１の近傍ノードを検索し、抽出する。抽出部１３２は、検索数「４」である基準ＣＲ１１に基づいて、セントロイドＣ１の近傍ノードを検索する。この場合、抽出部１３２は、基準ＣＲ１１が示す検索数「４」に対応する４個のノードを、セントロイドＣ１の近傍ノードとして抽出する。
【０１３３】
抽出部１３２は、空間情報ＳＰ１１−３に示すように、セントロイドＣ１の近傍ノードとして、ノードＮ１〜Ｎ４の４個のノードを抽出する。抽出部１３２は、セントロイドＣ２、Ｃ３等の近傍ノードを検索する。抽出部１３２は、セントロイドＣ２をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ２の近傍ノードを検索し、抽出する。抽出部１３２は、検索数「４」である基準ＣＲ１１に基づいて、セントロイドＣ２の近傍ノードを検索する。この場合、抽出部１３２は、基準ＣＲ１１が示す検索数「４」に対応する４個のノードを、セントロイドＣ２の近傍ノードとして抽出する。
【０１３４】
抽出部１３２は、空間情報ＳＰ１１−４に示すように、セントロイドＣ２の近傍ノードとして、ノードＮ３、Ｎ５〜Ｎ７の４個のノードを抽出する。抽出部１３２は、空間情報ＳＰ１１−４に示すように、セントロイドＣ３の近傍ノードとして、ノードＮ８〜Ｎ１１の４個のノードを抽出する。
【０１３５】
（決定部１３３）
決定部１３３は、各種情報を決定する。決定部１３３は、各種情報を判定する。決定部１３３は、各種情報を変更する。決定部１３３は、各種情報を更新する。決定部１３３は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を決定する。決定部１３３は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を判定する。決定部１３３は、記憶部１２０に記憶された各種情報に基づいて、種々の情報を変更する。決定部１３３は、各種情報を更新する。
【０１３６】
決定部１３３は、種々の情報を用いて、変更条件を満たすかを判定する。決定部１３３は、種々の情報を用いて、基準を変更する変更条件を満たすかを判定する。決定部１３３は、判定結果に基づいて、種々の情報や処理を変更する。決定部１３３は、判定結果に基づいて、所定の基準を変更する。決定部１３３は、判定結果に基づいて、所定の処理をスキップさせる。
【０１３７】
決定部１３３は、抽出部１３２による近傍ノードの抽出結果に基づいて、検索数を決定する。決定部１３３は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更する。決定部１３３は、スコアが所定値未満である場合、検索数を増加させる。決定部１３３は、スコアが所定値以上である場合、検索数を減少させる。
【０１３８】
決定部１３３は、種々の情報を適宜用いて、検索数を決定する。例えば、決定部１３３は、全ノード数をセントロイド数で除した値（第１値）を用いて、検索数を決定してもよい。例えば、決定部１３３は、第１値に所定の値（第２値）を乗算することにより、検索数を決定してもよい。
【０１３９】
（生成部１３４）
生成部１３４は、各種情報を生成する。例えば、生成部１３４は、記憶部１２０に記憶された情報（データ）から各種情報（データ）を生成する。例えば、生成部１３４は、オブジェクト情報記憶部１２１や、基準情報記憶部１２２や、変更条件情報記憶部１２３や、グラフデータ記憶部１２４や、起点用情報記憶部１２５や、セントロイド記憶部１２６や、クラスタリング情報記憶部１２７等に記憶された情報（データ）から各種情報を生成する。例えば、生成部１３４は、クラスタリング情報を生成する。
【０１４０】
生成部１３４は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
【０１４１】
生成部１３４は、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する。生成部１３４は、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、クラスタリング情報を生成する。
【０１４２】
生成部１３４は、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理と、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理とを含む割当処理により、クラスタリング情報を生成する。
【０１４３】
生成部１３４は、複数のセントロイドに関する情報に基づいて、第２対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理により、クラスタリング情報を生成する。生成部１３４は、第２対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第２割当処理により、クラスタリング情報を生成する。
【０１４４】
生成部１３４は、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、クラスタリング情報を生成する。生成部１３４は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成する。生成部１３４は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を対象として、クラスタリング情報を生成する。生成部１３４は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成する。
【０１４５】
生成部１３４は、複数のセントロイドを生成する。生成部１３４は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。生成部１３４は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。生成部１３４は、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
【０１４６】
生成部１３４は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。生成部１３４は、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てる。生成部１３４は、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとする。生成部１３４は、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、２回目以降の割当処理によるクラスタリング情報の生成を繰り返し、２回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。生成部１３４は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。生成部１３４は、グラフの検索範囲に関連するパラメータ値を変更する。生成部１３４は、グラフの検索の拡張要素に関するパラメータ値を変更する。生成部１３４は、グラフの検索の拡張要素に関するパラメータ値を増加する。
【０１４７】
図１の例では、生成部１３４は、所定の基準に基づいて複数のセントロイドを生成する。生成部１３４は、所定の基準に基づいて決定される所定数のセントロイドを生成する。例えば、生成部１３４は、データ検索の対象数（オブジェクト数）に基づいて決定される所定数のセントロイドを生成する。
【０１４８】
生成部１３４は、セントロイドＣ１に、ノードＮ１〜Ｎ４、及びセントロイドＣ１とノードＮ１〜Ｎ４との間の距離を対応付けた情報（対応付情報）を、近傍ノード一覧ＳＬ１−１に追加することにより、近傍ノード一覧ＳＬ１−１を生成する。図１の例では、生成部１３４は、ノードＮ１がセントロイドＣ１の近傍ノードであり、セントロイドＣ１とノードＮ１との間の距離が距離Ｄ１−１であることを示す情報（対応付情報）を生成し、近傍ノード一覧ＳＬ１に追加する。また、生成部１３４は、ノードＮ２〜Ｎ４がセントロイドＣ１の近傍ノードであり、セントロイドＣ１とノードＮ２〜Ｎ４の各々との間の距離が距離Ｄ１−２〜Ｄ１−４であることを示す対応付情報を生成し、近傍ノード一覧ＳＬ１に追加する。
【０１４９】
生成部１３４は、近傍ノード一覧ＳＬ１−２に示すように、セントロイドＣ２に、ノードＮ３、Ｎ５〜Ｎ７、及びセントロイドＣ２とノードＮ３、Ｎ５〜Ｎ７との間の距離を対応付けた情報を生成する。図１の例では、生成部１３４は、ノードＮ３がセントロイドＣ２の近傍ノードであり、セントロイドＣ２とノードＮ３との間の距離が距離Ｄ２−３であることを示す情報を生成する。また、生成部１３４は、ノードＮ５〜Ｎ７がセントロイドＣ２の近傍ノードであり、セントロイドＣ２とノードＮ５〜Ｎ７の各々との間の距離が距離Ｄ２−５〜Ｄ２−７であることを示す情報を生成する。
【０１５０】
生成部１３４は、近傍ノード一覧ＳＬ１−２に示すように、セントロイドＣ３に、ノードＮ８〜Ｎ１１、及びセントロイドＣ３とノードＮ８〜Ｎ１１との間の距離を対応付けた情報を生成する。図１の例では、生成部１３４は、ノードＮ８がセントロイドＣ３の近傍ノードであり、セントロイドＣ３とノードＮ８との間の距離が距離Ｄ３−８であることを示す情報を生成する。また、生成部１３４は、ノードＮ８〜Ｎ１１がセントロイドＣ３の近傍ノードであり、セントロイドＣ３とノードＮ８〜Ｎ１１の各々との間の距離が距離Ｄ３−９〜Ｄ３−１１であることを示す情報を生成する。生成部１３４は、各セントロイドＣ１〜Ｃ３等と近傍ノードとの対応付情報を距離順に並べた近傍ノード一覧ＳＬ１−２を生成する。
【０１５１】
生成部１３４は、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。生成部１３４は、近傍ノード一覧ＳＬ１−２に含まれるノードＮ１〜Ｎ１１を第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。生成部１３４は、近傍ノード一覧ＳＬ１−２に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。生成部１３４は、近傍ノード一覧ＳＬ１−２の先頭に位置する対応付情報に対応するセントロイドＣ３にノードＮ９を割当ノードとして割り当てる。
【０１５２】
また、生成部１３４は、近傍ノード一覧ＳＬ１−２の２番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ８を割当ノードとして割り当てる。生成部１３４は、近傍ノード一覧ＳＬ１−２の３番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ１０を割当ノードとして割り当てる。生成部１３４は、近傍ノード一覧ＳＬ１−２の４番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ１を割当ノードとして割り当てる。
【０１５３】
生成部１３４は、近傍ノード一覧ＳＬ１−２の７番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ３を割当ノードとして割り当てる。生成部１３４は、近傍ノード一覧ＳＬ１−２の１１番目に位置する対応付情報のセントロイドＣ２に、ノードＮ３を割り当てない。そして、生成部１３４は、近傍ノード一覧ＳＬ１−２の１２番目に位置する対応付情報に対応するセントロイドＣ２にノードＮ７を割当ノードとして割り当てる。このように、生成部１３４は、近傍ノード一覧ＳＬ１−２に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、クラスタリング情報を生成する。
【０１５４】
生成部１３４は、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。生成部１３４は、第１割当処理によりセントロイドに割り当てられなかったノードＮ１２〜Ｎ１５を第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。
【０１５５】
例えば、生成部１３４は、セントロイドに未割当てのノードであるノードＮ１２〜Ｎ１５を、セントロイドＣ１〜Ｃ３等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、生成部１３４は、ノードＮ１２と、セントロイドＣ１〜Ｃ３との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図１の例では、生成部１３４は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１２との距離が最も近いセントロイドＣ２に、ノードＮ１２を割当ノードとして割り当てる。また、生成部１３４は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１３との距離が最も近いセントロイドＣ１に、ノードＮ１３を割当ノードとして割り当てる。このように、生成部１３４は、第２対象ノードであるノードＮ１２〜Ｎ１５等をセントロイドに割り当てることにより、クラスタリング情報を生成する。
【０１５６】
（検索部１３５）
検索部１３５は、オブジェクトに関する検索サービスを提供する。検索部１３５は、各種情報を探索する。検索部１３５は、各種情報を検索する。例えば、検索部１３５は、グラフデータを探索することにより、オブジェクトを検索する。例えば、検索部１３５は、取得部１３１により取得されたクエリが取得された場合、グラフデータを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索部１３５は、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索部１３５は、図２１に示すような処理手順に基づいて、グラフデータを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置１００は、検索サービスを提供しない場合、検索部１３５を有しなくてもよい。
【０１５７】
（提供部１３６）
提供部１３６は、各種情報を提供する。例えば、提供部１３６は、端末装置１０や情報提供装置５０に各種情報を提供する。例えば、提供部１３６は、クエリに対応するオブジェクトＩＤを検索結果として提供する。例えば、提供部１３６は、検索部１３５により検索されたオブジェクトＩＤを情報提供装置５０へ提供する。例えば、提供部１３６は、検索部１３５が検索により抽出したオブジェクトＩＤを情報提供装置５０へ提供する。提供部１３６は、検索部１３５により抽出されたオブジェクトＩＤをクエリに対応するベクトルを示す情報として情報提供装置５０に提供する。
【０１５８】
また、提供部１３６は、生成部１３４により生成されたクラスタリング情報を外部の情報処理装置へ提供してもよい。例えば、提供部１３６は、クラスタリング情報記憶部１２７に記憶されたクラスタリング情報を情報提供装置５０に送信してもよい。
【０１５９】
〔４．情報処理のフロー〕
次に、図１１を用いて、第１の実施形態に係る情報処理システム１による情報処理の手順について説明する。図１１は、第１の実施形態に係る情報処理の一例を示すフローチャートである。
【０１６０】
図１１に示すように、情報処理装置１００は、複数のノードがエッジにより連結されたグラフを取得する（ステップＳ１０１）。図１の例では、情報処理装置１００は、グラフデータ記憶部１２４（図７参照）からグラフＧＲ１１を取得する。
【０１６１】
そして、情報処理装置１００は、複数のセントロイドを取得する（ステップＳ１０２）。図１の例では、情報処理装置１００は、複数のセントロイドを生成することにより、複数のセントロイドを取得する。
【０１６２】
そして、情報処理装置１００は、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する（ステップＳ１０３）。図１の例では、情報処理装置１００は、セントロイドＣ１の近傍ノードとして、ノードＮ１〜Ｎ４を抽出する。
【０１６３】
そして、情報処理装置１００は、近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する（ステップＳ１０４）。図１の例では、情報処理装置１００は、クラスタリング情報記憶部１２７に示すような、クラスタリング情報を生成する。
【０１６４】
〔５．割当て処理の変形例情報〕
〔５−１．検索範囲を用いた処理〕
なお、情報処理装置１００は、図１の処理に限らず、種々の情報を適宜用いて、セントロイドにノードを割り当てる割当処理を行ってもよい。例えば、情報処理装置１００は、検索数に加えて、有効半径に基づく範囲を用いて、割当処理を行ってもよい。この点について、図１２を用いて説明する。図１２は、第１の実施形態に係る検索範囲を用いた情報処理の一例を示す図である。なお、図１２中の空間情報ＳＰ１１−４は、図１中の空間情報ＳＰ１１−４と同様である。また、図１２においては、空間情報ＳＰ１１−４に示す近傍ノードの抽出や近傍ノード一覧ＳＬ１を生成するまでの処理は、図１のステップＳ１１〜Ｓ１４と同様であるため説明を省略する。
【０１６５】
情報処理装置１００は、各セントロイドの範囲に基づいて、有効半径を決定する（ステップＳ２０１）。情報処理装置１００は、各セントロイドの最遠の検索結果の中で最も近い検索結果に基づいて、有効半径を決定する。
【０１６６】
図１２中の空間情報ＳＰ１１−４に示すように、セントロイドＣ１の範囲ＡＲ１は、セントロイドＣ１の近傍ノードのうち、最遠のノードＮ４とセントロイドＣ１との間の距離Ｄ１−４を半径とする。また、図１２中の空間情報ＳＰ１１−４に示すように、セントロイドＣ２の範囲ＡＲ２は、セントロイドＣ２の近傍ノードのうち、最遠のノードＮ７とセントロイドＣ２との間の距離Ｄ２−７を半径とする。また、図１２中の空間情報ＳＰ１１−４に示すように、セントロイドＣ３の範囲ＡＲ３は、セントロイドＣ３の近傍ノードのうち、最遠のノードＮ１１とセントロイドＣ３との間の距離Ｄ３−１１を半径とする。
【０１６７】
図１２の例では、情報処理装置１００は、セントロイドＣ１の範囲ＡＲ１、セントロイドＣ２の範囲ＡＲ２及びセントロイドＣ３の範囲ＡＲ３等に基づいて、有効半径を決定する。例えば、情報処理装置１００は、セントロイドＣ１の範囲ＡＲ１、セントロイドＣ２の範囲ＡＲ２及びセントロイドＣ３の範囲ＡＲ３等のうち、最も半径が短い範囲を用いて、有効半径を決定する。この場合、情報処理装置１００は、最も半径が短いセントロイドＣ３の範囲ＡＲ３を用いて有効半径を決定する。情報処理装置１００は、セントロイドＣ３の範囲ＡＲ３の半径ＲＶ３を有効半径に決定する。すなわち、情報処理装置１００は、セントロイドＣ３の範囲ＡＲ３の半径ＲＶ３である距離Ｄ３−１１を有効半径に決定する。
【０１６８】
これにより、情報処理装置１００は、対象範囲を示す有効半径である基準ＣＲ１２を、セントロイドＣ３の範囲ＡＲ３の半径ＲＶ３に決定する。そして、情報処理装置１００は、近傍ノード一覧ＳＬ１−２に示すように、全セントロイドのデータ（近傍ノード）を距離の短い順にソートし、短い順にセントロイドに割り当てる。そして図１２の場合、情報処理装置１００は、基準ＣＲ１２が示す有効半径ＲＶ３を距離が超えたら割り当てを終了する。
【０１６９】
そのため、図１２の例では、情報処理装置１００は、基準ＣＲ１２を用いて、第１割当処理の対象とする第１対象ノードを決定する（ステップＳ２０２）。情報処理装置１００は、近傍ノード一覧ＳＬ１−２内の対応付情報のうち、有効半径ＲＶ３以内である上から１〜６番目の対応付情報のノードを第１対象ノードに決定する。すなわち、情報処理装置１００は、近傍ノード一覧ＳＬ１−２内の対応付情報のうち、６番目の対応付情報のノードＮ１１までを第１対象ノードに決定する。また、情報処理装置１００は、近傍ノード一覧ＳＬ１−２内の対応付情報のうち、有効半径ＲＶ３を超える距離Ｄ１−３である７番目以降の対応付情報を第１割当処理の対象としない。すなわち、情報処理装置１００は、７番目の対応付情報のセントロイドＣ１へのノードＮ３の割当てを第１割当処理で行わないと決定する。
【０１７０】
そして、情報処理装置１００は、有効半径ＲＶ３以内である上から１〜６番目の対応付情報のノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う（ステップＳ２０３）。図１２の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−２中の有効半径ＲＶ３以内である上から１〜６番目のノードＮ１、Ｎ２、Ｎ８〜Ｎ１１を第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。
【０１７１】
図１２の例では、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の先頭に位置する対応付情報に対応するセントロイドＣ３にノードＮ９を割当ノードとして割り当てる。また、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の２番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ８を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の３番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ１０を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の４番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ１を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の５番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ２を割当ノードとして割り当てる。情報処理装置１００は、近傍ノード一覧ＳＬ１−２の６番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ１１を割当ノードとして割り当てる。
【０１７２】
そして、情報処理装置１００は、近傍ノード一覧ＳＬ１−２内の対応付情報のうち、有効半径ＲＶ３を超える７〜１２番目等の対応付情報を第１割当処理の対象とせず、第１割当処理を終了する。すなわち、図１２の例では、情報処理装置１００は、ノードＮ３〜Ｎ７を、第１割当処理の第１対象ノードとしない。このように、情報処理装置１００は、近傍ノード一覧ＳＬ１−２に含まれる対応付情報のうち、距離が有効半径ＲＶ３以内である対応付情報のノードのみをセントロイドに割り当てることにより、図１２中のクラスタリング情報記憶部１２７に示すようなクラスタリング情報を生成する。
【０１７３】
なお、図１２の例では、情報処理装置１００が第１対象ノードを決定して、第１割当処理を行う場合を示したが、近傍ノード一覧ＳＬ１−２中の有効半径ＲＶ３を超える距離の対応付情報が第１割当処理の対象にならなければ、どのような処理により行われてもよい。例えば、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の上から順に対象ノードとして選択し、選択した対応付情報の距離が有効半径ＲＶ３以下である場合、その対応付情報のノードを対象に第１割当処理を行い、その対応付情報にセントロイドにそのノードを割り当ててもよい。そして、情報処理装置１００は、近傍ノード一覧ＳＬ１−２の上から順に対象ノードとして選択し、選択した対応付情報の距離が有効半径ＲＶ３超えた場合、その対応付情報を第１割当処理の対象とせず、第１割当処理を終了し、ステップＳ２０４の第２割当処理を行ってもよい。
【０１７４】
そして、情報処理装置１００は、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う（ステップＳ２０４）。図１２の例では、情報処理装置１００は、第１割当処理によりセントロイドに割り当てられなかったノードＮ３〜Ｎ７、Ｎ１２〜Ｎ１５を第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。
【０１７５】
例えば、情報処理装置１００は、セントロイドに未割当てのノードであるノードＮ３〜Ｎ７、Ｎ１２〜Ｎ１５を、セントロイドＣ１〜Ｃ３等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置１００は、ノードＮ３と、セントロイドＣ１〜Ｃ３との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図１２の例では、情報処理装置１００は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ３との距離が最も近いセントロイドＣ１に、ノードＮ３を割当ノードとして割り当てる。また、情報処理装置１００は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ７との距離が最も近いセントロイドＣ３に、ノードＮ７を割当ノードとして割り当てる。このように、情報処理装置１００は、第２対象ノードであるノードＮ３〜Ｎ７、Ｎ１２〜Ｎ１５等をセントロイドに割り当てることにより、図１２中のクラスタリング情報記憶部１２７に示すようなクラスタリング情報を生成する。
【０１７６】
上記のように、情報処理装置１００は、図１ではセントロイドＣ２に割り当てられていたノードＮ７が、セントロイドＣ２によりもノードＮ７に距離が近いセントロイドＣ３に割り当てることができるため、より適切なクラスタリング情報を生成することができる。
【０１７７】
〔５−２．未割当セントロイドが有る場合の処理〕
なお、情報処理装置１００は、第１割当処理及び第２割当処理により、１つもノードが割り当てられなかったセントロイド（未割当セントロイド）が有る場合、未割当セントロイドに所定の基準で選択したノードを割り当ててもよい。この点について、図１３を用いて説明する。図１３は、未割当セントロイドに対するノードの割当処理の一例を示す図である。
【０１７８】
なお、図１３中の空間情報ＳＰ１１−１５は、未割当セントロイドであるセントロイドＣ８が含まれる点以外は、図１２中の空間情報ＳＰ１１−１２と同様である。
【０１７９】
まず、情報処理装置１００は、割当処理の後において、未割当セントロイドがあるかどうかを判定する（ステップＳ２０５）。情報処理装置１００は、割当処理の後において、クラスタリング情報１２７を参照して、未割当セントロイドがあるかどうかを判定する。例えば、情報処理装置１００は、クラスタリング情報１２７のうち、ノードＩＤが１つも対応付けられていないセントロイドＩＤが有る場合、未割当セントロイドがあると判定する。図１３の例では、情報処理装置１００は、クラスタリング情報１２７のうち、セントロイドＣ８が未割当セントロイドであると判定する。
【０１８０】
そして、情報処理装置１００は、未割当セントロイドがある場合、所定の割当基準に基づいて未割当セントロイドに割り当てるノード（割当変更ノード）を決定する（ステップＳ２０６）。情報処理装置１００は、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドへの割当変更ノードに決定する。図１３の例では、最遠割当ノード一覧ＦＮＬ１に示すように、各セントロイドとその最遠ノードとの間の距離を示す情報と用いて、割当変更ノードを決定する。情報処理装置１００は、記憶部１２０（図３参照）に記憶された情報を用いて、最遠割当ノード一覧ＦＮＬ１を生成してもよいし、外部の情報処理装置から取得してもよい。
【０１８１】
情報処理装置１００は、各セントロイドとその最遠ノードとの間の距離を比較し、最も距離が長い最遠ノードの割当て先を未割当セントロイドに変更する。図１３の例では、最遠割当ノード一覧ＦＮＬ１のうち、空間情報ＳＰ１１−１５に示すように、セントロイドＣ２とその最遠ノードであるノードＮ１２との間の距離が最も遠い。そのため、情報処理装置１００は、ノードＮ１２の割当先をセントロイドＣ２からセントロイドＣ８に変更する。
【０１８２】
これにより、情報処理装置１００は、クラスタリング情報を更新する（ステップＳ２０７）。図１３の例では、情報処理装置１００は、クラスタリング情報記憶部１２７−１に示すように、ノードＮ１２のセントロイドＣ２との対応付けを解除し、ノードＮ１２をセントロイドＣ８に対応付けることにより、クラスタリング情報を更新する。また、情報処理装置１００は、セントロイドＣ８の位置を更新する。この場合、セントロイドＣ８の割当ノードはノードＮ１２のみであるため、情報処理装置１００は、空間情報ＳＰ１１−１６に示すように、セントロイドＣ８の位置をノードＮ１２の位置に更新する。なお、情報処理装置１００は、セントロイドＣ２の位置も更新する。例えば、情報処理装置１００は、セントロイドＣ２に割り当てられたノード５及びノードＮ６の中央座標（重心）をセントロイドＣ２の座標（セントロイド値）として算出し、セントロイドＣ２の位置を更新する。
【０１８３】
上記のように、情報処理装置１００は、未割当セントロイドが有る場合、未割当セントロイドにノードを割当て、全セントロイドに少なくとも１個のノードを割り当てることにより、割当ノードがないセントロイドの発生を抑制することができる。これにより、情報処理装置１００は、適切なクラスタリング情報を生成することができる。
【０１８４】
（第２の実施形態）
〔６．情報処理〕
上記第１の実施形態においては、検索数を基準として情報処理装置１００がグラフを検索（探索）し、近傍ノードを抽出する例を示したが、グラフ検索時の基準は検索数に限らず種々の基準であってもよい。例えば、検索範囲を基準としてグラフを探索してもよい。そこで、第２の実施形態では、情報処理装置１００Ａが検索範囲を基準としてグラフを検索し、近傍ノードを抽出する例について説明する。なお、第１の実施形態に係る情報処理装置１００と同様の点については、適宜説明を省略する。
【０１８５】
まず、図１４を用いて、第２の実施形態に係る情報処理の一例について説明する。図１４は、第２の実施形態に係る情報処理の一例を示す図である。図１４の例では、生成するセントロイドの数を「生成数ＧＮ」として、以下説明する。
【０１８６】
図１４の例では、情報処理装置１００Ａは、検索範囲の初期値を決定するが、検索範囲の初期値は適宜設定されてもよい。まず、情報処理装置１００Ａは、データ検索の対象（オブジェクト）に各々対応する複数のノードがエッジにより連結されたグラフを取得する（ステップＳ２１）。図１４の例では、情報処理装置１００Ａは、空間情報ＳＰ１１−２１に示すようにノードＮ１〜Ｎ１５等やエッジＥ１〜Ｅ１６等を含むグラフＧＲ１１を取得する。以下では、空間情報ＳＰ１１−２１〜ＳＰ１１−２４について、特に区別なく説明する場合には、空間情報ＳＰ１１と記載する。
【０１８７】
そして、情報処理装置１００Ａは、検索範囲を決定する処理を行う（ステップＳ２２）。情報処理装置１００Ａは、所定の対象を決定に用いるクエリ（決定用クエリ）として選択する。図１４の例では、情報処理装置１００Ａは、複数のノードを決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定する。例えば、情報処理装置１００Ａは、ノードＮ１、Ｎ６、Ｎ１５等を決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定する。なお、情報処理装置１００Ａは、種々の対象を決定用クエリとして検索を行い、その結果に基づいて、検索範囲を決定してもよい。例えば、情報処理装置１００Ａは、ランダムに選択したノードを決定用クエリとして、検索範囲を決定する処理を行ってもよい。情報処理装置１００Ａは、ノードに限らず、種々の情報を決定用クエリとして用いてもよい。例えば、セントロイド生成後の場合、情報処理装置１００Ａは、セントロイドを決定用クエリとして、検索範囲を決定する処理を行ってもよい。例えば、情報処理装置１００Ａは、ランダムに生成したベクトルを決定用クエリとして、検索範囲を決定する処理を行ってもよい。
【０１８８】
図１４の例では、情報処理装置１００Ａは、各決定用クエリに対して、グラフＧＲ１１中の全ノード数を生成数ＧＮで除した数（抽出対象数）のノードを近傍ノードとして抽出する。情報処理装置１００Ａは、決定用クエリであるノードＮ１、Ｎ６、Ｎ１５等に対して、近傍ノードを抽出する処理を行う。情報処理装置１００Ａは、ノードＮ１、Ｎ６、Ｎ１５等の近傍ノードを検索する（ステップＳ２２−１）。情報処理装置１００Ａは、ノードＮ１をクエリとして、グラフＧＲ１１を探索することにより、ノードＮ１の近傍ノードを検索し、抽出する。図１４の例では、情報処理装置１００Ａは、抽出対象数に基づいて、ノードＮ１の近傍ノードを検索する。この場合、情報処理装置１００Ａは、抽出対象数のノードを、ノードＮ１の近傍ノードとして抽出する。また、情報処理装置１００Ａは、ノードＮ６、Ｎ１５等についても同様に、抽出対象数のノードを、近傍ノードとして抽出する。例えば、情報処理装置１００Ａは、図２１に示すような処理手順により近傍ノードの探索（検索）を行う。
【０１８９】
そして、情報処理装置１００Ａは、検索範囲を決定する（ステップＳ２２−２）。情報処理装置１００Ａは、決定用クエリの検索結果に基づいて、検索範囲を決定する。例えば、情報処理装置１００Ａは、決定用クエリの各範囲の半径の平均を算出し、算出した平均を検索範囲に決定する。なお、情報処理装置１００Ａは、決定用クエリの各範囲の半径に限らず、種々の情報を用いて、検索範囲を決定してもよい。例えば、情報処理装置１００Ａは、決定用クエリの各範囲の半径のうち、最大の半径を検索範囲に決定してもよい。例えば、情報処理装置１００Ａは、決定用クエリの各範囲の半径のうち、最小の半径を検索範囲に決定してもよい。
【０１９０】
図１４の例では、情報処理装置１００Ａは、ノードＮ１の近傍ノードとして、空間情報ＳＰ１１−２２に示ようにノードＮ１に近いノードＮ１〜Ｎ３、Ｎ１３を抽出する。空間情報ＳＰ１１−２２に示す範囲ＡＲ２１は、ノードＮ１の近傍ノードのうち、ノードＮ１から最も遠い（最遠の）ノードとノードＮ１との間の距離を半径とし、ノードＮ１を中心とする超球（図では円）を模式的に示す。図１４では、範囲ＡＲ２１は、ノードＮ１を中心とし、ノードＮ１とノードＮ３との間の距離である半径ＲＶ２１とする円を示す。また、図１４中の範囲ＡＲ２２は、ノードＮ６を中心とし、ノードＮ６とその最遠の近傍ノードとの間の距離を半径ＲＶ２２とする円を示す。また、図１４中の範囲ＡＲ２３は、ノードＮ１５を中心とし、ノードＮ１５とその最遠の近傍ノードとの間の距離を半径ＲＶ２３とする円を示す。
【０１９１】
情報処理装置１００Ａは、範囲ＡＲ２１の半径ＲＶ２１や、範囲ＡＲ２２の半径ＲＶ２２や、範囲ＡＲ２３の半径ＲＶ２３等に基づいて、検索範囲を決定する。情報処理装置１００Ａは、範囲ＡＲ２１の半径ＲＶ２１や、範囲ＡＲ２２の半径ＲＶ２２や、範囲ＡＲ２３の半径ＲＶ２３等の平均を算出し、算出した平均の値を、検索範囲を示す有効半径ＲＶ２０に決定する。
【０１９２】
また、情報処理装置１００Ａは、セントロイドを生成する（ステップＳ２３）。例えば、情報処理装置１００Ａは、所定の基準に基づいて複数のセントロイドを生成する。図１４では、情報処理装置１００Ａは、生成数ＧＮのセントロイドを生成する。情報処理装置１００Ａは、ノードＮ１〜Ｎ１５等から、セントロイドとするノードを生成数ＧＮだけ選択することにより生成数ＧＮのセントロイドを生成してもよい。図１４の例では、情報処理装置１００Ａは、生成数ＧＮのセントロイドをランダムに生成するものとする。これにより、情報処理装置１００Ａは、図１４中の空間情報ＳＰ１１−２３に示すように、セントロイドＣ１〜Ｃ３等を含む複数のセントロイドを生成する。このように、「セントロイドＣ＊（＊は任意の数値）」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ＊」により識別されるセントロイドであることを示す。例えば、「セントロイドＣ１」と記載した場合、そのセントロイドはセントロイドＩＤ「Ｃ１」により識別されるセントロイド（ベクトル）である。図１４の例では、説明を簡単にするためにセントロイドＣ１〜Ｃ３のみを図示するが、情報処理装置１００Ａは、データ検索の対象数（ノード数）に基づいて、セントロイドＣ１〜Ｃ３を含む多数のセントロイドを生成してもよい。
【０１９３】
そして、情報処理装置１００Ａは、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。情報処理装置１００Ａは、セントロイドＣ１〜Ｃ３等の近傍ノードを検索する（ステップＳ２４）。情報処理装置１００Ａは、セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ１の近傍ノードを検索し、抽出する。図１４の例では、情報処理装置１００Ａは、有効半径ＲＶ２０である基準ＣＲ２１に基づいて、セントロイドＣ１の近傍ノードを検索する。例えば、情報処理装置１００Ａは、セントロイドＣ１を中心とする有効半径ＲＶ２０内の範囲ＡＲ２０に位置するノードを、セントロイドＣ１の近傍ノードとして抽出する。また、情報処理装置１００Ａは、セントロイドＣ２、Ｃ３等についても同様に、セントロイドＣ２、Ｃ３等を中心とする有効半径ＲＶ２０内の範囲ＡＲ２０に位置するノードを、セントロイドＣ２、Ｃ３等の近傍ノードとして抽出する。例えば、情報処理装置１００Ａは、図２１に示すような処理手順により近傍ノードの探索（検索）を行う。
【０１９４】
図１４の例では、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に示すように、セントロイドＣ１の近傍ノードとして、ノードＮ１〜Ｎ４、Ｎ１３等のノードを抽出し、近傍ノード一覧ＳＬ２１に追加する。また、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に示すように、セントロイドＣ２の近傍ノードとして、ノードＮ３、Ｎ５、Ｎ６等のノードを抽出し、近傍ノード一覧ＳＬ２１に追加する。また、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に示すように、セントロイドＣ３の近傍ノードとして、ノードＮ４、Ｎ７、Ｎ８〜Ｎ１１、Ｎ１４等のノードを抽出し、近傍ノード一覧ＳＬ２１に追加する。情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に対応する対応付情報等の近傍ノード群情報を記憶部１２０Ａ（図１５参照）に記憶してもよい。
【０１９５】
情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に距離が短い方から順に各対応付情報を並べて格納する。情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１中に含まれる各対応付情報を距離が短い方から順にソートする。図１４の例では、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１中に含まれる各対応付情報が距離の短い方から順に上から下に並ぶようにソートする。
【０１９６】
そして、情報処理装置１００Ａは、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う（ステップＳ２５）。図１４の例では、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に含まれるノードＮ１〜Ｎ１１、Ｎ１３、Ｎ１４を第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理を行う。情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に示す各対応付情報のうち、距離が短い方から順に処理することにより、複数のセントロイドのいずれかに割当ノードとして割り当てる。図１４の例では、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の先頭に位置する対応付情報に対応するセントロイドＣ３にノードＮ９を割当ノードとして割り当てる。
【０１９７】
なお、空間情報ＳＰ１１−２４において、各セントロイドに割り当てられた割当ノードは、セントロイドとノードとの間を実線でつなぐことにより示す。そのため、空間情報ＳＰ１１−２４においては、グラフＧＲ１１のエッジの情報の図示を省略する。空間情報ＳＰ１１−２４は、セントロイドＣ３とノードＮ９が実線でつながれており、ノードＮ９がセントロイドＣ３の割当ノードであることを示す。
【０１９８】
また、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の２番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ８を割当ノードとして割り当てる。情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の３番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ１０を割当ノードとして割り当てる。情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の４番目に位置する対応付情報に対応するセントロイドＣ１にノードＮ１を割当ノードとして割り当てる。このように、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１に含まれる対応付情報のうち、距離が短い方から順に対応するノードをセントロイドに割り当てることにより、図１４中のクラスタリング情報記憶部１２７Ａに示すようなクラスタリング情報を生成する。
【０１９９】
ここで、情報処理装置１００Ａは、上記のように、取得した全セントロイドのデータ（近傍ノード）を距離の短い順にソートし、短い順にセントロイドに割り当てる。その際、情報処理装置１００Ａは、同一のデータが出現したら、割当てをスキップする。このように、情報処理装置１００Ａは、既に割当ノードとしてセントロイドに割り当てられたノードが対象となった場合、割り当て処理を行わない。
【０２００】
図１４の例では、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の８番目に位置する対応付情報に対応するセントロイドＣ３にノードＮ４を割当ノードとして割り当てる。その後、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の９番目に位置する対応付情報を対象として処理を行う。近傍ノード一覧ＳＬ２１の９番目に位置する対応付情報のノードはノードＮ４であり、ノードＮ４は既にセントロイドＣ３の割当ノードとして割り当てられている。そのため、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の９番目に位置する対応付情報のセントロイドＣ１に、ノードＮ４を割り当てない。そして、情報処理装置１００Ａは、近傍ノード一覧ＳＬ２１の１０番目以降の対応付情報を対象に処理を繰り返す。
【０２０１】
そして、情報処理装置１００Ａは、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う（ステップＳ２６）。図１４の例では、情報処理装置１００Ａは、第１割当処理によりセントロイドに割り当てられなかったノードＮ１２、Ｎ１５を第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理を行う。
【０２０２】
例えば、情報処理装置１００Ａは、セントロイドに未割当てのノードであるノードＮ１２、Ｎ１５を、セントロイドＣ１〜Ｃ３等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、情報処理装置１００Ａは、ノードＮ１２と、セントロイドＣ１〜Ｃ３との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図１４の例では、情報処理装置１００Ａは、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１２との距離が最も近いセントロイドＣ２に、ノードＮ１２を割当ノードとして割り当てる。また、情報処理装置１００Ａは、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１５との距離が最も近い所定のセントロイドに、ノードＮ１５を割当ノードとして割り当てる。このように、情報処理装置１００Ａは、第２対象ノードであるノードＮ１２、Ｎ１５等をセントロイドに割り当てることにより、図１４中のクラスタリング情報記憶部１２７Ａに示すようなクラスタリング情報を生成する。
【０２０３】
上述したように、情報処理装置１００Ａは、グラフＧＲ１１を用いることにより、ノードＮ１〜Ｎ１５等をセントロイドＣ１〜Ｃ３等のいずれかに割り当てたクラスタリング情報を適切に生成することができる。具体的には、情報処理装置１００Ａは、各セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索し、検索範囲を基準として各セントロイドＣ１〜Ｃ３等の近傍ノードを抽出し、抽出した近傍ノードに基づいて、各ノードＮ１〜Ｎ１５等が属するクラスタを適切に決定することができる。例えば、情報処理装置１００Ａは、各セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索することにより、各セントロイドと各ノードとの類似度（距離）を比較することなく、セントロイドに割当ノードの割り当てることができる。したがって、情報処理装置１００Ａは、各セントロイドと各ノードとの類似度（距離）を比較する場合に比べて、より高速に各ノードをクラスタリングすることができる。すなわち、情報処理装置１００Ａは、複数のオブジェクト（ノード）をグラフ構造化したグラフインデックス（グラフ情報）を用いることにより、効率的なクラスタリングを可能にすることができる。
【０２０４】
〔６−１．検索範囲の更新〕
例えば、情報処理装置１００Ａは、割当処理を繰り返す場合、割当処理時の情報を用いて、次回の割当処理における検索範囲を決定してもよい。
【０２０５】
例えば、情報処理装置１００Ａは、第１割当処理において最後にセントロイドに割り当てたノードと、そのセントロイドとの間の距離（第１最遠距離ＦＤ１）を用いて、次回の割当処理における検索範囲を決定してもよい。例えば、情報処理装置１００Ａは、第１最遠距離に変更係数ＣＯ２１を乗算した値を、次回の割当処理における検索範囲に決定してもよい。例えば、情報処理装置１００Ａは、算出値「ＶＬ（＝第１最遠距離ＦＤ１＊変更係数ＣＯ２１）」を次回の割当処理における検索範囲に決定してもよい。
【０２０６】
図１４の例では、情報処理装置１００Ａは、第１割当処理において最後にセントロイドに割り当てたノードＮ７と、その割当て先のセントロイドＣ３との間の距離Ｄ３−７を用いて、次回の割当処理における検索範囲を決定してもよい。例えば、情報処理装置１００Ａは、第１最遠距離ＦＤ１である距離Ｄ３−７に変更係数ＣＯ２１である「１．２」を乗算した値を、次回の割当処理における検索範囲に決定してもよい。なお、上記は一例であり、情報処理装置１００Ａは、種々の情報を用いて、検索範囲を更新してもよい。
【０２０７】
〔７．情報処理装置の構成〕
次に、図１５を用いて、第２の実施形態に係る情報処理装置１００Ａの構成について説明する。図１５は、第２の実施形態に係る情報処理装置１００Ａの構成例を示す図である。図１５に示すように、情報処理装置１００Ａは、通信部１１０と、記憶部１２０Ａと、制御部１３０Ａとを有する。なお、情報処理装置１００Ａは、情報処理装置１００Ａの管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【０２０８】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、端末装置１０や情報提供装置５０との間で情報の送受信を行う。
【０２０９】
（記憶部１２０Ａ）
記憶部１２０Ａは、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第２の実施形態に係る記憶部１２０Ａは、図１５に示すように、オブジェクト情報記憶部１２１と、基準情報記憶部１２２Ａと、変更条件情報記憶部１２３Ａと、グラフデータ記憶部１２４と、起点用情報記憶部１２５と、セントロイド記憶部１２６と、クラスタリング情報記憶部１２７Ａとを有する。
【０２１０】
（基準情報記憶部１２２Ａ）
第２の実施形態に係る基準情報記憶部１２２Ａは、グラフ検索の基準に関する各種情報を記憶する。図１６は、第２の実施形態に係る基準情報記憶部の一例を示す図である。図１６に示す基準情報記憶部１２２Ａは、「基準ＩＤ」、「対象」、「値」といった項目が含まれる。
【０２１１】
「基準ＩＤ」は、グラフ検索の基準を識別する情報を示す。「対象」は、基準ＩＤにより識別される基準の対象を示す。また、「値」は、対応する基準として用いる具体的な値を示す。
【０２１２】
図１６の例では、基準ＩＤ「ＣＲ２１」により識別される基準（基準ＣＲ２１）は、検索範囲を対象とする基準であることを示す。基準ＣＲ２１として用いられる対象は、検索範囲であり、その値は「ＲＶ２０」であることを示す。なお、図１６に示す例では、対象「検索範囲」の値を「ＲＶ２０」といった抽象的な符号で示すが、検索範囲は、種々の具体的に数値であってもよい。
【０２１３】
また、図１６の例では、基準ＩＤ「ＣＲ２２」により識別される基準（基準ＣＲ２２）は、対象範囲を変更する際の変更係数を対象とする基準であることを示す。基準ＣＲ２２として用いられる基準は、変更係数であり、その値は「ＣＯ２１」であることを示す。なお、図１６に示す例では、対象「変更係数」の値を「ＣＯ２１」といった抽象的な符号で示すが、変更係数は、「１．２」や「２．５」といった種々の具体的に数値であってもよい。例えば、変更係数は、検索範囲を変更する際に、検索範囲を決定する値に乗算される所定の係数を示す。
【０２１４】
なお、基準情報記憶部１２２Ａは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０２１５】
（変更条件情報記憶部１２３Ａ）
第２の実施形態に係る変更条件情報記憶部１２３Ａは、基準の変更に関する変更条件に関する各種情報を記憶する。図１７は、第２の実施形態に係る変更条件情報記憶部の一例を示す図である。図１７に示す変更条件情報記憶部１２３Ａは、「変更条件ＩＤ」、「決定用情報」、「変更情報」といった項目を有する。
【０２１６】
「変更条件ＩＤ」は、基準の変更に関する条件を識別する情報を示す。「決定用情報」は、基準を変更するかの決定（判定）に用いる情報が記憶される。「決定用情報」には、「対象情報」、「閾値」といった項目が含まれる。「対象情報」は、基準を変更するかの決定に用いられる対象を示す。「閾値」は、判定に用いる閾値を示す。なお、図１７に示す例では、「閾値」の値は、「ＴＨ２１」や「ＴＨ２２」といった抽象的な符号を図示するが、「１００」や「５０００」や「５％」や「０．２」等の具体的な数値であるものとする。
【０２１７】
「変更情報」は、変更される基準やその変更内容を示す情報が記憶される。「変更情報」には、「変更対象」、「変更内容」といった項目が含まれる。「変更対象」は、対応する条件を満たす場合に変更される変更対象となる基準を示す。「変更対象」には、対象とする基準を識別する情報（基準ＩＤ等）が記憶される。「変更内容」は、対応する条件を満たす場合に基準を変更する具体的な内容を示す。なお、図１７に示す例では、「変更内容」は、「ＡＩＮＦ２１」といった抽象的な符号を図示するが、「＋１」や「５増加」や「２減少」や「１０％増加」や「５％減少」等の種々の変更内容であってもよい。
【０２１８】
図１７の例では、変更条件ＩＤ「ＡＣＤ２１」により識別される変更条件（変更条件ＡＣＤ２１）は、近傍ノード数に関する情報を判定に用いる条件であることを示す。変更条件ＡＣＤ２１は、閾値「ＴＨ２１」であることを示す。また、変更条件ＡＣＤ２１を満たす場合、変更対象となる基準は、基準ＣＲ２１であることを示す。変更条件ＡＣＤ２１を満たす場合、基準ＣＲ２１は変更内容ＡＩＮＦ２１に応じて変更されることを示す。例えば、変更内容ＡＩＮＦ２１が「２増加」である場合、情報処理装置１００Ａは、変更条件ＡＣＤ２１を満たすと判定した場合に、基準ＣＲ２１である検索範囲の値を２増加させる。
【０２１９】
なお、変更条件情報記憶部１２３Ａは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０２２０】
（クラスタリング情報記憶部１２７Ａ）
第２の実施形態に係るクラスタリング情報記憶部１２７Ａは、セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。例えば、クラスタリング情報記憶部１２７Ａは、セントロイド情報記憶部１２２に記憶された各セントロイドに対応付けられたオブジェクトを識別する各種情報を記憶する。図１８は、第２の実施形態に係るクラスタリング情報記憶部の一例を示す図である。図１８の例では、クラスタリング情報記憶部１２７Ａは、「セントロイドＩＤ」、「ノードＩＤ」といった項目が含まれる。
【０２２１】
「セントロイドＩＤ」は、セントロイドを識別するための識別情報を示す。また、「ノードＩＤ」は、セントロイドＩＤにより識別されるセントロイドに対応付けられたノード（オブジェクト）を示す。
【０２２２】
図１８に示す例においては、セントロイドＩＤ「Ｃ１」により識別されるセントロイド（セントロイドＣ１）に対応付けられたノード（オブジェクト）は、ノードＮ１、Ｎ２、Ｎ３、Ｎ４、Ｎ１３等であることを示す。また、セントロイドＩＤ「Ｃ２」により識別されるセントロイド（セントロイドＣ２）に対応付けられたノード（オブジェクト）は、ノードＮ５、Ｎ６、Ｎ１２等であることを示す。
【０２２３】
なお、クラスタリング情報記憶部１２７Ａは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０２２４】
（制御部１３０Ａ）
図１５の説明に戻って、制御部１３０Ａは、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）やＧＰＵ（Graphics  Processing  Unit）等によって、情報処理装置１００Ａ内部の記憶装置に記憶されている各種プログラム（情報処理プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０Ａは、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。
【０２２５】
図１５に示すように、制御部１３０Ａは、取得部１３１と、抽出部１３２Ａと、決定部１３３Ａと、生成部１３４と、検索部１３５と、提供部１３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０Ａの内部構成は、図１５に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０２２６】
（抽出部１３２Ａ）
抽出部１３２Ａは、各種情報を抽出する。抽出部１３２Ａは、各種情報を選択する。抽出部１３２Ａは、記憶部１２０Ａに記憶された各種情報に基づいて、種々の情報を抽出する。抽出部１３２Ａは、記憶部１２０Ａに記憶された各種情報に基づいて、種々の情報を選択する。
【０２２７】
抽出部１３２Ａは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。抽出部１３２Ａは、各セントロイドに対して、所定の基準により決定される検索範囲の近傍ノードを抽出する。
【０２２８】
抽出部１３２Ａは、グラフを探索することにより、近傍ノードを抽出する。抽出部１３２Ａは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。抽出部１３２Ａは、決定部１３３Ａにより決定された検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
【０２２９】
なお、抽出部１３２Ａは、検索部１３５に要求することにより、検索部１３５に情報を探索させ、検索部１３５が探索した探索結果を用いてもよい。抽出部１３２Ａは、検索部１３５が探索した探索結果から情報を抽出してもよい。抽出部１３２Ａは、グラフに含まれる各ノードの近傍ノードに関する情報を参照することにより、グラフに含まれる各ノードに対応する近傍ノードを抽出してもよい。
【０２３０】
図１４の例では、抽出部１３２Ａは、各決定用クエリに対して、グラフＧＲ１１中の全ノード数を生成数ＧＮで除した数（抽出対象数）のノードを近傍ノードとして抽出する。抽出部１３２Ａは、決定用クエリであるノードＮ１、Ｎ６、Ｎ１５等に対して、近傍ノードを抽出する処理を行う。抽出部１３２Ａは、ノードＮ１、Ｎ６、Ｎ１５等の近傍ノードを検索する。抽出部１３２Ａは、ノードＮ１をクエリとして、グラフＧＲ１１を探索することにより、ノードＮ１の近傍ノードを検索し、抽出する。図１４の例では、抽出部１３２Ａは、抽出対象数に基づいて、ノードＮ１の近傍ノードを検索する。この場合、抽出部１３２Ａは、抽出対象数のノードを、ノードＮ１の近傍ノードとして抽出する。また、抽出部１３２Ａは、ノードＮ６、Ｎ１５等についても同様に、抽出対象数のノードを、近傍ノードとして抽出する。例えば、抽出部１３２Ａは、図２１に示すような処理手順により近傍ノードの探索（検索）を行う。
【０２３１】
抽出部１３２Ａは、各セントロイドの近傍に位置する近傍ノードを抽出する処理を各セントロイドについて行う。抽出部１３２Ａは、セントロイドＣ１〜Ｃ３等の近傍ノードを検索する。抽出部１３２Ａは、セントロイドＣ１〜Ｃ３等をクエリとして、グラフＧＲ１１を探索することにより、セントロイドＣ１の近傍ノードを検索し、抽出する。図１４の例では、抽出部１３２Ａは、有効半径ＲＶ２０である基準ＣＲ２１に基づいて、セントロイドＣ１の近傍ノードを検索する。例えば、抽出部１３２Ａは、セントロイドＣ１を中心とする有効半径ＲＶ２０内の範囲ＡＲ２０に位置するノードを、セントロイドＣ１の近傍ノードとして抽出する。また、抽出部１３２Ａは、セントロイドＣ２、Ｃ３等についても同様に、セントロイドＣ２、Ｃ３等を中心とする有効半径ＲＶ２０内の範囲ＡＲ２０に位置するノードを、セントロイドＣ２、Ｃ３等の近傍ノードとして抽出する。
【０２３２】
（決定部１３３Ａ）
決定部１３３Ａは、各種情報を決定する。決定部１３３Ａは、各種情報を判定する。決定部１３３Ａは、各種情報を変更する。決定部１３３Ａは、各種情報を更新する。決定部１３３Ａは、記憶部１２０Ａに記憶された各種情報に基づいて、種々の情報を決定する。決定部１３３Ａは、記憶部１２０Ａに記憶された各種情報に基づいて、種々の情報を判定する。決定部１３３Ａは、記憶部１２０Ａに記憶された各種情報に基づいて、種々の情報を変更する。決定部１３３Ａは、各種情報を更新する。
【０２３３】
決定部１３３Ａは、種々の情報を用いて、変更条件を満たすかを判定する。決定部１３３Ａは、種々の情報を用いて、基準を変更する変更条件を満たすかを判定する。決定部１３３Ａは、判定結果に基づいて、種々の情報や処理を変更する。決定部１３３Ａは、判定結果に基づいて、所定の基準を変更する。決定部１３３Ａは、判定結果に基づいて、所定の処理をスキップさせる。
【０２３４】
決定部１３３Ａは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。決定部１３３Ａは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。決定部１３３Ａは、抽出部１３２Ａによる近傍ノードの抽出結果に基づいて、検索範囲を決定する。決定部１３３Ａは、抽出部１３２Ａによる近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定する。
【０２３５】
決定部１３３Ａは、検索範囲を決定する。決定部１３３Ａは、決定用クエリの検索結果に基づいて、検索範囲を決定する。例えば、決定部１３３Ａは、決定用クエリの各範囲の半径の平均を算出し、算出した平均を検索範囲に決定する。
【０２３６】
決定部１３３Ａは、範囲ＡＲ２１の半径ＲＶ２１や、範囲ＡＲ２２の半径ＲＶ２２や、範囲ＡＲ２３の半径ＲＶ２３等に基づいて、検索範囲を決定する。決定部１３３Ａは、範囲ＡＲ２１の半径ＲＶ２１や、範囲ＡＲ２２の半径ＲＶ２２や、範囲ＡＲ２３の半径ＲＶ２３等の平均を算出し、算出した平均の値を、検索範囲を示す有効半径ＲＶ２０に決定する。
【０２３７】
第２の実施形態に係る生成部１３４は、セントロイドに未割当てのノードであるノードＮ１２、Ｎ１５を、セントロイドＣ１〜Ｃ３等のうち距離が最も近いセントロイドに割当ノードとして割り当てる。例えば、生成部１３４は、ノードＮ１２と、セントロイドＣ１〜Ｃ３との間の距離を比較し、距離が最も近いセントロイドに割当ノードとして割り当てる。図１４の例では、生成部１３４は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１２との距離が最も近いセントロイドＣ２に、ノードＮ１２を割当ノードとして割り当てる。また、生成部１３４は、セントロイドＣ１〜Ｃ３等のうち、ノードＮ１５との距離が最も近い所定のセントロイドに、ノードＮ１５を割当ノードとして割り当てる。このように、生成部１３４は、第２対象ノードであるノードＮ１２、Ｎ１５等をセントロイドに割り当てることにより、図１４中のクラスタリング情報記憶部１２７Ａに示すようなクラスタリング情報を生成する。
【０２３８】
〔８．検索例〕
ここで、上述したグラフデータを用いた検索の一例を示す。なお、生成したグラフデータを用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図２１を一例として説明する。図２１は、グラフデータを用いた検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置１００の検索部１３５によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、情報処理装置１００（抽出部１３２や検索部１３５）が検索処理を行う。なお、検索サービスを提供しない場合、情報処理装置１００は検索部１３５を有しなくてもよい。以下で説明する処理の検索クエリは、追加ノードや対象ノードやユーザが指定したオブジェクト等であってもよい。
【０２３９】
ここでは、近傍オブジェクト集合Ｎ（Ｇ，ｙ）は、ノードｙに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「Ｇ」は、所定のグラフデータ（例えば、第２グラフＧＲ１２等）であってもよい。例えば、情報処理装置１００は、ｋ近傍検索処理を実行する。
【０２４０】
例えば、情報処理装置１００は、超球の半径ｒを∞（無限大）に設定し（ステップＳ３００）、既存のオブジェクト集合から部分集合Ｓを抽出する（ステップＳ３０１）。例えば、情報処理装置１００は、ルートノードとして選択されたオブジェクト（ノード）を部分集合Ｓとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップＳ３０１において抽出されたオブジェクト集合Ｓに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Ｒの初期集合にも含められる。
【０２４１】
次に、情報処理装置１００は、オブジェクト集合Ｓに含まれるオブジェクトの中で、検索クエリオブジェクトをｙとするとオブジェクトｙとの距離が最も短いオブジェクトを抽出し、オブジェクトｓとする（ステップＳ３０２）。例えば、情報処理装置１００は、ルートノードとして選択されたオブジェクト（ノード）のみがＳの要素の場合には、結果的にルートノードがオブジェクトｓとして抽出される。次に、情報処理装置１００は、オブジェクトｓをオブジェクト集合Ｓから除外する（ステップＳ３０３）。
【０２４２】
次に、情報処理装置１００は、オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えるか否かを判定する（ステップＳ３０４）。ここで、εは拡張要素であり、ｒ（１＋ε）は、探索範囲（この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる）の半径を示す値である。オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超える場合（ステップＳ３０４：Ｙｅｓ）、情報処理装置１００は、オブジェクト集合Ｒをオブジェクトｙの近傍オブジェクト集合として出力し（ステップＳ３０５）、処理を終了する。
【０２４３】
オブジェクトｓと検索クエリオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えない場合（ステップＳ３０４：Ｎｏ）、情報処理装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトの中からオブジェクト集合Ｃに含まれないオブジェクトを一つ選択し、選択したオブジェクトｕを、オブジェクト集合Ｃに格納する（ステップＳ３０６）。オブジェクト集合Ｃは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
【０２４４】
次に、情報処理装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下であるか否かを判定する（ステップＳ３０７）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下である場合（ステップＳ３０７：Ｙｅｓ）、情報処理装置１００は、オブジェクトｕをオブジェクト集合Ｓに追加する（ステップＳ３０８）。また、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下ではない場合（ステップＳ３０７：Ｎｏ）、情報処理装置１００は、ステップＳ３０９の判定（処理）を行う。
【０２４５】
次に、情報処理装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下であるか否かを判定する（ステップＳ３０９）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒを超える場合（ステップＳ３０９：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。すなわち、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下ではない場合、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。
【０２４６】
オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下である場合（ステップＳ３０９：Ｙｅｓ）、情報処理装置１００は、オブジェクトｕをオブジェクト集合Ｒに追加する（ステップＳ３１０）。そして、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超えるか否かを判定する（ステップＳ３１１）。所定数ｋｓは、任意に定められる自然数である。例えば、ｋｓは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ｋｓは、無限大に設定されてもよい。例えば、ｋｓ＝４であってもよい。オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超えない場合（ステップＳ３１１：Ｎｏ）、情報処理装置１００は、ステップＳ３１３の判定（処理）を行う。
【０２４７】
オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超える場合（ステップＳ３１１：Ｙｅｓ）、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトを、オブジェクト集合Ｒから除外する（ステップＳ３１２）。
【０２４８】
次に、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致するか否かを判定する（ステップＳ３１３）。オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致しない場合（ステップＳ３１３：Ｎｏ）、情報処理装置１００は、ステップＳ３１５の判定（処理）を行う。また、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致する場合（ステップＳ３１３：Ｙｅｓ）、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトと、オブジェクトｙとの距離を、新たなｒに設定する（ステップＳ３１４）。
【０２４９】
そして、情報処理装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えたか否かを判定する（ステップＳ３１５）。オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えていない場合（ステップＳ３１５：Ｎｏ）、情報処理装置１００は、ステップＳ３０６に戻って処理を繰り返す。
【０２５０】
オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えた場合（ステップＳ３１５：Ｙｅｓ）、情報処理装置１００は、オブジェクト集合Ｓが空集合であるか否かを判定する（ステップＳ３１６）。オブジェクト集合Ｓが空集合でない場合（ステップＳ３１６：Ｎｏ）、情報処理装置１００は、ステップＳ３０２に戻って処理を繰り返す。また、オブジェクト集合Ｓが空集合である場合（ステップＳ３１６：Ｙｅｓ）、情報処理装置１００は、オブジェクト集合Ｒを出力し、処理を終了する（ステップＳ３１７）。例えば、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクト（ノード）を追加ノード（入力オブジェクトｙ）に対応する近傍ノードとして選択してもよい。例えば、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクト（ノード）を対象ノード（入力オブジェクトｙ）に対応する近傍ノードとして抽出（選択）してもよい。また、例えば、情報処理装置１００は、オブジェクト集合Ｒに含まれるオブジェクト（ノード）を検索クエリ（入力オブジェクトｙ）に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
【０２５１】
〔９．効果〕
上述してきたように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、取得部１３１と、抽出部１３２、１３２Ａと、生成部１３４とを有する。取得部１３１は、データ検索の対象となる複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフと、複数のセントロイドとを取得する。抽出部１３２、１３２Ａは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。生成部１３４は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てる割当処理により、複数のノードの各々を割当ノードとして複数のセントロイドのいずれかに割り当てたクラスタリング情報を生成する。
【０２５２】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のセントロイドの各々をクエリとして、グラフを検索することにより、各セントロイドの近傍に位置する近傍ノードを抽出する。生成部１３４は、複数のセントロイドの各々に、対応する検索で抽出された近傍ノードの各々を対応付けた対応付情報を含む近傍ノード群情報に基づいて、複数のセントロイドのいずれかに複数のノードの各々を割当ノードとして割り当てることにより、効率的なクラスタリングを可能にすることができる。
【０２５３】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、クラスタリング情報を生成する。
【０２５４】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、近傍ノード群情報において、ノードが対応付けられたセントロイドにノードを割当ノードとして割り当てる割当処理により、効率的なクラスタリングを可能にすることができる。
【０２５５】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、クラスタリング情報を生成する。
【０２５６】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、一のセントロイドの近傍ノードとして抽出された一のノードが、他のセントロイドの近傍ノードとして抽出された場合、一のノードが近傍ノードとして抽出されたセントロイド群のうち、一のノードとの距離が最も近いセントロイドに一のノードを割当ノードとして割り当てることにより、効率的なクラスタリングを可能にすることができる。
【０２５７】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理と、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理とを含む割当処理により、クラスタリング情報を生成する。
【０２５８】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、近傍ノード群情報に含まれるノードを第１対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第１割当処理と、第１割当処理によりセントロイドに割り当てられなかったノードを第２対象ノードとして、複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理により、効率的なクラスタリングを可能にすることができる。
【０２５９】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、複数のセントロイドに関する情報に基づいて、第２対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理により、クラスタリング情報を生成する。
【０２６０】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のセントロイドに関する情報に基づいて、第２対象ノードを複数のセントロイドのいずれかに割当ノードとして割り当てる第２割当処理により、効率的なクラスタリングを可能にすることができる。
【０２６１】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、第２対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第２割当処理により、クラスタリング情報を生成する。
【０２６２】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、第２対象ノードを、複数のセントロイドのうち距離が最も近いセントロイドに割当ノードとして割り当てる第２割当処理により、効率的なクラスタリングを可能にすることができる。
【０２６３】
また、第１の実施形態に係る情報処理装置１００において、抽出部１３２は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出する。生成部１３４は、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、クラスタリング情報を生成する。
【０２６４】
このように、第１の実施形態に係る情報処理装置１００は、各セントロイドに対して、所定の基準により決定される検索数の近傍ノードを抽出し、各セントロイドに対応する検索数の近傍ノードに基づく割当処理により、効率的なクラスタリングを可能にすることができる。
【０２６５】
また、第１の実施形態に係る情報処理装置１００は、決定部１３３を有する。決定部１３３は、抽出部１３２による近傍ノードの抽出結果に基づいて、検索数を決定する。
【０２６６】
このように、第１の実施形態に係る情報処理装置１００は、近傍ノードの抽出結果に基づいて、検索数を決定し、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２６７】
また、第１の実施形態に係る情報処理装置１００において、決定部１３３は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更する。
【０２６８】
このように、第１の実施形態に係る情報処理装置１００は、近傍ノードとして抽出されたノードの個数または複数のノードにおける近傍ノードの割合に基づくスコアに応じて、検索数を変更し、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２６９】
また、第１の実施形態に係る情報処理装置１００において、決定部１３３は、スコアが所定値未満である場合、検索数を増加させる。
【０２７０】
このように、第１の実施形態に係る情報処理装置１００は、スコアが所定値未満である場合、検索数を増加させ、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２７１】
また、第１の実施形態に係る情報処理装置１００において、決定部１３３は、スコアが所定値以上である場合、検索数を減少させる。
【０２７２】
このように、第１の実施形態に係る情報処理装置１００は、スコアが所定値以上である場合、検索数を減少させ、検索数を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２７３】
また、第１の実施形態に係る情報処理装置１００において、生成部１３４は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成する。
【０２７４】
このように、第１の実施形態に係る情報処理装置１００は、近傍ノード群情報のうち、対応付けられたセントロイドとノードとの間の距離が、所定の閾値を超えるセントロイドとノードとの組合せに対応する対応付情報以外を除く近傍ノード群情報に基づいて、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２７５】
また、第１の実施形態に係る情報処理装置１００において、生成部１３４は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成する。
【０２７６】
このように、第１の実施形態に係る情報処理装置１００は、近傍ノード群情報において、各セントロイドを対象として、セントロイドと当該セントロイドの最も遠い近傍ノードとの間の距離のうち、最も近い距離を所定の閾値として、クラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２７７】
また、第２の実施形態に係る情報処理装置１００Ａにおいて、抽出部１３２Ａは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
【０２７８】
このように、第２の実施形態に係る情報処理装置１００Ａは、各セントロイドに対して、所定の基準により決定される検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出することにより、効率的なクラスタリングを可能にすることができる。
【０２７９】
また、第２の実施形態に係る情報処理装置１００Ａは、決定部１３３Ａを有する。決定部１３３Ａは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。抽出部１３２Ａは、決定部１３３Ａにより決定された検索範囲によりグラフを検索することにより、各セントロイドの近傍ノードを抽出する。
【０２８０】
このように、第２の実施形態に係る情報処理装置１００Ａは、所定の基準により決定したクエリを用いたグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２８１】
また、第２の実施形態に係る情報処理装置１００Ａにおいて、決定部１３３Ａは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定する。
【０２８２】
このように、第２の実施形態に係る情報処理装置１００Ａは、複数のノードまたは複数のセントロイドからクエリを選択し、選択したクエリをグラフの検索により抽出されたノードと、当該クエリとの間の距離に基づいて、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２８３】
また、第２の実施形態に係る情報処理装置１００Ａにおいて、決定部１３３Ａは、抽出部１３２Ａによる近傍ノードの抽出結果に基づいて、検索範囲を決定する。
【０２８４】
このように、第２の実施形態に係る情報処理装置１００Ａは、近傍ノードの抽出結果に基づいて、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２８５】
また、第２の実施形態に係る情報処理装置１００Ａにおいて、決定部１３３Ａは、抽出部１３２Ａによる近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定する。
【０２８６】
このように、第２の実施形態に係る情報処理装置１００Ａは、近傍ノードの抽出結果に基づく値に、所定の増加を行うことにより、検索範囲を決定し、検索範囲を動的に変更することで、効率的なクラスタリングを可能にすることができる。
【０２８７】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、複数のセントロイドを生成する。取得部１３１は、生成部１３４により生成された複数のセントロイドを取得する。
【０２８８】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２８９】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
【０２９０】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２９１】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
【０２９２】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のノードから所定の条件に基づいてノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２９３】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成する。
【０２９４】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、複数のノードから、ランダムサンプリングにより選択されたノードをセントロイドとして選択することにより、複数のセントロイドを生成し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２９５】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新する。
【０２９６】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、割当処理の後において、各セントロイドに割り当てられた割当ノードに基づいて、各セントロイドを更新し、生成したセントロイドを用いてクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０２９７】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てる。
【０２９８】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、割当処理の後において、割当ノードが割り当てられていないセントロイドである未割当セントロイドがある場合、所定の割当基準に基づいて決定されるノードを、未割当セントロイドに割当ノードとして割り当てることにより、ノードがないセントロイドが生じることを抑制し、効率的なクラスタリングを可能にすることができる。
【０２９９】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとする。
【０３００】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、割当処理の後において、複数のノードのうち、割り当てられたセントロイドとの間の距離が最も遠いノードを、未割当セントロイドの割当ノードとすることにより、ノードがないセントロイドが生じることを抑制し、効率的なクラスタリングを可能にすることができる。
【０３０１】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、２回目以降の割当処理によるクラスタリング情報の生成を繰り返し、２回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了する。
【０３０２】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、割当処理により生成したクラスタリング情報が所定の終了条件を満たさない場合、２回目以降の割当処理によるクラスタリング情報の生成を繰り返し、２回目以降の割当処理により生成したクラスタリング情報が所定の終了条件を満たす場合または割当処理の実行回数が所定の回数に達した場合、割当処理を終了することにより、効率的なクラスタリングを可能にすることができる。
【０３０３】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成する。
【０３０４】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、割当処理の実行回数が所定の回数に達したことにより割当処理を終了した場合、グラフの検索に関するパラメータ値を変更し、変更後のパラメータ値を用いた割当処理によりクラスタリング情報を生成することにより、効率的なクラスタリングを可能にすることができる。
【０３０５】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、グラフの検索範囲に関連するパラメータ値を変更する。
【０３０６】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、グラフの検索範囲に関連するパラメータ値を変更することにより、効率的なクラスタリングを可能にすることができる。
【０３０７】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、グラフの検索の拡張要素に関するパラメータ値を変更する。
【０３０８】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、グラフの検索の拡張要素に関するパラメータ値を変更することにより、効率的なクラスタリングを可能にすることができる。
【０３０９】
また、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａにおいて、生成部１３４は、グラフの検索の拡張要素に関するパラメータ値を増加する。
【０３１０】
このように、第１の実施形態に係る情報処理装置１００及び第２の実施形態に係る情報処理装置１００Ａは、グラフの検索の拡張要素に関するパラメータ値を増加することにより、効率的なクラスタリングを可能にすることができる。
【０３１１】
〔１０．ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置１００は、例えば図２２に示すような構成のコンピュータ１０００によって実現される。図２２は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０３１２】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０３１３】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０３１４】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０３１５】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０３１６】
例えば、コンピュータ１０００が第１の実施形態に係る情報処理装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムを実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムを記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０３１７】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０３１８】
〔１１．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０３１９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０３２０】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０３２１】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０３２２】
１  情報処理システム
１００  情報処理装置
１２１  オブジェクト情報記憶部
１２２  基準情報記憶部
１２３  変更条件情報記憶部
１２４  グラフデータ記憶部
１２５  起点用情報記憶部
１２６  セントロイド記憶部
１２７  クラスタリング情報記憶部
１３０  制御部
１３１  取得部
１３２  抽出部
１３３  決定部
１３４  生成部
１３５  検索部
１３６  提供部
１０  端末装置
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2020101893.tif 000003
【図２】
2020101893.tif 000004
【図３】
2020101893.tif 000005
【図４】
2020101893.tif 000006
【図５】
2020101893.tif 000007
【図６】
2020101893.tif 000008
【図７】
2020101893.tif 000009
【図８】
2020101893.tif 000010
【図９】
2020101893.tif 000011
【図１０】
2020101893.tif 000012
【図１１】
2020101893.tif 000013
【図１２】
2020101893.tif 000014
【図１３】
2020101893.tif 000015
【図１４】
2020101893.tif 000016
【図１５】
2020101893.tif 000017
【図１６】
2020101893.tif 000018
【図１７】
2020101893.tif 000019
【図１８】
2020101893.tif 000020
【図１９】
2020101893.tif 000021
【図２０】
2020101893.tif 000022
【図２１】
2020101893.tif 000023
【図２２】
2020101893.tif 000024