構文解析とは?
単語間の係り受け関係をはっきりさせるのが、構文解析!
構文解析(こうぶんかいせき)とは、構文を明らかにする作業です。
構文とは、「文章の構造、文章の組み立て」(三省堂 大辞林 第三版)のことで、形態素解析で得られた単語間の関係性を明らかにすることで、ある文の構文を把握しようというのが構文解析です。
具体的には、構文解析は、単語間の「係り受け関係」(どの語がどの語を修飾、補足、接続等しているかの関係性)を明らかにします。
機械学習の現場では、自然言語処理を実行するときの第三のステップとして、形態素解析の次に構文解析を行います。
自然言語処理って?
自然言語処理というのは、人間の言語である「自然言語」をコンピュータで分析するための処理のことです。
漢字にするといかめしいですが、今ここで読んでいる「この文字」や「あの文字」も、"Thank you!"も全て、自然言語です。
👉参考記事:『自然言語処理(NLP)とは何か? 自然言語とプログラミング言語の違いを知ろう!』
自然言語は、コンピュータの言語である機械語や、その翻訳用言語であるプログラミング言語とは、言葉のルールや構成が大きく違います。
そのため、そのまま自然言語データをを分析しようとしても、コンピュータがうまく処理してくれません。
そこで登場するのが、機械学習の一分野である「自然言語処理」です。
👉参考記事:『自然言語処理の5つの実行ステップとは?「曖昧さ」への対応策としての機械学習』
係り受け関係とは?
「係り受け」(かかりうけ)とは、文を文節に分けてそれぞれの文節の関係を調べることです.
文節とは,「文を読む際,自然な発言によって区切られた最小の単位」(広辞苑 第7版)のことで、単一の、もしくは複数の形態素が結びついて形成されます。
例えば、「私」という形態素(動詞)と、「の」という形態素(助詞)が結びついて、「私の」という分節をつくります。
文節間の関係には、例えば次のようなものがあります。
- 「主語」と「述語」 ...「私は」→「食べた」
- 「目的語」と「述語」 ...「芋を」←「食べた」
- 「修飾語」と「被修飾語」 ...「汚らしい」→「芋を」
そのため、文中の2つの文節の関係性を探すことを、「係る」+「受ける」で「係り受け」、またそうした関係性のことを「係り受け関係」と呼ぶのです。
さて、形態素間、文節間の係り受け関係が明らかになることで、一つの文の構造が明らかになります。
有名な例で言えば、「象は鼻が長い」という文(通称「ぞうはな文」)がわかりやすいでしょう。
この文では、「長い」が述語であることは明らかですが、どうにも主語がはっきりとしません。
なぜなら、「象は」も「鼻が」も、品詞の組み合わせで言えば、どちらも主語の資格をもっているからです。
この文は、正確に表現するならば「象の鼻が長い」であり、「鼻が」が主語です。
(実は、日本語にはテーマを示す時に用いる助詞の「は」があり、これがこの文をややこしくしています)。
私たちは、このような「あれ、どっちだっけ?」を日常的に、無意識的に、係り受け関係を自分で明らかにしながら言葉の意味を判定しています。
このように、構文解析では、形態素解析で明らかにされた各形態素の品詞をもとに、文中での意味を一つずつ確認しながら、この係り受け関係をはっきりとさせることで、文の意味を明らかにしていく作業なのです。
構文解析の具体的なやり方
では、具体的な例をみてみましょう。
自然言語処理のタスクとして、下記の文が与えられたとします。
眩しい光と発見に感動を覚えた
眩しい / 光 / と / 発見 / に / 感動 / を / 覚え / た
- 眩しい:形容詞(※)
- 光:名詞
- と:助詞
- 発見:名詞
- に:助詞
- 感動:名詞
- を:助詞
- 覚え:動詞
- た:助動詞
続いて、各形態素の品詞と、互いの意味的関係性をもとに、係り受け関係を明らかにします。
覚えた(述語) → 感動を(目的語、被修飾語) ← 眩しい光と発見に(修飾語)
構文解析では、複数の解釈の余地があることから、意味を文法的に一つに絞ることはできません。
「覚えた」が「感動を」に係ることは明らかですが、「眩しい光」「と」「発見」「に」あたりが今ひとつはっきりとしないからです。
(この点の解析については、第四ステップの意味解析に譲ることになります)
ここでは、「眩しい光」と「発見」を同列の単語とみなした上で、「眩しい光と発見に(対する)感動」という意味に解釈することで、就職関係を見出しました。
したがって、本文に対する構文解析の結果としては、「述語ー目的語」関係と、「修飾語ー被修飾語」関係の2つが定義されたことになります。
このように、構文解析は、各形態素の品詞と、文の意味解釈の両面から、各単語(文節)の文中での役割を明らかにし、結果として文全体の構造を把握するための作業です。