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を与えるとエラーになるので要注意。