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

$Id: index.html,v 1.30 2003/07/03 11:54:57 taku-ku Exp $;


MeCab (和布蕪)とは

MeCab は, 奈良先端科学技術大学院大学自然言語処理学講座の開発する形態素解析器 ChaSenを基に開発された高速な形態素解析器です. 現在 ChaSen とは独立に, フルスクラッチから開発されています. 解析精度は, ChaSen と変わらないにもかかわらず, 平均的に ChaSen の3-4倍のスピードで動作します. 以前は, ChaSenTNG という名前でしたが, オリジナルの ChaSen と方向性が変わってきており, これ以上 ChaSen の名前を借り続ける事は不適切と感じたので, MeCab に名前を変えました. ちなみに 和布蕪(めかぶ)は, 作者の好物です.

目次

特徴

メーリングリスト

mecab の メーリングリストを作りました. 参加したい方は, mecab-ctl@tahoo.orgあてに
subscribe
のみを書いたメールを送信してください.

新着情報

ダウンロード

Source

perl/ruby/python/java バインディング

Binary package for MS-Windows

インストール

UNIX

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 -Oxml (XML)
% mecab -Ochasen (ChaSen互換)
% mecab -Ocsv (csv)
% mecab -Oyomi (ヨミ付与)
これらの出力フォーマットは, /usr/local/lib/mecab/ipadic/dicrc に定義されています. さらに, ユーザがこれらのフォーマットを自由に定義することが可能です. こちらをご覧ください.

N-Best 解の出力

-N #NUM オプションを使うことで, 確からしいものから#NUM 個解析結果を出力 します. 理論的にはすべての可能な解析解を出力することが 可能ですが, 出力バッファのかねあいから, -N の最大値を 512 に制限しています.

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

N Best 解は, いったん 前向きに viterbi 探索を行なった後, 後ろ向きに, A* 探索を行なうことで実現できます. ただし, A* といっても, heruristic 関数の値は, 前向き探索 時に厳密解を取得できているので, 厳密な N-Best 解を出力する ことができます.

文字コード変更

特に指定しない限り, euc が使用されます. もし, shift-jis や utf8 を 使いたい場合は, configure オプションにて charset を変更し, 辞書を再構築してください. これで, shift-jis や, utf8 の辞書が作成されます.

辞書の構築の際の文字コードの変換に iconv が使用されます. iconv を前もってインストールしておく必要があります. 最近の Linux や, cygwin はインストールされているようです.

% ./configure --with-charset=sjis
% make

% ./configure --with-charset=utf8
% make

コンパイル後でも, 以下の手順で文字コードの異なる辞書を再構築できます. -d オプションを使うことで, それぞれのコードの辞書を使い分けることが可能 です.

% cd mecab-X.X.X/dic
% vi dicrc 

# charset を utf8 に変更
charset = utf8

% make clean
% make charset=utf8
% make dicdir=/somewhere/dic/ipadic-utf8 install
% mecab -d /somewhere/dic/ipadic-utf8 FILES ..

SPEED 比較

テストコーパス: RWCP コーパス(毎日新聞 94年), 約 35000文 3MByte
テスト環境: RedHat Linux 7.2, DELL , XEON 2.4Ghz dual, Memory 4Gbyte

分かち書き出力の結果 (juman のみ標準のフォーマット)

MeCab 2.21s user 0.04s system 99% cpu 2.269 total
ChaSen 7.22s user 0.06s system 98% cpu 7.358
JUMAN 25.93s user 0.07s system 99% cpu 26.055 total
kakasi 7.03s user 0.05s system 99% cpu 7.124 total

デフォルトの出力フォーマット(kakasi は分かち書き)

MeCab 2.72s user 0.04s system 98% cpu 2.793 total
ChaSen 8.22s user 0.06s system 100% cpu 8.278 total
JUMAN 25.93s user 0.07s system 99% cpu 26.055 total
kakasi 7.03s user 0.05s system 99% cpu 7.124 total

TODO, ChaSen との比較

ChaSen 互換をうたうには, まだまだ遠い..

ChaSen MeCab 進行状況,予定など
連結品詞機能 × CaboChaが使うのでサポートしたい
複合語機能 ×
出力フォーマットの柔軟な変更
すべての解析解の表示
n-best 解 ×
多言語形態素解析 英語, 中国語の tokenizer を
tokenizer class から継承して書くだけ
わかち書き位置の外部指定 × × 研究目的として重要な機能なので実装予定
Windows 版 △(コード分割) ○(単一コードから生成)
再入可能ライブラリ ×
マルチスレッド対応 ×
文字コード非依存 △ (動的に変更) SJIS/EUC/UTF-8 の辞書で動作確認
連接コストの推定精度の向上 △ (単純な最尤推定) △ (左に同じ) ME 等を使って推定
研究対象??

おまけ (技術資料)

自然言語処理, 特に形態素解析を知ってる人向けの技術資料
誤りがあればお知らせください.

MeCab ChaSen JUMAN KAKASI
解析モデル 可変長マルコフモデル 可変長マルコフモデル bi-gram マルコフモデル 最長一致
コスト推定手法 コーパスから学習 コーパスから学習 人手 コストという概念無し
辞書引きアルゴリズム Double Array パトリシア木 パトリシア木 Hash?
解探索アルゴリズム Viterbi Viterbi Viterbi 決定的?
連接表の実装 3次元 Table オートマトン 2次元 Table? 連接表無し?
品詞の階層 無制限多階層品詞 無制限多階層品詞 2段階固定 品詞という概念無し?

$Id: index.html,v 1.30 2003/07/03 11:54:57 taku-ku Exp $;

taku-ku@is.aist-nara.ac.jp