(57)【要約】【課題】部分木のマッチングを高速に行うことができる情報抽出装置等を提供すること【解決手段】情報抽出装置は、単語辞書と、テキストの各文の構文木を生成する解析部と、構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成部と、ルール条件構文木とアクションを含む情報抽出ルールを読み込み、検索条件のルール条件構文木からから親子インデックスと同形式の検索キーを生成し、この検索キーにより親子インデックスを検索してルール条件構文木と構文木のマッチングを行って構文木ＩＤから対象構文木を絞り込み、ノードＩＤ列を利用して構文木とルール条件構文木でノード間のマッピングを行うことにより、対象構文木から抽出対象を特定し、特定された対象に対してアクションを行う抽出部を有している。【選択図】図１
2008129662.tif 000002
【特許請求の範囲】
【請求項１】
単語と各単語の統語情報を記憶する単語辞書と、
前記単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析部と、
前記構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の前記構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成部と、
検索条件を表わすルール条件構文木と前記条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、前記検索条件のルール条件構文木からから前記親子インデックスと同形式の検索キーを生成し、この検索キーにより前記親子インデックスを検索して前記ルール条件構文木と前記構文木のマッチングを行って前記構文木ＩＤから対象構文木を絞り込み、前記ノードＩＤ列を利用して前記構文木と前記ルール条件構文木でノード間のマッピングを行うことにより、前記対象構文木から抽出対象を特定し、特定された対象に対して前記アクションを行う抽出部を有する情報抽出装置。
【請求項２】
前記単語辞書は、前記情報抽出ルールの前記検索条件となる属性情報を含むことを特徴とした請求項１に記載の情報抽出装置。
【請求項３】
前記親子インデックス生成部は、前記構文木の２個または３個のノードを一組として前記キーを生成することを特徴とした請求項１または請求項２に記載の情報抽出装置。
【請求項４】
前記抽出部は、２個のノードから成り３個のノードから成る検索キーに含まれる検索キーが生成された場合には、当該検索キーを前記マッチングに用いないことを特徴とした請求項１ないし請求項３のいずれかひとつに記載の情報抽出装置。
【請求項５】
前記抽出部は、前記検索キーが複数得られた場合には、すべての検索キーを含む前記構文木を前記対象構文木とすることを特徴とした請求項１ないし請求項４のいずれかひとつに記載の情報抽出装置。
【請求項６】
単語と各単語の統語情報を記憶する単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析工程と、
前記構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の前記構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成工程と、
検索条件を表わすルール条件構文木と前記条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、前記検索条件のルール条件構文木からから前記親子インデックスと同形式の検索キーを生成し、この検索キーにより前記親子インデックスを検索して前記ルール条件構文木と前記構文木のマッチングを行って前記構文木ＩＤから対象構文木を絞り込み、前記ノードＩＤ列を利用して前記構文木と前記ルール条件構文木でノード間のマッピングを行うことにより、前記対象構文木から抽出対象を特定し、特定された対象に対して前記アクションを行う抽出工程を有する情報抽出方法。
【請求項７】
前記単語辞書は、前記情報抽出ルールの前記検索条件となる属性情報を含むことを特徴とした請求項６に記載の情報抽出方法。
【請求項８】
前記親子インデックス生成工程では、前記構文木の２個または３個のノードを一組として前記キーを生成することを特徴とした請求項６または請求項７に記載の情報抽出方法。
【請求項９】
前記抽出工程では、２個のノードから成り３個のノードから成る検索キーに含まれる検索キーが生成された場合には、当該検索キーを前記マッチングに用いないことを特徴とした請求項６ないし請求項８のいずれかひとつに記載の情報抽出方法。
【請求項１０】
前記抽出工程では、前記検索キーが複数得られた場合には、すべての検索キーを含む前記構文木を前記対象構文木とすることを特徴とした請求項６ないし請求項９のいずれかひとつに記載の情報抽出方法。
【請求項１１】
コンピュータに、
単語と各単語の統語情報を記憶する単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析処理と、
前記構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の前記構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成処理と、
検索条件を表わすルール条件構文木と前記条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、前記検索条件のルール条件構文木からから前記親子インデックスと同形式の検索キーを生成し、この検索キーにより前記親子インデックスを検索して前記ルール条件構文木と前記構文木のマッチングを行って前記構文木ＩＤから対象構文木を絞り込み、前記ノードＩＤ列を利用して前記構文木と前記ルール条件構文木でノード間のマッピングを行うことにより、前記対象構文木から抽出対象を特定し、特定された対象に対して前記アクションを行う抽出処理を実行させる情報抽出プログラム。
【請求項１２】
前記単語辞書は、前記情報抽出ルールの前記検索条件となる属性情報を含むことを特徴とした請求項１１に記載の情報抽出プログラム。
【請求項１３】
前記親子インデックス生成処理では、前記構文木の２個または３個のノードを一組として前記キーを生成することを特徴とした請求項１１または請求項１２に記載の情報抽出プログラム。
【請求項１４】
前記抽出処理では、２個のノードから成り３個のノードから成る検索キーに含まれる検索キーが生成された場合には、当該検索キーを前記マッチングに用いないことを特徴とした請求項１１ないし請求項１３のいずれかひとつに記載の情報抽出プログラム。
【請求項１５】
前記抽出処理では、前記検索キーが複数得られた場合には、すべての検索キーを含む前記構文木を前記対象構文木とすることを特徴とした請求項１１ないし請求項１４のいずれかひとつに記載の情報抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報抽出に関し、特に部分木のマッチングに関する。
【背景技術】
【０００２】
現在、電子メール等、大量の電子化されたテキストデータがあふれており、それらを効率的に処理するための便利なツールが必要とされている。その１つが情報抽出技術であり、一般の文字列検索とは異なり、単語がもつ属性や単語間の係り受け関係等を条件にして、必要な部分を抽出（マーク）することができる。
特許文献１にはテキストを構文解析し開発者と製品の関係を抽出する例が記載されている。
【０００３】
【特許文献１】特開平７−８５０７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
情報抽出では単語間の係り受け関係も条件とすることができるが、構文解析結果に対する部分木のマッチングを行うため、抽出に時間がかかってしまう。
【０００５】
そこで、本発明は、部分木のマッチングを高速に行うことができる情報抽出装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報抽出装置は、単語と各単語の統語情報を記憶する単語辞書と、単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析部と、構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成部と、検索条件を表わすルール条件構文木と条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、検索条件のルール条件構文木からから親子インデックスと同形式の検索キーを生成し、この検索キーにより親子インデックスを検索してルール条件構文木と構文木のマッチングを行って構文木ＩＤから対象構文木を絞り込み、ノードＩＤ列を利用して構文木とルール条件構文木でノード間のマッピングを行うことにより、対象構文木から抽出対象を特定し、特定された対象に対してアクションを行う抽出部を有している（請求項１ないし請求項５）。
【０００７】
上記情報抽出装置によれば、親子インデックスを検索して検索キーにマッチするノードを含む構文木を対象構文木として特定する。そして、親子インデックスに含まれるノードＩＤ列によりノード間のマッピングを行い抽出対象を特定する。
そのため、部分木のマッチングに要する時間を削減することができる。
【０００８】
上記情報抽出装置において、単語辞書は、情報抽出ルールの検索条件となる属性情報を含むようにしてもよい（請求項２）。
【０００９】
上記情報抽出装置において、親子インデックス生成部は、構文木の２個または３個のノードを一組としてキーを生成するようにしてもよい（請求項３）。
【００１０】
上記情報抽出装置において、抽出部は、２個のノードから成り３個のノードから成る検索キーに含まれる検索キーが生成された場合には、当該検索キーをマッチングに用いないようにしてもよい（請求項４）。
【００１１】
上記情報抽出装置において、抽出部は、検索キーが複数得られた場合には、すべての検索キーを含む構文木を対象構文木とするようにしてもよい（請求項５）。
【００１２】
本発明の情報抽出方法は、  単語と各単語の統語情報を記憶する単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析工程と、構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成工程と、検索条件を表わすルール条件構文木と条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、検索条件のルール条件構文木からから親子インデックスと同形式の検索キーを生成し、この検索キーにより親子インデックスを検索してルール条件構文木と構文木のマッチングを行って構文木ＩＤから対象構文木を絞り込み、ノードＩＤ列を利用して構文木とルール条件構文木でノード間のマッピングを行うことにより、対象構文木から抽出対象を特定し、特定された対象に対してアクションを行う抽出工程により情報抽出を行う（請求項６ないし請求項１０）。
【００１３】
本発明の情報抽出プログラムは、コンピュータに、単語と各単語の統語情報を記憶する単語辞書を利用して情報抽出の対象となるテキストを１文ごとに形態素解析と構文解析を行い各文の構文木を生成する解析処理と、構文木から単語間の親子関係を抽出し、親子関係を表すキーを作成し、そのキーを構文木を特定する構文木ＩＤおよび親子関係を構成する単語の構文木におけるノードＩＤ列と対応づけて親子インデックスを生成する親子インデックス作成処理と、検索条件を表わすルール条件構文木と条件が満たされる場合のアクションを含む情報抽出ルールを読み込み、検索条件のルール条件構文木からから親子インデックスと同形式の検索キーを生成し、この検索キーにより親子インデックスを検索してルール条件構文木と構文木のマッチングを行って構文木ＩＤから対象構文木を絞り込み、ノードＩＤ列を利用して構文木とルール条件構文木でノード間のマッピングを行うことにより、対象構文木から抽出対象を特定し、特定された対象に対してアクションを行う抽出処理を実行させる（請求項１１ないし請求項１５）。
【００１４】
上記情報抽出方法と情報抽出プログラムによっても上記情報抽出装置と同様に課題を解決することができる。
【発明の効果】
【００１５】
第１の効果は、無駄な部分木のマッチング時間を削減できることである。
その理由は、単語間の親子関係を親子インデックスを用いて検索し、情報抽出の対象となる構文木を絞り込み、さらに対応するノードの情報を用いて、ルール条件構文木と対象構文木のノード間の対応づけを行うことによる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図１に本発明の一実施形態である情報抽出装置１のブロック図が記述されている。
情報抽出装置１は、例えばパーソナルコンピュータであり、解析部１１、親子インデックス作成部１２、抽出部１３、単語辞書１４を備えている。情報抽出装置１は、入力されたテキスト２１を抽出ルール２４に含まれる条件で検索し、条件に合致する部分に対して抽出ルール２４に含まれるアクションを実行し、抽出結果２５を出力する。
【００１７】
単語辞書１４は、自然言語で書かれたテキストを解析するための辞書であり、解析に必要な品詞等の統語情報が記録されている。その他、情報抽出ルールの条件となる属性情報（意味情報など）もこの辞書に入れることができる。
【００１８】
解析部１１は、テキスト２１に含まれる１文を入力とし、単語辞書１４を用いて形態素解析（単語への分解）を行い、さらに、構文解析（各単語の係り受けの決定）を行う。出力結果は、構文解析木または構文木と呼ばれ、単語をノードとする木構造を表現するデータである。解析結果２２には、解析部１１により生成された各文の構文木が格納される。
【００１９】
親子インデックス作成手部１２は、解析部１１により生成された構文木から単語の係り受け関係で親子関係にある単語のセットからキーを作成し、このキーと構文木ＩＤおよびキーを構成する単語のノードＩＤのセットと対応づける親子インデックス２３を作成し、記憶装置に格納する。
【００２０】
抽出部１３は、抽出ルール２４に係り受け関係が存在するとき、その係り受け関係から親子インデックス作成部１２と同じ形式で検索キーを作成し、親子インデックスを検索する。そして、その親子関係が存在する構文木を取得し、対応するノードIDを用いて、ルール条件木と構文木のノードの対応づけを行い、条件が満たされていればルールに従ったアクション（例えば抽出）を行う。
【００２１】
上記の各部は、情報抽出装置１のＣＰＵ(Central Processing Unit)がコンピュータプログラムを実行して情報抽出装置１のハードウェアを制御することにより実現される。
【００２２】
図１の全体図の各構成要素の動作を説明する。
解析部１１は、１文のテキストを入力として受け取る。単語辞書１４を利用して形態素解析、構文解析を行う。形態素解析、構文解析に関しては、既知の技術であるので詳細は省略する。結果として、入力文「彼が昨日カレーを食べた。」に対しては、図２に示されるような構文木を出力する。図２では、単語がひとつ割り当てられた楕円３１は単語ノード、二つのノードを結ぶ矢印３２は係り受け関係を示している。
図３は、同じ構文木をデータとして記述したものである。IDは各ノードのIDで、それを用いて親、子、次のノード間の関係を表現している。親は、親ノードのIDで、-1のときは親がないことを示す。子は、一番左の子ノードのIDで、-1のときは子がないことを示す。次は、右隣の兄弟のノード（共通のノードを親とするノード）のIDで、-1のときは右に兄弟がいないことを示す。また、各ノードの単語の属性として品詞と意味が記述されている。
解析部１４の出力データは、文毎にファイルに格納することとする。
【００２３】
次に、親子インデックス作成部１３の動作を説明する。構文木のデータを読み込み、親子関係にあるノードを最大３個を１組にしてキーを作成する。図３の構文木を例にとって説明する。「彼」の親に1とあるので、IDが1の「が」が「彼」の親であることが分かる。そこで、「彼\tが」（「\t」はタブを示す）という２個のノードを組にしたキーを作成できる。親子キーは、それぞれの単語の見出しをタブでつないだ文字列とする。キーに対応するデータレコードは、入力ファイル名（構文木ＩＤとして使用）と、キーになったノードのＩＤ列とする。この場合のノードＩＤは、「彼」が0、「が」が1なので、"0,1"である。最大３個のノードを組としたキーを作成するので、「が」の親をさらに調べる。「が」の親のところに5とあるので、IDが5の「食べる」が親であることが分かる。従って、「彼\tが\t食べる」という３個のノードを組にしたキーが作成できる。同様にして、次のノード「が」から同じことを繰り返す。入力ファイル名を1.outとすると表１に示すデータができあがる。
なお、親子インデックスは、４個以上のノードから構成するようにしてもよい。
【表１】
2008129662.tif 000003
【００２４】
各構文木ファイルに対して同じようなデータができあがり、１つのキーに対して複数データレコードが対応する可能性がある。キー部分は、ハッシュやＢＴＲＥＥ（Ｂ木）などを用いて、高速に検索ができ、かつ容易に追加等が行えるようにしておく。一般の単語辞書等とほぼ同じしくみで実現可能であるので、詳細の説明は省略する。
【００２５】
次に、抽出部１３の動作を説明する。図４は抽出ルールの例である。このルールは、「彼」が食べた料理をすべて抽出しようとするものである。コンディションは構文木の部分木となっている。この木から、親子インデックス作成部と同じ方法で親子関係のキーを作成する。ただし、ノード２（料理）のように、必ずしも単語の「見出し」を条件としないノードが存在するので、その部分はノードが存在しないものとして処理することとする。さらに、３個のノードを組としたキーが作成できた場合、それに含まれる２個のノードを組としたキーは不要なので削除する。その結果、
「彼\tが\t食べる」
「を\t食べる」
の２つのキーが得られる。これで、親子インデックスを検索すると、表２に示す構文木のファイル名とノードＩＤ列が得られる。
【表２】
2008129662.tif 000004
両方のキーが存在する解析木は、1.outと10.outなので、この２つの構文木を対象として詳細なマッチングを行えば良い。
【００２６】
ここでは、1.out(図３の解析木）で動作を解説する。まずルールのノードと構文木のノードの対応づけを行う。検索されたデータレコードに構文木の対応するノードＩＤが記述されているので、対象解析木をトラバースして、マッチングをとる必要はない。
まずは、「彼\tが\t食べる」を対応させる。検索されたデータレコードに「"1.out",0,1,5」とあるので、
ルールの「彼」(0)→構文木のノード0
ルールの「が」(1)→構文木のノード1
ルールの「食べる」(4)→構文木のノード5
と対応させることができる。次に、「を\t食べる」を対応させる。
ルールの「を」(3)→構文木のノード4
ルールの「食べる」(4)→構文木のノード5
このとき、以下の２つの条件をチェックする必要がある。
・同じノードＩＤをもつルールノードは、構文木でも同じノードIDに対応づけられる
・違うノードＩＤをもつルールノードは、構文木でも違うノードIDに対応づけられる
この場合、ルールの「食べる」は同じノード（ID=4)で、構文木上でも同じノード(ID=5)に対応づけられており、その他に同一ノードに対応づけられているものはないので、条件を満たしている。「彼がＡ定食を食べ、彼女がＢ定食を食べた」などという文があった場合、「を\t食べる」が２つ出てくるので、１箇所に対応づけるべきレコードが複数ある場合がある。そのような場合は、組み合わせを尽くして、上記の２つ条件を満たす対応づけを全て見つける必要がる。
【００２７】
次に、ルール上存在するノードで親子インデックスでまだ対応づけられていないノードを対応づける。すでに対応づけられているノードからたどっていけば容易に対応づけることができる。ルールノード(ID=2)は「を」の子供であり、「を」は構文木ノード(ID=4)に対応づけられている。図３より、「を」の一番左の子供は、ID=3で、ID=3のノードの次（右隣りの兄弟）は-1なので、ノード(ID=3)のみが対応することが分かる。子供が複数いる場合は、１つずつ選んで、それぞれの組み合わせを調べる必要がある。
この例の場合は、対応づけのパターンは、
ルールの「彼」(0)→構文木のノード0
ルールの「が」(1)→構文木のノード1
ルールの「」(2)→構文木のノード3
ルールの「を」(3)→構文木のノード4
ルールの「食べる」(4)→構文木のノード5
の１つのみである。
【００２８】
ノードの対応を取ったところで、次に属性条件をチェックする。ノード２に意味（料理）という条件がある。ノード２に対応する構文木でのノードは３であり、図３のデータを見ると、ノード３には意味（料理）という属性が付いているので条件が満たされている。従って、アクションを実行し、抽出結果として、ノード２に対応する構文木のノード３の単語「カレー」を出力する。同様に10.outが条件を満たせば、さらに「野菜炒め」などが出力され、「彼が食べた料理」の全リストが抽出される。
【００２９】
上記の実施例では、説明を簡単にするために、親子インデックスのキーを作成する際、「が」などの助詞も見出しに使用したが、通常、このような機能語は、抽象度の高い概念に置き換えられる。例えば、「が」→「動作主」、「を」→「対象」などである。親子インデックスのキーの作り方と抽出部１３が検索するときのキーの作り方が一貫していれば、特に単語の見出しを使う必要はなく、「彼\t動作主\t食べる」などとすることもでる。
【００３０】
次に、情報抽出装置１の効果について説明する。
第１の効果は、無駄なマッチング時間を削減することである。
その理由は、抽出部１３が、単語間の親子関係を親子インデックス作成部１２により作成された親子インデックスを用いて検索し、情報抽出の対象となる構文木を絞り込み、さらに対応するノードの情報を用いて、ルール条件木と構文木のノード間の対応づけを行うことによる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態である情報抽出装置の機能ブロック図である。
【図２】構文木の例を示す図である。
【図３】構文木のデータ形式の例を示す図である。
【図４】抽出ルールのデータ形式の例を示す図である。
【符号の説明】
【００３２】
１  情報抽出装置
１１  解析部
１２  親子インデックス作成部
１３  抽出部
１４  単語辞書
２１  テキスト
２２  解析結果
２３  親子インデックス
２４  抽出ルール
２５  抽出結果
【図１】
2008129662.tif 000005
【図２】
2008129662.tif 000006
【図３】
2008129662.tif 000007
【図４】
2008129662.tif 000008