【文献】
劉 健全,類似度の階層関係に基づく木構造索引を用いた効率的な類似検索,第5回データ工学と情報マネジメントに関するフォーラム (第11回日本データベース学会年次大会) [online],日本,2013年 5月31日,pp.1-8
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
次に、本発明の実施形態について図面を参照して説明する。
【0018】
各図面は、本発明の実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
【0019】
<第1の実施形態>
まず、第1の実施形態に係る情報処理装置10の構成について説明する。
【0020】
[構成の説明]
図1は、本発明における第1の実施形態に係る情報処理装置10の構成の一例を示すブロック図である。ただし、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【0021】
図1を参照すると、情報処理装置10は、データ処理部100と、木構造保持部110と、類似度保持部120と、中間結果保持部130とを含む。ここで、保持とは、記憶又は保存を意味する。
【0022】
木構造保持部110は、情報処理装置10の処理対象である木構造として構築されたデータ(以下、木構造と呼ぶ)を保持する。木構造は、ノード(例えば、ルートノード及びリーフノード)とエッジとを含む。なお、各ノードは、データ(例えば、代表データ)を含む。ここで、「代表データ」とは、ノードに含まれるデータにおいて、ノードを代表するデータである。
【0023】
類似度保持部120は、エッジに関連付けられた(付与された)類似度(例えば、類似半径)を保持する。
【0024】
木構造保持部110と類似度保持部120は、予め、後ほど説明するデータ処理部100における動作の前に、上記で説明したデータを保持すればよい。例えば、情報処理装置10のユーザが、処理に先立ち、上記データを各保持部に記憶させればよい。
【0025】
中間結果保持部130は、後ほど説明するデータ処理部100の各部のグループ化処理に基づいて生成される結果(以下、「中間結果」と呼ぶ)を保持する。
【0026】
データ処理部100は、木構造保持部110が保持する木構造を探索する。そして、データ処理部100は、木構造保持部110が保持する木構造と、後ほど説明する受信したグループ化閾値140と、類似度保持部120が保持する類似度とを用いて、木構造のグループ化を実行する。データ処理部100は、グループ化処理の結果(中間結果)を、中間結果保持部130に保持させる。そして、データ処理部100は、グループ化の処理の終了後、中間結果保持部130が保持する中間結果を、グループ化結果150として出力する。
【0027】
そのため、データ処理部100は、木探索部102と、グループ化判定部103と、サブツリーグループ化部104と、リーフノードグループ化部105と、グループ間併合部106と、代表データ併合部107とを含む。さらに、データ処理部100は、グループ化閾値受信部101と、グループ化結果出力部108とを含む。データ処理部100に含まれる各構成は、必要に応じて、木構造保持部110、類似度保持部120、及び中間結果保持部130に保持されたデータを用いる。また、各構成は、必要に応じて、中間結果保持部130にデータを保持させる。以下の説明では、説明の便宜のため、各構成が、各保持部にデータの保持させる動作及びデータを読み出す動作を省略する場合もある。
【0028】
グループ化閾値受信部101は、図示しない外部の装置からグループ化閾値140を受信する。例えば、グループ化閾値受信部101は、ユーザが操作する装置からグループ化閾値140を受信すればよい。グループ化閾値受信部101は、グループ化閾値140をグループ化判定部103に渡す。あるいは、グループ化閾値受信部101は、グループ化判定部103の要求に対して、グループ化閾値140を送信してもよい。あるいは、グループ化閾値受信部101は、図示しない記憶部にグループ化閾値140を記憶させてもよい。この場合、グループ化判定部103は、その記憶部からグループ化閾値140を読み出せばよい。このように、本実施形態は、グループ化閾値140を保存する構成に制限はない。
【0029】
木探索部102は、木構造保持部110に保持された木構造(ツリー)を、その構造に従って、たどる。そして、木探索部102は、現在たどっているノード、データ又はエッジつまり、探索中のノード、データ、又はエッジ(以下、まとめて「探索対象」と呼ぶ)を基に、後述する各部に処理を依頼する。
【0030】
グループ化判定部103は、木探索部102が現在たどっている木構造のエッジ(探索対象となっているエッジ)に関連付けられた類似度(例えば、類似半径)と、グループ化閾値140とを比較する。グループ化判定部103は、比較結果を基に、探索対象のエッジに関連付けられているノード群が、グループ化可能か否かを判定する。つまり、グループ化閾値140は、グループ化可能か否かの判定に用いられる閾値である。
【0031】
サブツリーグループ化部104は、グループ化が可能なサブツリーをグループ化する。つまり、サブツリーグループ化部104は、グループ化が可能なサブツリーを用いて、グループを作成する。ここで、グループ化が可能なサブツリーとは、グループ化判定部103がグループ化閾値140以上の類似度と判定したエッジに関連付けられたサブツリーである。
【0032】
リーフノードグループ化部105は、リーフノード(葉ノード)にあるデータをグループ化する。つまり、リーフノードグループ化部105は、リーフノードのデータを用いて、グループを作成する。
【0033】
グループ間併合部106は、併合可能なグループを、一つのグループに併合する。つまり、グループ間併合部106は、作成されたグループを基に、グループを編集する。
【0034】
代表データ併合部107は、代表データを、帰属するグループに併合する。つまり、代表データ併合部107は、作成されたグループと代表データとを基に、グループを編集する。
【0035】
グループ化結果出力部108は、中間結果保持部130に保持された中間結果を読み出し、グループ化結果150として出力する。例えば、グループ化結果出力部108は、ユーザが操作する装置にグループ化結果150を送信する。あるいは、グループ化結果出力部108は、図示しない表示機器に、グループ化結果150を表示してもよい。
【0036】
[動作の説明]
次に、図面を参照して、本実施形態の動作について説明する。
【0037】
図2は、本実施形態に係る情報処理装置10の動作の一例を示す流れ図である。
【0038】
まず、グループ化閾値受信部101は、グループ化閾値140を受信する。
【0039】
そして、木探索部102は、木構造保持部110に保持されている木構造において、ルートノードから探索を開始する(ステップA201)。
【0040】
木探索部102は、現在のノードがリーフノードであるか否かを判定する(ステップA202)。
【0041】
リーフノードでない場合(ステップA202でNo)、木探索部102は、そのノードに、未検査の代表データがあるか否かを判定する(ステップA203)。
【0042】
未検査の代表データがある場合(ステップA203でYes)、木探索部102は、未検査の代表データの中から、代表データを1つ選ぶ。そして、木探索部102は、グループ化判定部103に処理を依頼する。
【0043】
グループ化判定部103は、類似度保持部120が保持する類似度を参照して、選択された代表データのエッジに関連付けられた類似度が、グループ化閾値140以上か否かを判定(検査)する(ステップA204)。グループ化判定部103は、判定結果を木探索部102に返す。
【0044】
代表データの類似度が、グループ化閾値140以上の場合(ステップA204でYes)、その代表データの下位にあるノードのデータは、その代表データからグループ化閾値140以上の類似度を持っている。そこで、木探索部102は、判定結果に基づき、サブツリーグループ化部104に処理を依頼する。サブツリーグループ化部104は、代表データと代表データの下位にあるノードのデータとを、グループ化する(グループを作成する)。そして、サブツリーグループ化部104は、その結果(グループの情報)を、中間結果保持部130に出力する(ステップA205)。そして、情報処理装置10の動作は、ステップA203に戻る。なお、代表データとその代表データの下位にあるノードのデータとを含むサブツリーを、「その代表データ以下のサブツリー」と呼ぶ。
【0045】
代表データの類似度が、グループ化閾値140より小さい場合(ステップA204でNo)、木探索部102は、探索対象を、そのエッジの先にある子ノードに移動する(ステップA206)。そして、木探索部102は、ステップA202に戻り、同様の動作を繰り返す。
【0046】
探索が、リーフノードまで達した場合(ステップA202でYes)、木探索部102は、リーフノードグループ化部105に処理を依頼する。リーフノードグループ化部105は、そのリーフノード内にあるデータをグループ化(グループを作成)する。そして、リーフノードグループ化部105は、その結果(グループの情報)を、中間結果保持部130に保持させる(ステップA207)。なお、リーフノードグループ化部105は、リーフノードを、1つ又は複数のグループにグループ化する。つまり、リーフノードグループ化部105は、リーフノードのグループ化に基づいて、1つ又は複数のグループを作成する。
【0047】
そして、木探索部102は、現在のノード(今の場合、リーフノード)が、ルートノード(根ノード)であるか否かを判定する(ステップA208)。
【0048】
ルートノードでない場合(ステップA208でNo)、木探索部102における探索は、上位ノード(親ノード)に戻る(バックトラック)(ステップA209)。
【0049】
木探索部102の探索が上位ノードに戻ってきたとき、そのノードの代表データは、どのグループにも属していない。そのため、木探索部102は、代表データ併合部107に処理を依頼する。代表データ併合部107は、その代表データより下位のノード(サブツリー)で作られたグループの中で、その代表データの帰属に最適なグループに、その代表データを併合する(ステップA210)。この動作の詳細は、後ほど説明する。なお、帰属するグループが存在しない場合、代表データ併合部107は、その代表データを基にグループを作成する。代表データ併合部107は、処理結果(グループの情報)を中間結果保持部130に保持させる。そして、情報処理装置10は、ステップA203に戻る。
【0050】
ノードの代表データをすべて検査し終わった場合(ステップA203でNo)、そのノードの下位のノードのグループ化の結果が作成された状態である。そこで、木探索部102は、グループ間併合部106に処理を依頼する。グループ間併合部106は、作成されたグループ化結果150の中で、併合できるグループを一つのグループに併合する(ステップA211)。この動作の詳細は、後ほど説明する。グループ間併合部106は、処理結果を中間結果保持部130に保持させる。
【0051】
その後、情報処理装置10は、ステップA208に進み、既に説明した動作を実行する。
【0052】
そして、情報処理装置10は、上記で説明した動作を、木探索部102の探索の対象がルートノードに戻るまで繰り返す。そして、木探索部102は、探索中のノードがルートノードであると判定すると(ステップA208でYes)、グループ化結果出力部108に処理を依頼する。グループ化結果出力部108は、グループ化結果150を出力する(ステップA211)。
【0053】
そして、情報処理装置10は、グループ化の動作を終了する。
【0054】
[効果の説明]
次に、本実施の形態の効果について説明する。
【0055】
上記のとおり、本実施形態に係る情報処理装置10は、対象となるデータを制限しなくても、データのグループ化を実現できるとの効果を得ることができる。
【0056】
その理由は、上記のとおり、情報処理装置10が、その動作において、処理対象のデータにおける制限を必要としないためである。
【0057】
また、本実施形態に係る情報処理装置10は、演算時間を削減して、グループ化の演算を実行できるとの効果を得ることができる。
【0059】
木探索部102が探索したノードに対して、グループ化判定部103がグループ化と判定したノードについて、下記のように各部が、グループ化の処理を実行する。
【0060】
すなわち、サブツリーグループ化部104は、エッジに関連付けられた類似度がグループ化閾値140以上である代表データ以下のサブツリー(代表データと、その代表データの下位のノードのデータ)を、グループ化する。この場合、情報処理装置10は、そのエッジの下位のノード(子ノード)での処理を不要にすることができる。これが、第1の理由である。
【0061】
また、木探索部102の探索が、リーフノードに達した場合、リーフノードグループ化部105が、リーフノードをグループ化する。
【0062】
そして、上記のグループ化処理の後、木探索部102の探索が上位ノードの戻った(バックトラック)場合、代表データ併合部107が、適切なグループに代表データを併合する。
【0063】
そして、グループ間併合部106が、グループ結果の中で、併合できるグループを併合する。
【0064】
木構造の検索する一般的な情報処理装置は、木構造の少なくとも一部のサブツリー構造を、複数回探索する。
【0065】
一方、上記のように、情報処理装置10は、上記のグループ化の動作を、木探索部102における1回の木構造の探索を基に実現できる。これが、第2の理由である。
【0066】
なお、リーフノードグループ化部105におけるグループ化の計算は、木探索部102の探索がリーフノードまで進んだ場合に発生する。本実施形態において、上記のとおり、計算対象となるリーフノードは、一部のリーフノードである。また、リーフノードでの計算は、そのリーフノードに含まれるデータを用いた計算である。そのため、本実施形態におけるリーフノードに対する計算量は、大きな計算量とはならない。
【0067】
[詳細な動作の説明]
次に、具体的な木構造を用いて、本実施形態の詳細な動作について説明する。
【0068】
まず、詳細な動作の説明に先立ち、動作の説明において用いる、木構造保持部110及び類似度保持部120が保持するデータについて説明する。
【0069】
図3は、第1の実施形態の動作の説明に用いるデータの木構造を示す図である。
【0070】
図3に示す木構造は、例えば、非特許文献1に記載された手法を用いて、データが類似度に基づいて作成された階層化構造である。
【0071】
図3に示す長方形は、ノードを示す。各ノード(ノードAないしノードM)は、n件の代表データ(例えば、ノードAの代表データは、A
1からA
nである)を含む。
図3において、全てのノードは、n件の代表データを含んでいるが、これは、一例である。本実施形態において、ノードの含まれるデータの数は、ノード毎に異なっていてもよい。
【0072】
エッジは、親ノードのデータから子ノードに向かう矢印で示されている。エッジに関連づけられた類似度δ
x(x=1、…、12)は、親ノードのデータから類似度が類似度δ
x以上であるデータが、そのエッジより下位のノードにあることを示す。例えば、データA
1から出ている類似度δ
1が関連付けられたエッジより下位のノードのデータ(
図3では、B
1、…、B
n、C
1、…、C
n、…等)は、データA
1に対する類似度が、類似度δ
1以上である。
【0073】
以下の説明において、木構造保持部110は、予め、
図3に示す木構造を保持しているとする。また、類似度保持部120は、予め、
図3に示す類似度を木構造と関連付けて保持しているとする。
【0074】
本実施形態の木構造保持部110における木構造の保持方法は、特に制限はない。例えば、木構造の保持方法として、ノードID(例えば、
図3に示すAからM)と、そのノードに属するデータ及び各データがどのサブツリーの代表であるかを表現するデータを、表形式、又はオブジェクト形式で保持する方法が想定できる。
【0075】
また、本実施形態の類似度保持部120における類似度(例えば、類似半径)の保持方法は、特に制限はない。類似度の保持方法は、木構造の保持方法に依存するため、木構造を基に決定されればよい。ただし、木構造の保持方法は、エッジとそのエッジに関連付けられた類似度とが関連付けられている方法である。類似度の保持方法として、例えば、サブツリーを参照させる側のノードが、代表データと関連付けて類似度を保持する方法、又は、サブツリーのルートノード側が、類似度を関連付けてエッジを保持する方法が、想定される。あるいは、類似度を保持する方法として、代表データとサブツリーのルートノード間をつなぐエッジオブジェクトが、その内部に類似度を保持する方法、又は、エッジオブジェクトが、エッジIDに関連付けて類似度を保持する方法などが、考えられる。
【0076】
また、本実施形態の中間結果の保持方法は、特に制限はない。ただし、中間結果の保持方法は、スタックのようなデータ構造が望ましい。これは、次のような理由のためである。ただし、スタックのようなデータ構造とは、最後に入力したデータが最初に出力されるデータ構造(LIFO:Last In, First Out)である。スタックのようなデータ構造を、以下、単に「スタック」と呼ぶ。また、スタックに蓄えられたデータの量を、スタックの高さと呼ぶ。
【0077】
代表データが帰属するグループの候補の抽出、及び、グループ間併合における併合させるグループの抽出において、情報処理装置10は、対象となるノード(現在のノード)の下位のノードに対して生成された中間結果(グループの情報)の取り出しが必要である。中間結果保持部130が、スタックのようなデータ構造(LIFO)を用いて中間結果を保持すると、情報処理装置10は、上記の抽出における木構造の探索として、スタックに積まれたデータを検査すれば、抽出を実現できるためである。
【0078】
なお、以下の説明において、各構成における、各情報の読み出し動作、及び、保持させる動作の説明は、適宜、省略する。また、以下の説明において、情報処理装置10は、グループ化閾値140として、閾値δ
qを受信したとする。すなわち、情報処理装置10は、データのグループ化の基準として閾値δ
qを用い、類似度が閾値δ
q以上のデータからなるグループを作成(抽出)する。
【0079】
次に、情報処理装置10の具体的な動作を説明する。
【0080】
本実施形態に係る情報処理装置10における木構造の探索を基にデータをグループ化する動作は、おおむね、次に説明する動作となる。
【0081】
まず、木探索部102は、ルートノード(根ノード)から、木構造の探索を開始する(ステップA201)。
図3に示すように、今の場合、ルートノードは、ノードAである。ノードAは、A
1からA
nまでのn個の代表データを含む。
【0082】
木探索部102は、ノードAがリーフノード(葉ノード)か否かを判定する(ステップA202)。
【0083】
今の場合、ノードAは、リーフノードでないため(ステップA202でNo)、木探索部102は、未検査の代表データがあるか否かを判定する(ステップA203)。
【0084】
ここでは、未検査の代表データがある場合の一例として、木探索部102は、代表データA
1を選択したとする(ステップA203でYes)。
【0085】
次に、グループ化判定部103は、閾値δ
qと、代表データA
1と代表データB
1からB
nを含むノードBとをつなぐエッジに関連付けられている類似度δ
1とを比較する(ステップA204)。
【0086】
エッジに関連付けられた類似度(δ
1)が閾値δ
qより小さい(δ
1<δ
q)場合(ステップA204でNo)、木探索部102は、探索対象のノードを、そのエッジの先の子ノード(今の場合、ノードB)に移動する(ステップA206)。今の場合、類似度の関係が、δ
1<δ
qとする。そのため、木探索部102は、探索対象をノードBとする。このような動作を基に、木探索部102は、δ
q以上の類似度が関連付けられたエッジを探索する。
【0087】
一方、エッジに関連付けられた類似度(δ
1)が閾値δ
q以上(δ
1≧δ
q)場合(ステップA204でYes)、サブツリーグループ化部104は、サブツリーグループを作成する(ステップA205)。
【0088】
図4は、サブツリーのグループ化の一例を示す図である。
【0089】
図4に示すように、ノードCのデータC
1とノードDとの間のエッジに関連付けられた類似度δ
3が、閾値δ
q以上(δ
3≧δ
q)とする。この場合、グループ化判定部103は、このエッジに関連付けられた類似度が閾値δ
q以上と判定する(ステップA204でYes)。つまり、この場合、データC
1の配下にあるデータは、データC
1を基準として、閾値δ
q以上の類似度を持っている。
【0090】
したがって、サブツリーグループ化部104は、代表データC
1以下のサブツリーを、グループ(
図4のグループ1)化する。そして、サブツリーグループ化部104は、中間結果として、作成したグループを中間結果保持部130に出力する(ステップA205)。
【0091】
図4に示すように、代表データC
1以下のサブツリーに含まれるノードは、グループ1としてまとめられた。そのため、情報処理装置10は、代表データC
1よりリーフ側のノード(及びノードに含まれるデータ)を探索する必要はない。したがって、木探索部102は、次の代表データであるデータC
2,…、C
nを選択する。そして、グループ化判定部103は、同様に、類似度が閾値δ
q以上のエッジがあるか否かを判定する。
【0092】
もし、グループ化判定部103が、閾値δ
q以上のエッジが見つからずに、木探索部102の探索が、リーフノードに到達した場合、リーフノードグループ化部105が、リーフノードをグループ化する(ステップA207)。
【0093】
図5は、リーフノードのグループ化の一例を示す図である。
【0094】
図5に示すように、木探索部102は、ノードGまで探索が進んだとする。そこで、リーフノードグループ化部105は、リーフノード(ノードG)を、閾値δ
qを満たすように、例えば、2つのグループ(グループ2及びグループ3)にグループ化する。
【0095】
なお、リーフノードグループ化部105の処理は、特に制限はない。ただし、リーフノードをグループ化するためには、リーフノードグループ化部105は、リーフノードのデータを詳細に検討する必要がある。そこで、例えば、リーフノードグループ化部105は、特許文献1に記載された方法を用いて、リーフノードをグループ化してもよい。
【0096】
なお、リーフノードをグループ化する場合、グループ化の対象となるデータは、ノードの容量で抑えられた、十分に小さなデータ数である。そのため、リーフノードグループ化部105の計算量が、件数nに対してO(n
2)のオーダーが必要な場合でも、情報処理装置10の全体の計算量は、大きな計算量とはならず、十分に高速な処理が可能な計算量ある。
【0097】
また、リーフノードグループ化部105のリーフノード内のグループ化の処理は、特に制限はない。本実施形態に係るリーフノードのグループ化の処理に関して、様々なバリエーションが想定可能である。例えば、リーフノードグループ化部105は、所定のデータ数を含まない場合、そのリーフノードにおいて、グループを生成しなくてもよい。あるいは、リーフノードグループ化部105は、そのリーフノードが所定のデータ数を含まない場合、そのリーフノードをグループ化の対象から除外してもよい。
【0098】
木探索部102は、類似度が閾値δ
q以上のエッジに対応したサブツリーのグループ化、又は、リーフノードのグループ化の後、木構造における上位ノードへのバックトラックを実行する(ステップA209)。この木探索部102の探索のバックトラック動作において(帰りがけ順(の最後)に)、代表データを訪問するとき、代表データ併合部107は、まだ帰属先のグループが決まっていない代表データを併合する(ステップA210)。また、グループ間併合部106は、グループ間の併合を実行する(ステップA211)。
【0099】
図6は、代表データの併合の一例を示す図である。
図6を参照して、代表データC
nの併合について説明する。
【0100】
代表データC
nは、代表データC
nの下位のノードにあるデータの代表である。そこで、代表データ併合部107は、代表データC
nが、代表データC
nより下位のノードで生成されたグループの中で、どのグループに帰属するかを検査する。
【0101】
なお、既に説明した通り、中間結果保持部130が、検査対象とするグループの候補(中間結果)をスタック構造で保持している場合、代表データ併合部107は、スタックの高さに相当する数のグループの候補を検査すれば、グループの候補を絞り込める。すなわち、代表データ併合部107は、検査の候補として、木探索部102の探索において、行きがけ順(の最初)に代表データを訪問したときのスタックに積まれた高さまでのグループを、検査の候補とすればよい。
【0102】
そして、代表データ併合部107は、候補となるグループの代表データと、グループ化する代表データ(C
n)との類似度を比較する。そして、代表データ併合部107は、最も高い類似度となるグループと代表データ(C
n)とを併合すればよい。ただし、代表データ併合部107は、類似度が閾値δ
q以上となるように、代表データ(C
n)をグループに併合する。
【0103】
図6に示す例では、木探索部102が行きがけ順で訪問した時に既に存在するグループは、グループ1である。また、帰りがけ順で訪問した時に存在するグループは、グループ1、2、及び3である。つまり、代表データ併合部107は、その差分となるグループ2、又はグループ3が、代表データC
nより下位のノードで生成されたグループであると判断できる。そのため、代表データ併合部107は、グループ2又はグループ3のどちらが、代表データC
nに対して、より適切かを検査すればよい。
図6は、代表データC
nがグループ3に併合されたことを表している。
【0104】
ただし、上記は、代表データ併合部107が、スタックされたデータを用いることに限定するものではない。代表データ併合部107は、スタック構造以外のデータを用いてもよい。
【0105】
グループ間併合部106は、グループ間の併合において、代表データ併合と同様に、併合できるか否かを検討するグループの候補を、絞り込むことができる。すなわち、グループ間併合部106は、木の探索において、行きがけ順(最初)にノードを訪問した時のスタックの高さまでにあるグループを、併合の対象とすればよい。なお、グループ間併合部106は、グループ間の併合方法として、併合するデータの性質に合った併合方法を選択すればよい。例えば、グループ間併合部106は、単純に、各グループ間の代表データの類似度が、それぞれのグループの類似度を加味した類似度以上にある場合に、グループを併合してもよい。
【0106】
図7は、グループ間併合の一例を示す図である。
【0107】
図7に示すように、木探索部102が、C
1からC
nを含むノードを行きがけ順で訪問したときのグループは、1つもない。一方、木探索部102が帰りがけ順で訪問した時のグループは、グループ1、グループ2、及びグループ3である。そこで、グループ間併合部106は、これらのグループを比較し、グループ間で併合可能か否かを検査する。
図7に示す例は、グループ1とグループ2が併合され、グループ1−2が生成されたことを示している。
【0108】
ただし、上記は、グループ間併合部106が、スタックされたデータを用いることに限定するものではない。グループ間併合部106は、スタック構造以外のデータを用いてもよい。また、グループ間併合部106の動作のタイミングは、グループ化結果出力部108の動作前なら、制限はない。例えば、グループ間併合部106は、木探索部102の探索がルートノードに戻った後、グループ間を併合してもよい。
【0109】
上記の動作を繰り返し、木探索部102は、ルートノードに戻ったときに、ルートノードの未処理の代表データがなくなる(終了)まで、木構造の探索を実行する。そして、木探索部102が、木構造の探索が終了すると、グループ化結果出力部108は、グループ化結果150を出力する(ステップA211)。
【0110】
<第1の変形例>
以上の説明した情報処理装置10は、次のように構成される。
【0111】
例えば、情報処理装置10の各構成部は、ハードウェア回路で構成されても良い。
【0112】
また、情報処理装置10は、各構成部をネットワーク又はバスなど(以下、まとめて「ネットワークなど」と呼ぶ)を介して接続した複数の装置を用いて構成されても良い。
【0113】
図8は、本実施形態の変形例に係る情報処理装置11の構成の一例を示すブロック図である。ただし、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【0114】
情報処理装置11は、木探索部102と、グループ化判定部103と、サブツリーグループ化部104と、リーフノードグループ化部105と、グループ間併合部106と、代表データ併合部107とを含む。情報処理装置11の各構成は、図示しないネットワークなどを介して、
図8において図示されていないグループ化閾値受信部101と、木構造保持部110と、類似度保持部120と、中間結果保持部130と接続する。そして、情報処理装置11の各構成は、情報処理装置10の各構成と同様に動作する。なお、図示しないグループ化結果出力部108は、情報処理装置11の動作後、中間結果保持部130から、グループ化結果150を取り出せばよい。
【0115】
このように構成された情報処理装置11は、情報処理装置10と同様の効果を得ることができる。
【0116】
その理由は、上記のとおり、情報処理装置11の各構成が、情報処理装置10の構成と同様に動作し、グループ化を実行できるためである。
【0117】
なお、情報処理装置11は、本発明の実施形態の最小構成である。
【0118】
<第2の変形例>
また、情報処理装置10は、複数の構成部を1つのハードウェアで構成されても良い。
【0119】
また、情報処理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されても良い。情報処理装置10は、上記構成に加え、さらに、入出力接続回路(IOC:Input / Output Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現されても良い。
【0120】
図9は、情報処理装置10の第2の変形例である情報処理装置600の構成の一例を示すブロック図である。
【0121】
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
【0122】
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。
【0123】
そして、CPU610を含むコンピュータは、これらの構成を制御し、
図1に示す各部としての各機能を実現する。
図1に示す各部とは、グループ化閾値受信部101、木探索部102、グループ化判定部103、サブツリーグループ化部104、リーフノードグループ化部105、グループ間併合部106、代表データ併合部107、及びグループ化結果出力部108とである。
【0124】
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶として使用しても良い。
【0125】
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作しても良い。
【0126】
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
【0127】
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
【0128】
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作しても良い。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。内部記憶装置640は、木構造保持部110、類似度保持部120、及び、中間結果保持部130として動作する。
【0129】
ここで、ROM620と内部記憶装置640は、不揮発性の記憶媒体である。一方、RAM630は、揮発性の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【0130】
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。
【0131】
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。入力機器660は、グループ化閾値受信部101として動作してよい。
【0132】
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。表示機器670は、グループ化結果出力部108として動作してよい。
【0133】
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LAN(Local Area Network)カードである。NIC680は、グループ化閾値受信部101又はグループ化結果出力部108として動作してもよい。
【0134】
このように構成された情報処理装置600は、情報処理装置10と同様の効果を得ることができる。
【0135】
その理由は、情報処理装置600のCPU610が、プログラムに基づいて、情報処理装置10と同様の機能を実現できるためである。
【0136】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0137】
この出願は、2014年10月14日に出願された日本出願特願2014−209936を基礎とする優先権を主張し、その開示の全てをここに取り込む。