京都大学の 日本語構文・格・照応解析ツールの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
自然言語処理の入門書としては以下の書籍がおすすめです。