第4回 『形態素解析』
皆様こんにちは,同志社大学の土屋誠司です.自然言語処理の第4回目の今回は,文字列の中から単語を見つける処理である形態素解析について書いてみたいと思います.
入力される日本語(言語)は,コンピュータにとっては単なる文字の羅列にすぎません.ちなみに,コンピュータの内部では,文字列でもなく単なる「0」,「1」の羅列になっています.コンピュータにとっては,「たくさん文字が並んでいるなぁ」としか思っていない状況です.そのため,まず,これは単なる文字の羅列ではなく単語というもので成り立っていることを認識させなければなりません.
そこで,人間と同じように辞書などの知識(データベース)を使って文字の羅列から単語を見つけていきます.この処理のことを『分かち書き処理』と呼び,データベースとして『単語辞書』を用います.ちなみに,海外の言葉,例えば英語などでは,単語と単語の間にスペースを入れて表現されますので,そもそも日本語のように単語を見つけるという作業は必要ありません.そういう意味でも日本語はちょっと不利な言語だったりします.
『分かち書き処理』では,『単語辞書』としてデータベース化されている知識を使って単語を見つけ出しますので,そのついでに,その単語の品詞は何か,語形の変化があるかなども判断しています.例えば「書いた」という単語が見つかったとすると,この単語は「動詞」であり,原型は「書く」,過去を表現する「た」に語形変化していることも判断します.
しかしこのように,データベースに登録されている単語を見つけるだけでは,見つけ出す単語に無数の可能性が出てきます.例えば,「このひとこと」という文字列であれば「この / ひとこと」や「この / ひ / と / こと」などいろいろな単語が見つかってしまいます.そこで,前後の関係から,ある単語の後にどのような単語が出現する可能性があるのかを評価しながら単語を見つけることで,ある程度見つけ出す単語の可能性を制限します.この処理で使用する辞書を『連接可能性辞書』と言います.
ここまでの処理を行うのが『形態素解析』ということになります.『形態素解析』では『単語辞書』と『連接可能性辞書』を用いますので,これらの辞書の良し悪しが形態素解析性能の良し悪しに直結します.もちろん,辞書に登録されていないものは,解析できないということになります.このような単語を『未定義語』と呼びます.そのため,辞書は非常に大きなものになりますが,世の中にある単語をすべて登録することは現実的には不可能です.例えば,人名や会社名,地名,専門用語,型式名などの固有名詞は,ほぼ無数に存在します.そこで,これらの単語も何とか認識するための最終手段として,連続して存在する漢字やひらがな,カタカナ,記号などを一つの名詞として処理することが一般的です.これにより,ある程度解決することはできます.
しかし,その他にも問題があります.ということで,次回は,自然言語処理を行う際に問題となる日本語の特徴について書いてみたいと思います.