ケンブリッジ大学がどうたらこうたら

Ruby1.9適当に1.9対応したRuby/kakasimecab-rubyインストールした環境にて。

#!/usr/bin/env ruby
# vim: set fileencoding=utf-8:

require "kakasi"
require "MeCab"

class Cambridge
    def initialize
	@mecab_y = MeCab::Tagger.new("-Oyomi")
    end
    def hirakana(str)
	node = @mecab_y.parseToNode(str.encode("EUC-JP"))
	result = "".encode("EUC-JP")
	while node do
	    yomi = node.feature.force_encoding("EUC-JP").split(/,/)[5]
	    if yomi=="*"
		surface = node.surface.force_encoding("EUC-JP").encode("EUC-JP")
		yomi = Kakasi.kakasi("-JH -oeuc", surface).force_encoding("EUC-JP")
	    end
	    result += yomi
	    node = node.next
	end
	result
    end
    def wakati(str)
	Kakasi.kakasi("-w -oeuc", str.encode("EUC-JP")).force_encoding("EUC-JP").split
    end
    def cambridge(str)
	wakati(str).map{|w| self.hirakana(w)}.map{|k|
	    if k.size < 4
		k
	    else
		a = k.split(//)
		[a[0], *(a[1..a.size-2].shuffle), a[a.size-1]].join
	    end
	}.join(" ")
    end
end
camb = Cambridge.new
ARGF.each do|line|
    puts camb.cambridge(line)
end
% ruby-1.9.1 cambridge.rb
ケンブリッジ大学がどうたらこうたら
けんっりぶじ だいがく がどうたこらうたら
分かち書きの精度あんまし高くないかも。
わか ち かき の せいど あまんし たかく なかいも 。

そんな遊び。

test