LoginSignup
39

More than 5 years have passed since last update.

posted at

updated at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
39