Ruby+mecabで形態素解析 (with Cygwin)
せっかくRubyでTwitterを使えるようになったし、人工無能的なものを作ったら楽しいかなと思ったので、まずは形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。形態素解析にはいくつかエンジンがあるが、mecabを利用することに。
mecab本体のインストールは、こちらのサイトを参考にさせていただいた。0.98じゃないとエラーが起きる模様。辞書はIPAのものを選んでおいた。
* Cygwin - 形態素解析 MeCab をインストール! - mk-mode BLOG
これでCygwinのターミナルから、形態素解析をできるようになった。例えば、ターミナルに。
$ mecab 形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。
と打ってEnterすれば、
形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。 形態素 名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ 解析 名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 使っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,使う,ツカッ,ツカッ て 助詞,接続助詞,*,*,*,*,て,テ,テ ツイート 名詞,固有名詞,一般,*,*,*,* とか 助詞,並立助詞,*,*,*,*,とか,トカ,トカ 文章 名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 品詞 名詞,一般,*,*,*,*,品詞,ヒンシ,ヒンシ 単位 名詞,一般,*,*,*,*,単位,タンイ,タンイ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 分解 名詞,サ変接続,*,*,*,*,分解,ブンカイ,ブンカイ できる 動詞,自立,*,*,一段,基本形,できる,デキル,デキル よう 名詞,非自立,助動詞語幹,*,*,*,よう,ヨウ,ヨー に 助詞,格助詞,一般,*,*,*,に,ニ,ニ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ て 助詞,接続助詞,*,*,*,*,て,テ,テ み 動詞,非自立,*,*,一段,連用形,みる,ミ,ミ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOS
こんな感じで結果を表示してくれる。
これをRubyで使うには、MeCab-rubyというラッパーが必要になる。こちらのインストールは、一部Makefileをいじらないと参照先が見つからなくてエラーを吐く。
$ wget http://mecab.googlecode.com/files/mecab-ruby-0.98.tar.gz $ tar zxvf mecab-ruby-0.98.tar.gz $ cd mecab-ruby-0.98 $ ruby extconf.rb
ここまでしたら、Makefileを開き、以下の修正を加える。
- ldflags = -L. → 末尾に 「-L/usr/local/lib」を追加
- LIBS = $(LIBRUBYARG_SHARED) -lstdc++ -ldl -lcrypt →末尾に「-lmecab」を追加
この修正は、以下のサイトを参考にした。
Cygwin1.7にMeCab0.98+MeCab-rubyをインストールしたメモ - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
これでmake, make installすれば、無事インストールできてRubyでもmecabを使えるようになる。
#!/usr/bin/ruby -Ku require 'MeCab' puts 'i' me = MeCab::Tagger.new() puts me.parse('形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。')
これを実行すれば、上に上げたのと同じような形態素解析結果が出てくる。
今回はここまで。