説明

情報処理装置及び情報処理プログラム

【課題】複数の木構造内で複数回現れる構造パターンの探索において、ノードを加えた場所毎に再帰的処理による探索を行うようにした情報処理装置を提供する。
【解決手段】情報処理装置の第1の探索手段は、複数の木構造内で複数回現れる構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより下位のノードに対して行い、第2の探索手段は、前記構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより上位のノードであって該上位のノードの下位にあり、かつ未探索のノード毎に探索し、前記第1の探索手段と前記第2の探索手段は、探索の対象とすべきノードがなくなった場合に、該探索を始めた元のノードに戻る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【0002】
コンピュータの処理能力、記憶装置の容量の飛躍的な増大に加え、IT化やネットワーク化が進んだことで大量な情報が容易に集められるようになってきた。集めた情報から市場機会やリスクに関する情報を早期に発見したり、隠れた知識を発見したりすることへの期待が高まっている。
しかし、集めた情報の量はしばしば人間の処理能力をはるかに超えるものとなる。このため、せっかく大量に集めた情報からリスクを発見したり、知識を抽出したりして活用することは実際には労力を伴う難しいものであった。
【0003】
一方、パターン・マイニング等の技術の進展により、そのような大量の情報の中から例えば同時に購入される商品のパターンなどの情報が抽出可能となってきた。同時に購入される品物のパターンや購入される順序のパターンを抽出する技術が顧客の購買行動の分析などの需要から注目を集めて研究開発されてきたが、最近ではさまざまな情報の構造化、半構造化が進んできたこともあり、木構造のような構造を持つパターンを抽出するパターン・マイニングの技術が注目されてきている。構造情報を抽出するパターン・マイニングの技術の中でも、特に木構造はXML(eXtensible Markup Language)をはじめとしてドキュメントの構造化や知識表現などさまざまな情報の構造化に用いられるためパターン抽出への期待も大きい。
【0004】
木構造のデータ群から部分木のパターンを抽出する技術には大きく分けて、親子関係が厳密に一致する構造だけを抽出するinduced subtree miningの技術と、親子関係が多少乱れても先祖―子孫の関係があれば構造を抽出するembedded subtree miningの技術がある。
現実社会で発生するデータ、例えばドキュメントの操作履歴などのように人の操作を記録したものでは、人がたとえ同じように作業を行ったつもりでも、操作履歴のデータ上では必ずしもデータの親子関係が一致しないことがしばしば起きる。そのような場合にはembedded subtree miningの技術を適用することが望ましい。現実世界のデータではしばしば同様にゆれが生じるため、embedded subtree miningの技術への期待は高い。embedded subtree miningを実現する技術として、開示されているものには、TreeMiner、Dryade、MB3−Minerなどの技術が挙げられる。
【0005】
これらに関連する技術として、例えば、特許文献1には、データの集合からその中に含まれる重要なパターンを検出する方法及びシステムを提供することを課題とし、木構造データで表わされたデータ集合を含むデータベースから、集計対象となる候補パターンを用いて、頻出パターンを検出するシステムであって、(1)データベースから候補パターンにマッチするパターンを集計する手段と、(2)前記集計により出現頻度の高いパターンを検出する手段と、(3)前記検出したパターンから、次の集計対象となる候補パターンを生成する手段と、を有するように構成することが開示されている。
【0006】
また、例えば、特許文献2には、順序木において頻出するパターンを抽出するのに好適な抽出装置等を提供することを課題とし、抽出装置の入力受付部は、1つ以上の順序木の入力を受け付け、変換部は、入力を受け付けられた順序木のそれぞれを系列表現へ変換し、抽出部は、変換された系列表現のそれぞれが含むパターンのうち、所定の頻度以上で出現するパターンを抽出し、系列表現は、順序木を深さ優先探索して、枝を進む際に通過する節はその名前を表わすマークを、枝を戻る際はバックトラックマークを、それぞれ並べることによりでき、パターンは、系列表現であるマークの列中の名前を表わすマークのいずれかを最初のマークとして、これから射影を0回以上繰り返したときに、最初のマークから最後のマークに至るまでに出会うマークの列をいい、射影が成立するか否かは、マークの列の列文脈と、射影文脈の値により判定することが開示されている。
【特許文献1】特開2001−134575号公報
【特許文献2】特開2004−355457号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、複数の木構造内で複数回現れる構造パターンの探索において、ノードを加えた場所毎に再帰的処理による探索を行うようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の情報処理装置は、複数の木構造内で複数回現れる構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより下位のノードに対して行う第1の探索手段と、前記構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより上位のノードであって該上位のノードの下位にあり、かつ未探索のノード毎に探索する第2の探索手段を具備し、前記第1の探索手段と前記第2の探索手段は、探索の対象とすべきノードがなくなった場合に、該探索を始めた元のノードに戻ることを特徴とする。
【0009】
請求項2の情報処理装置は、請求項1に記載する情報処理装置であって、前記構造パターン内の現在の処理対象である現処理対象となっているノードと一致する前記木構造内でのノードのうち上下関係のあるものについては最上位のノードに基づいて、子孫を探索する範囲を決定する第1の探索範囲決定手段をさらに具備し、前記第1の探索手段は、前記第1の探索範囲決定手段によって決定された範囲に基づいて探索を行うことを特徴とする。
【0010】
請求項3の情報処理装置は、請求項1に記載する情報処理装置であって、前記構造パターン内での親ノードと一致する前記木構造内でのノードのうち上下関係のあるものについては最上位のノード及び前記構造パターン内での子ノードと一致する前記木構造内でのノードに上下関係のあるものについては最下位のノードに基づいて、探索範囲を決定する第2の探索範囲決定手段をさらに具備し、前記第2の探索手段は、前記第2の探索範囲決定手段によって決定された範囲に基づいて探索を行うことを特徴とする。
【0011】
請求項4の情報処理装置は、請求項3に記載する情報処理装置であって、前記構造パターン内の現在の処理対象となっているノードの先祖のノードの出現箇所の中から、該現在の処理対象となっているノードの出現箇所のノードを子孫に含むノードに対応する出現箇所を保持する保持手段をさらに具備することを特徴とする。
【0012】
請求項5の情報処理装置は、請求項4に記載する情報処理装置であって、前記木構造内で分岐のない範囲の最上位及び最下位以外の出現箇所を前記保持手段から削除する削除手段をさらに具備することを特徴とする。
【0013】
請求項6の情報処理装置は、請求項4に記載する情報処理装置であって、前記保持手段に保持させる出現箇所を対象とし、前記木構造内で分岐のない範囲の最上位及び最下位以外の出現箇所以外を削除したものを選別する選別手段をさらに具備することを特徴とする。
【0014】
請求項7の情報処理プログラムは、コンピュータを、複数の木構造内で複数回現れる構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより下位のノードに対して行う第1の探索手段と、前記構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより上位のノードであって該上位のノードの下位にあり、かつ未探索のノード毎に探索する第2の探索手段として機能させ、前記第1の探索手段と前記第2の探索手段は、探索の対象とすべきノードがなくなった場合に、該探索を始めた元のノードに戻ることを特徴とする。
【発明の効果】
【0015】
請求項1記載の情報処理装置によれば、複数の木構造内で複数回現れる構造パターンの探索においてノードを加えた場所毎に再帰的処理による探索を行うことができる。
【0016】
請求項2記載の情報処理装置によれば、探索処理における記憶容量及び処理時間の増大を抑制することができる。
【0017】
請求項3記載の情報処理装置によれば、探索処理における記憶容量及び処理時間の増大を抑制することができる。
【0018】
請求項4記載の情報処理装置によれば、探索状態を保持して、その探索における再帰的処理が実行できる。
【0019】
請求項5記載の情報処理装置によれば、探索処理における記憶容量をより削減することができる。
【0020】
請求項6記載の情報処理装置によれば、探索処理における記憶容量をより削減することができる。
【0021】
請求項7記載の情報処理プログラムによれば、複数の木構造内で複数回現れる構造パターンの探索においてノードを加えた場所毎に再帰的処理による探索を行うことができる。
【発明を実施するための最良の形態】
【0022】
まず、前述のTreeMiner、Dryade、MB3−Minerの技術について、説明する。
Dryadeは、兄弟ノードに同じものを含めないという機能制限があり、そのような場面が頻出するドキュメントの操作履歴などのマイニングには適さない。
MB3−Minerは、幅優先探索であり、処理の階層毎に用意するパターン候補の数が膨大なものになるため、大規模なデータに適用するには限界がある。
また、TreeMinerは、深さ優先探索であると主張されてはいるが、実際にはツリー(木)構造のルートから葉ノードをつないだパス方向に発生する枝の候補を全て再帰処理の深さ方向に送り込むことを行う。このため幅優先探索と同様の問題が生じてしまい、大規模なデータに適用すると候補生成でパターン候補の数が膨大なものになり処理できなくなるという問題があった。
【0023】
また、MB3−MinerやTreeMinerにおいては、ツリーの出現位置(パターン木の中の各ノードと、データの木の中のノードとの対応関係)を管理するが、embedded subtree miningの場合には、その数が深さ方向に広がる子孫ノード候補の組み合わせにより指数関数的に膨れ上がるという問題があった。TreeMinerでは、TreeMinerDにおいて、このことに対する対策がとられているが、実際には十分に機能していない。
同様の状況はドキュメントの操作履歴だけで生じるものではなく、例えば、たんぱく質の構造データなどにおいても同じラベルを持つノードが一連の系列の中に何度も現れることは少なくない。出現位置の組み合わせの管理については、このような場合に大量の情報を管理しなければならなくなり、処理に必要な記憶容量の増大と処理対象のデータの増大による処理コストの増大という問題が発生し、大規模なデータの処理を現実的な時間とリソースで実現することを難しくしてしまう。
つまり、従来は、木構造をストリング形式に変換して又はそれと等価なものに変換して探索を行っていた。本実施の形態は、木構造自体の探索を行うようにしているものである。
【0024】
本実施の形態は、要素間に設定した関係を木構造として扱えるデータ群の中から、複数回にわたって現れる関係構造(部分木のパターン、以下、構造パターン、構造パターン木、パターンともいう)を抽出する技術に関するものである。
本実施の形態は、ルートノード(根)からリーフノード(葉)にいたるパス(以降、Epathともいう)、各ノードの属するEpathの範囲(以降、EpRangeともいう)、のデータを用い、探索ステップに合わせて管理するノード出現情報管理機構を用いた、深さ優先探索で探索処理を行う情報抽出装置である。
さらに、パターン抽出の効率を上げるために、前記EpRangeを用いたツリーデータ管理機構を備えている。
【0025】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態を適用するに好適なシステムの概念構成図である。このシステムは、構造情報DB110、情報収集装置120、情報抽出装置130、抽出情報管理装置140を有している。これらは、通信回線を介して接続されている。なお、これらの全ての装置群が一つの装置内に構築されていてもよいし、これらのうちの一部の装置が一つの装置内に構築されていてもよい。
【0026】
構造情報DB110は、情報収集装置120、情報抽出装置130と接続されており、情報収集装置120から受け取ったデータであり、情報を抽出すべき対象である木構造データを蓄積して管理し、情報抽出装置130からアクセスされる。
情報収集装置120は、構造情報DB110と接続されており、図示しない他の装置から情報を集めて、あるいは図示しない他の装置から送信された情報を受け取って、必要なら情報の整形(情報抽出装置130が扱えるような木構造データへの変換)を行って、構造情報DB110に格納する。
情報抽出装置130は、構造情報DB110、抽出情報管理装置140と接続されており、構造情報DB110にアクセスして、木構造データから頻出情報を抽出して抽出情報管理装置140に送信する。
抽出情報管理装置140は、情報抽出装置130と接続されており、情報抽出装置130から送信された頻出情報を受け取って蓄積したり表示装置や印刷装置などの図示しない他の装置に送信したりする。
【0027】
図2は、本実施の形態の情報抽出装置130内の構成例についての概念的なモジュール構成図である。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。
【0028】
図1に示した情報抽出装置130は、図2に示すように構造情報管理モジュール210、出現情報選択モジュール220、出現情報管理モジュール230、調査範囲処理モジュール240、探索処理モジュール250、探索状態管理モジュール260、抽出情報処理モジュール270を有している。
【0029】
構造情報管理モジュール210は、出現情報選択モジュール220、出現情報管理モジュール230、調査範囲処理モジュール240と接続されており、構造情報DB110中の構造情報を調査範囲処理モジュール240の指定にしたがって調査し、木構造データ中のノードの出現をラベル毎に集計する。また、構成によってはラベル毎に出現位置情報を収集するようにしてもよい。この集計結果である出現情報は、出現情報管理モジュール230に送信される。なお、出現情報には、出現箇所の情報と幾つの木に出現したかを示す集計値の両方を含んでいる。また、構造情報管理モジュール210は、必要であれば図示しない記憶手段を有し、構造情報DB110中の構造情報を処理に適したデータ構造に変換して蓄積することを行ってもよい。
【0030】
出現情報選択モジュール220は、構造情報管理モジュール210、出現情報管理モジュール230と接続されており、構造情報管理モジュール210によって生成された出現情報に基づいて、対象とするラベルを選択する。つまり、構造情報管理モジュール210によって出現が確認されたノードのラベル毎の出現情報を受け取り、予め定めた基準を満たす要素(予め設定された回数以上出現するものなど)と満たさない要素を選別する。又は、図示しない入力装置によりユーザから指定された条件に見合わない出現情報を破棄したりして出現情報を整理する。
【0031】
出現情報管理モジュール230は、出現情報選択モジュール220、探索処理モジュール250、構造情報管理モジュール210と接続されており、出現情報選択モジュール220により選択されたノードのラベルと出現情報を受け取り管理する。この情報を探索処理モジュール250の要求により順に探索処理モジュール250に送信する。
【0032】
調査範囲処理モジュール240は、構造情報管理モジュール210、探索処理モジュール250、探索状態管理モジュール260と接続されており、探索状態管理モジュール260に記憶されている探索状態及び構造情報管理モジュール210によって生成され、探索処理モジュール250の指示にしたがって出現情報管理モジュール230から複製、あるいは移動して探索状態管理モジュール260内に格納されている出現情報に基づいて、木構造データ内の構造パターンの探索範囲を決定する。
【0033】
探索処理モジュール250は、出現情報管理モジュール230、調査範囲処理モジュール240、探索状態管理モジュール260、抽出情報処理モジュール270と接続されており、出現情報管理モジュール230、調査範囲処理モジュール240、探索状態管理モジュール260、抽出情報処理モジュール270による処理を制御して、調査範囲処理モジュール240によって決定された探索範囲に基づいて、構造情報管理モジュール210が取り出し、出現情報選択モジュール220により選択されたラベルと出現情報を出現情報管理モジュール230から得て木構造データ内に複数回出現する構造パターンの探索を行い、その探索結果を抽出情報処理モジュール270へ渡す。この探索処理は適時探索状態管理モジュール260の探索状態を更新し再帰的に実行する。
【0034】
探索状態管理モジュール260は、調査範囲処理モジュール240、探索処理モジュール250と接続されており、探索処理の途中状態を格納、管理する。記憶されるこの途中の状態は、探索処理モジュール250による再帰的な探索処理に利用される。探索処理モジュール250による探索処理中のパターン候補情報、構造パターン中のノードの各構造情報中での出現情報の保持と処理の過程における出現情報の更新・回復などを受け持つ。
抽出情報処理モジュール270は、探索処理モジュール250と接続されており、探索処理モジュール250より抽出したパターンを受け取り、図示しない記憶装置に格納したり、図示しない出力装置への出力処理を受け持つ。
【0035】
図3は、本実施の形態による処理例を示したフローチャートである。
ステップS302(走査用情報の準備)では、構造情報管理モジュール210は、後の処理を効率的に実行するための準備を行うために、構造情報DB110に格納された構造情報を変換し、図示しない記憶手段に格納する。
【0036】
図8は、説明のために用いる木構造データの例である。
例示した3つの木構造データTr1(図8(a)),Tr2(図8(b)),Tr3(図8(c))には、それぞれ16個、16個、11個のノードがある。説明の簡易化のために、兄弟間には順序関係があるとし、深さ優先探索でノードを辿った場合の順番をもとに、ノードにv0、v1、・・・と識別子を設定した。以降、木構造を示す必要がない場合には、単にv0やv2等の表記でノードを指し、どの木データであるかを示す必要がある場合にはv0Tr1、v2Tr2のようにそれぞれのノードが属する木データの識別子を添えて表記する。
図8に示した例では、ノードのラベルをA,B,C,・・・とした。例に現れるノードのラベルは、A,B,C,D,E,F,G,H,I,J,Kである。図8の丸内のアルファベットはそのノードのラベルである。
【0037】
また、パターン抽出の条件を2つ以上の木構造データで出現するパターンとして説明する。
図9に示す例は、それぞれの木構造データについて、それぞれのルートノードからリーフノードまでのパスを示した図である。図中でそれぞれのパスにEp1〜Ep6までの識別子をつけている。これも同様に木を示す必要がある場合には、Ep1Tr1のように木データの識別子を添えて表記する。例えばEp4Tr1(Tr1のEp4)は、v0,v10,v11,v12,v13を通るパスであり、Ep2Tr3(Tr3のEp2)は、v0,v1,v2,v3,v4,v6を通るパスである。
Epathをこのように設定することで、各ノードは少なくとも1つのEpath上にあり、ノードによっては複数のEpath上にある。例えば、v12Tr1は、Ep4Tr1とEp5Tr1の上にあり、v7Tr2は、Ep3Tr2とEp4Tr2とEp5Tr2の上にある。
【0038】
各ノードが、どのEPath上にあるかを示す情報EpRangeを各ノードの関数として定義する。例えば、EpRange(v12Tr1)={Ep4Tr1,Ep5Tr1}であり、EpRange(v7Tr2)={Ep3Tr2,Ep4Tr2,Ep5Tr2}である。
ここで、対象としている木構造は順序木を仮定しているため、EpRangeに現れるEPathの番号は、連続する。そこで、説明の簡易化のためEpRangeを単純にEPathの番号の一番小さいものと一番大きいもので示すこととする。すなわち、次のように表記する。例えば、EpRange(v12Tr1)=[4,5]、EpRange(v7Tr2)=[3,5]である。
このとき、EpRangeの小さい側の番号をEpRangeL、大きい側の番号をEpRangeRとして同様に関数で表わす。例えば、EpRangeL(v12Tr1)=4、EpRangeL(v7Tr2)=3であり、EpRangeR(v12Tr1)=5、EpRangeR(v7Tr2)=5である。
【0039】
また、EpRangeをノードの関数としてではなく、単にEPathの範囲として参照することも行う。例えば、{Ep2Tr3,Ep3Tr3,Ep4Tr3}を参照したい際に、単にTr3のEpRangeTr3[2,4] と示すことも行う。また同様に、EpRangeLをEpRangeの小さい番号、EpRangeRをEpRangeの大きい番号としても用いる。
【0040】
図10に、図8に示した例のTr1,Tr2,Tr3中の各ノードについて、(ノード識別子、ラベル、EpRangeL,EpRangeR)の組を示した。図10(a)では、それぞれノードの識別子1001a、ノードのラベル1002a、EpRangeL1003a、EpRangeR1004aが該当する。例えば、図10(a)に示すTr1のノード識別子:V0は、Aというノードのラベルであり、EpRangeLは1、EpRangeRは6である。
【0041】
構造情報管理モジュール210は、各木構造データに対してノードの存在範囲やEpRange範囲を指定してノードを走査する機能を有するために、図示しない内部の記憶手段に各ツリー情報中の必要な情報を別のデータ構造で保持することもできる。
【0042】
図11、図12、図13には、ツリー情報を内部に格納する一例を示した。図11、図12、図13は、それぞれTr1,Tr2,Tr3について、各ノードをEpRangeLの値から辿りやすく格納した例であり、ツリーを深さ優先に辿りながらそれぞれのノードのEpRangeLの場所にデータを追加することで構成できる。つまり、例えば図11に示すTr1のEp情報1100は、Ep1 1101、Ep2 1102、Ep3 1103、Ep4 1104、Ep5 1105、Ep6 1106へのリンク情報を含むものである。また、図示する都合上1101,1102、1103,1104,1105,1106が個別に示してあるが、これらが図10に示したような順で連続領域に配置されてもよい。
【0043】
図11、図12、図13に示すツリー情報例の各ノードに対応するデータは、図10に示した(ノード識別子、ラベル、EpRangeL,EpRangeR)の組に加えて、一番右に番号を加えている。この番号は、各データの同じEpRangeLの中での位置を示す番号である。この番号は、同じEpRangeLで、次に下位のデータを探すといった場合に用いるためのものである。
例えばTr2について、EPath3,EPath4の上にあるノードを列挙したいとすると、EpRangeLが3あるいは4であるノードを辿って、EpRangeRが5より大きくならないものを探して列挙するという方法で簡単に実現できる。ただし、Ep3,Ep4の上にあるノードは、これだけが全てではなく、EpRangeLがEp1であるv0,v1が残される。しかし、後述する追加処理によって、このv0,v1のようなノードも簡単に列挙することができる。
本実施の形態では、EpRangeを指定して効率的にノードを列挙できる方法の一例として図11、図12、図13に示すデータ構造を使って説明を行うが、他のデータ管理方法、例えばバケット分割を用いる方法や探索のための探索木による方法を適用してもよい。
【0044】
ステップS304(要素の出現を集計)では、構造情報管理モジュール210によって、各ラベルがいくつのツリーで出現したかを集計する。この処理は前述のステップS302の際に同時に実行することもできる。処理の結果、各ラベルがいくつの木構造データで出現したかを判定できる情報を得て、パターン抽出の条件に見合うものだけを残した頻出要素(本実施の形態ではノードのラベル)のリストを作成する。構成により、各頻出要素の出現位置情報(以降簡単に出現情報とも呼ぶ)も合わせて処理結果となる。
ここでの例では、A,B,C,D,Fが頻出要素のリストに残る。この頻出要素のリストにしたがい、リスト中の頻出要素それぞれをルートノードとした構造パターンを抽出する処理を以降の繰り返し処理で行う。
【0045】
ステップS306(頻出要素処理終了?)では、頻出要素のリスト内のノードのラベル(例に示したA,B,C,D,F)それぞれについて処理が繰り返されたことを、検査し、処理の流れを制御する。頻出要素のリスト中の全てのラベルについて処理が終わったところで、処理を終了する(ステップS314)。
【0046】
ステップS308(処理対象要素選択)では、出現情報選択モジュール220が、頻出要素のリスト内の未処理のものから一つ選ぶ。例ではノードのラベル、A,B,C,D,Fの中から未処理のものを一つ選ぶことになる。どのラベルを選択した場合も処理の流れは共通であるため、以降ではラベルAを選択した場合について説明を行う。
【0047】
ステップS310(探索状態作成)では、探索状態管理モジュール260が、選択したラベルが各構造データにおいてどこで出現したかを示す情報を用意する。
このステップS310は、ステップS304において各ラベルの出現位置情報も合わせて出現情報管理モジュール230に格納される構成の場合には、その情報を取り出してくるだけの処理となる。構成によっては、記憶容量などの関係から出現位置の情報が出現情報管理モジュール230に記憶されていない場合もあり、そのような場合には、この段階で構造情報を走査して出現位置の情報を抽出するようにしてもよい。
例えば、ラベルAの出現情報は、図14に示すように、Tr1の出現情報1410内のv0Tr1、v2Tr1、v4Tr1、v12Tr1、Tr2の出現情報1420内のv1Tr2、v3Tr2、v9Tr2、v11Tr2、Tr3の出現情報1430内のv0Tr3、v8Tr3、となる。ここで、図14に示した出現情報は、図11、図12、図13に格納されている情報と同じものを用いた。つまり、(1)「ノードの識別子」、(2)「ラベル」、(3)「EpRangeL」、(4)「EpRangeR」、(5)「EpRangeL」を同じとして格納されている情報内での番号の組として示してある。
【0048】
この出現情報に加えて、選択したラベルをルートとした構造パターン木を作成し、その構造パターン木中の現在処理位置を設定して、図15の例に示す探索状態ノードを作成する。つまり、探索状態ノードは、構造パターン木1510、出現情報1520、変更情報スタック1530を有している。構造パターン木1510は、ステップS308で選択されたラベルのノードをルートとした構造パターン木とその構造パターン木中の現在処理位置を記憶している。出現情報1520内のTr1 1521、Tr2 1522、Tr3 1523は、図14で示した出現情報1410、出現情報1420、出現情報1430と同じものである。変更情報スタック1530は、後述の処理で使用するものである。
【0049】
この探索状態ノードをルートノードとして、探索状態を図16の例に示すように作成して、探索状態管理モジュール260に格納する。図16は、探索状態ノードに格納されている構造パターン木に対応するパターンの構造を文字列で示したものを探索状態ノード(A)1610に示したものである。
なお、構造パターン木の文字列の表記は、ここでは、{親}[{子供1},{子供2},・・・]という書き方を再帰的に適用することにより示す。ただし、子供がないノードについては[]を省略する。
【0050】
ステップS312では、探索処理モジュール250が、頻出構造パターン探索を行う。ステップS312については、図4に示すフローチャートを用いて説明する。
なお、ステップS310(探索状態作成)は、ここではステップS312(頻出構造パターン探索)の前で行ったが、構成によってステップS310はステップS312の処理の中に組み込むこともできる。
【0051】
図4は、本実施の形態による頻出構造パターン探索の処理例を示したフローチャートである。ここで2種類の探索を行っている。つまり、第1の探索である下位探索(ステップS404)と第2の探索である横枝探索(ステップS410)である。
また、下位探索処理(ステップS404)は、複数の木構造データ内で複数回現れる構造パターンの探索を、前記木構造データ内の現在の処理対象となっているノードより下位のノードに対して行う。
そして、横枝探索処理(ステップS410)では、前記構造パターンの探索を、前記木構造データ内の現在の処理対象となっているノードより上位のノードであって、その上位のノードの下位にあり、かつ未探索のノード毎に行う。
下位探索処理と横枝探索処理では、探索の対象とすべきノードがなくなった場合に、その探索を始めた元のノードに戻るようにしている。
【0052】
ステップS402(構造パターン情報出力)では、その時点での探索状態ノードの構造パターン木のデータを出力する。この出力の手前で予め定められた基準にしたがって、出力するか否かの判定を行ってもよい。
【0053】
ステップS404(下位探索)では、子孫方向に頻出する部分構造を探索する。この下位探索を行うときに、構造パターン内の現在の処理対象である現処理対象となっているノードと一致する前記木構造データ内のノード(ノードの間で上下関係があるものについては最上位のノード)に基づいて、子孫を探索する範囲を決定するようにしており、下位探索処理は、その決定された範囲に基づいて探索を行う。なお、ステップS404については、図5に示すフローチャートを用いて説明する。
そして、下位探索とは別に親ノードや先祖ノードから横方向に部分構造を探索する、横枝探索(ステップS410)の繰り返し処理が行われる。この横枝探索を行うときに、構造パターン内での親ノードと一致する前記木構造データ内のノード(ノード間で上下関係のあるものについては最上位のノード)及び前記構造パターン内での子ノードと一致する前記木構造データ内のノード(ノード間に上下関係があるときには最下位のノード)に基づいて、探索範囲を決定するようにしており、横枝探索処理は、その決定された範囲に基づいて探索を行う。
なお、この繰り返し処理中のステップS406(横枝探索箇所残りあり?)や、ステップS408(横枝探索箇所選択)は、パターン木中にノードが複数ある方が説明しやすいため、これらのステップの説明は後で行う。ステップS410(横枝探索)も別途後述する。
【0054】
図5は、本実施の形態による下位探索の処理例を示したフローチャートである。
ステップS502(下位探索範囲情報準備)では、子孫ノードの探索範囲の準備を行う。このステップでは、具体的には各構造データに対して子孫ノードを探索する範囲を指定する。ここではその指定をEpRangeにより行う例を示す。
パターン中のノードをラベルAで選び、そのときの探索状態ノードは図15に示すようになる。このとき、例えば、Tr1においてラベルAの子孫の候補は、Tr1 1521に基づいて、v0Tr1の子孫、あるいはv2Tr1の子孫、あるいはv4Tr1の子孫、あるいはv12Tr1の子孫である。
【0055】
v0Tr1の子孫はEpRange(v0Tr1)=[1,6]の範囲にあり、v2Tr1の子孫はEpRange(v2Tr1)=[1,3]の範囲にあり、v4Tr1の子孫はEpRange(v4Tr1)=[1,2]の範囲にあり、v12Tr1の子孫はEpRange(v12Tr1)=[4,5]の範囲に存在する。
【0056】
下の条件全て((1)と(2))を満たすノードは先祖にラベルAを持つノードが存在する。
(1)EpRange(v0Tr1)=[1,6],EpRange(v2Tr1)=[1,3],EpRange(v4Tr1)=[1,2],EpRange(v12Tr1)=[4,5]のいずれかのEpRangeの範囲にある。
(2)v0Tr1,v2Tr1,v4Tr1,v12Tr1のいずれのEpRangeも、そのノードのEpRangeよりも広いものが存在しないなら、同じEpRangeを持つものでより上位のものが存在する。
ただし、前述の2つの条件は、本実施の形態で用いた構造情報の管理方法において、重複なく子孫ノードを列挙する際の一方法のための条件である。パターンに対応する出現情報から、全ての子孫ノード候補を列挙できるのであれば他の方法を用いても構わない。
【0057】
前述の条件にしたがって、子孫ノードを列挙する一方法を示す。
まず各構造データ(例では、Tr1,Tr2,Tr3)毎に出現データのEpRangeの包含関係を調べ、他のEpRangeに含まれないものだけを残す。なお、EpRangeが同じであれば、同じEpRangeLを持つものの間でつけた番号がより小さいものを残す。この処理により、Tr1ではv0Tr1、Tr2ではv1Tr2、Tr3ではv0Tr3がそれぞれ残る。
【0058】
これらの出現情報をもとに子孫ノードの探索を行う。
ノードAからの子孫ノードの探索例は、Tr1ではv1Tr1以下全てのノード、Tr2ではv2Tr2以下全てのノード、Tr3ではv3Tr3以下全てのノードとなる。
この走査の過程で、ステップS504(要素の出現を集計)において、各ラベル毎に出現情報が集計され集められる。
この段階でも頻出と判定されるラベルはA,B,C,D,Fとなる。
【0059】
次にこれらの頻出ラベルのそれぞれを処理対象要素と選んだ処理が、それぞれステップS506(頻出要素処理終了?)によって繰り返される。
例えば、ステップS508(処理対象要素選択)で、Bを選んだとして説明を行う。このときのBの出現情報は、図17に示すように、Tr1の出現情報1710内のv1Tr1、v3Tr1、v6Tr1、v11Tr1、v13Tr1、Tr2の出現情報1720内のv2Tr2、v4Tr2、v7Tr2、v12Tr2、Tr3の出現情報1730内のv2Tr3、v10Tr3となる。
【0060】
そして、次にステップS510(探索状態作成・更新)の処理を行う。つまり、ここでは、構造パターン内の現在の処理対象となっているノードの先祖のノードの出現箇所から、その現在の処理対象となっているノードの出現箇所のノードを子孫に含むノードに対応する出現箇所を保持するようにしている。
構造パターン木のルートノードAの下にBが子供のノードとしてついたパターンを登録し、構造パターン木の中の現在位置情報はBの位置を指す。また、出現情報として図17に示す出現情報1710、出現情報1720、出現情報1730を登録して、図18の例に示すように探索状態ノードを作成して探索状態管理モジュール260に登録する。つまり、図18の例に示す探索状態ノードは、構造パターン木1810にラベルAのノードの下にラベルBのノードを有している構造パターン木とその構造パターン木の中の現在の位置情報(ラベルBのノード)を記憶しており、出現情報1820に図17に示したものと同様のTr1 1821、Tr2 1822、Tr3 1823を記憶しており、さらに、変更情報スタック1830に変更情報1831を記憶している。
【0061】
ここでの探索状態は、図19の例に示すようになる。つまり、図19の例に示す探索状態は、探索状態ノード(A)1910下に探索状態ノード(A[B])1920が接続されている。
【0062】
そして、探索状態の更新を行う。具体的には、登録した探索状態ノードから順に上位の探索状態ノードを辿り、下位の探索状態ノードに登録されている出現位置を一つも含まない出現情報をいったん削除して変更情報スタック1830に格納する。
この例の状態では、下位の探索状態ノードがA[B]、上位の探索状態ノードがAであり、探索状態ノードA[B]の出現情報を一つも範囲に含まないものを探索状態ノードAの出現情報から移動して、変更情報スタック1830に格納する。ここでは、この条件に該当する出現情報が、探索状態ノードAにないため、なにもしない。もし、構造パターン木中の先祖方向の木の状態を更新した場合には、その更新した出現状態ノードの情報を上位方向の更新を開始する際の探索状態ノード(この場合探索状態ノードA[B])の変更情報スタック1830に格納する。
【0063】
そして、再帰的にステップS512(頻出構造パターン探索)の処理に入る。
頻出構造パターン探索処理では、構造パターン情報の出力処理において、予め定められた条件にしたがって、構造パターン木の情報A[B]が出力される。次に、同様に下位探索に入る。
次の下位探索の処理では、Bの出現情報からの探索範囲は下のノードの子孫を探索することになる。すなわち、Tr1ではv1Tr1とv11Tr1の子孫、Tr2ではv2Tr2とv7Tr2の子孫、Tr3ではv2Tr3の子孫の探索である。
この範囲で探索すると、例えばv10Tr1,v15Tr1,v6Tr2,v11Tr3などは探索の範囲にはいってこないなど、探索範囲が狭められてくるが、この段階ではまだ頻出ノードはA,B,C,D,Fのままである。
【0064】
次に、ここでラベルCのノードが選ばれたとする。すると、Cの出現情報はv8Tr1、v14Tr1、v5Tr2、v8Tr2、v13Tr2、v3Tr3、v9Tr3となる。この結果探索状態ノードは図20に示すようになり、探索状態は図21に示すようになる。つまり、図20の例に示す探索状態ノードは、構造パターン木2010にラベルAのノードの下にラベルBのノード、そのラベルBのノードの下にラベルCのノードを有している構造パターン木とその構造パターン木の中の現在の位置情報(ラベルCのノード)を記憶しており、出現情報2020にTr1 2021、Tr2 2022、Tr3 2023を記憶しており、さらに、変更情報スタック2030に変更情報2031を記憶している。図21に示す探索状態は、探索状態ノード(A)1910の下に探索状態ノード(A[B])1920が接続され、探索状態ノード(A[B])1920の下に探索状態ノード(A[B[C]])2130が接続されている。
【0065】
そして、探索状態ノードの上位のものの更新が行われる。図20に示すCの出現情報2020を下位に持たない、すなわちEpRangeが図20のCのTr1 2021、Tr2 2022、Tr3 2023の出現情報のいずれよりも大きくない、あるいは同じであったとしても番号が大きいものは、変更情報2031に加えられて変更情報スタック2030に格納される。
この場合、v6Tr1、v13Tr1、v4Tr2、v12Tr2、v10Tr3を変更情報2031に登録して、変更情報スタック2030に格納する。その結果探索状態ノードA[B]は、図22に示すように更新される。つまり、図22の例に示す探索状態ノードは、構造パターン木2210にラベルAのノードの下にラベルBのノードを有している構造パターン木とその構造パターン木の中の現在の位置情報(ラベルBのノード)を記憶しており、出現情報2220にTr1 2221、Tr2 2222、Tr3 2223を記憶しており、さらに、変更情報スタック2230に変更情報2231、変更情報2232を記憶している。そして、この更新した情報を、更新の原因となった探索状態ノードA[B[C]]の変更情報2231に格納する。
【0066】
そして、下位の探索状態ノードA[B]が更新されたので、その上位の探索状態ノードAの更新検査を行う。この場合、出現情報のうちv4Tr1、v12Tr1、v3Tr2、v9Tr2、v11Tr2、v8Tr3が下位に該当するBを持たなくなるため、出現情報からはずされて変更情報スタックに移動される。そして、この更新した情報を、更新の原因となった探索状態ノードA[B[C]]の変更情報に格納する。この探索状態ノードAの更新結果を図23に示す。つまり、図23の例に示す探索状態ノードは、構造パターン木2310にラベルAのノードを有している構造パターン木とその構造パターン木の中の現在の位置情報(ラベルAのノード)を記憶しており、出現情報2320にTr1 2321、Tr2 2322、Tr3 2323を記憶しており、さらに、変更情報スタック2330に変更情報2331、変更情報2332を記憶している。そして、この更新した情報を、更新の原因となった探索状態ノードA[B[C]]の変更情報2231に格納する。
【0067】
次に、続けて頻出構造パターン探索(ステップS512)に入る。この段階でもラベルCを持つノードの下に頻出ラベルは見つけることができるが、同じ処理の流れの繰り返しとなるので、下位探索の処理は再帰的な実行が終了して次の処理に進んだところを説明する。
【0068】
図4に示すフローチャートでのステップS406(横枝探索箇所残りあり?)以降の処理(ステップS406〜ステップS410)は、探索状態を上位方向に探索状態ノードを辿る処理となる。登録した一番新しい探索状態ノードから親探索状態ノードの方向に辿り、親子関係のペア毎に横枝探索の処理(ステップS410)が実行されることになる。
この例では、探索状態は図21に示すように、3つの探索状態ノードからなっており、探索状態ノード(A)1910の下に探索状態ノード(A[B])1920が接続されており、探索状態ノード(A[B])1920の下に探索状態ノード(A[B[C]])2130が接続されており、2段階の親子関係が構成されている。このため、このループは探索状態ノードA[B]と探索状態ノードA[B[C]]の間の親子関係と、探索状態ノードAと探索状態ノードA[B]の間の親子関係について実行される。
この処理は、望ましくは探索状態ノードの下位から上位への順で行う。ここでは、まず探索状態ノードA[B]と探索状態ノードA[B[C]]の間の親子関係に対する処理を説明する。すなわち横枝探索箇所としてこの探索状態ノードの親子関係が選ばれたものとする(ステップS408)。
【0069】
そして、ステップS410(横枝探索)の処理に入る。
図7に、横枝探索の処理例のフローチャートを示す。
横枝探索処理では、まずステップS702(横枝探索範囲情報準備)の処理を実行する。この処理は具体的には、選択された探索状態ノードの親子関係の間、ここでの例では、探索状態ノードA[B]と探索状態ノードA[B[C]]の間で横枝探索範囲情報を準備する。
【0070】
この処理は、上位の探索状態ノードの出現情報から、EpRangeが他の出現情報のEpRangeに包含されないものを選び、それぞれのEpRangeについて、下位の探索状態ノードの出現情報の中から上位のEpRangeにEpRangeが含まれるものの中でEpRangeRが最小のものを選び(以降、下位最左EpRangeとよぶ)、この選ばれた下位のEpRangeのEpRangeR(下位最左EpRangeのEpRange)と上位EpRangeのEpRangeで横枝探索範囲を算出する。
【0071】
例えば、Tr1では上位探索状態ノードの出現情報のうち、v3Tr1のEpRangeはv1Tr1のEpRangeに包含される(同じEpRangeの場合には一番右の番号が小さいものが番号の大きいものを包含するとして説明する。ただしEpRangeは同じなので逆としても結果に影響はない)。このため、上位探索状態ノードのEpRangeはv1Tr1とv11Tr1のEpRangeとなる。v1Tr1に対応する下位探索状態ノードの出現情報は、v8Tr1のEpRangeとなる。したがって、この場合の上位EpRangeは、EpRange(v1Tr1)=[1,3]で下位最左EpRangeはEpRange(v8Tr1)=[2,2]となる。その結果、v1Tr1についての探索範囲は[2+1,3]、すなわちEpRange[3,3]となる。
【0072】
また、もう一方のv11Tr1のEpRangeについては下位探索状態ノードの出現情報はv14Tr1のEpRangeとなる。上位EpRangeはEpRange(v11Tr1)=[4,5]で下位最左EpRangeはEpRange(v14Tr1)=[5,5]となる。その結果、v11Tr1についての探索範囲は[5+1,5]となり、矛盾した範囲となるため対応する探索範囲はないということになる。この結果、Tr1についての探索範囲はEpRange[3,3]だけとなる。同様にTr2については上位、v7Tr2のEpRangeと、これに対応する下位最左EpRange、v13Tr2のEpRangeとの間でEpRange[5:5]が横枝の探索範囲となる。Tr3については上位、v2Tr3のEpRangeと、これに対応する下位最左EpRange、v9Tr3のEpRangeとの間でEpRange[4:4]が横枝の探索範囲となる。
【0073】
これらの探索範囲にしたがって、それぞれの木構造データを探索する(ステップS704〜ステップS714)。本実施の形態では、この探索処理を効率よく行う一方法として図11、図12、図13のデータ構造を用いる方法を示している。他のデータ構造と処理方法を用いて、この探索処理を行ってもよいが、少なくともこの方法を用いることで、各木構造データからEPathの範囲を指定したノードの探索を容易に実現することができる。
【0074】
Tr1からはEpRange[3,3]で探索すると、v9Tr1だけが探索範囲となる。出現するラベルはFである。Tr2からはEpRange[5,5]で探索すると、v14Tr2とv15Tr2だけが探索範囲となる。出現するラベルはGとFである。Tr3からはEpRange[4,4]で探索すると、v10Tr2だけが探索範囲となる。出現するラベルはBである。このときの頻出となるラベルはFだけとなる(ステップS704)。
【0075】
このラベルFを選択して(ステップS708)、探索状態作成・更新の処理(ステップS710)を行う。また、ステップS710では、構造パターン内の現在の処理対象となっているノードの先祖のノードの出現箇所から、その現在の処理対象となっているノードの出現箇所のノードを子孫に含むノードに対応する出現箇所を保持するようにしている。
図24に示す前述のFの出現情報を用いて探索状態ノードを作成して、探索状態に登録する。このときの探索状態を図25に示す。つまり、図24の例に示す探索状態ノードは、構造パターン木2410にラベルAのノードの下にラベルBのノード、そのラベルBのノードの下にラベルCのノードとラベルFのノードを有している構造パターン木とその構造パターン木の中の現在の位置情報(ラベルFのノード)を記憶しており、出現情報2420にTr1 2421、Tr2 2422を記憶しており、さらに、変更情報スタック2430に変更情報2431を記憶している。また、図25に示す探索状態は、4つの探索状態ノードからなっており、探索状態ノード(A)1910の下に探索状態ノード(A[B])1920が接続されており、探索状態ノード(A[B])1920の下に探索状態ノード(A[B[C]])2130と探索状態ノード(A[B[CF]])2540が接続されている。このとき探索状態ノードA[B[CF]]は、横枝の探索時に親側の探索状態ノードとして選んだ探索状態ノードA[B]の子供ノードとして関係付けられる。
【0076】
次に、この探索状態ノードA[B[CF]]を登録したことによる影響を調べて探索状態ノードの更新を行う。
このとき、更新が必要であるかどうかを調べる探索状態ノードは、探索状態ノードA[B[CF]]の先祖である探索状態ノードである。具体的には、探索状態ノードA[B]と探索状態ノードAである。この場合、探索状態ノードA[B]を検査した段階で更新が必要ないことがわかるので、探索状態ノードの更新は行われない。
【0077】
そして、さらに頻出構造パターン探索(ステップS712)に移行する。
頻出構造パターン探索では、パターン候補A[B[CF]]について、必要であれば出力処理を行い、下位探索の処理を行う。
ここでの下位探索においては、頻出となるラベルが存在しないためすぐに下位探索処理から戻ってくる。
次に、横枝探索の繰り返し処理が行われる。このときの横枝探索の候補となる探索状態ノードの親子関係は、探索状態ノードA[B[CF]]と探索状態ノードA[B]の間の関係、探索状態ノードAと探索状態ノードA[B]の間の関係の二通りとなる。
この処理の流れは既に説明した。
しかし、ここではいずれの探索状態ノードの親子関係においても頻出となるラベルが現れない。
【0078】
そして、この探索状態ノードA[B[CF]]における処理が終わる。これにより探索状態ノードA[B[CF]]に対応する頻出構造パターン探索の処理が終わり、上位の処理の流れに戻る。この場合には、横枝探索の処理に戻る。そして次のステップの探索状態回復の処理(ステップS714)が行われる。
【0079】
この探索状態回復の処理(ステップS714、ステップS514)について説明する。
探索状態ノードA[B[CF]]の変更情報スタックを参照する。ここに更新した探索状態ノードA[B],Aが記録されている。
この両方の探索状態ノードについて、それぞれ探索状態スタックのトップの変更情報をもとに探索状態ノードの回復処理を行う。具体的には、探索状態ノードA[B]の場合には、出現情報のv6Tr1,v13Tr1,v4Tr2,v12Tr2,v10Tr3を出現情報として戻す。戻した結果は、図22に示したものと同じになる。同様に処理して、探索状態ノードAも図23に示したものと同じになる。
以上に示したように、処理を再帰的に実行していくことで予め指定された出現数以上の全ての先祖−子孫関係の木構造を抽出することができる。
【0080】
図6に示すフローチャートを用いて、子孫ノードの走査処理について説明する。
ステップS602では、上位の出現情報の処理が終了しているか否かについて判断する。かかる判断において、終了していると判断した場合は子孫ノードの走査処理を終了し(ステップS612)、終了していないと判断した場合はステップS604へ進む。
ステップS604では、出現情報を一つ選択する。
【0081】
ステップS606では、ステップS604で選択した出現情報のEpRangeL,EpRangeRを、それぞれEpRangeLP,EpRangeRPとする。
ステップS608では、出現情報のEpRangeLがEpRangeLPと同じものを出現情報の次の番号から走査する。
ステップS610では、EpRangeLP+1からEpRangeRPまでの範囲で、EpRangeRの値がEpRangeRP以下のものを走査する。
【0082】
なお、本実施の形態で示した例では、EpRangeが同じ出現情報も皆同等に扱ったが、EpRange(つまり、分岐がない範囲)が同じ出現情報は一つ(つまり、最上位と最下位のノード)を代表として扱って処理しても全く同等の効果が得られ、記憶しておく出現情報の量が減る分必要な記憶容量が削減され、さらに、検査などの処理のコストも削減される。つまり、木構造内で分岐のない範囲の最上位及び最下位以外の出現箇所を探索状態管理モジュール260から削除するようにしてもよい。あるいは、探索状態管理モジュール260に格納する前に選別してもよい、さらには、構造情報DB110に格納する時点でこの選別を行ってもよい。
【0083】
また、木構造のノードを深さ優先探索してノードに番号をつけ、そのノードの番号を持ってノードの子孫のノードの範囲を示す方法が知られている。このscopeと呼ばれる情報は、例えば図7に示すTr2のv7では、自分自身の番号7と子孫のノードのうち最も大きな番号を持ったノードの番号を用いて[7,15]と表わされる。
木構造から範囲を指定してノードを探索するために本実施の形態ではEpTreeを用いたが、代わりにこのscope情報を用いて探索する構成にすることも当業者に容易な変更の範囲である。scope情報は各ノードの子孫ノードの範囲を示す情報であるため、あるノードからの子孫の範囲を決定できる。また、横枝の探索時にも上位の出現情報のscope情報と下位の出現情報のscope情報を演算することが可能であり、本実施の形態の該当箇所に当てはめれば、横枝の探索範囲もscope情報を用いて決定することができる。
【0084】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図26に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。構造情報管理モジュール210、出現情報選択モジュール220、出現情報管理モジュール230、調査範囲処理モジュール240、探索処理モジュール250、探索状態管理モジュール260、抽出情報処理モジュール270等のプログラムを実行するCPU2601と、そのプログラムやデータを記憶するRAM2602と、本コンピュータを起動するためのプログラム等が格納されているROM2603と、補助記憶装置であるHD2604(例えばハードディスクを用いることができる)と、キーボード、マウス等のデータを入力する入力装置2606と、CRTや液晶ディスプレイ等の出力装置2605と、通信ネットワークと接続するための通信回線インタフェース2607(例えばネットワークインタフェースカードを用いることができる)、そして、それらをつないでデータのやりとりをするためのバス2608により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【0085】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図26に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図26に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えばASIC等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図26に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、情報家電、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
【0086】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【図面の簡単な説明】
【0087】
【図1】本実施の形態を好適に適用するシステムの概念構成例を示す説明図である。
【図2】本実施の形態の構成例についての概念的なモジュール構成図である。
【図3】本実施の形態による処理例を示したフローチャートである。
【図4】本実施の形態による頻出構造パターン探索の処理例を示したフローチャートである。
【図5】本実施の形態による下位探索の処理例を示したフローチャートである。
【図6】本実施の形態による子孫ノードの走査処理例を示したフローチャートである。
【図7】本実施の形態による横枝探索の処理例を示したフローチャートである。
【図8】対象とする木構造データの例を示す説明図である。
【図9】Epathの例を示す説明図である。
【図10】各ノードにおけるEpRangeの例を示す説明図である。
【図11】木構造データTr1のEpTreeの例を示す説明図である。
【図12】木構造データTr2のEpTreeの例を示す説明図である。
【図13】木構造データTr3のEpTreeの例を示す説明図である。
【図14】各木構造データにおけるラベルAの出現の例を示す説明図である。
【図15】探索状態ノードの例を示す説明図である。
【図16】パターンのルートノードにラベルAを選択した場合の探索状態の例を示す説明図である。
【図17】各木構造データにおけるラベルBの出現の例を示す説明図である。
【図18】ラベルAの子孫としてラベルBを選択した場合の探索状態ノードA[B]の例を示す説明図である。
【図19】ラベルAの子孫としてラベルBを選択した場合の探索状態の例を示す説明図である。
【図20】ラベルBの子孫としてラベルCを選択した場合の探索状態ノードA[B[C]]の例を示す説明図である。
【図21】ラベルBの子孫としてラベルCを選択した場合の探索状態の例を示す説明図である。
【図22】探索状態ノードA[B]の例を示す説明図である。
【図23】探索状態ノードAの例を示す説明図である。
【図24】探索状態ノードA[B[CF]]の例を示す説明図である。
【図25】探索状態A[B[CF]]の例を示す説明図である。
【図26】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【符号の説明】
【0088】
110…構造情報DB
120…情報収集装置
130…情報抽出装置
140…抽出情報管理装置
210…構造情報管理モジュール
220…出現情報選択モジュール
230…出現情報管理モジュール
240…調査範囲処理モジュール
250…探索処理モジュール
260…探索状態管理モジュール
270…抽出情報処理モジュール

【特許請求の範囲】
【請求項1】
複数の木構造内で複数回現れる構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより下位のノードに対して行う第1の探索手段と、
前記構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより上位のノードであって該上位のノードの下位にあり、かつ未探索のノード毎に探索する第2の探索手段
を具備し、
前記第1の探索手段と前記第2の探索手段は、探索の対象とすべきノードがなくなった場合に、該探索を始めた元のノードに戻る
ことを特徴とする情報処理装置。
【請求項2】
前記構造パターン内の現在の処理対象である現処理対象となっているノードと一致する前記木構造内でのノードのうち上下関係のあるものについては最上位のノードに基づいて、子孫を探索する範囲を決定する第1の探索範囲決定手段
をさらに具備し、
前記第1の探索手段は、前記第1の探索範囲決定手段によって決定された範囲に基づいて探索を行う
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記構造パターン内での親ノードと一致する前記木構造内でのノードのうち上下関係のあるものについては最上位のノード及び前記構造パターン内での子ノードと一致する前記木構造内でのノードに上下関係のあるものについては最下位のノードに基づいて、探索範囲を決定する第2の探索範囲決定手段
をさらに具備し、
前記第2の探索手段は、前記第2の探索範囲決定手段によって決定された範囲に基づいて探索を行う
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記構造パターン内の現在の処理対象となっているノードの先祖のノードの出現箇所の中から、該現在の処理対象となっているノードの出現箇所のノードを子孫に含むノードに対応する出現箇所を保持する保持手段
をさらに具備することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記木構造内で分岐のない範囲の最上位及び最下位以外の出現箇所を前記保持手段から削除する削除手段
をさらに具備することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記保持手段に保持させる出現箇所を対象とし、前記木構造内で分岐のない範囲の最上位及び最下位以外の出現箇所以外を削除したものを選別する選別手段
をさらに具備することを特徴とする請求項4に記載の情報処理装置。
【請求項7】
コンピュータを、
複数の木構造内で複数回現れる構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより下位のノードに対して行う第1の探索手段と、
前記構造パターンの探索を、前記木構造内の現在の処理対象となっているノードより上位のノードであって該上位のノードの下位にあり、かつ未探索のノード毎に探索する第2の探索手段
として機能させ、
前記第1の探索手段と前記第2の探索手段は、探索の対象とすべきノードがなくなった場合に、該探索を始めた元のノードに戻る
ことを特徴とする情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate