pitankのブログ

授業で勉強したことや独学で勉強したことを自分の頭の整理ということで書いていこうと思います。間違っていたらよければ教えていただけたら幸いです。

MacにMecabを入れてみた(mecajavacまで)[2016]

自分が所持しているmac(macOS Sierra)にmecab(形態素解析システム)をいれてみました。自分は初期化を年に2回ほどするというよくわからない人なので初期化した時のメモとして残しておこうと思います。なのでわかりにくくなってしまった場合すいません。

 

1、Homebrew インストール

Homebrewとは、macOS用パッケージマネージャーでインストールしたパッケージを管理してくれます。最初は何が便利なのかわかりませんでしたが、今はとても重宝しています。

Homebrew — macOS 用パッケージマネージャー

↑からHomebrewをインストールします。ターミナルにインストールとあるコマンドをコピペすればいいので簡単です。

 

2、HomebrewでMecabのインストール

$ brew install mecab
$ brew install mecab-ipadic

以上をターミナルに打ち込みます。そうするとmecabがインストールされます。ipadicというのはどうやらmecab専用の辞書みたいです。

$ mecab

と入力します。すると改行され文字が入力できるようになります。以下に実行例を示します。

こんにちは、ぼくドラえもん。
こんにちは	感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
、	記号,読点,*,*,*,*,、,、,、
ぼく	名詞,代名詞,一般,*,*,*,ぼく,ボク,ボク
ドラえもん	名詞,固有名詞,一般,*,*,*,ドラえもん,ドラエモン,ドラエモン
。	記号,句点,*,*,*,*,。,。,。
EOS

以上のようにでたはずです。これが出て入ればmecabは使えるようになりました。以下では、とても苦しんだjavamecabを使うための方法について書いていきたいと思います。

Javaバインディングする方法
さっきの続きなので

3、mecab-javaをダウンロード

色々なサイトで探しますがなかなか見つかりませんでした。なので最終的に行き着いたサイトを示します。サイト主さん本当にお世話になりました。
http://pkgs.fedoraproject.org/repo/pkgs/mecab-java/
のサイトにある

mecab-java-0.996.tar..

をダウンロードします。0.996をなぜダウンロードするかというとmecabのバージョンが0.996だからです。やはり、対応させた方がいいだろうということでこれをダウンロードしました。ダウンロードができたら解凍してください。ダブルクリックまたは、コマンドで解凍できるはずです。

4、mecab-javaを移動させる

先ほどダウンロードして解凍したディレクトリ(フォルダ)の名前がmecab-java-0.996になっていると思います。これをmecab-javaに変更してください。そして、mecab-javaを移動させます。
以下では、mecab-javaがデスクトップにあるとします。

$ cd ~/Desktop/

cdコマンドでデスクトップに飛びます。

$ mv mecab-java  /usr/local/bin/

以上をターミナルってください。

5、Makefileの編集

ここが一番の山場です。頑張ってください。ここまできたので今食べようとしていたお菓子をひとまず置いて集中しましょう。さっき移動したmecab-java
にターミナルで入ってください。そうするとMakefileがあるはずです。ここでターミナル操作を行います。

$ vi Makefile

と入力します。するとMakefileの中身が丸見えなはずです。これを書き換えます。めんどくせぇって人はキーボードの「dd」をおして気合いで中身を全部削除しちゃってください。このときは、一応Makefileのバックアップはとっておくようにしてください。
挿入モードにするためにキーボードの「I」または「A」を押してください。
そして、以下をコピペしてください。
書き換える人は書き換えてください(書き換える方も一応バックアップはしておくことをお勧めします)。
Makefile

JAVA_BASE=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
JAVA_HOME=$(JAVA_BASE)/Home

TARGET=MeCab
JAVAC=javac -J-Dfile.encoding=UTF-8
JAVA=java -Dfile.encoding=UTF-8
JAR=jar -J-Dfile.encoding=UTF-8
CXX=g++                            
INCLUDE=/Applications/Xcode.app/Contents/Developer/Platforms/MacOOO.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/

PACKAGE=org/chasen/mecab

LIBS=-arch x86_64 `mecab-config --libs`
INC=-arch x86_64 `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 *.so *.class $(PACKAGE)/*.class

cleanall:
        rm -fr $(TARGET).java *.cxx

人によってINCLUDEの行のMacOOOが違うので気をつけてください(OOOには適当なものを)
Finder->アプリケーション->Xcodeを右クリック->パッケージの内容と行きあとはINCLUDEの行をみてたどって行ってください。
そして、Finderの歯車マークに『情報を見る』とあると思うのでそこの場所をコピペするなりしてください。

6、makeの実行

$ make

これでmecab-javaMecab.jarファイルができたらmakeは成功です。

7、パスを通す

これで最後です。コンパイルと実行時に使うコマンドが以下です。

$ mecajavac  ooo.java
$ mecajava ooo

のコマンドが通るようにします。

$ vi ~/.bash_profile

を開き以下を入力します。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

これで保存して閉じます。次に

$ vi ~/.bashrc

とターミナルに打ち込みます。

alias mecajavac='env DYLD_LIBRARY_PATH=".:/usr/local/bin/mecab-java" CLASSPATH=".:$CLASSPATH:/usr/local/bin/mecab-java/MeCab.jar" javac'
alias mecajava='env DYLD_LIBRARY_PATH=".:/usr/local/bin/mecab-java" CLASSPATH=".:$CLASSPATH:/usr/local/bin/mecab-java/MeCab.jar" java'

alias javac='javac -J-Dfile.encoding=UTF-8'
alias java='java -Dfile.encoding=UTF-8'

を入力して保存して閉じてこれで終わりです。
と言いたいところですが反映しないといけません。

source ~/.bash_profile

として反映させます。bashrcも同様に行えばできるはずです。

コマンドを間違えたとこなどあるかもしれません・・・・・
ここまで観ていただいた方はありがとうございました。