(57)【要約】【課題】テキスト情報のパターン照合を省メモリかつ計算効率高く実現するための情報処理装置、情報処理方法およびプログラムを提供すること。【解決手段】  本発明の情報処理装置１０は、それぞれ複数の制約から構成される１以上の制約パターン１５０から、各制約を遷移条件としたノード間の遷移エッジを定義付けて、順序付き木構造を生成する生成部６０と、各遷移エッジの遷移条件間の集合関係を判定して、ルートノードからの第１の部分構造Ｐに相似する第２の部分構造Ｋを探索する探索部７２と、第２の部分構造Ｋの末尾ノードｓＫｎから第１の部分構造Ｐの末尾の子ノードｓＰｎ＋１へ、集合関係から特定される不確定部分の満たすべき制約を付加した追加の遷移リンクを定義付ける遷移定義部７４とを含み、パターン照合のためのデータ構造１００を定義付ける。【選択図】図１
2010026689.tif 000002
【特許請求の範囲】
【請求項１】
パターン照合のためのデータ構造を定義付ける情報処理装置であって、
それぞれ複数の制約から構成される１以上の制約パターンから、各制約を遷移条件としたノード間の遷移エッジを定義付けて、順序付き木構造を生成する生成部と、
各遷移エッジの遷移条件間の集合関係を判定して、ルートノードからの第１の部分構造に相似する第２の部分構造を探索する探索部と、
前記第２の部分構造の末尾ノードから前記第１の部分構造の末尾の子ノードへ、前記集合関係から特定される不確定部分の満たすべき制約を付加した追加の遷移リンクを定義付ける遷移定義部と
を含む、情報処理装置。
【請求項２】
前記情報処理装置は、前記第２の部分構造の末尾ノードから、末尾が終了状態である前記第１の部分構造の末尾ノードへ、不確定部分の制約を条件とした参照リンクを定義付ける参照定義部をさらに含む、請求項１に記載の情報処理装置。
【請求項３】
前記探索部は、遷移条件が同値、被包含、包含または交差の関係にある遷移エッジによって接続されたノード列を、相似する部分構造として特定する、請求項１に記載の情報処理装置。
【請求項４】
前記遷移定義部は、前記第１の部分構造の末尾ノードからの遷移条件が、前記第２の部分構造の末尾ノードからの遷移条件に対し、被包含および同値のいずれの関係にも無かった場合に、前記追加の遷移リンクを定義づける、請求項１に記載の情報処理装置。
【請求項５】
前記探索部は、前記第１の部分構造のノードからの遷移条件が、前記第２の部分構造側の対応する遷移エッジに対し被包含または交差の関係にある場合に、該対応する遷移エッジを前記不確定部分として、該遷移条件の制約を該不確定部分の制約として記録する、請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置は、入力情報と、定義付けられた前記データ構造により表現される前記１以上の制約パターンとを照合するオートマトンを生成する、請求項１に記載の情報処理装置。
【請求項７】
前記制約パターンを構成する前記制約のそれぞれは、単語の文字列表現、正規形または品詞情報に対する１以上の制約の要素を含む、請求項１に記載の情報処理装置。
【請求項８】
パターン照合を実行する情報処理装置であって、
１以上の制約パターンを表現するデータ構造を記憶する記憶装置と、
前記データ構造を参照しながら入力情報と前記制約パターンとをパターン照合するオートマトンと
を含み、前記データ構造は、
前記１以上の制約パターンを構成する複数の制約をそれぞれ遷移条件として定義付けられ、順序付き木構造を構成するノード間の遷移エッジと、
ルートノードからの第１の部分構造に相似する第２の部分構造の末尾ノードから、該第１の部分構造の末尾の子ノードへ定義付けられた追加の遷移リンクであって、前記遷移エッジの各遷移条件間の集合関係に応じた不確定部分の満たすべき制約を遷移条件に含む該追加の遷移リンクと
を含む、情報処理装置。
【請求項９】
前記データ構造は、前記第２の部分構造の末尾ノードから、末尾が終了状態である前記第１の部分構造の末尾ノードへ定義付けられた参照リンクであって、不確定部分の制約を参照の条件とする該参照リンクをさらに含む、請求項８に記載の情報処理装置。
【請求項１０】
前記オートマトンは、前記データ構造を構成する各ノードを取り得る状態として、入力情報の部分構造に適合する遷移条件を検索して、状態を遷移させることによって、前記１以上の制約パターンと適合する前記部分構造を抽出する、請求項８に記載の情報処理装置。
【請求項１１】
請求項１に記載の情報処理装置によって定義付けられたパターン照合のためのデータ構造を記憶する記憶装置と、
前記データ構造を参照しながら入力情報と前記制約パターンとをパターン照合するオートマトンと
を含む、情報処理装置。
【請求項１２】
パターン照合のためのデータ構造を定義付ける方法であって、情報処理装置が、
それぞれ複数の制約から構成される１以上の制約パターンから、各制約を遷移条件としたノード間の遷移エッジを定義付けて、順序付き木構造を生成するステップと、
各遷移エッジの遷移条件間の集合関係を判定して、ルートノードからの第１の部分構造に相似する第２の部分構造を探索するステップと、
前記第２の部分構造の末尾ノードから前記第１の部分構造の末尾の子ノードへ、前記集合関係から特定される不確定部分の満たすべき制約を付加した追加の遷移リンクを定義付けるステップと
を実行する、情報処理方法。
【請求項１３】
前記情報処理装置が、さらに、前記第２の部分構造の末尾ノードから、末尾が終了状態である前記第１の部分構造の末尾ノードへ、不確定部分の制約を条件とした参照リンクを定義付けるステップを実行する、請求項１２に記載の情報処理方法。
【請求項１４】
入力情報とパターン照合する方法であって、情報処理装置が、
１以上の制約パターンを表現するデータ構造を参照して、前記制約パターンと前記入力情報とをパターン照合するステップを実行し、前記データ構造は、
前記１以上の制約パターンを構成する複数の制約をそれぞれ遷移条件として定義付けられ、順序付き木構造を構成するノード間の遷移エッジと、
ルートノードからの第１の部分構造に相似する第２の部分構造の末尾ノードから、該第１の部分構造の末尾の子ノードへ定義付けられた追加の遷移リンクであって、前記遷移エッジの各遷移条件間の集合関係に応じた不確定部分の満たすべき制約を遷移条件に含む該追加の遷移リンクと
を含む、情報処理方法。
【請求項１５】
前記照合するステップは、前記データ構造を構成する各ノードを取り得る状態として、前記入力情報の部分構造に適合する遷移条件を検索するステップと、オートマトンの状態を遷移させて、前記１以上の制約パターンと適合する前記部分構造を抽出するステップとを含む、請求項１４に記載の情報処理方法。
【請求項１６】
請求項１〜１１のいずれか１項に記載の各機能部をコンピュータに実現するためのコンピュータ実行可能なプログラム。
【請求項１７】
パターン照合のためのデータ構造を定義付ける情報処理装置であって、
それぞれ複数の制約から構成される１以上の制約パターンから、各制約を遷移条件としたノード間の遷移エッジを定義付けて、順序付き木構造を生成する生成部と、
各遷移エッジの遷移条件間の集合関係を判定して、ルートノードからの第１の部分構造に相似する第２の部分構造を探索する探索部と、
前記第２の部分構造の末尾ノードから前記第１の部分構造の末尾の子ノードへ、前記集合関係から特定される不確定部分の満たすべき制約を付加した追加の遷移リンクを定義付ける遷移定義部と、
前記第２の部分構造の末尾ノードから、末尾が終了状態である前記第１の部分構造の末尾ノードへ、不確定部分の制約を条件とした参照リンクを定義付ける参照定義部と
を含み、
前記探索部は、遷移条件が同値、被包含、包含または交差の関係にある遷移エッジによって接続されたノード列を、相似する部分構造として特定し、前記第１の部分構造のノードからの遷移条件が、前記第２の部分構造側の対応する遷移エッジに対し被包含または交差の関係にある場合に、該対応する遷移エッジを前記不確定部分として、該遷移条件の制約を該不確定部分の制約として記録し、
前記遷移定義部は、前記第１の部分構造の末尾ノードからの遷移条件が、前記第２の部分構造の末尾ノードからの遷移条件に対し、被包含および同値のいずれの関係にも無かった場合に、前記追加の遷移リンクを定義づけ、
前記制約パターンを構成する前記制約のそれぞれは、単語の文字列表現、正規形または品詞情報に対する１以上の制約の要素を含み、
入力情報と、定義付けられた前記データ構造により表現される前記１以上の制約パターンとを照合するオートマトンを生成する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自然言語解析技術に関し、より詳細には、テキスト情報のパターン照合を省メモリかつ計算効率高く実現するための情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータおよびインターネットなどの高速大容量通信基盤が普及してきたことから、膨大な数の非定型なテキスト情報が作成されて蓄積されるようになり、非構造化情報であるテキスト情報を活用することの重要性がますます高まっている。特に最近、テキスト情報を扱うために、自然言語解析処理を施して、種々の階層レベルの意味情報を抽出して活用しようとする技術の開発が活発である。
【０００３】
従来からの自然言語解析処理では、まず、例えば形態素解析など適切な文字列解析方法を使用して、日本語や中国語やタイ語など分かち書きの慣例の無い言語では単語などの単位に分割して、またフランス語やドイツ語など慣例上分かち書きされる言語ではそのまま、各単語に対して品詞等をタグ付け（Part-of-Speech Tagging）が行われる。続いて、複数の単語間の関係から、より上位の意味を表す意味表現が抽出される。
【０００４】
テキスト情報から意味表現を抽出しようとする場合、一般に、特定の応用目的に応じて求める情報が異なるため、抽出対象となる表現を辞書化した編集可能なパターンが定義されて提供される。定義されるパターンは、より具体的には、各単語の文字列表現、正規形および品詞情報に対する１以上の制約の配列によって、各単語に対する局所的な文法構造、より具体的には、単語の出現およびその順序を定義付ける。このような単語列のパターンを用いて抽出される意味情報としては、係り受け関係を挙げることができる。
【０００５】
以下、従来からの係り受け関係の抽出処理について、図１４を参照して説明する。例えば、図１４に示す「パソコンの設定を変更したら、インターネットに接続できなくなった。」という文章５００は、形態素解析により、「パソコン（名詞）」、「の（助詞）」、「設定（名詞）」、「を（助詞）」、「変更（名詞）」、「し（する／動詞）」、「たら（助動詞）」、「、（読点）」、・・・「でき（できる：動詞）」、「なく（助動詞）」、「なっ（動詞）」、「た（助動詞）」および「、（句点）」といった単語に分割され、各単語に品詞情報および、適宜、正規形などがタグ付けされ、形態素解析データ５０２が得られる。
【０００６】
得られた形態素解析データ５０２に対して、「（名詞）」「を｜に（助詞）」「（名詞）」「する｜できる（動詞）」という並びで定義された制約の配列パターン５０４を用いて、係り受け解析処理が適用されると、上記制約の配列パターン５０４にマッチする「設定を−変更する」および「インターネットに−接続できる」という係り受け関係が抽出される。
【０００７】
従来技術では、係り受け関係を定義する制約の配列パターン５０４と文章５００とのパターン照合処理は、複数の配列パターンを同時に処理するために、配列パターン５０４をＴＲＩＥ（prefix tree）（以下、トライ木として参照する。）と呼ばれる順序付き木構造に格納し、入力文章に対して非決定性有限オートマトン（Non-deterministic Finite Automaton：ＮＦＡ）として適用するアルゴリズムを用いて行われていた。
【０００８】
一方、トライ木を用いたパターン照合処理では、その実装において計算量およびメモリ使用量を充分に考慮しなければならない。ＮＦＡを充分な実用性をもって実装するために、ＮＦＡを等価な決定性有限オートマトン（Deterministic Finite Automaton：ＤＦＡ）に変換することは従来から知られている。しかしながら、ＮＦＡからＤＦＡへの変換では、メモリ使用量が増大するため、計算効率とメモリ使用量との間には、トレードオフの関係を有する。単純な文字一致の照合処理において、ＮＦＡからＤＦＡに変換することにより処理効率が向上させる技術を開示するものとしては、以下の文献が知られている（非特許文献１、非特許文献２、非特許文献３）。さらに、非特許文献４は、メモリ使用量を低減させるために、ダブル配列構造を採用することによってトライ木構造をコンパクト化する技術を開示している。
【非特許文献１】A. V. Aho and M. J. Corasick, ”Efficient String Matching: An Aid to Bibliographic Search”, Communications of the ACM,Vol. 18, No. 6, pp. 333−340 (1975).
【非特許文献２】H. Maruyama ”Backtracking-Free dictionary Access Method for Japanese Morphological Analysis”, Proceedings ofthe 15th International Conference on Computational Linguistics, Vol. 1, pp.208-213 (1994).
【非特許文献３】森信介, 「ＤＦＡによる単語解析の高速化」，情報処理学会研究報告  自然言語処理研究会報告，Vol. 96, No. 65, pp. 101-107 (Jul 1996).
【非特許文献４】J. Aoe, ”An Efficient Digital Search Algorithm by using a Double-Array Structure”, IEEE Transactions on Software Engineering, Vol. 15, No. 9, pp.1066-1077 (1989).
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来技術のトライ木をＮＦＡとして適用するアルゴリズムでは、入力テキスト情報の各単語に対して、トライ木の各状態とバックトラックさせながら照合してゆく必要があり、マッチする単語数の平均値ｎと、入力文書の単語数ｍとに対し、計算量Ｏ（ｎｍ）が必要とされ、計算効率の観点から充分なものではなかった。
【００１０】
また、単純な文字一致の照合処理におけるＮＦＡからＤＦＡに変換する方法を、制約の配列パターンの照合処理に対して適用しようとしても、単純に拡張することはできない場合があった。例えば、単語の配列による辞書パターンを用いる場合には、単にトライ木に文字の代わりに単語を格納することで拡張することができる。しかしながら、単語が正規表現によって表される場合、単純に単語の配列として処理するだけでは不充分であり、単語集合の配列として処理する必要がある。したがって、正規表現を考慮して、単語集合の配列のトライ木をＤＦＡへ変換する必要があった。
【００１１】
本発明は、上記問題点に鑑みてなされたものであり、本発明は、正規表現を含む場合であっても、制約パターンとテキスト情報との照合処理を、省メモリかつ高い計算効率で実現することを可能とする情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では、上記課題を解決するために、情報処理装置は、それぞれ複数の制約から構成される１以上の制約パターンから、各制約を遷移条件としたノード間の遷移エッジが定義付けられた順序付き木構造を生成し、生成された順序付き木構造の基本構造に対し、ノード間の追加の遷移リンクを定義付ける。上記追加の遷移リンクは、各遷移エッジの遷移条件間の集合関係を判定して、ルートノードからの第１の部分構造（つまりプレフィックス）に相似する第２の部分構造を探索し、この第２の部分構造の末尾ノードから第１の部分構造の末尾の子ノードへ、集合関係から特定される不確定部分の満たすべき制約を付加して定義付けられる。
【００１３】
上記構成により定義付けられたデータ構造を参照してパターン照合処理を実行するオートマトンは、上記追加の遷移リンクを介して状態間を遷移させ、１以上の制約パターンを表現する順序付き木構造を効率的に渡り歩き、対象の入力情報中の各制約パターンにマッチした部分を特定することが可能となる。また、上記追加の遷移リンクは、遷移元の上記第２の部分構造の末尾までマッチした場合に、第１の部分構造にもマッチしたと見なすために満たすべき不確定部分に対する制約が追加的に定義されているため、正規表現を含む制約パターンについても、効率的なパターン照合を実現することができる。加えて、上記追加の遷移リンクは、遷移エッジの遷移条件間の集合関係を判定しつつ定義されるため、最小限の遷移リンクのみが定義され、もって、メモリ使用量を低減することが可能となる。
【００１４】
本発明では、さらに、末尾ノードが終了状態である第１の部分構造に相似する第２の部分構造が見つかった場合に、第２の部分構造の末尾ノードから、末尾が終了状態である第１の部分構造の末尾ノードへ、不確定部分の制約を条件とした参照リンクを定義付けることができる。参照リンクが定義付けられたデータ構造を参照してパターン照合処理を実行するオートマトンは、順序付き木構造を渡り歩いている間、参照リンクの元となる状態に到達した段階で、不確定部分の最小限の再評価のみで、リンク先の終了状態に対応する出力を発生させることができるため、より高い計算効率にてパターン照合の結果出力を行うことが可能となる。
【００１５】
本発明では、探索の際には、遷移条件が同値、被包含、包含または交差の関係にある遷移エッジによって接続されたノード列を、相似する部分構造として特定することができる。遷移条件の同意性および不確定性が集合関係によって判定することができるため、順序付き木構造中の自己相似構造が効率的に探索される。
【００１６】
さらに本発明では、遷移先となる第１の部分構造の末尾ノードからの遷移条件が、遷移元となる第２の部分構造の末尾ノードからの遷移条件に対し、被包含および同値のいずれの関係にも無かった場合に、上記追加の遷移リンクを定義付けることができる。この構成によれば、上記第２の部分構造の末尾ノードからの遷移が起こらなかった場合であっても起こり得る遷移リンクのみが追加されるため、最小限の遷移リンクが定義され、もってメモリ使用量を低減することが可能とされる。
【００１７】
また本発明では、遷移先となる第１の部分構造のノードからの遷移条件が、遷移元となる第２の部分構造の末尾ノードからの遷移条件に対し被包含または交差の関係にある場合に、該対応する遷移エッジを前記不確定部分として、該遷移条件の制約を該不確定部分の制約として記録することができる。この構成によれば、第２の部分構造側の遷移が起こった場合であっても、対応する第１の部分構造側の遷移が起こることが不確定である場合に、当該不確定な部分のみの追加の条件が生成されるため、パターン照合の際には、本質的に必要な条件のみが再評価されるため、不要な条件による判定が回避される。
【００１８】
本発明では、また、上記制約パターンを構成する制約のそれぞれは、単語の文字列表現、正規形または品詞情報に対する１以上の制約の要素を含むことができる。制約パターンのデータ構造は、制約の列構造、木構造、または該木構造を列構造として表現した構造を有するデータ構造とすることができる。
【００１９】
さらに本発明では、入力情報と、定義付けられた前記データ構造により表現される１以上の制約パターンとを照合するオートマトンを生成することができる。また本発明では、さらに、オートマトンは、決定性有限オートマトンとすることができる。本発明では、オートマトンは、記憶装置が記憶する１以上の制約パターンを表現する上記データ構造を参照しながら、入力情報と前記制約パターンとをパターン照合することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。
【００２１】
以下の実施形態では、パターン照合処理によりテキスト情報から所与のパターン構造に一致する意味表現を省メモリかつ効率的に抽出するためのオートマトンを生成し、またパターン照合処理によりテキスト情報から意味表現の抽出を行なうオートマトンを計算機上に実現するコンピュータ装置１０を例として説明する。
【００２２】
図１は、本実施形態のコンピュータ装置１０の機能ブロックを示す。図１に示すコンピュータ装置１０は、概ねパーソナル・コンピュータ、ワークステーションまたはメインフレームなどとして構成されている。図１に示すコンピュータ装置１０に含まれる各機能部（詳細は後述する。）は、メモリ上にプログラムを展開し、プログラムの実行により各ハードウェア資源を動作制御することによって、コンピュータ装置１０上に実現される。
【００２３】
本実施形態のコンピュータ装置１０は、パターン照合処理を行うオートマトン８０が参照するデータ構造を定義付ける照合構造定義部５０を含んで構成される。照合構造定義部５０は、トライ木生成部６０を含んで構成され、トライ木生成部６０は、１以上の単語列パターン１５０の入力を受けて、ＴＲＩＥ（prefix tree：以下、トライ木として参照する。）と呼ばれる順序付き木構造を構築し、トライ木のデータ構造を定義付けるトライ木構造データ１１０を生成する。上記単語列パターン１５０は、テキスト情報から意味表現の抽出を行うために予め辞書化された、各単語の文字列表現、正規形または品詞情報に対する制約の配列として定義される。以下、生成されるトライ木のデータ構造について、図２を参照して説明する。
【００２４】
図２（Ａ）は、上記１以上の単語列パターン１５０から生成されるトライ木のデータ構造を例示する模式図である。トライ木２００のデータ構造は、ルートノード２０２を頂点として、上位のノードから下位のノードへの順序が定められたエッジ２０４により接続されたノード２０６，２０８から構成され、いわゆる木構造を有している。
【００２５】
図２（Ａ）に示す各ノード２０６，２０８は、トライ木２００を適用した場合にオートマトンが取り得る状態を表し、エッジに付された「ａ」、「ｂ」や、「ｂ｜ｃ」といった記号は、接続する上位ノードから下位ノードへ遷移するにあたり満たすべき遷移条件を表している。トライ木２００が適用されたオートマトンは、入力単語列に対しパターン照合処理を実行する際に、ルートノード２０２に対応する開始状態ｓ０を始点として、入力された単語列と付された遷移条件とが一致するエッジを経路として状態間を渡り歩き、木構造上の葉ノード２０８に対応する終了状態に到達すると、結果出力を生成する。これにより、入力単語列から、トライ木２００が表現する１以上の単語列パターンにマッチする単語列が抽出されることとなる。つまり、トライ木２００は、入力された１以上の単語列パターン１５０を表現するデータ構造ということができる。
【００２６】
しかしながら、図２（Ａ）に示すトライ木２００をオートマトンに適用した場合、マッチする分岐点までその都度バックトラックしながら照合を進める必要がある。さらに、入力単語列の先頭の単語から始まる単語列に対するパターン照合が完了した後、再び入力単語列の次の単語から始まる単語列がオートマトンに入力が与えられて、入力単語列のすべての単語位置から始まる単語列に対し繰り返されることとなる。そこで、図１に示す本実施形態の照合構造定義部５０は、パターン照合の計算効率を向上させるために、変換処理部７０を含んで構成されている。変換処理部７０は、生成されたトライ木のノード間に、適宜リンクを付加して、トライ木に付加されたリンクを定義付ける付加リンク構造データ１２０を生成して、トライ木の構造を決定性オートマトン（以下、ＤＦＡとして参照する。）の構造に変換する。変換処理部７０は、より具体的には、相似構造探索部７２と、遷移リンク定義部７４と、終了状態リンク定義部７６とを含んで構成される。
【００２７】
以下、変換処理部７０による変換処理の概要について、再び図２を参照して説明する。図２（Ｂ）は、図２（Ａ）に示すトライ木２００から変換されたデータ構造２１０を例示する。図２（Ｂ）に示すデータ構造２１０は、図２（Ａ）に示すトライ木２００に対して、さらに、ノード間に条件付き遷移リンク２１４、遷移リンク２１６、条件付き終了状態リンク２１８など、エッジ以外の接続リンクが付加された構造を有している。
【００２８】
図２（Ａ）に示すトライ木２００について、より詳細な説明を加えると、図２（Ａ）に示すトライ木２００は、パターンＡ「ａ（ｂ｜ｃ）」、パターンＢ「ａｂ（ａ｜ｃ）」、パターンＣ「ｂ（ａ｜ｃ）ｂ」として表現される３つの単語列パターンから生成されたものを一例として示している。ここで、各パターンにおける「ａ」、「ｂ」や、「（ｂ｜ｃ）」といった各記号は、各単語の文字列表現、正規形または品詞情報に対する１以上の制約を表し、トライ木２００においてはエッジの遷移条件となる。また、「（ｂ｜ｃ）」および「（ａ｜ｃ）」の記号は、選言を表し、正規表現による単語集合を配列要素として含む単語列パターンの一例として示したものである。
【００２９】
図２（Ａ）に示すトライ木２００を考察すると、例えば、入力単語列がパターンＢ「ａｂ（ａ｜ｃ）」にマッチすることが確認された段階（状態ｓ４）で、入力単語列の後部分がパターンＣの「ｂ（ａ｜ｃ）」の部分にもマッチすることを確定できることが判る。そこで、本実施形態では、パターンＣの「ｂ（ａ｜ｃ）」の部分までの比較を省略し、入力単語列中の続く単語とパターンＣの残りの「ｂ」の部分との比較を引き続き行えるように、ノード２１２ｄからノード２１２ｃへの遷移リンク２１６を付加する。この遷移リンク２１６が付加されることにより、パターン照合の際、オートマトンが状態ｓ４に達した場合に、引き続き、次の単語が遷移（ｓ６→ｓ７）と同一の遷移条件を満たすことを確認して、状態ｓ４から状態ｓ７までの遷移を与えることが可能となる。
【００３０】
また、入力単語列がパターンＡ「ａ（ｂ｜ｃ）」にマッチすることが確認された段階では、入力単語列の後部分がパターンＣの「ｂ」の部分までマッチしている可能性があることが判る。そこで、本実施形態では、不確定性を含む入力単語列中の「（ｂ｜ｃ）」にマッチした単語が、確かに「ｂ」にマッチすることを確認して、入力単語列中の続く単語とパターンＣの「（ａ｜ｃ）」との比較を引き続き行えるように、ノード２１２ａからノード２１２ｂへの条件付き遷移リンク２１４を付加する。
【００３１】
また、入力単語列がパターンＣ「ｂ（ａ｜ｃ）ｂ」にマッチすることが確認された段階では、後部分がパターンＡ「ａ（ｂ｜ｃ）」の末尾までマッチしている可能性があることが判る。そこで、本実施形態では、不確定性を含む入力単語列の「（ａ｜ｃ）」に対応する単語が、確かに「ａ」にマッチすることを確認して、パターンＡ「ａ（ｂ｜ｃ）」の比較を省略して結果出力が行えるように、終了状態リンク２１８を付加する。この例では、リンク先に遷移するために満たすべき制約を含んでいるため、この制約が参照条件として付され、条件付き終了状態リンクとなる。
【００３２】
図１に示す相似構造探索部７２は、トライ木２００のエッジ２０４に付された遷移条件間に対して集合演算を適用することによって、これらの間の同意性を判定し、上記遷移リンクおよび終了状態リンクを付すべきノード、および追加のリンクに付すべき制約を判定する。より具体的には、相似構造探索部７２は、まず、遷移条件間に対する集合演算によりその同意性を判定しながら、ルートノード２０２を始点として接続されるノードから成る任意の長さの部分構造（以下、プレフィックスとして参照する。）に対し、相似関係にあるトライ木２００中の部分構造を探索する。ここで、相似関係とは、同意性を有しつつも、部分的に一致の不確かさを有する部分構造の関係をいう。なお、厳密一致する同一の部分構造の関係も、相似関係に含むものとする。
【００３３】
図２に示す例では、ｓ０から始まる状態列ｓ５をプレフィックスとすると、状態列（ｓ２）、状態列（ｓ３）および状態列（ｓ７）が相似関係にある部分構造として特定され、状態ｓ２への遷移が不確定な部分として特定されることとなる。この場合、状態ｓ１から状態ｓ２への遷移の条件が満たされるからといって、必ずしもｓ０からｓ５への遷移の条件が満たされるとは限らない不確かさを有し、そのため再評価が必要となる。また、ｓ０から始まる状態列（ｓ５−ｓ６）をプレフィックスとすると、状態列（ｓ３−ｓ４）が相似関係にある部分構造として特定されることとなる。なお、相似構造の探索処理については、詳細を後述する。
【００３４】
再び図１を参照すると、上記遷移リンク定義部７４は、相似構造探索部７２により探索された、プレフィックスに対し相似関係にある部分構造について、その末尾ノードから対応するプレフィックス末尾の子ノードへの遷移リンクを適宜追加的に定義付けて、付加リンク構造データ１２０に登録する。その際に、相似関係にある部分構造がプレフィックスと厳密一致するとみなすために満たさなければならない不確定部分の制約を、遷移リンクに対し付加的に定義付ける。
【００３５】
上記終了状態リンク定義部７６は、同様に、プレフィックスと相似関係にある部分構造について、その末尾ノードからプレフィックスの末尾ノードへの終了状態リンクを適宜追加的に定義付けて、付加リンク構造データ１２０に終了状態リンクを登録する。その際に、遷移リンクの場合と同様に、不確定部分の制約を終了状態リンクに対する条件として定義付ける。
【００３６】
そして、上記照合構造定義部５０は、トライ木を定義付けるトライ木構造データ１１０および付加リンクを定義付ける付加リンク構造データ１２０を含む照合データ構造１００に従ってパターン照合を行うオートマトン８０を生成する。オートマトン８０は、コンピュータ装置１０のメモリ上に上記照合データ構造１００を読み出して、単語列から構成される入力文書１３０の入力を受け、予め定義され上記照合データ構造１００により表現される単語列パターンに対するパターン照合処理を実行し、入力文書から所望の意味表現を抽出し、結果出力１４０を与える。
【００３７】
以下、本実施形態の照合データ構造１００に格納される単語パターンおよび照合対象の入力情報について説明する。図３は、入力テキスト情報から所望の意味表現を抽出するために定義される単語パターンのデータ構造を示す模式図である。図３（Ａ）は、各単語の文字列表現、正規形または品詞情報に対する制約の並びとして定義される単語列パターンを示す。図３（Ａ）に示す単語パターンを用いる場合、入力テキスト情報は、各単語の文字列表現、正規形または品詞情報を含む単語情報の配列として与えることができる。このような、単語の文字列表現、正規形または品詞情報などは、形態素解析などの文字列解析手法により抽出することができる。
【００３８】
一方、自然言語処理において、文章は、係受解析器（Dependency Parser）を用いて文章中の単語同士の係受け関係を抽出することによって、係り受け木と呼ばれる木構造により表現することができる。係受け木では、主語−述語間の関係など、文章中で必ずしも隣接しない単語間のより深い関係を表現することができる。本発明では、意味表現を抽出するために定義される単語パターンおよび入力テキスト情報のデータ構造として、係受け木を採用することもできる。図３（Ｂ）は、木構造として表現される単語木パターンを例示する。図３（Ａ）に示す木構造の単語木パターンを用いる場合、入力テキスト情報は、同様に、木構造化された単語情報の配列として与えることができる。
【００３９】
木構造として表現される単語木パターンの計算機上での実装は、特に限定されるものではないが、ＤＦＳエンコーディング（深さ優先探索エンコーディング：Depth First Search Encoding）と呼ばれる、木構造を列構造に変換する処理を適用して、トライ木に格納することができる。図３（Ｃ）は、ＤＦＳエンコーディングにより図３（Ｂ）に示す単語木パターンから変換された列構造を示す。上記ＤＦＳエンコーディングでは、木構造を深さ優先の順序でノード列を生成し、木構造上の上位ノードへ戻る位置に特別なノードを挿入する。図３（Ｃ）に示す例では、「いつでも」と、その兄弟ノードである「に｜へ」のノードの間に、「−１」で示される一段上に戻ることを表す特別なノードが挿入されている。なお、ＤＦＳエンコーディングに関する詳細は、Mohammed J. Zaki, ”Efficiently Mining Frequent Trees in a Forest”, 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, July 2002を参照することができる。
【００４０】
なお、本実施形態では、説明の簡単のため、単語に対する文字表現、正規形また品詞に対する制約の並びとして定義される単語列パターンを用いた場合を例に説明するが、他の実施形態では、木構造により表現された単語パターンを採用することを妨げるものではない。以下、パターン照合のための照合データ構造１００を生成する処理およびパターン照合処理について、各処理段階ごとに分けて、より詳細に説明する。
【００４１】
（１）トライ構造の生成処理
まず、本実施形態のトライ木生成部６０は、入力された１以上の単語列パターン１５０からトライ木を生成する。トライ木は、取り得る状態の集合Ｓ、終了状態の集合Ｅ（⊆Ｓ）、遷移の集合Ｔ（Ｓ×Ｃ→Ｓ）を含んで構成される。状態の集合Ｓは、初期状態ｓ０を含む有限の状態（ｓ０，ｓ１，…ｓＮ）から構成される。終了状態の集合Ｅの各要素には、出力関数が定義されており、照合の際にオートマトンの状態が終了状態に達すると、予め定義された出力関数に応じたアクションを発生させ、例えば、マッチした単語列、単語列パターンに付属する意味情報などを出力する。遷移の集合Ｔは、遷移条件ｃ（∈Ｃ）を全て満たす場合に起こる状態ｓｉを起点とし状態ｓｊを終点とする遷移ｔ（＝＜ｓｉ，ｓｊ，Ｃ＞）から構成される。ここで、遷移条件の要素ｃ（＝＜ｄ，ｗ＞）は、入力単語列中の判定対象部分のｄ番目に位置する単語が制約ｗを満たすという条件である。また状態ｓｉは、その状態ｓｉからの遷移の深さを表す階層レベルＬ（ｓｉ）を有し、状態ｓ０の階層レベルＬ（ｓ０）は、「０」に基準付けされている。
【００４２】
トライ木生成部６０は、各単語の文字列表現、正規形または品詞情報に対する１以上の制約の並びとして定義される１以上の単語列パターンから、文字を制約とする文字列照合の場合と同様の手順により、トライ木を生成する。なお、トライ木構造の具体的な実装は、特に限定されるものではなく、三重配列構造や二重配列構造など如何なるデータ構造を採用または拡張して実装することができる。
【００４３】
（２）トライ構造からＤＦＡ構造への変換
（２−１）自己相似構造の探索
変換処理部７０は、単語列パターンからトライ木が生成された後、トライ木からＤＦＡへ変換する。変換処理においては、相似構造探索部７２は、トライ木の構造中、任意のノードを始点とするエッジおよびノードからなるパス（以下、部分状態列として参照する）Ｋと、ルートノードを始点とするエッジおよびノードからなるパス（以下、プレフィックス状態列として参照する。）Ｐとの比較を、すべての部分状態列Ｋおよびプレフィックス状態列Ｐの組み合わせについて実行し、部分状態列Ｋ側からプレフィックス状態列Ｐ側へのリンクの要否を判定する。
【００４４】
ここで、上記部分状態列Ｋは、状態の集合ＳＫ（⊆Ｓ）および遷移の集合ＴＫから構成され、遷移の集合ＴＫは、部分状態列Ｋのｉ番目の状態ｓＫｉから下位の状態ｓＫｉ＋１への遷移ｔＫｉ（＝＜ｓＫｉ，ｓＫｉ＋１，ＣＫｉ＞））から構成される。上記プレフィックス状態列Ｐは、状態の集合ＳＰ（⊆Ｓ）および遷移の集合ＴＰから構成され、遷移の集合ＴＰは、プレフィックス状態列Ｐのｉ番目の状態ｓＰｉから下位の状態ｓＰｉ＋１への遷移ｔＰｉ（＝＜ｓＰｉ，ｓＰｉ＋１，ＣＰｉ＞））から構成される。上記プレフィックス状態列Ｐは、少なくとも初期状態ｓ０からの遷移を含んで構成される。
【００４５】
上記比較では、まず部分状態列Ｋの始点とするための任意の状態ｓＫ１を選択し、該状態ｓＫ１を起点とした遷移ｔＫ１と、ルートノードｓＰ１（＝ｓ０）を起点とする遷移ｔＰ１とを比較して集合関係を求め、同意性が確認された場合、さらに下位の遷移ｔＫ２と遷移ｔＰ２との比較へと進め、同意性が得られなくなるまで遷移ｔＫｉと遷移ｔＰｉとの比較を続ける。また、相似構造探索部７２は、比較処理中、遷移ｔＫｉと遷移ｔＰｉとの集合関係から、状態ｓＫｉを起点とし状態ｓＰｉ＋１を終点とした遷移リンク、および状態ｓＫｉを起点とし状態ｓＰｉを終点とした終了状態リンクの付加の要否を判定する。さらに、相似構造探索部７２は、比較処理中、遷移ｔＫｉと遷移ｔＰｉとの集合関係から、部分状態列Ｋ側のノードからプレフィックス状態列Ｐ側のノードに遷移または参照させる際に、付加的に満たすべき不確定部分の制約を記録する。
【００４６】
（２−２）集合関係
部分状態列Ｋにおけるｉ番目の遷移ｔＰｉの遷移条件ＣＫｉと、プレフィックス状態列Ｐにおけるｉ番目の遷移ｔＰｉの遷移条件ＣＰｉとの集合関係を、集合演算から求める。表１に、集合演算から求められる集合関係と、遷移リンクの要否、および不確定部分の制約の記録の要否との関係を示す。
【００４７】
【表１】
2010026689.tif 000003
【００４８】
表１に示すように、プレフィックス状態列Ｐ側の遷移条件ＣＰｉが、部分状態列Ｋ側の遷移条件ＣＫｉと同値（ＥＱＵＡＬＳ）の関係に有る場合、状態ｓＫｉから状態ｓＫｉ＋１への遷移が起こる場合には、状態ｓＰｉから状態ｓＰｉ＋１への遷移も起こり、また、部分状態列Ｋ側の遷移が起こらない場合には、状態ｓＰｉから状態ｓＰｉ＋１への遷移も起こり得ない。したがって、遷移リンクを付加しない。
【００４９】
一方、遷移条件ＣＰｉが遷移条件ＣＫｉを包含し、包含（ＩＮＣＬＵＤＥＳ）の関係に有る場合には、状態ｓＫｉから状態ｓＫｉ＋１への遷移が起こる場合には、状態ｓＰｉから状態ｓＰｉ＋１への遷移も起こるが、一方、部分状態列Ｋ側の遷移が起こらない場合であっても、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こる可能性がある。したがって、遷移リンクを付加する。
【００５０】
また、遷移条件ＣＰｉが遷移条件ＣＫｉに包含され、被包含（ＩＮＣＬＵＤＥＤ）の関係に有る場合には、状態ｓＫｉから状態ｓＫｉ＋１への遷移が起こる場合であっても、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こるか不確定であるため、プレフィックス状態列Ｐ側の遷移条件ＣＰｉと、部分状態列Ｋ側の遷移の階層レベルＬ（ｓＫｉ）とを対応付けて、不確定部分の制約を格納する不確定要素リストに登録する。一方、部分状態列Ｋ側の遷移が起こらない場合には、状態ｓＰｉから状態ｓＰｉ＋１への遷移も起こり得ないため、遷移リンクは付加しない。
【００５１】
遷移条件ＣＰｉと遷移条件ＣＫｉとが交差（ＩＮＴＥＲＳＥＣＴＳ）の関係に有る場合には、状態ｓＫｉから状態ｓＫｉ＋１への遷移が起こる場合であっても、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こるか否かが不確定であるため、遷移条件ＣＰｉと、階層レベルＬ（ｓＫｉ）とを対応付けて不確定要素リストに登録する。さらに、部分状態列Ｋ側の遷移が起こらない場合であっても、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こる可能性があるため、遷移リンクを付加する。
【００５２】
遷移条件ＣＰｉと遷移条件ＣＫｉとが排他（ＥＸＣＬＵＤＥＳ）の関係に有る場合には、状態ｓＫｉから状態ｓＫｉ＋１への遷移が起こる場合には、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こり得ず、また、部分状態列Ｋ側の遷移が起こらない場合であっても、状態ｓＰｉから状態ｓＰｉ＋１への遷移が起こる可能性がある。したがって、遷移リンクを付加する。
【００５３】
相似構造探索部７２による自己相似構造の探索においては、上記排他以外の関係（同値、包含、被包含および交差の関係）にある遷移条件が付された構造に対し、同意性のあるものとして判定し、より下位の比較を進めて行く。これにより、同意性を有しつつも、部分的に一致の不確かさを有する相似構造が特定されることとなる。
【００５４】
（２−３）条件付き遷移リンクの生成
上述したように、追加の遷移リンクは、パターン照合において、ある単語が部分状態列Ｋ側の遷移条件ＣＫｉにマッチしなかった場合であっても、プレフィックス状態列Ｐ側の遷移条件ＣＰｉにマッチする可能性がある場合に、部分状態列Ｋ側の状態ｓＫｉを起点としプレフィックス状態列Ｐ側の状態ｓＰｉ＋1を終点として生成されるものである。相似構造探索部７２は、プレフィックス状態列Ｐに対して、全ての遷移条件が排他ではない部分状態列Ｋが存在し、かつ、該部分状態列Ｋの末尾ノードを起点とする全ての遷移がプレフィックス状態列Ｐの末尾ノードを起点とする遷移に対して、同値（ＥＱＵＡＬＳ）でも被包含（ＩＮＣＬＵＤＥＤ）でもない部分状態列Ｋおよびプレフィックス状態列Ｐのセットを探索する。
【００５５】
相似構造探索部７２は、上記のセットが見つかった場合、遷移リンク定義部７４を呼び出して、追加の遷移ｔｃｔ（＝＜ｓＫｎ，ｓＰｎ＋１，ＣＩ∩ＣＰｎ＞）を生成させる。ここで、ｎは、相似関係にある構造の末尾を識別し、つまり状態ｓＫｎは、現在の処理対象の部分状態列Ｋの同意性が確認された末尾ノードに対応し、状態ｓＰｎ＋１は、プレフィックス状態列Ｐの末尾ノードｓＰｎの子ノードに対応する。上記遷移条件の集合ＣＩは、プレフィックス状態列Ｐの遷移条件ＣＰｉのうち、遷移条件ＣＫｉとの間で被包含または交差の関係にある遷移条件から構成され、不確定部分の満たすべき制約を表す。上記遷移条件ＣＰｎは、プレフィックス状態列Ｐの末尾ノードｓＰｎからその子ノードｓＰｎ＋１への遷移ｔＰｎ（＝＜ｓＰｎ，ｓＰｎ＋１，ＣＰｎ＞））における遷移条件ＣＰｎである。遷移ｔｃｔは、エイホ・コラシック法の失敗関数と同様にメモリを節約するように機能し、さらに、１回の単語の読み込みに対して、ただ１回だけ遷移するＤＦＡの特性を与える。
【００５６】
（２−４）条件付き終了状態リンクの生成
上述したように、追加の終了状態リンクは、パターン照合において、ある単語が部分状態列Ｋ側の遷移条件ＣＫｉにマッチした場合、プレフィックス状態列Ｐ側の遷移条件ＣＰｉにマッチしている可能性がある場合に、状態ｓＫｉから状態ｓＰｉへの生成される参照リンクである。相似構造探索部７２は、プレフィックス状態列Ｐに対して、全ての遷移条件が排他ではない部分状態列Ｋが存在し、かつ、プレフィックス状態列Ｐの末尾ノードが終了状態である部分状態列Ｋおよびプレフィックス状態列Ｐのセットを探索する。
【００５７】
相似構造探索部７２は、上記のセットが見つかった場合、終了状態リンク定義部７６を呼び出して、部分状態列Ｋの末尾ノードｓＫｎを条件付き終了状態ｓＫｅ（＝＜ｓＰｎ，ＣＩ＞）とする。条件ＣＩは、条件付き遷移リンクの場合と同様に、不確定部分の満たすべき制約を表し、遷移条件ＣＰｉのうち、遷移条件ＣＫｉとの間で被包含または交差にある遷移条件から構成される。条件付き終了状態ｓＫｅは、ｓＰｎへの条件付き参照として表現される。パターン照合においては、オートマトンが条件付き終了状態ｓＫｅに達した場合、不確定部分の制約ＣＩが満たされた場合に、他の終了状態と同様に、結果出力を行う。この結果出力は、参照先の終了状態ｓＰｎに定義付けられた出力関数を参照して行うことができる。
【００５８】
部分状態列Ｋの末尾の状態ｓＫｎは、終了状態リンク定義部７６により生成されて初めて終了状態となる。一方、探索中、現在の処理対象である部分状態列Ｋの状態ｓＫｎは、他の処理では、プレフィックス状態列Ｐの末尾ノードｓＰｎとしても選択されるため、後の処理でプレフィックス状態列Ｐの末尾ノードｓＰｎが終了状態となった場合には、部分状態列Ｋの状態ｓＫｎも終了状態とする必要がある。したがって、相似構造探索部７２は、探索中においては、プレフィックス状態列Ｐの末尾ノードが終了状態であるか否かにかかわらず、終了状態である可能性として記録し、一巡した後、トライ木を再探索する。そして、終了状態である可能性として記録されたノードが確かに終了状態であることを確認して、終了状態リンク定義部７６を呼び出して、条件付き終了状態ｓＫｅの生成を決定する。
【００５９】
（２−５）データ構造の最適化
上述したように、遷移リンク定義部７４により、相似関係にある部分状態列Ｋの末尾ノードからプレフィックス状態列Ｐ末尾の子ノードへ、各遷移の集合関係に応じて追加の遷移が生成される。しかしながら、本実施形態の処理によれば、各追加の遷移リンクが異なる不確定部分の制約を持ちうるために、１つの遷移元ノードに対して遷移先の異なる複数の追加の遷移リンクが定義される可能性がある。一方、パターン照合の際には、オートマトンが保持する文脈を残すためにも、マッチする遷移のうち、可能な限りプレフィックスの長い、つまり階層レベルが深い遷移先へ遷移させることが好ましい。そこで、付加リンク構造データ１２０においては、追加の遷移リンクを階層レベルの深さの順にソーティングする。これによって、遷移の際には、最も長いプレフィックスへ効率的に遷移させることが可能となる。
【００６０】
（３）ＤＦＡ変換処理の例示
以下、図４および図５を参照して、変換処理における部分的なの処理に注目して、変換処理の手順を例示する。図４および図５は、変換処理の部分的な処理を例示する模式図である。
【００６１】
図４（Ａ）は、同値の集合関係を有する部分状態列Ｋおよびプレフィックス状態列Ｐに関する処理を示す。図４（Ａ）において、状態ｓ２への遷移の条件（ｂ）と、状態ｓ６への遷移の条件（ｂ）とは、集合演算から同値（ＥＱＵＡＬＳ）であると判定される。この場合、表１に示す関係から、状態ｓ２からの追加の遷移リンクは生成されず、相似構造探索部７２は、判定した部分に同意性が得られたことを記録する。一方、次の比較では、状態ｓ２に子が存在しないため、空の条件（Φ）と、プレフィックス状態列Ｐの状態ｓ７への遷移の条件（ａ｜ｂ）との集合演算となり、排他（ＥＸＣＬＵＤＥＳ）であると判定される。
【００６２】
これまでの判定で、１以上の同意性が確認され、かつ、状態ｓ２に子が存在しないため、遷移リンク定義部７４は、状態ｓ２（ｓＫｎ）から、対応する状態ｓ６（ｓＰｎ）の子ノードｓ７（ｓＰｎ＋１）への遷移リンクを生成する。この遷移リンクにより、パターン照合の際には、状態ｓ２から状態ｓ７への遷移も試されることとなる。状態ｓ２に、排他以外の関係がある子ノードが存在しないため、相似構造探索部７２は、部分状態列Ｋおよびプレフィックス状態列Ｐの当該組み合わせに関する処理を完了させ、次の組み合わせ（Ｋ，Ｐ）に処理を進める。
【００６３】
図４（Ｂ）は、包含の集合関係を有する部分状態列Ｋおよびプレフィックス状態列Ｐに関する処理を示す。図４（Ｂ）において、状態ｓ３への遷移の条件（ｂ）と、状態ｓ６への遷移の条件（ｂ）とは、集合演算から同値（ＥＱＵＡＬＳ）であると判定されるため、同意性が得られたことのみを記録する。
【００６４】
次の比較では、状態ｓ３から、その子の状態ｓ４への遷移の条件（ａ）と、プレフィックス状態列Ｐのｓ７への遷移の条件（ａ｜ｂ）との集合演算を行い、この場合、包含（ＩＮＣＬＵＤＥＳ）の関係であると判定される。また、状態ｓ３は、もうひとつの子ノードｓ５を有するため、その子の状態ｓ５への遷移の条件に対する判定を待って、追加の遷移リンクの要否を判定する。これまでの判定で、１以上の同意性が確認され、かつ、状態ｓ３からの全ての遷移が、プレフィックス状態列Ｐの末尾の遷移に対し同値でも被包含でもないため、遷移リンク定義部７４は、状態ｓ３（ｓＫｎ）から状態ｓ７（ｓＰｎ＋１）への遷移リンクを生成する。この遷移リンクにより、パターン照合の際に、状態ｓ３からのトライ木のいずれの遷移条件ともマッチできなかった場合に、状態ｓ３から状態ｓ７への遷移も試されることとなる。
【００６５】
図４（Ｂ）において、さらに次の比較では、状態ｓ４には子ノードが存在しないため、空の条件（Φ）と、プレフィックス状態列Ｐのｓ８への遷移の条件（ｂ｜ｃ）との集合演算となり、排他（ＥＸＣＬＵＤＥＳ）であると判定される。この場合、これまでの判定で１以上の同意性が確認され、かつ、状態ｓ４には子ノードが存在しないため、遷移リンク定義部７４は、状態ｓ４（ｓＫｎ）から状態ｓ８（ｓＰｎ＋１）への遷移リンクを生成する。この遷移リンクにより、パターン照合の際に、状態ｓ４から状態ｓ８への遷移も試されることとなる。
【００６６】
図５（Ａ）は、被包含の集合関係を有する部分状態列Ｋおよびプレフィックス状態列Ｐに関する処理を示す。図５（Ａ）において、状態ｓ７への遷移の条件（ａ｜ｂ）と、状態ｓ１への遷移の条件（ａ）とは、集合演算から被包含（ＩＮＣＬＵＤＥＤ）であると判定される。したがって、相似構造探索部７２は、状態ｓ６から状態ｓ７へ遷移の深さを示す階層レベルＬ（ｓ６）と、プレフィックス状態列Ｐ側の遷移の条件（ａ）とを対応付けて、不確定要素リストに記録する。また、集合演算から被包含（ＩＮＣＬＵＤＥＤ）であると判定されたため、状態ｓ６からの遷移リンクを生成せず、同意性が得られたことをのみを記録する。
【００６７】
次の比較では、状態ｓ７から、その子の状態ｓ８への遷移の条件（ｂ｜ｃ）と、プレフィックス状態列Ｐの状態ｓ１からｓ２への遷移の条件（ｂ）との集合演算となり、被包含（ＩＮＣＬＵＤＥＤ）の関係が判定される。相似構造探索部７２は、状態ｓ７から状態ｓ８へ遷移の深さを示す階層レベルＬ（ｓ７）と、プレフィックス状態列Ｐ側の遷移の条件（ｂ）とを対応付けて、不確定要素リストに記録する。これまでの判定で、１以上の同意性が確認されているものの、この比較において被包含（ＩＮＣＬＵＤＥＤ）の関係が判定されたため、状態ｓ７からの追加の遷移リンクを生成せず、同意性が得られたことを記録する。
【００６８】
一方、プレフィックス状態列Ｐ側の状態ｓ２が終了状態であるため、終了状態リンク定義部７６は、部分状態列Ｋ側の状態ｓ８を、これまで不確定要素リストに記録された制約を参照条件とした条件付き終了状態を生成する。この例では、参照条件として「Ｗ１＝ａ＆Ｗ２＝ｂ」（ここでＷＬは階層レベルＬの位置に対する追加の制約であることを示す。）が付加される。
【００６９】
図５（Ｂ）は、交差の集合関係を有する部分状態列Ｋおよびプレフィックス状態列Ｐに関する処理を示す。図５（Ｂ）において、状態ｓ３への遷移の条件（ｂ）と状態ｓ６への遷移の条件（ｂ）とは、集合演算から同値（ＥＱＵＡＬＳ）であると判定される。したがって、この比較では、同意性が得られたことをのみを記録する。
【００７０】
次の比較では、状態ｓ３から、その子の状態ｓ５への遷移の条件（ａ｜ｃ）と、プレフィックス状態列Ｐのｓ６からｓ７への遷移の条件（ａ｜ｂ）との集合演算となり、交差（ＩＮＴＥＲＳＥＣＴ）の関係が判定される。これまでの判定で１以上の同意性が確認され、かつ、状態ｓ３からの全ての遷移が、プレフィックス状態列Ｐの末尾の遷移に対し同値でも被包含でもないため、状態ｓ３（ｓＫｎ）から、対応する状態ｓ６の子ノードの状態ｓ７（ｓＰｎ＋１）への遷移リンクを生成する。一方、交差（ＩＮＴＥＲＳＥＣＴ）の関係が判定されたため、状態ｓ３からの遷移の深さを示す階層レベルＬ（ｓ３）と、プレフィックス状態列Ｐ側の遷移の条件（ａ｜ｂ）とを対応付けて、不確定要素リストに記録する。
【００７１】
図５（Ｂ）において、さらに次の比較では、状態ｓ５には子ノードが存在しないため、空の条件（Φ）と、プレフィックス状態列Ｐのｓ８への遷移の条件（ｂ｜ｃ）との集合演算となり、排他（ＥＸＣＬＵＤＥＳ）であると判定される。この場合、これまでの判定で１以上の同意性が確認され、かつ、状態ｓ４には子ノードが存在しないため、遷移リンク定義部７４は、状態ｓ５（ｓＫｎ）から状態ｓ８（ｓＰｎ＋１）への遷移リンクを生成する。この例では、遷移条件として（Ｗ２＝ａ｜ｂ）が追加の条件として付加され、条件付遷移リンクとなる。
【００７２】
（４）ＤＦＡ変換処理の全体処理フロー
以下、図６および図７を参照して、トライ木からＤＦＡの構造へ変換するまでの全体処理フローを説明する。図６は、本実施形態のコンピュータ装置１０が実行する変換処理を示す第１のフローチャートである。図６に示す処理は、トライ木の生成が完了した後、照合構造定義部５０に呼び出されて、ステップＳ１００から開始される。図６に示すＤＦＡ変換処理Ａは、部分状態列Ｋの判定処理の開始点とする状態ｓＫｉと、プレフィックス状態列Ｐの判定処理の開始点である状態ｓ０とが引数として与えられて開始される。
【００７３】
ステップＳ１０１では、当該状態ｓＫｉを開始点とする処理に対し、不確定要素リスト（IndeterminantList）を新たに生成する。ステップＳ１０２では、上述する開始点の状態ｓＫｉと、状態ｓ０と、生成した不確定要素リスト（IndeterminantList）とを引数として与えて、図７に示すＤＦＡ変換処理Ｂを呼び出す。最後の引数は、これまで同意性が確認されたか否かを表すフラグであり、ＤＦＡ変換処理Ａから呼び出す場合には、初期値として「ＦＡＬＳＥ」を与える。なお、ＤＦＡ変換処理Ｂについては、詳細を後述する。
【００７４】
ステップＳ１０３からステップＳ１０５までのループでは、状態ｓＫｉを起点とする各遷移について、ループ内のステップＳ１０４の処理を繰り返す。ステップＳ１０４では、状態ｓＫｉを起点とする遷移について、ＤＦＡ変換処理Ａ自身を再帰的に呼び出す。再帰呼び出しの際には、当該遷移による状態ｓＫｉの次の状態ｓＫｊと、プレフィックス状態列Ｐの判定処理の開始点である状態ｓ０とが引数として与えられる。自身に制御が戻され、ステップＳ１０３からステップＳ１０５までのループが終了すると、ステップＳ１０６で、当該ＤＦＡ変換処理Ａの処理を終了させ、呼び出し元の処理に制御を渡す。
【００７５】
図６に示す再帰的なＤＦＡ変換処理Ａにより、最初に開始点として与えた状態ｓＫｉ以下のトライ木を構成するすべてのノードを開始点とした部分状態列Ｋとプレフィックス状態列Ｐとの判定処理が開始されることとなる。以下、図６に示すステップＳ１０２で呼び出されるＤＦＡ変換処理Ｂについて、図７を参照して説明する。
【００７６】
図７は、本実施形態のコンピュータ装置１０が実行する変換処理を示す第２のフローチャートである。図７に示すＤＦＡ変換処理Ｂは、図６に示すステップＳ１０２で呼び出されて、または自身の処理から再帰的に呼び出されて、ステップＳ２００から開始される。ＤＦＡ変換処理Ａから呼び出された場合、部分状態列Ｋ側の開始点ｓＫｉと、プレフィックス状態列Ｐ側の開始点ｓ０と、新規生成された不確定要素リスト（IndeterminantList）と、これまで同意性が確認されたか否かを表すフラグの初期値「ＦＡＬＳＥ」とが引数として引き渡されることとなる。図７に示す処理の説明においては、それぞれ、状態ｓｋｉ，状態ｓｐｉ，不確定要素リスト（indeterminants）、フラグ（isMatchedBefore）として参照する。
【００７７】
ステップＳ２０１では、与えられたプレフィックス状態列Ｐ側の状態ｓｐｉが終了状態に対応するか否かの判定を行う。ステップＳ２０１で、状態ｓｐｉが終了状態であると判定された場合（ＹＥＳ）には、ステップＳ２１８へ処理を分岐させ、一方、状態ｓｐｉが終了状態では無いと判定された場合（ＮＯ）には、ステップＳ２０２へ処理を分岐させる。
【００７８】
ステップＳ２０２からステップＳ２１６までのループでは、状態ｓｐｉを起点とする各遷移について、ループ内の処理が繰り返される。ステップＳ２０３では、追加の遷移の要否を表すフラグ（isTransition）を初期値「ＦＡＬＳＥ」にセットする。ステップＳ２０４からステップＳ２１３までのループでは、状態ｓｋｉを起点とする各遷移について、当該ループ内の処理が繰り返される。
【００７９】
ステップＳ２０５では、ステップＳ２０２からステップＳ２１６までのループ、およびステップＳ２０４からステップＳ２１３までのループにより指定される状態ｓｐｉからの各遷移および状態ｓｋｉからの各遷移の組み合わせについて、集合演算を適用し、集合関係を特定する。ステップＳ２０６では、求められた集合関係に従って判定して、処理を選択的に分岐させる。
【００８０】
ステップＳ２０６で、集合関係が被包含であると判定された場合（ＩＮＣＬＵＤＥＤ）には、ステップＳ２０７へ処理を選択的に分岐させる。ステップＳ２０７では、遷移の要否を表すフラグ（isTransition）を「ＦＡＬＳＥ」の値に上書きし、ステップＳ２０８では、ループにより指定される状態ｓｐｉからの遷移の遷移条件Ｃｐｉと、部分状態列Ｋ側の階層レベルＬ（ｓｋｉ）とを対応付けて、不確定要素リスト（indeterminants）に記録する。
【００８１】
ステップＳ２０９では、ＤＦＡ変換処理Ｂ自身を再帰的に呼び出す。再帰呼び出しの際には、ループにより指定される遷移に続く次の状態ｓｋｊ、状態ｓｐｊ、ステップＳ２０８で要素が記録された不確定要素リスト（indeterminants）、同意性が確認されたことを表すフラグ（isMatchedBefore）の値「ＴＲＵＥ」を引数として与える。再帰呼び出しから制御を戻されて、ステップＳ２１０では、不確定要素リスト（indeterminants）から、ステップＳ２０８で加えた遷移条件Ｃｐｉを除き、ステップＳ２１３へ処理を進める。
【００８２】
ステップＳ２０６で、集合関係が交差であると判定された場合（ＩＮＴＥＲＳＥＣＴ）には、ステップＳ２０８へ処理を選択的に分岐させる。ステップＳ２０８では、集合関係が被包含であると判定された場合と同様に、ループにより指定される状態ｓｐｉからの遷移の遷移条件Ｃｐｉと、部分状態列Ｋ側の階層レベルＬ（ｓｋｉ）とを対応付けて、不確定要素リスト（indeterminants）に記録する。
【００８３】
ステップＳ２０９では、集合関係が被包含であると判定された場合と同一の引数を与えて、ＤＦＡ変換処理Ｂ自身を再帰的に呼び出す。再帰呼び出し先の処理から制御を戻されて、ステップＳ２１０では、不確定要素リスト（indeterminants）から、ステップＳ２０８で加えた遷移条件Ｃｐｉを除き、ステップＳ２１３へ処理を進める。
【００８４】
ステップＳ２０６で、集合関係が同値であると判定された場合（ＥＱＵＡＬＳ）には、ステップＳ２１１へ処理を選択的に分岐させる。ステップＳ２１１では、遷移の要否を表すフラグ（isTransition）を「ＦＡＬＳＥ」の値に上書きし、ステップＳ２１２では、集合関係が被包含または交差であると判定された場合と同一の引数を与えて、ＤＦＡ変換処理Ｂ自身を再帰的に呼び出す。再帰呼び出しから制御を戻されると、ステップＳ２１３へ処理を進める。
【００８５】
ステップＳ２０６で、集合関係が包含であると判定された場合（ＩＮＣＬＵＤＥＳ）には、ステップＳ２１２へ処理を選択的に分岐させる。ステップＳ２１２では、集合関係が同値であると判定された場合と同様に、ＤＦＡ変換処理Ｂ自身を再帰的に呼び出し、再帰呼び出しから制御を戻されて、ステップＳ２１３へ処理を進める。一方、ステップＳ２０６で、集合関係が排他であると判定された場合（ＥＸＣＬＵＤＥＳ）、ステップＳ２１３へ処理を選択的に分岐させる。上記ステップＳ２０９およびステップＳ２１２による再帰呼び出しは、すべての遷移が排他（ＥＸＣＬＵＤＥＳ）の関係となるか、または状態Ｓｐｉが終了状態に達するまでネストされることとなる。
【００８６】
ステップＳ２０４からステップＳ２１３までのループを抜け出すと、ステップＳ２１４へ処理が進められる。ステップＳ２１４では、フラグ（isTransition）から遷移の要否を判定する。このフラグ（isTransition）は、状態ｓｋｉを起点とする遷移が、被包含（ＩＮＣＬＵＤＥＤ）および交差（ＩＮＴＥＲＳＥＣＴＳ）のいずれか１つの関係を有する少なくとも１つの遷移を含む場合、「ＦＡＬＳＥ」を保持していることとなる。また、図６に示すＤＦＡ変換処理Ａから呼び出され、かつ状態ｓｋｉを起点とする遷移が、すべて排他（ＥＸＣＬＵＤＥ）の関係であった場合にも、同意性が一度も確認されていないため、フラグ（isTransition）は、「ＦＡＬＳＥ」を保持していることとなる。一方、少なくとも１以上の同意性が確認され、かつ、状態ｓｐｉを起点とする遷移が、状態ｓｋｉを起点とするすべての遷移に対して同値および被包含のいずれの関係にも該当しない場合には、「ＴＲＵＥ」を保持していることとなる。
【００８７】
ステップＳ２１４で、追加の遷移が要であると判定された場合（ＹＥＳ）には、処理をステップＳ２１５へ分岐させる。ステップＳ２１５では、遷移リンク定義部７４が呼び出されて、再帰呼び出しの文脈により指定される状態ｓｋｉから、ループおよび再帰呼び出しの文脈により指定される状態ｓｐｊへの遷移リンクを生成し、ステップＳ２１６へ処理を進める。ステップＳ２１５において、遷移リンクを生成する際には、不確定要素リスト（Indeterminants）に記録されている遷移条件の要素を、当該遷移リンクの条件として付加する。例えば、一度、被包含または交差の関係であるとして、ステップＳ２０８で不確定要素リスト（Indeterminants）に要素が加えられて、ステップＳ２０９で再帰呼び出しが行われた場合であって、再帰呼び出し先処理で、すべての遷移が交差、包含または排他の関係であるとして、ステップＳ２１５に進められた場合、不確定要素リスト（Indeterminants）には要素が残されていることとなる。
【００８８】
一方、ステップＳ２１４で、追加の遷移が不要であると判定された場合（ＮＯ）には、処理をステップＳ２１６へ直接分岐させる。ステップＳ２０２からステップＳ２１６までのループを抜け出すと、ステップＳ２１７へ処理が進められて、当該ＤＦＡ変換処理Ｂを終了させて、呼び出し元の処理へ制御を戻す。
【００８９】
ステップＳ２０１で、状態ｓｐｉが終了状態であると判定された場合（ＹＥＳ）には、ステップＳ２１８へ処理が分岐され、ステップＳ２１８では、再帰呼び出しの文脈により指定される状態ｓｋｉから状態ｓｐｉへの終了状態リンクを生成し、ステップＳ２１７へ処理を進め、当該ＤＦＡ変換処理Ｂの呼び出し元の処理へ制御を戻す。ステップＳ２１８において、終了状態リンクを生成する際には、不確定要素リスト（Indeterminants）に記録されている遷移条件の要素を、当該終了状態リンクの参照の条件として付加する。
【００９０】
図８は、図６および図７に示した変換処理を実装するためのプログラミングコードの擬似コードを示す。図８に示す擬似コード中、「void makeDFATransitions(State state, State iniState)」文で定義されたメソッドが、図６にフローチャートで示したＤＦＡ変換処理Ａに対応し、「void makeDFATransitions(State srcState, State destState, List<Pattern> indeterminants, boolean isMatchedBefore )」文で定義されたメソッドが、図７にフローチャートで示したＤＦＡ変換処理Ｂに対応する。また、図８に示す擬似コード中、「generateEndTransition (srcState, destState, indeterminants)」および「geneDFATransition (srcState, destTr, indeterminants)」は、それぞれ、終了状態リンク定義部７６および遷移リンク定義部７４の処理を実行するメソッドに対応する。
【００９１】
（５）ＤＦＡ変換出力例
以下、図９および図１０を参照して、変換処理後の結果出力を例示する。図９は、入力される単語列パターンのデータ構造を例示する。図９に示す単語列パターンは、ＸＭＬ（eXtensible Markup Language）のタグにより記述されており、＜ｍｉ＞タグにて単語列パターンが定義されている。＜ｍｉ＞タグ内にネストされた＜ｗ＞タグによって単語列パターンに含まれる単語およびその順序が定義付けられ、ｓｔｒ属性は、単語の文中に現れる文字列表現（字面）を示し、ｌｅｘ属性は、単語の辞書中の文字列表現（原型）を示す。それぞれの表現には、正規表現を含むことができる。つまり、これらの単語列パターンは、ｓｔｒ属性により文中に現れる単語の字面にマッチし、ｌｅｘ属性によりその単語の辞書表現（原型）にマッチするよう設計されており、単語が内包する種々の情報に対する制約を含んで構成されている。
【００９２】
図１０は、（Ａ）図９に示す単語列パターンから生成されるトライ木、および（Ｂ）トライ木から変換される照合データ構造を一例として模式的に示す。図９に示す単語パターンが入力された場合、まず、図１０に示すルートノードを始点として実線矢印で示すエッジにより接続された複数のノードからなるトライ木２２０が生成される。図１０中の各ノードに記した番号は、図９に示す単語列パターンのデータ構造中＜ｗ＞タグのｉｄ属性の値に対応し、エッジに記した記号は、＜ｗ＞タグのｓｔｒ属性およびｌｅｘ属性の値に対応する。
【００９３】
また、図１０（Ａ）には、トライ木２２０から取り出したノード列２２２が示されている。ノード列２２２中のノード（６）への遷移条件は、トライ木２２０のノード（１７）への遷移条件に対し同意性を有し、またノード列２２２中のノード（６）からノード（７）への遷移条件は、トライ木２２０のノード（１７）から終了状態ノード（１８）への遷移条件と同意性を有している。したがって、ノード（７）から終了状態ノード（１８）へ終了状態リンクが生成される。その参照条件は、部分状態列Ｋとに対する不確定部分の制約（Ｗ１，Ｗ２）が適宜付されることとなる。
【００９４】
また、またノード列２２２中のノード（７）への遷移条件は、トライ木２２０のノード（１７）からノード（２０）への遷移条件と排他の関係を有している。したがって、ノード（７）の親ノード（６）からノード（２０）へ遷移リンクが生成される。その遷移条件は、部分状態列Ｋに対する不確定部分の制約（Ｗ１）が適宜付されることとなる。同様に、ノード列２２２中の終了状態ノード（８）への遷移条件は、トライ木２２０のノード（２）への遷移条件と同値の関係を有し、ノード（８）の子ノードが存在しないため、ノード（８）からノード（３）およびノード（６）へ、遷移リンクが生成されることとなる。図１０（Ｂ）は、図９に示した単語列パターンから最終的に得られる照合データ構造を例示する。
【００９５】
（６）パターン照合処理
以下、本実施形態の照合構造定義部５０によりトライ木生成処理および変換処理により定義付けられる照合データ構造１００を参照してパターン照合を実行するオートマトン８０の処理について、図１１を参照して説明する。
【００９６】
本実施形態のオートマトン８０は、入力単語を保持する単語リストとともに用いられる。単語リストは、初期状態ｓ０に戻ると一度空にされて、状態を遷移する毎に、その際にマッチした単語を順に格納してゆく。遷移リンクを介した遷移では、遷移先の状態の階層レベルに応じて単語リストに格納された単語列の長さを切り詰めて、単語リスト中のインデックスが常にトライ木のパスに応じた個数と一致するようにする。不確定要素リスト中の要素の階層レベルと、単語リストの比較すべき単語の位置とが一致することとなり、効率的にパターン照合を行うことが可能となる。
【００９７】
図１１は、本実施形態のコンピュータ装置１０が実行するパターン照合処理を示すフローチャートである。図１１に示す処理は、外部指令などに応じてオートマトン８０が呼び出されて、ステップＳ３００から開始される。ステップＳ３０１では、オートマトン８０の状態ｓを、ルートノードに対応する初期状態ｓ０にセットし、保持する単語数ｎが０である空の単語リストの格納領域を確保する。ステップＳ３０２では、次に処理すべき単語が入力文書１３０中に存在するか否かを判定する。
【００９８】
ステップＳ３０２で、処理すべき単語が存在しないと判定された場合（ＹＥＳ）には、ステップＳ３１３へ分岐させて、パターン照合処理を終了する。一方、ステップＳ３０２で、処理すべき単語が存在すると判定された場合（ＮＯ）には、ステップＳ３０３へ処理を進める。ステップＳ３０３では、入力文書１３０から次の単語を読み出して、遷移条件との比較を行うために、一時的に単語リストの最後尾に追加する。
【００９９】
ステップＳ３０４では、オートマトン８０は、照合データ構造１００を参照して、現在の状態ｓを起点とした遷移の条件と、単語リストの最後尾に追加された単語との比較を行い、マッチする遷移を検索する。このとき、追加された条件付き遷移リンクについては、不確定部分の位置が階層レベルにより示されているため、単語リスト中の対応する位置の単語が満たすべき制約を満たしているか否かについても判定する。ステップＳ３０５では、オートマトン８０は、マッチする遷移が存在するか否かを判定する。ステップＳ３０５で、マッチする遷移が存在しないと判定された場合（ＹＥＳ）には、ステップＳ３１０へ処理を分岐させる。一方、ステップＳ３０５で、マッチする遷移が見つかった場合（ＮＯ）には、ステップＳ３０６へ処理を分岐させる。
【０１００】
ステップＳ３０６では、オートマトン８０は、見つかった遷移を介して次の状態へ遷移する。この際、遷移条件が満たされる複数の遷移が見つかった場合には、階層レベルの深い状態に優先的に遷移させる。またこのとき、比較のため一時的に単語リストに格納されていた単語がマッチしたものとして確定される。ステップＳ３０７では、オートマトン８０は、遷移先の階層レベルに応じて、単語リストから適宜先頭から単語を削除して、格納された単語列の長さを切り詰める。通常のトライ木のエッジに対応する遷移の場合には、切り詰められることなく、単語数ｎが維持される。一方、ノード間に付加された遷移リンクである場合には、遷移先の階層レベルに合わせて切り詰められることとなる。
【０１０１】
ステップＳ３０８では、オートマトン８０は、遷移後の状態が終了状態であるか否か、つまり結果出力が必要であるか否かを判定する。ステップＳ３０８で、結果出力が必要であると判定された場合（ＹＥＳ）には、ステップＳ３０９へ処理を分岐させる。ステップＳ３０９では、オートマトン８０は、この終了状態に対して定義された出力関数に応じたアクションを実行し、結果出力１４０を実行する。このとき、条件付き終了状態リンクについては、不確定部分の位置が階層レベルにより示されているため、単語リスト中の対応する位置の単語が満たすべき制約を満たしているか否かを判定する。そして、ステップＳ３０９の後、再びステップＳ３０２へ処理をループさせて、次の単語に対する処理へと進める。一方、ステップＳ３０８で、出力が必要ないと判定された場合（ＮＯ）には、ステップＳ３０２へ処理をループさせ、次の単語に対する処理へと進める。
【０１０２】
上記ステップＳ３０５で、マッチする遷移が存在しないと判定された場合（ＹＥＳ）には、ステップＳ３１０へ処理が分岐される。ステップＳ３１０では、オートマトン８０は、現在の状態ｓが初期状態ｓ０であるか否かを判定する。ステップＳ３１０で、初期状態ｓ０であった場合（ＹＥＳ）には、ステップＳ３１２へ処理を分岐させる。ステップＳ３１２では、単語リストに一時的に格納されている処理対象の単語が、ルートノードからのいずれの遷移にもマッチしないため、この単語を破棄し、単語リストを空にして、ステップＳ３０２へ処理を分岐させて、次の単語に対する処理へと進める。
【０１０３】
一方、ステップＳ３１０で、現在の状態ｓが初期状態ｓ０ではなかった場合（ＮＯ）には、ステップＳ３１１へ処理を分岐させる。ステップＳ３１１では、オートマトン８０は、状態ｓを初期状態ｓ０に再びセットし、処理対象の単語を残して、先頭から単語リストに格納された単語列の長さを切り詰め、ステップＳ３０４へループさせて、再度、初期状態ｓ０からの遷移のうち、この単語にマッチする遷移を検索する。
【０１０４】
（７）パターン照合における計算効率およびメモリ使用量
上述まで説明した変換処理を、１以上の単語列パターンを格納するトライ木に適用することによって、パターン照合においてトライ木の状態数ｎである単語列パターンの集合を単語数ｍである入力文書に対して適用する際の計算量が、Ｏ（ｍ）に短縮される。ここで、状態の平均データ・サイズをｋバイト、遷移の平均データ・サイズをｐバイトとすると、全ノードから全ノードへのリンクが存在する最悪のケースでも、リンクの数はｎ２であるため、このときに消費するメモリ使用量Ｍは、（ｋｎ＋ｐｎ２）バイトである。例えば、状態数ｎが１００、状態の平均データ・サイズｋが１０００バイト、遷移の平均データ・サイズｐが５００バイトであるとき、メモリ使用量は、５．１メガバイトとなる。
【０１０５】
一方、単語の集合が有限集合であるとすることで、単語の集合を展開して、非特許文献３に開示されるようなＤＦＡ法を直接適用することも理論上は可能である。しかしながら、この場合、計算量はＯ（ｍ）となるが、制約にマッチする単語集合に含まれる平均の単語数ｄに対して、展開によりトライの状態数はｎｄに増加するため、メモリ使用量は、（ｋｎｄ＋ｐ（ｎｄ）２）バイトとなり、変換前のトライ木の状態数ｎとマッチする単語集合の平均的な大きさｄに対して、非常に大きなメモリ領域が必要となる。例えば、状態数ｎが１００、マッチする平均の単語数ｄが１００、状態の平均データ・サイズｋが１０００バイト、遷移の平均データ・サイズｐが５００バイトであるとき、メモリ使用量は、５０ギガバイトとなる。
【０１０６】
他の手法としては、曖昧さを発生させる交差と被包含の場合を、論理結合によって複数の曖昧さのない正規表現に変換する方法が考えられる。しかしながら、この場合、全ノードから全ノードへの失敗関数が存在し、その全ての関係が交差である最悪のケースでは、変換前のトライの状態数ｎに対し、変換後の状態数はｎ３となる。これは、各ノードが全ノード集合のべき集合に展開されるためである。このときに使用するメモリ使用量は、（ｋｎ３＋ｐｎ３）バイトとなる。例えば、状態数ｎが１００、状態の平均データ・サイズｋが１０００バイト、遷移の平均データ・サイズｐが５００バイトであるとき、メモリ使用量は、１．５ギガバイトとなる。加えてこの方法では、各ノードからの遷移を選択する際の照合の回数が、ｎ２回となり、スケーラビリティの観点からも充分なものとはいえない。
【０１０７】
これに対し、本実施形態の照合データ構造を使用したパターン照合では、計算量がＯ（ｍ）であり、メモリ使用量がｋｎ＋ｐｎ２バイト程度であり、また各ノードからの遷移を選択する際の比較回数がｎ×ｌｏｇ  ｎ回である。つまり、本実施形態の照合データ構造に従うパターン照合は、メモリ使用量、計算効率およびスケーラビリティの観点から、上記他の手法に比べて優れているものと言える。本実施形態の照合データ構造を使用したパターン照合では、不確定部分の再評価を行うため、一種のバックトラックが発生するが、本質的に必要な条件の評価だけに絞られるため、最悪のケースでもトライ木と比較して実行効率は低下しない。
【０１０８】
（８）ハードウェア構成
図１２は、本実施形態のコンピュータ装置１０の概略的なハードウェア構成を示す。図１２に示すコンピュータ装置１０は、中央処理装置（ＣＰＵ）１２と、ＣＰＵ１２が使用するデータの高速アクセスを可能とするＬ１およびＬ２などのレベルを有するキャッシュ・メモリ１４と、ＣＰＵ１２の処理を可能とするＲＡＭ、ＤＲＡＭなどの固体メモリ素子から形成されるシステム・メモリ１６とを備えている。
【０１０９】
ＣＰＵ１２、キャッシュ・メモリ１４、およびシステム・メモリ１６は、システム・バス１８を介して、他のデバイスまたはドライバ、例えば、グラフィックス・ドライバ２０およびネットワーク・インタフェース・カード（ＮＩＣ）２２へと接続されている。グラフィックス・ドライバ２０は、バスを介して外部のディスプレイ２４に接続されて、ＣＰＵ１２による処理結果をディスプレイ画面上に表示させることができる。また、ＮＩＣ２２は、物理層レベルおよびデータリンク層レベルでコンピュータ装置１０を、ＴＣＰ／ＩＰなどの適切な通信プロトコルを使用するネットワークへと接続している。
【０１１０】
システム・バス１８には、さらにＩ／Ｏバス・ブリッジ２６が接続されている。Ｉ／Ｏバス・ブリッジ２６の下流側には、ＰＣＩなどのＩ／Ｏバス２８を介して、ＩＤＥ、ＡＴＡ、ＡＴＡＰＩ、シリアルＡＴＡ、ＳＣＳＩ、ＵＳＢなどにより、ハードディスク３０が接続されている。また、Ｉ／Ｏバス２８には、ＵＳＢなどのバスを介して、キーボードおよびマウスなどのポインティング・デバイスなどの入力装置３２が接続されていて、この入力装置３２によりユーザ・インタフェースが提供される。
【０１１１】
コンピュータ装置１０のＣＰＵ１２としては、いかなるシングルコア・プロセッサまたはマルチコア・プロセッサを用いることができ、より具体的には、例えば、Ｘｅｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、ＰＯＷＥＲ５（登録商標）、ＰＯＷＥＲ６（登録商標）、ＰＯＷＥＲ  ＰＣ（登録商標）などＣＩＳＣまたはＲＩＳＣチップなどを挙げることができる。コンピュータ装置１０は、ＷＩＮＤＯＷＳ（登録商標）２００Ｘ、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などのオペレーティング・システム（以下、ＯＳとして参照する。）により制御され、ＯＳの管理の下、システム・メモリ１６上などにプログラムを展開し、プログラムを実行することにより、各ハードウェア資源を動作制御することによって、上述した機能部の構成および処理をコンピュータ上に実現することができる。
【０１１２】
（９）実験
（９−１）コンピュータにおける実装
クロック数１．８ＧＨｚのＰＥＮＴＩＵＭ（登録商標）Ｍプロセッサと２ＧＢのＲＡＭを備えるＴｈｉｎｋＰａｄ（登録商標）Ｘ３２を用いて、本実施形態によるオートマトンの処理を実現するコンピュータ・システムを実装した。このコンピュータ・システムのオペレーティング・システムは、ＷＩＮＤＯＷＳ（登録商標）ＸＰ・Ｓｅｒｖｉｃｅ
Ｐａｃｋ２とした。上記プログラムは、ＪＡＶＡ（登録商標）によって記述した。
【０１１３】
（９−２）実験結果
トライ木構造データ１１０のみを参照するオートマトンと、本発明の付加リンク構造データ１２０を含む照合データ構造１００を参照するオートマトンとによる、サンプル文書に対するパターン照合の平均処理時間を計測して評価した。なお、サンプル文書は、Red Book IBM Virtualization Engine TS7700: Tape Virtualization for System z Servers Consolidate and protect your data with a Three Cluster Grid configurationからサンプリングしたものを使用した。また、１９の単語列パターンをトライ木に変換したところ、状態数は３７であった。
【０１１４】
図１３は、上記実装されたコンピュータ・システムを用いた実験結果を示すグラフである。図１３に示すグラフは、上記実装されたコンピュータ・システムを用いて、サンプル文書に対しパターン照合処理を実行し、パターン照合を完了させるまでの平均処理時間（Average duration / ms）を、サンプル文書のデータ・サイズ（Document size / KB）に対してプロットしたグラフである。記号◆は、トライ木のみを参照するオートマトンによる実験例の結果を示し、記号■は、本発明の照合データ構造（ＤＦＡ構造）を参照するオートマトンによる実験例の結果を示す。
【０１１５】
図１３に示すように、照合データ構造を参照するオートマトンの方が、トライ木のみを参照するオートマトンに対し、少なくとも文書のデータ・サイズが実験範囲の１００ＫＢから１０００ＫＢにわたって、平均計算時間が短縮された。さらに、照合データ構造を参照するオートマトンと、トライ木のみを参照するオートマトンとの間の平均計算時間の差は、データ・サイズが大きくなるに従って顕著になった。
【０１１６】
図１３に示す実験結果から、本発明の照合データ構造を参照するオートマトンは、トライ木のみを用いる場合に比べて、高い計算効率でパターン照合処理を実現可能であることが示された。
【０１１７】
以上説明したように、本発明によれば、正規表現を含む場合であっても、単語パターンとテキスト情報との照合処理を、省メモリかつ高い計算効率で実現することを可能とする情報処理装置、情報処理方法およびプログラムを提供することが可能となる。
【０１１８】
上記トライ木から変換処理により変換されて定義付けられたデータ構造を参照してパターン照合処理を実行するオートマトンは、追加の遷移リンクを介して状態間を遷移させ、１以上の制約パターンを表現するトライ木を効率的に渡り歩き、対象の入力情報中の各単語パターンにマッチした部分を計算効率高く抽出することが可能となる。また、上記追加の遷移リンクには、遷移元の上記部分状態列Ｋの末尾までマッチした場合に、プレフィックス状態列にもマッチしたと見なすために満たすべき不確定部分に対する制約が追加的に定義される。したがって、制約パターンが正規表現を含む場合のように、制約パターン間の部分的な一致を確定することができない場合であっても、不確定な部分の再評価を最小限とすることにより、効率的にパターン照合を実行することができる。加えて、上記追加の遷移リンクは、遷移エッジの遷移条件間の集合関係を判定しつつ定義されるため、最小限の遷移リンクのみが定義され、もって、メモリ使用量を低減することが可能となる。
【０１１９】
参照リンクが定義付けられたデータ構造を参照してパターン照合処理を実行するオートマトンは、トライ木を渡り歩いている間、参照リンクの元となる状態に到達した段階で、不確定部分の最小限の再評価のみのリンク先の終了状態に対応する出力を発生させることができる。したがって、より高い計算効率にてパターン照合の結果出力を行うことが可能となる。
【０１２０】
なお、本発明につき、発明の理解を容易にするために各機能部および各機能部の処理を記述したが、本発明は、上述した特定の機能部が特定の処理を実行する外、処理効率や実装上のプログラミングなどの効率を考慮して、いかなる機能部に、上述した処理を実行するための機能を割当てることができる。
【０１２１】
また、本発明は、日本語の他、英語、フランス語、ロシア語、韓国語、中国語、アラビア語など、如何なる言語に対しても適用可能であることは言うまでもない。
【０１２２】
本発明の上記機能は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙなどのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
【０１２３】
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【０１２４】
【図１】本実施形態のコンピュータ装置１０の機能ブロック図。
【図２】（Ａ）１以上の単語列パターンから生成されるトライ木のデータ構造、および（Ｂ）トライ木から変換されたデータ構造を例示する模式図。
【図３】入力テキスト情報から所望の意味表現を抽出するために定義される単語パターンのデータ構造を示す模式図。
【図４】変換処理の部分的な処理を例示する模式図。
【図５】変換処理の部分的な処理を例示する模式図。
【図６】本実施形態のコンピュータ装置が実行する変換処理を示す第１のフローチャート。
【図７】本実施形態のコンピュータ装置が実行する変換処理を示す第２のフローチャート。
【図８】変換処理を実装するためのプログラミングコードの擬似コードを示す図。
【図９】入力される単語列パターンのデータ構造を例示する図。
【図１０】（Ａ）単語列パターンから生成されるトライ木、および（Ｂ）トライ木から変換される照合データ構造を一例として模式的に示す図。
【図１１】本実施形態のコンピュータ装置が実行するパターン照合処理を示すフローチャート。
【図１２】本実施形態のコンピュータ装置の概略的なハードウェア構成を示す図。
【図１３】本実施形態によるオートマトンを実装したコンピュータ・システムを用いた実験結果を示すグラフ。
【図１４】係り受け関係の抽出処理を示す図。
【符号の説明】
【０１２５】
１０…コンピュータ装置、１２…ＣＰＵ、１４…キャッシュ・メモリ、１６…システム・メモリ、１８…システム・バス、２０…グラフィックス・ドライバ、２２…ＮＩＣ、２４…ディスプレイ、２６…Ｉ／Ｏバス・ブリッジ、２８…Ｉ／Ｏバス、３０…ハードディスク、３２…入力装置、５０…照合構造定義部、６０…トライ木生成部、７０…変換処理部、７２…相似構造探索部、７４…遷移リンク定義部、７６…終了状態リンク定義部、８０…オートマトン、１００…照合データ構造、１１０…トライ木構造データ、１２０…付加リンク構造データ、１３０…入力文書、１４０…結果出力、１５０…単語列パターン、２０２…ルートノード、２０４…エッジ、２０６…ノード、２０８…葉ノード、２１０…データ構造、２１２…ノード、２１４…条件付き遷移リンク、２１６…遷移リンク、２１８…条件付き終了状態リンク、２２０…トライ木、２２２…ノード列
【図１】
2010026689.tif 000004
【図２】
2010026689.tif 000005
【図３】
2010026689.tif 000006
【図４】
2010026689.tif 000007
【図５】
2010026689.tif 000008
【図６】
2010026689.tif 000009
【図７】
2010026689.tif 000010
【図８】
2010026689.tif 000011
【図９】
2010026689.tif 000012
【図１０】
2010026689.tif 000013
【図１１】
2010026689.tif 000014
【図１２】
2010026689.tif 000015
【図１３】
2010026689.tif 000016
【図１４】
2010026689.tif 000017