RMeCabとRCaBoCha

先日(MeCabをyumでインストール@CentOS - yokkunsの日記CentOSMeCabとか入れていたのだが、仮想マシンの容量がいっぱいになってしまい、Rが入れられなかったので、新規でFedora11の仮想マシンを作成した。
今回は、ディスク容量を15Gにしたので大丈夫

MeCabのインストール

前回は、CentOSrpmが用意されていなかったので、何かごにょごにょしてインストールしたが、今回はあるので、普通にyumでインストール。

$ sudo yum install mecab mecab-devel mecab-ipadic

Rのインストール

こっちも、普通にインストール

$ sudo yum install R R-devel

RMeCabのインストール

http://groups.google.co.jp/group/rmecab/filesから、現在の最新版(2009/12/17時点では、0.86)を取ってくる。
Unix系は、tar.gzファイルとのことなので、RMeCab_0.86.tar.gzをダウンロード。

$ wget http://rmecab.googlegroups.com/web/RMeCab_0.86.tar.gz?gda=BO8kfUYAAAAanHFhBX3TdHg5JrdUX3ZqRxT2CtuStqchy9VvbjT0l_hU2tyS0rjUI2ALpXl280FV6u9SiETdg0Q2ffAyHU-dB7rwIJdcau4dlsrEQUE3Ew
$ mv RMeCab_0.86.tar.gz\?gda\=BO8kfUYAAAAanHFhBX3TdHg5JrdUX3ZqRxT2CtuStqchy9VvbjT0l_hU2tyS0rjUI2ALpXl280FV6u9SiETdg0Q2ffAyHU-dB7rwIJdcau4dlsrEQUE3Ew RMeCab_0.86.tar.gz

Rを起動してパッケージのインストール。

> getwd()
[1] "/home/yokkuns/package/R"
> install.packages("RMeCab_0.86.tar.gz", destdir=".", reps=NULL)
 install.packages("RMeCab_0.86.tar.gz", destdir = ".", reps = NULL) 中で警告がありました: 
  引数 'lib' が欠けています:/usr/lib64/R/library を使います  
 install.packages("RMeCab_0.86.tar.gz", destdir = ".", reps = NULL) 中で警告がありました: 
  'lib = "/usr/lib64/R/library"' は書き込み可能ではありません  
 パッケージをインストールするために個人的なライブラリ 
 '~/R/x86_64-redhat-linux-gnu-library/2.10' 
を作りたいのですか?   (y/n) n

ぬ、権限がないのか。
sudoで起動し直して、インストール。

$ sudo R

> install.packages("RMeCab_0.86.tar.gz", destdir=".", repos=NULL)
 install.packages("RMeCab_0.86.tar.gz", destdir = ".", repos = NULL) 中で警告がありました: 
  引数 'lib' が欠けています:/usr/lib64/R/library を使います  
* installing *binary* package ‘RMeCab’ ...
* DONE (RMeCab)

> library("RMeCab")
 エラー:  パッケージ 'RMeCab' は i686-pc-linux-gnu に対して造られました

ぐぬぬ。。
うっかりしてた。自分の環境は64bitなので、RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gzだった。

$ wget http://rmecab.googlegroups.com/web/RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gz?gda=Ah-0l2EAAAAanHFhBX3TdHg5JrdUX3ZqRxT2CtuStqchy9VvbjT0l6gaxXNgGFuLF7YN80o6PJIFbG_3zvmmoo7fniCi4gnUvCJW0XjDx5KbrqSnq1cTJmQ7_4Szj5QojzPflAPjH4V0Il9p57tNqZJdI6VXJ0v_
$ mv RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gz\?gda\=Ah-0l2EAAAAanHFhBX3TdHg5JrdUX3ZqRxT2CtuStqchy9VvbjT0l6gaxXNgGFuLF7YN80o6PJIFbG_3zvmmoo7fniCi4gnUvCJW0XjDx5KbrqSnq1cTJmQ7_4Szj5QojzPflAPjH4V0Il9p57tNqZJdI6VXJ0v_ RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gz
$ sudo R

> install.packages("RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gz", destdir=".", repos=NULL)
 install.packages("RMeCab_0.86_R_x86_64-unknown-linux-gnu.tar.gz",  中で警告がありました: 
  引数 'lib' が欠けています:/usr/lib64/R/library を使います  
* installing *binary* package ‘RMeCab’ ...
* DONE (RMeCab)
> library(RMeCab)

確認

> RMeCabC("@kakeibot コーヒーに60円使いました。")
[[1]]
名詞 
 "@" 

[[2]]
      名詞 
"kakeibot" 

[[3]]
      名詞 
"コーヒー" 

[[4]]
助詞 
"に" 

[[5]]
名詞 
"60" 

[[6]]
名詞 
"円" 

[[7]]
  動詞 
"使い" 

[[8]]
助動詞 
"まし" 

[[9]]
助動詞 
  "た" 

[[10]]
記号 
"。" 

> 

出来た!

CaboChaのインストール

TinySVMのインストール
$ wget http://chasen.org/~taku/software/TinySVM/src/TinySVM-0.09.tar.gz
$ tar zxvf TinySVM-0.09.tar.gz
$ cd TinySVM-0.09
$ ./configure
$ make
$ make check
$ sudo make install
$sudo ldconfig 
YamChaのインストール
$ wget http://chasen.org/~taku/software/yamcha/src/yamcha-0.33.tar.gz
$ tar zxvf yamcha-0.33.tar.gz 
$ cd yamcha-0.33
./configure 
make

param.cpp: In member function 'bool YamCha::Param::open(int, char**, const YamCha::Option*)':
param.cpp:102: error: 'strlen' was not declared in this scope
param.cpp:103: error: 'strncmp' was not declared in this scope
param.cpp: In member function 'bool YamCha::Param::open(const char*, const YamCha::Option*)':
param.cpp:182: error: 'strncpy' was not declared in this scope
param.cpp:185: warning: deprecated conversion from string constant to 'char*'
param.cpp: In member function 'void YamCha::Param::help(std::ostream&, const YamCha::Option*)':
param.cpp:205: error: 'strlen' was not declared in this scope
param.cpp:211: error: 'strlen' was not declared in this scope


検索したらあった。
gcc 4.3 で yamcha と cabocha でインストールエラーが発生する件 - drk7jp
こういうことらしい。

gcc 4.2 以前では、string.h や stdlib.h のようなヘッダファイルは明示的にインクルードしていなくても、そのヘッダファイルでプロトタイプ宣言されている関数を呼び出すことができました。

gcc 4.3 では明示的なインクルードが必要です。
  • src/common.h に以下を追加
#include <string.h> 
  • ibexec/mkdarts.cpp にも手を加える。
#include <cstdlib>
$ make
$ make check
$ sudo make install
$ sudo ldconfig
CRF++のインストール
$ wget http://sourceforge.net/projects/crfpp/files/crfpp/0.53/CRF%2B%2B-0.53.tar.gz/download
$ tar zxvf CRF++-0.53.tar.gz
$ cd CRF++-0.53
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
CaboCha
$ wget http://sourceforge.net/projects/cabocha/files/cabocha/0.60pre4/cabocha-0.60pre4.tar.bz2/download
$ tar jxvf cabocha-0.60pre4.tar.bz2
$ cd cabocha-0.60pre4
$ ./configure --with-charset=utf-8
$ make
$ sudo make install
$ sudo ldconfig

RCaBoChaのインストール。(失敗)

Rのバージョン確認

$ rpm -qa R
R-2.10.0-2.fc11.x86_64

2.10.0用は、RCaBoCha_0.22.tar.gzなので、それをダウンロード。
何故かwgetだとうまく行かなかったので、いったんローカルに落としてからサーバに転送した。

$ sudo R
> getwd()
[1] "/home/yokkuns/package/R"
> install.packages("RCaBoCha_0.22.tar.gz", lib.loc=".", repos=NULL)
 install.packages("RCaBoCha_0.22.tar.gz", lib.loc = ".", repos = NULL) 中で警告がありました: 
  引数 'lib' が欠けています:/usr/lib64/R/library を使います  
* installing *binary* package ‘RCaBoCha’ ...
* DONE (RCaBoCha)
> library(RCaBoCha)
 エラー:  パッケージ 'RCaBoCha' は i686-pc-linux-gnu に対して造られました

あれ、x86_64版なんて置いてなかったような・・・
もしかして、まだ対応していないのかな。。。