Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 448c9319e0ddf587c31508e414117b2c > files > 25

mecab-0.996-1.fc18.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MeCab の開発経緯</title>
<link type="text/css" rel="stylesheet" href="mecab.css">
</head>
<body>
<h1>MeCab の開発経緯</h1>
<h2>形態素解析の歴史</h2>
<p>
オープンな形態素解析器として Juman, ChaSen が存在する. それぞれの
基本的な開発理念は以下である
</p>
<ul>
<li><a href="http://www.kc.t.u-tokyo.ac.jp/nl-resource/juman.html">Juman</a>
<p>
Juman 以前の商用的に配布されていた形態素解析器は, 辞書や品詞体系
連接規則はほぼ固定されており, ユーザ自身自由に定義できなかった. Juman は
これらの定義すべて外部に出し自由な定義が可能になった. 
</p>
<p>
辞書は比較的入手しやすいが, 連接コストや単語生起コストの定義は
人手によって行わざるをえなかった. 解析ミスを発見するたびに副作用が無い範
囲で連接コストを修正する必要があり, 開発コストが大きい.
</p>
<p>
また, Juman は日本語の形態素解析として開発されていたので, 
未知語処理が日本語に特化されており, 未知語処理の定義を
自分で与えることはできない. また, 品詞は2階層までに固定されており,
品詞体系には一種の制限がある.
</p>

<li><a href="http://chasen.naist.jp">ChaSen</a>
<p>
ChaSen の貢献の1つは, 統計処理 (HMM) によって連接コストや単語生起コストを
推定するようになった点にある. この処理のおかげで, 解析ミスを
蓄積するだけで自動的にコスト値を推定できるようになった.
さらに, 品詞階層も無制限になり, 品詞体系を含めて(本当の意味で)
自由に定義できるようになった.
</p>

<p>
しかし, 複雑な品詞体系にすればするほど, データスパースネスの問題が
発生する. HMM を使う場合, HMM の内部状態(Hidden Class)を 1つに固定する
必要があるため, 各品詞から内部状態への「変換」が必要となる. 単純には
各品詞を1つの内部状態に割りあてればよいが, 活用まで含めて品詞を
すべて展開すると, その数は 500 にも及び, 低頻度の品詞について
信頼度の高い推定量を得ることができない. 逆に, 頻度の高い「助詞」等の品詞は
語彙も含めて内部状態にしないと高い精度が得られない.
複雑な品詞体系にすればするほど, 内部状態の定義が困難になる.
つまり, 現状の(複雑な)品詞体系を扱うには, HMM では力不足であり,
それを補助するための人手コストが大きくなっている.
</p>

<p>
また, ChaSen にはコスト値推定モジュールが付与されていない.
NAISTの内部では利用できるらしいが, 上記の理由から設定すべき
パラメータが多く, 使いこなすのが困難である.
</p>

<p>さらに, ChaSen も未知語処理もハードコーディングされており
自由に定義することはできない.
</p>
</ul>

<h2>MeCab 0.90の機能</h2>
<ul>
<li>コスト値推定に <a
href="http://www.cis.upenn.edu/~pereira/papers/crf.pdf">Conditional Random Fields, CRF</a> を採用 <br>

    <p>
    HMM は, 唯一の内部状態を定義する必要があった. 一方 CRF はオーバラッ
    プを含めた複数の内部状態を定義することが可能である. この機能により, 
    細い品詞階層と粗い品詞階層の確率値を混ぜるといった,
    「スムージング」が自然にかつ自動的に実現できる. 
    これは, 複雑な品詞体系を扱う上で便利な機能であり,
    人手処理を大幅に簡略化することができる.
    </p>

    <p>
    CRF の採用により, 品詞体系, 単語長,  辞書の変更に対し柔軟にかつ低コストで対応できるようになる.
    さらに, CRF は, HMM の 1/3 程度の学習コーパスで同程度の
    性能が得られることが分かっている. つまり, 新しいドメインへの
    適用といった事にも低コストで対処できるであろう.
    </p>

    <p>
    また, CRF は, これまでの最小コスト法として定式化できるため,
    解析速度の劣化はない.
    </p>

    <p>MeCab 0.90 は, コスト推定プログラムも含め配布する.
    最小限の設定でも高い精度が得られるようなユーザビリティーを
    提供する.</p>

<center>
<p><small>解析結果: 上 Juman, 下 ChaSenとの比較. <br>
   seg:わかち書きの精度, top:品
    詞まで含める, all:活用まですべて含める<br>
E-HMMs が現状の MeCab/ChaSen</small></p>
<p><img src="result.png"></p></center>

<li>未知語処理の外部定義<br>
  <p>
    MeCab 0.90 では, ユーザが未知語処理の戦略を自由に定義可能となる.
    基本的な戦略として字種に基づくわかち書きを行う. 
    字種そのものの定義(どの文字コードがどの字種に対応するか),
    各字種に対するわかち書きの定義 (グループ化するか, N文字づつまとめる
    か), わかち書きされたものにどのような品詞を割りあてるか.
    といた事がユーザ自身で定義できる.
 </p>

 <p>字種を表現するための内部コードに Unicode を用いており,
    未知語処理の言語非依存性が(部分的に)実現できる.
  </p>

 <p>また, 未知語処理のパラメータも CRF により推定される. 
    ChaSen や Juman に比べれば, 未知語に対する 解析精度の向上が期待できる
 </p>

<p>解析例</p>

<p>MeCab 0.81 の解析結果</p>
<pre>
ホリエモン氏に会った。
ホ      名詞,一般,*,*,*,*,ホ,ホ,ホ
リエ    名詞,固有名詞,人名,名,*,*,リエ,リエ,リエ
モン    名詞,固有名詞,一般,*,*,*,モン,モン,モン
氏      名詞,接尾,人名,*,*,*,氏,シ,シ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
会っ    動詞,自立,*,*,五段・ワ行促音便,連用タ接続,会う,アッ,アッ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。</pre>

<p>MeCab 0.90 の解析結果 (周辺のコンテキストを考慮しながら「ホリエモン」を正しく解析できる)</p>
<pre>
ホリエモン氏に会った。
ホリエモン      名詞,固有名詞,人名,一般,*,*,*   0,10
氏      名詞,接尾,人名,*,*,*,氏,シ,シ   10,12
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ 12,14
会っ    動詞,自立,*,*,五段・ワ行促音便,連用タ接続,会う,アッ,アッ
14,18
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ   18,20
。      記号,句点,*,*,*,*,。,。,。      20,22</pre>

 <li>ソフトなわかち書き</li>
  <p>
    形態素解析器の仕事は, おおざっぱに言えば「入力文を形態素に区切る」こ
    とにある. しかし 「本部長」のように単独の解を得られない場合がある. 
    (本/部長 or 本部/長). また長い複合語が定義されている時,
    その構成語が出力されないという問題もある.
  </p>

  <p>MeCab 0.90 では, 「入力文を形態素に区切る」という機能とは別の
    「入力文から形態素を抽出する」という機能を提供する. 
    「形態素を抽出する」機能を実現するには, 入力文のすべての部分文字列の「形態素らしさ」を
    算出する必要がある. MeCab 0.90 では  この「形態素らしさ」を「形態素周辺確率」
    という形で算出する. 詳細は言語処理学会 2005 にて<a
    href="http://chasen.org/~taku/publications/nlp2005.pdf">発表</a>済み
  </p>
    
<p>
    以下が解析例である
</p>

<pre>
本部長
本部    名詞,固有名詞,地域,一般,*,*,本部,モトブ,モトブ      0.026441     
本部    名詞,一般,*,*,*,*,本部,ホンブ,ホンブ        0.619559    *
本      名詞,固有名詞,人名,姓,*,*,本,モト,モト      0.010897     
本      名詞,一般,*,*,*,*,本,ホン,ホン      0.046961     
本      接頭詞,名詞接続,*,*,*,*,本,ホン,ホン        0.292945     
部長    名詞,一般,*,*,*,*,部長,ブチョウ,ブチョー            0.352623     
長      名詞,一般,*,*,*,*,長,チョウ,チョー          0.013549     
長      名詞,接尾,一般,*,*,*,長,チョウ,チョー       0.624362    *
</pre>

<p>
* が付いたものが実際の解析結果. 「形態素らしさ(形態素周辺確率)」も同時に
出力される
</p>

<p>
「形態素らしら」は入力文によって変わることに注意されたい.
</p>

<pre>
松本さんに会う。
松本    名詞,固有名詞,人名,姓,*,*,松本,マツモト,マツモト            0.989497    *
さん    名詞,接尾,人名,*,*,*,さん,サン,サン         0.998228    *
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ     0.990367    *
会う    動詞,自立,*,*,五段・ワ行促音便,基本形,会う,アウ,アウ        0.999387    *
。      記号,句点,*,*,*,*,。,。,。          0.999999    *
EOS
松本市に行く。
松本    名詞,固有名詞,地域,一般,*,*,松本,マツモト,マツモト          0.919221    *
松本    名詞,固有名詞,人名,姓,*,*,松本,マツモト,マツモト            0.073882     
市      名詞,接尾,地域,*,*,*,市,シ,シ       0.886151    *
市      名詞,一般,*,*,*,*,市,シ,シ          0.110607     
に      助詞,副詞化,*,*,*,*,に,ニ,ニ        0.013169     
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ     0.986618    *
行く    動詞,自立,*,*,五段・カ行促音便,基本形,行く,イク,イク        0.966972    *
行く    動詞,自立,*,*,五段・カ行促音便ユク,基本形,行く,ユク,ユク            0.030681     
。      記号,句点,*,*,*,*,。,。,。          0.999997    *
EOS
</pre>

<p>上記のように「松本」の形態素らしさは周辺のコンテキストで変化する</p>

<li>複数の解析モデルを解析器とは別に配布
<p>解析器とパラメータ(辞書, 連接コスト)が完全に独立に
設計されるので, 以下の辞書についてのパラメータを個別に配布する.
ただし, ライセンスは個々の辞書に準ずる
</p>
<ul>
<li>IPADIC
<li>JUMAN 
<li>Canna (学習用コーパスが無いので作るかも?)
<li>中国語解析 (未定)
<li>英語解析 (未定)
</ul>
</ul>
</body>
</html>