macportsでmecabとmecab-javaをインストールしてjavaでmecabを使えるようにセットアップしてみました。これが意外とはまる。。。結局、macportsのmecab-javaでインストールしたライブラリはターミナルからは何とか使えたのですが、eclipseから使うことはできませんでした。なぜだろう?いろいろやったので記憶に残っていませんが、とりあえず確認ができたものだけ書きます。
macportsでmecab-utf8をインストールします。手順はあちこちにあります。辞書は自動的に入ります。
その後、mecabのサイトよりmecab-java0.98をダウンロードしてMakefileを書き換えて(patchが出ているようですがそれを当てても環境が異なると書き換えが必要です)書き換えたポイントはJAVA_HEADERのパス(/usr/bin/javaのリンク先)とJAVAC, JAVA, JAR変数のパス、mecab-configのパスです。これでmakeが成功した後、make testとやるとtestプログラムの実行結果が見れます。
JAVA_HEADER=/System/Library/Frameworks/JavaVM.framework/Versions/Current/ #JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/Current TARGET=MeCab JAVAC=javac -encoding utf-8 JAVA=java -Dfile.encoding=utf-8 JAR=jar CXX=g++ INCLUDE=$(JAVA_HEADER)/Headers PACKAGE=org/chasen/mecab LIBS=`/opt/local/bin/mecab-config --libs` INC=`/opt/local/bin/mecab-config --cflags` -I$(INCLUDE) all: $(CXX) -O3 -c -fPIC $(TARGET)_wrap.cxx $(INC) $(CXX) -dynamiclib $(TARGET)_wrap.o -o lib$(TARGET).dylib $(LIBS) $(JAVAC) $(PACKAGE)/*.java $(JAVAC) test.java $(JAR) cfv $(TARGET).jar $(PACKAGE)/*.class test: env DYLD_LIBRARY_PATH=. $(JAVA) test clean: rm -fr *.jar *.o *.dylib *.class $(PACKAGE)/*.class cleanall: rm -fr $(TARGET).java *.cxx
ちなみに、このあとにmacports版のmecab-javaをインストールし、上記のMakefileの以下の行を書き換えると一応macports版のmecab-javaでtestプログラムが動作するようです。
env DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib $(JAVA) test
さらに、このtestプログラムをeclipseに持っていき、環境でDYLD_FALLBACK_LIBRARY_PATHを設定するとうまくいくと思いきや。。。だめ。DYLD_LIBRARY_PATHで設定するとmecabライブラリには到達できるようですが以下のメッセージが表示されダメ。
Error occurred during initialization of VM Unable to load native library: libjava.jnilib
もうあれこれ探してやってみましたがダメ。もう諦めてmacports版のmecab-javaはアンインストールしてeclipseからは上記の最初にインストールしたオリジナル版を使うことにしました。そのうちmacportsのアップデートで修復されるでしょう。。。
あ、ちなみにtestプログラムを実行すると以下のような結果が得られます。参考まで。
0.98 太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 二郎 名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー に 助詞,格助詞,一般,*,*,*,に,ニ,ニ この 連体詞,*,*,*,*,*,この,コノ,コノ 本 名詞,一般,*,*,*,*,本,ホン,ホン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOS BOS/EOS,*,*,*,*,*,*,*,* 太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 二郎 名詞,固有名詞,人名,名,*,*,二郎,ジロウ,ジロー に 助詞,格助詞,一般,*,*,*,に,ニ,ニ この 連体詞,*,*,*,*,*,この,コノ,コノ 本 名詞,一般,*,*,*,*,本,ホン,ホン を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 BOS/EOS,*,*,*,*,*,*,*,* EOS