(57)【要約】【課題】頻出部分グラフ抽出装置等を提供する。【解決手段】頻出部分グラフ抽出装置２０１において、入力受付部２０２は、親子枝と兄弟枝がノードの間に張られるＤＡＧの入力を受け付け、横方向枝選択部２０３は、ＤＡＧ内の親兄弟グラフに含まれる兄弟枝を横方向枝として抽出し、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択し、縦方向枝選択部２０４は、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択し、部分グラフ選択部２０５は、頻出横方向枝を含む親兄弟グラフを頻出縦方向枝で連結したものを頻出部分グラフとして選択し、出力部２０６は、選択された頻出部分グラフを、抽出の結果として出力する。【選択図】  図２
2004272627.tif 000002
【特許請求の範囲】
【請求項１】
入力受付部と、横方向枝選択部と、縦方向枝選択部と、部分グラフ選択部と、出力部と、を備える頻出部分グラフ抽出装置であって、
前記入力受付部は、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなる有向非循環グラフの情報の入力を受け付け、
前記横方向枝選択部は、当該有向非循環グラフ内の「部分グラフであって、２つの親子枝と、１つの兄弟枝とを有し、当該２つの親子枝の始点は一致し、当該２つの親子枝の一方の終点は当該１つの兄弟枝の始点に、当該２つの親子枝の他方の終点は当該１つの兄弟枝の終点に、それぞれ一致するもの（以下、「親兄弟グラフ」という。）」に含まれる兄弟枝を横方向枝として抽出し、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択し、
前記縦方向枝選択部は、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択し、
前記部分グラフ選択部は、
「当該有向非循環グラフ内の部分グラフであって、
０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、
当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードである
もの」を頻出部分グラフとして選択し、
前記出力部は、前記選択された頻出部分グラフを、抽出の結果として出力する
ことを特徴とするもの。
【請求項２】
請求項１に記載の頻出部分グラフ抽出装置であって、
前記横方向枝選択部は、当該有向非循環グラフ内の「複数の親兄弟グラフであって、これらに含まれる親子枝の始点は一致し、これらに含まれる親兄弟グラフの親子枝の一方もしくは両方は、これらに含まれる他の親兄弟グラフの親子枝と一致するもの（以下、「同値親兄弟グラフ」という。）」に含まれる兄弟枝の始点のうち他の兄弟枝の終点とならないものと、兄弟枝の終点のうち他の兄弟枝の始点とならないものと、を、始点および終点とする新たな枝（以下、「同値兄弟枝」という。）を、横方向枝としてさらに抽出する
ことを特徴とするもの。
【請求項３】
請求項２に記載の頻出部分グラフ抽出装置であって、
前記横方向枝選択部は、横方向枝としてさらに抽出される同値兄弟枝に、当該親兄弟グラフに含まれるノードの数に対応する情報を付加し、
前記出力部は、前記選択された頻出部分グラフに、同値兄弟枝が含まれる場合、当該同値兄弟枝に付加された情報を当該同値兄弟枝とともに出力する
ことを特徴とするもの。
【請求項４】
請求項１に記載の頻出部分グラフ抽出装置であって、
前記縦方向枝選択部は、当該有向非循環グラフ内の「複数の親子枝の列であって当該列に隣り合って配置される親子枝の前のものの終点と後のものの始点とは一致するもの（以下、「経路グラフ」という。）」の先頭の親子枝の始点と、末尾の親子枝の終点と、を、始点および終点とする新たな枝（以下、「同値親子枝」という。）を、縦方向枝としてさらに抽出する
ことを特徴とするもの。
【請求項５】
請求項４に記載の頻出部分グラフ抽出装置であって、
前記縦方向枝選択部は、縦方向枝としてさらに抽出される同値親子枝に、当該経路グラフに含まれるノードの数に対応する情報を付加し、
前記出力部は、前記選択された頻出部分グラフに、同値親子枝が含まれる場合、当該同値親子枝に付加された情報を当該同値親子枝とともに出力する
ことを特徴とするもの。
【請求項６】
入力受付工程と、横方向枝選択工程と、縦方向枝選択工程と、部分グラフ選択工程と、出力工程と、を備える頻出部分グラフ抽出方法であって、
前記入力受付工程では、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなる有向非循環グラフの情報の入力を受け付け、
前記横方向枝選択工程では、当該有向非循環グラフ内の「部分グラフであって、２つの親子枝と、１つの兄弟枝とを有し、当該２つの親子枝の始点は一致し、当該２つの親子枝の一方の終点は当該１つの兄弟枝の始点に、当該２つの親子枝の他方の終点は当該１つの兄弟枝の終点に、それぞれ一致するもの（以下、「親兄弟グラフ」という。）」に含まれる兄弟枝を横方向枝として抽出し、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択し、
前記縦方向枝選択工程では、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択し、
前記部分グラフ選択工程では、
「当該有向非循環グラフ内の部分グラフであって、
０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、
当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードである
もの」を頻出部分グラフとして選択し、
前記出力工程では、前記選択された頻出部分グラフを、抽出の結果として出力する
ことを特徴とする方法。
【請求項７】
コンピュータを、入力受付部、横方向枝選択部、縦方向枝選択部、部分グラフ選択部、および、出力部として機能させるプログラムであって、
前記入力受付部は、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなる有向非循環グラフの情報の入力を受け付け、
前記横方向枝選択部は、当該有向非循環グラフ内の「部分グラフであって、２つの親子枝と、１つの兄弟枝とを有し、当該２つの親子枝の始点は一致し、当該２つの親子枝の一方の終点は当該１つの兄弟枝の始点に、当該２つの親子枝の他方の終点は当該１つの兄弟枝の終点に、それぞれ一致するもの（以下、「親兄弟グラフ」という。）」に含まれる兄弟枝を横方向枝として抽出し、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択し、
前記縦方向枝選択部は、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択し、
前記部分グラフ選択部は、
「当該有向非循環グラフ内の部分グラフであって、
０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、
当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードである
もの」を頻出部分グラフとして選択し、
前記出力部は、前記選択された頻出部分グラフを、抽出の結果として出力する
ように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、頻出部分グラフ抽出装置、頻出部分グラフ抽出方法、ならびに、これらをコンピュータ上で実現するためのプログラムに関する。
【０００２】
【従来の技術】
近年、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）技術の普及に伴ない、構造化された文書の処理技術に注目が集まっている。ＸＭＬ文書は、木構造データや有向非循環グラフ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｇ  Ｇｒａｐｈ；ＤＡＧ）として見ることができる。このようなデータを、半構造データと呼ぶこともある。
【０００３】
【発明が解決しようとする課題】
そこで、このような半構造データには、種々の情報が含まれているため、出現頻度の高い部分構造を効率良く抽出する技術が求められている。抽出された結果は、他の用途に（たとえば、他の文書作成のためのテンプレートとして）利用するなど、種々の応用ができる。
【０００４】
本発明は、上記の課題を解決するもので、頻出部分グラフ抽出装置、頻出部分グラフ抽出方法、ならびに、これらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点に係る頻出部分グラフ抽出装置は、入力受付部と、横方向枝選択部と、縦方向枝選択部と、部分グラフ選択部と、出力部と、を備え、以下のように構成する。
【０００６】
すなわち、入力受付部は、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなる有向非循環グラフの情報の入力を受け付ける。
【０００７】
一方、横方向枝選択部は、当該有向非循環グラフ内の「部分グラフであって、２つの親子枝と、１つの兄弟枝とを有し、当該２つの親子枝の始点は一致し、当該２つの親子枝の一方の終点は当該１つの兄弟枝の始点に、当該２つの親子枝の他方の終点は当該１つの兄弟枝の終点に、それぞれ一致するもの（以下、「親兄弟グラフ」という。）」に含まれる兄弟枝を横方向枝として抽出し、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択する。
【０００８】
さらに、縦方向枝選択部は、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択する。
【０００９】
そして、部分グラフ選択部は、「当該有向非循環グラフ内の部分グラフであって、０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードであるもの」を頻出部分グラフとして選択する。
【００１０】
一方、出力部は、選択された頻出部分グラフを、抽出の結果として出力する。
【００１１】
また、本発明の頻出部分グラフ抽出装置において、横方向枝選択部は、当該有向非循環グラフ内の「複数の親兄弟グラフであって、これらに含まれる親子枝の始点は一致し、これらに含まれる親兄弟グラフの親子枝の一方もしくは両方は、これらに含まれる他の親兄弟グラフの親子枝と一致するもの（以下、「同値親兄弟グラフ」という。）」に含まれる兄弟枝の始点のうち他の兄弟枝の終点とならないものと、兄弟枝の終点のうち他の兄弟枝の始点とならないものと、を、始点および終点とする新たな枝（以下、「同値兄弟枝」という。）を、横方向枝としてさらに抽出するように構成することができる。
【００１２】
また、本発明の頻出部分グラフ抽出装置において、横方向枝選択部は、横方向枝としてさらに抽出される同値兄弟枝に、当該親兄弟グラフに含まれるノードの数に対応する情報を付加し、出力部は、選択された頻出部分グラフに、同値兄弟枝が含まれる場合、当該同値兄弟枝に付加された情報を当該同値兄弟枝とともに出力するように構成することができる。
【００１３】
また、本発明の頻出部分グラフ抽出装置において、縦方向枝選択部は、当該有向非循環グラフ内の「複数の親子枝の列であって当該列に隣り合って配置される親子枝の前のものの終点と後のものの始点とは一致するもの（以下、「経路グラフ」という。）」の先頭の親子枝の始点と、末尾の親子枝の終点と、を、始点および終点とする新たな枝（以下、「同値親子枝」という。）を、縦方向枝としてさらに抽出するように構成することができる。
【００１４】
また、本発明の頻出部分グラフ抽出装置において、縦方向枝選択部は、縦方向枝としてさらに抽出される同値親子枝に、当該経路グラフに含まれるノードの数に対応する情報を付加し、出力部は、選択された頻出部分グラフに、同値親子枝が含まれる場合、当該同値親子枝に付加された情報を当該同値親子枝とともに出力するように構成することができる。
【００１５】
本発明の他の観点に係る頻出部分グラフ抽出方法は、入力受付工程と、横方向枝選択工程と、縦方向枝選択工程と、部分グラフ選択工程と、出力工程と、を備え、以下のように構成する。
【００１６】
すなわち、入力受付工程では、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなる有向非循環グラフの情報の入力を受け付ける。
【００１７】
一方、横方向枝選択工程では、当該有向非循環グラフ内の「部分グラフであって、２つの親子枝と、１つの兄弟枝とを有し、当該２つの親子枝の始点は一致し、当該２つの親子枝の一方の終点は当該１つの兄弟枝の始点に、当該２つの親子枝の他方の終点は当該１つの兄弟枝の終点に、それぞれ一致するもの（以下、「親兄弟グラフ」という。）」に含まれる兄弟枝を横方向枝として抽出し、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択する。
【００１８】
さらに、縦方向枝選択工程では、当該有向非循環グラフ内の親子枝を縦方向枝として抽出し、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択する。
【００１９】
そして、部分グラフ選択工程では、「当該有向非循環グラフ内の部分グラフであって、０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードであるもの」を頻出部分グラフとして選択する。
【００２０】
一方、出力工程では、選択された頻出部分グラフを、抽出の結果として出力する。
【００２１】
本発明の他の観点に係るプログラムは、コンピュータを、上記の頻出部分グラフ抽出装置として機能させ、または、コンピュータに、上記の頻出部分グラフ抽出方法を実行させるように構成する。
【００２２】
上記のプログラムは、ＣＤ−ＲＯＭやＦＤなどの各種の記録媒体に記録することができるほか、インターネットなどのコンピュータ通信網を介して配布することができる。
【００２３】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【００２４】
（情報処理装置の概要構成）
図１は、本発明のデータ構造が記録された記録媒体を処理して、本発明の統計装置ならびに検索装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、図１を参照して説明する。
【００２５】
情報処理装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理ユニット）１０２によって制御される。情報処理装置１０１に電源を投入すると、ＣＰＵ１０２は、ＲＯＭ１０３に記憶されたＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ；初期プログラムローダ）を実行する。
【００２６】
ＩＰＬは、ハードディスク１０４、ＦＤドライブ１１０に装着されたＦＤ、ＣＤ−ＲＯＭドライブ１１１に装着されたＣＤ−ＲＯＭなどの記録媒体に記憶されたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；オペレーティング・システム）プログラムを読み出して実行するプログラムである。
【００２７】
ＯＳを起動した後、ＣＰＵ１０２は、キーボード１０５やマウス１０６などにより入力されたユーザの指示にしたがって、あるいは、ハードディスクなどにあらかじめ記述された設定ファイルの内容にしたがって、ハードディスクなどに記憶されたアプリケーションプログラムを実行する。
【００２８】
当該アプリケーションプログラムを実行することにより、情報処理装置１０１は、記号列検索装置ならびに記号列格納装置として機能することとなる。ハードディスク１０４、ＦＤドライブ１１０に装着されたＦＤ、ＣＤ−ＲＯＭドライブ１１１に装着されたＣＤ−ＲＯＭなど記憶媒体に、本発明のミニマルトライデータ構造が記録されることになる。なお、情報処理装置１０１が記号列格納装置として機能する場合には、当該記憶媒体は書き込みが可能である必要があるため、ＣＤ−ＲＯＭを利用することはできない。
【００２９】
ＣＰＵ１０２は、これらのプログラムの実行の際に、ＲＡＭ１０７を一時的な作業用記憶領域として用いる。このほか、一時的な作業用記憶領域として、ＣＰＵ１０２内に設けられたレジスタやキャッシュ（図示せず）が使われる。
【００３０】
プログラムの実行に伴ない、ユーザに結果を報告したり、途中経過を見せるため、ＣＰＵ１０２は、液晶ディスプレイやＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などの表示装置１０８に当該情報を表示することができる。マウス１０６による指示操作では、マウス１０６を移動することにより、画面に表示されたカーソルが移動し、マウス１０６をクリックすることにより、カーソルが指すメニュー項目を選択することができる。
【００３１】
情報処理装置１０１は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）やモデムなどのインターフェース１０９を介してインターネットなどのコンピュータ通信網と通信を行うことができる。インターフェース１０９を介して受信した文書データを処理の対象としたり、処理した結果をインターフェース１０９を介して送信したり、インターフェース１０９を介して受信したプログラムを実行したり、などができる。
【００３２】
（発明の実施の形態）
図２は、本発明の実施形態の１つに係る頻出部分グラフの抽出装置の概要構成を示す模式図である。図３は、当該抽出装置にて実行される処理の制御の流れを示すフローチャートである。以下、これらの図を参照しつつ説明する。
【００３３】
抽出装置２０１は、入力受付部２０２と、横方向枝選択部２０３と、縦方向枝選択部２０４と、部分グラフ選択部２０５と、出力部２０６と、を備える。
【００３４】
まず、入力受付部２０２は、複数のノードと、これらのノード間に張られる２種類の有向枝（以下、一方を「親子枝」、他方を「兄弟枝」という。）と、からなるＤＡＧの情報の入力を受け付ける（ステップＳ３０１）。図４は、ここで入力を受け付けられるＤＡＧの例を示す説明図である。以下、本図を参照して説明する。
【００３５】
グラフ４０１は、木構造に類似した構造を持っており、ノード４０２が階層的に配置されており、ノード４０２の間には、親子枝４０３と、兄弟枝４０４と、が張られている。また、ノード４０２は、全体として親子枝４０３もしくは兄弟枝４０４で連結されており、孤立したノードは存在しない。
【００３６】
親子枝４０３は、図中では、上下関係（傾斜した線）によって表現されており、親子枝４０３の上側にあるノード４０２を「親ノード」と呼び、下側にあるノード４０２を「子ノード」と呼ぶ。また、あるノード４０２から親子枝４０３を上向きにたどったときに経由するノードを「先祖ノード」と呼び、下向きにたどったときに経由するノードを「子孫ノード」と呼ぶ。さらに、すべてのノード４０２の先祖を「根ノード」と呼ぶ。
【００３７】
兄弟枝４０４は、同じ親ノードを有する子ノード同士の間に張られており、図中では、水平な矢印によって表現されている。矢印の出発点のノード４０２を「兄ノード」と呼び、終着点のノード４０２を「弟ノード」と呼ぶ。尚、同じ親ノードを有する子ノード同士の間であっても、兄弟枝４０４が張られていないものがある。
【００３８】
ついで、横方向枝選択部２０３は、当該ＤＡＧ内から親兄弟グラフに含まれる兄弟枝を横方向枝として抽出する（ステップＳ３０２）。
【００３９】
図５に示すように、親兄弟グラフ５０１とは、「部分グラフであって、２つの親子枝４０３と、１つの兄弟枝４０４とを有し、当該２つの親子枝４０３の始点は一致し、当該２つの親子枝４０３の一方の終点は当該１つの兄弟枝４０４の始点に、当該２つの親子枝４０３の他方の終点は当該１つの兄弟枝４０４の終点に、それぞれ一致するもの」をいう。
【００４０】
したがって、同じ親ノード５０２を有する子ノード５０３同士の間に兄弟枝４０４が張られている場合には、当該兄弟枝４０４が横方向枝となる。
【００４１】
たとえば、グラフ４０１においては、以下のような横方向枝が存在する。
６→３が１個
３→２が２個
１→２が２個
【００４２】
さらに、横方向枝選択部２０３は、当該抽出された横方向枝から、その始点と終点の組合せの出現頻度が所定の横方向閾値以上のものを頻出横方向枝として選択する（ステップＳ３０３）。たとえば、「所定の横方向閾値」として「２」を選択した場合、次の横方向枝が、頻出横方向枝として選択されることとなる。
３→２が２個
１→２が２個
【００４３】
ついで、縦方向枝選択部２０４は、当該ＤＡＧ内の親子枝を縦方向枝として抽出する（ステップＳ３０４）。グラフ４０１には、以下の縦方向枝がある。
７→３
７→２
３→６
３→３
３→２
２→５
２→３
６→３
６→２
５→１
５→２
３→１
３→２
【００４４】
そして、当該抽出された縦方向枝から、その始点と終点の組合せの出現頻度が所定の縦方向閾値以上のものを頻出縦方向枝として選択する（ステップＳ３０５）。たとえば、「所定の縦方向閾値」として「２」を選択した場合、次の縦方向枝が、頻出縦方向枝として選択されることとなる。
３→２が２個
【００４５】
そして、部分グラフ選択部２０５は、「当該ＤＡＧ内の部分グラフであって、０個以上の親兄弟グラフであって頻出横方向枝を含むものと、０個以上の頻出縦方向枝であって当該親兄弟グラフに含まれないものとからなり、それぞれの個数の和は１以上であり、当該頻出縦方向枝が１個以上であり、かつ、当該親兄弟グラフが１個以上である場合、当該頻出縦方向枝のそれぞれの始点もしくは終点は、当該親兄弟グラフに含まれるいずれかのノードであるもの」を頻出部分グラフとして選択する（ステップＳ３０６）。すなわち、頻出部分グラフとは、直観的には、
（ａ）「頻出横方向枝を含む親兄弟グラフ」を頻出縦方向枝で連結したもの。
（ｂ）「頻出横方向枝を含む親兄弟グラフ」であって上記（ａ）に含まれないもの。
（ｃ）頻出縦方向枝であって、上記（ａ）（ｂ）に含まれないもの。
である。
【００４６】
図６には、グラフ４０１における頻出横方向枝と、これを含む親兄弟グラフと、頻出縦方向枝と、を図示する。
【００４７】
グラフ４０１には、図６（ａ）に示すのように、頻出横方向枝６０１が４個（これを含む親兄弟グラフ６０２が４個）、頻出縦方向枝６０３が２個含まれている。
【００４８】
そして、頻出部分グラフ６０４は、図６（ｂ）に図示するように、２個含まれることとなる。尚、本例においては、頻出縦方向枝６０３がすべて頻出横方向枝６０１を含む親兄弟グラフ６０２に含まれている。
【００４９】
最後に、出力部２０６は、選択された頻出部分グラフを、抽出の結果として出力する（ステップＳ３０７）。
【００５０】
尚、上記実施形態では、所定の横方向閾値や縦方向閾値として定数を利用したが、このほかに、「発見された枝の総出現数に所定の定数を乗じた値」をこれらの閾値として採用しても良い。
【００５１】
このように、抽出装置２０１において実行される処理は、ＤＡＧに対する処理であるので、ＲＡＭ  １０７やＨＤ  １０４等に記憶されたＤＡＧを、上記のようにＣＰＵ  １０２が解析し、処理することによって、実現される。このように、本実施形態により、頻出部分グラフを抽出することができる。
【００５２】
（その他の実施の形態）
上記実施形態では、横方向枝として抽出されるものは兄弟枝に限られ、縦方向枝として抽出されるものは親子枝に限られていた。本実施形態は、これらをさらに拡張するものである。
【００５３】
すなわち、横方向枝選択部２０３は、当該ＤＡＧ内の「複数の親兄弟グラフであって、これらに含まれる親子枝の始点は一致し、これらに含まれる親兄弟グラフの親子枝の一方もしくは両方は、これらに含まれる他の親兄弟グラフの親子枝と一致するもの（以下、「同値親兄弟グラフ」という。）」に含まれる兄弟枝の始点のうち他の兄弟枝の終点とならないものと、兄弟枝の終点のうち他の兄弟枝の始点とならないものと、を、始点および終点とする新たな枝（以下、「同値兄弟枝」という。）を、横方向枝としてさらに抽出する。
【００５４】
言い換えれば、同値兄弟枝とは、兄弟枝を連結したものである。たとえば、グラフ４０１には、以下の同値兄弟枝がある。
６→３→２
【００５５】
頻出横方向枝の抽出の際には、横方向枝の始点と終点のみが考慮される。したがって、同値兄弟枝の中継ノードである３は考慮せず、６→２と同値であるとみなして、頻度を計算する。
【００５６】
なお、本例では、同値兄弟枝を考えた場合であっても、横方向閾値として２を採用した場合には、選択される頻出横方向枝は、上記の場合と同じである。
【００５７】
この際に、横方向枝選択部２０３は、横方向枝としてさらに抽出される同値兄弟枝に、当該親兄弟グラフに含まれるノードの数に対応する情報を付加してもよい。親兄弟グラフに含まれるノードの数は、連結された兄弟枝の数に２を加算したものである。また、ノードの数にかえて、同値と考える際のスキップの数を付加する情報としても良い。スキップの数とは、同値兄弟枝に沿ってノードを移動したときの、始点でも終点でもないノードの数をいう。したがって、「６→３→２」の場合、スキップの数は１である。
【００５８】
一方、縦方向枝選択部２０４は、当該ＤＡＧ内の「複数の親子枝の列であって当該列に隣り合って配置される親子枝の前のものの終点と後のものの始点とは一致するもの（以下、「経路グラフ」という。）」の先頭の親子枝の始点と、末尾の親子枝の終点と、を、始点および終点とする新たな枝（以下、「同値親子枝」という。）を、縦方向枝としてさらに抽出するように構成することができる。
【００５９】
たとえば、グラフ４０１には、以下の同値親子枝がある。
７→３→６
７→３→３
７→３→２
７→３→６→３
７→３→６→２
７→２→５
７→２→５→１
７→２→５→２
７→２→３
７→２→３→１
７→２→３→２
３→６→３
３→６→２
２→５→１
２→５→２
２→３→１
２→３→２
【００６０】
この際に、縦方向枝選択部２０４は、縦方向枝としてさらに抽出される同値親子枝に、当該経路グラフに含まれるノードの数に対応する情報を付加してもよい。当該経路グラフに含まれるノードの数は、連結された親子枝の数に１を加算したものである。この場合にも、上記と同様に、スキップの数を付加するのでも良い。
【００６１】
言い換えれば、同値親子枝とは、親子枝を連結したものである。そして、縦方向枝の抽出の際には、同値親子枝の始点と終点のみが考慮される。
【００６２】
これと、上記の親子枝とを合わせて考えたとき、「所定の縦方向閾値」として「５」を選択した場合には、頻出縦方向枝は、以下の５つとなる。
７→３→６→２
７→３→２
７→２
７→２→５→２
７→２→３→２
【００６３】
図７（ａ）には、この同値親子枝を太線で描き、さらに、スキップされるノードは経由しないように描いてある。また、同値親子枝には、スキップの数を添えて描いてある。
【００６４】
したがって、この場合に、抽出される頻出部分木は、図７（ｂ）に示すようなものとなる。これを出力部２０６から出力する際には、同値親兄弟グラフのノードの数や同値兄弟枝のスキップの数、同値親子枝のノードの数やスキップの数を一緒に出力することができる。
【００６５】
さらに、上記のような同値兄弟枝や同値親子枝において、スキップの数を制限して、頻出横方向枝や頻出縦方向枝として抽出するのでも良い。このほか、同値親子枝においては、その始点を根ノードに限定するのでも良い。たとえば、スキップの数を１に制限し、「所定の縦方向閾値」として２を採用し、同値親子枝の始点を根ノードに限定すると、頻出縦方向枝として、以下の２つが抽出される。
７→３
７→２→３
【００６６】
したがって、抽出される頻出部分木を、図７と同様に描けば、図８に示すようなものとなる。
【００６７】
このような頻出部分木を抽出する技術により、たとえば、蓄積されたＸＭＬ文書内に含まれる一定のパターンを抽出することができる。
【００６８】
このほか、上記実施形態に加えて、以下のような態様をさらに採用しても良い。
【００６９】
まず、上記実施形態では、ノードの出現頻度を、ノードの数に一致するものとしていたが、あらかじめ各ノードに重み情報を付加し、出現頻度は、この重み情報の総和によって得る、というものである。構造化文書にあらかじめこのような重み情報がノードに付されている場合等に対処するものである。
【００７０】
つぎに、親子グラフまたは兄弟グラフの各ノード間の親子枝または兄弟枝で、その何れかのノードの出現頻度が閾値以上であった場合に、そのノードの親、子、兄弟ノードも頻出部分グラフとして採用されるような特殊な枝を設定可能とするものである。すなわち、当該枝は切断されず、当該枝の始点や終点が頻出部分グラフとして抽出される場合は、当該枝ならびに当該枝に接続されるノードも頻出部分グラフとして抽出される、というものである。構造化文書においては、常に注目したい情報（上記の「切断されない枝」に相当する。）にマークを付けるなどの手法を利用することができるが、これに対応するものである。
【００７１】
また、上記実施形態においては、兄弟枝は方向性があるものとしたが、兄弟枝に「方向性があるもの」と「方向性がないもの（双方向のもの）」の２種類を設けることとしても良い。また、すべてを「双方向のもの」としても良い。すなわち、処理対象のグラフについて、同じ親を共有する兄弟枝のみについては循環を許す、というものである。この場合であっても、上記実施形態と同様の技術により、頻出部分グラフを抽出することができる。
【００７２】
【発明の効果】
以上説明したように、本発明によれば、頻出部分グラフ抽出装置、頻出部分グラフ抽出方法、ならびに、これらをコンピュータ上で実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の頻出部分グラフの抽出装置が実現される典型的な情報処理装置の概要構成を示す模式図である。
【図２】本発明の実施形態の１つに係る頻出部分グラフの抽出装置の概要構成を示す模式図である。
【図３】本発明の実施形態の１つに係る頻出部分グラフの抽出装置にて実行される処理の流れを示すフローチャートである。
【図４】頻出部分グラフの抽出装置にて処理されるＤＡＧの様子を示す説明図である。
【図５】親兄弟グラフの様子を示す説明図である。
【図６】抽出される頻出部分グラフの様子を示す説明図である。
【図７】抽出される頻出部分グラフの様子を示す説明図である。
【図８】抽出される頻出部分グラフの様子を示す説明図である。
【符号の説明】
１０１  情報処理装置
１０２  ＣＰＵ
１０３  ＲＯＭ
１０４  ＨＤ
１０５  キーボード
１０６  マウス
１０７  ＲＡＭ
１０８  表示装置
１０９  インターフェース
１１０  ＦＤドライブ
１１１  ＣＤ−ＲＯＭドライブ
２０１  抽出装置
２０２  入力受付部
２０３  横方向枝選択部
２０４  縦方向枝選択部
２０５  部分グラフ選択部
２０６  出力部
４０１  グラフ
４０２  ノード
４０３  親子枝
４０４  兄弟枝
５０１  親兄弟グラフ
５０２  親ノード
５０３  子ノード
６０１  頻出横方向枝
６０２  親兄弟グラフ
６０３  頻出縦方向枝
６０４  頻出部分グラフ
【図１】
2004272627.tif 000003
【図２】
2004272627.tif 000004
【図３】
2004272627.tif 000005
【図４】
2004272627.tif 000006
【図５】
2004272627.tif 000007
【図６】
2004272627.tif 000008
【図７】
2004272627.tif 000009
【図８】
2004272627.tif 000010