Posted at

RubyでMeCabを使う

More than 5 years have passed since last update.


CentOSにMeCabをインストール

まずは、MeCabをインストールする。

$ sudo yum install mecab mecab-ipadic 

No package mecab available.
No package mecab-ipadic available.

できない、どうやらレポジトリを追加する必要があるらしい。


Groongaレポジトリ追加

$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm


mecab本体と辞書ファイルをインストール

$ sudo yum install mecab mecab-ipadic 


確認

$ mecab --version

mecab of 0.996

$ mecab
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS


nattoからMeCabをよぶ


nattoをインストール

$ gem install natto


rubyファイルを書いて実行

require 'natto'

text = 'すもももももももものうち'
nm = Natto::MeCab.new
nm.parse(text) do |n|
puts "#{n.surface}\t#{n.feature}"
end

$ ruby natto.rb

~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/lib/ffi/library.rb:133:in `block in ffi_lib': Could not open library 'mecab': /usr/lib/mecab: cannot read file data: Is a directory. (LoadError)
Could not open library 'libmecab.so': libmecab.so: cannot open shared object file: No such file or directory

よく分からんが、libmecab.soが必要で、ちゃんと読み込めていない。


libmecab.soの場所を探す

$ sudo find / -name libmecab.so*

/usr/lib/libmecab.so.2
/usr/lib/libmecab.so.2.0.0


libmecab.soにパスを通す

$ echo 'export MECAB_PATH=/usr/lib/libmecab.so.2' >> ~/.bash_profile

$ source ~/.bash_profile


再度実行する

$ ruby natto.rb

すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
BOS/EOS,*,*,*,*,*,*,*,*

できた!


参考URL