igoの辞書を作って、igo-rubyで形態素解析

javaで実装された形態素解析エンジンのigoがrubyに移植されたのを使ってみた
最初から辞書がビルドされてるなら、pure rubyだからgemで一発でインストールできるから楽だな。


まず辞書を作る。辞書生成のためにigo本体が必要

igo-0.4.2.jarをsourceforgeからダウンロードしておく。
mecabの辞書をigoと同じディレクトリに展開する

wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz


mecabの辞書からigo用の辞書を作る
macのjava1.6を使ってるのだけども、heapが足りないエラーが出て落ちたので、とりあえず2GB与えた。無事辞書できた。

java -Xmx2048m -cp igo-0.4.2.jar net.reduls.igo.bin.BuildDic ./ipadic ./mecab-ipadic-2.7.0-20070801 EUC-JP

ipadicというディレクトリにできる。適当な場所に移動しておく

mv ipadic /usr/local/share/

形態素解析する

java -cp ~/tmp/src/igo-0.4.2.jar net.reduls.igo.bin.Igo /usr/local/share/ipadic

続けて適当な日本語をうちこんでenterすると解析される
ただなんか文字化けした
辞書がEUCでterminalがutf-8だから?



rubyから使ってみる

gem install igo-ruby


igo-parse-test.rb

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'rubygems'
require 'igo-ruby'

mes = ARGV.join(' ') unless ARGV.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes

tagger = Igo::Tagger.new('/usr/local/share/ipadic')

puts tagger.wakati(mes)
tagger.parse(mes).each{|i|
  puts "#{i.surface} #{i.feature} #{i.start}"
}
ruby igo-parse-test.rb "兄さん、兄さんが有限実行の志士なのはわかりましたから、5日分の牛肉やら白菜やらまとめ買いしてくるの、止して下さい…「こんなにすき焼きの材料買って…お餅は何時食べるのですか…」「餅をすき焼きの中に入れればよい」兄さんのすき焼きに寄せる万能感、どこ から来てるの"

辞書がEUCでプログラムはUTF-8なのにちゃんと文字化けせずに出た。
http://twitter.com/sister_niam/status/20432771293904896

兄さん
、
兄さん
が
有限
実行
の
志士
な
の
は
わかり
まし
た
から
、
5
日
分
の
牛肉
やら
白菜
やら
まとめ買い
し
て
くる
の
、
止し
て
下さい
…
「
こんなに
すき焼き
の
材料
買っ
て
…
お
餅
は
何
時
食べる
の
です
か
…
」
「
餅
を
すき焼き
の
中
に
入れれ
ば
よい
」
兄さん
の
すき焼き
に
寄せる
万能
感
、
どこ
から
来
てる
の
兄さん 名詞,一般,*,*,*,*,兄さん,ニイサン,ニーサン 0
、 記号,読点,*,*,*,*,、,、,、 3
兄さん 名詞,一般,*,*,*,*,兄さん,ニイサン,ニーサン 4
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 7
有限 名詞,一般,*,*,*,*,有限,ユウゲン,ユーゲン 8
実行 名詞,サ変接続,*,*,*,*,実行,ジッコウ,ジッコー 10
の 助詞,連体化,*,*,*,*,の,ノ,ノ 12
志士 名詞,一般,*,*,*,*,志士,シシ,シシ 13
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ 15
の 名詞,非自立,一般,*,*,*,の,ノ,ノ 16
は 助詞,係助詞,*,*,*,*,は,ハ,ワ 17
わかり 動詞,自立,*,*,五段・ラ行,連用形,わかる,ワカリ,ワカリ 18
まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ 21
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 23
から 助詞,接続助詞,*,*,*,*,から,カラ,カラ 24
、 記号,読点,*,*,*,*,、,、,、 26
5 名詞,数,*,*,*,*,* 27
日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ 28
分 名詞,接尾,一般,*,*,*,分,ブン,ブン 29
の 助詞,連体化,*,*,*,*,の,ノ,ノ 30
牛肉 名詞,一般,*,*,*,*,牛肉,ギュウニク,ギューニク 31
やら 助詞,並立助詞,*,*,*,*,やら,ヤラ,ヤラ 33
白菜 名詞,一般,*,*,*,*,白菜,ハクサイ,ハクサイ 35
やら 助詞,並立助詞,*,*,*,*,やら,ヤラ,ヤラ 37
まとめ買い 名詞,一般,*,*,*,*,まとめ買い,マトメガイ,マトメガイ 39
し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ 44
て 助詞,接続助詞,*,*,*,*,て,テ,テ 45
くる 動詞,非自立,*,*,カ変・クル,基本形,くる,クル,クル 46
の 助詞,終助詞,*,*,*,*,の,ノ,ノ 48
、 記号,読点,*,*,*,*,、,、,、 49
止し 動詞,自立,*,*,五段・サ行,連用形,止す,ヨシ,ヨシ 50
て 助詞,接続助詞,*,*,*,*,て,テ,テ 52
下さい 動詞,非自立,*,*,五段・ラ行特殊,命令i,下さる,クダサイ,クダサイ 53
… 記号,一般,*,*,*,*,…,…,… 56
「 記号,括弧開,*,*,*,*,「,「,「 57
こんなに 副詞,助詞類接続,*,*,*,*,こんなに,コンナニ,コンナニ 58
すき焼き 名詞,一般,*,*,*,*,すき焼き,スキヤキ,スキヤキ 62
の 助詞,連体化,*,*,*,*,の,ノ,ノ 66
材料 名詞,一般,*,*,*,*,材料,ザイリョウ,ザイリョー 67
買っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,買う,カッ,カッ 69
て 助詞,接続助詞,*,*,*,*,て,テ,テ 71
… 記号,一般,*,*,*,*,…,…,… 72
お 接頭詞,名詞接続,*,*,*,*,お,オ,オ 73
餅 名詞,一般,*,*,*,*,餅,モチ,モチ 74
は 助詞,係助詞,*,*,*,*,は,ハ,ワ 75
何 名詞,数,*,*,*,*,何,ナン,ナン 76
時 名詞,接尾,助数詞,*,*,*,時,ジ,ジ 77
食べる 動詞,自立,*,*,一段,基本形,食べる,タベル,タベル 78
の 名詞,非自立,一般,*,*,*,の,ノ,ノ 81
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 82
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ 84
… 記号,一般,*,*,*,*,…,…,… 85
」 記号,括弧閉,*,*,*,*,」,」,」 86
「 記号,括弧開,*,*,*,*,「,「,「 87
餅 名詞,一般,*,*,*,*,餅,モチ,モチ 88
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ 89
すき焼き 名詞,一般,*,*,*,*,すき焼き,スキヤキ,スキヤキ 90
の 助詞,連体化,*,*,*,*,の,ノ,ノ 94
中 名詞,非自立,副詞可能,*,*,*,中,ナカ,ナカ 95
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 96
入れれ 動詞,自立,*,*,一段,仮定形,入れる,イレレ,イレレ 97
ば 助詞,接続助詞,*,*,*,*,ば,バ,バ 100
よい 形容詞,非自立,*,*,形容詞・アウオ段,基本形,よい,ヨイ,ヨイ 101
」 記号,括弧閉,*,*,*,*,」,」,」 103
兄さん 名詞,一般,*,*,*,*,兄さん,ニイサン,ニーサン 104
の 助詞,連体化,*,*,*,*,の,ノ,ノ 107
すき焼き 名詞,一般,*,*,*,*,すき焼き,スキヤキ,スキヤキ 108
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 112
寄せる 動詞,自立,*,*,一段,基本形,寄せる,ヨセル,ヨセル 113
万能 名詞,一般,*,*,*,*,万能,バンノウ,バンノー 116
感 名詞,接尾,一般,*,*,*,感,カン,カン 118
、 記号,読点,*,*,*,*,、,、,、 119
どこ 名詞,代名詞,一般,*,*,*,どこ,ドコ,ドコ 120
から 助詞,格助詞,一般,*,*,*,から,カラ,カラ 122
来 動詞,自立,*,*,カ変・来ル,連用形,来る,キ,キ 124
てる 動詞,非自立,*,*,一段,基本形,てる,テル,テル 125
の 助詞,終助詞,*,*,*,*,の,ノ,ノ 127