(57)【要約】【課題】文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくい構文解析装置を提供する。【解決手段】解析対象文を複数の文要素に分割し、分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成し、当該生成された修正文法規則を用いて文要素の構文解析を行う構文解析装置である。【選択図】図２
2010079705.tif 000002
【特許請求の範囲】
【請求項１】
解析対象文を複数の文要素に分割する分割手段と、
前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段と、
前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段と、
を含むことを特徴とする構文解析装置。
【請求項２】
前記分割された複数の文要素のそれぞれに対して構文解析を実行して得られる解析結果を連結して、前記解析対象文についての構文解析結果を出力する手段をさらに含む
ことを特徴とする請求項１記載の構文解析装置。
【請求項３】
前記文法規則生成手段は、前記分割された複数の文要素のうち、文末に位置する文要素以外の文要素について、前記修正文法規則を生成する
ことを特徴とする請求項１又は２記載の構文解析装置。
【請求項４】
前記文法規則生成手段は、前記文末に位置する文要素以外の文要素について、当該文要素の末尾の形態素が属する語彙種別ごとに、当該文要素を構成する各形態素の属する語彙種別に合致する文法規則を検索することにより、前記修正文法規則を生成する
ことを特徴とする請求項３記載の構文解析装置。
【請求項５】
解析対象文を複数の文要素に分割する分割手段、
前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段、及び
前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構文解析装置及びプログラムに関する。
【背景技術】
【０００２】
文の構造などを解析する構文解析処理において、解析対象となる文（解析対象文）が複文や重文などの場合、処理に時間がかかったり処理負荷が増大したりする傾向がある。そこで、解析対象文を予め複数の節に分割する手法が提案されている（例えば特許文献１、特許文献２、非特許文献１などを参照）。このような手法によれば、分割して得られる複数の節のそれぞれに対して構文解析を行うことで、解析対象文全体の構文解析が実現される。
【特許文献１】特開平７−２３０４６１号公報
【特許文献２】特開２００６−１８３５４号公報
【非特許文献１】市丸夏樹、飛松宏征、「接続助詞の結合順位に基づく複文の構文解析」、自然言語処理研究会報告、情報処理学会、２００３年１１月、Vol.2003、No.108、p.81-86）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
解析対象文が正しく複数の節に分割されれば、分割後の各節は少なくとも述語を含み、単独で通常の文としての構造を備えるので、一般的な文法規則を適用して構文解析を行うことが可能なはずである。ところが、解析対象文は常に正しく分割されるとは限らず、分割によって得られる文要素（解析対象文の一部分）が通常の文構造を備えた節になっていない場合もあり得る。このような場合、文要素に対して一般的な文法規則を用いて構文解析を行おうとしても、構文解析ができなかったり、正しい解析結果が出力されなかったりするおそれがある。
【０００４】
本発明は、文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくい構文解析装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１記載の発明は、構文解析装置であって、解析対象文を複数の文要素に分割する分割手段と、前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段と、前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段と、を含むことを特徴とする。
【０００６】
請求項２記載の発明は、請求項１記載の構文解析装置であって、前記分割された複数の文要素のそれぞれに対して構文解析を実行して得られる解析結果を連結して、前記解析対象文についての構文解析結果を出力する手段をさらに含むことを特徴とする。
【０００７】
請求項３記載の発明は、請求項１又は２記載の構文解析装置であって、前記文法規則生成手段は、前記分割された複数の文要素のうち、文末に位置する文要素以外の文要素について、前記修正文法規則を生成することを特徴とする。
【０００８】
請求項４記載の発明は、請求項３記載の構文解析装置であって、前記文法規則生成手段は、前記文末に位置する文要素以外の文要素について、当該文要素の末尾の形態素が属する語彙種別ごとに、当該文要素を構成する各形態素の属する語彙種別に合致する文法規則を検索することにより、前記修正文法規則を生成することを特徴とする。
【０００９】
請求項５記載の発明は、解析対象文を複数の文要素に分割する分割手段、前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段、及び前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１０】
請求項１及び５記載の発明によれば、文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくくなる。
【００１１】
請求項２記載の発明によれば、処理速度を犠牲にせずに、解析対象文全体に対する構文解析結果が得られる。
【００１２】
請求項３記載の発明によれば、文として成立しない可能性のある文要素だけ、修正文法規則による構文解析が実行される。
【００１３】
請求項４記載の発明によれば、文として成立しない可能性のある文要素について、文として成立する場合と成立しない場合の両方に対応した修正文法規則が生成される。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１５】
図１は、本発明の一実施形態に係る構文解析装置１の構成例を示す図である。構文解析装置１は、例えばパーソナルコンピュータ等であって、制御部１１と、記憶部１２と、操作部１３と、表示部１４と、を含んで構成される。
【００１６】
制御部１１は、例えばＣＰＵ等であって、記憶部１２に格納されるプログラムに従って各種の情報処理を実行する。本実施形態において制御部１１が実行する処理の具体例については、後述する。
【００１７】
記憶部１２は、例えばＲＡＭやＲＯＭ等のメモリ素子、ハードディスクなどを含んで構成される。記憶部１２は、制御部１１によって実行されるプログラムや、各種のデータを保持する。特に本実施形態では、記憶部１２は、形態素解析や構文解析に使用する辞書や文法規則のデータを記憶している。また、記憶部１２は、制御部１１のワークメモリとしても動作する。
【００１８】
操作部１３は、例えばキーボードやマウス等であって、利用者の指示操作を受け付けて、当該指示操作の内容を制御部１１に出力する。表示部１４は、例えば液晶ディスプレイ等であり、制御部１１からの指示に従って、画像の表示を行う。
【００１９】
以下、本実施形態に係る構文解析装置１が実現する機能について、説明する。構文解析装置１は、機能的に、図２に示すように、解析対象文分割部２１と、文法規則生成部２２と、文要素解析部２３と、解析結果連結部２４と、を含んで構成される。これらの機能は、例えば制御部１１が記憶部１２に格納されるプログラムを実行することにより、実現される。このプログラムは、例えばインターネット等の通信手段を介して提供されてもよいし、例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等、各種のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
【００２０】
解析対象文分割部２１は、まず構文解析装置１による解析の対象となる解析対象文を取得する。解析対象文は自然言語で記述された文であって、利用者が操作部１３を用いて入力してもよいし、予め記憶部１２などに記憶されていてもよい。ここでは解析対象文は日本語の文であることとする。
【００２１】
そして、解析対象文分割部２１は、予め定められた規則に基づいて、解析対象文を複数の文要素に分割する。すなわち、解析対象文分割部２１は、解析対象文が重文や複文などであって、それぞれ意味的にまとまって単独で文として成立する部分（節）を複数含んだ構造となっていると推定される場合に、解析対象文を意味的に区切っていると推定される区切り位置を特定し、当該特定した区切り位置で解析対象文を複数の文要素に分割する。ここで複数の文要素は、それぞれ解析対象文の一部を構成する文字列であって、文要素単独で一つの文としての意味を持っている（すなわち、少なくとも述語部分を含んでいる）と推測される文字列である。ただし、解析対象文分割部２１は常に正しく区切り位置を特定するとは限らず、文要素が意味的に単独の文として成立していない文字列（例えば名詞句や副詞句など）になってしまう場合もある。
【００２２】
具体的に、例えば解析対象文分割部２１は、解析対象文に対して形態素解析を実行し、解析対象文を構成する形態素を特定する。そして、特定された形態素の中から、文を意味的に区切るために一般的に用いられる品詞であると推定される形態素を抽出し、当該抽出した形態素の位置で解析対象文を分割する。この場合の解析対象文を意味的に区切る品詞の例としては、例えば「が」や「と」などの接続助詞や、助動詞「だ」の連用形である「で」などの活用語の連用形が挙げられる。このような分割処理は、例えば非特許文献１に記載された方法で実現されてよい。また、解析対象文分割部２１は、このような形態素の品詞によって区切り位置を決定する方法に限らず、例えば統計的手法によって文の区切り位置を特定してもよい。
【００２３】
以下では具体例として、
解析対象文Ａ：「北海道は雪で東京は天気だ。」
解析対象文Ｂ：「北海道は雪でお祭りをする。」
という二つの解析対象文に対して処理を行う場合について説明する。この例では、解析対象文分割部２１は、文の区切りである可能性のある形態素（ここでは助動詞「だ」の連用形である「で」）の位置で解析対象文を分割する。これにより、解析対象文Ａは、
文要素Ａ１：「北海道は雪で」
文要素Ａ２：「東京は天気だ。」
という二つの文要素に分割される。また、解析対象文Ｂは、
文要素Ｂ１：「北海道は雪で」
文要素Ｂ２：「お祭りをする。」
という二つの文要素に分割される。
【００２４】
文法規則生成部２２は、解析対象文分割部２１が解析対象文を分割して得られる文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する。具体的に、まず文法規則生成部２２は、解析対象文分割部２１の分割処理によって得られる複数の文要素のそれぞれに対して、標準文法規則により解析を行うか、あるいは当該文要素に適合する修正文法規則により解析を行うか、を決定する。そして、修正文法規則により解析を行うと決定した文要素について、当該文要素に適合する修正文法規則を生成する。
【００２５】
ここで、標準文法規則は、対象となる言語の文法に則って記述された、単独で文として成立する文要素を解析するための文法規則である。一方、修正文法規則は、単独で文として成立しているか否か不明な文要素について、当該文要素の構造に応じて動的に生成される文法規則であって、単独で文として成立していない文要素を記述する文法をも含んだ文法規則である。
【００２６】
日本語の文法においては、主語、述語の語順で文が記述され、また文頭から文末に向かう方向に沿って係り受けが生じるのが通常である。すなわち、ある語句を修飾する語句が修飾される語句より後に記述されることは一般的でない。さらに、主語や修飾語が省略されたとしても、文法構造に矛盾が生じるわけではなく、文としては成立する。そのため、解析対象文が日本語の場合、解析対象文を分割して得られる各文要素のうち、文末に位置する文要素については、標準文法規則に則って記述されている可能性が高い。そこで、文法規則生成部２２は、文末の側の文要素だけは標準文法規則を用いて解析を行うこととし、それ以外の文要素については、修正文法規則を生成することとしてもよい。逆に、解析対象の言語によっては、文頭に位置する文要素だけは標準文法規則を用いて解析し、それ以外の文要素については修正文法規則を生成することとしてもよい。また、全ての文要素について修正文法規則を生成することとしてもよい。
【００２７】
前述した解析対象文Ａ及びＢの例では、文要素Ａ１と文要素Ｂ１とは同一の文字列となっている。このうち、解析対象文Ａではまさに「で」の位置で文が意味的に区切られており、文要素Ａ１はそれ自体単独で一つの意味を持った文として成立している。ところが、解析対象文Ｂにおける「で」は格助詞であって、文要素Ｂ１は単体では文として成立していない。すなわち、この場合の「雪で」は「お祭りをする」を修飾しているのであって、文要素Ｂ１には述語が含まれていない。そのため、文要素Ｂ１に対して単独で文として成立していることを前提とした標準文法規則を適用してしまうと、正しい構文解析結果が得られないと考えられる。これに対して、ここでは文法規則生成部２２は、文末の側の文要素Ａ２及びＢ２に対しては標準文法規則を適用し、それ以外の文要素Ａ１及びＢ１に対しては修正文法規則を生成し、適用すると決定する。なお、解析対象文Ｂにおいて「お祭りをする」に係っている「雪で」は文要素Ｂ２には含まれていないが、それでも文要素Ｂ２は述語を含むので単独で文として成立しており、標準文法規則の適用が可能と考えられる。文法規則生成部２２が修正文法規則を生成する処理の具体例については、後述する。
【００２８】
文要素解析部２３は、文法規則生成部２２によって決定された文法規則を用いて、各文要素の構文解析を行う。特に、修正文法規則を用いて解析を行うと決定された文要素については、文法規則生成部２２が生成した修正文法規則を用いて構文解析を行う。この構文解析自体は、公知の方法によって実現されてよい。具体的には、例えば増市博、大熊智子著「Lexical Functional Grammarに基づく実用的な日本語解析システムの構築」（自然言語処理、言語処理学会、２００３年、Vol.10、No.2、p.79-109）に記載された方法などを利用してよい。
【００２９】
ここでは、標準文法規則を用いた構文解析の具体例について、説明する。図３は、標準文法規則の一例を示している。この図の例では、標準文法規則は、文として成立する文字列に含まれる形態素が満たすべき語順（各語の配列）のルールを示しており、複数の規則の集合によって構成されている。具体的に、規則１は、一つの文（ＲＯＯＴ）が、要素「Ｓ」の１個以上の繰り返しと、要素「ＰＥＲＩＯＤ」と、の連結により構成されることを示している。ここで記号「＋」は直前の要素の１個以上の繰り返しを意味している。また、要素「Ｓ」は、規則２に示されるように、要素「ＮＰｓ」の０個以上の繰り返しと、要素「ＶＰ」と、によって構成される。ここで記号「＊」は０個以上の繰り返しを意味している。したがって、要素「Ｓ」は１個の「ＶＰ」だけでも成立するし、「ＮＰｓ」が１個以上繰り返された後「ＶＰ」が並ぶ配列であってもよい。また、規則４において要素「Ｄ」に付された丸括弧は当該要素が省略可能であることを意味している。さらに、規則５における記号「｜」は「ＯＲ」を意味し、波括弧で囲まれて記号「｜」で区切られた各要素のうちの一つが択一的に選ばれることを意味している。このような規則の集合によって、日本語の文において、文を構成する各形態素が、どのような組み合わせ及び順序で配列されるか、が規定されている。なお、「ＰＥＲＩＯＤ」、「Ｄ」、「Ｎ」、「ＰＰ」、「Ｖ」、「ＡＤＪ」、「ＡＵＸＶ」、「ＡＵＸ」、及び「ＡＤＶ」は、それぞれ文を構成する形態素が属する語彙種別（語彙カテゴリ）を示している。各形態素がどの語彙カテゴリに属するのかは、語彙辞書によって規定される。図４は語彙辞書の一部の例を示しており、この図の例では、文を構成する形態素（見出し語）のそれぞれに対して、当該見出し語が属する語彙カテゴリが関連づけられている。なお、これらの図に示した標準文法規則や語彙辞書は、予め記憶部１２に記憶されていることとする。
【００３０】
このような語彙辞書と標準文法規則を用いて、前述した例における文要素Ａ２に対して構文解析を行った結果得られる構文木を図５に示す。この例では、文要素Ａ２に対して形態素解析を行うと、「東京」、「は」、「天気」、「だ」、「。」という形態素が得られる。図４の語彙辞書を参照すると、これら各形態素の属する語彙カテゴリが、それぞれ「Ｎ」、「ＰＰ」、「Ｎ」、「ＡＵＸＶ」及び「ＰＥＲＩＯＤ」であることが分かる。そして、規則４によって「Ｎ」と「ＰＰ」の配列が要素「ＮＰ」を構成すると判断され、規則３によって１個の要素「ＮＰ」が要素「ＮＰｓ」を構成することが分かる。このようにして、文要素を構成する各形態素の属する語彙カテゴリを特定し、文法規則への当てはめを行うことによって、図５に例示したような、文要素を構成する各形態素間のつながり（係り受け構造など）を示す構文木が得られる。
【００３１】
解析結果連結部２４は、文要素解析部２３によって得られる各文要素についての解析結果を連結する。これによって、解析対象文全体についての解析結果が得られる。このとき、解析対象文分割部２１が誤った区切り位置で解析対象文を分割している場合を考慮して、解析結果連結部２４は、ある一つの文要素を構成する構文木のノードのうち、文末の側の少なくとも一つのノードを、隣接する他の文要素を構成する構文木のノードに組み込む処理を実行することとする。これにより、最初に解析対象文の分割が正しく行われなかった場合でも、このような分割により得られる文要素に適合する文法規則を用いて解析を行い、その結果を修正しながら連結することで、最終的に正しい解析対象文全体の解析結果が得られる。このとき、解析対象文を分割して得られる、比較的短い（すなわち、形態素の数の少ない）文要素のそれぞれに対して構文解析を行うことにより、解析対象文全体について一度に構文解析を行う場合と比較して、処理速度の向上が期待される。なお、この連結処理の具体例についても、後述する。
【００３２】
以下、本実施形態に係る構文解析装置１が実行する処理の流れの具体例について、説明する。
【００３３】
最初に、文法規則生成部２２が文要素Ａ１に適合する修正文法規則を生成する文法規則生成処理の流れについて、図６、図７及び図８のフロー図に基づいて説明する。なお、文要素Ａ１及びＢ１は同じ文字列なので、文要素Ｂ１について生成される修正文法規則も、文要素Ａ１について生成される修正文法規則と同じものになる。
【００３４】
まず文法規則生成部２２は、文要素に対して形態素解析を行い、その処理結果を得る（Ｓ１）。文要素Ａ１が処理対象の場合、「北海道」、「は」、「雪」、「で」という４個の形態素が得られることになる。なお、解析対象文分割部２１が解析対象文の分割を行う際に解析対象文の形態素解析を行っていれば、文法規則生成部２２はその解析結果を利用することとしてもよい。
【００３５】
次に文法規則生成部２２は、Ｓ１で得られた形態素のそれぞれについて、記憶部１２に記憶されている語彙辞書を参照して、語彙カテゴリリストを取得する（Ｓ２）。図４に示される語彙辞書の例では、「北海道」及び「雪」は語彙カテゴリ「Ｎ」に属し、「は」は語彙カテゴリ「ＰＰ」に属している。また、「で」は「ＰＰ」及び「ＡＵＸＶ」の二つの語彙カテゴリに属している。そのため、文法規則生成部２２は、文要素Ａ１に対応する語彙カテゴリリストとして、｛Ｎ  ＰＰ  Ｎ  ｛ＰＰ｜ＡＵＸＶ｝｝を得る。なお、このリストの順序は文要素中の形態素の順序に対応しており、記号「｜」は前述した文法規則の例と同じく中括弧で囲まれて列挙された語彙カテゴリのいずれか一つであることを意味している。すなわち、この語彙カテゴリリストは、文要素Ａ１を構成する形態素の語彙カテゴリが、｛Ｎ  ＰＰ  Ｎ  ＰＰ｝か｛Ｎ  ＰＰ  Ｎ  ＡＵＸＶ｝のいずれかであることを表している。
【００３６】
続いて文法規則生成部２２は、Ｓ２で取得した語彙カテゴリリストにおける、末尾の形態素の語彙カテゴリ数を変数Ｎに格納する（Ｓ３）。ここでは末尾の形態素が属する語彙カテゴリは「ＰＰ」と「ＡＵＸＶ」の二個なので、Ｎ＝２になる。ここで、末尾の形態素の語彙カテゴリ数に着目しているのは、末尾の形態素の語彙カテゴリによって、処理対象の文要素が意味的に単独の文として成立する可能性もあるし、逆に末尾の形態素を含むいくつかの形態素が隣接する別の文要素とつながる修飾語の可能性もあるので、末尾の形態素の語彙カテゴリごとに場合分けして文法規則を検討するためである。
【００３７】
その後、文法規則生成部２２は、変数ｉに０を代入し（Ｓ４）、ｉ＜Ｎの条件を満たす間、以下に説明する処理を繰り返し行う。すなわち、文法規則生成部２２は、末尾の形態素が属する語彙カテゴリごとに、語彙カテゴリリストに適合する文法規則を生成して、出力する適合文法規則出力処理を実行する（Ｓ５）。なお、この適合文法規則出力処理の詳細については、後述する。末尾の形態素が属する語彙カテゴリの一つについてこの適合文法規則出力処理を実行すると、続いて文法規則生成部２２は、Ｓ５の出力結果を文法規則リストＧＬに追加し、さらに続いて文法規則リストＧＬに記号「｜」を追加する（Ｓ６）。この記号「｜」は、図３に例示した標準文法規則の場合と同様に「ＯＲ」を意味している。その後、文法規則生成部２２は、変数ｉに１を加算し（Ｓ７）、ｉ＜Ｎの条件を満たすか判定する（Ｓ８）。ｉ＜Ｎの条件を満たす場合、末尾の形態素が属する語彙カテゴリのうち、Ｓ５及びＳ６の処理がまだ実行されていない語彙カテゴリがあるので、末尾の形態素が属する語彙カテゴリを変更し、Ｓ５に戻って新たな語彙カテゴリリストについて適合文法規則出力処理が実行される。一方、ｉ＜Ｎの条件を満たさなくなる（すなわちｉ＝Ｎになる）と、末尾の形態素が属する全ての語彙カテゴリについて、Ｓ５及びＳ６の処理が実行されたことになるので、それまでに文法規則が追加された文法規則リストＧＬの内容を、解析処理に用いられる形式に整形して、出力する（Ｓ９）。このＳ９で出力される内容が、修正文法規則として、文要素Ａ１の構文解析に用いられる。
【００３８】
次に、前述したＳ５における適合文法規則出力処理の詳細について、図７のフロー図を用いて説明する。文要素Ａ１の場合、末尾の形態素「で」が属する語彙カテゴリは「ＰＰ」及び「ＡＵＸＶ」の２個なので、１回目の適合文法規則出力処理では「で」の語彙カテゴリが「ＰＰ」の場合を対象とし、語彙カテゴリリスト｛ＰＰ  Ｎ  ＰＰ  Ｎ｝に対して処理が実行される。また、２回目の適合文法規則出力処理では「で」の語彙カテゴリが「ＡＵＸＶ」の場合を対象とし、語彙カテゴリリスト｛ＰＰ  Ｎ  ＰＰ  ＡＵＸＶ｝に対して処理が実行される。
【００３９】
この処理は、語彙カテゴリリストを構成する要素が０になるまで、要素を末尾から順に減らしながら、繰り返し実行される。すなわち、まず文法規則生成部２２は、現時点での語彙カテゴリリストの内容に適合する文法規則を探索する文法規則探索処理を行う（Ｓ１１）。この文法規則探索処理は、語彙カテゴリリストの内容に適合する文法規則を探索して、その結果検出された文法規則を示す文字列を規則文字列として出力する処理である。この処理の詳細については後述するが、文要素Ａ１が処理対象であって、末尾の形態素が属する語彙カテゴリが「ＰＰ」の場合には、「ＮＰｓ」が規則文字列として出力される。また、末尾の形態素が属する語彙カテゴリが「ＡＵＸＶ」の場合には、「Ｓ」が規則文字列として出力される。
【００４０】
続いて文法規則生成部２２は、Ｓ１１で語彙カテゴリリストの内容に適合する文法規則が検出されたか否か判定する（Ｓ１２）。文法規則が検出されなかった場合には、語彙カテゴリリストの末尾の要素Ｗlastを、予め用意された文字列バッファＢ１の先頭に追加し（Ｓ１３）、文字列バッファＢ１に追加した要素Ｗlastを語彙カテゴリリストから削除する（Ｓ１４）。これは、語彙カテゴリリストの全体に適合する文法規則が見つからない場合に、文要素を構成する形態素を末尾に近い側から順に一つずつ除外しながら、語彙カテゴリリストを再評価するために実行される処理である。ここで、末尾に近い側から除外するのは、末尾の側の形態素が、後続する次の文要素と結合すると推定されるためである。Ｓ１４で語彙カテゴリリストから要素が削除されると、語彙カテゴリリストにまだ残っている要素があるか否か判定される（Ｓ１５）。残っている要素があれば、Ｓ１１に戻って、残った要素により構成される語彙カテゴリリストに適合する文法規則が探索される。
【００４１】
Ｓ１２の処理により、文法規則が検出されたと判定された場合、文法規則生成部２２は、これまでに文字列バッファＢ１に追加された要素があるか否か判定する（Ｓ１６）。文字列バッファＢ１に追加された要素が１個以上ある場合、この文字列バッファＢ１の内容を処理対象の語彙カテゴリリストとして、適合文法規則出力処理を再帰的に実行する（Ｓ１７）。その結果、文字列バッファＢ１内の語彙カテゴリのリストに適合する文法規則を表す文字列が出力される。その後、文法規則生成部２２は、Ｓ１１で出力された規則文字列と、Ｓ１７の処理によって文字列バッファＢ１の内容に適合するものとして出力された文法規則を表す文字列と、を適合文法規則出力処理の処理結果として出力する（Ｓ１８）。なお、文字列バッファＢ１に格納された要素がない場合（すなわち最初の文法規則探索処理で文法規則の探索に成功した場合）には、最初の文法規則探索処理で探索された文法規則を表す文字列だけが処理結果として出力される。
【００４２】
一方、Ｓ１５で残っている要素がないと判定される場合、文法規則生成部２２は、文字列バッファＢ１に格納された語彙カテゴリのリストを、そのまま適合文法規則出力処理の処理結果として出力する（Ｓ１９）。
【００４３】
文要素Ａ１が処理対象となる場合、１回目の適合文法規則出力処理（末尾の形態素の語彙カテゴリが「ＰＰ」の場合の処理）では「ＮＰｓ」が出力されるので、Ｓ６の処理では「ＮＰｓ｜」が文法規則リストＧＬに追加される。そして、２回目の適合文法規則出力処理（末尾の形態素の語彙カテゴリが「ＡＵＸＶ」の場合の処理）では「Ｓ」が出力されるので、文法規則リストＧＬには「Ｓ｜」が追加される。その結果、文法規則リストＧＬの内容は「ＮＰｓ｜Ｓ｜」となる。この文字列は、前述したＳ９の処理で整形される。具体的には、末尾の記号「｜」が取り除かれて、全体が波括弧で囲まれ、文法規則を表す形式にする処理が行われる。この結果、文要素Ａ１に適合する修正文法規則として、
ＲＯＯＴ＿ｍ  →  ｛ＮＰｓ｜Ｓ｝．
が得られる。この修正文法規則は、文要素Ａ１が文として成立している場合に適合する文法規則である「Ｓ」を含むとともに、末尾の形態素「で」の語彙カテゴリが「ＰＰ」であって文要素Ａ１全体が文として成立していない場合をも許容する文法規則となっている。図９（ａ）及び図９（ｂ）は、この修正文法規則を適用して文要素解析部２３が文要素Ａ１や文要素Ｂ１の構文解析を行った結果を示している。修正文法規則はＮＰｓとＳの両方を許容しているので、「北海道は雪で」という文要素に対して構文解析を行うと、図９（ａ）に示すように文要素がＮＰｓという文法規則に適合する場合、及び図９（ｂ）に示すように文要素がＳという文法規則に適合する（すなわち文要素単体で一つの意味を持った文として成立している）場合の２パターンの解析結果が得られる。
【００４４】
ここで、前述したＳ１１で実行される文法規則探索処理の具体例について、図８のフロー図を用いて説明する。
【００４５】
まず文法規則生成部２２は、対象となる語彙カテゴリリストに合致する文法規則を探索し、得られた文法規則を列挙した候補規則リストを出力する（Ｓ２１）。このとき、探索は図３に例示した標準文法規則を用いて行われる。例えば文法規則生成部２２は、標準文法規則の上位の規則から順に、語彙カテゴリリストの内容が規則の右辺の内容に合致するか否か判定し、合致すると判定される場合に、その規則の左辺の内容を文法規則の探索結果として出力する。語彙カテゴリリストが｛Ｎ  ＰＰ  Ｎ  ＰＰ｝の場合、語彙カテゴリリストに合致する文法規則はＮＰｓになり、Ｓ２１の処理で｛ＮＰｓ｝という要素数１の候補規則リストが得られる。また、語彙カテゴリリストが｛Ｎ  ＰＰ  Ｎ  ＡＵＸＶ｝の場合、語彙カテゴリリストに合致する文法規則はＳになり、｛Ｓ｝というやはり要素数１の候補規則リストが得られる。
【００４６】
続いて文法規則生成部２２は、変数ｊに０を格納し（Ｓ２２）、変数ｊの値がＳ２１で得られた候補規則リストの要素数より小さい間、候補規則リストに含まれる０から数えてｊ番目の要素（以下、候補規則Ｇｊという）を処理対象の文法規則として、以下の処理を繰り返し行う。すなわち、文法規則生成部２２は、候補規則Ｇｊによって規定される文法において最も末尾側に位置する形態素の語彙カテゴリが、語彙カテゴリリストの末尾の要素Ｗlastに一致するか否かを判定する（Ｓ２３）。一致する場合には、候補規則Ｇｊを表す文字列を、予め用意された文字列バッファＢ２に格納する（Ｓ２４）。一致しない場合には、Ｓ２４の処理は実行されない。いずれの場合も、文法規則生成部２２は、変数ｊに１を加算し（Ｓ２５）、ｊの値が候補規則リストの要素数より小さいか否かを判定する（Ｓ２６）。ｊの値が候補規則リストの要素数より小さければ、まだ候補規則リストに含まれる要素の全てについてＳ２３〜Ｓ２４の処理が実行されていないことになるので、未処理の要素を新たな候補規則Ｇｊとし、Ｓ２３に戻って新たな候補規則Ｇｊに対する処理を行う。一方、Ｓ２６の条件を満たさないと判定される場合、すなわちｊの値が候補規則リストの要素数に一致した場合、候補規則リストに含まれる全ての要素について処理を実行したことになるので、文字列バッファＢ２の内容を規則文字列として出力し（Ｓ２７）、文法規則探索処理を終了する。
【００４７】
次に、解析対象文Ａ及びＢとは別の解析対象文を例として、これまで説明した文法規則生成処理の流れの具体例について、さらに説明する。ここでは解析対象文として、
解析対象文Ｃ：「その泥棒が素早く逃げていった。」
解析対象文Ｂ：「その泥棒が素早く誰も逃げていったことに気がつかない。」
という二つの文を対象とする。この例では、解析対象文分割部２１は、形容詞「素早い」の連用形である「素早く」の位置で解析対象文を分割するものとする。これにより、解析対象文Ｃは、
文要素Ｃ１：「その泥棒が素早く」
文要素Ｃ２：「逃げていった。」
という二つの文要素に分割される。また、解析対象文Ｄは、
文要素Ｄ１：「その泥棒が素早く」
文要素Ｄ２：「誰も逃げていったことに気がつかない。」
という二つの文要素に分割される。これらの文要素のうち、文要素Ｃ２及びＤ２に対しては標準文法規則を用いて構文解析が実行され、文要素Ｃ１及びＤ１については修正文法規則が生成され、この修正文法規則を用いて構文解析が実行されることとする。
【００４８】
具体的に、文要素Ｃ１を文法規則生成処理の対象とする場合、まずＳ１の処理で文要素Ｃ１を構成する形態素として、「その」、「泥棒」、「が」、「素早く」が得られる。これらの形態素のうち、「素早く」は、図４に示す語彙辞書において、「ＡＤＪ」及び「ＡＤＶ」の２つの語彙カテゴリに属している。そのため、Ｓ２の処理では、語彙カテゴリリストとして、｛Ｄ  Ｎ  ＰＰ  ｛ＡＤＪ｜ＡＤＶ｝｝が得られ、Ｓ５の適合文法規則出力処理は、語彙カテゴリリスト｛Ｄ  Ｎ  ＰＰ  ＡＤＪ｝及び｛Ｄ  Ｎ  ＰＰ  ＡＤＶ｝のそれぞれを対象として、合計２回実行されることになる。
【００４９】
このうち、１回目の適合文法規則出力処理においては、｛Ｄ  Ｎ  ＰＰ  ＡＤＪ｝は最も上位の文法規則である「Ｓ」に合致しているので、Ｓ１１の文法規則探索処理によって、「Ｓ」という規則文字列が出力される。そのため、１回目の適合文法規則出力処理の後のＳ６の処理において、文法規則リストＧＬには「Ｓ｜」が格納される。
【００５０】
次に、２回目の適合文法規則出力処理では、｛Ｄ  Ｎ  ＰＰ  ＡＤＶ｝の全体に合致する文法規則は、図３に示した標準文法規則の中には存在しない。そのため、Ｓ１１の文法規則探索処理では規則文字列が出力されず、Ｓ１２で文法規則は検出されなかったと判定される。そのため、Ｓ１３で語彙カテゴリリストの末尾の要素Ｗlast（ここではＡＤＶ）を表す文字列が文字列バッファＢ１に追加され、Ｓ１４で語彙カテゴリリストは｛Ｄ  Ｎ  ＰＰ｝に更新される。その後、再びＳ１１で文法規則探索処理が実行されるが、今度は語彙カテゴリリストに適合する文法規則として「ＮＰｓ」が検出され、Ｓ１２で文法規則が検出されたと判定される。ここでは、文字列バッファＢ１にはＡＤＶが追加されているので、Ｓ１７で｛ＡＤＶ｝を対象とした適合文法規則出力処理が実行される。ここでは、｛ＡＤＶ｝は標準文法規則における規則６に合致するので、当該規則を示す文字列として「ＡＤＶＰ」が出力される。その結果、Ｓ１８で、｛Ｄ  Ｎ  ＰＰ  ＡＤＶ｝に対する適合文法規則出力処理の処理結果として、「ＮＰｓ  ＡＤＶＰ」が出力され、この文字列がＳ６の処理で記号「｜」とともに文法規則リストＧＬに追加される。
【００５１】
その後、Ｓ９の整形処理が実行されることにより、文要素Ｃ１に適合する修正文法規則として、
ＲＯＯＴ＿ｍ  →  ｛Ｓ｜ＮＰｓ  ＡＤＶＰ｝．
が得られる。なお、文要素Ｄ１についても同様の処理結果が得られる。図１０（ａ）及び図１０（ｂ）は、この修正文法規則を適用して文要素解析部２３が文要素Ｃ１や文要素Ｄ１の構文解析を行った結果を示している。図１０（ａ）は文要素が文として成立している場合に対応した解析結果を示しており、図１０（ｂ）は文要素が「ＮＰｓ  ＡＤＶＰ」という文法規則に適合する場合の解析結果を示している。このように、文要素Ａ１及びＢ１と同じく、文要素Ｃ１及びＤ１についても２パターンの解析結果が得られることになる。
【００５２】
次に、解析結果連結部２４が実行する解析結果連結処理の流れの具体例について、図１１のフロー図を用いて説明する。なお、文要素解析部２３によって１つの文要素について複数の解析結果が得られる場合、解析結果連結処理は、この複数の解析結果それぞれを対象として、複数回実行されることになる。例えば解析対象文Ａが解析対象の場合、文要素Ａ１については前述したように図９（ａ）及び図９（ｂ）の２つの解析結果が得られる。一方、文要素Ａ２については、図５に示す１つの解析結果が得られる。したがって、解析結果連結部２４は、図９（ａ）に示す解析結果と図５に示す解析結果を連結する処理、及び図９（ｂ）に示す解析結果と図５に示す解析結果を連結する処理を実行する。またここでは、修正文法規則を適用して解析された１個の文要素と、この文要素に続く文要素であって、標準文法規則を適用して解析された１個の文要素と、を連結する処理の例について説明するが、修正文法規則を適用して解析された文要素同士の連結についても、同様に実行すればよい。また、解析対象文が３個以上の文要素に分割された場合も、各文要素についての解析結果を順に連結していくことによって、最終的に解析対象文全体の解析結果が得られる。以下では、解析対象文を分割して得られる２個の文要素のうち、文頭の側の文要素に対して修正文法規則による構文解析を行って得られる構文木を構文木Ｔｍと表記し、文末の側の文要素に対して標準文法規則による構文解析を行って得られる構文木を構文木Ｔｓと表記する。
【００５３】
まず解析結果連結部２４は、構文木Ｔｍにおいて、ＲＯＯＴ＿ｍ直下のノードが複数あるか否かを判定する（Ｓ３１）。ＲＯＯＴ＿ｍ直下のノードが一つしかない場合、解析結果連結部２４は、当該ＲＯＯＴ＿ｍ直下のノードと、構文木Ｔｓにおいて当該ＲＯＯＴ＿ｍ直下のノードと隣接するノード（以下、隣接ノードという）と、が同種のノードか否かを判定する（Ｓ３２）。ここで、隣接ノードは、構文木ＴｓにおけるＲＯＯＴ直下の「Ｓ」ノードの直下のノードのうち、一番文頭の側のノード（すなわち、構文木Ｔｍに近い側のノード）である。Ｓ３２で両者が同種のノードと判定される場合、構文木ＴｍにおけるＲＯＯＴ＿ｍ直下のノードを、構文木Ｔｓの隣接ノードと並列するように連結する（Ｓ３３）。
【００５４】
一方、Ｓ３２でＲＯＯＴ＿ｍ直下のノードとその隣接ノードとが異なるノードであると判定される場合、解析結果連結部２４は、さらに構文木ＴｍにおけるＲＯＯＴ＿ｍ直下のノードが「Ｓ」ノードであるか否かを判定する（Ｓ３４）。「Ｓ」ノードであると判定される場合、この「Ｓ」ノードを、構文木ＴｓにおけるＲＯＯＴの直下に連結する（Ｓ３５）。
【００５５】
また、Ｓ３１において構文木ＴｍのＲＯＯＴ＿ｍ直下に複数のノードがあると判定された場合、及び、Ｓ３４で構文木ＴｍのＲＯＯＴ＿ｍ直下のノードが「Ｓ」ノードでないと判定される場合、ＲＯＯＴ＿ｍ直下のノードを、構文木ＴｓにおけるＲＯＯＴ直下の一番文頭の側に連結する（Ｓ３６）。
【００５６】
Ｓ３３、Ｓ３５、及びＳ３６のいずれの処理が実行された場合も、解析結果連結部２４は、その連結の結果得られる構文木を、２個の文要素を連結してなる解析対象文の構文解析結果として出力し（Ｓ３７）、処理を終了する。
【００５７】
具体例として、図９（ａ）に示される構文木Ｔｍと図５に示される構文木Ｔｓとを連結する場合、まずＳ３１で、構文木ＴｍにおけるＲＯＯＴ＿ｍ直下のノードは「ＮＰｓ」一つと判定される。その後、Ｓ３２で、ＲＯＯＴ＿ｍ直下のノード「ＮＰｓ」は、構文木ＴｓにおけるＲＯＯＴ直下の「Ｓ」ノード直下のノードのうち、文頭の側のノード「ＮＰｓ」と同種であると判定される。それゆえ、Ｓ３３で両者が並列するように連結される。ここで、「ＮＰｓ」は図３の規則３に示されるように「ＮＰ」の１個以上の繰り返しを示しているので、二つの「ＮＰｓ」ノードは、連結されることによって、「ＮＰ」ノードが３回繰り返される単一の「ＮＰｓ」ノードとなる。図１２は、この解析結果連結処理によって得られる、解析対象文Ａに対する解析結果の構文木を示している。
【００５８】
また、図９（ｂ）に示される構文木Ｔｍと図５に示される構文木Ｔｓとを連結する場合、まずＳ３１で、構文木ＴｍにおけるＲＯＯＴ＿ｍ直下のノードは「Ｓ」一つと判定される。次に、Ｓ３２で、このＲＯＯＴ＿ｍ直下の「Ｓ」ノードは、隣接ノード「ＮＰｓ」とは異なると判定される。続いてＳ３４では、ＲＯＯＴ＿ｍ直下のノードは「Ｓ」なので、条件を満たすことになる。そこで、Ｓ３５で、この「Ｓ］ノードが、構文木ＴｓにおけるＲＯＯＴ直下に連結される。図１３は、この解析結果連結処理によって得られる、解析対象文Ａに対する解析結果の構文木を示している。
【００５９】
このように、文要素が文として成立していない場合も考慮して構文解析が行われるので、同じ文に対して、複数の解析結果が得られる場合がある。このような場合、公知の曖昧性解消処理を実行して、より妥当と判断される解析結果が得られるよう、解析結果を絞り込むこととしてもよい。このような曖昧性解消処理は、例えば吉村  宏樹、他３名著「Support Vector Machineに基づくf-structureの選択」（自然言語処理研究会報告、情報処理学会、２００３年１１月、Vol.2003、No.108、p.75-80）に記載された方法により実現される。
【００６０】
以上説明した本実施の形態に係る構文解析装置１によれば、解析対象文を分割して得られる文要素のそれぞれに対して構文解析を行う場合において、解析対象文がそれぞれ単独で文として成立しない文要素に分割されてしまったとしても、単独で文として成立する文要素を対象とした標準文法規則を元に、単独で文として成立しない文要素に適合する修正文法規則を動的に生成し、この修正文法規則を用いて構文解析を行うことで、構文解析に失敗する可能性が低減される。
【００６１】
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上説明した解析対象文の分割処理や、文要素に適合する修正文法規則の生成処理、文要素に対する構文解析処理、各文要素に対する構文解析結果の連結処理の内容は、いずれも一例であって、これらの処理は以上説明した方法とは異なる方法によって実現されることとしてもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態に係る構文解析装置の構成例を示す図である。
【図２】本発明の実施の形態に係る構文解析装置が実現する機能の一例を示す機能ブロック図である。
【図３】標準文法規則の一例を示す図である。
【図４】語彙辞書の一例を示す図である。
【図５】標準文法規則を用いた構文解析結果の一例を示す図である。
【図６】文法規則生成処理の流れの一例を示すフロー図である。
【図７】適合文法規則出力処理の流れの一例を示すフロー図である。
【図８】文法規則探索処理の流れの一例を示すフロー図である。
【図９】修正文法規則を用いた構文解析結果の一例を示す図である。
【図１０】修正文法規則を用いた構文解析結果の別の例を示す図である。
【図１１】解析結果連結処理の流れの一例を示すフロー図である。
【図１２】連結された構文解析結果の一例を示す図である。
【図１３】連結された構文解析結果の別の例を示す図である。
【符号の説明】
【００６３】
１  構文解析装置、１１  制御部、１２  記憶部、１３  操作部、１４  表示部、２１  解析対象文分割部、２２  文法規則生成部、２３  文要素解析部、２４  解析結果連結部。
【図１】
2010079705.tif 000003
【図２】
2010079705.tif 000004
【図３】
2010079705.tif 000005
【図４】
2010079705.tif 000006
【図５】
2010079705.tif 000007
【図６】
2010079705.tif 000008
【図７】
2010079705.tif 000009
【図８】
2010079705.tif 000010
【図９】
2010079705.tif 000011
【図１０】
2010079705.tif 000012
【図１１】
2010079705.tif 000013
【図１２】
2010079705.tif 000014
【図１３】
2010079705.tif 000015