ダウンロードしたファイルを解凍して以下のコマンド
$ cd ./cabocha-0.69/ $ make clean $ export CPPFLAGS=-I$(echo ~/opt/include) LDFLAGS=-L$(echo ~/opt/lib) $ ./configure --prefix=$(echo ~/opt/) --with-charset=utf8 --enable-utf8-only $ make $ make check $ make install $ cd ../
perl モジュールをインストールする
$ cd ./cabocha-0.69/perl
$ sed -i -e 's#`cabocha-config#`~/opt/bin/cabocha-config#' Makefile.PL
$ perl Makefile.PL PREFIX=$(echo ~/opt)
Generating a Unix-style Makefile
Writing Makefile for CaboCha
Writing MYMETA.yml and MYMETA.json
$ make
Skip blib/lib/CaboCha.pm (unchanged)
Running Mkbootstrap for CaboCha ()
chmod 644 "CaboCha.bs"
g++ -c -I/home/*************/opt/include -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"0.69\" -DXS_VERSION=\"0.69\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.20/CORE" CaboCha_wrap.cxx
rm -f blib/arch/auto/CaboCha/CaboCha.so
LD_RUN_PATH="/home/*************/opt/lib:/usr/lib:/usr/lib/x86_64-linux-gnu" g++ -shared -L/usr/local/lib -fstack-protector CaboCha_wrap.o -o blib/arch/auto/CaboCha/CaboCha.so \
-L/home/*************/opt/lib -lcabocha -lcrfpp -lmecab -L/usr/lib -lmecab -lstdc++ \
chmod 755 blib/arch/auto/CaboCha/CaboCha.so
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- CaboCha.bs blib/arch/auto/CaboCha/CaboCha.bs 644
$ make test
Running Mkbootstrap for CaboCha ()
chmod 644 "CaboCha.bs"
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-Iblib/lib" "-Iblib/arch" test.pl
太郎は-----------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
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー,,
は 助詞,係助詞,*,*,*,*,は,ハ,ワ,,
この 連体詞,*,*,*,*,*,この,コノ,コノ,,
本 名詞,一般,*,*,*,*,本,ホン,ホン,,
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ,,
二 名詞,数,*,*,*,*,二,ニ,ニ,,
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー,,
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ,,
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ,み/見,
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ,,
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ,,
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ,,
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ,わたし/渡し,
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ,,
。 記号,句点,*,*,*,*,。,。,。,,
$ make --dry-run install
true
true
true
true
true
true
true
true
"/usr/bin/perl" -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''0'\'', uninstall_shadows => '\''0'\'', dir_mode => '\''755'\'' ]);' -- \
read "/usr/local/lib/x86_64-linux-gnu/perl/5.20.2/auto/CaboCha/.packlist" \
write "/home/*************/opt/lib/x86_64-linux-gnu/perl/5.20.2/auto/CaboCha/.packlist" \
"blib/lib" "/home/*************/opt/share/perl/5.20.2" \
"blib/arch" "/home/*************/opt/lib/x86_64-linux-gnu/perl/5.20.2" \
"blib/bin" "/home/*************/opt/bin" \
"blib/script" "/home/*************/opt/bin" \
"blib/man1" "/home/*************/opt/man/man1" \
"blib/man3" "/home/*************/opt/man/man3"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- \
"/usr/lib/x86_64-linux-gnu/perl/5.20/auto/CaboCha"
true
echo Appending installation info to "/home/*************/opt/lib/x86_64-linux-gnu/perl/5.20/perllocal.pod"
"/usr/bin/perl" -MExtUtils::Command -e 'mkpath' -- "/home/*************/opt/lib/x86_64-linux-gnu/perl/5.20"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'perllocal_install' -- \
"Module" "CaboCha" \
"installed into" /home/*************/opt/share/perl/5.20.2 \
LINKTYPE "dynamic" \
VERSION "0.69" \
EXE_FILES "" \
>> "/home/*************/opt/lib/x86_64-linux-gnu/perl/5.20/perllocal.pod"
true
true
$ make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /home/*************/opt/lib/x86_64-linux-gnu/perl/5.20.2/auto/CaboCha/CaboCha.bs
Installing /home/*************/opt/lib/x86_64-linux-gnu/perl/5.20.2/auto/CaboCha/CaboCha.so
Installing /home/*************/opt/lib/x86_64-linux-gnu/perl/5.20.2/CaboCha.pm
Appending installation info to /home/*************/opt/lib/x86_64-linux-gnu/perl/5.20/perllocal.pod
ユーザ辞書の追加。辞書の元データ (CSV ファイル) は /usr/share/mecab/dic/ にある。辞書ファイルは /var/lib/mecab/dic/ にある。
$ nkf --oc=utf8 -Lu /usr/share/mecab/dic/ipadic/Symbol.csv | head δ,4,4,949,記号,アルファベット,*,*,*,*,δ,デルタ,デルタ u,4,4,5536,記号,アルファベット,*,*,*,*,u,ユー,ユー 」,7,7,1161,記号,括弧閉,*,*,*,*,」,」,」 —,5,5,3970,記号,一般,*,*,*,*,—,—,— ←,5,5,1819,記号,一般,*,*,*,*,←,←,← ゜,5,5,4977,記号,一般,*,*,*,*,゜,゜,゜ X,4,4,1647,記号,アルファベット,*,*,*,*,X,エックス,エックス N,4,4,6484,記号,アルファベット,*,*,*,*,N,エヌ,エヌ j,4,4,5554,記号,アルファベット,*,*,*,*,j,ジェイ,ジェイ ゞ,5,5,5002,記号,一般,*,*,*,*,ゞ,ゞ,ゞ
CaboCha は MeCab を使っているけれども、MeCab の辞書に半角の括弧が登録されていない。
$ echo 'エントリのフォーマット (活用する語)' | mecab --unk-feature "未知語" エントリ 名詞,一般,*,*,*,*,エントリ,エントリ,エントリ の 助詞,連体化,*,*,*,*,の,ノ,ノ フォーマット 名詞,一般,*,*,*,*,フォーマット,フォーマット,フォーマット ( 未知語 活用 名詞,サ変接続,*,*,*,*,活用,カツヨウ,カツヨー する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル 語 名詞,一般,*,*,*,*,語,カタリ,カタリ ) 未知語 EOS
全角の括弧の情報を元にこれをユーザ辞書に追加する。
$ nkf -w /usr/share/mecab/dic/ipadic/*.csv | grep '('
$ nkf -w /usr/share/mecab/dic/ipadic/*.csv | grep ')'
$ nkf -w /usr/share/mecab/dic/ipadic/*.csv | grep -e '(' -e ')' | grep '記号'
(,6,6,2008,記号,括弧開,*,*,*,*,(,(,(
),7,7,2055,記号,括弧閉,*,*,*,*,),),)
$ cat symbol_.csv
(,6,6,2008,記号,括弧開,*,*,*,*,(,(,(
),7,7,2055,記号,括弧閉,*,*,*,*,),),)
$ nkf -w -Lu symbol_.csv > symbol-utf8.csv
$ file symbol_.csv symbol-utf8.csv
symbol_.csv: UTF-8 Unicode text
symbol-utf8.csv: UTF-8 Unicode text
$ /usr/lib/mecab/mecab-dict-index --dicdir /usr/share/mecab/dic/ipadic/ --userdic symbol-utf8.dic --dictionary-charset utf8 --charset utf8 symbol-utf8.csv
reading symbol-utf8.csv ... 86
emitting double-array: 100% |###########################################|
done!
ユーザ辞書のパスを MeCab の rc ファイルに追記
$ echo userdic = ~/*****************************/symbol-utf8.dic >> ~/.mecabrc
これで未知語がなくなる。
$ echo 'エントリのフォーマット (活用する語)' | mecab --unk-feature "未知語" エントリ 名詞,一般,*,*,*,*,エントリ,エントリ,エントリ の 助詞,連体化,*,*,*,*,の,ノ,ノ フォーマット 名詞,一般,*,*,*,*,フォーマット,フォーマット,フォーマット ( 記号,括弧開,*,*,*,*,(,(,( 活用 名詞,サ変接続,*,*,*,*,活用,カツヨウ,カツヨー する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル 語 名詞,一般,*,*,*,*,語,カタリ,カタリ ) 記号,括弧閉,*,*,*,*,),),) EOS