Edited at

python3からcabochaを使ってみる

More than 1 year has passed since last update.


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

お疲れさまでした。