igoの辞書を作って、igo-rubyで形態素解析
javaで実装された形態素解析エンジンのigoがrubyに移植されたのを使ってみた
最初から辞書がビルドされてるなら、pure rubyだからgemで一発でインストールできるから楽だな。
- http://igo.sourceforge.jp/
- http://kyow.cocolog-nifty.com/blog/2010/12/igoruby-9726.html
- https://github.com/kyow/igo-ruby
まず辞書を作る。辞書生成のために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