Python
自然言語処理
CentOS6.x
Cabocha

python3からcabochaを使ってみる

python3からcabochaを使ってみた備忘録

こんにちは。
新卒マイナス1年目エンジニアの和尚です。

前回のmecabに引き続き、今回はpython3からcabochaを使えるようにします。
yumで簡単に導入する手段が見つからなかったので、公式サイトに乗っ取ってcabochaを導入していこうと思います。

開発環境

  • centOS6
  • python 3.6.2

この記事の目標

  1. centOS6上でcabochaを使えるようにする。
  2. python3からcabochaを呼び出す。

想定読者

  • (pythonを使用して)自然言語処理初心者
  • エンジニアの卵か雛

事前準備

参考資料
cabocha公式サイト
CRF++公式サイト#download

linux(Unix)でcabochaを利用するには以下のものが必要なのでインストールします。

  • CRF++ (0.55以降)
  • MeCab (0.993以降)
  • mecab-ipadic, mecab-jumandic, unidic のいずれか

mecabとmecab-ipadicは前回の記事を参考にしてインストールしてください。

CRF++のダウンロード

  1. CRF++公式サイトから最新版をダウンロードしてファイル転送ツールを利用してcentOS上に置いてください。
  2. もしくはwgetでファイルをダウンロードしてください。
$ wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ" -O CRF++-0.58.tar.gz

CRF++のインストール

  1. ファイルを解凍します。
  2. ディレクトリを移動します。
  3. インストールします。
$ tar zxfv CRF++-0.58.tar.gz
$ cd CRF++-0.58
$ ./configure
$ make
$ sudo make install

導入完了です。

cabochaを導入する

参考資料
CentOS 7 で MeCab と CaboCha で遊ぶ

cabochaのダウンロード

  1. cabochaの最新版を公式サイトからダウンロードしてファイル転送ツールを利用してcentOS上に置いてください。
  2. もしくはwgetでダウンロードしてください。
$ wget "https://googledrive.com/host/0B4y35FiV1wh7cGRCUUJHVTNJRnM/cabocha-0.69.tar.bz2" -O cabocha-0.69.tar.bz2

※なぜか僕の場合、エラーを吐いたので1でダウンロードしました。自分のgoogle driveに移してからwgetでインストールするなど、各自できる方法でインストールしてください。

cabochaのインストール

  1. ファイルを解凍します。
  2. ディレクトリを移動する。
  3. インストールをします。
$ 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で実行できるように若干調整しました。

test.py
#!/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から利用できるようにしてみました。

お疲れさまでした。