(57)【特許請求の範囲】
【請求項１】
データを含むノードを要素とした木構造のデータを探索する探索手段と、
前記探索手段の探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、前記データと前記下位のノードとを用いてグループ化するか否かを判定するグループ化判定手段と、
前記判定の結果としてグループ化と判定された前記データと前記下位のノードとをグループ化して、グループを作成するサブツリーグループ化手段と、
前記探索対象のノードがリーフノードの場合に、前記探索対象のリーフノードをグループ化して、１つ又は複数のグループを作成するリーフノードグループ化手段と、
前記探索手段における探索が上位のノードへバックトラックされた場合に、バックトラック先のノードに含まれるデータのうち前段の探索対象であったノードの上位のデータを、そのデータの下位のノードのいずれかのグループに併合するデータ併合手段と、
前記グループの少なくとも一部のグループを併合するグループ併合手段と
を含む情報処理装置。
【請求項２】
前記木構造のデータに関連付けられる類似度を保持する類似度手段と、
前記類似度の範囲が前記木構造の下位に行くほど大きな値となるように構築された木構造のデータを保持する木構造手段と、
前記グループ化判定手段の判定に用いられる前記閾値を受信するグループ化閾値受信手段と、
中間結果である前記作成又は併合されたグループを保持する中間結果保持手段と、
グループ化結果として前記中間結果保持手段が保持するグループを出力するグループ化結果出力手段と
を含む請求項１に記載の情報処理装置。
【請求項３】
前記中間結果保持手段が、
スタック構造を用いて前記中間結果を保持する
請求項２に記載の情報処理装置。
【請求項４】
前記データ併合手段又はグループ併合手段が、
前記スタック構造に積まれた前記中間結果を用いて処理する
請求項３に記載の情報処理装置。
【請求項５】
前記データ併合手段が、
前記上位のデータが帰属するグループがない場合に、前記上位のデータを用いてグループを作成する
請求項１ないし４のいずれか１項に記載の情報処理装置。
【請求項６】
データを含むノードを要素とした木構造のデータを探索し、
探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、前記データと前記下位のノードとを用いてグループ化するか否かを判定し、
前記判定の結果としてグループ化と判定された前記データと前記下位のノードとをグループ化して、グループを作成し、
前記探索対象のノードがリーフノードの場合に、前記探索対象のリーフノードをグループ化して、１つ又は複数のグループを作成し、
前記探索が上位のノードへバックトラックされた場合に、バックトラック先のノードに含まれるデータのうち前段の探索対象であったノードの上位のデータを、そのデータの下位のノードのいずれかのグループに併合し、
前記グループの少なくとも一部のグループを併合する
情報処理方法。
【請求項７】
データを含むノードを要素とした木構造のデータを探索する処理と、
探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、前記データと前記下位のノードとを用いてグループ化するか否かを判定する処理と、
前記判定の結果としてグループ化と判定された前記データと前記下位のノードとをグループ化して、グループを作成する処理と、
前記探索対象のノードがリーフノードの場合に、前記探索対象のリーフノードをグループ化して、１つ又は複数のグループを作成する処理と、
前記探索が上位のノードへバックトラックされた場合に、バックトラック先のノードに含まれるデータのうち前段の探索対象であったノードの上位のデータを、そのデータの下位のノードのいずれかのグループに併合する処理と、
前記グループの少なくとも一部のグループを併合する処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の検索に関し、特に、類似するデータをグループ化する情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
画像又は文書といったデータは、データ同士の一致を基にした評価よりも、それらのデータが持つ特徴の類似度を基に評価される場合が多い。また、このようなデータを分類又は要約する場合、データ間の類似度が、所定の値以上となるデータをまとめる処理が、有効である。このような処理は、一般的に、類似度に基づくグループ化と呼ばれている（例えば、特許文献１を参照）。【０００３】
特許文献１に記載されている情報検索装置は、ユーザが入力した類似検索（ユーザからの類似検索）の結果を、さらに類似するグループにグループ化する機能を提供する。特許文献１において情報検索装置は、ユーザから受信した類似検索結果をグループ化する際、ユーザから受信した類似検索の結果について、さらに類似検索（検索結果に対する類似検索）を実行する。そして、情報検索装置は、検索結果に関して、所定の閾値以上の類似度を有するデータを、グループにまとめる。情報検索装置は、このような動作を基に、グループ化を実行する。この時、情報検索装置は、ユーザからの類似検索結果の中で、類似度が高い検索結果から類似検索を実行する。そして、情報検索装置は、類似度が所定の閾値以上になる検索結果をグループ化する。ただし、情報検索装置は、既に類似検索が実行されている検索結果について、グループ化を実行しない。【０００４】
また、類似検索を高速化するためのデータ構造が、提案されている（例えば、非特許文献１を参照）。非特許文献１に記載されている技術は、データ間の類似度の階層性を考慮して、データの木構造（以下、単に「木構造」と呼ぶ）を構築する。非特許文献１の技術は、このような木構造を用いて、類似検索の高速化を実現する。非特許文献１に記載されている木構造は、おおむね、次のように構成される。すなわち、木構造を構成するノードは、データを保存する。そして、あるノードが、ノードの容量を超えるデータを含む場合、非特許文献１に記載されている技術は、そのノードに含まれるデータの中から代表となるデータ（代表データ）を選び、代表データをそのノードの親ノードに配置する。それとともに、非特許文献１に記載されている技術は、親ノードとそのノードとの間のエッジに、代表データとそのノードにあるデータとの類似度の上限を関連付ける。そして、非特許文献１に記載されている技術は、木構造全体として、エッジに関連付けられた類似度の値が、根ノード（ルートノード）から葉ノード（リーフノード）に向かうに従って増加するように、木構造をメンテナンスする。非特許文献１に記載されている技術は、木構造として、類似度の階層性に着目したデータ構造を与える。ただし、非特許文献１は、グループ化の方法を開示していない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１１２９８８号公報
【非特許文献】
【０００６】
【非特許文献１】劉  健全、西村  祥治、荒木  拓也著、「類似度の階層関係に基づく木構造索引を用いた効率的な類似検索」、第５回データ工学と情報マネジメントに関するフォーラム(第１１回日本データベース学会年次大会)、DEIM 2013、セッションＡ９：問い合せ処理、March 05, 2013
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１は、ユーザからの類似検索結果に対するグループ化に関する技術を開示している。つまり、特許文献１に記載されている技術は、一般的なデータを前提としていない。したがって、一般的なデータにおけるグループ化を実現することはできない。例えば、特許文献１に記載されている技術を使用して、「画像データベースに対して、そのデータベースの中にどのような種類の画像があるかを、その類似度に基づいてグループ化せよ」というようなクエリ（問い合わせ）を実行することはできない。このように、特許文献１は、グループ化の対象となるデータに制限があるという問題点があった。【０００８】
また、非特許文献１は、グループ化の方法を開示していない。【０００９】
そのため、特許文献１に非特許文献１を組み合わせても、グループ化の対象となるデータにおける制限を解決できない。【００１０】
さらに、特許文献１に記載されている技術は、類似するデータをグループ化するための演算に、大きな時間が掛かる。その理由は、特許文献１に記載されている技術は、各検索結果に対して類似検索を実行するので、グループ化の演算において、Ｏ（Ｎ２）オーダーの時間が掛かるからである。ここで、「Ｏ（）」は、値の変動のおおよその評価を与える記法であり、一般的に、「ランダウの記号」又は「Ｏ−記号」と呼ばれるものである。また、「Ｎ」は、データ件数を示す。このように、特許文献１には、処理に時間が掛かるという問題点があった。【００１１】
本発明の目的は、上記の問題点を解決し、処理対象のデータを制限しなくても、演算時間を削減して、データ類似度に基づくグループ化を実現できる情報処理装置、情報処理方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一形態における情報処理装置は、データを含むノードを要素とした木構造のデータを探索する探索手段と、探索手段の探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、データと下位のノードとを用いてグループ化するか否かを判定するグループ化判定手段と、判定の結果としてグループ化と判定されたデータと下位のノードとをグループ化して、グループを作成するサブツリーグループ化手段と、探索対象のノードがリーフノードの場合に、検索対象のリーフノードをグループ化して、１つ又は複数のグループを作成するリーフノードグループ化手段と、探索手段における探索が上位のノードへのバックトラックにおいて戻ったデータが帰属先のグループが決まっていない場合に、そのデータをそのデータの下位のノードのいずれかのグループに併合するデータ併合手段と、グループの少なくとも一部のグループを併合するグループ併合手段とを含む。【００１３】
本発明の一形態におけるデータ処理方法は、データを含むノードを要素とした木構造のデータを探索し、探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、データと下位のノードとを用いてグループ化するか否かを判定し、判定の結果としてグループ化と判定されたデータと下位のノードとをグループ化して、グループを作成し、探索対象のノードがリーフノードの場合に、検索対象のリーフノードをグループ化して、１つ又は複数のグループを作成し、探索が上位のノードへのバックトラックにおいて戻ったデータが帰属先のグループが決まっていない場合に、そのデータをそのデータの下位のノードのいずれかのグループに併合し、グループの少なくとも一部のグループを併合する。【００１４】
本発明の一形態における記録媒体は、データを含むノードを要素とした木構造のデータを探索する処理と、探索対象のノードに含まれるデータとそのデータの下位のノードとの間のエッジに関連付けられた類似度と、所定の閾値とを基に、データと下位のノードとを用いてグループ化するか否かを判定する処理と、判定の結果としてグループ化と判定されたデータと下位のノードとをグループ化して、グループを作成する処理と、探索対象のノードがリーフノードの場合に、検索対象のリーフノードをグループ化して、１つ又は複数のグループを作成する処理と、探索が上位のノードへのバックトラックにおいて戻ったデータが帰属先のグループが決まっていない場合に、そのデータをそのデータの下位のノードのいずれかのグループに併合する処理と、グループの少なくとも一部のグループを併合する処理とを含むプログラムをコンピュータから読み取り可能に記録する。
【発明の効果】
【００１５】
本発明に基づけば、対象となるデータを制限しなくても、演算時間を削減して、類似度に基づくデータのグループ化を実行できるとの効果を奏することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明における第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施形態に係る情報処理装置の動作の一例を示す流れ図である。
【図３】図３は、第１の実施形態の動作の説明に用いる木構造を示す図である。
【図４】図４は、サブツリーのグループ化の一例を示す図である。
【図５】図５は、リーフノードのグループ化の一例を示す図である。
【図６】図６は、代表データの併合の一例を示す図である。
【図７】図７は、グループ間併合の一例を示す図である。
【図８】図８は、第１の実施形態の情報処理装置の変形例の構成の一例を示すブロック部である。
【図９】図９は、第１の実施形態の情報処理装置の変形例の構成の一例を示すブロック部である。
【発明を実施するための形態】
【００１７】
次に、本発明の実施形態について図面を参照して説明する。
【００１８】
各図面は、本発明の実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
【００１９】
＜第１の実施形態＞
まず、第１の実施形態に係る情報処理装置１０の構成について説明する。
【００２０】
［構成の説明］
図１は、本発明における第１の実施形態に係る情報処理装置１０の構成の一例を示すブロック図である。ただし、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００２１】
図１を参照すると、情報処理装置１０は、データ処理部１００と、木構造保持部１１０と、類似度保持部１２０と、中間結果保持部１３０とを含む。ここで、保持とは、記憶又は保存を意味する。
【００２２】
木構造保持部１１０は、情報処理装置１０の処理対象である木構造として構築されたデータ（以下、木構造と呼ぶ）を保持する。木構造は、ノード（例えば、ルートノード及びリーフノード）とエッジとを含む。なお、各ノードは、データ（例えば、代表データ）を含む。ここで、「代表データ」とは、ノードに含まれるデータにおいて、ノードを代表するデータである。
【００２３】
類似度保持部１２０は、エッジに関連付けられた（付与された）類似度（例えば、類似半径）を保持する。
【００２４】
木構造保持部１１０と類似度保持部１２０は、予め、後ほど説明するデータ処理部１００における動作の前に、上記で説明したデータを保持すればよい。例えば、情報処理装置１０のユーザが、処理に先立ち、上記データを各保持部に記憶させればよい。
【００２５】
中間結果保持部１３０は、後ほど説明するデータ処理部１００の各部のグループ化処理に基づいて生成される結果（以下、「中間結果」と呼ぶ）を保持する。
【００２６】
データ処理部１００は、木構造保持部１１０が保持する木構造を探索する。そして、データ処理部１００は、木構造保持部１１０が保持する木構造と、後ほど説明する受信したグループ化閾値１４０と、類似度保持部１２０が保持する類似度とを用いて、木構造のグループ化を実行する。データ処理部１００は、グループ化処理の結果（中間結果）を、中間結果保持部１３０に保持させる。そして、データ処理部１００は、グループ化の処理の終了後、中間結果保持部１３０が保持する中間結果を、グループ化結果１５０として出力する。
【００２７】
そのため、データ処理部１００は、木探索部１０２と、グループ化判定部１０３と、サブツリーグループ化部１０４と、リーフノードグループ化部１０５と、グループ間併合部１０６と、代表データ併合部１０７とを含む。さらに、データ処理部１００は、グループ化閾値受信部１０１と、グループ化結果出力部１０８とを含む。データ処理部１００に含まれる各構成は、必要に応じて、木構造保持部１１０、類似度保持部１２０、及び中間結果保持部１３０に保持されたデータを用いる。また、各構成は、必要に応じて、中間結果保持部１３０にデータを保持させる。以下の説明では、説明の便宜のため、各構成が、各保持部にデータの保持させる動作及びデータを読み出す動作を省略する場合もある。
【００２８】
グループ化閾値受信部１０１は、図示しない外部の装置からグループ化閾値１４０を受信する。例えば、グループ化閾値受信部１０１は、ユーザが操作する装置からグループ化閾値１４０を受信すればよい。グループ化閾値受信部１０１は、グループ化閾値１４０をグループ化判定部１０３に渡す。あるいは、グループ化閾値受信部１０１は、グループ化判定部１０３の要求に対して、グループ化閾値１４０を送信してもよい。あるいは、グループ化閾値受信部１０１は、図示しない記憶部にグループ化閾値１４０を記憶させてもよい。この場合、グループ化判定部１０３は、その記憶部からグループ化閾値１４０を読み出せばよい。このように、本実施形態は、グループ化閾値１４０を保存する構成に制限はない。
【００２９】
木探索部１０２は、木構造保持部１１０に保持された木構造（ツリー）を、その構造に従って、たどる。そして、木探索部１０２は、現在たどっているノード、データ又はエッジつまり、探索中のノード、データ、又はエッジ（以下、まとめて「探索対象」と呼ぶ）を基に、後述する各部に処理を依頼する。
【００３０】
グループ化判定部１０３は、木探索部１０２が現在たどっている木構造のエッジ（探索対象となっているエッジ）に関連付けられた類似度（例えば、類似半径）と、グループ化閾値１４０とを比較する。グループ化判定部１０３は、比較結果を基に、探索対象のエッジに関連付けられているノード群が、グループ化可能か否かを判定する。つまり、グループ化閾値１４０は、グループ化可能か否かの判定に用いられる閾値である。
【００３１】
サブツリーグループ化部１０４は、グループ化が可能なサブツリーをグループ化する。つまり、サブツリーグループ化部１０４は、グループ化が可能なサブツリーを用いて、グループを作成する。ここで、グループ化が可能なサブツリーとは、グループ化判定部１０３がグループ化閾値１４０以上の類似度と判定したエッジに関連付けられたサブツリーである。
【００３２】
リーフノードグループ化部１０５は、リーフノード（葉ノード）にあるデータをグループ化する。つまり、リーフノードグループ化部１０５は、リーフノードのデータを用いて、グループを作成する。
【００３３】
グループ間併合部１０６は、併合可能なグループを、一つのグループに併合する。つまり、グループ間併合部１０６は、作成されたグループを基に、グループを編集する。
【００３４】
代表データ併合部１０７は、代表データを、帰属するグループに併合する。つまり、代表データ併合部１０７は、作成されたグループと代表データとを基に、グループを編集する。
【００３５】
グループ化結果出力部１０８は、中間結果保持部１３０に保持された中間結果を読み出し、グループ化結果１５０として出力する。例えば、グループ化結果出力部１０８は、ユーザが操作する装置にグループ化結果１５０を送信する。あるいは、グループ化結果出力部１０８は、図示しない表示機器に、グループ化結果１５０を表示してもよい。
【００３６】
［動作の説明］
次に、図面を参照して、本実施形態の動作について説明する。
【００３７】
図２は、本実施形態に係る情報処理装置１０の動作の一例を示す流れ図である。
【００３８】
まず、グループ化閾値受信部１０１は、グループ化閾値１４０を受信する。
【００３９】
そして、木探索部１０２は、木構造保持部１１０に保持されている木構造において、ルートノードから探索を開始する（ステップＡ２０１）。
【００４０】
木探索部１０２は、現在のノードがリーフノードであるか否かを判定する（ステップＡ２０２）。
【００４１】
リーフノードでない場合（ステップＡ２０２でＮｏ）、木探索部１０２は、そのノードに、未検査の代表データがあるか否かを判定する（ステップＡ２０３）。
【００４２】
未検査の代表データがある場合（ステップＡ２０３でＹｅｓ）、木探索部１０２は、未検査の代表データの中から、代表データを１つ選ぶ。そして、木探索部１０２は、グループ化判定部１０３に処理を依頼する。
【００４３】
グループ化判定部１０３は、類似度保持部１２０が保持する類似度を参照して、選択された代表データのエッジに関連付けられた類似度が、グループ化閾値１４０以上か否かを判定（検査）する（ステップＡ２０４）。グループ化判定部１０３は、判定結果を木探索部１０２に返す。
【００４４】
代表データの類似度が、グループ化閾値１４０以上の場合（ステップＡ２０４でＹｅｓ）、その代表データの下位にあるノードのデータは、その代表データからグループ化閾値１４０以上の類似度を持っている。そこで、木探索部１０２は、判定結果に基づき、サブツリーグループ化部１０４に処理を依頼する。サブツリーグループ化部１０４は、代表データと代表データの下位にあるノードのデータとを、グループ化する（グループを作成する）。そして、サブツリーグループ化部１０４は、その結果（グループの情報）を、中間結果保持部１３０に出力する（ステップＡ２０５）。そして、情報処理装置１０の動作は、ステップＡ２０３に戻る。なお、代表データとその代表データの下位にあるノードのデータとを含むサブツリーを、「その代表データ以下のサブツリー」と呼ぶ。
【００４５】
代表データの類似度が、グループ化閾値１４０より小さい場合（ステップＡ２０４でＮｏ）、木探索部１０２は、探索対象を、そのエッジの先にある子ノードに移動する（ステップＡ２０６）。そして、木探索部１０２は、ステップＡ２０２に戻り、同様の動作を繰り返す。
【００４６】
探索が、リーフノードまで達した場合（ステップＡ２０２でＹｅｓ）、木探索部１０２は、リーフノードグループ化部１０５に処理を依頼する。リーフノードグループ化部１０５は、そのリーフノード内にあるデータをグループ化（グループを作成）する。そして、リーフノードグループ化部１０５は、その結果（グループの情報）を、中間結果保持部１３０に保持させる（ステップＡ２０７）。なお、リーフノードグループ化部１０５は、リーフノードを、１つ又は複数のグループにグループ化する。つまり、リーフノードグループ化部１０５は、リーフノードのグループ化に基づいて、１つ又は複数のグループを作成する。
【００４７】
そして、木探索部１０２は、現在のノード（今の場合、リーフノード）が、ルートノード（根ノード）であるか否かを判定する（ステップＡ２０８）。
【００４８】
ルートノードでない場合（ステップＡ２０８でＮｏ）、木探索部１０２における探索は、上位ノード（親ノード）に戻る（バックトラック）（ステップＡ２０９）。
【００４９】
木探索部１０２の探索が上位ノードに戻ってきたとき、そのノードの代表データは、どのグループにも属していない。そのため、木探索部１０２は、代表データ併合部１０７に処理を依頼する。代表データ併合部１０７は、その代表データより下位のノード（サブツリー）で作られたグループの中で、その代表データの帰属に最適なグループに、その代表データを併合する（ステップＡ２１０）。この動作の詳細は、後ほど説明する。なお、帰属するグループが存在しない場合、代表データ併合部１０７は、その代表データを基にグループを作成する。代表データ併合部１０７は、処理結果（グループの情報）を中間結果保持部１３０に保持させる。そして、情報処理装置１０は、ステップＡ２０３に戻る。
【００５０】
ノードの代表データをすべて検査し終わった場合（ステップＡ２０３でＮｏ）、そのノードの下位のノードのグループ化の結果が作成された状態である。そこで、木探索部１０２は、グループ間併合部１０６に処理を依頼する。グループ間併合部１０６は、作成されたグループ化結果１５０の中で、併合できるグループを一つのグループに併合する（ステップＡ２１１）。この動作の詳細は、後ほど説明する。グループ間併合部１０６は、処理結果を中間結果保持部１３０に保持させる。
【００５１】
その後、情報処理装置１０は、ステップＡ２０８に進み、既に説明した動作を実行する。
【００５２】
そして、情報処理装置１０は、上記で説明した動作を、木探索部１０２の探索の対象がルートノードに戻るまで繰り返す。そして、木探索部１０２は、探索中のノードがルートノードであると判定すると（ステップＡ２０８でＹｅｓ）、グループ化結果出力部１０８に処理を依頼する。グループ化結果出力部１０８は、グループ化結果１５０を出力する（ステップＡ２１１）。
【００５３】
そして、情報処理装置１０は、グループ化の動作を終了する。
【００５４】
［効果の説明］
次に、本実施の形態の効果について説明する。
【００５５】
上記のとおり、本実施形態に係る情報処理装置１０は、対象となるデータを制限しなくても、データのグループ化を実現できるとの効果を得ることができる。
【００５６】
その理由は、上記のとおり、情報処理装置１０が、その動作において、処理対象のデータにおける制限を必要としないためである。
【００５７】
また、本実施形態に係る情報処理装置１０は、演算時間を削減して、グループ化の演算を実行できるとの効果を得ることができる。
【００５８】
その理由は、次のとおりである。
【００５９】
木探索部１０２が探索したノードに対して、グループ化判定部１０３がグループ化と判定したノードについて、下記のように各部が、グループ化の処理を実行する。
【００６０】
すなわち、サブツリーグループ化部１０４は、エッジに関連付けられた類似度がグループ化閾値１４０以上である代表データ以下のサブツリー（代表データと、その代表データの下位のノードのデータ）を、グループ化する。この場合、情報処理装置１０は、そのエッジの下位のノード（子ノード）での処理を不要にすることができる。これが、第１の理由である。
【００６１】
また、木探索部１０２の探索が、リーフノードに達した場合、リーフノードグループ化部１０５が、リーフノードをグループ化する。
【００６２】
そして、上記のグループ化処理の後、木探索部１０２の探索が上位ノードの戻った（バックトラック）場合、代表データ併合部１０７が、適切なグループに代表データを併合する。
【００６３】
そして、グループ間併合部１０６が、グループ結果の中で、併合できるグループを併合する。
【００６４】
木構造の検索する一般的な情報処理装置は、木構造の少なくとも一部のサブツリー構造を、複数回探索する。
【００６５】
一方、上記のように、情報処理装置１０は、上記のグループ化の動作を、木探索部１０２における１回の木構造の探索を基に実現できる。これが、第２の理由である。
【００６６】
なお、リーフノードグループ化部１０５におけるグループ化の計算は、木探索部１０２の探索がリーフノードまで進んだ場合に発生する。本実施形態において、上記のとおり、計算対象となるリーフノードは、一部のリーフノードである。また、リーフノードでの計算は、そのリーフノードに含まれるデータを用いた計算である。そのため、本実施形態におけるリーフノードに対する計算量は、大きな計算量とはならない。
【００６７】
［詳細な動作の説明］
次に、具体的な木構造を用いて、本実施形態の詳細な動作について説明する。
【００６８】
まず、詳細な動作の説明に先立ち、動作の説明において用いる、木構造保持部１１０及び類似度保持部１２０が保持するデータについて説明する。
【００６９】
図３は、第１の実施形態の動作の説明に用いるデータの木構造を示す図である。
【００７０】
図３に示す木構造は、例えば、非特許文献１に記載された手法を用いて、データが類似度に基づいて作成された階層化構造である。
【００７１】
図３に示す長方形は、ノードを示す。各ノード（ノードＡないしノードＭ）は、ｎ件の代表データ（例えば、ノードＡの代表データは、Ａ１からＡｎである）を含む。図３において、全てのノードは、ｎ件の代表データを含んでいるが、これは、一例である。本実施形態において、ノードの含まれるデータの数は、ノード毎に異なっていてもよい。
【００７２】
エッジは、親ノードのデータから子ノードに向かう矢印で示されている。エッジに関連づけられた類似度δｘ（ｘ＝１、…、１２）は、親ノードのデータから類似度が類似度δｘ以上であるデータが、そのエッジより下位のノードにあることを示す。例えば、データＡ１から出ている類似度δ１が関連付けられたエッジより下位のノードのデータ（図３では、Ｂ１、…、Ｂｎ、Ｃ１、…、Ｃｎ、…等）は、データＡ１に対する類似度が、類似度δ１以上である。
【００７３】
以下の説明において、木構造保持部１１０は、予め、図３に示す木構造を保持しているとする。また、類似度保持部１２０は、予め、図３に示す類似度を木構造と関連付けて保持しているとする。
【００７４】
本実施形態の木構造保持部１１０における木構造の保持方法は、特に制限はない。例えば、木構造の保持方法として、ノードＩＤ（例えば、図３に示すＡからＭ）と、そのノードに属するデータ及び各データがどのサブツリーの代表であるかを表現するデータを、表形式、又はオブジェクト形式で保持する方法が想定できる。
【００７５】
また、本実施形態の類似度保持部１２０における類似度（例えば、類似半径）の保持方法は、特に制限はない。類似度の保持方法は、木構造の保持方法に依存するため、木構造を基に決定されればよい。ただし、木構造の保持方法は、エッジとそのエッジに関連付けられた類似度とが関連付けられている方法である。類似度の保持方法として、例えば、サブツリーを参照させる側のノードが、代表データと関連付けて類似度を保持する方法、又は、サブツリーのルートノード側が、類似度を関連付けてエッジを保持する方法が、想定される。あるいは、類似度を保持する方法として、代表データとサブツリーのルートノード間をつなぐエッジオブジェクトが、その内部に類似度を保持する方法、又は、エッジオブジェクトが、エッジＩＤに関連付けて類似度を保持する方法などが、考えられる。
【００７６】
また、本実施形態の中間結果の保持方法は、特に制限はない。ただし、中間結果の保持方法は、スタックのようなデータ構造が望ましい。これは、次のような理由のためである。ただし、スタックのようなデータ構造とは、最後に入力したデータが最初に出力されるデータ構造（ＬＩＦＯ：Last In, First Out）である。スタックのようなデータ構造を、以下、単に「スタック」と呼ぶ。また、スタックに蓄えられたデータの量を、スタックの高さと呼ぶ。
【００７７】
代表データが帰属するグループの候補の抽出、及び、グループ間併合における併合させるグループの抽出において、情報処理装置１０は、対象となるノード（現在のノード）の下位のノードに対して生成された中間結果（グループの情報）の取り出しが必要である。中間結果保持部１３０が、スタックのようなデータ構造（ＬＩＦＯ）を用いて中間結果を保持すると、情報処理装置１０は、上記の抽出における木構造の探索として、スタックに積まれたデータを検査すれば、抽出を実現できるためである。
【００７８】
なお、以下の説明において、各構成における、各情報の読み出し動作、及び、保持させる動作の説明は、適宜、省略する。また、以下の説明において、情報処理装置１０は、グループ化閾値１４０として、閾値δｑを受信したとする。すなわち、情報処理装置１０は、データのグループ化の基準として閾値δｑを用い、類似度が閾値δｑ以上のデータからなるグループを作成（抽出）する。
【００７９】
次に、情報処理装置１０の具体的な動作を説明する。
【００８０】
本実施形態に係る情報処理装置１０における木構造の探索を基にデータをグループ化する動作は、おおむね、次に説明する動作となる。
【００８１】
まず、木探索部１０２は、ルートノード（根ノード）から、木構造の探索を開始する（ステップＡ２０１）。図３に示すように、今の場合、ルートノードは、ノードＡである。ノードＡは、Ａ１からＡｎまでのｎ個の代表データを含む。
【００８２】
木探索部１０２は、ノードＡがリーフノード（葉ノード）か否かを判定する（ステップＡ２０２）。
【００８３】
今の場合、ノードＡは、リーフノードでないため（ステップＡ２０２でＮｏ）、木探索部１０２は、未検査の代表データがあるか否かを判定する（ステップＡ２０３）。
【００８４】
ここでは、未検査の代表データがある場合の一例として、木探索部１０２は、代表データＡ１を選択したとする（ステップＡ２０３でＹｅｓ）。
【００８５】
次に、グループ化判定部１０３は、閾値δｑと、代表データＡ１と代表データＢ１からＢｎを含むノードＢとをつなぐエッジに関連付けられている類似度δ１とを比較する（ステップＡ２０４）。
【００８６】
エッジに関連付けられた類似度（δ１）が閾値δｑより小さい（δ１＜δｑ）場合（ステップＡ２０４でＮｏ）、木探索部１０２は、探索対象のノードを、そのエッジの先の子ノード（今の場合、ノードＢ）に移動する（ステップＡ２０６）。今の場合、類似度の関係が、δ１＜δｑとする。そのため、木探索部１０２は、探索対象をノードＢとする。このような動作を基に、木探索部１０２は、δｑ以上の類似度が関連付けられたエッジを探索する。
【００８７】
一方、エッジに関連付けられた類似度（δ１）が閾値δｑ以上（δ１≧δｑ）場合（ステップＡ２０４でＹｅｓ）、サブツリーグループ化部１０４は、サブツリーグループを作成する（ステップＡ２０５）。
【００８８】
図４は、サブツリーのグループ化の一例を示す図である。
【００８９】
図４に示すように、ノードＣのデータＣ１とノードＤとの間のエッジに関連付けられた類似度δ３が、閾値δｑ以上（δ３≧δｑ）とする。この場合、グループ化判定部１０３は、このエッジに関連付けられた類似度が閾値δｑ以上と判定する（ステップＡ２０４でＹｅｓ）。つまり、この場合、データＣ１の配下にあるデータは、データＣ１を基準として、閾値δｑ以上の類似度を持っている。
【００９０】
したがって、サブツリーグループ化部１０４は、代表データＣ１以下のサブツリーを、グループ（図４のグループ１）化する。そして、サブツリーグループ化部１０４は、中間結果として、作成したグループを中間結果保持部１３０に出力する（ステップＡ２０５）。
【００９１】
図４に示すように、代表データＣ１以下のサブツリーに含まれるノードは、グループ１としてまとめられた。そのため、情報処理装置１０は、代表データＣ１よりリーフ側のノード（及びノードに含まれるデータ）を探索する必要はない。したがって、木探索部１０２は、次の代表データであるデータＣ２，…、Ｃｎを選択する。そして、グループ化判定部１０３は、同様に、類似度が閾値δｑ以上のエッジがあるか否かを判定する。
【００９２】
もし、グループ化判定部１０３が、閾値δｑ以上のエッジが見つからずに、木探索部１０２の探索が、リーフノードに到達した場合、リーフノードグループ化部１０５が、リーフノードをグループ化する（ステップＡ２０７）。
【００９３】
図５は、リーフノードのグループ化の一例を示す図である。
【００９４】
図５に示すように、木探索部１０２は、ノードＧまで探索が進んだとする。そこで、リーフノードグループ化部１０５は、リーフノード（ノードＧ）を、閾値δｑを満たすように、例えば、２つのグループ（グループ２及びグループ３）にグループ化する。
【００９５】
なお、リーフノードグループ化部１０５の処理は、特に制限はない。ただし、リーフノードをグループ化するためには、リーフノードグループ化部１０５は、リーフノードのデータを詳細に検討する必要がある。そこで、例えば、リーフノードグループ化部１０５は、特許文献１に記載された方法を用いて、リーフノードをグループ化してもよい。
【００９６】
なお、リーフノードをグループ化する場合、グループ化の対象となるデータは、ノードの容量で抑えられた、十分に小さなデータ数である。そのため、リーフノードグループ化部１０５の計算量が、件数ｎに対してＯ（ｎ２）のオーダーが必要な場合でも、情報処理装置１０の全体の計算量は、大きな計算量とはならず、十分に高速な処理が可能な計算量ある。
【００９７】
また、リーフノードグループ化部１０５のリーフノード内のグループ化の処理は、特に制限はない。本実施形態に係るリーフノードのグループ化の処理に関して、様々なバリエーションが想定可能である。例えば、リーフノードグループ化部１０５は、所定のデータ数を含まない場合、そのリーフノードにおいて、グループを生成しなくてもよい。あるいは、リーフノードグループ化部１０５は、そのリーフノードが所定のデータ数を含まない場合、そのリーフノードをグループ化の対象から除外してもよい。
【００９８】
木探索部１０２は、類似度が閾値δｑ以上のエッジに対応したサブツリーのグループ化、又は、リーフノードのグループ化の後、木構造における上位ノードへのバックトラックを実行する（ステップＡ２０９）。この木探索部１０２の探索のバックトラック動作において（帰りがけ順（の最後）に）、代表データを訪問するとき、代表データ併合部１０７は、まだ帰属先のグループが決まっていない代表データを併合する（ステップＡ２１０）。また、グループ間併合部１０６は、グループ間の併合を実行する（ステップＡ２１１）。
【００９９】
図６は、代表データの併合の一例を示す図である。図６を参照して、代表データＣｎの併合について説明する。
【０１００】
代表データＣｎは、代表データＣｎの下位のノードにあるデータの代表である。そこで、代表データ併合部１０７は、代表データＣｎが、代表データＣｎより下位のノードで生成されたグループの中で、どのグループに帰属するかを検査する。
【０１０１】
なお、既に説明した通り、中間結果保持部１３０が、検査対象とするグループの候補（中間結果）をスタック構造で保持している場合、代表データ併合部１０７は、スタックの高さに相当する数のグループの候補を検査すれば、グループの候補を絞り込める。すなわち、代表データ併合部１０７は、検査の候補として、木探索部１０２の探索において、行きがけ順（の最初）に代表データを訪問したときのスタックに積まれた高さまでのグループを、検査の候補とすればよい。
【０１０２】
そして、代表データ併合部１０７は、候補となるグループの代表データと、グループ化する代表データ（Ｃｎ）との類似度を比較する。そして、代表データ併合部１０７は、最も高い類似度となるグループと代表データ（Ｃｎ）とを併合すればよい。ただし、代表データ併合部１０７は、類似度が閾値δｑ以上となるように、代表データ（Ｃｎ）をグループに併合する。
【０１０３】
図６に示す例では、木探索部１０２が行きがけ順で訪問した時に既に存在するグループは、グループ１である。また、帰りがけ順で訪問した時に存在するグループは、グループ１、２、及び３である。つまり、代表データ併合部１０７は、その差分となるグループ２、又はグループ３が、代表データＣｎより下位のノードで生成されたグループであると判断できる。そのため、代表データ併合部１０７は、グループ２又はグループ３のどちらが、代表データＣｎに対して、より適切かを検査すればよい。図６は、代表データＣｎがグループ３に併合されたことを表している。
【０１０４】
ただし、上記は、代表データ併合部１０７が、スタックされたデータを用いることに限定するものではない。代表データ併合部１０７は、スタック構造以外のデータを用いてもよい。
【０１０５】
グループ間併合部１０６は、グループ間の併合において、代表データ併合と同様に、併合できるか否かを検討するグループの候補を、絞り込むことができる。すなわち、グループ間併合部１０６は、木の探索において、行きがけ順（最初）にノードを訪問した時のスタックの高さまでにあるグループを、併合の対象とすればよい。なお、グループ間併合部１０６は、グループ間の併合方法として、併合するデータの性質に合った併合方法を選択すればよい。例えば、グループ間併合部１０６は、単純に、各グループ間の代表データの類似度が、それぞれのグループの類似度を加味した類似度以上にある場合に、グループを併合してもよい。
【０１０６】
図７は、グループ間併合の一例を示す図である。
【０１０７】
図７に示すように、木探索部１０２が、Ｃ１からＣｎを含むノードを行きがけ順で訪問したときのグループは、１つもない。一方、木探索部１０２が帰りがけ順で訪問した時のグループは、グループ１、グループ２、及びグループ３である。そこで、グループ間併合部１０６は、これらのグループを比較し、グループ間で併合可能か否かを検査する。図７に示す例は、グループ１とグループ２が併合され、グループ１−２が生成されたことを示している。
【０１０８】
ただし、上記は、グループ間併合部１０６が、スタックされたデータを用いることに限定するものではない。グループ間併合部１０６は、スタック構造以外のデータを用いてもよい。また、グループ間併合部１０６の動作のタイミングは、グループ化結果出力部１０８の動作前なら、制限はない。例えば、グループ間併合部１０６は、木探索部１０２の探索がルートノードに戻った後、グループ間を併合してもよい。
【０１０９】
上記の動作を繰り返し、木探索部１０２は、ルートノードに戻ったときに、ルートノードの未処理の代表データがなくなる（終了）まで、木構造の探索を実行する。そして、木探索部１０２が、木構造の探索が終了すると、グループ化結果出力部１０８は、グループ化結果１５０を出力する（ステップＡ２１１）。
【０１１０】
＜第１の変形例＞
以上の説明した情報処理装置１０は、次のように構成される。
【０１１１】
例えば、情報処理装置１０の各構成部は、ハードウェア回路で構成されても良い。
【０１１２】
また、情報処理装置１０は、各構成部をネットワーク又はバスなど（以下、まとめて「ネットワークなど」と呼ぶ）を介して接続した複数の装置を用いて構成されても良い。
【０１１３】
図８は、本実施形態の変形例に係る情報処理装置１１の構成の一例を示すブロック図である。ただし、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【０１１４】
情報処理装置１１は、木探索部１０２と、グループ化判定部１０３と、サブツリーグループ化部１０４と、リーフノードグループ化部１０５と、グループ間併合部１０６と、代表データ併合部１０７とを含む。情報処理装置１１の各構成は、図示しないネットワークなどを介して、図８において図示されていないグループ化閾値受信部１０１と、木構造保持部１１０と、類似度保持部１２０と、中間結果保持部１３０と接続する。そして、情報処理装置１１の各構成は、情報処理装置１０の各構成と同様に動作する。なお、図示しないグループ化結果出力部１０８は、情報処理装置１１の動作後、中間結果保持部１３０から、グループ化結果１５０を取り出せばよい。
【０１１５】
このように構成された情報処理装置１１は、情報処理装置１０と同様の効果を得ることができる。
【０１１６】
その理由は、上記のとおり、情報処理装置１１の各構成が、情報処理装置１０の構成と同様に動作し、グループ化を実行できるためである。
【０１１７】
なお、情報処理装置１１は、本発明の実施形態の最小構成である。
【０１１８】
＜第２の変形例＞
また、情報処理装置１０は、複数の構成部を１つのハードウェアで構成されても良い。
【０１１９】
また、情報処理装置１０は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含むコンピュータ装置として実現されても良い。情報処理装置１０は、上記構成に加え、さらに、入出力接続回路（ＩＯＣ：Input / Output Circuit）と、ネットワークインターフェース回路（ＮＩＣ：Network Interface Circuit）とを含むコンピュータ装置として実現されても良い。
【０１２０】
図９は、情報処理装置１０の第２の変形例である情報処理装置６００の構成の一例を示すブロック図である。
【０１２１】
情報処理装置６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを含み、コンピュータ装置を構成している。
【０１２２】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを制御する。
【０１２３】
そして、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図１に示す各部としての各機能を実現する。図１に示す各部とは、グループ化閾値受信部１０１、木探索部１０２、グループ化判定部１０３、サブツリーグループ化部１０４、リーフノードグループ化部１０５、グループ間併合部１０６、代表データ併合部１０７、及びグループ化結果出力部１０８とである。
【０１２４】
ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０又は内部記憶装置６４０を、プログラムの一時記憶として使用しても良い。
【０１２５】
また、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体７００が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、ＣＰＵ６１０は、ＮＩＣ６８０を介して、図示しない外部の装置からプログラムを受け取り、ＲＡＭ６３０に保存して、保存したプログラムを基に動作しても良い。
【０１２６】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム及び固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ（Programmable-ROM）又はフラッシュＲＯＭである。
【０１２７】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラム及びデータを一時的に記憶する。ＲＡＭ６３０は、例えば、Ｄ−ＲＡＭ（Dynamic-RAM）である。
【０１２８】
内部記憶装置６４０は、情報処理装置６００が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置６４０は、ＣＰＵ６１０の一時記憶装置として動作しても良い。内部記憶装置６４０は、例えば、ハードディスク装置、光磁気ディスク装置、ＳＳＤ（Solid State Drive）又はディスクアレイ装置である。内部記憶装置６４０は、木構造保持部１１０、類似度保持部１２０、及び、中間結果保持部１３０として動作する。
【０１２９】
ここで、ＲＯＭ６２０と内部記憶装置６４０は、不揮発性の記憶媒体である。一方、ＲＡＭ６３０は、揮発性の記憶媒体である。そして、ＣＰＵ６１０は、ＲＯＭ６２０、内部記憶装置６４０、又は、ＲＡＭ６３０に記憶されているプログラムを基に動作可能である。つまり、ＣＰＵ６１０は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【０１３０】
ＩＯＣ６５０は、ＣＰＵ６１０と、入力機器６６０及び表示機器６７０とのデータを仲介する。ＩＯＣ６５０は、例えば、ＩＯインターフェースカード又はＵＳＢ（Universal Serial Bus）カードである。
【０１３１】
入力機器６６０は、情報処理装置６００の操作者からの入力指示を受け取る機器である。入力機器６６０は、例えば、キーボード、マウス又はタッチパネルである。入力機器６６０は、グループ化閾値受信部１０１として動作してよい。
【０１３２】
表示機器６７０は、情報処理装置６００の操作者に情報を表示する機器である。表示機器６７０は、例えば、液晶ディスプレイである。表示機器６７０は、グループ化結果出力部１０８として動作してよい。
【０１３３】
ＮＩＣ６８０は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。ＮＩＣ６８０は、例えば、ＬＡＮ（Local Area Network）カードである。ＮＩＣ６８０は、グループ化閾値受信部１０１又はグループ化結果出力部１０８として動作してもよい。
【０１３４】
このように構成された情報処理装置６００は、情報処理装置１０と同様の効果を得ることができる。
【０１３５】
その理由は、情報処理装置６００のＣＰＵ６１０が、プログラムに基づいて、情報処理装置１０と同様の機能を実現できるためである。
【０１３６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１３７】
この出願は、２０１４年１０月１４日に出願された日本出願特願２０１４−２０９９３６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３８】
本発明は、画像、映像、文書といったデータの要約の用途に適用できる。
【符号の説明】
【０１３９】
１０  情報処理装置
１１  情報処理装置
１００  データ処理部
１０１  グループ化閾値受信部
１０２  木探索部
１０３  グループ化判定部
１０４  サブツリーグループ化部
１０５  リーフノードグループ化部
１０６  グループ間併合部
１０７  代表データ併合部
１０８  グループ化結果出力部
１１０  木構造保持部
１２０  類似度保持部
１３０  中間結果保持部
１４０  グループ化閾値
１５０  グループ化結果
６００  情報処理装置
６１０  ＣＰＵ
６２０  ＲＯＭ
６３０  ＲＡＭ
６４０  内部記憶装置
６５０  ＩＯＣ
６６０  入力機器
６７０  表示機器
６８０  ＮＩＣ
７００  記憶媒体
【図１】
0006624062.tif 000002
【図２】
0006624062.tif 000003
【図３】
0006624062.tif 000004
【図４】
0006624062.tif 000005
【図５】
0006624062.tif 000006
【図６】
0006624062.tif 000007
【図７】
0006624062.tif 000008
【図８】
0006624062.tif 000009
【図９】
0006624062.tif 000010