rvmで入れた各rubyにmecab rubyバインディングをインストールする

mecab rubyバインディングはgemでインストールできないので、rvmで入れた各バージョンのrubyからmecabを使うのは少し面倒。
今までportで入れたrubyから、portのrb-mecabを使ってたけど、rvmで$GEM_HOMEが切り替わるとportで入れたrubyバインディングが読めないので、個別に入れる

portでmecabの最新版0.9.8を入れておく

sudo port install mecab +utf8only
which mecab
mecab -v

ちゃんと0.98になってた


mecabrubyバインディング入れる。
http://sourceforge.net/projects/mecab/files/ からmecab-ruby-0.98をダウンロードする

tar -zxvf mecab-ruby-0.98.tar
cd mecab-ruby-0.98
use rvm 1.9.2
ruby -v
ruby exconf.rb

んで
make

g++ -I. -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/backward -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I. -DHAVE_MECAB_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe -I/opt/local/include   -o MeCab_wrap.o -c MeCab_wrap.cpp
g++ -dynamic -bundle -o MeCab.bundle MeCab_wrap.o -L. -L/Users/sho/.rvm/rubies/ruby-1.9.2-p0/lib -L. -L/usr/local/lib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace  -lruby.1.9.1 -lstdc++ -lmecab  -lpthread -ldl -lobjc


make install

/opt/local/bin/ginstall -c -m 0755 MeCab.bundle /Users/sho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1/i386-darwin9.8.0

ちゃんとrvmの下に入った



同様にrvmで入れた1.8.7の方にも入れる

cd ../
rm -rf mecab-ruby-0.98
tar -zxvf mecab-ruby-0.98.tar
cd mecab-ruby-0.98
use rvm 1.8.7
ruby -v
ruby exconf.rb
make
make install


動くか試そう
mecab-split-terms.rb

#!/usr/bin/env ruby
require 'MeCab'

exit if ARGV.size < 1

puts str = ARGV.join(' ')

node = MeCab::Tagger.new.parseToNode(str)
while node do
  puts node.surface
  node = node.next
end

puts '*'*5

puts MeCab::Tagger.new.parse(str).split(/[\r\n]/).map{|i| i.split(/\t/).first}.delete_if{|i| i =~ /^EOS$/}
rvm use 1.8.7
ruby mecab-split-terms.rb BIG丼はやばい
rvm use 1.9.2
ruby mecab-split-terms.rb BIG丼はやばい

どっちも同じ様にsplitできた
1.9.2だとArray.to_sした時に前後に [ と ] が付くのではまった
あと改行区切りのStringをmapで行毎に処理できなかった