python3からcabochaを使ってみた備忘録
こんにちは。
新卒マイナス1年目エンジニアの和尚です。
前回のmecabに引き続き、今回はpython3からcabochaを使えるようにします。
yumで簡単に導入する手段が見つからなかったので、公式サイトに乗っ取ってcabochaを導入していこうと思います。
開発環境
- centOS6
- python 3.6.2
この記事の目標
- centOS6上でcabochaを使えるようにする。
- python3からcabochaを呼び出す。
想定読者
- (pythonを使用して)自然言語処理初心者
- エンジニアの卵か雛
事前準備
linux(Unix)でcabochaを利用するには以下のものが必要なのでインストールします。
- CRF++ (0.55以降)
- MeCab (0.993以降)
- mecab-ipadic, mecab-jumandic, unidic のいずれか
mecabとmecab-ipadicは前回の記事を参考にしてインストールしてください。
CRF++のダウンロード
- CRF++公式サイトから最新版をダウンロードしてファイル転送ツールを利用してcentOS上に置いてください。
- もしくはwgetでファイルをダウンロードしてください。
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ" -O CRF++-0.58.tar.gz
CRF++のインストール
- ファイルを解凍します。
- ディレクトリを移動します。
- インストールします。
$ tar zxfv CRF++-0.58.tar.gz
$ cd CRF++-0.58
$ ./configure
$ make
$ sudo make install
導入完了です。
cabochaを導入する
cabochaのダウンロード
- cabochaの最新版を公式サイトからダウンロードしてファイル転送ツールを利用してcentOS上に置いてください。
- もしくはwgetでダウンロードしてください。
$ wget "https://googledrive.com/host/0B4y35FiV1wh7cGRCUUJHVTNJRnM/cabocha-0.69.tar.bz2" -O cabocha-0.69.tar.bz2
※なぜか僕の場合、エラーを吐いたので1でダウンロードしました。自分のgoogle driveに移してからwgetでインストールするなど、各自できる方法でインストールしてください。
cabochaのインストール
- ファイルを解凍します。
- ディレクトリを移動する。
- インストールをします。
$ bzip2 -dc cabocha-0.69.tar.bz2 | tar xvf -
$ cd cabocha-0.69
$ ./configure --with-mecab-config=`which mecab-config` --with-charset=UTF8
$ make
$ make check
$ sudo make install
動作確認
$ cabocha --version
cabocha of 0.69
cabochaをpython3から使ってみる
setup.pyからcabochaを使えるようにする。
$ cd python
$ python setup.py build_ext
$ python setup.py install
$ sudo ldconfig
※cabocha-0.69/pythonで作業してください。
python3からcabochaを呼び出せるか確認
$ python
>>> import CaboCha
ここでエラーが出なければ成功です。
エラーが出た場合
僕はここでImportError: libcabocha.so.5
が出ました。
解決方法として、以下を実行しました。
$ sudo vi /etc/ld.so.conf
/usr/local/lib
を行末に追加。
$ sudo ldconfig
pythonファイルからcabochaを使用してみる。
ダウンロードしたcabochaに入っていたpythonのサンプルコードを実行してみます。
今回もコードがpython2用だったので、python3で実行できるように若干調整しました。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import CaboCha
# c = CaboCha.Parser("");
c = CaboCha.Parser()
sentence = "太郎はこの本を二郎を見た女性に渡した。"
print(c.parseToString(sentence))
tree = c.parse(sentence)
print(tree.toString(CaboCha.FORMAT_TREE))
print(tree.toString(CaboCha.FORMAT_LATTICE))
太郎は-----------D
この-D |
本を---D |
二郎を-D |
見た-D |
女性に-D
渡した。
EOS
太郎は-----------D
この-D |
本を---D |
二郎を-D |
見た-D |
女性に-D
渡した。
EOS
* 0 6D 0/1 -2.457381
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/0 1.509507
この 連体詞,*,*,*,*,*,この,コノ,コノ
* 2 4D 0/1 0.091699
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 3 4D 1/2 2.359707
二 名詞,数,*,*,*,*,二,ニ,ニ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 4 5D 0/1 1.416783
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
* 5 6D 0/1 -2.457381
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 6 -1D 0/1 0.000000
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
上記の内容が表示されれば成功です!
最後に
前回に引き続き、自然言語処理によく利用されているcabochaをpython3から利用できるようにしてみました。
お疲れさまでした。