(2012/3/19)更新再開。すぐ止まったりしないよう頑張る。
TODO: PythonRecipe の 2.7, 3.2 時代にそぐわないものの修正。
2009-09-10
形態素解析エンジン 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)
使い方
上記のセット 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 でビルドする際にあてたパッチ
- 671 http://d.hatena.ne.jp/aidiary/20101121/1290339360
- 41 http://plaza.rakuten.co.jp/kugutsushi/diary/200910220000/
- 29 http://d.hatena.ne.jp/takave/20101205/p1
- 22 http://d.hatena.ne.jp/aidiary/20101121
- 17 http://d.hatena.ne.jp/aidiary/20100703/1278163879
- 16 http://d.hatena.ne.jp/AntiBayesian/20120418/1334743105
- 16 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=QOj&q=mecabrc+utf&btnG=検索&lr=lang_ja&aq=f&oq=
- 12 http://d.hatena.ne.jp/AntiBayesian/
- 12 http://d.hatena.ne.jp/aidiary/20100703
- 12 http://d.hatena.ne.jp/aidiary/searchdiary?word=*[自然言語処理]