1. YasuyukiKawai

    No comment

    YasuyukiKawai
Changes in tags
Changes in body
Source | HTML | Preview
@@ -1,167 +1,174 @@
MeCabとは、オープンソースの形態素解析エンジン。
MeCab Yet Another Part-of-Speech and Morphological Analyze[http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html]
#MeCabのJavaバインディングを構築した環境
centos-6.4(vagrant+virtual-box)
MeCab-0.996
-MeCab-
+MeCab-ipadic-2.7.0-20070801
openjdk1.7
openjdk1.7-devel
##centos-6.4(vagrant+virtual-box)の構築
[VirtualBox:Vagrant:仮想環境を構築する](http://qiita.com/YasuyukiKawai/items/230af96c42d594cd1ef0)
[Lunux:CentOS:日本語化に対応する](http://qiita.com/YasuyukiKawai/items/696baf5c28fd08bc5726)
##javaのインストール
```vagrant@vagrant-centos64
$ yum search openjdk
$ su
# yum install java-1.7.0-openjdk
# yum install java-1.7.0-openjdk-devel
```
環境変数の設定
```
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
```
設定せずにのちの作業を実行するとmecab-javaをmakeしたときに下記のエラーが出る
```
'Unmappable character for encoding ASCII but my files are in UTF-8'
```
-
##mecabとその辞書をインストールする
mecabのインストール
```vagrant@vagrant-centos64
$ sudo yum install wget
$ wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
-# URL'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE(
+# URL'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE
# FILENAME= mecab-0.996.tar.gz
$ tar zxfv mecab-0.996.tar.gz
$ cd mecab-0.996
-$ ./configure --with-charset=utf8//prefox
-
+$ ./configure --with-charset=utf8 //文字コード
$ make
$ make check
$ su
# make install
```
```
# mecabのライブラリ
-$ /usr/local/lib
+$ ls /usr/local/lib
libmecab.a libmecab.la libmecab.so libmecab.so.2 libmecab.so.2.0.0
```
mecab-ipadicのダウンロード
```
$ wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM' -O mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ mv mecab-ipadic-2.7.0-20070801 mecab-ipadic
$ cd mecab-ipadic
-$ ./configure --with-charset=utf8 --with-dicdir=~/local/mecab-dic/ipadic-utf8
+$ ./configure --with-charset=utf8
$ make
-$ make check
$ su
# make install
```
##mecabのjavaバインディング
[JNI(Java Native Interface)](http://www.ne.jp/asahi/hishidama/home/tech/java/jni.html):JavaからC言語/C++の関数を呼ぶ・あるいは逆にC/C++からJavaのメソッドを呼ぶための仕組み。
mecab-javaのダウンロード
```vagrant@vagrant-centos64
$ wget http://pkgs.fedoraproject.org/repo/pkgs/mecab-java/mecab-java-0.996.tar.gz/e50066ae2458a47b5fdc7e119ccd9fdd/mecab-java-0.996.tar.gz
$ tar vzxf mecab-java-0.996.tar.gz // 展開
$ mv mecab-java-0.996 mecab-java // 名前変更
$ cd mecab-java
```
Makefileの設定を修正する
```vagrant@vagrant-centos64
$ vi Makefile
```
```Makefile(デフォルト・修正前)
INCLUDE=/usr/lib/jvm/java-6-openjdk/include
+~
+~
+LIBS=`mecab-config --libs`
+INC=`mecab-config --cflags` -I$(INCLUDE) -I$(INCLUDE)/linux
```
```Makefile(修正後)
INCLUDE=/usr/lib/jvm/java-1.7.0-openjdk.x86_64/include
+~
+~
+LIBS=-arch x86_64 `mecab-config –libs`
+INC=-arch x86_64 `mecab-config –cflags`
```
```インクルードパスの情報
$ ls -l /usr/lib/jvm
total 4
lrwxrwxrwx 1 root root 26 May 19 02:47 java -> /etc/alternatives/java_sdk
lrwxrwxrwx 1 root root 32 May 19 02:47 java-1.7.0 -> /etc/alternatives/java_sdk_1.7.0
drwxr-xr-x 7 root root 4096 May 19 02:47 java-1.7.0-openjdk-1.7.0.79.x86_64
lrwxrwxrwx 1 root root 34 May 19 02:47 java-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.79.x86_64
lrwxrwxrwx 1 root root 34 May 19 02:47 java-openjdk -> /etc/alternatives/java_sdk_openjdk
lrwxrwxrwx 1 root root 21 May 19 02:46 jre -> /etc/alternatives/jre
lrwxrwxrwx 1 root root 27 May 19 02:46 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
lrwxrwxrwx 1 root root 38 May 19 02:46 jre-1.7.0-openjdk.x86_64 -> java-1.7.0-openjdk-1.7.0.79.x86_64/jre
lrwxrwxrwx 1 root root 29 May 19 02:46 jre-openjdk -> /etc/alternatives/jre_openjdk
```
mecab-javaのインストール(MeCab.jarとlibMeCab.soが生成される)
```vagrant@vagrant-centos64
$ su
# make
# ls
AUTHORS BSD COPYING GPL LGPL Makefile MeCab.jar MeCab_wrap.cxx MeCab_wrap.o README bindings.html libMeCab.so org test.class test.java
```
test.javaを実行すると、java.library.pathにMeCabが配置されていないためエラーが出る。
[環境変数LD_LIBRARY_PATH](http://linux-network.cocolog-nifty.com/blog/2008/05/ld_library_path_5cd8.html)
```vagrant@vagrant-centos64
$ java test
Cannot load the example native code.
Make sure your LD_LIBRARY_PATH contains '.'
java.lang.UnsatisfiedLinkError: no MeCab in java.library.path
```
```
$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ vi .bash_profile // 以下の情報を末尾に記載
```
```.bash_profile
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
```
+#etcとldconfig
+
```
$ javac -cp MeCab.jar test.java
$ java -cp MeCab.jar:. test
```
####java.library.pathを調べて、libMeCab.soファイルを移動させる
CheckPropクラスの作成
```CheckProp.java
public class CheckProp {
public static void main(String[] args) {
System.out.println(System.getProperty(args[0]));
}
}
```
コンパイルして実行する。引数にjava.library.pathを指定する。
```
$ javac CheckProp.java
$ java CheckProp java.library.path
/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
```