MacPortsでMeCabを入れてPythonバインディングをvirtualenv環境に入れた
最近読んでるオライリーの入門ソーシャルデータを読み進めるのに必要みたいだったので、MeCabを入れました。入れるのはMacPortsで簡単だったけど、ちょっとだけ注意点があったのでメモしておきます。
インストール
$ sudo port install mecab $ sudo port install mecab-ipadic-utf8 $ cd /opt/local/lib/mecab/dic/ $ sudo ln -snf ipadic-utf8 sysdic $ mecab これはテストです。 #標準入力 これ 名詞,代名詞,一般,*,*,*,これ,コレ,コレ は 助詞,係助詞,*,*,*,*,は,ハ,ワ テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS
注意点とか
utf-8の辞書を使う必要がある
$ sudo port install mecab $ mecab これはテストです。 これ? ????,????,*,*,*,*,* ?? ̾??,??ͭ̾??,?ȿ?,*,*,*,* ??? ????,????,*,*,*,*,* ?? ̾??,????,*,*,*,*,??,?????ȥ?,?????ȥ? ??? ????,????,*,*,*,*,* ?? ̾??,??ͭ̾??,?ȿ?,*,*,*,* ??。 ????,????,*,*,*,*,* EOS
これだけだと文字化けしてしまいます。
$ ls -l /opt/local/lib/mecab/dic/ total 8 drwxr-xr-x 11 root admin 374 1 19 21:41 ipadic-eucjp lrwxrwxrwx 1 root admin 12 1 19 21:42 sysdic -> ipadic-eucjp
sysdicというのが多分使用するデフォルトの辞書ファイルで、ファイル名的にEUC-JPの辞書にシンボリックリンクを貼ってます。
$ sudo port install mecab-ipadic-utf8 $ cd /opt/local/lib/mecab/dic/ $ sudo ln -snf ipadic-utf8 sysdic
依存解決で入ったmecab-ipadicがEUC-JPなので、別途mecab-ipadic-utf8を入れます。シンボリックリンクを張り替えたら、文字化けが解決するはずです。
variantsという手も?
$ port info mecab mecab @0.991 (textproc, japanese) Variants: [+]ipadic, jumandic, naistjdic, sjis, utf8 略 Library Dependencies: mecab-base, mecab-ipadic Conflicts with: mecab-sjis, mecab-utf8
入れてから気がついたけどvariantsにuft8ってのがあるから、もしかしたら、これ指定したらもしかしたら一発でスッキリ入るかも?
Pythonバインディングのインストール
各言語から使うにはバイディングをインストールする必要があります。
MacPortsにはPerl用、Ruby用、Python用があるみたいですね。$ port search mecab p5-mecab @0.980.0 (perl, textproc, japanese) a Perl module for MeCab p5.8-mecab @0.980.0 (perl, textproc, japanese) a Perl module for MeCab p5.10-mecab @0.980.0 (perl, textproc, japanese) a Perl module for MeCab p5.12-mecab @0.980.0 (perl, textproc, japanese) a Perl module for MeCab p5.14-mecab @0.980.0 (perl, textproc, japanese) a Perl module for MeCab py-mecab @0.98 (python, textproc, japanese) a Python module for MeCab py24-mecab @0.98 (python, textproc, japanese) a Python module for MeCab py25-mecab @0.98 (python, textproc, japanese) a Python module for MeCab py26-mecab @0.98 (python, textproc, japanese) a Python module for MeCab py27-mecab @0.98 (python, textproc, japanese) a Python module for MeCab rb-mecab @0.98 (ruby, textproc, japanese) a Ruby module for MeCab rb19-mecab @0.98 (ruby, textproc, japanese) a Ruby module for MeCab Found 28 ports.macで形態素解析エンジン Mecab を使うときの最も簡単な方法 | clicktx::Tech::Memo
MacPortsにPythonバインディングがあるみたいだけど、見た感じpythonbrew+virtualenvで作った環境とは違うとこに入れられそう。それは嫌なので、MeCab公式からtar.gzを落としてきました。
http://mecab.sourceforge.net/#downloadから辿ってmecab-python-0.991.tar.gzをダウンロード。
setup.pyの代わりにeasy_install
1. Installation % python setup.py build % su # python setup.py install
中にあるreadmeによるとsetup.pyで入れるとあったけど、これもVirtualenv環境に入らない様な気がしたので、なんとかeasy_installでやろうと調べました。
$ pythonbrew venv use mecabtest $ easy_install mecab-python-0.991.tar.gz Processing mecab-python-0.991.tar.gz Running mecab-python-0.991/setup.py -q bdist_egg --dist-dir /var/folders/y8/y8IQy4kGHyWTmb7QC2nZUE+++TI/-Tmp-/easy_install-3ppZgF/mecab-python-0.991/egg-dist-tmp-oM5VYq cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++ zip_safe flag not set; analyzing archive contents... MeCab: module references __file__ Adding mecab-python 0.991 to easy-install.pth file Installed /Users/myuser/.pythonbrew/venvs/Python-2.7.2/mecabtest/lib/python2.7/site-packages/mecab_python-0.991-py2.7-macosx-10.4-i386.egg Processing dependencies for mecab-python==0.991 Finished processing dependencies for mecab-python==0.991
ログにある通り、Virtualenvの環境に入れられました。
どうやらsetup.pyが使える状態になっているパッケージのzip or tar.gzアーカイブは、ローカルに置いてあるならeasy_installが使えるらしい。C++の辺りで警告が出てるけど、とりあえず動くようなので気にしないでおく。