mecab の ruby バインディング、mecab-ruby をインストールします。
関連するページはこちら、
MacOSX & Cygwin on Windows のソフトの事
Mail関係はこちら
bogofilter-nihongo.rb で、mecab-ruby を呼んでいます。mecab-ruby は、mecab の ruby バインディングです。
解凍して、此のパッチ
*** mecab-ruby-0.96/extconf.rb.orig Sun Jul 30 20:48:52 2006
--- mecab-ruby-0.96/extconf.rb Fri Nov 24 17:17:02 2006
***************
*** 8,12 ****
--- 8,13 ----
}
$CFLAGS += ' ' + `#{mecab_config} --cflags`.chomp
+ $LDFLAGS = '-L/usr/local/lib'
have_header('mecab.h') && create_makefile('MeCab')
を当てて、
$ ruby extconf.rb
出来た、Makefile の、
で、
$ make $ ruby test.rb $ sudo make install
するだけ。因に、依存関係は、下のとおり。
$ otool -L /usr/lib/ruby/site_ruby/1.8/universal-darwin9.0/MeCab.bundle /usr/lib/ruby/site_ruby/1.8/universal-darwin9.0/MeCab.bundle: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.6) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) /usr/local/lib/libmecab.1.dylib (compatibility version 2.0.0, current version 2.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0) /usr/local/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
10.4 の時の、依存関係は、下のとおり。
$ otool -L /usr/lib/ruby/site_ruby/1.8/universal-darwin8.0/MeCab.bundle /usr/lib/ruby/site_ruby/1.8/universal-darwin8.0/MeCab.bundle: /usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.2) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.5.1) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) /usr/local/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
特に無し。
mecab-ruby 附属の、test.rb から
#!/usr/bin/ruby
require 'MeCab'
sentence = "太郎はこの本を二郎を見た女性に渡した。"
begin
print MeCab::VERSION, "\n"
c = MeCab::Tagger.new(ARGV.join(" "))
puts c.parse(sentence)
n = c.parseToNode(sentence)
while n do
print n.surface, "\t", n.feature, "\t", n.cost, "\n"
n = n.next
end
print "EOS\n";
rescue
print "RuntimeError: ", $!, "\n";
end