ha's notepad II

メモ書きです。

Ruby+mecabで形態素解析 (with Cygwin)

せっかくRubyTwitterを使えるようになったし、人工無能的なものを作ったら楽しいかなと思ったので、まずは形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。形態素解析にはいくつかエンジンがあるが、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を開き、以下の修正を加える。

  1. ldflags = -L. → 末尾に 「-L/usr/local/lib」を追加
  2. 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('形態素解析を使ってツイートとか文章を品詞単位に分解できるようにしてみた。')

これを実行すれば、上に上げたのと同じような形態素解析結果が出てくる。
今回はここまで。