自力でMeCab入れて、MeCabのRuby用バインディング入れるところまではOK。でもいざ使ってみると毎回コア吐くし、意味がわからんと思ってたら…
なんか最初からMeCabとRuby用バインディング入ってるんですけど!
しかも最初から入ってるやつがCore吐いてるっぽい
(追記) Core吐いてる理由は、使っている辞書(UNIDIC)にあった可能性が。下に詳しく追記。
使えないもの入れてるんじゃねーよ…
というわけなので、デフォで入ってるMeCabのバージョンは最新の0.98だけど、自分で入れ直した方がよさそうです。
まずはMeCab本体
wget http://sourceforge.net/projects/mecab/files/mecab/0.98/mecab-0.98.tar.gz/download cd mecab-0.98 ./configure --prefix=$HOME/local --enable-utf8-only make make install
次は辞書
MeCab公式ではIPA辞書が推奨になってるけど、もうこの辞書はメンテされてないぽい。
UniDicがかなり良い感じなので個人的にはこっちがお勧め。表記の揺れにかなり強いし、関西弁でも思った通りに解析してくれます。
次はRuby用バインディング
wget http://sourceforge.net/projects/mecab/files/mecab-ruby/0.98/mecab-ruby-0.98.tar.gz/download cd mecab-ruby-0.98
コンパイルする前に extconf.rb を編集
require 'mkmf' mecab_config = with_config('mecab-config', 'mecab-config') use_mecab_config = enable_config('mecab-config') `mecab-config --libs-only-l`.chomp.split.each { | lib | have_library(lib) } $CFLAGS += ' ' + `#{mecab_config} --cflags`.chomp $LDFLAGS = '-L/virtual/himika/local/lib' # ←この行を追加 have_header('mecab.h') && create_makefile('MeCab')$CFLAGS +=~の下に、$LDFLAGS~の一行を追加
コンパイル
ruby extconf.rb make make install最後に.bash_profileとか.bashrcで LD_LIBRARY_PATHに$home/local/libを通しておかないと、元から入ってるライブラリを参照して変なことになるので注意!
(追記)
Core吐いてる理由はUNIDIC+CGIにあった模様。Coreserverで元から準備してあるMeCabを使っても、自分でコンパイルした物を使っても、「CGI」で辞書に「UNIDIC」を使うと間違いなく落ちます。sshから使っても落ちないのに… 原因は不明(涙)
0 件のコメント:
コメントを投稿