ネットサービスとかGoogleとか豆知識とか。

Index > プログラミング > RubyでMecabを使ってみた (Mac OS X)
プログラミング
2009年08月19日 13:28

RubyでMecabを使ってみた (Mac OS X)

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

Ruby で Mecab という形態素解析エンジンを使ってみました。

インストール

ソースからインストールしないといけないかなと思ったらどうやら Mac なら MacPorts で簡単にインストールできるようで、

$ sudo port install mecab
$ sudo port install mecab-ipadic-utf8
$ sudo port install rb-mecab

これだけ。かと思ったらなぜか文字化けを起こしてしまい、調べてみると辞書ファイルの指定が UTF-8 になっていませんでした。

/opt/local/etc/mecabrc をエディタで開いて、

$ sudo vim /opt/local/etc/mecabrc

dicdir を書き換えました。

-dicdir =  /opt/local/lib/mecab/dic/ipadic
+dicdir =  /opt/local/lib/mecab/dic/ipadic-utf8

サンプルコード

require "MeCab"

def parse(str)
  mecab = MeCab::Tagger.new("-Ochasen")
  node = mecab.parseToNode(str)

  while node
    puts node.surface + " " + node.feature
    node = node.next
  end
end

parse("女優酒井法子容疑者(38)の覚せい剤取締法違反事件で、同容疑者の毛髪鑑定で、覚せい剤とみられる反応が出たことが19日、捜査関係者への取材で分かった。")

parseToNode を使うと解析結果がノード形式で返されます。上記の場合、node.surface に単語、node.feature に品詞などの情報が入っていて、node.next で次のノードを参照できます。

実行結果

 BOS/EOS,*,*,*,*,*,*,*,*
女優 名詞,一般,*,*,*,*,女優,ジョユウ,ジョユー
酒井 名詞,固有名詞,人名,姓,*,*,酒井,サカイ,サカイ
法子 名詞,固有名詞,人名,名,*,*,法子,ノリコ,ノリコ
容疑 名詞,一般,*,*,*,*,容疑,ヨウギ,ヨーギ
者 名詞,接尾,一般,*,*,*,者,モノ,モノ
( 記号,括弧開,*,*,*,*,(,(,(
38 名詞,数,*,*,*,*,*
) 記号,括弧閉,*,*,*,*,),),)
の 助詞,連体化,*,*,*,*,の,ノ,ノ
覚せい 名詞,サ変接続,*,*,*,*,覚せい,カクセイ,カクセイ
剤 名詞,接尾,一般,*,*,*,剤,ザイ,ザイ
取締 名詞,サ変接続,*,*,*,*,取締,トリシマリ,トリシマリ
法 名詞,接尾,一般,*,*,*,法,ホウ,ホー
違反 名詞,サ変接続,*,*,*,*,違反,イハン,イハン
事件 名詞,一般,*,*,*,*,事件,ジケン,ジケン
で 助詞,格助詞,一般,*,*,*,で,デ,デ
、 記号,読点,*,*,*,*,、,、,、
同 接頭詞,名詞接続,*,*,*,*,同,ドウ,ドー
容疑 名詞,一般,*,*,*,*,容疑,ヨウギ,ヨーギ
者 名詞,接尾,一般,*,*,*,者,モノ,モノ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
毛髪 名詞,一般,*,*,*,*,毛髪,モウハツ,モーハツ
鑑定 名詞,サ変接続,*,*,*,*,鑑定,カンテイ,カンテイ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
、 記号,読点,*,*,*,*,、,、,、
覚せい 名詞,サ変接続,*,*,*,*,覚せい,カクセイ,カクセイ
剤 名詞,接尾,一般,*,*,*,剤,ザイ,ザイ
と 助詞,格助詞,引用,*,*,*,と,ト,ト
み 動詞,自立,*,*,一段,未然形,みる,ミ,ミ
られる 動詞,接尾,*,*,一段,基本形,られる,ラレル,ラレル
反応 名詞,サ変接続,*,*,*,*,反応,ハンノウ,ハンノー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
出 動詞,自立,*,*,一段,連用形,出る,デ,デ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
こと 名詞,非自立,一般,*,*,*,こと,コト,コト
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
19 名詞,数,*,*,*,*,*
日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ
、 記号,読点,*,*,*,*,、,、,、
捜査 名詞,サ変接続,*,*,*,*,捜査,ソウサ,ソーサ
関係 名詞,サ変接続,*,*,*,*,関係,カンケイ,カンケイ
者 名詞,接尾,一般,*,*,*,者,モノ,モノ
へ 助詞,格助詞,一般,*,*,*,へ,ヘ,エ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
取材 名詞,サ変接続,*,*,*,*,取材,シュザイ,シュザイ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
分かっ 動詞,自立,*,*,五段・ラ行,連用タ接続,分かる,ワカッ,ワカッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
 BOS/EOS,*,*,*,*,*,*,*,*

【参考にしたサイト】
» MeCab: Yet Another Part-of-Speech and Morphological Analyzer
» RubyのMecabでSegmentation fault。 | tkosugaのブログ | 海鮮料理がうまいww
» MacPorts を使って MeCab をインストールする (CasualConc J)
» [-*煙猴*-]: mecab-rubyを使ってみる
» 形態素解析とMeCabとPythonと文字化け - 牌語備忘録