Hatena::Groupgeneration1986

omote87 このページをアンテナに追加 RSSフィード

ura87 no omote

メインのブログ(d:id:kiwofusi)は日本語の読めるひとみんなに読んでもらいたいので、作業メモやソースコードなどはこちらに書きます。

 | 

2009年11月24日(火)

[][][]mecab.rbでMeCabを動かす 23:11 はてなブックマーク - mecab.rbでMeCabを動かす - omote87 mecab.rbでMeCabを動かす - omote87 のブックマークコメント

WindowsではRubyバインディングがうまくインストールできないみたいです。そこでmecab.rbを使わせていただきました。

参考:Windows + MeCab + Ruby: 猫背ミジンコMeCabのRubyバインディング (マルッと!)

require 'mecab.rb'
require 'kconv'

str = "庭には二羽鶏がいる貴社の記者が汽車で帰社した。"
str = ARGV[1] if ARGV[1] != nil

$mecab = Mecab.new("")# surfaceのみ => "-O wakati"
puts "version: " + $mecab.version()

def sparse_tostr(str)
	begin
		$mecab.sparse_tostr(str.tosjis).split(/\n/).each {|word|
	     	puts word
		}
	rescue Exception => e
		$stderr.puts e, e.backtrace
	end
end

def sparse_tonode(str)
	begin
		node_set = []
		node = $mecab.sparse_tonode(str.tosjis).next # 一個目のノード
		while node
			node_set << [node.surface, node.pos.split(/,/)[0]] # 単語&品詞 
			node = node.next
		end
		return node_set
	rescue Exception => e
		$stderr.puts e, e.backtrace
	end
end

def extract_noum(str) # 名詞を抜き出す 
	begin
		node_set = []
		node = $mecab.sparse_tonode(str.tosjis).next # 一個目のノード
		while node
			pos = node.pos.split(/,/)[0]
			node_set << node.surface if /名詞/.match(pos.toutf8)
			node = node.next
		end
		return node_set
	rescue Exception => e
		$stderr.puts e, e.backtrace
	end
end

# メイン

if ARGV[0] == "node"
	sparse_tonode(str).each {|node| # ノードで
		puts node[0] + "\t" + node[1]
	}
elsif ARGV[0] == "noum"
	extract_noum(str).each {|word| # 名詞を出す
		print word + ", "
	}
else
	sparse_tostr(str) # ふつうに結果を出す
end

実行結果

D:\ruby\src\mecab-sample>ruby mecab-sample2.rb

version: 0.98pre1

庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ

に 助詞,格助詞,一般,*,*,*,に,ニ,ニ

は 助詞,係助詞,*,*,*,*,は,ハ,ワ

二 名詞,数,*,*,*,*,二,ニ,ニ

羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ

鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ

が 助詞,格助詞,一般,*,*,*,が,ガ,ガ

いる 動詞,自立,*,*,一段,基本形,いる,イル,イル

貴社 名詞,一般,*,*,*,*,貴社,キシャ,キシャ

の 助詞,連体化,*,*,*,*,の,ノ,ノ

記者 名詞,一般,*,*,*,*,記者,キシャ,キシャ

が 助詞,格助詞,一般,*,*,*,が,ガ,ガ

汽車 名詞,一般,*,*,*,*,汽車,キシャ,キシャ

で 助詞,格助詞,一般,*,*,*,で,デ,デ

帰社 名詞,サ変接続,*,*,*,*,帰社,キシャ,キシャ

動詞,自立,*,*,サ変・スル,連用形,する,シ,シ

助動詞,*,*,*,特殊・タ,基本形,た,タ,タ

。 記号,句点,*,*,*,*,。,。,。

EOS

D:\ruby\src\mecab-sample>ruby mecab-sample2.rb node

version: 0.98pre1

庭 名詞

に 助詞

は 助詞

二 名詞

羽 名詞

鶏 名詞

が 助詞

いる 動詞

貴社 名詞

の 助詞

記者 名詞

が 助詞

汽車 名詞

で 助詞

帰社 名詞

動詞

助動詞

。 記号

EOS EOS

D:\ruby\src\mecab-sample>ruby mecab-sample2.rb noum

version: 0.98pre1

庭, 二, 羽, 鶏, 貴社, 記者, 汽車, 帰社,

トラックバック - http://generation1986.g.hatena.ne.jp/kiwofusi/20091124
 |