こんにちは!今回は形態素解析や構文解析でよく使われる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」に乗り換えたんですが、ユーザリポジトリが結構充実してて使いやすいですね。
システム辞書をいじる機会もあったので、今度はそのやり方なんかも書き留めておこうかなぁと思います。
最後までありがとうございました!