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,
活用形,活用型,原形,読み,発音,コスト

※コストとは出現頻度のことです。


完璧です。 しかし、「形態素解析」おもしろいですね。 ブログやサーバに保存しているツイートのデータを解析してみたくなりました。

以上です。





 

Sponsored Link

 

Comments