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

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 に至るまでの形態素解析器開発の歴史等はこちらをご覧ください

メーリングリスト

新着情報

ダウンロード

インストール

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 -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