mk-mode BLOG

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

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

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

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

こんばんは。

以前、Cygwin 上で Ruby を使って形態素解析 MeCab をする方法を紹介しました。

今回は、Linux Mint にソースをビルドしてインストールした Ruby で形態素解析 MeCab を使用する方法についてです。
以前の Cygwin での方法と若干異なるので記録しておきます。

0. 前提条件

  • Linux Mint 13 Maya (64bit) での作業を想定。(Ubuntu, Debian でも同様)
  • Ruby はソースをビルドしてインストールした 1.9.3-p362 を想定。

1. MeCab と辞書のインストール

MeCab と辞書(UTF-8)を Synaptic パッケージマネージャか apt-get 等でインストールする。
apt-get でインストールするなら以下のようにする。

1
2
3
$ sudo apt-get install mecab mecab-ipadic-utf8
$ mecab -v
mecab of 0.98

MeCab 0.98 がインストールできている。

2. libmecab-dev インストール

apt 管理下の Ruby でない場合、つまり、当方のようにソースをビルドしてインストールした Ruby や rvm, rbenv でインストールした Ruby の場合は、後にインストールする mecab-ruby のビルドで libmecab-dev が必要である。
Synaptic パッケージマネージャか apt-get 等でインストールする。 apt-get でインストールするなら以下のようにする。

1
$ sudo apt-get install libmecab-dev

3. mecab-ruby インストール

mecab-ruby のアーカイブをダウンロード後をビルド&インストールする。
当記事執筆時点では mecab-ruby 0.994 が最新だが、システムにインストールされている MeCab とバージョンが同じか近いものをインストールした方がよいようなので、mecab-ruby 0.98 をインストールした。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ cd /usr/local/src
$ 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
$ gem build mecab-ruby.gemspec
  Successfully built RubyGem
  Name: mecab-ruby
  Version: 0.97
  File: mecab-ruby-0.97.gem
$ sudo gem install mecab-ruby-0.97.gem
Building native extensions.  This could take a while...
Successfully installed mecab-ruby-0.97
1 gem installed
Installing ri documentation for mecab-ruby-0.97...
Installing RDoc documentation for mecab-ruby-0.97...
$ gem list | grep mecab-ruby
mecab-ruby (0.97)

【2016-12-29 追記】
現在、 mecab-ruby-x.xx.tar.gz 等のダウンロードは こちら から行うようになっている。 【追記ここまで】

4. テスト用スクリプト作成

テスト用に以下のような Ruby スクリプトを作成する。

test_mecab.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- 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

5. テスト

作成した 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

問題ないようだ。

ちなみに、出力フォーマットは以下の通り。

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

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

6. 参考サイト


これで、Linux Mint にインストールしている Ruby でも形態素解析ができるようになりました。

以上。

Comments