形態素解析の方法

トップページ研究分野と周辺自然言語(日本語)処理

形態素解析ツールに入力される文は、端末のボタン操作からは「ひらがなだけの文」の場合もあるし、かな漢字変換を経た後の漢字やカタカナ等が混ざった文の場合もある。
当然、「ひらがなだけの文」の方が、様々な意味に解釈出来るので、形態素解析は難しくなる。

単語の切り出し

例えば、「すもももももももものうち」というよく知られた例で考えると、以下のような具合になる。
形態素解析はまず、最初の文字から順に、「そこから始まる単語」を探っていく。システムには名詞や動詞、助詞等とその読みを収めた日本語の単語帳がある。
最初の一文字で単語になるか調べる。「す」は「巣」「酢」等が単語帳にあるので、これらが候補となる。
これで次の文字に行くのではない。まだ最初を見て、最初の二文字で単語になるか考える。「すも」で一語になる単語が単語帳に無ければ、これは無視する。
さらに、最初の三文字で単語になるか考える。「すもも(李)」という果物が辞書にあるので、これも候補となる。
さらに、最初の四文字で単語になるか考える。「すももも」は単語帳に無い。非常に長い単語があるかも知れないと考えて、この調査をさらに続け、単語帳にある単語は全て候補とする。
遂には、最初から最後までが、全体で一つの単語になっているかまで調べる。ここまで来て、初めて次の段階に行く。
次は、候補となった全ての単語について、その次の文字から、また上記と同じ、文末まで単語を探る作業を行なっていく。
候補「巣」と「酢」については、右にあるのは「もももももももものうち」なので、まず「も」で一つの単語になるか調べる。
「も」は「私も~」のように使われる副助詞として辞書にあるので、候補となる。他に「藻」「喪」等も候補となる。
次に同じところから始まる二文字が単語になるか調べる。「もも」は「桃」「腿(足のモモ)」等が候補となる。
次に三文字の「ももも」はさすがに辞書には無い。この様に末尾まで単語になるか調べて、「巣」又は「酢」の次に並ぶ候補単語群を作って行く。
最初の単語が「すもも」の場合は、次に右に並ぶひらがなは「もももももものうち」となる。最初の「も」は上記と同様に、「も」「藻」「喪」等が候補となり、二文字では「桃」「腿」が候補となる。
このような操作(実際にはデータ構造の工夫で上記より効率化されているが)を続けて行くと、候補単語の組合せは、以下のよう束(ラティス)構造になる事が分かる。

この例文では「も」が八つも繋がっているため、同じ候補が並んでしまうが、三番目の単語候補まで示した図となる。

連接可能規則

この簡単な例文でも、相当な候補数になる。そこで形態素解析では、「連接可能規則」を導入して、候補単語の組合せを削減する。そのため辞書に各単語の品詞(名詞、動詞等の区分)を追加する。
連接可能規則は簡単にするため、とりあえず、例えば二つの品詞が接続可能かどうかだけを記述する。
例えば、名詞+副助詞、副助詞+名詞は可能だが、名詞+名詞は不可能(複合名詞の熟語は予め一語と登録しておく)、副助詞+副助詞は不可能という規則を入れる。
これだけで、最初の三語の組合せは、以下のように減少する。

ここで二語目の赤枠で囲んだ名詞は、一語目からの連接可能性が無い。従って、淘汰される。それに繋がる三語目の「も」も淘汰される。
結局、上記の連接可能規則に基づく可能な最初の三語の組合せは以下のように絞られる。
また、文頭に来る事の出来る品詞(例えば副助詞から始まる文はあり得ない)を決め、また文末に来る事の出来る品詞も決め、これも連接可能規則に組み入れる。
「文頭」「文末」といった(対応する単語の無い)品詞を用意し、文頭+名詞は可能、接頭語+文末は不可能、等とルールを追加する。

要するに、左右のどちらか一つでも、繋がる単語が無い単語は淘汰される。
連接のような単語間の関係の決定は、構文解析で文全体を決めるが、単語に切り分ける形態素解析の段階でも、効率的に行なう事を考えると一部、導入せざるを得ない訳である。
このような関連性もあり、形態素解析と構文解析を同時に行なう方法も、様々に研究されている。
連接可能規則だけでも相当、候補単語の組合せは絞られて来るが、それでもまだ多数の候補が残る。もっと組合せを絞るために、様々な方法が開発されている。

(左)最長一致法

文頭の単語の中で、読みのひらがな列の最も長い単語を選択する。二番目以降の単語も、左隣の単語に接続可能な単語の中から最も読みの長いものを選択する。

この例では、青枠で囲った単語が候補となる(「藻」「喪」は読み(も)は一字、「桃」「腿」の読み(もも)は二字)。
連接可能規則だけで絞った候補単語列は、読みの短い単語が多く含まれる列はあまり妥当でない場合が多い事が知られていて、この方法にも一理はある。
しかし、読みの長い単語の列が正しいとは限らず、短い語の後に長い語が来る場合もあり、必ずしも正しい方法とも言えない。

2文節最長一致法

文節とは、「自立語」「接頭語+自立語」「自立語+接尾語又は付属語」「接頭語+自立語+接尾語又は付属語」のように、一つの自立語と非自立語の組を指す。
英語では、節はSとVを含む文を意味する(従属節等)場合も多いので、文節より句と呼ぶ方が適切かもしれないが、文節という言葉を用いる場合も多い。
2文節最長一致法は、文頭から2文節ごとの長さが最も長いものを選択する。よく使われる例文では以下のようになる。

第1文節は共通だが、第2文節で長さに差が出るので、青いルートが選ばれる。
なお、ここで「まで」の後の「は」がなく、「車+で」「来る+まで」(双方4文字)と同じ字数の場合は、最初の形態素が短い方(「車+で」は3+1文字、「来る+まで」は2+2文字なので後者)を選ぶと、成功率が高いとされる(「彼が来るまでは医者を訪ねる」は意味的には少々変だが、形態素解析上は正しい文である)。

形態素数最小法、文節数最小法

これは其々、候補の単語列のうち、文全体で形態素数或いは文節数が最小になるものを選択する方法となる。

形態素数最小法では、青いルートが選ばれる(数字は其々のルートに於ける形態素番号)。
文節数最小法は精度が良い。新聞記事1000文をひらがなにして打ち込んだところ、正解率96%だったという実験結果もある。

統計的な形態素解析

大量の日本語文データに基づく、統計的な手法が様々に開発され、現在の形態素解析に於いては中心的な方法となっている。
上記の例文で、「彼が車で歯医者を訪ねる」「彼が来るまでは医者を訪ねる」のどちらが妥当であるかは、大量の日本語文データから、この両者の出現頻度を調べ、高い方を選ぶか、高い方から順位を付けて出力すればよいと考えられる。
しかし、この程度の長さの文であっても、自然に書かれた日本文のデータの中でこれと同じ文が出る確率は非常に低く、信頼ある出現率を調べる事は不可能となる。
大量の日本文から、或る単語の次に別の或る単語が来る確率(或る二語が連続する確率)を調べる方法はどうだろうか。
単語レベルだと二語の組合せ数が膨大になり(5000語としても、2乗だから2500万の組合せがある)、其々の組合せについて信頼ある出現率を調べるに足る日本文データを集めるのは、やはり容易ではない。
そこで、実際に可能な方法として、以下の方法等が用いられる。
或る品詞の後に別の或る品詞が来る確率を調べておく(品詞の種類はさほど多くないので、充分に信頼出来る統計的な二品詞間の連接確率を計算する事が出来る)。
次に或る品詞のときに或る単語が出現する確率(例えば、名詞の中で「車」が現れる確率)を調べる(これも充分に信頼出来る統計的な確率が得られる)。
具体的には、大量の日本文から、品詞aの次に品詞bが来た回数を数える(大量の日本文は形態素解析するのではなく、既に正しい品詞と単語が与えられているものとする)。
その回数を単純に品詞aが現れた回数で割れば、品詞aの次に品詞bが来る確率が求まる。
大量の日本文から、或る単語wが或る品詞aとして(同じ単語が違う品詞として使われる場合もあるので)現れた回数を数える。
その回数を単純に品詞aが現れた回数で割ると、或る品詞aが或る単語wである確率(wの出現確率)が求まる。

ここでP(C1)は、文頭の品詞がC1という品詞(例えば名詞)になる確率、P(W1|C1)は品詞がC1の場合にその単語がW1である条件付確率である。
P(C2|C1)は、品詞C1の次に品詞C2が来る条件付確率(C1からC2への遷移確率)である。
この式は、一つ前の単語(と品詞)のみによって、次の品詞や単語の確率が決まる(このような連鎖をマルコフ連鎖という)。
実際の文では、前の数語によって或る単語の出現確率は決まっていると考えられ、これは計算を簡単にするための近似値であると言える。
しかし、充分な精度は在り、候補の文の其々について上記の式で与えられる確率を計算し、最も確率の高いものを選択する。
この統計的な方法は、実際に観測された記号列(この場合、入力されたひらがなの列)から、後ろに隠れている記号列(この場合、品詞や単語の列)を推定する「隠れマルコフモデル」の一種であるとも考えられる。