mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Cygwin - Ruby で形態素解析 MeCab を使う!

[ pc_tips, プログラミング ] [ Cygwin, MeCab, Ruby, 形態素解析 ]

こんばんは。

前回は、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 アーカイブダウンロード&展開

以下のようにアーカイブをダウンロードし、展開しておく。

1
2
3
$ 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 を実行する。

1
2
$ cd mecab-ruby-0.98
$ ruby extconf.rb

4.Makefile の編集

Cygwin の場合、make でエラーになるので、Makefile を以下のように修正する。

1
2
3
4
$ vi Makefile
  # ldflags  = -L. 
  # ↓ 変更
  ldflags  = -L. -L/usr/local/lib

5.mecab-ruby インストール

以下のようにビルド&インストールする。

1
2
$ make
$ make install

6.テスト用 Ruby スクリプトの作成

付属のサンプルスクリプトを少し簡単に修正した。 【 ファイル名:test_mecab.rb 】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -- 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 を実行してみる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ 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

出力フォーマットは以下の通り。

1
2
表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,
活用形,活用型,原形,読み,発音,コスト

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


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

以上です。

Comments