MeCabをrubyから使ってみる
インストール
まずMacPortsで本体と辞書を入れて読み込む辞書を設定する。
$ sudo port install mecab $ sudo port install mecab-ipadic-utf8 $ sudo vi /opt/local/etc/mecabrc # 編集内容は下記を参照
mecabrcは次のように書き換える。
dicdir = /opt/local/lib/mecab/dic/ipadic-utf8
次にrubyバインディングのmecab-rubyをインストールする。 ソースを SourceForge から落としてきて展開し、そのディレクトリで以下を実行。
$ ruby extract.rb $ vi Makefile # 編集内容は下記を参照 $ make $ ruby test.rb # これでエラーが出なければ問題無し $ sudo make install
Makefileは次のように/opt/local/libを読むように修正を加える。
LIBS = -lstdc++ -ldl -lobjc -L/usr/local/lib -L/opt/local/lib -lmecab
参考: MeCab + Ruby で形態素解析(わかち書き)
rubyから使う
irbで次をやってみる。
require 'MeCab'
wakati = MeCab::Tagger.new('-O wakati')
puts wakati.parse('最近の夜は寒い')
mecab = MeCab::Tagger.new()
node = mecab.parseToNode('最近の夜は寒い')
while node do
puts "#{node.surface}\t#{node.feature}"
node = node.next
end
参考: MeCab + Ruby で形態素解析(わかち書き)
地味にはまったのがnewするときの引数。特にオプションを指定しないなら上記のようになにも与えないか、もしくは空の文字列を与える。明示的にnilを与えるとエラーになるので要注意。