形態素解析

は自然言語の文字列を形態素列へ変換することである。

 概要 
形態素解析とは、対象言語の文法や単語の品詞等の情報にもとづき、文法的な情報の注記の無い自然言語のテキストデータ（文）を単語の列に分割し、各単語の品詞や活用などを判別することで形態素（おおまかにいえば、言語で意味を持つ最小単位）の列を得る作業である。

自然言語処理の分野における主要なテーマのひとつであり、機械翻訳やかな漢字変換など応用も多い（もちろん、かな漢字変換の場合は入力が通常の文と異なり全てひらがなであり、その先に続く文章もその時点では存在しないなどの理由で、内容は機械翻訳の場合とは異なったものになる）。

もっぱら言語学的な観点を主として言語学で研究されている文法にもとづく解析もあれば、コンピュータ上の自然言語処理としてコンピュータでの扱いやすさに主眼を置いた解析もある。以下は後者のためのツールを用いた例で、「お待ちしております」という文を形態素解析した例である （「茶筌」を使用した）。
文字列読み原形品詞の種類活用の種類活用形お待ちオマチお待ち名詞-サ変接続  しシする動詞-自立サ変・スル連用形てテて助詞-接続助詞  おりオリおる動詞-非自立五段・ラ行連用形ますマスます助動詞特殊・マス基本形。。。記号-句点  
自然言語以外の場合では、プログラミング言語などの場合は字句解析が相当する。

 手法 

 英語の解析手法 

英語の文は日本語とは異なり、予め単語と単語の区切りがほとんどの箇所で明確に示される。このため、単語分割の処理は日本語の場合ほど複雑である必要はなく、簡単なルールに基づく場合が多い。

例えば「It's a gift for Mr. Smith.」という文を解析することを考える。単語分割をすると以下のようになる。

 it / 's / a / gift / for / mr. / smith / .

 文全体を小文字化し、単語の位置（文頭かそれ以外か等）により単語が区別されてしまうことを防ぐ
 it's や don't 等の省略形を分割する（it's → it / 's 、 don't → do / n't）
 文末のピリオドを前の単語と切り離す（この際、Mr. などに使われる文末とは関係ないピリオドは切り離さない）

it's の分割として it / 's にするか it / is にするかはしばしば議論の対象となるが、所有格末尾の 's が誤って is になることを防ぐために、 's にすることが多い。

品詞付与はルールに基づくものから統計に基づくものまで利用される（下記の例は Stanford POS Tagger による）。

文字列品詞の種類原形itPRP（人称代名詞）it'sVBZ（動詞/三単現）beaDT（冠詞）agiftNN（名詞/単数）giftforIN（前置詞）formr.NNP（固有名詞/単数）mr.smithNNP（固有名詞/単数）smith...

 日本語の解析手法 
英語の場合と異なり、文節を得るのが目的となる。大まかに言えば文から切り出した単語が属する品詞を辞書（自然言語処理用の）を用いて調べていき、結果得られた並びから正しく文節が構成される並びであるものを正解であるとするといったような方法を取る。

日本語文法では、たとえば動詞のあとに格助詞がくることはできない（「ドアを開けるを」などは不可）といったように、ほとんどの付属語について「このようなものの後には付く」「このようなものの後には付かない」という規則性があり、また動詞の活用はその後に来る品詞を制限することがある（たとえば連体形の後は名詞）。このような性質を利用することによって単語の境界の判別を行う。具体的にこの性質を利用する方法には以下の2つがある:

 規則による方法
 確率的言語モデルをもちいる方法

 規則による形態素解析 
長尾真らの1970年代後半の研究では、次のようなアルゴリズムによる形態素解析処理を構築した。

 事前に用意しておいた辞書や規則をテーブル形式で読み込む。
 入力文を読み込む。
 慣用句テーブルとのマッチングを行う。最長一致法を使う。マッチングした部分は固定され、以降の解析では変更されない。
 句読点と字種の変わり目（基本的にひらがなから漢字に変わる箇所）で、文節を切り出す。これは文法上の文節ではない。
 切り出された文節の中で、慣用句にマッチングしていない箇所について、ひらがな書き自立語テーブルなどとのマッチングを行う。このとき、接続条件を考慮せず、全ての可能性を洗い出す。
 以上で出てきた慣用句や単語を接続条件に基づいて連鎖させていく。複数の連鎖がありうる場合、全てを出力する。
 結果をファイルに書き出す。
 未処理の文節があれば、5 に戻る。

前提として、漢字で書かれた部分は基本的に切り分けず、そこが自立語（あるいは自立語の語幹）になると想定している。従って、漢字で書かれた自立語の辞書（テーブル）は持たない。このとき使われるテーブルには、次のものがある。

 慣用句テーブル
 ひらがな部分の単語切り分け用テーブル
 付属語テーブル
 ひらがな自立語テーブル
 活用語尾テーブル - 
 ひらがな語幹テーブル
 特殊動詞テーブル
 副詞テーブル
 情報テーブル - 上記テーブル内の各項目に対応した辞書的情報
 接続テーブル - 形態素間の相互接続関係を記述したテーブル。接続カテゴリ（品詞）毎に、その前に出現可能な形態素のカテゴリや活用形が記されている。

この中で、接続テーブルが規則に相当する。形態素解析における品詞の接続関係は必ずしも通常の文法通りではなく、解析の効率や、形態素の切り分けがなるべく100%となる（切り分け不能とならない）よう考慮して設計される。このような規則を「文節構造モデル」と呼び、首藤公昭らの研究がある。

 確率的言語モデルによる形態素解析 

昨今の日本語や英語などの形態素解析では統計的な手法が利用される。主な手法に「ラティス上の経路予測」と「点予測」が存在する。

ラティス上の経路予測では、事前に生成可能な単語列 (ラティス) を辞書を使って網羅的に列挙し、各単語間の連結部において両単語が連結して出現する確率に相当するスコアを付与する。文全体でこのスコアの合計がもっとも高くなるような品詞列を答えとする。スコアの計算は隠れマルコフモデル (HMM, Hidden Markov Model) や条件付き確率場 (CRF, Conditional Random Field) などによりモデル化する。

次に点予測 (Pointwise prediction) による手法がある。点予測ではすべての文字の境界に対し、分割可能かどうかをサポートベクターマシン (SVM, Support Vector Machine) 等の分類器により判定する。分割可能な場合はその点が単語区切りとなる。分割判定には、分割点の周りの文字やその種類、部分文字列が単語辞書に含まれるかどうかといった情報が与えられる。品詞推定においても、ある判定箇所について、その単語と周りの単語から SVM などにより判定する。

点予測は、辞書を使って単語ラティスを生成する必要がないというメリットがある。このため、入力文中の単語が辞書に無い場合 (未知語を含む場合) でも、周りの文字列を使って単語らしい部分を識別可能な場合があり、辞書が貧弱でも比較的高い精度で解析できる。さらに、ラティスの生成には原理的に文の長さをnとしてO(n2)の時間を要するが、点予測では各文字間について判定するだけのためO(n)の時間で済む。

いずれの手法でも、ある特定の言語の全世界における全文章データを元にモデルを作成することは事実上不可能であるし、さらに、そもそも文章化されたデータからモデルを学習したとしても、それが元となる文章の解析には最適であるものの、それ以外の（たとえばモデルから見ればまったく手付かずで未知の、今から解析しようとする）文章には適しているかどうかは保証が無い事などから次の節で述べるような問題も発生する。

 日本語の形態素解析における諸問題 
日本語を形態素解析する際においては、以下の4つが大きな問題となる:

 単語の境界判別の問題 

単語の境界を判別することはかな漢字変換の基礎となる技術である。しかし、単語の境界判別を正しく行うためには与えられた文以外の様々な知識、情報が必要となる場合があり、そのため解決が困難である。

たとえば「うらにわにはにわとりがいる」という文には、以下の様に（意味的には解釈に失敗しようとも）文法的に正しい異なる読み方が存在する（本当はもっとある）:

 裏庭 / には / 鶏 / が / いる
 裏庭 / には / 二 / 羽 / トリ / が / いる
 裏 / に / ワニ / は / 鶏 / が / いる
 裏庭 / に / 埴輪 / 取り / が / いる

上記最後の文の意味解釈は、"埴輪取り"と呼ばれる人あるいは物が存在したという特殊な状況下では意味的にも解釈に成功するだろうが、一般にそんな例は全くといっていいほど無い。しかしそれは"埴輪取り"なるものが実際には存在しないという経験的な知識による人間らしい判断であって、コンピューターなどの計算機を用いた解析では、文法や単語の辞書的データを超えるようなそういった知識も導入したとすると必要な知識が膨大に用意される必要があり、。この文の様に、完璧な正解を得るにはその文がおかれている文脈や書き手の意図等の背景をくみとらねばならないため非常に難しい。

 品詞判別の問題 
文中の品詞が常に一意に確定できるわけではない。

たとえば名詞と形容動詞の間には「別」「イロイロ」など、形容動詞と形容詞の間にも「アタタカ」「ヤワラカ」という連続領域があるという指摘がある。　より具体的には「それとこれは話が別だよ」という文章の場合、「別だ」という形容動詞に「よ」という終助詞がついたもの、「別」という名詞に「だよ」という終助詞がついたものという２通りに解釈することができる。しかもこの場合にどちらで分けても、文章の意味は変わらない上に、形態素の区切りの位置も一定ということが保証されない。

このような品詞分類の曖昧さは他の言語にも存在するが、冠詞や複数形、文法的性がない、主語を必須としないなど、手掛かりとなる規則が少ない。

 未知語の問題 

形態素解析は普通、その言語の単語を収めた辞書を用いておこなわれる。解析対象の文中の辞書に含まれない単語を未知語と呼ぶ。日本語では漢字の列やカタカナの列はたとえ未知語であってもある程度単語として認識することができる。しかしそれが使えない場合、代表的な方法は「知っている単語が現れるまで読み飛ばす」というものだが、これは後の解析を狂わせてしまい、結果として頑健な解析（より多くの文を解析可能であること）ができなくなってしまう恐れがある。

 ルーズな文法の問題 

話し言葉や電子メールなどで使われる言葉は、（たとえば小中学校で習うような）ある特定のモデル化された文法による日本語からはかけ離れたものが。たとえば「そんなことは知らないでしょう」が「んなこた知らんしょ」に変化しうる。また電子メールなどでは形態素解析に用いられる辞書には載っていない略語やフェイスマークが使われていることも多い（しかもそれらは一般に常用されるがために日々増えている）。

また、こういった文は校正が不十分なため、書き手の誤りが入っている場合が多くある。しかも、こういった誤りが繰り返されれば正用とみなされる場合すらある。このような文に対応した解析手法を頑健な解析と呼ぶ。このような文に対応するためには、正しい文が入力されるという前提の設計に基づく現在の形態素解析の手法を、誤りが含まれる様な文にも対処可能なように根本から見直す必要があるが、言語資源の不足のため。

 日本語以外の言語の形態素解析 

英語を含む多くの言語では、単語はふつう空白によってわかち書きされる。このため文を形態素に区切るのは日本語に比べると比較的簡単である （合成語の品詞や、形態素の品詞を見分ける問題は依然として残る）。ドイツ語では複数の単語から合成された名詞が空白による区切りのない一つの単語として表現されるため、わかち書きを行う必要がある。中国語でも単語間の空白がないため、日本語と同様にわかち書きを行う必要がある。また英語や日本語では活用する品詞の種類が少数に限られるため、単語の活用形も含んだものをすべて辞書に収めることができるが、ロシア語、フィンランド語などでは活用はほぼすべての品詞が起こすため、これらの言語では辞書に活用形を全て収めるのは非現実的である。

 ソフトウェア 
形態素解析に関する様々なソフトウェアが存在する。

 エンジン 
日本語の形態素解析用エンジンとして機能する自由ソフトウェアには以下が挙げられる：
 ChaSen（茶筌）、chasen.naist.jp (ラティス上の経路予測、HMM)
 JUMAN、nlp.kuee.kyoto-u.ac.jp
 KAKASI（kanji kana simple inverter）、kakasi.namazu.org
 KyTea（キューティー）、http://www.phontron.com/kytea/ (点予測、線形分類)
 MeCab（和布蕪）、taku910.github.io/mecab (ラティス上の経路予測、CRF)
 NMeCab（MeCabの.NETへの移植）、github.com
 Sen（MeCabのJavaへの移植）、ultimania.org、sen.dev.java.net
 Igo (MeCab互換、Java形態素解析器)、igo.sourceforge.jp
 Janome (Python)、https://pypi.python.org/pypi/Janome
 Kagome (Go)、github.com/ikawaha/kagome (ラティス上の経路予測、辞書の切り替えで韓国語の形態素解析も可能)

日本語の形態素解析エンジンとして機能するプロプライエタリソフトウェアには以下が挙げられる：
 Rosette形態素解析システム、Basis Technology 
 Amazon、MSN、楽天などで利用されており、世界で最も利用者の多い形態素解析エンジンであると言える。
 形態素解析エンジン言語郎、Zoo Corporation
 日本語形態素解析MARIMO ムーター株式会社
 大規模な辞書を持たず、1000語程度の学習モデルのみで未知語、新語、流行語、略語、話し言葉に対応する。
 日本語形態素解析Webサービス（Yahoo!デベロッパーネットワーク）、developer.yahoo.co.jp
 形態素解析API（gooラボ)、gooラボ by NTTレゾナント
IBM Watson Explorer (旧 IBM Watson Content Analytics) 
英語の形態素解析エンジンとして機能するソフトウェアには以下が挙げられる：

 Stanford POS Tagger、nlp.stanford.edu/software/tagger.shtml

 辞書 
日本語の形態素解析用辞書として機能するソフトウェアには以下が挙げられる：
ipadic :ChaSen用辞書。
NAIST-jdic :ChaSen，MeCab用の辞書。
UniDic :MeCab用の辞書。