概要
- 今回は係り受け解析(構文解析)を紹介します
- 形態素解析の次の段階として扱われることが多く、形態素解析の解析結果をもとにして文の構造を解析するものです。
- そこで得られた構造を使って翻訳などの処理につなげていくことが想定されているのですが、深層学習が盛況な現時点では、文構造を明示的に解析する手法は主流ではなくなっています。
構文解析
- 構文解析では、まず生成規則と呼ばれる文法の定義を記述しておきます。解析対象の文の形態素解析結果(品詞列)にその生成規則を再帰的に適用することで、構文解析木を作成します。
[文例]太郎は走った
[形態素解析結果]
太郎 | 名詞 |
は | 助詞 |
走っ | 動詞 |
た | 助動詞 |
[生成規則(例)]
文 | → | 名詞句 | 動詞句 |
名詞句 | → | 名詞 | 助詞 |
動詞句 | → | 動詞 | 助動詞 |
名詞句 | → | 形容詞 | 名詞句 |
動詞句 | → | 副詞句 | 動詞句 |
[構文解析木]
係り受け解析
- 係り受け解析では、文節間の修飾関係を明らかにするというアプローチをとります。
[文例]次郎に花子が読んでいた本を渡した
リンク:係り受け解析システム
- 日本語構文・格・照応解析システム KNP
形態素解析システム JUMAN の解析結果を入力 - CaboCha/南瓜: Yet Another Japanese Dependency Structure Analyzer
形態素解析システム MeCab の解析結果を入力 - GiNZA
Python向け日本語自然言語処理オープンソースライブラリ
係り受け解析における曖昧性
- 形態素解析でもそうですが、係り受け解析においても解析結果の曖昧性が存在します。その曖昧性を解消するために、さらなる情報や機能を追加しているシステムも存在します。
- 短い文では修飾関係はほとんど自明ですが、少し長めの文の場合に解釈の曖昧性が存在する場合もあります。
[文例]長い髪の黒い眼の大きな少女
※この文で何が曖昧なのかというと、「黒い」のは「髪」なのか「眼」なのか、「大きな」のは「眼」なのか「少女」なのかということです。実はこの曖昧性は人間でも(この文だけでは)解消できません。
[解釈1]「黒い」のは「髪」、「大きな」のは「眼」
[解釈2]「黒い」のは「眼」、「大きな」のも「眼」
[解釈3]「黒い」のは「眼」、「大きな」のは「少女」
※これ以外にも文法的に正しい修飾関係は存在します。例えば「長い」→「少女」という修飾関係も文法的には成立しますが、(一般的な)意味としては成立しません。文法だけに基づいて解析すると、このような、意味の通らない解析結果が出てきてしまう恐れもあるということです。(意味的に正しくない解釈は人間は排除することが可能です)
自然言語処理の研究初期には、意味解析は構文解析の次のステップと位置付けられていましたが、このような意味の曖昧性を解決するために、構文解析・係り受け解析の中で意味の問題を解決する方法に次第に移行してきました。
また、解決すべき問題によっては、あえて意味解析に踏み込まないという手法も取られています。
M.H