形態素解析エンジン [http://mecab.sourceforge.net/:title=MeCab] のインストール

Javaのためのインタフェースを備えているのは MeCab のみという情報に基づき,Ubuntu マシンへインストールを試みる.また,辞書には IPA辞書を用いる.

マシン環境は以下のとおり:

MeCabIPA辞書,Java binding module 等の入手

sourceforge.net から以下をダウンロード(python, ruby はすぐに使わないが,念のため).
mecab-0.97.tar.gz
mecab-ipadic-2.7.0-20070801.tar.gz
mecab-java-0.97.tar.gz
mecab-perl-0.97.tar.gz
mecab-python-0.97.tar.gz
mecab-ruby-0.97.tar.gz

MeCabのインストール

$ tar zxvf mecab-0.97.tar.gz
$ cd mecab-0.97
$ ./configure
$ make
$ sudo make install
$ sudo /sbin/ldconfig ・・・ IPA辞書構築時に MeCab のライブラリが必要となるため

IPA辞書のインストール

$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8 ・・・ utf-8 が正しいかも
$ make
$ sudo make install

動作チェック

$ echo "明日は天気" | mecab
明日 名詞,副詞可能,*,*,*,*,明日,アシタ,アシタ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
EOS

MeCab Java モジュールのインストール

tar zxvf mecab-java-0.97.tar.gz
cd mecab-java-0.97

Java 環境に依存するため,Makefile を以下のように書き換えた.

#INCLUDE=/usr/local/jdk/include
INCLUDE=/usr/lib/jvm/java-6-sun/include

あとは make するだけ(CLASSPATH が予め適切に設定されているならば,export は不要でしょう)

$ export CLASSPATH=.
$ make

動作チェック

$ javac -classpath MeCab.jar test.java
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
$ java -classpath MeCab.jar:. test
0.98pre3
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
二郎 名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS

BOS/EOS,*,*,*,*,*,*,*,*
EOS

う〜む,test.java が正しく動かない.
getNext() で次のノードを取ってくるはずが,すぐに null に到達してしまい,ノードを辿れない.
Java binding を使いたくて MeCab を選んだのにどうしようかしら?


http://sourceforge.jp/projects/mecab/lists/archive/users/2008-December/000342.htmlにて同一の問題が ML に投げられているが,回答が得られていない模様.ということは,私のあまりにも初歩的なミスや Java に関する常識が足りないのか?

MeCab Perl モジュールのインストール

$ tar zxvf mecab-perl-0.97.tar.gz
$ cd mecab-perl-0.97
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

動作チェック

$cat test.pl
use MeCab;
$m = new MeCab::Tagger ("-Ochasen");
print $m->parse ("明日は天気");
$
$ perl test.pl
明日 アシタ 明日 名詞-副詞可能
は ハ は 助詞-係助詞
天気 テンキ 天気 名詞-一般
EOS
$