銀月の符号

Python 使い見習いの日記・雑記

形態素解析エンジン MeCab 0.98pre3 野良ビルド

MeCab 0.98pre3 の Python バインディングWindows XP Pro, MinGW, Python 2.5.4 and Python 2.6.2 という環境でコンパイルしてみた。晒してみる。

方法は昨年11月の『形態素解析エンジン MeCab 0.97 とその Python バインディングを MinGW でビルドする - 銀月の符号』とほぼ変わらず。違いは C:\python26\include, C:\Python26\libs を環境変数 C_INCLUDE_PATH, LIBRARY_PATH に入れていないことくらい。 distutils(つまり setup.py) を用いてビルドする際には不要ということがわかったので。

出来上がったもの

mecab-python の Windows 用バイナリ、ダウンロード

libmecab-1.dll

MinGW で作ったlibmecab-1 ライブラリ。 mecab-python とセットで使う。

mecab-python

MinGW で作った _MeCab.pyd モジュールと MeCab.py モジュールのセット。 Python 2.5.4 用と 2.6.2 用の 2 種類を作ってみた。

IPA 辞書 (UTF-8)

MinGW で作った UTF-8IPA 辞書。

使い方

上記のセット libmecab-1.dll, MeCab.py, _MeCab.pyd, ipadic をディレクトリ(スペース、マルチバイト文字を含まないこと)にまとめる。さらに mecabrc 設定ファイルをつくる。 mecabrc の中身は空でよいが、辞書を指定するようにしておくと後で楽。

dicdir = ipadic

これで準備完了。 Hello Mecab プログラムはこのような感じ。 -r オプションで mecabrc のパスを指定する。 MeCab とのやり取りはユニコード文字列ではなく、辞書と同じエンコーディング(今回は UTF-8)に直したバイト列で行う。

>>> import MeCab
>>> s = u'すもももももももものうち'
>>> tagger = MeCab.Tagger('-r mecabrc')
>>> result = tagger.parse(s.encode('utf-8'))
>>> result = result.decode('utf-8')
>>> print result
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

mecabrc が空で辞書を指定していない場合は -d オプションを付けて辞書を指定するようにすればよい。

>>> tagger = MeCab.Tagger('-r mecabrc -d ipadic')

より詳しい MeCab SWIG バインディングの説明は本家の http://mecab.sourceforge.net/bindings.html を参照。

副産物

mecab.exe

libmecab を作った際にこれもできた。 mecab.exe だけが欲しい人はこんなあやしい野良ビルドではなく、MeCab 本家インストーラーから取得することを推奨。

MeCab 0.98pre3 を MinGW でビルドする際にあてたパッチ