Cygwin - Ruby で形態素解析 MeCab を使う!
Updated:
前回は、Cygwin に「形態素解析」の仕組みである「 MeCab 」を導入しました。
今回は、Cygwin 上の Ruby で MeCab を使用するために、「 mecab-ruby 」をインストールしました。
以下が、導入記録です。
記録
MeCab 本体や辞書をダウンロードした MeCab: Yet Another Part-of-Speech and Morphological Analyzer からダウンロードするのですが、本体に 0.98 を導入しているので、mecab-ruby も 0.98 を使用することにします。
1.事前準備
今回は、Ruby で MeCab を使用することが目的なので、当然 Cygwin に Ruby をインストールしておく。
2.mecab-ruby アーカイブダウンロード&展開
以下のようにアーカイブをダウンロードし、展開しておく。
$ cd /usr/src
$ wget http://mecab.googlecode.com/files/mecab-ruby-0.98.tar.gz
$ tar zxvf mecab-ruby-0.98.tar.gz
3.extconf.rb の実行
以下のように extconf.rb を実行する。
$ cd mecab-ruby-0.98
$ ruby extconf.rb
4.Makefile の編集
Cygwin の場合、make でエラーになるので、Makefile を以下のように修正する。
$ vi Makefile
# ldflags = -L.
# ↓ 変更
ldflags = -L. -L/usr/local/lib
5.mecab-ruby インストール
以下のようにビルド&インストールする。
$ make
$ make install
6.テスト用 Ruby スクリプトの作成
付属のサンプルスクリプトを少し簡単に修正した。 【 ファイル名:test_mecab.rb 】
# -*- encoding: utf-8 -*-
require 'MeCab'
sentence = "太郎はこの本を二郎を見た女性に渡した。"
begin
c = MeCab::Tagger.new
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
7.動作確認
作成した Ruby を実行してみる。
$ ruby test_mecab.rb
BOS/EOS,*,*,*,*,*,*,*,* 0
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー 8614
は 助詞,係助詞,*,*,*,*,は,ハ,ワ 9699
この 連体詞,*,*,*,*,*,この,コノ,コノ 9755
本 名詞,一般,*,*,*,*,本,ホン,ホン 14548
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 13738
二 名詞,数,*,*,*,*,二,ニ,ニ 16665
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー 21808
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 20998
見 動詞,自立,*,*,一段,連用形,見る,ミ,ミ 25194
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 22795
女性 名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ 25091
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 24938
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ 28035
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 27158
。 記号,句点,*,*,*,*,。,。,。 23724
BOS/EOS,*,*,*,*,*,*,*,* 22188
EOS
出力フォーマットは以下の通り。
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,
活用形,活用型,原形,読み,発音,コスト
※コストとは出現頻度のことです。
完璧です。 しかし、「形態素解析」おもしろいですね。 ブログやサーバに保存しているツイートのデータを解析してみたくなりました。
以上です。
Comments