オープンデータとプログラミング

構文解析ツールKNPをUbuntuにインストール(トラブル対応メモ)

京都大学の 日本語構文・格・照応解析ツールのKNPをUbuntuにインストールしたときのメモです。
途中でmakeがすんなり行かなかったりしたので、メモを残しておきます。

環境は以下のとおりです。

 

 

 

OS Ubuntu 16.04 LTS
形態素解析器 JUMAN Ver.7.01 or JUMAN++ Ver.1.01
その他パッケージ CRF++ 0.58、zlib

ではインストールの手順です。
今回はトラブルのメモが主ですので、手順は適当に省略しています。

JUMAN Ver.7.01 or JUMAN++ Ver.1.01のインストールについてはマニュアルやウェブを参照してください。

■CRF++のインストール

https://taku910.github.io/crfpp/#download

から

CRF++-0.58.tar.gz

をダウンロードして適当な場所に展開。
手順はいつもどおり、configure→make installで。
 

 %./configure
 %make
 %sudo make install

■zlibのインストール

%sudo apt-get install zlib1g-dev

■KNPのインストール
 これもいつもどおり、configure→make installで。

%./configure
%make
%sudo make install

 ところがリンクの最中に以下のエラーがでた。

/bin/bash ../libtool –tag=CC –mode=link g++ -g -O2 -o knp anaphora.o case_analysis.o case_data.o case_ipal.o case_match.o case_print.o corefer.o dpnd_analysis.o feature.o koou.o lib_bgh.o lib_dt.o lib_print.o lib_ps.o lib_scase.o lib_sm.o main.o para_analysis.o para_dpnd.o para_relation.o para_revision.o proper.o quote.o read_data.o read_rule.o regexp.o tools.o tree_conv.o db.o configfile.o thesaurus.o hash.o bnst_compare.o lib_event.o cky.o dic.o -lnsl /home/******/workspace/knp-4.16/crf/libcrf.la /home/******/workspace/knp-4.16/CRF++-0.58/.libs/libcrfpp.a -L/usr/local/lib -ljuman -lm /home/******/workspace/knp-4.16/distsim/libdistsim.la -lstdc++ -L/home/******/workspace/knp-4.16/cdb -lcdb libtool: link: g++ -g -O2 -o knp anaphora.o case_analysis.o case_data.o case_ipal.o case_match.o case_print.o corefer.o dpnd_analysis.o feature.o koou.o lib_bgh.o lib_dt.o lib_print.o lib_ps.o lib_scase.o lib_sm.o main.o para_analysis.o para_dpnd.o para_relation.o para_revision.o proper.o quote.o read_data.o read_rule.o regexp.o tools.o tree_conv.o db.o configfile.o thesaurus.o hash.o bnst_compare.o lib_event.o cky.o dic.o -lnsl /home/******/workspace/knp-4.16/crf/.libs/libcrf.a /home/******/workspace/knp-4.16/CRF++-0.58/.libs/libcrfpp.a -L/usr/local/lib /usr/local/lib/libjuman.so -lm /home/******/workspace/knp-4.16/distsim/.libs/libdistsim.a -lstdc++ -L/home/******/workspace/knp-4.16/cdb -lcdb


/home/******/workspace/knp-4.16/distsim/.libs/libdistsim.a(distsim.o): In function `Dbm::decompress_string[abi:cxx11](unsigned char*, int)':
/home/******/workspace/knp-4.16/distsim/dbm.h:220: undefined reference to `inflateInit_’
/home/******/workspace/knp-4.16/distsim/dbm.h:230: undefined reference to `inflate’
/home/******/workspace/knp-4.16/distsim/dbm.h:235: undefined reference to `inflateEnd’
collect2: error: ld returned 1 exit status
Makefile:433: ターゲット ‘knp’ のレシピで失敗しました

undefined referenceになっているのは、どうやらzlibの関数のようです。
リンク時にライブラリが指定されていないようなので、Makefileに追加してやる。

MakefileのKNP_LIBSに「-lzlib」を追加

KNP_LIBS = -lnsl /home/******/workspace/knp-4.16/crf/libcrf.la /home/******/workspace/knp-4.16/CRF++-0.58/.libs/libcrfpp.a -L/usr/local/lib -ljuman -lm /home/******/workspace/knp-4.16/distsim/libdistsim.la -lstdc++ -L/home/******/workspace/knp-4.16/cdb -lcdb -lz -lzlib

再度、makeしたら通った。
次のように実行できたら成功だ。

% echo “今日、ラーメンを食べた。”|jumanpp|knp
# S-ID:1 KNP:4.16-CF1.1 DATE:2017/01/09 SCORE:-12.36678

今日、──┐ 
ラーメンを──┤ 
食べた。
EOS

自然言語処理の入門書としては以下の書籍がおすすめです。

Comments are closed.