(57)【要約】【課題】多種多様なデータを容易に把握することができる。【解決手段】本実施形態に係る情報可視化装置は、生成手段と構築手段とを含む。生成手段は、１以上の属性名を含むデータの集合から、１つのデータに含まれる属性名の組み合わせである出現パターンを生成する。構築手段は、前記出現パターンの一覧から、木構造における各ノードが０または１以上の前記属性名を含み、ルートノードからリーフノードまでの経路上に一度ずつ出現する属性名の集合が出現パターンを表す出現パターン木を構築し、前記出現パターン木において、共通した親ノードを持つ１以上のノード群に共通して含まれる少なくとも１つの括りだし対象属性名を抽出し、該括りだし対象属性名を単一のノードに括りだす、組み換え処理を行なう。【選択図】図１
2014170410.tif 000002
【特許請求の範囲】
【請求項１】
１以上の属性名を含むデータの集合から、１つのデータに含まれる属性名の組み合わせである出現パターンを少なくとも生成する生成手段と、
前記出現パターンの一覧から、木構造における各ノードが０または１以上の前記属性名を含み、ルートノードからリーフノードまでの経路上に一度ずつ出現する属性名の集合が出現パターンを表す出現パターン木を構築する構築手段とを、具備し、
前記構築手段は、前記出現パターン木において、共通した親ノードを持つ１以上のノード群に共通して含まれる少なくとも１つの括りだし対象属性名を抽出し、該括りだし対象属性名を単一のノードに括りだす、組み換え処理を行なうことを特徴とする情報可視化装置。
【請求項２】
前記構築手段は、前記組み換え処理を繰り返し実行することを特徴とする請求項１に記載の情報可視化装置。
【請求項３】
前記構築手段は、前記出現パターンに含まれる属性名と、全出現パターンにおける該属性名の出現頻度とを対応付けた出現頻度リストを作成する作成手段と、
前記出現頻度リストに基づいて、前記属性名のうち前記出現頻度が高い属性名を優先して前記括りだし対象属性名として前記組み換え処理を実行することで前記出現パターン木を構築する組み換え手段と、を具備することを特徴とする請求項１または請求項２に記載の情報可視化装置。
【請求項４】
前記構築手段は、前記括りだし対象属性名を含むノード群において、該ノード群全てに該括りだし対象属性名と共に含まれる属性名を抽出し、該括りだし対象属性名と該括りだし対象属性名と共に含まれる属性名とを合わせた共通属性名群を新たな括りだし対象属性名として単一のノードに括りだすことを特徴とする請求項１から請求項３のいずれか１項に記載の情報可視化装置。
【請求項５】
前記組み換え手段は、出現頻度が同数である括りだし対象属性名が複数存在する場合、該括りだし対象属性名ごとに、共通属性名群に含まれる属性名の数と各ノードに含まれる属性名のうち前記共通属性名群を除いた属性名の数の合計値である評価値を算出し、該評価値が最小である括りだし対象属性名における共通属性名群を括りだし対象属性名として単一のノードに括りだすことを特徴とする請求項４に記載の情報可視化装置。
【請求項６】
前記データは、1以上の前記属性名と該属性名に対応する値との組を少なくとも含むデータ形式であることを特徴とする請求項１から請求項５のいずれか１項に記載の情報可視化装置。
【請求項７】
前記データは、ｕＴｕｐｌｅ形式のデータであることを特徴とする請求項１から請求項６のいずれか１項に記載の情報可視化装置。
【請求項８】
１以上の属性名を含むデータの集合から、１つのデータに含まれる属性名の組み合わせである出現パターンを少なくとも生成し、
前記出現パターンの一覧から、木構造における各ノードが０または１以上の前記属性名を含み、ルートノードからリーフノードまでの経路上に一度ずつ出現する属性名の集合が出現パターンを表す出現パターン木を構築し、前記出現パターン木において、共通した親ノードを持つ１以上のノード群に共通して含まれる少なくとも１つの括りだし対象属性名を抽出し、該括りだし対象属性名を単一のノードに括りだす、組み換え処理を行なうことを特徴とする情報可視化方法。
【請求項９】
コンピュータを、請求項１から請求項７のいずれか１項に記載の情報可視化装置の各手段として実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ集合を描画する情報可視化装置、方法及びプログラムに関する。
【背景技術】
【０００２】
センサなどのデータを記録し、記録したデータの集合を検索可能とするデータベースやファイルシステムとして、ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）やＣｏｕｃｈＤＢ，ｕＴｕｐｌｅＳｐａｃｅなど、幾つかのデータ集合記録システムがある（例えば、非特許文献１参照。）。  
中でも、ｕＴｕｐｌｅＳｐａｃｅやＣｏｕｃｈＤＢなどはスキーマレスなデータベースと呼ばれ、多種多様なデータ、すなわち異なる種類、異なる数の属性をもつ異種異数多属性のデータの集合を管理する。例えばｕＴｕｐｌｅＳｐａｃｅでは、ｕＴｕｐｌｅ形式という1以上の「キー＝値」の組により属性名と属性名に対応する属性値とを自由に表現した形式のデータを管理する。このとき「キー＝値」は「属性名＝属性値」と同義となる。例えば、あるデータを「センサＩＤ＝１，時間＝３，温度＝２０」のように表現することで、センサＩＤと時間と温度という３つの属性名とこれに対応する属性値を表現する。  
一方、文字列集合の索引構造などに用いられるデータ構造としてトライ木がある（例えば、非特許文献２参照。）。トライ木は、木構造をもつデータ構造である。  
トライ木では、木構造を構成する各ノードに文字を割り当て、ルートノードからリーフノードまでの経路上に現れる文字の並びにより文字列を表現する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】T. Nakamura, K. Kashiwagi, Y. Arakawa, and M. Nakamura, "Design and implementation of new uTupleSpace enabling storage and retrieval of large amount of schema-less sensor data," 2nd Intl. Workshop on Enablers for Ubiquitous and Context-Aware Services on Sensor Networks (EUCASS2011), pp.414-420, July 2011.
【非特許文献２】Fredkin E, “Trie memory, ”Communications of the ACM, Vol. 3, No. 9, pp.490-500, 1960.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データベースやファイルシステムにおいて、どのようなデータが記録されているかを把握することは当該データの利用や当該システムのメンテナンスにおいて有用である。例えば記録されたデータの活用方法を検討する際、ＳＱＬに代表される検索文を設計する際、あるいはデータが増えて記憶容量が圧迫された場合に削除対象とするデータを決定する際などに役立つ。  
しかしながら、特にｕＴｕｐｌｅＳｐａｃｅのように多種多様なデータを記録する場合には、データの増大に伴いデータの種類も増大し、データの一覧からどのようなデータが記録されているのかを把握することは困難となる。
こうした場合において、どのような種類のデータが存在するか、すなわちどのような属性名の組み合わせを含むデータが記録され、またどのような属性名が多く含まれているのかを俯瞰できるようシンプルに表現できると良い。  
例えば、従来の方法としてトライ木がある。  
トライ木では、木構造を構成する各ノードに文字を割り当て、ルートノードからリーフノードまでの経路上に現れる文字の並びにより文字列を表現することで、木全体では文字列の集合を表現することが出来る。  
しかしながら、各ノードに割り当てられた文字は単体では意味を為さず、また各ノードに割り当てる文字は割り当ての順序に意味があるため組み合わせは考慮しない。
このため意味ある文字列である属性名について、その組み合わせの集合を俯瞰するために用いることはできない。
【０００５】
本発明は上記事情に着目してなされたもので、その目的とするところは、多種多様なデータを容易に把握することができる情報可視化装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するための本発明の一つの観点は、１以上の属性名を含むデータの集合から、１つのデータに含まれる属性名の組み合わせである出現パターンを少なくとも生成する生成手段と、前記出現パターンの一覧から、木構造における各ノードが０または１以上の前記属性名を含み、ルートノードからリーフノードまでの経路上に一度ずつ出現する属性名の集合が出現パターンを表す出現パターン木を構築する構築手段とを、具備し、前記構築手段は、前記出現パターン木において、共通した親ノードを持つ１以上のノード群に共通して含まれる少なくとも１つの括りだし対象属性名を抽出し、該括りだし対象属性名を単一のノードに括りだす、組み換え処理を行なうことを特徴とする。
【発明の効果】
【０００７】
すなわち本発明によれば、ｕＴｕｐｌｅＳｐａｃｅのようにデータベースやファイルシステムに記録された少なくとも１つの属性名を含むデータの集合から、各データが含む属性名の出現パターンの一覧である出現パターン一覧を生成し、出現パターン一覧から、ルートノードからリーフノードまでの経路上に一度ずつ出現する属性名の集合が出現パターンを表す出現パターン木を構築することで、どのような種類のデータが存在するか、どのような属性名の組み合わせを含むデータが記録されているのかを容易に把握することができるよう、多種多様なデータの集合を木構造により描画することができる。  
さらに本発明によれば、出現パターン木において、共通した親ノードを持つ１以上のノード群に共通して含まれる少なくとも１つの括りだし対象属性名を抽出し、括りだし対象属性名を単一のノードに括りだす組み換え処理を繰り返し実行することにより、各ノードが保持する複数の属性名全てが同じではなくとも、一部が共通している場合には括りだすことができ、各ノードが含む属性名の数の合計値を小さくすることができる。すなわち、出現パターン一覧をより簡略化した木構造により描画できる。
【０００８】
さらに本発明によれば、出現パターン一覧に出現する属性名とその出現頻度を算出し、出現頻度が高い属性名を優先して括りだし対象属性名候補とすることで、多くのノードに共通して含まれている属性名を括りだすことができ、出現頻度の低い属性名により括りだした場合に比べ、各ノードが含む属性名の数の合計値を小さくする効果が大きくなる。よって、出現パターン一覧をより簡略化した木構造により描画できる。また、各出現パターンがルートノードからリーフノードまでの経路上に一度ずつ出現する属性名のうち出現頻度の高い属性名が優先して分類されることになるので、ルートノードに近いノードほど出現パターン一覧における出現頻度の高い属性名が含まれているため、どの属性名の出現頻度が大きいかを出現パターン木から容易に把握することができる。
【０００９】
さらに本発明によれば、各ノードに１つの属性名を保持させるのではなく、複数の属性名を保持可能とすることにより、出現パターン木のノード数を少なくすることができ、出現パターン一覧をより簡略化した木構造により描画できる。
さらに本発明によれば、共通した親ノードを持つ１以上のノード群において、出現頻度が同数である括りだし対象属性名の候補が複数存在する場合、各ノードにおいて、括りだし対象属性名候補と、括りだし対象属性名候補を含むノード全てに共通して存在する括りだし対象属性名候補以外の属性名を合わせた属性名の数、すなわち共通属性名群に含まれる属性名の数と、各ノードに含まれる属性名のうち共通属性名群を除いた属性名の数との合計値を算出し、算出した合計値が最小となる括りだし対象属性名候補における共通属性名群を括りだし対象属性名とすることにより、さらに各ノードが含む属性名の数の合計値を小さくすることができ、出現パターン一覧をより簡略化した木構造により描画できる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る情報可視化装置を示すブロック図。
【図２】データ蓄積部に蓄積されるデータの集合の具体例を示す図。
【図３】情報可視化装置の動作を示すフローチャート。
【図４】出現パターン生成部での出現パターン生成処理を示すフローチャート。
【図５】出現パターン生成処理結果の具体例を示す図。
【図６】木構造構築部における木構造構築処理を示すフローチャート。
【図７】出現頻度リストの具体例を示す図。
【図８】初期出現パターン木の具体例を示す図。
【図９】出現パターン木の組み換え処理の詳細を示すフローチャート。
【図１０】評価処理の詳細を示すフローチャート。
【図１１】出現パターン木の組み換え処理の第１経過を示す図。
【図１２】出現パターン木の組み換え処理の第２経過を示す図。
【図１３】出現パターン木の組み換え処理の第３経過を示す図。
【図１４】出現パターン木の組み換え処理の第４経過を示す図。
【図１５】最終的な出現パターン木を示す図。
【図１６】出現パターン木に各出現パターンの出現回数を表すノードを追加した一例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら本開示の一実施形態に係る情報可視化装置、方法及びプログラムについて詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
本実施形態に係る情報可視化装置について図１のブロック図を参照して説明する。  
本実施形態に係る情報可視化装置１００は、データ蓄積部１０１、出現パターン生成部１０２、木構造構築部１０３および表示部１０４を含む。
【００１２】
データ蓄積部１０１は、１以上の属性名を含むデータを蓄積する。属性名は属性の名称であり、例えば、温度、湿度、電流、電圧、流体の流量、物質の濃度、明度、騒音、位置および加速度が挙げられる。データについては図２を参照して後述する。  
出現パターン生成部１０２は、データ蓄積部１０１に蓄積されたデータの集合から、各データに含まれる属性名の組み合わせを抽出し、属性名の組み合わせである出現パターンを、データごとに生成する。出現パターン生成部１０２はその後、出現パターンの一覧である出現パターン一覧を生成する。
【００１３】
木構造構築部１０３は、出現パターン一覧から出現頻度リストを作成し、出現パターン一覧から初期出現パターン木を構築し、初期出現パターン木と出現頻度リストから出現パターン木を構築する。出現パターン木は、ルートノードからリーフノードまでの経路上に一度ずつ現れる属性名の集合が出現パターンを示す木構造である。  
表示部１０４は、出現パターン木を表示する。
【００１４】
次に、木構造構築部１０３について詳細に説明する。  
木構造構築部１０３は、リスト作成部１０５および組み替え部１０６を含む。  
リスト作成部１０５は、出現パターン一覧に基づいて、出現パターン一覧における属性名ごとの出現頻度を算出し、出現頻度リストを作成する。  
組み替え部１０６は、出現パターン一覧に基づいて初期出現パターン木を構築する。初期出現パターン木は、出現パターン一覧における各出現パターンに含まれる属性名全てを含むノードをルートノードの各子ノードとした木構造である。さらに組み換え部１０６は、出現頻度リストを参照して、初期出現パターン木におけるルートノードの子ノード群を処理対象ノード群として組み換え処理を繰り返し行なう。これにより、出現パターン木を構築する。
【００１５】
次に、データ蓄積部１０１に蓄積されるデータの集合の一例について図２を参照して説明する。  
本実施形態では、属性名２０１と属性値２０２とを対応付けて１つの属性２０３として、１以上の属性２０３の組を１つのデータ２０４と呼ぶ。属性値２０２は、属性名２０１のそれぞれに対応する値である。
【００１６】
本実施形態では、データは１以上の属性、すなわち「属性名＝属性値」の組から構成されるデータ形式によって記述することとする。例えば、図２の例では、データ（ア）からデータ（ク）までの８個のデータ２０４が蓄積されている。一例として、データ（エ）は、「subject=project_A, date=602, switch=on」といった形式で記述される。すなわち、データ（エ）は、「subject」、「date」および「switch」の３つの属性名を含み、さらにこれらの属性名に対応する属性値が表現される。  
なお、本実施形態では、データは１以上の「属性名＝属性値」の組から構成されるデータ形式によって記述することとしたが、これに限らず、属性名だけからなるデータ形式でもよい。また、「属性名＝属性値」の組と組とをカンマによって区切っているが、これに限らず、スペースや他の記号を用いても良い。例えば「属性値１／属性名２／属性名３／…」といった形式でも良い。また、「属性名１，属性値の型１（ｉｎｔ，ｆｌｏａｔ，ｓｔｒｉｎｇ等），属性値１，属性名２，属性値の型２（ｉｎｔ，ｆｌｏａｔ，ｓｔｒｉｎｇ等），属性値３），…」と３つの項が１セットで複数並んでいるような、属性名と属性値以外の情報が含まれている形式でもよい。
【００１７】
なお、上述した例に限らず、「属性名＝属性値」の形式や、属性名だけで表現できるのであれば、例えばＷｅｂおよびインターネットを経由して取得したデータを用いてもよい。また、図２の例では、２個から６個の属性名を含むデータを例として挙げたが、属性名の数は１以上であれば何個含んでいてもよい。また、データ蓄積部１０１に蓄積されたデータの数が８個の場合を例として挙げたが、これに限らず、さらに多くのデータを蓄積してもよい。
【００１８】
次に、情報可視化装置１００の動作を図３のフローチャートを参照して説明する。  
ステップＳ３０１では、出現パターン生成部１０２が、データ蓄積部１０１に蓄積されたデータの集合から出現パターン一覧を生成する。出現パターン生成部１０２における出現パターン生成処理の詳細については図４を参照して後述する。  
ステップＳ３０２では、木構造構築部１０３が、出現パターン一覧から出現パターン木を構築する。木構造構築部１０３における木構造構築処理の詳細については図６、図９および図１０を参照して後述する。  
ステップＳ３０３では、表示部１０４が、出現パターン木を描画する。以上で、情報可視化装置１００の動作を終了する。
【００１９】
次に、ステップＳ３０１に示す出現パターン生成部１０２での出現パターン生成処理について図４のフローチャートを参照して説明する。  
ステップＳ４０１では、データ蓄積部１０１に蓄積されるデータの集合から、ステップＳ３０１の動作時点でのデータの集合を受け取る。  
ステップＳ４０２では、ステップＳ４０１で受け取ったデータのうち１つのデータを選択し、このデータに含まれる属性名を抽出する。  
ステップＳ４０３では、ステップＳ４０２で抽出した１以上の属性名から出現パターンを生成する。
ステップＳ４０４では、ステップＳ４０３で生成した出現パターンと、出現パターン一覧に含まれる出現パターンとを比較して、出現パターン一覧に同一の出現パターンが既に存在するかどうかを判定する。出現パターン一覧に同一の出現パターンが存在すれば、ステップＳ４０６に進み、出現パターン一覧に同一の出現パターンが存在しなければ、ステップＳ４０５に進む。なお、出現パターン同士の比較の際は、データ中での属性名の出現順序は問わず、同一の属性名の組み合わせであれば同一の出現パターンとすればよい。例えば、「ｓｕｂｊｅｃｔ，ｄａｔｅ，ｓｗｉｔｃｈ，ｉｄ」と「ｄａｔｅ，ｉｄ，ｓｕｂｊｅｃｔ，ｓｗｉｔｃｈ」は同一の出現パターンとする。また、最初に処理するデータの場合は、比較対象となる出現パターンが出現パターン一覧に存在しないので、出現パターン一覧に追加する。
なお、データ蓄積部１０１に蓄積されるデータの集合から、データを１つずつ受け取って、出現パターン一覧を生成していくようにしてもよい。
また、データが同じ属性名を重複して含んでいる場合は、1つにまとめることで対応できる。
【００２０】
ステップＳ４０５では、出現パターン一覧に新しい出現パターンを追加する。  
ステップＳ４０６では、全てのデータについて出現パターンを生成したかどうかを判定する。全てのデータについて出現パターンを生成した場合は、出現パターン抽出処理を終了し、全てのデータについて出現パターンを生成していない場合、すなわち出現パターンを生成していないデータが存在する場合は、ステップＳ４０２に戻り同様の処理を繰り返す。  
以上で出現パターン生成処理を終了する。
【００２１】
次に、出現パターン生成処理の具体例について図５を参照して説明する。  
図５は、図２に示すデータの集合から出現パターン一覧５００を生成した例である。  
具体的な処理としては、まず、出現パターン生成処理を行なう時点でのデータの集合、すなわち図２に示したデータの集合を受け取る。続いて図２のデータの集合からデータ（ア）を選択し、データ（ア）から属性名「ｓｕｂｊｅｃｔ，ｄａｔｅ，ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ，ｉｄ，ｔｅｍｐ」を抽出し、これらの属性名の組み合わせを出現パターンとして生成する。その後、出現パターン一覧に同一の出現パターンがあるかを判定するが、最初に処理するデータであるため、出現パターン５０１（Ａ）として出現パターン一覧に格納する。  
続いて、まだ全てのデータについて出現パターンを生成していないため、次のデータ（イ）から同様に属性名「ｔｅｍｐ，ｓｕｂｊｅｃｔ，ｄａｔｅ，ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ，ｉｄ」を抽出して出現パターンを生成する。このときデータ（イ）の出現パターンはデータ（ア）の出現パターンである出現パターン５０１（Ａ）と同一の属性名の組み合わせとなるので、出現パターン一覧には追加しない。  
続いて、まだ全てのデータについて出現パターンを生成していないため、図２のデータ（ウ）から属性名「ｓｕｂｊｅｃｔ，ｉｄ，ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ，ｍａｇｎｉｔｕｄｅ」を抽出して出現パターンを生成する。出現パターン「ｓｕｂｊｅｃｔ，ｉｄ，ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ，ｍａｇｎｉｔｕｄｅ」は出現パターン一覧に同一の出現パターンが存在しないため出現パターン５０１（Ｂ）として出現パターン一覧に追加される。以上の処理を全てのデータに対して行なえばよい。結果として、図５に示すように、データ（エ）から出現パターン５０１（Ｃ）、データ（オ）から出現パターン５０１（Ｄ）、データ（カ）から出現パターン５０１（Ｅ）、データ（キ）から出現パターン５０１（Ｆ）、およびデータ（ク）から出現パターン５０１（Ｇ）がそれぞれ生成され、出現パターン一覧に追加される。
【００２２】
なお、ここでは図２のデータ（ア）からデータ（ク）までの表記順に出現パターンを生成した結果を示しているが、これに限らず、逆順に抽出してもよい。また、生成中の出現パターン一覧に含まれる出現パターンを属性名の数によってソートしながら出現パターンの生成を行ってもよい。これにより、出現パターン同士の比較を効率的に行うことができる。例えば、属性名の数が５個の出現パターンと同一である可能性がある出現パターンは、属性名の数が５個の出現パターンのみであり、出現パターン一覧を属性名の数によってソートしておくことにより、出現パターン一覧の中から属性名の数が５個の出現パターンを容易にみつけることができる。  
また、作成中の出現パターン一覧において、各出現パターンを構成する属性名を辞書順によりソートしつつ出現パターンの生成をおこなってもよい。これにより、出現パターンを構成する属性名の表示順が一意に定まるため、出現パターン同士の比較を容易におこなうことができる。
また本実施形態において、出現パターンは属性名と属性名をカンマによって区切っているが、これに限らず、スペースや他の記号等を用いても良い。
【００２３】
次に、ステップＳ３０２に示す木構造構築部１０３における木構造構築処理について図６のフローチャートを参照して説明する。  
ステップＳ６０１では、リスト作成部１０５が、出現パターン一覧から属性名を抽出し、各属性名の出現パターン一覧における出現頻度を算出し、出現頻度リストを作成する。  
ステップＳ６０２では、組み替え部１０６が、出現パターン一覧に基づいて初期出現パターン木を構築する。  
【００２４】
ステップＳ６０３では、組み替え部１０６が、出現頻度リストを参照して初期出現パターン木の組み換え処理を繰り返し実行し、出現パターン木を構築する。
次に、ステップＳ６０２において作成される出現頻度リストの具体例について図７を参照して説明する。  
出現頻度リスト７００は、属性名７０１とその出現頻度７０２とが対応付けられたテーブルである。出現頻度７０２は、属性名ごとに、出現パターン一覧中に出現する同一の属性名の数をカウントして算出すればよい。図７に示す出現頻度リスト７００は、図５の出現パターン一覧を参照して属性名の出現頻度を算出しており、例えば、図５の出現パターン一覧には、属性名７０１「ｓｕｂｊｅｃｔ」が５個存在するので出現頻度７０２「５」、属性名７０１「ｄａｔｅ」が３個存在するので出現頻度７０２「３」、と対応付けられて格納される。
【００２５】
次に、ステップＳ６０２において構築される初期出現パターン木の具体例について図８を参照して説明する。
図８に示す初期出現パターン木８００は、図５の出現パターン一覧を参照して、親ノードをルートノード８０１、出現パターン一覧内の各出現パターンに含まれる属性名全てを含むノード８０２からノード８０８をその子ノードとして構築される。図５の出現パターン（Ａ）から（Ｇ）までが、それぞれ子ノード８０２から子ノード８０８までに対応する。ここでは、ルートノード８０１を空のノードとしているが、ルートノードであることを記号等により示すこととしても良い． 
【００２６】
次に、ステップＳ６０３における組み換え処理の詳細について図９のフローチャートを参照して説明する。なお、以下のステップＳ９０１からステップＳ９０７までの処理を組み換え処理９００と呼ぶ。  
また、最初の処理では、初期出現パターン木におけるルートノードの子ノード群が処理対象ノード群となる。処理対象ノード群とは、親ノードを共通とする子ノード群であって、組み換え処理の対象となる１以上のノードである。
ステップＳ９０１では、処理対象ノード群に対して括りだし操作が可能であるかどうかを判定する。括りだし操作が可能であれば、ステップＳ９０２に進み、括りだし操作が可能でない、すなわち括りだし操作が不可能であれば、処理対象ノード群における各ノードが含む属性名、ノード間の関係といった木構造情報を返す。  
また、括りだし操作が可能であるかどうかの判定は、処理対象ノード群に含まれるノード間で共通する属性名が存在するかどうかを判定し、共通する属性名が存在すれば、括りだし操作が可能であると判定し、共通する属性名が存在しなければ、括りだし操作が不可能であると判定すればよい。  
ステップＳ９０２では、出現頻度リストを参照して、処理対象ノード群に含まれる属性名のうち、出現頻度が最大となる属性名を括りだし対象属性名候補として抽出する。なお、出現頻度が最大となる属性名が複数存在する場合は、それぞれ括りだし対象属性名候補とする。  
ステップＳ９０３では、各括りだし対象属性名候補について、評価処理を行なう。評価処理については、図１０を参照して後述する。
【００２７】
ステップＳ９０４では、評価処理結果から、括りだし対象属性名を決定する。複数の括りだし対象属性名候補が存在する場合は、ステップＳ９０３の評価処理の結果から括りだし対象属性名を決定すればよい。本実施形態では、評価処理の結果である評価値が最小となる括りだし対象属性名候補について評価処理を行った際の共通属性名群を括りだし対象属性名とする。共通属性名群については後述する。
ステップＳ９０５では、処理対象ノード群における括りだし対象属性名を含まないノード群を新たな処理対象ノード群とした組み換え処理９００を実行する。すなわち、図９に示す処理全体を再帰的に呼び出して組み換え処理を実行する。  
ステップＳ９０６では、処理対象ノード群における括りだし対象属性名を含むノード群について、括りだし対象属性名を括りだす括りだし操作を行なう。具体的には、処理対象ノード群における括りだし対象属性名を含むノードについて１つずつ子ノードを生成し、括りだし対象属性名以外の属性名をそれぞれの子ノードに移し替える。このとき、括りだし対象属性名以外の属性名を含まない場合には、子ノードは１つも属性名を含まないことになる。１つも属性名を含まないノードであることを記号φで示す。さらに、括りだし対象属性名のみを含むノード群を１つのノードに融合し、生成した各子ノードは融合したノードの子ノードとする。なお、本実施形態では１つも属性名を含まないノードであることを記号φで示すこととしたが、記号「φ」に限らず他の記号を用いてもよいし、空のノードとしてもよい。また、処理対象ノード群における括りだし対象属性名を含むノードについて共通する親ノードを生成し、括りだし対象属性名を生成した親ノードに移し替えることとしても良い。
ステップＳ９０７では、処理対象ノード群における括りだし対象属性名のみを含むノードの子ノード群、すなわちステップＳ９０６で融合した括りだし対象属性名のみを含むノードを親ノードとする子ノード群を新たな処理対象ノード群とした組み換え処理９００を実行する。すなわち、図９に示す処理全体を再帰的に呼び出して組み換え処理を実行する。
ステップＳ９０７の処理を終了すると、組み換え処理によって組み換えられた木構造情報を返す。上記手順により組み換え処理が再帰的に実行され、出現パターン木が構築される。
本実施形態において組み換え処理を繰り返し実行する手段として、組み換え処理を再帰的に実行することとしたが，組み換え処理を実行するたびに括りだし操作が可能なノード群、すなわち親ノードを共通とする子ノード群であり、該子ノード群におけるノード間で共通する属性名が含まれる、という条件を満たすノード群を捜索し、括りだし操作が可能なノード群が存在しなくなるまで組み換え処理を実行することとしても良い。  
【００２８】
次に、ステップＳ９０３における評価処理について図１０のフローチャートを参照して説明する。  
ステップＳ１００１では、評価対象である括りだし対象属性名候補Ｘについて、処理対象ノード群のうち括りだし対象属性名候補Ｘを含むノード全てに共通して存在する、括りだし対象属性名候補Ｘ以外の属性名Ｙを抽出する。なお、共通して存在する括りだし対象属性名候補Ｘ以外の属性名Ｙは存在しなくてもよく、また複数存在してもよい。
ステップＳ１００２では、括りだし対象属性名候補Ｘと属性名Ｙとを合わせた共通属性名群の数と、処理対象ノード群における各ノードが含む共通属性名群以外の属性名の数との合計数を括りだし対象属性名候補Ｘの評価値として算出する。Ｓ１００２の処理を終了すると、評価値を返す。以上で評価処理を終了する。
【００２９】
なお、本実施形態では、処理対象ノード群における括りだし対象属性名を含まないノード群から組み換え処理を行なう例を示すが、処理対象ノード群における括りだし対象属性名を含むノード群から先に組み換え処理を行なうようにしてもよい。
次に、図９に示す出現パターン木の組み換え処理と、図１０に示す評価処理の具体例について図１１から図１４までの処理経過を参照して説明する。  
図１１は、初期出現パターン木から括りだし対象属性名候補を抽出する例である。初期出現パターン木におけるルートノードの子ノード群が最初の処理対象ノード群であるので、処理対象ノード群について括りだし操作が可能であるかを判定する。ここでは「ｓｕｂｊｅｃｔ」や「ｄａｔｅ」といった属性名が処理対象ノード群に含まれるノード間で共通して含まれているため、括りだし操作が可能であると判断する。
続いて、処理対象ノード群に含まれるノード間で共通する属性名のうち、出現頻度が最大となる属性名を抽出する。図７の出現頻度リストを参照すると、属性名「ｓｕｂｊｅｃｔ」が出現頻度５回と最大であるため、属性名「ｓｕｂｊｅｃｔ」を括りだし対象属性名候補として抽出する。
【００３０】
続いて、括りだし対象属性名候補である「ｓｕｂｊｅｃｔ」について、評価処理を行う。
まず評価対象である括りだし対象属性名候補「ｓｕｂｊｅｃｔ」について、処理対象ノード群のうち括りだし対象属性名候補「ｓｕｂｊｅｃｔ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」以外の属性名を抽出する。ここでは、処理対象ノード群のうち括りだし対象属性名候補「ｓｕｂｊｅｃｔ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」以外の属性名は存在しない。
続いて括りだし対象属性名候補「ｓｕｂｊｅｃｔ」の評価値を算出すると、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」と、処理対象ノード群のうち括りだし対象属性名候補「ｓｕｂｊｅｃｔ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」以外の属性名を合わせた属性名の数、すなわち共通属性名群が含む属性名の数は、１＋０＝１となる。また、処理対象ノード群における各ノードが含む共通属性名群以外の属性名の数は、各子ノード８０２から８０８までそれぞれ５，４，２，３，３，３，２となり、合わせて２２であるので、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」の評価値は１＋２２＝２３と算出される。
ここでは、括りだし対象属性名候補が「ｓｕｂｊｅｃｔ」のみであり、従って評価値が最小となる括りだし対象属性名候補「ｓｕｂｊｅｃｔ」について、評価処理を行った際の共通属性名群「ｓｕｂｊｅｃｔ」を括りだし対象属性名として決定する。
【００３１】
結果として、図１１に示す初期出現パターン木における処理対象ノード群は、括りだし対象属性名「ｓｕｂｊｅｃｔ」を含むノード群Ｎ−１、括りだし対象属性名候補「ｓｕｂｊｅｃｔ」を含まないノード群Ｎ−２とに分類できる。  
【００３２】
続いて、括りだし対象属性名「ｓｕｂｊｅｃｔ」が含まれないノード群、すなわちノード群Ｎ−２を新たな処理対象ノード群とした組み換え処理を行なう。ここでは、処理対象ノード群について、複数のノード間で共通する属性名として「ｏｂｊｅｃｔ」、「ｓｔａｔｕｓ」があるため括りだし操作が可能であると判断する。続いて処理対象ノード群に含まれるノード間で共通する属性名のうち、出現頻度が最大となる属性名を抽出する。図７の出現頻度リストを参照すると、属性名「ｏｂｊｅｃｔ」と「ｓｔａｔｕｓ」が出現頻度２回と最大であるため、属性名「ｏｂｊｅｃｔ」と「ｓｔａｔｕｓ」を括りだし対象属性名候補として抽出する。さらに、両括りだし対象属性名候補について評価処理を行う。まず評価対象である括りだし対象属性名「ｏｂｊｅｃｔ」について、処理対象ノード群のうち括りだし対象属性名候補「ｏｂｊｅｃｔ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｏｂｊｅｃｔ」以外の属性名を抽出する。このとき属性名「ｓｔａｔｕｓ」が抽出される。従って、括りだし対象属性名候補「ｏｂｊｅｃｔ」と、処理対象ノード群のうち括りだし対象属性名候補「ｏｂｊｅｃｔ」を含むノード全てに共通して存在する括りだし対象属性名候補以外の属性名「ｓｔａｔｕｓ」を合わせた共通属性名群の数は、１＋１＝２となる。また、処理対象ノード群における各ノードが含む共通属性名群以外の属性名の数は、子ノード８０７における「ｇａｔｅ＿ｎｕｍ」のみであるので、括りだし対象属性名候補「ｏｂｊｅｃｔ」の評価値は２＋１＝３と算出される。
同様に、括りだし対象属性名候補「ｓｔａｔｕｓ」の評価値を算出する場合、処理対象ノード群のうち括りだし対象属性名候補「ｓｔａｔｕｓ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｓｔａｔｕｓ」以外の属性名は「ｏｂｊｅｃｔ」が存在する。このとき処理対象ノード群における各ノードが含む共通属性名群以外の属性名の数は、子ノード８０７における「ｇａｔｅ＿ｎｕｍ」のみであるので、括りだし対象属性名候補「ｓｔａｔｕｓ」の評価値は２＋１＝３と算出される。
【００３３】
続いて評価値が最小となる括りだし対象属性名候補について評価処理を行った際の共通属性名群を括りだし対象属性名とするが、この場合はどちらの括りだし対象属性名候補を選択しても評価値が等しく最小である。本実施形態においては、評価値が最小である括りだし対象属性名候補が複数存在する場合には、先に評価処理を行った括りだし対象属性名候補を選択することとする。すなわち、括りだし対象属性名候補「ｏｂｊｅｃｔ」を選択し、共通属性名群「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」を括りだし対象属性名として決定する。
なお、本実施形態においては、評価値が最小である括りだし対象属性名候補が複数存在する場合には、先に評価を行った括りだし対象属性名候補を選択することとしたが、これに限らず、共通属性名群の数が多い括りだし対象属性名候補を選択することとしてもよい。その上でも複数の括りだし対象属性名候補が存在する場合は、任意の括りだし対象属性名候補を選択することとしてもよい。
【００３４】
次に、括りだし対象属性名「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」の括りだし操作を行う。具体的にはまず、処理対象ノード群における括りだし対象属性名「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」を含むノード、すなわち図１１におけるノード８０７とノード８０８について１つずつ子ノードを生成し、括りだし対象属性名以外の属性名をそれぞれの子ノードに移し替える。その結果、ノード８０７とノード８０８は、図１２に示すように括りだし対象属性名「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」のみを含むノード１２０１−１とその子ノード１２０２、およびノード１２０１−２とその子ノード１２０３に分割される。なお、ノード１２０３は、１つも属性名を含まないノードであるため、記号φで示す。  
さらに、処理対象ノード群における括りだし対象属性名「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」のみを含むノード１２０１−１とノード１２０１−２を１つのノード１３０１に融合し、ノード１２０２およびノード１２０３は、ノード１３０１の子ノードとする。この結果が図１３に示す木構造である。なお続いて、処理対象ノード群Ｎ−２における、括りだし対象属性名「ｏｂｊｅｃｔ，ｓｔａｔｕｓ」のみを含むノード１３０１の子ノード群、すなわちノード１２０２とノード１２０３を含むノード群Ｎ−２−ｃを新たな処理対象ノード群とした組み換え処理（ステップＳ９００）を行うが、ノード群Ｎ−２−ｃに含まれるノード間で共通する属性名が存在しないため、括りだし操作が不可能であると判定し、Ｎ−２−ｃのノード群についての組み換え処理（ステップＳ９００）を終了する。その結果、処理対象ノード群Ｎ−２の組み換え処理（ステップＳ９００）も終了する。
【００３５】
続いて、初期出現パターン木における処理対象ノード群について、括りだし操作を行う。括りだし対象属性名は「ｓｕｂｊｅｃｔ」と決定されているため、処理対象ノード群における括りだし対象属性名を含むノード、すなわち図１１におけるノード８０２からノード８０６について１つずつ子ノードを生成し、括りだし対象属性名以外の属性名をそれぞれの子ノードに移し替える。さらに、処理対象ノード群における括りだし対象属性名「ｓｕｂｊｅｃｔ」のみを含むノードを１つのノード１４０１に融合し、ノード１４０２からノード１４０６は、ノード１４０１の子ノードとする。この結果を図１４に示す。
【００３６】
続いて、初期出現パターン木における処理対象ノード群について、括りだし対象属性名「ｓｕｂｊｅｃｔ」のみを含むノード１４０１の子ノード群、すなわちノード１４０２からノード１４０６までを含むノード群Ｎ−１−ｃを新たな処理対象ノード群とした組み換え処理を行う。
このとき括りだし操作は可能であり、出現頻度が最大となる属性名「ｄａｔｅ」、「ｉｄ」、「ｐｏｓｉｔｉｏｎｘ」および「ｐｏｓｉｔｉｏｎｙ」を括りだし対象属性名候補としてそれぞれ評価処理を行なう。
例えば、括りだし対象属性名候補「ｐｏｓｉｔｉｏｎｘ」の評価値を算出する場合、処理対象ノード群Ｎ−１−ｃのうち括りだし対象属性名候補「ｐｏｓｉｔｉｏｎｘ」を含むノード全てに共通して存在する、括りだし対象属性名候補「ｐｏｓｉｔｉｏｎｘ」以外の属性名は「ｐｏｓｉｔｉｏｎｙ」が存在する。よって、共通属性名群の数は「ｐｏｓｉｔｉｏｎｘ、ｐｏｓｉｔｉｏｎｙ」の２つであり、処理対象ノード群における各ノードが含む共通属性名群以外の属性名の数は、ノード１４０２からノード１４０６まで順に「ｄａｔｅ，ｉｄ，ｔｅｍｐ」の３個、「ｉｄ，ｍａｇｎｉｔｕｄｅ」の２個、「ｄａｔｅ，ｓｗｉｔｃｈ」の２個、「ｐｏｓｔ＿ｎｕｍ」の１個、「ｄａｔｅ，ｉｄ，ｈｕｍｉｄｉｔｙ」の３個である。  
【００３７】
よって、その総数は１１となり、括りだし対象属性名候補「ｐｏｓｉｔｉｏｎｘ」の評価値は２＋１１＝１３となる。同様に、括りだし対象属性名候補「ｄａｔｅ」、「ｉｄ」および「ｐｏｓｉｔｉｏｎｙ」についても評価値を算出すると、評価値は、それぞれ１５、１５および１３となる。結果として、評価値が最小となる括りだし対象属性名候補のうち、先に評価処理を行った括りだし対象属性名候補「ｐｏｓｉｔｉｏｎｘ」を選択し、共通属性名群「ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ」を括りだし対象属性名として決定する。
【００３８】
以下同様に、初期出現パターン木について括りだし操作が不可能となるまで組み換え処理を再帰的に実行することで、出現パターン木を構築することができる。本実施形態における、木構造構築部１０３で生成される最終的な出現パターン木を図１５に示す。  
このように、組み換え処理を行うことで、出現パターン一覧をより簡略化した木構造を構築することができ、これを描画することでデータの集合にどのような属性名を含むデータが存在しているかを容易に把握することができる。  
さらに、出現頻度が高い属性名を優先して括りだし対象属性名候補とした組み換え処理を行うことで、出現パターン木における各ノードが含む属性名の数の合計値を小さくする効果が大きくなる。よって、出現パターン一覧をより簡略化した木構造により描画できる。さらにルートノードに近いほど出現頻度が高い属性名が含まれているため、どのような属性名が出現パターン一覧に多く含まれているかを容易に把握することができる。
【００３９】
また、本実施形態では、図１５に示すノード１５０１にように、出現頻度の異なる属性名が１つのノードに含まれることがあるが、これに限らず、出現頻度が異なる属性名を含むノードを分割し、出現頻度が異なる属性名を含むノードが存在しないようにしてもよい。  
例えば、ノード１５０１の例では、ノード１５０１は出現頻度が３回の属性名「ｄａｔｅ」と出現頻度が１回の属性名「ｔｅｍｐ」とを含むため、属性名「ｄａｔｅ」を含む１つのノードと、その子ノードとして属性名「ｔｅｍｐ」を含むノードに分割してもよい。これによって、属性名間の出現頻度の違いをより詳細に出現パターン木から読み取ることができる。  
なお、出現パターン一覧の全ての出現パターンに共通する１以上の属性名が存在する場合、ルートノードを省略した木構造で描画してもよい。
【００４０】
また、データの集合における各出現パターンの出現回数をカウントし、出現パターン木にデータの集合における各出現パターンのデータの出現回数を表すノードを追加して描画してもよい。出現回数は、データ蓄積部に蓄積されたデータの集合において、各出現パターンのデータが何回出現したか、すなわち何個蓄積されていたかを示す回数である。  
出現パターン木に各出現パターンの出現回数を表すノードを追加した一例を図１６に示す。  
例えば、左端のノードの末端にノード１６０１が追加され、ノード１６０１には「２」と記載される。これにより、出現パターン「ｓｕｂｊｅｃｔ，ｐｏｓｉｔｉｏｎｘ，ｐｏｓｉｔｉｏｎｙ，ｉｄ，ｄａｔｅ，ｔｅｍｐ」は、データの集合に２回出現することが分かる。また、１つも属性名を含まない空のノード（φノード）は省略して描画してもよい。
【００４１】
次に、表示部１０４における表示例について説明する。  
表示部１０４は、例えば図１５に示す出現パターン木をディスプレイなどに表示装置に描画する。なお、本実施形態において、出現パターン木は２次元の木構造で描画したが、例えば、Ｃｏｎｅ Ｔｒｅｅなどの手法を用いて３次元の木構造で描画してもよい（例えば、George G.Robertson, Jock D.Mackinlay, Stuart K.Card, "Cone Trees: Animated 3D Visualizations of Hierarchical Information," Proceedings of ACM Conference on Human Factors in Computing Systems (CHI'91), ACM Press, 1991,pp.189-194,参照）。また、木構造におけるノード間の親子関係を２次元上の多角形や閉曲線の包含関係で表すデータ宝石箱やベン図などを用いて描画してもよい（例えば、伊藤貴之, 梶永泰正, 池端裕子, “データ宝石箱：大規模階層型データのグラフィックスショーケース,” 情報処理学会グラフィクス&CAD 研究会, 2001-CG-104, pp.65-70,2001. 参照）。  
また、図示しないが図１に示す情報可視化装置１００に接続されたプリンタなどで紙媒体などに描画してもよい。さらに、情報可視化装置１００にネットワーク経由で接続したクライアント・コンピュータに出現パターン木の描画イメージ、および出現パターン木の構造情報、つまりノード間の接続情報や各ノードが含む属性名の情報を送出してもよい。なお、このような表示処理は、既存の描画ライブラリを用いればよく、ここでの詳細な説明は省略する。
【００４２】
以上に示した本実施形態に係る情報可視化装置によれば、多種多様なデータの集合から、属性名の組み合わせを示す出現パターンを生成して、出現パターンの一覧を木構造で描画した出現パターン木を構築することで、どのような属性名の組み合わせを含むデータが記録されているかを俯瞰することができ、多種多様なデータの集合を容易に把握することができる。  
また、１つのノードに複数の属性名を保持可能とすることで、出現パターン木のノード数を少なくすることができ、簡略化した木構造とすることができる。
【００４３】
さらに、共通した親ノードを持つ１以上のノード群において、１つ以上のノードで共通して出現する属性名を単一のノードに括りだすことで、各子ノードが保持する複数の属性名が全て同じでなくとも一部が共通していれば括りだすことができるので、出現パターン一覧をより簡略化した木構造で描画することができる。  
また、出現頻度が高い属性名を優先して括りだし対象属性名とした組み換え処理をおこなうことで、出現パターン木における各ノードが含む属性名の数の合計値を小さくすることができ、出現パターン一覧をより簡略化した木構造で描画することができる。さらにルートノードに近いほど出現頻度が高い属性名が含まれているため、どのような属性名が出現パターン一覧に多く含まれているかを容易に把握することができる。  
さらに、共通した親ノードを持つ１以上のノード群において、括りだすことが可能な括りだし対象属性名候補が複数存在する場合は、評価値が最小となる括りだし対象属性名候補を選択し、該括りだし対象属性名候補について評価処理を行った際の共通属性名群を括りだし対象属性名とすることで、出現パターン木における各ノードが含む属性名の数の合計値を小さくすることができ、出現パターン一覧をより簡略化した木構造で描画することができる。  
なお、本実施形態にかかる情報可視化装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【００４４】
要するに本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００４５】
１００・・・情報可視化装置、１０１・・・データ蓄積部、１０２・・・出現パターン生成部、１０３・・・木構造構築部、１０４・・・表示部、１０５・・・リスト作成部、１０６・・・組み替え部、２０１，７０１・・・属性名、２０２・・・属性値、２０３・・・属性、２０４・・・データ、５００・・・出現パターン一覧、５０１・・・出現パターン、７００・・・出現頻度リスト、７０２・・・出現頻度、８００・・・初期出現パターン木、８０１・・・ルートノード、８０２〜８０８，１２０１−１，１２０１−２，１２０２，１２０３，１３０１，１４０１〜１４０６，１５０１，１６０１・・・ノード。
【図１】
2014170410.tif 000003
【図２】
2014170410.tif 000004
【図３】
2014170410.tif 000005
【図４】
2014170410.tif 000006
【図５】
2014170410.tif 000007
【図６】
2014170410.tif 000008
【図７】
2014170410.tif 000009
【図８】
2014170410.tif 000010
【図９】
2014170410.tif 000011
【図１０】
2014170410.tif 000012
【図１１】
2014170410.tif 000013
【図１２】
2014170410.tif 000014
【図１３】
2014170410.tif 000015
【図１４】
2014170410.tif 000016
【図１５】
2014170410.tif 000017
【図１６】
2014170410.tif 000018