こんにちは!今回は形態素解析や構文解析でよく使われるMecabとCaboChaの環境構築にかなり手こずったので、ブログに書き留めておこうと思います。

Manjaroで環境構築行っているので、Arch系使ってる人ならそのまま読んでも大丈夫だと思います。(たぶん)
その他のディストリビューションを使用している方は適所読み替えて進めてみてください。

※Python3は既にインストールされている前提で話を進めていきます。
※その他ライブラリはpipで仮想環境上にインストールしていくことをおすすめします。

【目次】

スポンサーリンク




MeCabのインストール

ここでは形態素解析で使われるMeCabをインストールしていきます。
開発者が「めかぶ」好きなのでMeCabって名前らしいです(笑)

まずはMeCabのビルドに必要な「gcc」と「make」を公式のリポジトリからインストールしておきます。

$ sudo pacman -S gcc
$ sudo pacman -S make

次にMeCab本体と、辞書を2種類AUR(ユーザリポジトリ)からインストールします。
「NEologd」は新語等に対応した辞書なので、Twitterなんかの文章を解析するならこっちを使うのが良いかなと思います。

$ pamac build mecab
$ pamac build mecab-ipadic
$ pamac build mecab-ipadic-neologd

これでターミナル上であればとりあえずMeCabを動かせる状態になります。
試しに「ドラゴンクエスト」を通常の辞書でわかち書きさせてみます。

$ echo 'ドラゴンクエスト' | mecab
ドラゴン	名詞,一般,*,*,*,*,ドラゴン,ドラゴン,ドラゴン
クエスト	名詞,一般,*,*,*,*,クエスト,クエスト,クエスト
EOS

NEologdを使用するにはまず辞書の場所を確認する必要があります。
僕の場合は”/usr/lib/mecab/dic/mecab-ipadic-neologd”が初期位置でした。

$ echo 'ドラゴンクエスト' | mecab --dicdir /usr/lib/mecab/dic/mecab-ipadic-neologd
ドラゴンクエスト	名詞,固有名詞,一般,*,*,*,Dragon Ques,ドラゴンクエストt...
EOS

新語対応の辞書では上のように「ドラゴンクエスト」を固有名詞として判別することができました!特別な理由がない限りNEologd辞書を使うのが良いかもしれないですね。

PythonからMeCabを利用可能にする

続いてPythonからMeCabをインポートできるようにしましょう。(書かれている言語が違うため、インターフェイスが必要になります。)

$ pip install mecab-python3

おそらく上記パッケージのみで大丈夫ですが、もしうまく行かないようであればAURから「python-mecab」をビルドすると行けるかもしれません。

インストールが終わったらimportしてみて、エラーが出ないか確認します。

$ python3
>>>import MeCab
>>>

エラーが出なければ成功です!

CaboChaのインストール

ここでかなり手こずりました…
リポジトリに良さげなパッケージがないので、コマンド叩いてビルドしていきます。

まずは”CRF++”が必要なので、まずは下記URLから必要なファイルを落としてきます。(僕は”cabocha-0.69.tar.bz2″をダウンロードしました)
https://drive.google.com/drive/folders/0B4y35FiV1wh7cGRCUUJHVTNJRnM

$ tar jxvf cabocha-0.69.tar.bz2
$ cd cabocha-0.69
$ ./configure --with-charset=utf8 --enable-utf8-only
$ make
$ sudo make install

次にswigでCaboChaをpythonからインポートできる形にします。
※swig がインストールされていない場合は「sudo pacman -S swig」で公式リポジトリからインストールできます。

$ cd cabocha-0.69
$ swig -python -shadow -c++ swig/CaboCha.i
$ mv swig/CaboCha.py python/
$ mv swig/CaboCha_wrap.cxx python/

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

最後にPython側でインターフェイスを用意する。

$ pip install cabocha-python

実際にimportしてみて動作確認

$ python3
>>>import CaboCha
>>>

エラーが出なければ成功です!
エラーが出た場合は、次項の対応策を試してみてください。

CaboChaでエラーが出る

「morph.cpp(108) [charset() == decode_charset(dinfo->charset)]
Incompatible charset: MeCab charset is UTF-8, Your charset is EUC-JP-MS」

このようなエラーは、コチラを参考に対応しました。

/usr/local/etc/cabocharcを編集
# charset-file = /usr/local/lib/cabocha/model/charset-file.txt
のコメントを外し、
/usr/local/lib/cabocha/model/charset-file.txt フィルを作成し、「UTF-8」とだけ記述する。

まとめ

pipで一発でインストールできるのがどれほど有り難いことか実感させられますね…
MeCabのNEologd辞書に関しては、システム辞書を編集したい方はAURよりもgitからソース持ってきてビルドしたほうが良いかもしれません。

おわりに

最近Arch Linux系の「Manjaro」に乗り換えたんですが、ユーザリポジトリが結構充実してて使いやすいですね。

システム辞書をいじる機会もあったので、今度はそのやり方なんかも書き留めておこうかなぁと思います。

最後までありがとうございました!