Edited at

MeCabをPython3上から使えるようにする

More than 5 years have passed since last update.

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自体も修正パッチを当てて新たにビルドしたものをインストールして使います。


当環境で行った操作

使用するパッチの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.py


python3向けの修正を適用(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で書かれているためです。修正してから動作確認をしてください。