形態素解析システムJUMANをpython3で使う

公式のpythonバインディングは、python2 onlyのためpython3用に若干修正して利用する。環境はUbuntu 14.04LTS。

 

1. JUMANのインストール

$ sudo apt-get install juman

動作確認。

$ juman

libjumanのエラーが出る場合は追加でインストールする。

$ sudo apt-get install libjuman

 

2. pythonバインディングの修正

黒橋・河原研究室のKNPのサイトからpython2のバインディングをダウンロードして解凍。

$ curl -L -O http://nlp.ist.i.kyoto-u.ac.jp/DLcounter/lime.cgi?down=http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/knp/pyknp-0.1.zip&name=pyknp-0.1.zip
$ unzip pyknp-0.1.zip

2to3でpython3用にコンバート。

$ cd ku_nlp-pyknp-a32529dbce0d/
$ 2to3 -w ./

さらにpyknp/juman/juman.py, pyknp/juman/morpheme.pyを修正する必要がある。

差分をパッチ(git diff –no-prefix)にまとめたので、これダウンロードしてku_nlp-pyknp-a32529dbce0d/直下で適用。

$ patch -p0 < pyknp4python3.patch

インストール。

$ sudo python3 setup.py install

 

3. 動作確認

下記をtest.pyとして作成。

from pyknp import Juman 
 
juman = Juman() 
result = juman.analysis('今日はいい天気ですね。') 
 
for mrph in result.mrph_list(): 
    print("見出し:{}, 読み:{}, 原形:{}, 品詞:{}, 品詞細分類:{}, 活用型:{}, 活用形:{}, 意味情報:{}, 代表表記:{}".format(
    mrph.midasi, mrph.yomi, mrph.genkei, mrph.hinsi, mrph.bunrui, mrph.katuyou1, mrph.katuyou2, mrph.imis, mrph.repname))

動作確認。

$ python3 test.py

出力結果は以下。

見出し:今日, 読み:きょう, 原形:今日, 品詞:名詞, 品詞細分類:時相名詞, 活用型:*, 活用形:*, 意味情報:代表表記:今日/きょう カテゴリ:時間, 代表表記:今日/きょう
見出し:は, 読み:は, 原形:は, 品詞:助詞, 品詞細分類:副助詞, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:
見出し:いい, 読み:いい, 原形:いい, 品詞:形容詞, 品詞細分類:*, 活用型:イ形容詞イ段, 活用形:基本形, 意味情報:代表表記:良い/よい 反義:形容詞:悪い/わるい, 代表表記:良い/よい
見出し:天気, 読み:てんき, 原形:天気, 品詞:名詞, 品詞細分類:普通名詞, 活用型:*, 活用形:*, 意味情報:代表表記:天気/てんき カテゴリ:抽象物, 代表表記:天気/てんき
見出し:です, 読み:です, 原形:だ, 品詞:判定詞, 品詞細分類:*, 活用型:判定詞, 活用形:デス列基本形, 意味情報:NIL, 代表表記:
見出し:ね, 読み:ね, 原形:ね, 品詞:助詞, 品詞細分類:終助詞, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:
見出し:。, 読み:。, 原形:。, 品詞:特殊, 品詞細分類:句点, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:

 

■参考文献