データサイエンティストAnchorBluesのブログ

とある民間企業で数学とコンピュータサイエンスをやっている研究員のブログです。

ubuntuへのjuman++、knp、pyknpのインストール方法

jumanのインストール

JUMAN - KUROHASHI-KAWAHARA LAB より最新のjumanのbzip2ファイルをダウンロードし、

$ tar jxvf juman-7.01.tar.bz2
$ cd juman-7.01
$ ./configure --prefix=/home/<username>/.usr
$ make
$ make install
$ ./configure     # juman.hをknpインストール時に使うため、prefixを指定しないケースでのインストールも実施する
$ make
$ sudo make install

そして、jumanを実行できるようにするため、~/.bashrcに以下を記述する。

export PATH=$HOME/.usr/bin:$PATH

また、jumanの*.soファイルを見つけられるように、

$ sudo vim /etc/ld.so.conf

でファイルを開いた後に、以下の1行を追加する。

include /home/<usrname>/.usr/lib

最後にパスを読み込み直す。

$ sudo ldconfig

knpのインストール

KNP - KUROHASHI-KAWAHARA LAB より最新のknpのbzip2ファイルをダウンロードし、

$ tar jxvf knp-4.19.tar.bz2
$ cd knp-4.19
$ ./configure --prefix=/home/<usrname>/.usr --with-juman-prefix=/home/<usrname>/.usr
$ make
$ make install

juman++のインストール

ku-nlp/jumanpp: Juman++ (a Morphological Analyzer Toolkit)の通り。 Releases · ku-nlp/jumanppより最新のtar.xzファイルをダウンロードし、

$ tar xf jumanpp-<version>.tar.xz # decompress the package
$ cd jumanpp-<version> # move into the directory
$ mkdir bld # make a subdirectory for build
$ cd bld
$ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/<usrname>/.usr
$ make install -j<parallelism>

pyknpのインストール

$ pip install pyknp

インストール確認

ターミナルから

$ echo "麻生太郎はコーヒーを買って飲んだ。" | jumanpp | knp -simple -anaphora

と叩いて、以下のように出力されたら成功。

# S-ID:1 KNP:4.19-CF1.1 DATE:2019/06/08 SCORE:-16.31767
* 3D <体言>
+ 1D <体言><EID:0>
麻生 あそう 麻生 名詞 6 人名 5 * 0 * 0 "人名:日本:姓:135:0.00166 疑似代表表記 代表表記:麻生/あそう" <NE:PERSON:B>
+ 4D <体言><NE:PERSON:麻生太郎><Wikipediaエントリ:麻生太郎><EID:1>
太郎 たろう 太郎 名詞 6 人名 5 * 0 * 0 "人名:日本:名:45:0.00106 疑似代表表記 代表表記:太郎/たろう" <Wikipediaエントリ:麻生太郎:0-1><NE:PERSON:E>
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
* 3D <体言>
+ 4D <体言><EID:2>
コーヒー こーひー コーヒー 名詞 6 普通名詞 1 * 0 * 0 "代表表記:珈琲/こーひー ドメイン:料理・食事 カテゴリ:人工物-食べ物"
を を を 助詞 9 格助詞 1 * 0 * 0 NIL
* 3D <用言:動>
+ 4D <用言:動><EID:3><項構造:ガ/麻生太郎/1;ヲ/コーヒー/2>
買って かって 買う 動詞 2 * 0 子音動詞ワ行 12 タ系連用テ形 14 "代表表記:買う/かう ドメイン:家庭・暮らし;ビジネス 反義:動詞:売る/うる"
* -1D <用言:動>
+ -1D <用言:動><EID:4><項構造:ガ/麻生太郎/1;ヲ/コーヒー/2>
飲んだ のんだ 飲む 動詞 2 * 0 子音動詞マ行 9 タ形 10 "代表表記:飲む/のむ ドメイン:料理・食事"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS

pythonから

# coding: utf-8
# It is not necessary when you use python3.
from __future__ import unicode_literals
from pyknp import Juman
# default is JUMAN++: Juman(jumanpp=True). if you use JUMAN, use Juman(jumanpp=False)
jumanpp = Juman()
result = jumanpp.analysis("下鴨神社の参道は暗かった。")
for mrph in result.mrph_list():  # 各形態素にアクセス
    print("見出し:%s, 読み:%s, 原形:%s, 品詞:%s, 品詞細分類:%s, 活用型:%s, 活用形:%s, 意味情報:%s, 代表表記:%s"
          % (mrph.midasi, mrph.yomi, mrph.genkei, mrph.hinsi, mrph.bunrui, mrph.katuyou1, mrph.katuyou2, mrph.imis, mrph.repnam\
e))

上記スクリプトを実行して、以下のように出力されたら成功。

見出し:下鴨, 読み:しもがも, 原形:下鴨, 品詞:名詞, 品詞細分類:地名, 活用型:*, 活用形:*, 意味情報:自動獲得:Wikipedia Wikipedia地名, 代表表記:
見出し:神社, 読み:じんじゃ, 原形:神社, 品詞:名詞, 品詞細分類:普通名詞, 活用型:*, 活用形:*, 意味情報:代表表記:神社/じんじゃ ドメイン:文化・芸術 カテゴリ:場所-施設 地名末尾, 代表表記:神社/じんじゃ
見出し:の, 読み:の, 原形:の, 品詞:助詞, 品詞細分類:接続助詞, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:
見出し:参道, 読み:さんどう, 原形:参道, 品詞:名詞, 品詞細分類:普通名詞, 活用型:*, 活用形:*, 意味情報:代表表記:参道/さんどう ドメイン:文化・芸術 カテゴリ:場所-施設, 代表表記:参道/さんどう
見出し:は, 読み:は, 原形:は, 品詞:助詞, 品詞細分類:副助詞, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:
見出し:暗かった, 読み:くらかった, 原形:暗い, 品詞:形容詞, 品詞細分類:*, 活用型:イ形容詞アウオ段, 活用形:タ形, 意味情報:代表表記:暗い/くらい, 代表表記:暗い/くらい
見出し:。, 読み:。, 原形:。, 品詞:特殊, 品詞細分類:句点, 活用型:*, 活用形:*, 意味情報:NIL, 代表表記:

参考URL