MeCabをCentOSにインストールする

仕事でMeCabをインストールする必要があったので
そこらへんをメモしときます。


MeCabとは、オープンソースの日本語形態素解析エンジンです。
http://mecab.sourceforge.net/

MeCab本体のインストール

wget http://downloads.sourceforge.net/project/mecab/mecab/0.98/mecab-0.98.tar.gz
tar xvzf mecab-0.98.tar.gz
cd mecab-0.98
./configure --with-charset=utf8 --enable-utf8-only
make
sudo make install
cd ..


/etc/ld.so.confを編集、下記の1行を加える

/usr/local/lib


設定を反映する

sudo /sbin/ldconfig

辞書(NAIST Japanese Dictionary)のインストール

http://sourceforge.jp/projects/naist-jdic/releases/ から
mecab-naist-jdic-0.6.1-20090630.tar.gz をダウンロード。
ちなみに、なぜか、最新版の mecab-naist-jdic-0.6.3-20100801.tar.gz だと
うまくいきませんでした。。

tar xvzf mecab-naist-jdic-0.6.1-20090630.tar.gz
cd mecab-naist-jdic-0.6.1-20090630
./configure  --with-charset=utf8  --with-mecab-config=/usr/local/bin/mecab-config
make
sudo make install
cd ..

/usr/local/etc/mecabrcを編集

dicdir = /usr/local/lib/mecab/dic/naist-jdic/

MeCab Javaライブラリのインストール

wget http://downloads.sourceforge.net/project/mecab/mecab-win32/0.98/mecab-java-0.98.tar.gz
tar xvzf mecab-java-0.98.tar.gz 
cd mecab-java-0.98


次に、MakefileのJavaのパスやmecab-configのパスを環境に合わせて変更。
両方ともパスが通ってれば変更の必要なし。


最後に、MeCab_wrap.cxxの703行目あたりを編集

SWIGEXPORT jlong JNICALL Java_org_chasen_mecab_MeCabJNI_Node_1next_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject ja     rg1_) {
  jlong jresult = 0 ;
  mecab_node_t *arg1 = (mecab_node_t *) 0 ;
  mecab_node_t *result = 0 ;
 
  (void)jenv;
  (void)jcls;
  (void)jarg1_;
  arg1 = *(mecab_node_t **)&jarg1;
  result = (mecab_node_t *) ((arg1)->next);
  char work[128] ; // 追加
  sprintf(work,"result:%0x\n",result); // 追加
  *(mecab_node_t **)&jresult = result;
  return jresult;
}


これをしないとなぜかテストプログラムが途中で落ちます。。
↓ここに書いてありました
http://d.hatena.ne.jp/knaka20blue/20090907/1252305752


後は、注意点として、Javaで動かす際に、
Taggerクラスは同じプロセスの中で何度もインスタンス生成をすると落ちます。
あと、TaggerクラスのparseToNodeメソッドにnullや空文字を入れると落ちます。

ここら辺結構はまりました。。