形態素解析

形態素解析とは

  • 形態素(morpheme) : 意味を持つ最小の言語単位
  • 単語(word) : いくつかの形態素で構成
  • 文(sentence) : いくつかの複数の単語より構成
  • テキスト(text) : 時事岸井の文が並ぶことで構成

ここで、形態素を対象とした自然言語処理の解析プロセスを形態素解析(morphological analysis)と呼ぶ。

形態素解析は以下の3つのstepで構成される。

  1. 単語分割(word segmentation) : 入力された文を単語の並びに分割する
  2. 品詞付与(part-of-speech tagging) : 単語の品詞を決定
  3. 原形の復元(stemming, lemmatization) : 語形変化、結よう変化している単語を元の単語に戻す

日本語の形態素解析

日本語処理では単語分割、品詞付与、原型への復元を同時に行う。その中で単語の分割が主な処理になる。この処理のためには以下の二つの知識が必要となる。

  • 単語辞書
  • 連接可能性行列

入力された文字列に対して、この二つの知識(制約)を用いて、以下の2stepを繰り返す。

  1. 単語辞書を参照し、入力文字列の各文字の位置から始まる単語を取り出し、ノードとする。
  2. 前後する2単語に対し、連接可能性行列を参照し、連接可能ならリンクを張る。

この2stepを繰り返すことで、グラフの一種である、ラティス(lattice)が得られる。ラティスの文頭ノードから文末ノードまでのパスが、形態素解析結果になる。ただ、ここで複数のパスが得られる可能性は十分ある。

制約だけを用いると、複数の解析結果が得られてしまう。そこで選好を導入する。すると、もっとも良い可能性を一つ選択することが可能となる。
伝統的な日本語の形態素解析において用いられてきた選好としては例えば以下の2つがある。

  • 最長一致法(longest match method)
  • 形態素数(文節数)最小法

しかし、これらの選好は必ずしも理論的な根拠があるわけではない。人工知能における用語としてはこのようなものをヒューリスティック(発見的手法)とも呼ぶことができる。

実際の日本語形態素解析プログラムで用いられる手法としては、コスト最小法がある。コスト最小法ではラティスの中でのノードとリンクにコスト(単語コスト、連接コスト)を与え、コスト最小のパスを最適解として選択する。そこで、解を求めるアルゴリズムとして動的計画法(DP, dynamic programming)の一種である、ビタビ(Viterbi)アルゴリズムを用いる。そのほかにも$A^*$アルゴリズムを用いることで、コストが小さい順に上位Nこの形態素解析結果を得ることもできる。(N-best探索)
しかし、コスト最小法の問題点としては、コストを人手で経験的に与えないといけない点である。このコストをコーパスから自動で得る方法も研究されている。また、未知語への対応も課題である。

英語の形態素解析

英語の形態素解析では品詞付与が重要な処理となる。品詞付与は入力単語列に対して、もっとも適切な品詞列を出力する問題である。この問題に対して統計的言語モデルを用いる手法を考える。以下のように問題を定式化できる。

単語列$W = w_1\cdots w_n$が入力された時、品詞列$T = t_1\cdots t_n$を出力する。この時、$P(T|W)$を最大とする$T$を求める。

ここで、$P(T|W)$の計算をもうするかが問題となる。一つに手法としては以下の近似方が考えられる。
近似のために、各単語について品詞を与える確率は前後の単語とは独立であるという仮定を置く。すると、以下の式が成り立つ。

$$P(T|W) \approx \Pi_{i=1}^{n} P(t_i|w_i)$$

ここで$P(t_i|w_i)$は品詞タグ付きコーパスがあれば、以下のように計算することができる。(近似)

$$P(t_i|w_i) = \frac{C(w_i, t_i)}{C(w_i)}$$

しかしこのモデルでは品詞の並びにおいて、ある品詞の次にはこの品詞はあまり出てこない、この品詞はよく出るなどの情報は全く利用できていない。

ここで、もう少し工夫したモデルを考える。
ベイズの定理を用いると、 $$ P(T|W) = \frac{P(T)\times P(W|T)}{P(W)} $$ となる。

ここでいくつかの仮定を置いて以下の近似をするとすると、 $$ \begin{align} P(T) &\approx \Pi_{i=1}^{n}P(t_i|t_{i-1})\\ P(T) &\approx \Pi_{i=1}^{n}P(w_i|t_i) \end{align} $$ 以下のようになる。 $$ P(T|W) \approx \Pi_{i=1}^{n} P(t_i|t_{i-1}) \times P(w_i|t_i) $$

ここで、品詞タグ付けコーパスがあればそれぞれ遷移確率、単語出力確率は以下のように計算できる。 $$ \begin{align} P(t_i|t_{i-1}) &= \frac{C(t_{i-1},t_i)}{C(t_{i-1})}\\ P(w_i|t_{i}) &= \frac{C(w_i,t_i)}{C(t_i)}\\ \end{align} $$

ここでの遷移確率が「品詞の並びにおいて、ある品詞の次にはこの品詞はあまり出てこない、この品詞はよく出るなどの情報」に対応する。
ここで、遷移確率を連接コスト、単語しゅつ色確率を単語コストと考えれば、このモデルはコスト最小法に対応することがわかる。よって、同じく最適解を求めるためにビタビアルゴリズムを用いることも可能である。

遷移確率と単語出力確率の二つの確率で品詞不意の問題を定式化するこの考え方は雑音のある通信路モデル(noisy channel model)と呼ばれる。