名古屋で数学するプログラマ(仮)

@antimon2 が趣味兼一部本職の数学で何かするときのブログ。

RMeCab と RCaBoCha をインストールしてみた

えと、今日は取り敢えずインストールの記録だけ。

前準備

R はずいぶん前にインストールしてあったし、MeCabCaboChaインストール済
なので今回は難しいことはほとんどありませんでした。
一応、インストール環境。

OS
Mac OS X Lion 10.7.4
R
ver.2.15.1 (R64)
MeCab
ver.0.994
CaboCha
ver.0.64

RMeCab のインストール

RMeCab のサイトから Mac Lion 用のバイナリパッケージをDLして、同ページ内「Macintosh 版バイナリ のインストール方法」に従ってインストール。
ただ一部うまくいかなかったので、うまくいった方法を以下に記述します。

  • DLしたアーカイブ(RMeCab_0.995.tgz)を適当なフォルダに解凍
  • R64(GUI)のメニューから [パッケージとデータ]→[パッケージインストーラ]を選び、「CRAN(バイナリパッケージ)」となっているドロップダウンを「このコンピュータ上のパッケージディレクトリ」を選択*1
  • 「インストール…」ボタンをクリックして、 .tgz ファイルを解凍して出来たフォルダを選択。
  • →インストール完了。特に問題なし。

動かしてみました。

> library(RMeCab)
> res <- RMeCabC("すもももももももものうち")
> res
[[1]]
    名詞 
"すもも" 

[[2]]
助詞 
"も" 

[[3]]
  名詞 
"もも" 

[[4]]
助詞 
"も" 

[[5]]
  名詞 
"もも" 

[[6]]
助詞 
"の" 

[[7]]
  名詞 
"うち" 

> res2 <- unlist(res)
> res2
    名詞     助詞     名詞     助詞     名詞     助詞     名詞 
"すもも"     "も"   "もも"     "も"   "もも"     "の"   "うち" 
> res2[names(res2) == "名詞"]
    名詞     名詞     名詞     名詞 
"すもも"   "もも"   "もも"   "うち" 
> 

うん、簡単ですね。

RCaBoCha*2 のインストール

こちらも同じ人が同じサイトで公開しているのですが、実はちょとバージョンが古く、そのままではうまく動きませんでした。例によって成功例を先に載せて後で Point としてどこで引っかかって何をしたか記します。

基本は RCaBoCha のサイトからバイナリパッケージをDLして、同ページ内「Macintosh 版バイナリ のインストール方法」に従ってインストール。詳細は以下。

  • DLしたアーカイブ(RCaBoCha_0.29.tgz)を適当なフォルダに解凍
  • R64(GUI)のメニューから [パッケージとデータ]→[パッケージインストーラ]を選び、「CRAN(バイナリパッケージ)」となっているドロップダウンを「このコンピュータ上のパッケージディレクトリ」を選択
  • 「インストール…」ボタンをクリックして、 .tgz ファイルを解凍して出来たフォルダを選択。
  • インストール完了後、ターミナルを開いて以下を実施:
    • /Library/Frameworks/R.framework/Versions/ に移動 (cd /Library/Frameworks/R.framework/Versions/)
    • ディレクトリ 2.13 が存在しないことを確認し、2.15(現在利用している R のバージョンディレクトリ)のシンボリックリンクとして 2.13 を作成 (sudo ln -s 2.15 2.13)
$ cd /Library/Frameworks/R.framework/Versions/
$ ls -la
total 8
drwxrwxr-x  5 root  admin  170  9  1 17:00 .
drwxrwxr-x  8 root  admin  272  9  1 16:59 ..
drwxrwxr-x  3 root  admin  102  4  5 21:39 2.14
drwxrwxr-x  7 root  admin  238  9  1 22:08 2.15
lrwxr-xr-x  1 root  admin    4  9  1 16:59 Current -> 2.15
$ sudo ln -s 2.15 2.13
$ ls -la
total 16
drwxrwxr-x  6 root  admin  204  9  1 22:08 .
drwxrwxr-x  8 root  admin  272  9  1 16:59 ..
lrwxr-xr-x  1 root  admin    4  9  1 22:08 2.13 -> 2.15
drwxrwxr-x  3 root  admin  102  4  5 21:39 2.14
drwxrwxr-x  7 root  admin  238  9  1 22:08 2.15
lrwxr-xr-x  1 root  admin    4  9  1 16:59 Current -> 2.15

Point:

  • 用意されている RCaBoCha が R ver.2.13 での利用を想定したもの*3で、そのまま実行しようとすると、/Library/Frameworks/R.framework/Versions/2.13/Resources/lib/libR.dylib を読みに行こうとしていた(R2.13は利用しておらずそのバージョンディレクトリがないので、「libR.dylib が読み込めない」旨のエラーメッセージが出た)
  • → 同名のファイルが …/2.15/Resources/lib/ 内に出来ていたので、こっちを見に行ってくれるように、バージョンディレクトリを偽装。

※もし R 2.13 も過去に利用していて、同じエラーメッセージが出たら、/Library/Frameworks/R.framework/Versions/2.13/Resources/lib/ ディレクトリ内で ln -s /Library/Frameworks/R.framework/Versions/2.15/Resources/lib/libR.dylib すれば良いんじゃないかと思います。

さてこれでインストールできましたが、RMeCab をロードしたままの状態で RCaBoCha をロードしようとすると、

> library(RCaBoCha)

 次のパッケージを付け加えます: '‘RCaBoCha’' 

The following object(s) are masked from ‘package:RMeCab’:

    entropy, globalEntropy, globalIDF, globalIDF2, globalIDF3,
    localBin, localLogTF, localTF, mynorm, removeInfo

> 

こんな感じに警告が出ます。つまり関数名がかぶってるんですね。さすが同じ作者。
ということで、実際に使用するときは、RMeCab と RCaBoCha は同時にロードしないようにするか、両方必要なときは RMeCab::entropy() とか RCaBoCha::mynorm() とかパッケージ名修飾するですね。

さてさて、色々実験。

> RCaBoCha("それは面白い本であった。")
   Term1  Term2    POS D1 D2
1   それ   それ   名詞  0  0
2     は     は   助詞  0  0
3 面白い 面白い 形容詞  0  0
4     本     本   名詞  0  0
5     で     だ 助動詞  0  0
6   あっ   ある 助動詞  0  0
7     た     た 助動詞  0  0
8     。     。   記号  0  0
FROMAT_TREE =
       それは---D
        面白い-D
    本であった。
EOS
> RCaBoChaFreq("それは面白い本であった。しかし、この本に比べると面白くはない。")
string 2 = "ない" setted: length = 0 
          Term           Pos Freq
1      、+ない   記号+形容詞    1
2           。          記号    2
3         ある        助動詞    1
4    この+ない 連体詞+形容詞    1
5  しかし+ない 接続詞+形容詞    1
6         それ          名詞    1
7           た        助動詞    1
8           だ        助動詞    1
9      と+ない   助詞+形容詞    1
10     に+ない   助詞+形容詞    1
11          は          助詞    1
12     は+ない   助詞+形容詞    1
13          本          名詞    1
14     本+ない   名詞+形容詞    1
15 比べる+ない   動詞+形容詞    1
16      面白い        形容詞    1
17 面白い+ない 形容詞+形容詞    1
> 

基本的な使い方は問題ないようです。が…。

問題発生

同サイトで用意されているサンプルデータで動作を試してみて、いくつか動作しないものが。例えば。

> dat <- read.csv("H18koe.csv")
> res <- RCaBoChaDF(dat[,"opinion"])
no terms larger than  minFreq = 1
 以下にエラー RCaBoChaDF(dat[, "opinion"]) : give less number to minFreq!
> 

つまり読み解くと、「出現頻度が(指定された)最小値(=1)より大きな言葉がありません」というエラー。おそらく RCaBoCha が出しているエラーだと思われます。
でも元データは作者が用意しているデータで、明らかに2回以上出てくる言葉がたくさんちりばめられています。
これは、ウチの CaboCha に何か問題がある? それとも RCaBoCha の不具合?
後者だとしたら、1年もほっとかないでなんとかしてほしいなー。

*1:RMeCab サイト上の説明では、「このコンピュータ上のバイナリパッケージ」を選択して、DLした .tgz ファイルを指定すればインストールできるとあるのですが、うまくいかなかったので解凍してそのディレクトリを指定する方法にしました。

*2:ところでなんで RCaboCha じゃなくて RCaBoCha なんでしょう。"B" の大文字小文字を何度打ち間違えたことか…。

*3:てか1年ちょっと前で更新が止まってる…。