自然言語処理で文書を美味しく頂くための下拵え
自然言語処理における前処理について個人的な経験を踏まえて思いつくまま書き出した備忘録です。
新語/俗語/隠語
辞書を充実させることでしか根本的な対処は難しいのですが、未知語を推定する機能がある形態素解析器*1の場合、形態素に区切るだけならば、それである程度は対処可能です。
表記ゆれ
表記ゆれのパターンとしては、
- 外来語(例:エネルギー、エナジー)
- ひらがなと漢字、両方の表記が可能な言葉(例:送り仮名、送りがな)
- 送り仮名の有無(例:読み書き、読書き)
- 異字体(例:線形空間、線型空間)
- アルファベットの半角と全角、大文字と小文字
- 長音がマイナス、ダッシュ等になっている
といったものがあります。
上記以外に OCR(光学文字認識)に由来するものもあります。前述の長音以外にカタカナの「タ」が漢字の「夕」(ゆう)、カタカナの「ニ」と漢字の「二」、カタカナの「ト」と漢字の「卜」(うら)など似ている文字に置き換わっていたりします。これらは形態素解析を行う前にクレンジングしておくべきものです。
同義語・類義語
例えば「ベクトル空間」と「線型空間」*2は同じ意味なので、どちらかに統一する必要があります。
複合語
ここでは複合語の中でも特に複合名詞について考えます。複合名詞で分かり易いものとしては連続する名詞によって構成されるものや、名詞+動詞の連用形(例:冬籠り、山越え)などいくつか種類がありますが、それだけでは不十分な場合があります。
例えば「学力向上」と「学力の向上」という2つの語を考えてみましょう。文書における語彙の使用頻度について集計をする場合、(目的にも依りますが)「学力向上」と「学力の向上」を同じ語と見做して集計するという考え方に違和感を憶える方はあまりいないのではないかと思われます。
ただしこの考えを厳密に適用し始めると「数学関連書籍」、「数学関連の書籍」、「数学に関連する書籍」のような記述も同じものと見做して処理しなければならない、というようになっていくため、実際には目的に照らし合わせて何についてどこまで行うのかを検討することになると思われます。
同綴異義語
「どうてついぎご」と読みます。同じ綴りでありながら異なる意味を持つ語のことです。例えば「ベクトル」「ベクター」「量子化」という言葉は異なる分野でそれぞれ別の意味を持っています。キーワード検索でデータを抽出する場合や複数のジャンルに跨って文書の解析を行う場合に注意するべき問題です。*3