MeCab: Yet Another Part-of-Speech and Morphological Analyzer

MeCab (和布蕪)とは

MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。 言語, 辞書,コーパスに依存しない汎用的な設計を 基本方針としています。 パラメータの推定に Conditional Random Fields (CRF) を用 いており, ChaSenが採用している 隠れマルコフモデルに比べ性能が向上しています。また、平均的に ChaSen, Juman, KAKASIより高速に動作します。 ちなみに和布蕪(めかぶ)は, 作者の好物です。

目次

特徴

比較

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

MeCab 



 
 



2013-02-18 MeCab 0.996


configure script iconv  
CSV/ID, CSV  
Lattice  Lattice::set_result() .   

2013-01-24 MeCab 0.995


 
API (Lattice:set_boundary_constarint, Lattice::set_feature_constraint)   

2012-06-03 MeCab 0.994


 (使CRF)  
 (CRF)  

2012-01-27 MeCab 0.993


MeCab::Tagger::formatNode()  
()退  

2012-01-14 MeCab 0.992


Typo  

2012-01-14 MeCab 0.991


 
 

2011-12-24 MeCab 0.99


MeCab::Model, MeCab::Lattice 
   
 (MeCab::Model 使)  
 Model::swap()  
Windows Unicode  
online learning, HMM, EM learning   
MeCab::Node:(begin|end)_node_list   
 

2009-09-27 MeCab 0.98


UTF16()
Windows MutlByteToWideChar Native API使  
 Google coding style   
 EON (end of N-best)  (-S or --eon-format)
Shift-JIS  
online learning  ()
Wno-deprecated  
 

2008-02-03 MeCab 0.97


 
Windows  

API  (Tagger::set_partial())
API  (Tagger::set_lattice_level())
API (Tagger::set_theta())
API (Tagger::set_all_morphs())  

2007-06-10 MeCab 0.96



POS-ID (-p )  
 :  , (CSV)  (Windows)
charset,   
 , 
 --dump-config   
EMHMM  (experimental)  

2007-03-11 MeCab 0.95


 
csv ","
UTF8
recall/precision  
 
 

2007-02-24MeCab 0.94



HMM ()
API (begin_node_list, end_node_list)  
char.def, unk.def, matrix.def 
Windows iconv.dll  
 

2006-07-30 MeCab 0.93


LGPLBSD,LGPL,GPL  

2006-07-10 MeCab 0.92


, PerlC++. Perl  
 (mecab-dict-index)   
rewrite.def   
-x: , 
id 
 
, 
 

2006-04-30 MeCab 0.91


Windows   
   
mecab-dict-index  -f , CSV     
 API export   
CRF pthread 使  (experimental)
 
example  MeCab (unittest)  
 

2006-03-26 MeCab 0.90


Initial release!  



MeCab GPL(the GNU General Public License), LGPL(Lesser GNU General Public License),  BSD 使,  COPYING, GPL, LGPL, BSD
MeCab 

Source



mecab-0.996.tar.gz:
. 

Binary package for MS-Windows



mecab-0.996.exe:
Windows   IPA 


MeCab 

IPA 



IPA , IPA   CRF  () 

Juman 



Juamn ,   CRF  

Unidic 



Unidic , BCCWJ CRF


perl/ruby/python/java 

 


UNIX



 

C++  (g++ 3.4.3  VC7 )

iconv (libiconv): 使


 

 % tar zxfv mecab-X.X.tar.gz
 % cd mecab-X.X
 % ./configure 
 % make
 % make check
 % su
 # make install



% tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz
% mecab-ipadic-2.7.0-XXXX
% ./configure
% make
% su
# make install


Windows


,  (mecab-X.X.exe) . 

使


mecab , .MeCab , 
% mecab
すもももももももものうち
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

, ChaSen  , 
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音

 

,  , -o ,
% mecab INPUT -o OUTPUT


 -O 使
% mecab -O wakati
太郎はこの本を二郎を見た女性に渡した。
太郎 は この 本 を 二郎 を 見 た 女性 に 渡し た 。


 -O 使
% mecab -Oyomi (ヨミ付与)
% mecab -Ochasen (ChaSen互換)
% mecab -Odump (全情報を出力)

, /usr/local/lib/mecab/ipadic/dicrc  , .

使


, euc 使 , shift-jis  utf8  使,  configure  charset , . , shift-jis , utf8 
% tar zxfv mecab-ipadic-2.7.0-xxxx
% cd mecab-ipadic-2.7.0-xxxx
% ./configure --with-charset=sjis
% make

% tar zxfv mecab-ipadic-2.7.0-xxxx
% ./configure --with-charset=utf8
% make

, mecab-dict-index  -t 使   -f 
% cd mecab-ipadic-2.7.0-xxxx
% /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t utf-8
# make install

UTF-8 only mode

configure option で --enable-utf8-only を指定すると. MeCab が扱う 文字コードを utf8 に固定します。 euc-jp や shift-jis をサポートする場合, MeCab 内部に変換用のテーブルを埋めこみます。 --enable-utf8-only を 指定することでテーブルの埋めこみを抑制し, 結果として実行バイナリを 小さくすることができます。

未知語推定

MeCab は, 辞書に単語が未登録の場合でも適当にその品詞を推定します。

ホリエモン市
ホリエモン      名詞,固有名詞,地域,一般,*,*,*
市      名詞,接尾,地域,*,*,*,市,シ,シ
EOS
ホリエモンさん
ホリエモン      名詞,固有名詞,人名,一般,*,*,*
さん    名詞,接尾,人名,*,*,*,さん,サン,サン

, . ,   ""  -x (--unk-feature) 使 使

%mecab --unk-feature『未知語』
ホリエモンさん
ホリエモン      未知語
さん    名詞,接尾,人名,*,*,*,さん,サン,サン

N-Best 


-N #NUM 使, #NUM    , , -N  512 
% mecab -N2
今日もしないとね。
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
も      助詞,係助詞,*,*,*,*,も,モ,モ
し      動詞,自立,*,*,サ変・スル,未然形,する,シ,シ
ない    助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ
と      助詞,接続助詞,*,*,*,*,と,ト,ト
ね      助詞,終助詞,*,*,*,*,ね,ネ,ネ
。      記号,句点,*,*,*,*,。,。,。
EOS
今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
もし    副詞,一般,*,*,*,*,もし,モシ,モシ
ない    形容詞,自立,*,*,形容詞・アウオ段,基本形,ない,ナイ,ナイ
と      助詞,接続助詞,*,*,*,*,と,ト,ト
ね      助詞,終助詞,*,*,*,*,ね,ネ,ネ
。      記号,句点,*,*,*,*,。,。,。
EOS


CRF  Jorge Nocedal  L-BFGS  FORTRAN 使

http://www.ece.northwestern.edu/~nocedal/lbfgs.html


 J. Nocedal. Updating Quasi-Newton Matrices with Limited Storage (1980), Mathematics of Computation 35, pp. 773-782.
D.C. Liu and J. Nocedal. On the Limited Memory Method for Large Scale Optimization (1989), Mathematical Programming B, 45, 3, pp. 503-528.