Skip to content

Latest commit

 

History

History
134 lines (89 loc) · 9.45 KB

ChaSen.md

File metadata and controls

134 lines (89 loc) · 9.45 KB

ChaSen(茶筌)—形態素解析器

ChaSen(茶筌)は、奈良先端科学技術大学院大学の松本裕治氏の研究室で開発され、1997年に公開された可変長マルコフモデルに基づいた統計的形態素解析器である。

1. 概要

形態素解析(Morphological Analysis)は、自然言語処理分野で主に事前処理として用いられる手法であり、言語の文法や単語の品詞情報をもとに、文章を単語が意味を持つ最小の単位に分解する解析を指す。

1

図1 「私は台所で料理します」の例

例えば、「私は台所で料理します」という文章を形態素解析すると「私(代名詞)/は(副助詞)/台所(名詞)/で(助詞)/料理(名詞)/し(動詞)/ます(助動詞)」というように言葉を分割していく。

比較的に精度が良い形態素解析のフリーソフトがいくつか公開されている。広く知られているのは「JUMAN」、「ChaSen」、「MeCab」、「KAKASI」などであり、今回では、ChaSen(茶筌)について説明する。

ChaSen(茶筌)は、奈良先端科学技術大学院大学の松本裕治氏の研究室で開発され、1997年に公開された可変長マルコフモデルに基づいた統計的形態素解析器であり、以下の特徴を持つ:

  • 特定の文法体系に依存しないシステム部分と文法・辞書の部分が独立。

  • システム部分 — 文法・辞書記述部と形態素解析プログラム部からなる。

  • 文法体系、単語間の連接関係の入れ換えが可能。

  • 現在配布されているパッケージには、一般利用者のための標準的文法として、システ ム標準文法が用意されている。

ベースとなった形態素解析ツールは「 JUMAN」 であるが、統計的な手法を用いており、解析速度と使い勝手の向上を目指している。現在はIPA品詞体系を使用しており、「JUMAN 」とはその方向性が異なっている。

2. ChanSen(茶筌)の仕組み

一般的な日本語形態素解析アルゴリズムの流れは、以下のようになる。

ステップ1: 入力文に対して、辞書を参考にしながら、可能な形態素分割をすべて求める。

入力文に対して可能な形態素分割をすべて求めるために、入力文の各部分文字列に対して共通接頭辞探索を行うという操作を文の先頭から順に行う。たとえば、「くるま」という部分文字列に対して、「く(区)」「くる(来る)」「くるま(車)」などの辞書エントリを枚挙するという処理である。

fig_jpma_lattice1

図2 入力文「かれのくるまでまつ」の例

なお、この形態素分割の列挙の操作によって、膨大な数の分割候補が生成されるが、この候補の中には、日本語文として文法的に誤っているようなものもあり得る。例えば、図2の例に対して、「かれの」という入力を考えるとき、単純に辞書を引くと「枯れ」(動詞「枯れる」の連用形)+「の」(助詞)という分割候補も考えられるが、動詞の連用形に助詞の「の」が連続することは日本語文法に照らして適切ではない。

そのため、形態素に関する品詞や活用などの情報を利用して、2 つの形態素が連接するかどうかの可能性を判定し、連接する可能性のある分割候補だけを列挙する。すなわち、「の」の位置で辞書を引いた結果、助詞「の」が得られたとしても、その直前の「枯れ」という動詞の連用形とは接続しないため、候補から除外するのである。

ステップ2: ステップ1で求められたすべての解に対して、もっとも適切な解を1 つ以上選択する。

ステップ1で求められたすべての解に対して、良く現れる形態素(品詞)・連接する形態素対(品詞対)ほどコストが低いという基準で、形態素に生起コスト、リンクに連接コストを与える。

この前者の直観は「形態素と形態素の結びつきやすさ/にくさ」というなんらかの値を割り当てることにより表現できる。また、後者は「形態素自体の出現のしやすさ/しにくさ」というなんらかの値に対応すると考えることができる。ここから、結びつきにくい形態素の連続や、出現しにくい形態素に対して高い「コスト(数値尺度)」を割り当て、文全体で見たときのコストの和の小さな解析結果が、もっとも自然でありよいものであると言える。

fig_jpma_lattice2

図2 入力文「このひとことでげんきになった」の例、節点上の数字は、生起コストを、枝上の数字は、接続コストを表している

3. ChaSenの実装・解析結果・性能評価

入力文「すもももももももものうち」の場合、出力は以下になる。

$ echo すもももももももものうち | chasen -iw
すもも	スモモ	すもも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
の	ノ	の	助詞-連体化		
うち	ウチ	うち	名詞-非自立-副詞可能		
EOS

正しく解析できるが、未知語を含まれている「ホリエモン氏に会った。」の場合、出力は以下になる。

$ echo ホリエモン氏に会った。 | chasen -iw
ホ	ホ	ホ	名詞-一般		
リエ	リエ	リエ	名詞-固有名詞-人名-名		
モン	モン	モン	名詞-固有名詞-一般		
氏	シ	氏	名詞-接尾-人名		
に	ニ	に	助詞-格助詞-一般		
会っ	アッ	会う	動詞-自立	五段・ワ行促音便	連用タ接続
た	タ	た	助動詞	特殊・タ	基本形
。	。	。	記号-句点		
EOS

入力文の「ホリエモン」部分を正しき解析できなっかた。形態素解析器の後輩としてのMeCabの解析結果は:

$ mecab
ホリエモン氏に会った。
ホリエモン      名詞,固有名詞,人名,一般,*,*,*   0,10
氏      名詞,接尾,人名,*,*,*,氏,シ,シ   10,12
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ 12,14
会っ    動詞,自立,*,*,五段・ワ行促音便,連用タ接続,会う,アッ,アッ   14,18
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   18,20
。      記号,句点,*,*,*,*,。,。,。      20,22

「ホリエモン」を正しく解析できた。

次に解析の速度を調べる。解析データは「吾輩は猫である」のテキストファイル(768kb)、結果は:

Chasen MeCab JUMAN
1.1秒 1.3秒 1分53秒

4. まとめ

今回に説明した形態素解析器は「ChaSen」であるが、統計的形態素解析器として、有名な三つ、「ChaSen」、「JUMAN」、「MeCab」の比較を表1に示す。

表1 他の形態素解析器との比較
ChaSen JUMAN MeCab
解析モデル 可変長マルコフ bi-gram マルコフ bi-gram マルコフ
コスト推定 コーパスから学習 人手 コーパスから学習
学習モデル HMM (生成モデル) CRF(識別モデル)
辞書引きアルゴリズム Double Array パトリシア木 Double Array
解探索アルゴリズム Viterbi Viterbi Viterbi
連接表の実装 オートマトン 2次元 Table 2次元 Table
品詞の階層 無制限多階層品詞 2段階固定 無制限多階層品詞
未知語処理 字種 (変更不可能) 字種 (変更不可能) 字種 (動作定義を変更可能)
制約つき解析 2.4.0で可能 不可能 可能
N-best解 不可能 不可能 可能

参考資料:

[1] 浅原正幸:形態素解析のための拡張統計モデル,情報処理学会論文誌,Vol.43,pp.685 (2002) .

[2] Udemyメディア:形態素解析とは?おすすめの5大解析ツールや実際の応用例を紹介, (2018) .

[3] 松本裕治,北内 啓,山下達雄,平野喜隆:日本語形態素解析システム『茶筌』 version 2.0 使用説明書,(1999).

[4] Steven Bird, Ewan Klein, Edward Loper著,萩原正人、中山敬広、水野貴明訳『入門 自然言語処理』,O'Reilly Japan,2010.