(57)【特許請求の範囲】
【請求項１】
グラフ構造を有するデータから頻度の高い部分構造を抽出する方法であって、
グラフデータベース、サブパターン記憶手段、縮約済グラフ記憶手段、頻出部分構造記憶手段、サブパターン候補抽出部、サブパターン選択部、グラフ縮約部、頻出部分構造抽出部および頻出部分構造表示部を用い、
サブパターン候補抽出部が、グラフデータベースが保持するグラフを読み込み、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその連結グラフの出現回数および頻度を算出し、その結果を前記グラフデータベースが保持するグラフにおけるその連結グラフの該当箇所を特定する情報であるグラフ該当箇所情報とともにサブパターン記憶手段に保存する第１のステップと、
サブパターン選択部が、サブパターン記憶手段が保持する連結グラフのうち着目する部分構造であるサブパターンとして使用するものを選択し、その選択結果をサブパターン記憶手段に保存する第２のステップと、
グラフ縮約部が、グラフデータベースが保持しているグラフと、サブパターン記憶手段がサブパターンとして保持している連結グラフを読み込み、グラフデータベースが保持するグラフにおいて、サブパターンの連結グラフに対応する前記グラフ該当箇所情報によって特定される当該サブパターンの連結グラフに該当しない箇所を匿名化するとともに統合し、縮約済グラフ記憶手段に保存する第３のステップと、
頻出部分構造抽出部が、縮約済グラフ記憶手段が保持するグラフを読み込み、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段に保存する第４のステップと、
頻出部分構造表示部が、頻出部分構造記憶手段が保持する連結グラフとその出現回数および頻度を表示する第５のステップとを含む、
ことを特徴とする部分構造抽出方法。
【請求項２】
第２のステップにおけるサブパターンの選択は、所定のサブパターン選択関数に従って自動的に行う、または利用者からの指示に従って行う
ことを特徴とする請求項１に記載の部分構造抽出方法。
【請求項３】
利用者から分析の開始が指示された場合は第１乃至第５のステップを実行させ、利用者から分析の再実行が指示された場合には第２乃至第５のステップを実行させる
ことを特徴とする請求項１または２に記載の部分構造抽出方法。
【請求項４】
計算機を用いてグラフ構造を有するデータから頻度の高い部分構造を抽出する方法であって、
計算機が、
パターンおよびデータベース中のグラフを、１個以上の(a)着目する部分構造に相当する連結グラフと、これらを連結する０個以上の(b)着目しない部分構造に相当する連結グラフとによって構成される連結グラフとして扱うとともに、
計算機が、
(b)に対する匿名化および統合からなるグラフの縮約を行った上で、同型性判定によりデータベース中の部分構造がパターンに該当するかどうかを判定し、その判定結果に基づきパターンの出現回数および頻度を求めることで、互いに非連結な連結部分グラフの頻度の高い組合せを抽出する場合に、前記連結部分グラフに含まれるノード間の、データベース中のグラフにおける到達可能性を区別して出現回数および頻度を算出し、該当判定による頻度の高い部分構造を抽出する
ことを特徴とする部分構造抽出方法。
【請求項５】
縮約を行う前のグラフにおいて、同型性判定による頻度の高い連結部分グラフを、(a)着目する部分構造に相当する連結グラフの候補とする
ことを特徴とする請求項４に記載の部分構造抽出方法。
【請求項６】
同型性判定による頻度の高い連結部分グラフを、(a)着目する部分構造に相当する連結グラフの候補とし、それに該当しない部分を、(b)着目しない部分構造に相当する連結グラフとし、(b)に対するグラフの縮約を挟んで、同型性判定による頻度の高い部分構造の抽出を多段階で行う
ことを特徴とする請求項４または５に記載の部分構造抽出方法。
【請求項７】
グラフ構造を有するデータから頻度の高い部分構造を抽出する装置であって、
分析対象となるグラフを保持するグラフデータベースと、
同型性判定による頻度の高い連結グラフ、前記グラフデータベースが保持するグラフにおける当該連結グラフの該当箇所を特定する情報であるグラフ該当箇所情報、各連結グラフの出現回数および頻度、並びに各連結グラフのうちサブパターンとして使用することが選択された結果を保持するサブパターン記憶手段と、
グラフデータベースが保持するグラフのうち、サブパターン記憶手段が保持するサブパターンとしての連結グラフに該当しない箇所を縮約した結果を保持する縮約済グラフ記憶手段と、
縮約済グラフ記憶手段が保持するグラフのうち、同型性判定による頻度の高い連結グラフ、並びに当該各連結グラフの出現回数および頻度を保持する頻出部分構造記憶手段と、
グラフデータベースからグラフを読み込み、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその連結グラフの出現回数および頻度を算出し、その結果をグラフ該当箇所情報とともにサブパターン記憶手段に保存するサブパターン候補抽出部と、
サブパターン記憶手段が保持する連結グラフのうち部分構造であるサブパターンとして使用するものを選択し、その選択結果をサブパターン記憶手段に保存するサブパターン選択部と、
グラフデータベースが保持しているグラフと、サブパターン記憶手段がサブパターンとして保持している連結グラフを読み込み、グラフデータベースが保持するグラフにおいて、サブパターンの連結グラフに対応する前記グラフ該当箇所情報によって特定される当該サブパターンの連結グラフに該当しない箇所を匿名化するとともに統合し、縮約済グラフ記憶手段に保存するグラフ縮約部と、
縮約済グラフ記憶手段が保持するグラフを読み込み、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段に保存する頻出部分構造抽出部と、
頻出部分構造記憶手段が保持する連結グラフとその出現回数および頻度を表示する頻出部分構造表示部とを少なくとも備えた
ことを特徴とする部分構造抽出装置。                                                                               
【請求項８】
サブパターン記憶手段が保持する連結グラフのうち、部分構造であるサブパターンとして使用するものを、所定のサブパターン選択関数に従って自動的に選択し、または利用者からの指示に従って選択し、その選択結果をサブパターン記憶手段に保存するサブパターン選択部を備えた
ことを特徴とする請求項７に記載の部分構造抽出装置。
【請求項９】
利用者から分析の開始が指示された場合はサブパターン候補抽出部、サブパターン選択部、グラフ縮約部、頻出部分構造抽出部、頻出部分構造表示部をこの順に、前の処理の完了を待って呼び出し、実行させ、利用者から分析の再実行が指示された場合には、サブパターン選択部、グラフ縮約部、頻出部分構造抽出部、頻出部分構造表示部をこの順に、前の処理の完了を待って呼び出し、実行させる実行制御部を備えた
ことを特徴とする請求項７または８に記載の部分構造抽出装置。
【請求項１０】
グラフ構造を有するデータから頻度の高い部分構造を抽出する装置であって、
(a)着目する部分構造に相当する連結グラフの候補を抽出および選択するサブパターン候補抽出部およびサブパターン選択部と、
(b)着目しない部分構造に相当する連結グラフに対する匿名化および統合からなるグラフの縮約を行うグラフ縮約部と、
縮約されたグラフを対象として、同型性判定によりデータベース中の部分構造がパターンに該当するかどうかを判定し、その判定結果に基づきパターンの出現回数および頻度を求める頻出部分構造抽出部とを併せて備えることにより、
パターンおよびデータベース中のグラフを、１個以上の(a)着目する部分構造に相当する連結グラフと、これらを連結する０個以上の(b)着目しない部分構造に相当する連結グラフとによって構成される連結グラフとして扱い、互いに非連結な連結部分グラフの頻度の高い組合せを抽出する場合に、前記連結部分グラフに含まれるノード間の、データベース中のグラフにおける到達可能性を区別して出現回数および頻度を算出し、該当判定による頻度の高い部分構造を抽出する
ことを特徴とする部分構造抽出装置。
【請求項１１】
縮約を行う前のグラフにおいて、同型性判定による頻度の高い連結部分グラフを、(a)着目する部分構造に相当する連結グラフの候補とするサブパターン候補抽出部を備えた
ことを特徴とする請求項１０に記載の部分構造抽出装置。
【請求項１２】
(b)着目しない部分構造に相当する連結グラフに対するグラフの縮約を行うグラフ縮約部を挟み、サブパターン候補抽出部および頻出部分構造抽出部において同型性判定による頻度の高い連結部分グラフを多段で抽出する構成を備えた
ことを特徴とする請求項１０または１１に記載の部分構造抽出装置。
【請求項１３】
コンピュータを、請求項７乃至１２のいずれかに記載の部分構造抽出装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量のデータ、特にグラフ構造のデータを、計算機により分析する技術に関する。
【背景技術】
【０００２】
大量のデータを計算機により分析し、そこに含まれる規則や例外を抽出・利用するための技術が広く提案され、利用されている。
【０００３】
近年では特に、有機化合物やＤＮＡ、ＸＭＬ文書、ＨＴＭＬ文書、ウェブサイトやソーシャルネットワークにおけるリンク関係、ソフトウェア開発におけるコンポーネントの依存関係など、ベクトルでは十分に表現しきれず、ツリーやグラフなどのより複雑なデータ構造が必要となるデータを対象とした分析も行われている。
【０００４】
例えば、組織における顧客からの受注や社内での決裁、他企業への発注といった業務において、案件に対する見積書の作成や在庫の確認、納品日の通知などの様々な処理や、その処理で利用される業務システムに対するデータの入力や選択、ボタンのクリックといった操作の手順も、複数の利用者が連携し、並行して処理や操作を進める場合にはグラフとして表現される。
【０００５】
図１１に業務における処理や操作の手順を表現するグラフの一例を示す。この例は、ある受注案件に関して製品の見積書を発行する処理や操作の手順をグラフで表現したものである。図１１では、操作１を実行し、その後、操作２〜５をこの順に実行し、操作２〜５の実行と並行して操作７〜８をこの順に実行し、操作８の完了後、操作９と操作１０〜１１を並行して実行し、操作５と操作９の完了を待って操作１２を実行し、さらに操作１１と操作１２の完了を待って操作１３〜１４をこの順に実行し、操作１４の完了後、操作３〜４を再度この順に実行し、操作４の完了後、操作６を実行したことが表現されている。
【０００６】
このように処理や操作の手順はグラフとして表現されるため、処理や操作の手順を分析し、業務効率改善や業務監査を行う場合にも、グラフを対象とする分析が必要になる。
【０００７】
［従来技術］
データに含まれる規則は、頻度の高いデータやデータ同士の関係と考えられ、また、データに含まれる例外はその規則から逸脱したデータやデータ同士の関係と考えられる。そのため、頻度の高いデータやデータ同士の関係を抽出することが必要であり、これは、特に分析対象のデータがツリーやグラフなどの複雑なデータ構造で表現される場合には、頻度の高い部分構造を抽出することに相当する。
【０００８】
頻度の高い部分構造を抽出する手法の基本的な考え方は、
(1) 以下の(2)(3)においてパターンとして使用する着目する部分構造を決める、
(2) データベース中のデータ構造において、パターンに該当する部分構造の出現箇所を特定し、出現回数を数え、それをもとに頻度を算出する、
(3) 頻度の低いパターンを破棄し、頻度の高いパターンを残す。手法ごとに用意された何らかの終了条件を満たすまで、(1) に戻って処理を繰り返し、終了条件を満たした時点で残ったパターンを結果とする、
というものである。なお、適用領域によって、分析対象が多数のツリーやグラフの集合である場合も、１個の大規模なツリーやグラフである場合もあり得るが、特に限定せず、以下ではどちらも単にデータベースと呼ぶ。
【０００９】
これまでに、小さなパターンから始め、頻度がなるべく高くなるようにパターンを連続的に拡大する処理を繰り返すことで、データベース中のグラフから頻度の高い連結部分グラフを抽出する手法が提案されている（非特許文献１〜５参照）。また、もとのグラフにおいて、複数の連結部分グラフが同じ組合せで多数出現するが、それら連結部分グラフ同士は互いに非連結で、その間の部分はグラフ中の出現箇所により異なり、そのためその間の部分も含めた大きな連結部分グラフの頻度が低い場合には、
互いに非連結な連結部分グラフの頻度の高い組合せを抽出すること…（※１）
が求められる。
【００１０】
これを実現するため、頻度の高い連結した部分構造を連結グラフとして抽出するだけでなく、互いに非連結な連結部分グラフの頻度の高い組合せを、非連結部分グラフとして抽出する手法も提案されている（非特許文献６参照）。この手法では、例えば図３に示すノードと各ノード間を結ぶ有向リンクとからなる構成要素によってデータを図的に表現したグラフＧ0〜Ｇ4の中から、頻度の高い非連結部分グラフの一つとして図１２に示すものが抽出される。この非連結部分グラフは、ノードａ0〜ａ4で構成される頻度の高い連結部分グラフと、ノードａ5〜ａ6で構成される頻度の高い連結部分グラフとの組合せである。
【００１１】
なお、以下の説明では、図１２の非連結グラフにおいてノードａ0〜ａ4からなる連結グラフ、あるいはノードａ5〜ａ6からなる連結グラフを、それぞれ「非連結（部分）グラフ中の連結（部分）グラフ」と呼ぶことにする。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
例えば業務における処理や操作は、実行順序が異なれば実行結果が異なるだけでなく、処理や操作の実行可否も変わってくる。そのためデータベース中の各グラフが、各案件に対する処理や操作の手順を表現していて、業務効率改善や業務監査の目的でこれらのグラフを分析する場合、途中に他の処理や操作を挟んで行われた、処理や操作あるいはそのまとまり（非連結部分グラフ中の連結部分グラフに相当）の組合せの頻度だけでなく、それらの順序関係を区別した頻度を知ることが重要である。
【００１３】
例えば受注した製品の見積書を発行する業務において、図１１のように製品価格の参照（操作９）を見積書の作成および送付（操作１３〜１４）の前に実行する手順の頻度が高い場合には問題ない。しかし、迅速性を重視するあまり、記憶を頼りに先に見積書を作成・送付してしまい、後で製品価格を参照して確認する手順の頻度が高い場合には、製品価格の更改時に誤った見積書を多数発行する危険性がある。そのため、これらの手順は区別して頻度を算出すべきである。
【００１４】
あるいはソフトウェア開発において、コンポーネント間の依存関係の向きが異なれば、あるコンポーネントの変更に起因する他のコンポーネントの変更や再試験の要否が異なる。そのためデータベース中の各グラフが、各ソフトウェア開発プロジェクトにおけるコンポーネントの依存関係を表現していて、複数のプロジェクトで利用されているコンポーネントの変更が全プロジェクトに与える影響を分析する場合、他のコンポーネントを介して依存関係にある、コンポーネントあるいはそのまとまり（非連結部分グラフ中の連結部分グラフに相当）の組合せの頻度だけでなく、それらの間接的な依存関係の向きを区別した頻度を知ることが重要である。
【００１５】
一方、従来の手法では（※１）を実現する上で、パターンおよびそれに該当するデータベース中のグラフの部分構造を、着目する部分構造だけからなる非連結グラフとして扱っている。そのため、パターンの出現回数を数える際、非連結部分グラフ中の連結部分グラフ同士がデータベース中のグラフにおいてどのような関係にあるかを区別できない。その結果、データベース中のグラフの異なる箇所に出現する非連結部分グラフがパターンと同型であれば、たとえ非連結部分グラフ中の連結部分グラフ同士の関係が異なっていても同じパターンとみなされ、全てそのパターンの出現回数として数えられる。
【００１６】
例えばデータベース中のグラフが図３であるとき、図１２に示す非連結グラフがグラフＧ0〜Ｇ4にそれぞれ１回ずつ、合計５回出現していることになる。しかし、図１２の非連結グラフ中のノードａ0〜ａ4からなる連結グラフとノードａ5〜ａ6からなる連結グラフとの関係を区別して出現回数やそれをもとに算出される頻度を知ることはできない。そのため、ノードａ0〜ａ4からなる連結グラフとノードａ5〜ａ6からなる連結グラフとがどのような関係になっている場合が多いのかを知ることはできない。また、実際にはそれらの関係がまちまちで、それらの関係を区別するとそれぞれの頻度は低い可能性すらある。
【００１７】
本発明では、以上の問題を解決するため、
データベース中のグラフにおける互いに非連結な連結部分グラフ同士の関係を区別して頻度の高い組合せを抽出すること…（※２）
を目的とする。
【００１８】
例えばデータベース中のグラフが図３であるとき、図１２のノードａ0〜ａ4で構成される連結グラフとノードａ5〜ａ6で構成される連結グラフとの関係には、図１３の(a)に示すようにノードａ4がノードａ5の間接的な遷移元である場合（グラフＧ0〜Ｇ2の３回）、図１３の(b)に示すようにノードａ3がノードａ5の間接的な遷移元である場合（グラフＧ3の１回）、図１３の(c)に示すようにノードａ6がノードａ0の間接的な遷移元である場合（グラフＧ4の１回）、の３通りが存在する。従来の手法ではこれらを区別しないが、本発明ではこれらを区別する。
【００１９】
なお、本発明は非循環有向グラフを分析対象とする。この場合、（※２）における「互いに非連結な連結部分グラフ同士の関係」とは、互いに非連結な連結部分グラフに含まれるノード間の、データベース中のグラフにおける到達可能性、つまり他のノードを経由しての遷移が可能かどうか、を意味する。また、ノードにはノードの種類や種別を表すラベルが付与されており、グラフの同型性判定時には、ノードと有向リンクからなる純粋なグラフ構造だけでなく、ノードに付与されているラベルも考慮するものとする。
【課題を解決するための手段】
【００２０】
＜概要＞
頻度の高い部分構造を抽出する際、データベース中のグラフにおける互いに非連結な連結部分グラフ同士の関係を区別するためには、着目する部分構造だけでなく、それらを連結している、着目しない部分構造も考慮してパターンに該当するかどうかを判定する必要がある。
【００２１】
そのため、本発明ではまず、背景技術の［従来技術］においてパターンを着目する部分構造とする代わりに、パターンおよびそれに該当するデータベース中のグラフの部分構造を、１個以上の下記(a)とこれらを連結する０個以上の下記(b)によって構成される連結グラフとして扱う。
(a) 着目する部分構造（以下、サブパターン）に相当する連結グラフ
(b) 着目しない部分構造に相当する連結グラフ
また、データベース中のグラフの部分構造がパターンに該当するかどうかを判定する際には、サブパターンが同型であり、かつサブパターンに含まれるノード間における到達可能性、つまり着目しない部分構造を経由して遷移が可能かどうか、が一致している場合に「該当する」とみなし、そうでない場合には「該当しない」とみなす。なお、ここではこの基準による判定を該当判定と呼ぶ。
【００２２】
しかし、データベース中のグラフの部分構造がパターンに該当するかどうかを判定する際に、パターンと部分構造の同型性をそのまま判定すると、たとえサブパターンが同型であり、かつサブパターンに含まれるノード間における到達可能性が一致していたとしても、着目しない部分構造の差異により同型ではないと判定されてしまう。従って、サブパターン同士を連結する着目しない部分構造を、ノードのラベルだけでなく構造的にもワイルドカードとして置換しておくことで、その差異が同型性の判定に影響しないようにする必要がある。
【００２３】
本発明では、サブパターン同士の関係を区別しつつ、それらを連結する着目しない部分構造の差異を区別しないようにするため、最初にデータベース中のグラフにおいてサブパターンに該当しない箇所を特許文献１におけるノードの匿名化および統合とほぼ同じ手法（相違点については後述）により縮約する。その上で同型の部分構造の出現回数が多く、それをもとに算出される頻度が高い部分構造を抽出する従来の手法を利用することで、結果的に該当判定による頻度の高い部分構造を抽出する。
【００２４】
次に、サブパターンを決める方法について述べる。何らかの方法により（※２）を実現し、該当判定による頻度の高いパターンが抽出され、データベース中のグラフにおいてそれらのパターンに該当する部分構造の出現箇所が特定されているとすると、
・パターンに該当するデータベース中のグラフの部分構造は、１個以上の、下記(A) とこれらを連結する０個以上の下記(B)とによって構成される連結グラフになっている。
【００２５】
(A) 同型の部分構造の出現回数が多く、それをもとに算出される頻度が高い（以下、同型性判定による頻度が高い）連結グラフ
(B) 同型の部分構造の出現回数が少なく、それをもとに算出される頻度が低い（以下、同型性判定による頻度が低い）連結グラフ
・データベース中のグラフにおける部分構造が、該当判定による頻度の高いパターンに該当するかどうかは、その部分構造に含まれる連結グラフのうち、同型性判定による頻度の高い連結グラフのみによって決まり、同型性判定による頻度の低い連結グラフにはよらない。
と考えられる。
【００２６】
従って、本発明では、従来の手法などで抽出可能な、同型性判定による頻度の高い連結部分グラフをサブパターンとする。つまり上述の(A)を(a)とする。
【００２７】
但し、実際には同型性判定による頻度の高い連結部分グラフが全て、該当判定による頻度の高い部分構造を抽出する上で着目すべき部分構造であるとは限らない。例えば、データベース中のグラフが、様々な案件に対する業務を行う際に、業務システムの端末に対して利用者が行った操作の手順を表現していて、その中から頻度の高い手順を知ろうとする場合において、端末に表示された業務システムのウィンドウの位置や大きさを変えるための一連の操作（マウスのクリックボタンを押下し、マウスの位置を移動し、マウスのクリックボタンを離す、など）の頻度が高いことがある。しかし、この一連の操作は、業務を遂行するためにどのような処理や操作をどのような手順で行っている場合が多いのかを知る上では重要ではなく、この一連の操作を表す部分構造は、サブパターンとしては不適切である。
【００２８】
従って、本発明では、同型性判定による頻度の高い連結部分グラフの中から、サブパターンとして使用するものを利用者が繰り返し選択することもできるものとする。
【００２９】
本発明では以下の手順により、サブパターンに該当しない箇所の縮約を挟んで同型性判定による頻度の高い部分構造の抽出を多段階で行うことで、互いに非連結な連結部分グラフの頻度の高い組合せを抽出する場合には、その関係を区別して頻度の高い部分構造を抽出する。
【００３０】
(i) サブパターン候補の抽出
データベース中のグラフにおいて、同型性判定による頻度の高い連結グラフをサブパターン候補として、従来の手法などを利用して抽出する。
【００３１】
(ii) サブパターンの選択
(i) の結果得られるサブパターン候補の連結グラフの中から、サブパターンとして使用するものを自動的または利用者からの指示により選択する。
【００３２】
(iii) 着目しない部分構造の縮約
データベース中のグラフにおいて、サブパターンとして(ii)で選択された連結グラフに該当しない箇所を、特許文献１におけるノードの匿名化処理および統合処理とほぼ同じ方法により縮約する（但し、本発明におけるノードが特許文献１におけるアクティビティインスタンスに相当。詳細は後述する。）。
【００３３】
(iv) 頻度の高い部分構造の抽出
(iii) の結果の得られるグラフにおいて、同型性判定による頻度の高い連結グラフを、従来の手法などを利用して抽出し、利用者に提示する。
【００３４】
また、利用者の要望に応じて(ii)〜(iv) を繰り返し行うこともできる。
【発明の効果】
【００３５】
本発明によれば、多数の、あるいは大規模な、ノードにラベルの付与された非循環有向グラフを対象として、頻度の高い部分構造を抽出できる。特に、頻度の高い連結した部分構造を連結グラフとして抽出するだけでなく、互いに非連結な連結部分グラフの頻度の高い組合せをそれらの関係、つまり連結部分グラフに含まれるノード間の、データベース中のグラフにおける到達可能性を区別して抽出できるようになる。
【００３６】
さらに本発明を、業務効率改善や業務監査を目的とした、処理や操作の手順の分析に適用する場合には、途中に他の処理や操作を挟んで行われた、処理や操作あるいはそのまとまりの組合せの頻度を、それらの順序関係を区別して算出し、頻度の高い操作手順を抽出できる。これにより効果の高い業務効率改善や、精度の高い業務監査につながる。
【００３７】
あるいは本発明を、例えばソフトウェア開発におけるコンポーネント変更の影響評価を目的とした、コンポーネント間の依存関係の分析に適用する場合には、他のコンポーネントを介して依存関係にある、コンポーネントあるいはそのまとまりの組合せの頻度を、それらの依存関係の向きを区別して算出し、頻度の高い依存関係を抽出できる。これによりコンポーネントを変更した場合の影響を高い精度で把握でき、変更するコンポーネントの選択や変更内容を適切に決定することで、開発コストの低減につながる。
【図面の簡単な説明】
【００３８】
【図１】本発明の部分構造抽出装置の実施の形態の一例を示す構成図
【図２】本発明の部分構造抽出方法の実施の形態の一例を示すフローチャート
【図３】グラフデータベースが保持するデータの一例を示す図
【図４】サブパターン記憶手段が保持する内容（選択状態未設定）の一例を示す図
【図５】サブパターン記憶手段が保持する内容（選択状態設定済）の一例を示す図
【図６】サブパターン記憶手段が保持する内容（選択状態設定済）の一例を示す図
【図７】縮約済グラフ記憶手段が保持する内容の一例を示す図
【図８】縮約済グラフ記憶手段が保持する内容の一例を示す図
【図９】頻出部分構造記憶手段が保持する内容の一例を示す図
【図１０】頻出部分構造記憶手段が保持する内容の一例を示す図
【図１１】業務における処理や操作の手順を表現するグラフの一例を示す図
【図１２】頻度の高い非連結部分グラフの一例を示す図
【図１３】非連結な連結部分グラフ同士の関係の一例を示す図
【図１４】着目する部分構造の候補の分割の一例を示す図
【図１５】グラフＧ0における開始ノードから終了ノードまでの全ての経路を示す図
【図１６】グラフＧ1における開始ノードから終了ノードまでの全ての経路を示す図
【図１７】グラフＧ2における開始ノードから終了ノードまでの全ての経路を示す図
【図１８】グラフＧ3における開始ノードから終了ノードまでの全ての経路を示す図
【図１９】グラフＧ4における開始ノードから終了ノードまでの全ての経路を示す図
【図２０】ノード列Ｌ0を処理した段階での擬似的な接尾辞木を示す図
【図２１】全ノード列を処理した段階での擬似的な接尾辞木（その１）を示す図
【図２２】全ノード列を処理した段階での擬似的な接尾辞木（その２）を示す図
【図２３】部分ノード列の出現回数の一例を示す図
【図２４】グラフ該当部分ノード列の再帰的な調査の一例を示す図
【図２５】グラフデータベースが保持するグラフにおける経路を列挙する手順の一例を表すリスト１を示す図
【図２６】擬似的な接尾辞木を作成する手順の一例を表すリスト２を示す図
【図２７】中間頂点ｕmの一意なグラフ該当部分ノード列を求める手順の一例を表すリスト３を示す図
【図２８】全ての中間頂点に対するグラフ該当部分ノード列の数を再帰的に求める手順の一例を表すリスト４を示す図
【図２９】中間頂点ｕm<r>に対応するラベル列を保存する手順の一例を表すリスト５を示す図
【図３０】頻度の高いラベル列に対応する全ての中間頂点のグラフ該当部分ノード列を保存する手順の一例を表すリスト６を示す図
【発明を実施するための形態】
【００３９】
以下、前述した手順(i)〜(iv) を含む、本発明の構成要素およびその処理の詳細について説明する。
【００４０】
＜発明装置の構成および発明方法の処理手順＞
図１は本発明の、グラフ構造を有するデータから頻度の高い部分構造を抽出する装置の構成の一例、ここでは周知のコンピュータ（計算機）上に実現された例を示すもので、図中、１はグラフデータベース、２はサブパターン記憶手段、３は縮約済グラフ記憶手段、４は頻出部分構造記憶手段、５は実行制御部、６はサブパターン候補抽出部、７はサブパターン選択部、８はグラフ縮約部、９は頻出部分構造抽出部、１０は頻出部分構造表示部である。
【００４１】
グラフデータベース１は、永続的にデータを保持する計算機内のハードディスクに記憶されているファイルまたはそのファイルからの読み書きを制御するデータベースマネジメントシステムである。また、サブパターン記憶手段２、縮約済グラフ記憶手段３および頻出部分構造記憶手段４は、計算機内のメモリ、あるいは計算機のハードディスクに記憶されているファイルまたはそのファイルからの読み書きを制御するデータベースマネジメントシステムである。なお、グラフデータベース１、並びに各記憶手段２〜４では、グラフ構造のデータを保持するが、グラフをどのようなデータ形式（図、ＸＭＬ文書などの構造データ、リレーションテーブルなど）で保持するのかについては限定しない。
【００４２】
また、実行制御部５、サブパターン候補抽出部６、サブパターン選択部７、グラフ縮約部８、頻出部分構造抽出部９および頻出部分構造表示部１０は、計算機内の演算装置で実行されるプログラムである。これらが全て一緒になった単一のプログラムなのか、全て別々のプログラムなのか、あるいはいくつかが１つのプログラムとなっているのかは、本発明では限定しない。さらにまた、以上の構成要素が同じ計算機内にあるか、あるいはネットワークを介して複数の計算機内にあるかについては、本発明では限定しない。
【００４３】
本発明では、本発明装置の利用者が頻度の高い部分構造の抽出を指示する前に、グラフデータベース１にグラフ構造のデータが登録されているものとする。頻度の高い部分構造を抽出する際には、利用者が実行制御部５より分析の開始を指示し、サブパターン候補の抽出、サブパターンの選択、グラフの縮約、頻度の高い部分構造の抽出、頻度の高い部分構造の表示を、この順で実行する。また、利用者が実行制御部５より分析の再実行を指示した場合には、サブパターンの選択、グラフの縮約、頻度の高い部分構造の再抽出、頻度の高い部分構造の表示を、再度この順で実行する。利用者が実行制御部５より分析の終了を指示した場合には、処理を終了する。本発明の全体の処理フローを図２に示す。
【００４４】
以下、各構成要素が保持する内容や、処理の手順の詳細、およびそれに従って本発明装置が利用されるときの例を説明する。
【００４５】
〔発明装置の構成要素およびその処理の詳細〕
以下、各構成要素が保持する内容や、処理の詳細について説明する。
【００４６】
≪グラフデータベース≫
グラフデータベース１は、分析対象となる多数のツリーやグラフの集合または１個の大規模なツリーやグラフ（以下、単にグラフ）を保持する。
【００４７】
なお、本発明で対象とするグラフは、ノードにラベルの付与された、非循環有向グラフとする。またデータベース１中のグラフのノードには一意な識別子（０以上のノード番号）が付与されているものとし、本明細書ではノード番号ｉのノードをｎiと表す。さらに説明の都合上、ラベルには一意な識別子（０以上のラベル番号）が付与されているものとし、ラベル番号ｌのラベルをａlと表し、ノード番号ｉのノードｎiに付与されたラベルのラベル番号はノード番号ｉの関数ｌ(i)として表す。つまりノードｎiのラベルはａl(i)と表現される。
【００４８】
図３は、グラフデータベース１が保持する内容の一例である。
【００４９】
≪サブパターン記憶手段≫
サブパターン記憶手段２は、サブパターン候補抽出部６により抽出される、同型性判定による頻度の高い連結グラフ（サブパターン候補）、グラフデータベース１が保持するグラフにおけるその連結グラフの該当箇所を特定する情報（以下、グラフ該当箇所情報）、並びに同じくサブパターン候補抽出部６により算出される、それぞれの連結グラフの出現回数および頻度を保持する。また、これらの連結グラフのうち、どれをサブパターンとして使用するかを、サブパターン選択部７により選択した結果も併せて保持する。
【００５０】
グラフ該当箇所情報は、例えばノード番号の集合として保持することが考えられる。但し、他にも擬似的な接尾辞木（サブパターン候補抽出部６の実現手法の一例として後述）の中間頂点の番号のように、その情報からノード番号の集合を容易に得られるものであっても良く、限定しない。また、それぞれの連結グラフの頻度としては、サブパターン候補抽出部６を実現する、同型性判定による頻度の高い部分構造を抽出する手法により、出現回数をグラフデータベース１が保持するグラフの数で除した値を算出する場合、その代わりに部分構造の情報量などを算出する場合、あるいはそれらを含めた複数の値を算出する場合などが存在する。従って、頻度として複数の値を保持できるものとする。
【００５１】
図４、図５、図６は、サブパターン記憶手段２が保持する内容の一例である。
【００５２】
≪縮約済グラフ記憶手段≫
縮約済グラフ記憶手段３は、グラフデータベース１が保持するグラフにおいて、サブパターンとしてサブパターン記憶手段２が保持する連結グラフに該当しない箇所を、グラフ縮約部８により縮約した結果を保持する。
【００５３】
図７、図８は、縮約済グラフ記憶手段３が保持する内容の一例である。
【００５４】
≪頻出部分構造記憶手段≫
頻出部分構造記憶手段４は、頻出部分構造抽出部９により抽出される、縮約済グラフ記憶手段３が保持するグラフにおいて同型性判定による頻度の高い連結グラフ、並びに同じく頻出部分構造抽出部９により算出される、それぞれの連結グラフの出現回数および頻度を保持する。なお、サブパターン記憶手段２同様、それぞれの連結グラフの頻度として、複数の値を保持できるものとする。
【００５５】
図９、図１０は、頻出部分構造記憶手段４が保持する内容の一例である。
【００５６】
≪実行制御部≫
実行制御部５は、利用者に分析の開始や再実行を、本発明装置を実現する計算機の入出力装置を介して指示させる。利用者から分析の開始が指示された場合（図２−ｓ０）には、サブパターン候補抽出部６を呼び出し、その後、サブパターン選択部７、グラフ縮約部８、頻出部分構造抽出部９、頻出部分構造表示部１０をこの順に、前の処理の完了を待って呼び出し、実行させる。また、利用者から分析の再実行が指示された場合（図２−ｓ６）には、サブパターン選択部７を呼び出し、その後、グラフ縮約部８、頻出部分構造抽出部９、頻出部分構造表示部１０をこの順に、前の処理の完了を待って呼び出し、実行させる。
【００５７】
≪サブパターン候補抽出部≫
サブパターン候補抽出部６は、グラフデータベース１が保持するグラフを読み込み、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその連結グラフの出現回数および頻度を算出し、その結果をグラフ該当箇所情報とともにサブパターン記憶手段２に保存する（図２−ｓ１）。
【００５８】
ここで、サブパターンの候補としては、頻度が高い、なるべく大きな（ノードを多数含む）連結グラフをそのまま抽出できることが望ましく、グラフを対象とした従来の抽出手法（例えば非特許文献１〜６参照）を利用することが考えられる。一方、サブパターン候補抽出部６では、グラフデータベース１が保持するグラフの中で、グラフ縮約部８において匿名化および統合しない部分構造の候補を抽出できれば良く、例えば図１４の連結グラフＧ0を抽出する代わりに、ツリー構造でなるべく大きなグラフＧ0の部分構造Ｔ0とＴ1、あるいはリスト構造でなるべく大きなグラフＧ0の部分構造Ｌ0とＬ1、というように分割して抽出しても良い。従って、同型性判定に多くの計算量を要するグラフを対象とした抽出手法の代わりに、相対的に少ない計算量で処理可能な、ツリーを対象とした抽出手法、リスト（列）を対象とした抽出手法を利用することも考えられる。
【００５９】
なお、抽出処理を調整するための、各抽出手法固有のパラメータについては、プログラムのパラメータとして予めコーディングされた値を用いる、本発明装置を実現する計算機のハードディスクに保存されたファイルで設定された値を用いる、サブパターン候補抽出部６の実行開始時に同計算機の入出力装置を介して利用者により設定された値を用いる、などが想定できるが、特に限定しない。
【００６０】
本発明では、サブパターン候補抽出部６の処理を行う手法を特に限定しないが、同型性判定による頻度の高い部分構造を抽出する従来の手法をどのように利用できるかを示すため、リスト（列）を対象とした抽出手法の一例として、接尾辞木を利用する場合について具体的に説明する。
【００６１】
なお、以下では‖N‖はグラフデータベース１が保持するグラフの全ノード数とする。またlist ← (x,list)、list ← (list,x) はリストlistのそれぞれ先頭、最後に要素ｘを追加する操作を、‖list‖はリストlistに含まれる要素の数を、list[pos]はリストlistのpos番目（最小は０）の要素を、list[startPos,endPos]はリストlistにおいてstartPos番目の要素からendPos番目の要素までの部分リストを表すものとする。さらにset0∪set1はセット（重複を許さない要素の集合）set0とset1の和集合を、set0∩set1はセットset0とset1の積集合を、
【００６２】
【数１】
0005582540.tif 000002
【００６３】
はセットset0からset1に含まれる要素を除いた集合を、‖set‖はセットsetに含まれる要素の数を、set[pos]はセットsetのpos番目（最小は０）の要素を表すものとする。
【００６４】
【数２】
0005582540.tif 000003
【００６５】
は空のリストまたはセットを表す。但し、リストにおける要素の並び順は要素の追加方法に従うが、セットにおける要素の並び順は必ずしも要素の追加順などになっていなくても良い。
【００６６】
−グラフ中の経路の列挙−
グラフデータベース１が保持するグラフにおいて、親ノードを持たないノード（開始ノード）から子ノードを持たないノード（終了ノード）までの全ての経路をノード列（経路中のノードのノード番号のリスト）として列挙する。
【００６７】
グラフ中の開始ノードを見つけ、そこからグラフの有向リンクに沿って終了ノードまでたどっていき、終了ノードが見つかったら直前の複数の子ノードを有するノードまで戻り、別の終了ノードまでたどることを繰り返すことで、ノード列を列挙する手順の一例を図２５のリスト１に示す。
【００６８】
例えば図３におけるグラフＧ0，Ｇ1，Ｇ2，Ｇ3，Ｇ4に対してノード列を列挙した結果は、それぞれ図１５、図１６、図１７、図１８、図１９となる。
【００６９】
−接尾辞木の作成−
列挙した全てのノード列を対象として、同型の部分構造、つまりノードのラベルを順に並べてできるラベル列が一致する部分ノード列の出現回数と出現箇所を特定できるようにするため、擬似的な接尾辞木を作成する。
【００７０】
ここで、擬似的な接尾辞木は、全てのノード列の全ての接尾辞（ノード列の先頭から０個以上のノードを削除して得られる部分ノード列）のラベル列を木構造で表現したものである。但し、グラフデータベース１が保持するグラフの構成要素であるノードやリンクと、擬似的な接尾辞木の構成要素であるノードやリンクを区別するため、接尾辞木の構成要素であるノードを「頂点」、有向リンクを「枝」と呼ぶ。また説明の都合上、親の頂点と子の頂点の両方を有する頂点（中間頂点）には一意な識別子（０以上の頂点番号）が、子の頂点を持たない頂点（末端頂点）にはそれとは別の一意な識別子（０以上の頂点番号）が付与されるものとし、頂点番号がｍの中間頂点をｕm、頂点番号がｎの末端頂点をｖnで表す。便宜上、親の頂点を持たない頂点（根頂点）は、頂点番号が−１の中間頂点ｕ-1として扱う。さらに根頂点から各中間頂点までの経路中にある中間頂点の数（根頂点と自身を含めない）を、その中間頂点の階層数とする。便宜上、根頂点の階層数は−１とする。
【００７１】
擬似的な接尾辞木の中間頂点はノードのラベルを保持する。これにより、任意のｒ階層目（但し、ｒ≧０）の中間頂点ｕm<r>について、根頂点から中間頂点ｕm<r>までの経路中の中間頂点を階層数の小さい順にｕm<0>，ｕm<1>，…，ｕm<r-1>，ｕm<r>、それぞれの中間頂点が保持するラベルをａl<0>，ａl<1>，…，ａl<r-1>，ａl<r>とすると、根頂点から中間頂点ｕm<r>までの経路、つまり頂点列（ｕm<0>，ｕm<1>，…，ｕm<r-1>，ｕm<r>）あるいは中間頂点ｕm<r>自身は、ラベル列（ａl<0>，ａl<1>，…，ａl<r-1>，ａl<r>）と一対一に対応する。また末端頂点は、その末端頂点へ延びる枝を有する中間頂点に対応するラベル列が、どのノード列の何番目のノードから開始するのかを特定する情報（ノード列該当箇所情報）を保持する。具体的には、ノード列該当箇所情報は、ノード列の識別番号（０以上のノード列番号）と、そのノード列における接尾辞の開始位置（０以上の開始位置）の組である。
【００７２】
列挙した全てのノード列についてノードを順に走査しながら、並行して接尾辞木の枝に沿ってノードのラベルを保持する頂点をたどり、あるいはそのような頂点がなければ作成することで、この擬似的な接尾辞木を作成する手順の一例を図２６のリスト２に示す。
【００７３】
例えば図１５、図１６、図１７、図１８、図１９におけるノード列において、ノード列Ｌ0のみに対して擬似的な接尾辞木を作成した結果は図２０、その後、引き続き残りのノード列に対して接尾辞木を作成した結果は図２１、図２２となる（図中の出現回数については後述）。但し、全てのノード列に対して作成した接尾辞木は紙面に比べて大きくなるため、図２１、図２２には、図２０で図示した部分と０階層目の中間頂点ｕ47を根とする部分木以外は、グラフデータベース１が保持するグラフにおいて該当箇所が２箇所以上あるラベル列に対応する中間頂点とその末端頂点に限り図示してある。
【００７４】
−出現回数の算出−
接尾辞木の性質上、任意のｒ階層目（但し、ｒ≧０）の中間頂点ｕm<r>に対応するラベル列（ａl<0>，ａl<1>，…，ａl<r-1>，ａl<r>）は、中間頂点ｕm<r>を根とする部分木の末端頂点が保持している、ノード列該当箇所情報によって示されるノード列およびその開始位置からｒ＋１個の箇所に出現する。従って、中間頂点ｕm<r>を根とする部分木の全ての末端頂点が保持するノード列該当箇所情報の数の合計が、ノード列におけるラベル列の出現回数となる。
【００７５】
例えば図２２において２階層目の中間頂点ｕ185は、ラベル列（ａ8，ａ7，ａ5）に対応し、またｕ185を根とする部分木の末端頂点はｖ43，ｖ49の２個であり、末端頂点ｖ43にはノード列該当箇所情報（５，４）と（８，１）が、末端頂点ｖ49にはノード列該当箇所情報（６，４）と（９，１）がそれぞれ保持されている。このことからラベル列（ａ8，ａ7，ａ5）は、５番目のノード列Ｌ5の４番目から３個の箇所、８番目のノード列Ｌ8の１番目から３個の箇所、６番目のノード列Ｌ6の４番目から３個の箇所、９番目のノード列Ｌ9の１番目から３個の箇所に出現していることがわかり（但し、開始位置はいずれも０番目始まりであることに注意）、ノード列におけるラベル列（ａ8，ａ7，ａ5）の出現回数は４回となる。
【００７６】
しかし、ノード列はもともとグラフデータベース１が保持するグラフの開始ノードから終了ノードまでの経路を列挙して得たものであり、もとのグラフにおいて同一のノードや部分ノード列が異なるノード列に含まれる場合がある。そのため、ラベル列が一致する部分ノード列の出現回数をノード列ごとに別々に数え、足し合わせたのでは、別のノード列に含まれる共通の部分ノード列を重複して数えることになり、実際のグラフにおいてラベル列に該当する部分ノード列の出現回数よりも多くなってしまう。上述の例でも、５番目のノード列Ｌ5の４番目から３個の箇所、８番目のノード列Ｌ8の１番目から３個の箇所、６番目のノード列Ｌ6の４番目から３個の箇所、９番目のノード列Ｌ9の１番目から３個の箇所は、いずれもグラフＧ0中の部分ノード列（ｎ17，ｎ18，ｎ14）であり、グラフデータベース１が保持するグラフにおいてラベル列（ａ8，ａ7，ａ5）が出現するのはこの１回だけある。
【００７７】
このため、グラフデータベース１が保持するグラフにおいて各中間頂点に対応するラベル列に該当する部分ノード列（以下、単に中間頂点のグラフ該当部分ノード列と呼ぶ。）として一意なものを列挙し、その数によって各ラベル列の出現回数を求める必要がある。任意の中間頂点ｕmについて、全ての枝の先にある中間頂点のグラフ該当部分ノード列を再帰的に調べ、また末端頂点が保持するノード列該当箇所情報から中間頂点ｕmのグラフ該当部分ノード列を調べ、それらを合わせて一意な部分ノード列を求める手順の一例を図２７のリスト３に示す。また０階層目の全ての中間頂点に対してリスト３を実行することで、１階層目以降も含めた全ての中間頂点についてグラフ該当部分ノード列の数を再帰的に求める手順の一例を図２８のリスト４に示す。
【００７８】
例えば、図２２において０階層目の中間頂点ｕ47に対してリスト３を実行した場合に、各中間頂点のグラフ該当部分ノード列は図２４のようになり、これにより対応するラベル列の出現回数が求まる。また各中間頂点のグラフ該当部分ノード列の数を求めた結果を図２１、図２２中の各ノードの出現回数として、その階層別の和および総和を求めた結果を図２３に示す。
【００７９】
−頻度の算出と頻度の高いラベル列の判定−
ラベル列が一致する部分ノード列の出現回数をもとにラベル列の頻度を算出し、抽出手法固有のパラメータである頻度の閾値と比較して大きいラベル列を頻度の高いラベル列と判定して、算出した出現回数および頻度とともにサブパターン記憶手段２に保存する。
【００８０】
ここで、ラベル列の単純な頻度としては、
(a) ラベル列が一致する部分ノード列の出現回数を、全部分ノード列の出現回数で除した値
(b) ラベル列が一致する部分ノード列の出現回数を、含まれるノード数が同じ部分ノード列の出現回数で除した値
が考えられる。
【００８１】
また一般に、含まれるノード数が多くなるほど可能なラベル列の数が大きくなるため、この方法で算出した頻度では、含まれるノード数が多いラベル列の頻度は小さくなる傾向がある。そのため、
(c) (b)で求まる頻度を、ノードのラベルが無作為に付与されることを仮定した場合の想定の頻度で除した値（あるいはその対数値）
により、ノードのラベルが無作為に付与されることを仮定した場合に比べ、実際の単純な頻度がどの程度大きいのか、あるいは対数値をとった場合には、ラベル列が出現することの情報量がどの程度減少するのかを定量化し、それを頻度の値とすることなども考えられる。あるいは、これらの値のいくつかをそれぞれ算出し、抽出手法固有のパラメータであるそれぞれの対応する閾値と比較して大きいラベル列を頻度の高いラベル列だと判定することも考えられる。
【００８２】
任意の中間頂点ｕmに対応するラベル列について、上記(a)〜(c)の値はｒ＝vertexRank[m]として以下により算出できる（但し、ノードのラベルの数を‖A‖とする）。なお、vertexRankは、図２６のリスト２で使用されている各中間頂点の階層数のリストである。
【００８３】
【数３】
0005582540.tif 000004
【００８４】
【数４】
0005582540.tif 000005
【００８５】
【数５】
0005582540.tif 000006
【００８６】
なお、vertexCount、rankCount、totalCountはそれぞれ、図２８のリスト４で使用されている、各中間頂点のグラフ該当部分ノード列の数のリスト、長さ別の部分ノード列の数のリスト、全ての部分ノード列の数である。
【００８７】
擬似的な接尾辞木の全ての中間頂点について、これらの値を算出し、抽出手法固有のパラメータとしてプログラム中にコーディング、または設定されたそれぞれの対応する閾値と比較することで、頻度の高いラベル列に対応する中間頂点が求まる。
【００８８】
例えば図２１の３階層目の中間頂点ｕ12に対応するラベル列（ａ0，ａ1，ａ2，ａ3）の出現回数は５回であり、図２３に示されているように全部分ノード列の出現回数は５８２回、３階層目の中間頂点のグラフ該当部分ノード列の出現回数の和は８４回であり、ラベルはａ0〜ａ9の１０種類であるため、(a)の値は５／５８２、(b)の値は５／８４、(c)の値（自然対数値）は４log１０＋log（５／８４）≒６．３９と算出される。
【００８９】
なお、このようにして任意のｒ階層目（但し、ｒ≧０）の中間頂点ｕm<r>に対応するラベル列の頻度が高いと判定された際、実際にそのラベル列を求め、サブパターン記憶手段２に保存する手順については、その一例を図２９のリスト５に示す。また上記(a)により算出した頻度の閾値を1/1000として、それを上回るラベル列とその出現回数、頻度をサブパターン記憶手段２に保存した例を図４の「候補番号」「連結グラフ」「出現回数」「頻度」欄に示す。
【００９０】
−グラフデータベースが保持するグラフにおける該当箇所の保存−
頻度が高いと判定されたラベル列に対し、グラフデータベース１が保持するグラフにおいてそのラベル列に該当する部分ノード列を特定し、先に保存されているラベル列と対応付けてサブパターン記憶手段２に保存する。
【００９１】
任意の中間頂点のグラフ該当部分ノード列を列挙する手順は既に述べたとおりであり、頻度が高いと判定されたラベル列に対応する中間頂点に対してこの手順を行う。ここでは、リスト５のように、頻度が高いと判定されたラベル列とその出現回数および頻度をサブパターン記憶手段２に保存する際に、そのラベル列に対応する中間頂点の頂点番号がセットfreqVertexSetに追加されているものとし、それに含まれる中間頂点に対してリスト３を実行することで、中間頂点のグラフ該当部分ノード列をグラフ該当箇所情報としてサブパターン記憶手段２に保存する手順の一例を図３０のリスト６に示す。但し、freqVertexSetは階層数の小さい順に中間頂点の頂点番号を保持しているものとする。
【００９２】
例えば、図２２において０階層目の中間頂点ｕ47を根とする部分木に含まれる任意の中間頂点が、仮に頻度が高いと判定されたラベル列に対応するとして、グラフ該当部分ノード列を列挙した結果を図２４に示す。また頻度が高いと判定され、サブパターン記憶手段２に保存された図４のラベル列に対し、グラフにおける該当箇所を保存した結果を当該図４の「該当箇所（情報）」欄に示す。
【００９３】
≪サブパターン選択部≫
サブパターン選択部７では、サブパターン記憶手段２が保持する連結グラフのうちサブパターンとして使用するものを選択し、その選択結果をサブパターン記憶手段２に保存する（図２−ｓ２）。サブパターンの選択は、サブパターン記憶手段２が保持する内容を入力とし、選択結果を出力する、本発明装置を実現する計算機上で動作するプログラム中の関数（以下、サブパターン選択関数）により行う。
【００９４】
本発明ではサブパターン選択関数の実現方法を特に限定しないが、その例としては、
・サブパターン候補抽出部６により算出される各連結グラフの出現回数ｃと各種頻度ｐ0，ｐ1，…に対し、プログラム中の別の関数（ここではφc，φ0，φ1，…とする）を適用して得られる評価値φc(c)，φ0(p0)，φ1(p1)，…と、プログラムのパラメータとして予めコーディングされた、それぞれの閾値の値
【００９５】
【数６】
0005582540.tif 000007
【００９６】
を比較し、例えば全ての評価値が閾値より大きい連結グラフのみ、サブパターンとして選択する、
・サブパターン候補抽出部６により算出される各連結グラフの出現回数ｃと各種頻度ｐ0，ｐ1，…に対し、プログラム中の別の関数（ここではψc，ψ0，ψ1，…とする）を適用して得られる評価値ψc(c)，ψ0(p0)，ψ1(p1)，…の和ψc(c)＋ψ0(p0)＋ψ1(p1)＋…を算出し、この値と、プログラムのパラメータとして予めコーディングされた閾値の値
【００９７】
【数７】
0005582540.tif 000008
【００９８】
を比較し、例えば評価値の和が閾値より大きい連結グラフのみ、サブパターンとして選択する、
・上記関数において選択された連結グラフの中で、他の連結グラフの部分構造となっていない連結グラフのみ、サブパターンとして選択する。
【００９９】
・上記関数を組合せ、どの関数においても選択される連結グラフのみ、サブパターンとして選択する、
などが考えられる。
【０１００】
なお、上述の関数φc，φ0，φ1，…およびψc，ψ0，ψ1，…の例としては、
・プログラムのパラメータとして予めコーディングされた重みの値と、入力である出現回数あるいは頻度の値との積を算出する、
・サブパターン記憶手段２が保持する連結グラフ内における、出現回数あるいは頻度に関する順位（小さい順）を求め、それを連結グラフの数で除した値を算出する、
などが考えられる。
【０１０１】
この他、サブパターン選択関数としては、
・上述の各関数において、プログラムのパラメータとして予めコーディングされた値を用いる代わりに、本発明装置を実現する計算機のハードディスクに保存されたファイルで設定された値、あるいはサブパターン選択部７の実行開始時に同計算機の入出力装置を介して利用者により設定された値を用いる、
・本発明装置を実現する計算機の入出力装置を介して連結グラフを表現した図、その連結グラフの出現回数および頻度の値、並びに現在の選択状態を一覧として利用者に表示し、選択状態をトグルにより切り替えさせる、
なども考えられる。
【０１０２】
これらの関数で使用される閾値や重みなどのパラメータの値を変更する、あるいは適用する関数の組合せを変更することにより、サブパターン選択関数が変更される。
【０１０３】
例えば図４のサブパターン候補の連結グラフにおいて、プログラムあるいはファイルで頻度(a)の閾値が5/1000、頻度(c)の閾値が1.5、出現回数および頻度(b)の閾値が０と設定されている場合、候補番号１０，２２，２３，２４，３０が選択され、さらにこれらの中で、他の連結グラフの部分構造となっていない連結グラフを選択すると、候補番号１０の連結グラフは候補番号２３の部分構造であり、候補番号２３の連結グラフは候補番号３０の連結グラフであるため、最終的に候補番号２２，２４，３０の連結グラフが選択され、この選択結果が「選択状態」欄に反映される（図５）。
【０１０４】
≪グラフ縮約部≫
グラフ縮約部８では、グラフデータベース１が保持しているグラフと、サブパターン記憶手段２がサブパターンとして保持している連結グラフを読み込み、グラフデータベース１が保持するグラフにおいて、サブパターンの連結グラフに該当しない箇所を、特許文献１における匿名化処理により匿名化し、その後、特許文献１における統合処理により統合し、縮約済グラフ記憶手段３に保存する（図２−ｓ３）。
【０１０５】
なお、特許文献１では、非循環有向グラフ（特許文献１における業務プロセスインスタンス）を分類する際に着目する部分としてノード（特許文献１におけるアクティビティインスタンス）に付与されたラベル（特許文献１における処理名）を利用者が指定し、指定されたラベルとは異なるラベルが付与されたノードのラベルを一律に匿名化する、つまり既存のラベルとは異なる同一のラベル（例えば
【０１０６】
【数８】
0005582540.tif 000009
【０１０７】
）に変更している。
【０１０８】
一方、本発明では、サブパターン選択部７において１個のノードだけから構成される連結グラフがサブパターンとして選択されない限り、グラフデータベース１が保持しているグラフにおいてそのラベルが付与されたノードを一律に匿名化および統合の対象から除外することはしない。つまり、例えば図５において、候補番号２２，２４，３０の連結グラフのみがサブパターンとして選択されていて、ａ0だけ、あるいはａ1だけから構成される候補番号０，１の連結グラフがサブパターンとして選択されていない場合、図３のグラフのａ0またはａ1のラベルが付与されたノードのうち、匿名化および統合が除外されるのは候補番号２２，２４，３０の連結グラフと同型の部分構造を構成するｎ1，ｎ2，ｎ22，ｎ23，ｎ37，ｎ38，ｎ48，ｎ49，ｎ63，ｎ64のみで、それ以外のｎ0，ｎ8，ｎ25，ｎ29，ｎ41，ｎ44，ｎ52，ｎ57，ｎ62，ｎ68は匿名化および統合の対象になる。
【０１０９】
また本発明では、グラフ縮約部８の前に実行されるサブパターン候補抽出部６およびサブパターン選択部７により、着目する部分構造が（半）自動的に決定される。
【０１１０】
例えばグラフデータベース１が保持するグラフが図３であり、サブパターン記憶手段２が保持しているサブパターンの選択結果が図５である（サブパターンとして選択されている連結グラフは候補番号２２，２４，３０のみとする）場合、候補番号２２，２４，３０の連結グラフに該当しないノードを匿名化し、その後、統合した結果は図７となる。ここで、例えば候補番号２２の連結グラフに該当する箇所は、サブパターン記憶手段２が保持するグラフ該当箇所情報（図５の「該当箇所」欄）により、ｎ14，ｎ15，ｎ31，ｎ32，ｎ45，ｎ46，ｎ53，ｎ54，ｎ60，ｎ61であることがわかる。同様に、候補番号２４，３０の連結グラフに該当する箇所もわかる。これにより、サブパターンとして選択されたどの連結グラフにも該当しなかったノードが特定され、それらを対象に匿名化および統合が行われる。
【０１１１】
≪頻出部分構造抽出部≫
頻出部分構造抽出部９は、縮約済グラフ記憶手段３が保持するグラフを読み込み、グラフを対象とした、頻度の高い部分構造を抽出する従来の手法（例えば非特許文献１〜６）により、同型性判定による頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段４に保存する（図２−ｓ４）。
【０１１２】
なお、この抽出処理を調整する、各抽出手法固有のパラメータについては、プログラムのパラメータとして予めコーディングされた値を用いる、本発明装置を実現する計算機のハードディスクに保存されたファイルで設定された値を用いる、サブパターン候補抽出部６の実行開始時に同計算機の入出力装置を介して利用者により設定された値を用いる、などを想定するが、特に限定しない。
【０１１３】
例えば縮約済グラフ記憶手段３が保持しているグラフが図７である場合、これらに対して頻度の高い連結部分グラフを抽出する従来の手法を適用した結果は図９となる。但し、この例では頻度として、出現回数をグラフデータベース１中のグラフの数で除した値を用いている。
【０１１４】
≪頻出部分構造表示部≫
頻出部分構造表示部１０は、利用者に、頻出部分構造記憶手段４が保持する連結グラフとその出現回数および頻度を、本発明装置を実現する計算機の出力装置を介して表示する（図２−ｓ５）。連結グラフとその出現回数および頻度を表示する方法としては、連結グラフを表示した図と、その連結グラフの出現回数および頻度の値とを一覧として表示することを想定しているが、特に限定しない。
【０１１５】
〔発明装置の利用例〕
以下、先に記載した本発明装置の構成要素の処理の詳細および具体的実現例に従って本発明装置が利用されるときの例を記載する。なお、いずれの場合も、本発明装置を用いて利用者が頻度の高い部分構造の抽出を指示する前にグラフデータベース１に図３で示されるグラフが保存されているものとする。
【０１１６】
≪利用例１≫
ステップｓ０：実行制御部５において利用者により分析の開始が指示される。
【０１１７】
ステップｓ１：実行制御部５からサブパターン候補抽出部６が呼び出される。サブパターン候補抽出部６では、図３に示したグラフデータベース１内の全ての部分ノード列について、同型の部分ノード列の出現回数を調べ、その値をもとに以下の値を算出する。
【０１１８】
(a) 同型の部分ノード列の出現回数を、全部分ノード列の出現回数で除した値
(b) 同型の部分ノード列の出現回数を、含まれるノード数が同じ部分ノード列の出現回数で除した値
(c) (b)で求まる頻度を、ノードのラベルが無作為に付与されることを仮定した場合の想定の頻度で除した値の自然対数値
その結果、(a)の値が1/1000を超える部分ノード列を、出現回数、頻度、グラフ該当箇所情報とともにサブパターン記憶手段２に図４の内容で保存する。
【０１１９】
ステップｓ２：実行制御部５からサブパターン選択部７が呼び出される。サブパターン選択部７では、プログラムあるいはファイルで頻度(a)の閾値が5/1000、頻度(c)の閾値が1.5、出現回数および頻度(b)の閾値が０と設定されている場合、図４の連結グラフの中から候補番号１０，２２，２３，２４，３０が選択され、さらにこれらの中で他の連結グラフの部分構造となっていない連結グラフを選択すると、最終的に候補番号２２，２４，３０の連結グラフが選択され、この選択結果がサブパターン記憶手段２の「選択状態」欄に反映される（図５）。
【０１２０】
ステップｓ３：実行制御部５からグラフ縮約部８が呼び出される。グラフ縮約部８では、グラフデータベース１が保持する図３のグラフについて、図５で選択されているサブパターンに該当しない箇所を縮約し、その結果を縮約済グラフ記憶手段３に図７の内容で保存する。
【０１２１】
ステップｓ４：実行制御部５から頻出部分構造抽出部９が呼び出される。頻出部分構造抽出部９では、縮約済グラフ記憶手段３が保持する図７の縮約済グラフに対して、頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段４に図９の内容で保存する。
【０１２２】
ステップｓ５：実行制御部５から頻出部分構造表示部１０が呼び出される。頻出部分構造表示部１０では、頻出部分構造記憶手段４が保持する図９の連結グラフとその出現回数および頻度を、本発明装置を実現する計算機の出力装置を介して表示する。
【０１２３】
≪利用例２≫
あるいは、利用例１のステップｓ２以降について以下のようにする場合もある。
【０１２４】
ステップｓ２：実行制御部５からサブパターン選択部７が呼び出される。サブパターン選択部７において、(c)の閾値が2.0、それ以外の閾値は利用例１と同じ場合、図４の連結グラフの中から候補番号２３，２４，３０が選択され（候補番号１０，２２は選択されない）、さらにこれらの中で他の連結グラフの部分構造となっていない連結グラフを選択すると、最終的に候補番号２４，３０の連結グラフのみが選択され、この選択結果がサブパターン記憶手段２の「選択状態」欄に反映される（図６）。
【０１２５】
ステップｓ３：実行制御部５からグラフ縮約部８が呼び出される。グラフ縮約部８では、グラフデータベース１が保持する図３のグラフについて、図６で選択されているサブパターンに該当しない箇所を縮約し、その結果を縮約済グラフ記憶手段３に図８の内容で保存する。
【０１２６】
ステップｓ４：実行制御部５から頻出部分構造抽出部９が呼び出される。頻出部分構造抽出部９では、縮約済グラフ記憶手段３が保持する図８の縮約済グラフに対して、頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段４に図１０の内容で保存する。
【０１２７】
ステップｓ５：実行制御部５から頻出部分構造表示部１０が呼び出される。頻出部分構造表示部１０では、頻出部分構造記憶手段４が保持する図１０の連結グラフとその出現回数および頻度を、本発明装置を実現する計算機の出力装置を介して表示する。
【０１２８】
ステップｓ６：この例ではステップｓ５で利用者に表示されるのはいずれもａ0〜ａ4からなる連結グラフであり、互いに非連結な連結部分グラフ同士がどのような組合せおよび順序で出現する頻度が高いのかを知ることはできない。そのため、実行制御部５において利用者により分析の再実行が指示される。
【０１２９】
ステップｓ２’：実行制御部５からサブパターン選択部７が呼び出される。サブパターン選択部７では、サブパターン記憶手段２が保持する図６の連結グラフ、出現回数、頻度および選択状態が、本計算機を実現する計算機の出力装置を介して表示される。候補番号２２の連結グラフがサブパターンとして利用者に追加で選択されると、その結果をサブパターン記憶手段２に図５の内容で保存する。
【０１３０】
ステップｓ３’：実行制御部５からグラフ縮約部８が呼び出される。グラフ縮約部８では、グラフデータベース１が保持する図３のグラフについて、図５で選択されているサブパターンに該当しない箇所を縮約し、その結果を縮約済グラフ記憶手段３に図７の内容で保存する。
【０１３１】
ステップｓ４’：実行制御部５から頻出部分構造抽出部９が呼び出される。頻出部分構造抽出部９では、縮約済グラフ記憶手段３が保持する図７の縮約済グラフに対して、頻度の高い部分構造を連結グラフとして抽出し、またその出現回数および頻度を算出し、頻出部分構造記憶手段４に図９の内容で保存する。
【０１３２】
ステップｓ５’：実行制御部５から頻出部分構造表示部１０が呼び出される。頻出部分構造表示部１０では、頻出部分構造記憶手段４が保持する図９の連結グラフとその出現回数および頻度を、本発明装置を実現する計算機の出力装置を介して表示する。
【符号の説明】
【０１３３】
１：グラフデータベース、２：サブパターン記憶手段、３：縮約済グラフ記憶手段、４：頻出部分構造記憶手段、５：実行制御部、６：サブパターン候補抽出部、７：サブパターン選択部、８：グラフ縮約部、９：頻出部分構造抽出部、１０：頻出部分構造表示部。
【先行技術文献】
【特許文献】
【０１３４】
【特許文献１】特開２０１０−５５３８１号公報（「業務または作業における着目する処理の進め方に応じて案件を分類する方法、その装置およびプログラム」）
【非特許文献】
【０１３５】
【非特許文献１】吉田健一、元田浩、「推論過程からの概念学習(1)−類型的推論過程の抽出−」、人工知能学会誌、Vol.7、No.4、pp.675-685、1992.
【非特許文献２】L. B. Holder, D. J. Cook, S. Djoko, "Structure Discovery in the SUBDUE System", Proceedings of the 4th ACM SIGKDD Workshop on Knowledge Discovery and Data Mining (KDD) 1994, pp.169-180, 1994.
【非特許文献３】N. Vanetik, E. gudes, S. E. Shimony, "Computing Frequent Graph Patterns from Semistructured Data", Proceedings of the 2002 IEEE International Conference on Data Mining (ICDM), pp.458-465, 2002.
【非特許文献４】X. Yan, J. Han, "gSpan: Graph-Based Substructure Pattern Mining", Proceedings of the 2002 IEEE International Conference on Data Mining (ICDM), pp.721-724, 2002.
【非特許文献５】M. Kuramochi, G. Karypis, "An Efficient Algorithm for Discovering Frequent Subgraphs", IEEE Transactions on Knowledge and Data Engineering, Volume 16, Issue 9, pp.1038-1051, 2004.
【非特許文献６】A. Inokuchi, T. Wahio, H. Motoda, "Complete Mining of Frequent Patterns from Graphs: Mining Graph Data", Machine Learning, Volume 50, pp.321-354, 2003.
【図１】
0005582540.tif 000010
【図２】
0005582540.tif 000011
【図３】
0005582540.tif 000012
【図４】
0005582540.tif 000013
【図５】
0005582540.tif 000014
【図６】
0005582540.tif 000015
【図７】
0005582540.tif 000016
【図８】
0005582540.tif 000017
【図９】
0005582540.tif 000018
【図１０】
0005582540.tif 000019
【図１１】
0005582540.tif 000020
【図１２】
0005582540.tif 000021
【図１３】
0005582540.tif 000022
【図１４】
0005582540.tif 000023
【図１５】
0005582540.tif 000024
【図１６】
0005582540.tif 000025
【図１７】
0005582540.tif 000026
【図１８】
0005582540.tif 000027
【図１９】
0005582540.tif 000028
【図２０】
0005582540.tif 000029
【図２１】
0005582540.tif 000030
【図２２】
0005582540.tif 000031
【図２３】
0005582540.tif 000032
【図２４】
0005582540.tif 000033
【図２５】
0005582540.tif 000034
【図２６】
0005582540.tif 000035
【図２７】
0005582540.tif 000036
【図２８】
0005582540.tif 000037
【図２９】
0005582540.tif 000038
【図３０】
0005582540.tif 000039