2008/09/04

mecab-rubyを使ってみる

(1)MeCab本体のインストール。今回は既にインストール済みでした。

$ sudo aptitude install mecab mecab-ipadic mecab-jumandic mecab-utils

(2)mecab-rubyをコンパイルするのにg++が必要なのでインストール。

$ sudo aptitude install g++

(3)mecabのVersion確認。

$ mecab -v
mecab of 0.93

(2)SourceForgeからmecab-ruby-0.93.tar.gzをダウンロードして展開。

$ sudo tar xvzf mecab-ruby-0.93.tar.gz
$ cd ./mecab-ruby-0.93

インストール。

$ ruby extconf.rb
checking for main() in -lmecab... yes
checking for main() in -lstdc++... yes
checking for mecab.h... yes
creating Makefile
$ make
g++ -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_MECAB_H -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c MeCab_wrap.cpp
gcc -shared -rdynamic -Wl,-export-dynamic -L"/usr/lib" -o MeCab.so MeCab_wrap.o -lruby1.8 -lstdc++ -lmecab -lpthread -ldl -lcrypt -lm -lc
$ sudo make install
/usr/bin/install -c -m 0755 MeCab.so /usr/local/lib/site_ruby/1.8/i486-linux

(4)テストスクリプトを実行してみる。
中身を見ようとcatしたら文字化けしたので文字コードを確認。

$ nkf -g test.rb
EUC-JP

EUCかぁ。Etch上で動かすのでUTF-8に変換する。

$ nkf -w8 test.rb > test2.rb
$ cat test2.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


(5)実行してみる。

$ ruby ./test2.rb
0.93
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
この 連体詞,*,*,*,*,*,この,コノ,コノ
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二郎 名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
EOS
BOS/EOS,*,*,*,*,*,*,*,* 0
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー 8308
は 助詞,係助詞,*,*,*,*,は,ハ,ワ 9237
この 連体詞,*,*,*,*,*,この,コノ,コノ 9346
本 名詞,一般,*,*,*,*,本,ホン,ホン 13811
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 13094
二郎 名詞,固有名詞,一般,*,*,*,二郎,ニロウ,ニロー 18835
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 19322
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ 23338
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 20625
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ 23008
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 22871
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ 25639
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 25006
。 記号,句点,*,*,*,*,。,。,。 21081
BOS/EOS,*,*,*,*,*,*,*,* 19505
EOS


今回、Bloggerにソースを貼り付けるにあたって以下を参考にしました。Thanks!
すぐに忘れる脳みそのためのメモ: Blogger でソースコードに色付けをする - google-code-prettify