Python3からMeCabを使う方法がWebを調べても見つけられなかったので自力で何とかした。ここに使えるようにするまでのメモをまとめます。
##問題と解決方法
以下の問題が発生していました。
- mecab-python:
(GoogleCodeから落としてきたmecab-pythonのsetup.pyをpython3からbuild出来ない。) - mecab:
(初回のパース処理でnode.surfaceが空になる現象が発生する。)
これに対してGoogleCodeのMeCabページにあるIssueのうち2件の修正を適用する事で解決させます。Python3への対応はmecab-pythonの修正のみで可能です。しかし、MeCab本体のバグを修正しなければPython上で使った時にパース処理でバグります。そのため、MeCab自体も修正パッチを当てて新たにビルドしたものをインストールして使います。
-
Issue 7: swig version used for mecab-python too old.
mecab-pythonをsetup.py buildをする前に内部のMeCab.py, MeCab_wrap.cxxをリンク先のものに差し替える。 -
Issue 5: Python wrapper: surface text garbled in first call to parseToNode
MeCabを./configureする前にrequest_type.patchを当て、src/tagger.cppを修正する。
##当環境で行った操作
使用するパッチのURLには変なtokenが付いていたので、代わりにIssueへのリンクを書きました。そのため、パッチはブラウザを用いてリンク先で取得してください。また、事前にg++, python3-devが必要です。
$ wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
$ tar -zxvf mecab-0.996.tar.gz
$ wget request_type.patch(リンク先で取得)
$ cd ~/mecab-0.996
$ patch -u < ../request_type.patch
$ ./configure --enable-utf8-only
$ make
$ sudo make install
$ wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd ~/mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ sudo make install
$ wget https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
$ tar -zxvf mecab-python-0.996.tar.gz
$ wget MeCab.py(リンク先で取得)
$ wget MeCab_wrap.cxx(リンク先で取得)
$ mv MeCab.py mecab-python-0.996/
$ mv MeCab_wrap.cxx mecab-python-0.996/
$ cd ~/mecab-python-0.996
$ vi setup.pypython3向けの修正を適用(http://anond.hatelabo.jp/20121113070853)
return string.split (cmd1(str)) を
return cmd1(str).split() に書き換える。$ python3 setup.py build
$ sudo python3 setup.py install
##注意点
インストールが完了した後のmecab-python-0.996/test.pyは実行できません。原因はpython2で書かれているためです。修正してから動作確認をしてください。