Python
mecab
自然言語処理
Cabocha

ubuntu16.04LTSにMecabとCaboChaをインストールしてpython3系から使えるようにする

はじめに

cabochaという係り受け解析を行えるライブラリを見つけたのでとりあえず遊んでみようと軽い気持ちで触り始めたらインストールにすら苦戦…
とりあえず自分の環境ではこうすれば出来ましたっていうのを書いておこうと思います。

環境

  • windows 10
  • VirtualBox 5.1
  • Ubuntu16.04 LTS
  • python 3.5.2

※windowsマシン上のVMにUbuntuを入れています

本題

MeCabと辞書データのダウンロード

ターミナルで以下のコマンドを実行する

$ sudo apt-get -y install mecab libmecab-dev mecab-ipadic-utf8 mecab-jumandic-utf8

MeCabのpythonへのバインディング

※2017/11/06 追記

pip3 install mecab-python3

念のためこれをしておいたほうが良いそうです

CRF++ のダウンロード

こことかから最新版をダウンロード(.tar.gz)。現在はver. 0.58でした。
適当なディレクトリにおいて解凍。移動。

$ tar zxvf CRF++-0.58.tar.gz
$ cd CRF++-0.58

バグがあるので修正

$ vim node.cpp
#include <time.h>  (追記)

保存して閉じてインストール

$ ./configure
$ sudo make
$ sudo make install

CaboChaのダウンロード

こことかからダウンロード。したのだが最新版(cabocha-0.69.tar.bz2)はどうやっても失敗。仕方なくcabocha-0.60.tar.gzをダウンロード。
適当なディレクトリにおいて解凍。移動。

$ tar xzvf cabocha-0.60.tar.gz
$ cd cabocha-0.60

バグがあるので修正

$ sudo vim /etc/ld.so.conf
include /usr/local/bin      (追記)

実行

sudo /sbin/ldconfig

もう一つ修正

$ vim src/utils.cpp
utils.cpp
void Unlink(const char *filename) {
#if defined(_WIN32) && !defined(__CYGWIN__)
  ::DeleteFileA(filename);
#else
  //::unlink(filename);  削除
  ::remove(filename);   //追記
#endif
}

保存して閉じてインストール

$ ./configure --with-mecab-config=`which mecab-config` --with-charset=utf8
$ sudo make clean
$ sudo make
$ sudo make install
$ sudo /sbin/ldconfig

cabochaを実行してみる

$ cabocha
$ (好きな文章)

python3系へバインディング

$ sudo apt-get install swig python3-dev
$ cd cabocha-0.60
$ swig -python -shadow -c++ swig/CaboCha.i
$ mv swig/CaboCha.py python/
$ mv swig/CaboCha_wrap.cxx python/

python3系に対応するため書き換え

$ cd python
$ vim setup.py
setup.py
def cmd2(str):
    #return string.split (cmd1(str)) 削除
    return cmd1(str).split()   #追記

保存して閉じて実行

$ sudo python3 setup.py build_ext
$ sudo python3 setup.py install
$ sudo /sbin/ldconfig

※pyenvを使っている場合はインストール場所がおかしくなる場合があるので注意

$ python3
$ import CaboCha

エラーが出なければOK。これでインストールは終了です。適当に遊んでみて下さい。

おわりに

お疲れ様でした。
軽く触ってみた感じなかなか精度が良くインストールに少しばかり手間取りましたがそれに見合うメリットはありそうです。
いろいろと遊んでみた結果については別途記事にできればと考えています。
それでは良き自然言語処理ライフを!

参考

http://taku910.github.io/mecab/
https://taku910.github.io/cabocha/
http://qiita.com/nezuq/items/f481f07fc0576b38e81d
http://azwoo.hatenablog.com/entry/2015/10/01/234434
https://www.trifields.jp/install-cabocha-in-ubuntu-1038