JP2010079705A - 構文解析装置及びプログラム - Google Patents
構文解析装置及びプログラム Download PDFInfo
- Publication number
- JP2010079705A JP2010079705A JP2008248742A JP2008248742A JP2010079705A JP 2010079705 A JP2010079705 A JP 2010079705A JP 2008248742 A JP2008248742 A JP 2008248742A JP 2008248742 A JP2008248742 A JP 2008248742A JP 2010079705 A JP2010079705 A JP 2010079705A
- Authority
- JP
- Japan
- Prior art keywords
- sentence
- grammar rule
- analysis
- rule
- grammar
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Machine Translation (AREA)
Abstract
【課題】文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくい構文解析装置を提供する。
【解決手段】解析対象文を複数の文要素に分割し、分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成し、当該生成された修正文法規則を用いて文要素の構文解析を行う構文解析装置である。
【選択図】図2
【解決手段】解析対象文を複数の文要素に分割し、分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成し、当該生成された修正文法規則を用いて文要素の構文解析を行う構文解析装置である。
【選択図】図2
Description
本発明は、構文解析装置及びプログラムに関する。
文の構造などを解析する構文解析処理において、解析対象となる文(解析対象文)が複文や重文などの場合、処理に時間がかかったり処理負荷が増大したりする傾向がある。そこで、解析対象文を予め複数の節に分割する手法が提案されている(例えば特許文献1、特許文献2、非特許文献1などを参照)。このような手法によれば、分割して得られる複数の節のそれぞれに対して構文解析を行うことで、解析対象文全体の構文解析が実現される。
特開平7−230461号公報
特開2006−18354号公報
市丸夏樹、飛松宏征、「接続助詞の結合順位に基づく複文の構文解析」、自然言語処理研究会報告、情報処理学会、2003年11月、Vol.2003、No.108、p.81-86)
解析対象文が正しく複数の節に分割されれば、分割後の各節は少なくとも述語を含み、単独で通常の文としての構造を備えるので、一般的な文法規則を適用して構文解析を行うことが可能なはずである。ところが、解析対象文は常に正しく分割されるとは限らず、分割によって得られる文要素(解析対象文の一部分)が通常の文構造を備えた節になっていない場合もあり得る。このような場合、文要素に対して一般的な文法規則を用いて構文解析を行おうとしても、構文解析ができなかったり、正しい解析結果が出力されなかったりするおそれがある。
本発明は、文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくい構文解析装置及びプログラムを提供することを目的とする。
請求項1記載の発明は、構文解析装置であって、解析対象文を複数の文要素に分割する分割手段と、前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段と、前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段と、を含むことを特徴とする。
請求項2記載の発明は、請求項1記載の構文解析装置であって、前記分割された複数の文要素のそれぞれに対して構文解析を実行して得られる解析結果を連結して、前記解析対象文についての構文解析結果を出力する手段をさらに含むことを特徴とする。
請求項3記載の発明は、請求項1又は2記載の構文解析装置であって、前記文法規則生成手段は、前記分割された複数の文要素のうち、文末に位置する文要素以外の文要素について、前記修正文法規則を生成することを特徴とする。
請求項4記載の発明は、請求項3記載の構文解析装置であって、前記文法規則生成手段は、前記文末に位置する文要素以外の文要素について、当該文要素の末尾の形態素が属する語彙種別ごとに、当該文要素を構成する各形態素の属する語彙種別に合致する文法規則を検索することにより、前記修正文法規則を生成することを特徴とする。
請求項5記載の発明は、解析対象文を複数の文要素に分割する分割手段、前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段、及び前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段、としてコンピュータを機能させるためのプログラムである。
請求項1及び5記載の発明によれば、文をその区切りによって分割して得られる文要素に対して構文解析を行う場合に、構文解析に失敗しにくくなる。
請求項2記載の発明によれば、処理速度を犠牲にせずに、解析対象文全体に対する構文解析結果が得られる。
請求項3記載の発明によれば、文として成立しない可能性のある文要素だけ、修正文法規則による構文解析が実行される。
請求項4記載の発明によれば、文として成立しない可能性のある文要素について、文として成立する場合と成立しない場合の両方に対応した修正文法規則が生成される。
以下、本発明の実施の形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係る構文解析装置1の構成例を示す図である。構文解析装置1は、例えばパーソナルコンピュータ等であって、制御部11と、記憶部12と、操作部13と、表示部14と、を含んで構成される。
制御部11は、例えばCPU等であって、記憶部12に格納されるプログラムに従って各種の情報処理を実行する。本実施形態において制御部11が実行する処理の具体例については、後述する。
記憶部12は、例えばRAMやROM等のメモリ素子、ハードディスクなどを含んで構成される。記憶部12は、制御部11によって実行されるプログラムや、各種のデータを保持する。特に本実施形態では、記憶部12は、形態素解析や構文解析に使用する辞書や文法規則のデータを記憶している。また、記憶部12は、制御部11のワークメモリとしても動作する。
操作部13は、例えばキーボードやマウス等であって、利用者の指示操作を受け付けて、当該指示操作の内容を制御部11に出力する。表示部14は、例えば液晶ディスプレイ等であり、制御部11からの指示に従って、画像の表示を行う。
以下、本実施形態に係る構文解析装置1が実現する機能について、説明する。構文解析装置1は、機能的に、図2に示すように、解析対象文分割部21と、文法規則生成部22と、文要素解析部23と、解析結果連結部24と、を含んで構成される。これらの機能は、例えば制御部11が記憶部12に格納されるプログラムを実行することにより、実現される。このプログラムは、例えばインターネット等の通信手段を介して提供されてもよいし、例えばCD−ROMやDVD−ROM等、各種のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
解析対象文分割部21は、まず構文解析装置1による解析の対象となる解析対象文を取得する。解析対象文は自然言語で記述された文であって、利用者が操作部13を用いて入力してもよいし、予め記憶部12などに記憶されていてもよい。ここでは解析対象文は日本語の文であることとする。
そして、解析対象文分割部21は、予め定められた規則に基づいて、解析対象文を複数の文要素に分割する。すなわち、解析対象文分割部21は、解析対象文が重文や複文などであって、それぞれ意味的にまとまって単独で文として成立する部分(節)を複数含んだ構造となっていると推定される場合に、解析対象文を意味的に区切っていると推定される区切り位置を特定し、当該特定した区切り位置で解析対象文を複数の文要素に分割する。ここで複数の文要素は、それぞれ解析対象文の一部を構成する文字列であって、文要素単独で一つの文としての意味を持っている(すなわち、少なくとも述語部分を含んでいる)と推測される文字列である。ただし、解析対象文分割部21は常に正しく区切り位置を特定するとは限らず、文要素が意味的に単独の文として成立していない文字列(例えば名詞句や副詞句など)になってしまう場合もある。
具体的に、例えば解析対象文分割部21は、解析対象文に対して形態素解析を実行し、解析対象文を構成する形態素を特定する。そして、特定された形態素の中から、文を意味的に区切るために一般的に用いられる品詞であると推定される形態素を抽出し、当該抽出した形態素の位置で解析対象文を分割する。この場合の解析対象文を意味的に区切る品詞の例としては、例えば「が」や「と」などの接続助詞や、助動詞「だ」の連用形である「で」などの活用語の連用形が挙げられる。このような分割処理は、例えば非特許文献1に記載された方法で実現されてよい。また、解析対象文分割部21は、このような形態素の品詞によって区切り位置を決定する方法に限らず、例えば統計的手法によって文の区切り位置を特定してもよい。
以下では具体例として、
解析対象文A:「北海道は雪で東京は天気だ。」
解析対象文B:「北海道は雪でお祭りをする。」
という二つの解析対象文に対して処理を行う場合について説明する。この例では、解析対象文分割部21は、文の区切りである可能性のある形態素(ここでは助動詞「だ」の連用形である「で」)の位置で解析対象文を分割する。これにより、解析対象文Aは、
文要素A1:「北海道は雪で」
文要素A2:「東京は天気だ。」
という二つの文要素に分割される。また、解析対象文Bは、
文要素B1:「北海道は雪で」
文要素B2:「お祭りをする。」
という二つの文要素に分割される。
解析対象文A:「北海道は雪で東京は天気だ。」
解析対象文B:「北海道は雪でお祭りをする。」
という二つの解析対象文に対して処理を行う場合について説明する。この例では、解析対象文分割部21は、文の区切りである可能性のある形態素(ここでは助動詞「だ」の連用形である「で」)の位置で解析対象文を分割する。これにより、解析対象文Aは、
文要素A1:「北海道は雪で」
文要素A2:「東京は天気だ。」
という二つの文要素に分割される。また、解析対象文Bは、
文要素B1:「北海道は雪で」
文要素B2:「お祭りをする。」
という二つの文要素に分割される。
文法規則生成部22は、解析対象文分割部21が解析対象文を分割して得られる文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する。具体的に、まず文法規則生成部22は、解析対象文分割部21の分割処理によって得られる複数の文要素のそれぞれに対して、標準文法規則により解析を行うか、あるいは当該文要素に適合する修正文法規則により解析を行うか、を決定する。そして、修正文法規則により解析を行うと決定した文要素について、当該文要素に適合する修正文法規則を生成する。
ここで、標準文法規則は、対象となる言語の文法に則って記述された、単独で文として成立する文要素を解析するための文法規則である。一方、修正文法規則は、単独で文として成立しているか否か不明な文要素について、当該文要素の構造に応じて動的に生成される文法規則であって、単独で文として成立していない文要素を記述する文法をも含んだ文法規則である。
日本語の文法においては、主語、述語の語順で文が記述され、また文頭から文末に向かう方向に沿って係り受けが生じるのが通常である。すなわち、ある語句を修飾する語句が修飾される語句より後に記述されることは一般的でない。さらに、主語や修飾語が省略されたとしても、文法構造に矛盾が生じるわけではなく、文としては成立する。そのため、解析対象文が日本語の場合、解析対象文を分割して得られる各文要素のうち、文末に位置する文要素については、標準文法規則に則って記述されている可能性が高い。そこで、文法規則生成部22は、文末の側の文要素だけは標準文法規則を用いて解析を行うこととし、それ以外の文要素については、修正文法規則を生成することとしてもよい。逆に、解析対象の言語によっては、文頭に位置する文要素だけは標準文法規則を用いて解析し、それ以外の文要素については修正文法規則を生成することとしてもよい。また、全ての文要素について修正文法規則を生成することとしてもよい。
前述した解析対象文A及びBの例では、文要素A1と文要素B1とは同一の文字列となっている。このうち、解析対象文Aではまさに「で」の位置で文が意味的に区切られており、文要素A1はそれ自体単独で一つの意味を持った文として成立している。ところが、解析対象文Bにおける「で」は格助詞であって、文要素B1は単体では文として成立していない。すなわち、この場合の「雪で」は「お祭りをする」を修飾しているのであって、文要素B1には述語が含まれていない。そのため、文要素B1に対して単独で文として成立していることを前提とした標準文法規則を適用してしまうと、正しい構文解析結果が得られないと考えられる。これに対して、ここでは文法規則生成部22は、文末の側の文要素A2及びB2に対しては標準文法規則を適用し、それ以外の文要素A1及びB1に対しては修正文法規則を生成し、適用すると決定する。なお、解析対象文Bにおいて「お祭りをする」に係っている「雪で」は文要素B2には含まれていないが、それでも文要素B2は述語を含むので単独で文として成立しており、標準文法規則の適用が可能と考えられる。文法規則生成部22が修正文法規則を生成する処理の具体例については、後述する。
文要素解析部23は、文法規則生成部22によって決定された文法規則を用いて、各文要素の構文解析を行う。特に、修正文法規則を用いて解析を行うと決定された文要素については、文法規則生成部22が生成した修正文法規則を用いて構文解析を行う。この構文解析自体は、公知の方法によって実現されてよい。具体的には、例えば増市博、大熊智子著「Lexical Functional Grammarに基づく実用的な日本語解析システムの構築」(自然言語処理、言語処理学会、2003年、Vol.10、No.2、p.79-109)に記載された方法などを利用してよい。
ここでは、標準文法規則を用いた構文解析の具体例について、説明する。図3は、標準文法規則の一例を示している。この図の例では、標準文法規則は、文として成立する文字列に含まれる形態素が満たすべき語順(各語の配列)のルールを示しており、複数の規則の集合によって構成されている。具体的に、規則1は、一つの文(ROOT)が、要素「S」の1個以上の繰り返しと、要素「PERIOD」と、の連結により構成されることを示している。ここで記号「+」は直前の要素の1個以上の繰り返しを意味している。また、要素「S」は、規則2に示されるように、要素「NPs」の0個以上の繰り返しと、要素「VP」と、によって構成される。ここで記号「*」は0個以上の繰り返しを意味している。したがって、要素「S」は1個の「VP」だけでも成立するし、「NPs」が1個以上繰り返された後「VP」が並ぶ配列であってもよい。また、規則4において要素「D」に付された丸括弧は当該要素が省略可能であることを意味している。さらに、規則5における記号「|」は「OR」を意味し、波括弧で囲まれて記号「|」で区切られた各要素のうちの一つが択一的に選ばれることを意味している。このような規則の集合によって、日本語の文において、文を構成する各形態素が、どのような組み合わせ及び順序で配列されるか、が規定されている。なお、「PERIOD」、「D」、「N」、「PP」、「V」、「ADJ」、「AUXV」、「AUX」、及び「ADV」は、それぞれ文を構成する形態素が属する語彙種別(語彙カテゴリ)を示している。各形態素がどの語彙カテゴリに属するのかは、語彙辞書によって規定される。図4は語彙辞書の一部の例を示しており、この図の例では、文を構成する形態素(見出し語)のそれぞれに対して、当該見出し語が属する語彙カテゴリが関連づけられている。なお、これらの図に示した標準文法規則や語彙辞書は、予め記憶部12に記憶されていることとする。
このような語彙辞書と標準文法規則を用いて、前述した例における文要素A2に対して構文解析を行った結果得られる構文木を図5に示す。この例では、文要素A2に対して形態素解析を行うと、「東京」、「は」、「天気」、「だ」、「。」という形態素が得られる。図4の語彙辞書を参照すると、これら各形態素の属する語彙カテゴリが、それぞれ「N」、「PP」、「N」、「AUXV」及び「PERIOD」であることが分かる。そして、規則4によって「N」と「PP」の配列が要素「NP」を構成すると判断され、規則3によって1個の要素「NP」が要素「NPs」を構成することが分かる。このようにして、文要素を構成する各形態素の属する語彙カテゴリを特定し、文法規則への当てはめを行うことによって、図5に例示したような、文要素を構成する各形態素間のつながり(係り受け構造など)を示す構文木が得られる。
解析結果連結部24は、文要素解析部23によって得られる各文要素についての解析結果を連結する。これによって、解析対象文全体についての解析結果が得られる。このとき、解析対象文分割部21が誤った区切り位置で解析対象文を分割している場合を考慮して、解析結果連結部24は、ある一つの文要素を構成する構文木のノードのうち、文末の側の少なくとも一つのノードを、隣接する他の文要素を構成する構文木のノードに組み込む処理を実行することとする。これにより、最初に解析対象文の分割が正しく行われなかった場合でも、このような分割により得られる文要素に適合する文法規則を用いて解析を行い、その結果を修正しながら連結することで、最終的に正しい解析対象文全体の解析結果が得られる。このとき、解析対象文を分割して得られる、比較的短い(すなわち、形態素の数の少ない)文要素のそれぞれに対して構文解析を行うことにより、解析対象文全体について一度に構文解析を行う場合と比較して、処理速度の向上が期待される。なお、この連結処理の具体例についても、後述する。
以下、本実施形態に係る構文解析装置1が実行する処理の流れの具体例について、説明する。
最初に、文法規則生成部22が文要素A1に適合する修正文法規則を生成する文法規則生成処理の流れについて、図6、図7及び図8のフロー図に基づいて説明する。なお、文要素A1及びB1は同じ文字列なので、文要素B1について生成される修正文法規則も、文要素A1について生成される修正文法規則と同じものになる。
まず文法規則生成部22は、文要素に対して形態素解析を行い、その処理結果を得る(S1)。文要素A1が処理対象の場合、「北海道」、「は」、「雪」、「で」という4個の形態素が得られることになる。なお、解析対象文分割部21が解析対象文の分割を行う際に解析対象文の形態素解析を行っていれば、文法規則生成部22はその解析結果を利用することとしてもよい。
次に文法規則生成部22は、S1で得られた形態素のそれぞれについて、記憶部12に記憶されている語彙辞書を参照して、語彙カテゴリリストを取得する(S2)。図4に示される語彙辞書の例では、「北海道」及び「雪」は語彙カテゴリ「N」に属し、「は」は語彙カテゴリ「PP」に属している。また、「で」は「PP」及び「AUXV」の二つの語彙カテゴリに属している。そのため、文法規則生成部22は、文要素A1に対応する語彙カテゴリリストとして、{N PP N {PP|AUXV}}を得る。なお、このリストの順序は文要素中の形態素の順序に対応しており、記号「|」は前述した文法規則の例と同じく中括弧で囲まれて列挙された語彙カテゴリのいずれか一つであることを意味している。すなわち、この語彙カテゴリリストは、文要素A1を構成する形態素の語彙カテゴリが、{N PP N PP}か{N PP N AUXV}のいずれかであることを表している。
続いて文法規則生成部22は、S2で取得した語彙カテゴリリストにおける、末尾の形態素の語彙カテゴリ数を変数Nに格納する(S3)。ここでは末尾の形態素が属する語彙カテゴリは「PP」と「AUXV」の二個なので、N=2になる。ここで、末尾の形態素の語彙カテゴリ数に着目しているのは、末尾の形態素の語彙カテゴリによって、処理対象の文要素が意味的に単独の文として成立する可能性もあるし、逆に末尾の形態素を含むいくつかの形態素が隣接する別の文要素とつながる修飾語の可能性もあるので、末尾の形態素の語彙カテゴリごとに場合分けして文法規則を検討するためである。
その後、文法規則生成部22は、変数iに0を代入し(S4)、i<Nの条件を満たす間、以下に説明する処理を繰り返し行う。すなわち、文法規則生成部22は、末尾の形態素が属する語彙カテゴリごとに、語彙カテゴリリストに適合する文法規則を生成して、出力する適合文法規則出力処理を実行する(S5)。なお、この適合文法規則出力処理の詳細については、後述する。末尾の形態素が属する語彙カテゴリの一つについてこの適合文法規則出力処理を実行すると、続いて文法規則生成部22は、S5の出力結果を文法規則リストGLに追加し、さらに続いて文法規則リストGLに記号「|」を追加する(S6)。この記号「|」は、図3に例示した標準文法規則の場合と同様に「OR」を意味している。その後、文法規則生成部22は、変数iに1を加算し(S7)、i<Nの条件を満たすか判定する(S8)。i<Nの条件を満たす場合、末尾の形態素が属する語彙カテゴリのうち、S5及びS6の処理がまだ実行されていない語彙カテゴリがあるので、末尾の形態素が属する語彙カテゴリを変更し、S5に戻って新たな語彙カテゴリリストについて適合文法規則出力処理が実行される。一方、i<Nの条件を満たさなくなる(すなわちi=Nになる)と、末尾の形態素が属する全ての語彙カテゴリについて、S5及びS6の処理が実行されたことになるので、それまでに文法規則が追加された文法規則リストGLの内容を、解析処理に用いられる形式に整形して、出力する(S9)。このS9で出力される内容が、修正文法規則として、文要素A1の構文解析に用いられる。
次に、前述したS5における適合文法規則出力処理の詳細について、図7のフロー図を用いて説明する。文要素A1の場合、末尾の形態素「で」が属する語彙カテゴリは「PP」及び「AUXV」の2個なので、1回目の適合文法規則出力処理では「で」の語彙カテゴリが「PP」の場合を対象とし、語彙カテゴリリスト{PP N PP N}に対して処理が実行される。また、2回目の適合文法規則出力処理では「で」の語彙カテゴリが「AUXV」の場合を対象とし、語彙カテゴリリスト{PP N PP AUXV}に対して処理が実行される。
この処理は、語彙カテゴリリストを構成する要素が0になるまで、要素を末尾から順に減らしながら、繰り返し実行される。すなわち、まず文法規則生成部22は、現時点での語彙カテゴリリストの内容に適合する文法規則を探索する文法規則探索処理を行う(S11)。この文法規則探索処理は、語彙カテゴリリストの内容に適合する文法規則を探索して、その結果検出された文法規則を示す文字列を規則文字列として出力する処理である。この処理の詳細については後述するが、文要素A1が処理対象であって、末尾の形態素が属する語彙カテゴリが「PP」の場合には、「NPs」が規則文字列として出力される。また、末尾の形態素が属する語彙カテゴリが「AUXV」の場合には、「S」が規則文字列として出力される。
続いて文法規則生成部22は、S11で語彙カテゴリリストの内容に適合する文法規則が検出されたか否か判定する(S12)。文法規則が検出されなかった場合には、語彙カテゴリリストの末尾の要素Wlastを、予め用意された文字列バッファB1の先頭に追加し(S13)、文字列バッファB1に追加した要素Wlastを語彙カテゴリリストから削除する(S14)。これは、語彙カテゴリリストの全体に適合する文法規則が見つからない場合に、文要素を構成する形態素を末尾に近い側から順に一つずつ除外しながら、語彙カテゴリリストを再評価するために実行される処理である。ここで、末尾に近い側から除外するのは、末尾の側の形態素が、後続する次の文要素と結合すると推定されるためである。S14で語彙カテゴリリストから要素が削除されると、語彙カテゴリリストにまだ残っている要素があるか否か判定される(S15)。残っている要素があれば、S11に戻って、残った要素により構成される語彙カテゴリリストに適合する文法規則が探索される。
S12の処理により、文法規則が検出されたと判定された場合、文法規則生成部22は、これまでに文字列バッファB1に追加された要素があるか否か判定する(S16)。文字列バッファB1に追加された要素が1個以上ある場合、この文字列バッファB1の内容を処理対象の語彙カテゴリリストとして、適合文法規則出力処理を再帰的に実行する(S17)。その結果、文字列バッファB1内の語彙カテゴリのリストに適合する文法規則を表す文字列が出力される。その後、文法規則生成部22は、S11で出力された規則文字列と、S17の処理によって文字列バッファB1の内容に適合するものとして出力された文法規則を表す文字列と、を適合文法規則出力処理の処理結果として出力する(S18)。なお、文字列バッファB1に格納された要素がない場合(すなわち最初の文法規則探索処理で文法規則の探索に成功した場合)には、最初の文法規則探索処理で探索された文法規則を表す文字列だけが処理結果として出力される。
一方、S15で残っている要素がないと判定される場合、文法規則生成部22は、文字列バッファB1に格納された語彙カテゴリのリストを、そのまま適合文法規則出力処理の処理結果として出力する(S19)。
文要素A1が処理対象となる場合、1回目の適合文法規則出力処理(末尾の形態素の語彙カテゴリが「PP」の場合の処理)では「NPs」が出力されるので、S6の処理では「NPs|」が文法規則リストGLに追加される。そして、2回目の適合文法規則出力処理(末尾の形態素の語彙カテゴリが「AUXV」の場合の処理)では「S」が出力されるので、文法規則リストGLには「S|」が追加される。その結果、文法規則リストGLの内容は「NPs|S|」となる。この文字列は、前述したS9の処理で整形される。具体的には、末尾の記号「|」が取り除かれて、全体が波括弧で囲まれ、文法規則を表す形式にする処理が行われる。この結果、文要素A1に適合する修正文法規則として、
ROOT_m → {NPs|S}.
が得られる。この修正文法規則は、文要素A1が文として成立している場合に適合する文法規則である「S」を含むとともに、末尾の形態素「で」の語彙カテゴリが「PP」であって文要素A1全体が文として成立していない場合をも許容する文法規則となっている。図9(a)及び図9(b)は、この修正文法規則を適用して文要素解析部23が文要素A1や文要素B1の構文解析を行った結果を示している。修正文法規則はNPsとSの両方を許容しているので、「北海道は雪で」という文要素に対して構文解析を行うと、図9(a)に示すように文要素がNPsという文法規則に適合する場合、及び図9(b)に示すように文要素がSという文法規則に適合する(すなわち文要素単体で一つの意味を持った文として成立している)場合の2パターンの解析結果が得られる。
ROOT_m → {NPs|S}.
が得られる。この修正文法規則は、文要素A1が文として成立している場合に適合する文法規則である「S」を含むとともに、末尾の形態素「で」の語彙カテゴリが「PP」であって文要素A1全体が文として成立していない場合をも許容する文法規則となっている。図9(a)及び図9(b)は、この修正文法規則を適用して文要素解析部23が文要素A1や文要素B1の構文解析を行った結果を示している。修正文法規則はNPsとSの両方を許容しているので、「北海道は雪で」という文要素に対して構文解析を行うと、図9(a)に示すように文要素がNPsという文法規則に適合する場合、及び図9(b)に示すように文要素がSという文法規則に適合する(すなわち文要素単体で一つの意味を持った文として成立している)場合の2パターンの解析結果が得られる。
ここで、前述したS11で実行される文法規則探索処理の具体例について、図8のフロー図を用いて説明する。
まず文法規則生成部22は、対象となる語彙カテゴリリストに合致する文法規則を探索し、得られた文法規則を列挙した候補規則リストを出力する(S21)。このとき、探索は図3に例示した標準文法規則を用いて行われる。例えば文法規則生成部22は、標準文法規則の上位の規則から順に、語彙カテゴリリストの内容が規則の右辺の内容に合致するか否か判定し、合致すると判定される場合に、その規則の左辺の内容を文法規則の探索結果として出力する。語彙カテゴリリストが{N PP N PP}の場合、語彙カテゴリリストに合致する文法規則はNPsになり、S21の処理で{NPs}という要素数1の候補規則リストが得られる。また、語彙カテゴリリストが{N PP N AUXV}の場合、語彙カテゴリリストに合致する文法規則はSになり、{S}というやはり要素数1の候補規則リストが得られる。
続いて文法規則生成部22は、変数jに0を格納し(S22)、変数jの値がS21で得られた候補規則リストの要素数より小さい間、候補規則リストに含まれる0から数えてj番目の要素(以下、候補規則Gjという)を処理対象の文法規則として、以下の処理を繰り返し行う。すなわち、文法規則生成部22は、候補規則Gjによって規定される文法において最も末尾側に位置する形態素の語彙カテゴリが、語彙カテゴリリストの末尾の要素Wlastに一致するか否かを判定する(S23)。一致する場合には、候補規則Gjを表す文字列を、予め用意された文字列バッファB2に格納する(S24)。一致しない場合には、S24の処理は実行されない。いずれの場合も、文法規則生成部22は、変数jに1を加算し(S25)、jの値が候補規則リストの要素数より小さいか否かを判定する(S26)。jの値が候補規則リストの要素数より小さければ、まだ候補規則リストに含まれる要素の全てについてS23〜S24の処理が実行されていないことになるので、未処理の要素を新たな候補規則Gjとし、S23に戻って新たな候補規則Gjに対する処理を行う。一方、S26の条件を満たさないと判定される場合、すなわちjの値が候補規則リストの要素数に一致した場合、候補規則リストに含まれる全ての要素について処理を実行したことになるので、文字列バッファB2の内容を規則文字列として出力し(S27)、文法規則探索処理を終了する。
次に、解析対象文A及びBとは別の解析対象文を例として、これまで説明した文法規則生成処理の流れの具体例について、さらに説明する。ここでは解析対象文として、
解析対象文C:「その泥棒が素早く逃げていった。」
解析対象文B:「その泥棒が素早く誰も逃げていったことに気がつかない。」
という二つの文を対象とする。この例では、解析対象文分割部21は、形容詞「素早い」の連用形である「素早く」の位置で解析対象文を分割するものとする。これにより、解析対象文Cは、
文要素C1:「その泥棒が素早く」
文要素C2:「逃げていった。」
という二つの文要素に分割される。また、解析対象文Dは、
文要素D1:「その泥棒が素早く」
文要素D2:「誰も逃げていったことに気がつかない。」
という二つの文要素に分割される。これらの文要素のうち、文要素C2及びD2に対しては標準文法規則を用いて構文解析が実行され、文要素C1及びD1については修正文法規則が生成され、この修正文法規則を用いて構文解析が実行されることとする。
解析対象文C:「その泥棒が素早く逃げていった。」
解析対象文B:「その泥棒が素早く誰も逃げていったことに気がつかない。」
という二つの文を対象とする。この例では、解析対象文分割部21は、形容詞「素早い」の連用形である「素早く」の位置で解析対象文を分割するものとする。これにより、解析対象文Cは、
文要素C1:「その泥棒が素早く」
文要素C2:「逃げていった。」
という二つの文要素に分割される。また、解析対象文Dは、
文要素D1:「その泥棒が素早く」
文要素D2:「誰も逃げていったことに気がつかない。」
という二つの文要素に分割される。これらの文要素のうち、文要素C2及びD2に対しては標準文法規則を用いて構文解析が実行され、文要素C1及びD1については修正文法規則が生成され、この修正文法規則を用いて構文解析が実行されることとする。
具体的に、文要素C1を文法規則生成処理の対象とする場合、まずS1の処理で文要素C1を構成する形態素として、「その」、「泥棒」、「が」、「素早く」が得られる。これらの形態素のうち、「素早く」は、図4に示す語彙辞書において、「ADJ」及び「ADV」の2つの語彙カテゴリに属している。そのため、S2の処理では、語彙カテゴリリストとして、{D N PP {ADJ|ADV}}が得られ、S5の適合文法規則出力処理は、語彙カテゴリリスト{D N PP ADJ}及び{D N PP ADV}のそれぞれを対象として、合計2回実行されることになる。
このうち、1回目の適合文法規則出力処理においては、{D N PP ADJ}は最も上位の文法規則である「S」に合致しているので、S11の文法規則探索処理によって、「S」という規則文字列が出力される。そのため、1回目の適合文法規則出力処理の後のS6の処理において、文法規則リストGLには「S|」が格納される。
次に、2回目の適合文法規則出力処理では、{D N PP ADV}の全体に合致する文法規則は、図3に示した標準文法規則の中には存在しない。そのため、S11の文法規則探索処理では規則文字列が出力されず、S12で文法規則は検出されなかったと判定される。そのため、S13で語彙カテゴリリストの末尾の要素Wlast(ここではADV)を表す文字列が文字列バッファB1に追加され、S14で語彙カテゴリリストは{D N PP}に更新される。その後、再びS11で文法規則探索処理が実行されるが、今度は語彙カテゴリリストに適合する文法規則として「NPs」が検出され、S12で文法規則が検出されたと判定される。ここでは、文字列バッファB1にはADVが追加されているので、S17で{ADV}を対象とした適合文法規則出力処理が実行される。ここでは、{ADV}は標準文法規則における規則6に合致するので、当該規則を示す文字列として「ADVP」が出力される。その結果、S18で、{D N PP ADV}に対する適合文法規則出力処理の処理結果として、「NPs ADVP」が出力され、この文字列がS6の処理で記号「|」とともに文法規則リストGLに追加される。
その後、S9の整形処理が実行されることにより、文要素C1に適合する修正文法規則として、
ROOT_m → {S|NPs ADVP}.
が得られる。なお、文要素D1についても同様の処理結果が得られる。図10(a)及び図10(b)は、この修正文法規則を適用して文要素解析部23が文要素C1や文要素D1の構文解析を行った結果を示している。図10(a)は文要素が文として成立している場合に対応した解析結果を示しており、図10(b)は文要素が「NPs ADVP」という文法規則に適合する場合の解析結果を示している。このように、文要素A1及びB1と同じく、文要素C1及びD1についても2パターンの解析結果が得られることになる。
ROOT_m → {S|NPs ADVP}.
が得られる。なお、文要素D1についても同様の処理結果が得られる。図10(a)及び図10(b)は、この修正文法規則を適用して文要素解析部23が文要素C1や文要素D1の構文解析を行った結果を示している。図10(a)は文要素が文として成立している場合に対応した解析結果を示しており、図10(b)は文要素が「NPs ADVP」という文法規則に適合する場合の解析結果を示している。このように、文要素A1及びB1と同じく、文要素C1及びD1についても2パターンの解析結果が得られることになる。
次に、解析結果連結部24が実行する解析結果連結処理の流れの具体例について、図11のフロー図を用いて説明する。なお、文要素解析部23によって1つの文要素について複数の解析結果が得られる場合、解析結果連結処理は、この複数の解析結果それぞれを対象として、複数回実行されることになる。例えば解析対象文Aが解析対象の場合、文要素A1については前述したように図9(a)及び図9(b)の2つの解析結果が得られる。一方、文要素A2については、図5に示す1つの解析結果が得られる。したがって、解析結果連結部24は、図9(a)に示す解析結果と図5に示す解析結果を連結する処理、及び図9(b)に示す解析結果と図5に示す解析結果を連結する処理を実行する。またここでは、修正文法規則を適用して解析された1個の文要素と、この文要素に続く文要素であって、標準文法規則を適用して解析された1個の文要素と、を連結する処理の例について説明するが、修正文法規則を適用して解析された文要素同士の連結についても、同様に実行すればよい。また、解析対象文が3個以上の文要素に分割された場合も、各文要素についての解析結果を順に連結していくことによって、最終的に解析対象文全体の解析結果が得られる。以下では、解析対象文を分割して得られる2個の文要素のうち、文頭の側の文要素に対して修正文法規則による構文解析を行って得られる構文木を構文木Tmと表記し、文末の側の文要素に対して標準文法規則による構文解析を行って得られる構文木を構文木Tsと表記する。
まず解析結果連結部24は、構文木Tmにおいて、ROOT_m直下のノードが複数あるか否かを判定する(S31)。ROOT_m直下のノードが一つしかない場合、解析結果連結部24は、当該ROOT_m直下のノードと、構文木Tsにおいて当該ROOT_m直下のノードと隣接するノード(以下、隣接ノードという)と、が同種のノードか否かを判定する(S32)。ここで、隣接ノードは、構文木TsにおけるROOT直下の「S」ノードの直下のノードのうち、一番文頭の側のノード(すなわち、構文木Tmに近い側のノード)である。S32で両者が同種のノードと判定される場合、構文木TmにおけるROOT_m直下のノードを、構文木Tsの隣接ノードと並列するように連結する(S33)。
一方、S32でROOT_m直下のノードとその隣接ノードとが異なるノードであると判定される場合、解析結果連結部24は、さらに構文木TmにおけるROOT_m直下のノードが「S」ノードであるか否かを判定する(S34)。「S」ノードであると判定される場合、この「S」ノードを、構文木TsにおけるROOTの直下に連結する(S35)。
また、S31において構文木TmのROOT_m直下に複数のノードがあると判定された場合、及び、S34で構文木TmのROOT_m直下のノードが「S」ノードでないと判定される場合、ROOT_m直下のノードを、構文木TsにおけるROOT直下の一番文頭の側に連結する(S36)。
S33、S35、及びS36のいずれの処理が実行された場合も、解析結果連結部24は、その連結の結果得られる構文木を、2個の文要素を連結してなる解析対象文の構文解析結果として出力し(S37)、処理を終了する。
具体例として、図9(a)に示される構文木Tmと図5に示される構文木Tsとを連結する場合、まずS31で、構文木TmにおけるROOT_m直下のノードは「NPs」一つと判定される。その後、S32で、ROOT_m直下のノード「NPs」は、構文木TsにおけるROOT直下の「S」ノード直下のノードのうち、文頭の側のノード「NPs」と同種であると判定される。それゆえ、S33で両者が並列するように連結される。ここで、「NPs」は図3の規則3に示されるように「NP」の1個以上の繰り返しを示しているので、二つの「NPs」ノードは、連結されることによって、「NP」ノードが3回繰り返される単一の「NPs」ノードとなる。図12は、この解析結果連結処理によって得られる、解析対象文Aに対する解析結果の構文木を示している。
また、図9(b)に示される構文木Tmと図5に示される構文木Tsとを連結する場合、まずS31で、構文木TmにおけるROOT_m直下のノードは「S」一つと判定される。次に、S32で、このROOT_m直下の「S」ノードは、隣接ノード「NPs」とは異なると判定される。続いてS34では、ROOT_m直下のノードは「S」なので、条件を満たすことになる。そこで、S35で、この「S]ノードが、構文木TsにおけるROOT直下に連結される。図13は、この解析結果連結処理によって得られる、解析対象文Aに対する解析結果の構文木を示している。
このように、文要素が文として成立していない場合も考慮して構文解析が行われるので、同じ文に対して、複数の解析結果が得られる場合がある。このような場合、公知の曖昧性解消処理を実行して、より妥当と判断される解析結果が得られるよう、解析結果を絞り込むこととしてもよい。このような曖昧性解消処理は、例えば吉村 宏樹、他3名著「Support Vector Machineに基づくf-structureの選択」(自然言語処理研究会報告、情報処理学会、2003年11月、Vol.2003、No.108、p.75-80)に記載された方法により実現される。
以上説明した本実施の形態に係る構文解析装置1によれば、解析対象文を分割して得られる文要素のそれぞれに対して構文解析を行う場合において、解析対象文がそれぞれ単独で文として成立しない文要素に分割されてしまったとしても、単独で文として成立する文要素を対象とした標準文法規則を元に、単独で文として成立しない文要素に適合する修正文法規則を動的に生成し、この修正文法規則を用いて構文解析を行うことで、構文解析に失敗する可能性が低減される。
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上説明した解析対象文の分割処理や、文要素に適合する修正文法規則の生成処理、文要素に対する構文解析処理、各文要素に対する構文解析結果の連結処理の内容は、いずれも一例であって、これらの処理は以上説明した方法とは異なる方法によって実現されることとしてもよい。
1 構文解析装置、11 制御部、12 記憶部、13 操作部、14 表示部、21 解析対象文分割部、22 文法規則生成部、23 文要素解析部、24 解析結果連結部。
Claims (5)
- 解析対象文を複数の文要素に分割する分割手段と、
前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段と、
前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段と、
を含むことを特徴とする構文解析装置。 - 前記分割された複数の文要素のそれぞれに対して構文解析を実行して得られる解析結果を連結して、前記解析対象文についての構文解析結果を出力する手段をさらに含む
ことを特徴とする請求項1記載の構文解析装置。 - 前記文法規則生成手段は、前記分割された複数の文要素のうち、文末に位置する文要素以外の文要素について、前記修正文法規則を生成する
ことを特徴とする請求項1又は2記載の構文解析装置。 - 前記文法規則生成手段は、前記文末に位置する文要素以外の文要素について、当該文要素の末尾の形態素が属する語彙種別ごとに、当該文要素を構成する各形態素の属する語彙種別に合致する文法規則を検索することにより、前記修正文法規則を生成する
ことを特徴とする請求項3記載の構文解析装置。 - 解析対象文を複数の文要素に分割する分割手段、
前記分割された複数の文要素の少なくとも一つについて、標準文法規則に基づいて当該文要素に適合する修正文法規則を生成する文法規則生成手段、及び
前記生成された修正文法規則を用いて、前記文要素の構文解析を行う解析手段、
としてコンピュータを機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008248742A JP2010079705A (ja) | 2008-09-26 | 2008-09-26 | 構文解析装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008248742A JP2010079705A (ja) | 2008-09-26 | 2008-09-26 | 構文解析装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010079705A true JP2010079705A (ja) | 2010-04-08 |
Family
ID=42210056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008248742A Pending JP2010079705A (ja) | 2008-09-26 | 2008-09-26 | 構文解析装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010079705A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023450A1 (ja) * | 2010-08-19 | 2012-02-23 | 日本電気株式会社 | テキスト処理システム、テキスト処理方法およびテキスト処理プログラム |
-
2008
- 2008-09-26 JP JP2008248742A patent/JP2010079705A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023450A1 (ja) * | 2010-08-19 | 2012-02-23 | 日本電気株式会社 | テキスト処理システム、テキスト処理方法およびテキスト処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6782505B1 (en) | Method and system for generating structured data from semi-structured data sources | |
JP4676181B2 (ja) | タグ付きデータを有する完全形式レキシコンおよびタグ付きデータを構成し使用する方法 | |
JP5870790B2 (ja) | 文章校正装置、及び文章校正方法 | |
JP2006252381A (ja) | 質問応答システム、およびデータ検索方法、並びにコンピュータ・プログラム | |
JP6955963B2 (ja) | 検索装置、類似度算出方法、およびプログラム | |
US20010029443A1 (en) | Machine translation system, machine translation method, and storage medium storing program for executing machine translation method | |
Bod | Is the end of supervised parsing in sight? | |
KR102209786B1 (ko) | 자연어 처리 기반의 청크 구성 방법 및 장치 | |
US8706477B1 (en) | Systems and methods for lexical correspondence linguistic knowledge base creation comprising dependency trees with procedural nodes denoting execute code | |
KR20170107808A (ko) | 원문문장을 번역 소단위들로 분할하고 소번역단위들의 번역어순을 결정하는 번역어순패턴 데이터 구조, 이를 생성하기 위한 명령어들을 저장한 컴퓨터 판독가능한 저장매체 및 이를 가지고 번역을 수행하는 컴퓨터 판독가능한 저장매체에 저장된 번역 프로그램 | |
JP2010079705A (ja) | 構文解析装置及びプログラム | |
JP4476609B2 (ja) | 中国語解析装置、中国語解析方法および中国語解析プログラム | |
JP4745417B2 (ja) | 情報検索装置およびプログラム | |
JP2010092169A (ja) | 情報処理装置及びプログラム | |
JP4646328B2 (ja) | 関係情報抽出装置及びその方法 | |
JP4007413B2 (ja) | 自然言語処理システム及び自然言語処理方法、並びにコンピュータ・プログラム | |
JP2007087157A (ja) | 翻訳システム、翻訳装置、翻訳方法及びプログラム | |
JP2005284723A (ja) | 自然言語処理システム及び自然言語処理方法、並びにコンピュータ・プログラム | |
JP2008140204A (ja) | データ検索システム及びプログラム | |
JP5160120B2 (ja) | 情報検索装置、情報検索方法及び情報検索プログラム | |
WO2012023450A1 (ja) | テキスト処理システム、テキスト処理方法およびテキスト処理プログラム | |
JP2006127405A (ja) | バイリンガルパラレルテキストをアライメントする方法及びそのためのコンピュータで実行可能なプログラム | |
JP2005025555A (ja) | シソーラス構築システム、シソーラス構築方法、この方法を実行するプログラム、およびこのプログラムを記憶した記憶媒体 | |
JP2002351871A (ja) | 形態素解析装置、形態素解析方法、プログラムおよび記録媒体 | |
JP3058511B2 (ja) | 中国語文解析方法および中国語文解析装置 |