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解 | 可能 | 不可能 | 不可能 | 不可能 |
% 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
% mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS出力フォーマットは, ChaSen のそれと大きく異なります。 左から,
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音となっています。 引数にファイルを与えると, そのファイルが解析対象となります。 また, -o オプションにて, 別のファイルに結果を出力することも可能です。
% mecab INPUT -o OUTPUT
% mecab -O wakati 太郎はこの本を二郎を見た女性に渡した。 太郎 は この 本 を 二郎 を 見 た 女性 に 渡し た 。
% mecab -Oyomi (ヨミ付与) % mecab -Ochasen (ChaSen互換) % mecab -Odump (全情報を出力)これらの出力フォーマットは, /usr/local/lib/mecab/ipadic/dicrc に定義されています。 さらに, ユーザがこれらのフォーマットを自由に定義することが可能です。 こちらをご覧ください.
% 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
configure option で --enable-utf8-only を指定すると. MeCab が扱う 文字コードを utf8 に固定します。 euc-jp や shift-jis をサポートする場合, MeCab 内部に変換用のテーブルを埋めこみます。 --enable-utf8-only を 指定することでテーブルの埋めこみを抑制し, 結果として実行バイナリを 小さくすることができます。
MeCab は, 辞書に単語が未登録の場合でも適当にその品詞を推定します。
ホリエモン市 ホリエモン 名詞,固有名詞,地域,一般,*,*,* 市 名詞,接尾,地域,*,*,*,市,シ,シ EOS ホリエモンさん ホリエモン 名詞,固有名詞,人名,一般,*,*,* さん 名詞,接尾,人名,*,*,*,さん,サン,サンただし, その精度は正確ではありません. 品詞推定をやめ, 未知語は常に "未知語" 品詞を出力したい場合は -x (--unk-feature) オプションを使います。 オプションで指定された文字列が品詞として使われます。
%mecab --unk-feature『未知語』 ホリエモンさん ホリエモン 未知語 さん 名詞,接尾,人名,*,*,*,さん,サン,サン
% mecab -N2 今日もしないとね。 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー も 助詞,係助詞,*,*,*,*,も,モ,モ し 動詞,自立,*,*,サ変・スル,未然形,する,シ,シ ない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ と 助詞,接続助詞,*,*,*,*,と,ト,ト ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ 。 記号,句点,*,*,*,*,。,。,。 EOS 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー もし 副詞,一般,*,*,*,*,もし,モシ,モシ ない 形容詞,自立,*,*,形容詞・アウオ段,基本形,ない,ナイ,ナイ と 助詞,接続助詞,*,*,*,*,と,ト,ト ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ 。 記号,句点,*,*,*,*,。,。,。 EOS