計算言語学ー形態素解析
形態素解析とは
文を構成する形態素/語を同定する。すなわち、文を形態素/語に分割し、
それぞれのクラス(品詞 (Part of 、変化形 (Inflection)
のタイプ)を決定する。
似たような言葉に以下があり、形態素とは何か比較参考のために列挙。
・形態論 (Morphology)
語の形成や変化形などを扱う、言語学の1 部門
e.g. make->makes などの変化
・形態素 (Morpheme)
意味を担う最小の言語単位
e.g. count, count/s, count/ed, count/able, un/count/able, count/er
計算 , 数え る , 計算 する , 可算 , 数え られ る , 非 可算 , 計数 器
•語 (Word)
1つ以上の形態素から構成され、統語上一つの機能を果たす最小の言語単位
e.g. count, counts, countable
英語をWordに分割するのは簡単で、形態素に分けるのも比較的容易だが、同じ単語でもいろんな品詞として使われる(多品詞語)のでどの品詞なのか検出するという難しさがある。
日本語の場合は分が空白で分割されていないので単語ごとに分割するのも難しい。
単語に対して品詞の情報があるとして、次に
文法的制約 (Grammatical 形態素(語)間の連接可能性)を定義する。
その可能性に優先規則 (Priority rule)を設定する。優先規則には様々な方法論があり。 運用は heuristic。
・最長一致
・二文節最長一致
・形態素数最相
・文節数最小
・コスト最小
日本語の場合
コスト最小法のヴィタビ・アルゴリズム (Viterbi algorithm)
1. 仮想的な語「文頭」のノードを作るため、入力文中の位置(文字と文字の間)を示
すポインタ p の値を 0 (先頭文字の左)にする。
2. ポインタ位置から始まる文字列で辞書を検索する。
↓
ポインタ 0 1 2 3 4 5 6 7 8 9 10 11
あ る ひ ぼ く は さ ん ぽ し た
3. ポインタ位置で終了する語 v i とポインタ位置から開始する語 w j が連接可能か
どうかチェックする。連接可能なら、 w j のノードを作り、 v i のノードからリンクをはる。
各w j について、( v i までの部分最小コスト) +( v i と w j の連接コスト) +(w j のコスト)が最小となる v i を求める。その最小値を w j までの部分最小コスト とし、最小となるようなルートの v i から w j へのリンクを採用する。
4. ポインタ p に 1 を加えながら、ポインタ位置で終了する語があるかどうか調べる。
•終了する語があってポインタ位置が「文末」でなければ、2へ。
•終了する語 v i があってポインタ位置が「文末」なら、それと仮想的な語
「文末」が連接可能かどうかチェックする。連接可能なら、「文末」のノードに
リンクをはる。(v i までの部分最小コスト)+( v i と「文末」の連接コスト)が
最小となる v i からのリンクには採用の印をつける。
5.採用したリンクのついた文頭から文末までのリンクによるパスがコスト最小の解を
与えている。
※コスト最小法は、ダイナミックプログラミング(動的計画法)に基づいている。
日本語処理上の注意点
•複合語 (Compound word) の辞書登録
・複合名詞(主に専門用語) 本 棚、計算 機、自然 言語 処理→1単語として登録してしまうのか?
•助詞相当表現 の辞書登録
・助動詞相当表現
e.g. な/けれ/ば/なら/ない、 か/も/しれ/ない は、品詞分解できるが、意味は「助詞」と一緒なので「なければならない」で助詞として登録する。
辞書に語として登録することにより形態素解析精度が向上する
•未知語 (Unknown word) の処理
辞書引きで語が得られない場合、連続する漢字列、カタカナ列、アルファベット列であれば固有名詞かなと予想する処理が入っていることが多い。異なる文字種が混ざると判定は難しくなる。e.g.東レ