第6回 『構文解析』
皆様こんにちは,同志社大学の土屋誠司です.自然言語処理の第6回目の今回は,形態素解析の次に行う文法を確認する処理である構文解析について書いてみたいと思います.
形態素解析では,答えになりそうかという可能性をある程度制限して単語の判断・選択をしています.しかし,あくまで前後の関係から判断・選択しているだけですので,正しそうな単語を選択することはできますが,これだけでは文全体を通して正しい単語が正しく並んでいるという保証はできません.
そこで,文法上正しく単語が並んでいるのかを検証してみる必要があります.この処理のことを『構文解析』または『統語解析』と呼びます.形態素解析の時と同じように辞書(データベース)を利用して解析を行います.『構文解析』では,文法を辞書としてデータベースに登録しておき,その登録された文法と解析対象である文,つまり形態素解析された単語列とを照らし合わせることで正しい順番に単語が並んでいるのか,日本語として成立しているかをチェックします.
ここで問題になるのが,文法に則らない日本語が存在してしまうという現象です.新聞や書籍などで使われている言葉は,かなりかっちりした,硬い表現を使用します.いわゆる『文語』といわれる表現が用いられます.しかし,例えばメールやLINEなど知り合いの人としゃべる際には,そんなにかっちりした硬い表現ではなく,崩した,緩い,柔らかい表現を使用されるかと思います.いわゆる『口語』の表現です.この緩い口語表現をかっちりした文語のための文法のチェックにかけると「正しい日本語ではない」という判断結果となりエラーとなってしまいます.
であれば,「緩い口語表現の文法も登録すればよいのではないか」と思うのですが,そう簡単な話ではありません.緩い口語表現には,いろいろなバリエーションがあり,そのすべての表現をデータベースに登録することは現実的ではありません.しかも,前回の『日本語の特徴』の回でも書かせていただきましたが,日本語では文の要素(主語や目的語,述語など)を省略したり,単語自体を省略したりすることがあります.そのため,文法を網羅しようとどれだけたくさんの文法をデータベースに登録したとしても,結局,登録された文法に則った表現になるとは限りません.また,緩い口語表現をデータベースに登録することで,それらの文法知識に引っ張られることで,逆くに,かっちりした文語表現が解析できなくなってしまう弊害が生じたりしてしまいます.
我々はこのような非常に柔軟で役に立つけれども,非常に扱いの難しい言葉を使いながらコミュニケーションをとっていると思うと「すごい能力を持っているなぁ」と思うと同時に,細心の注意を払わなければ簡単にトラブルを引き起こしてしまうということも実感するかと思います.
次回は,意味を捉えるための意味解析・文脈解析について書いてみたいと思います.