MeCabとrubyで遊んだ
mecabのinstall
sudo aptitude install mecab mecab-ipadic mecab-utils libmecab-dev
euc-jp->utf-8
sudo /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p
mecab-rubyのinstall
mecab -v # mecab of 0.96 wget http://downloads.sourceforge.net/mecab/mecab-ruby-0.96.tar.gz cd mecab-ruby-0.96/ ruby extconf.rb make sudo make install
マルコフ連鎖のコードを書く
#malkov.rb require 'MeCab' require 'enumerator' n = ARGV.first.to_i #-Owakatiを付けると、parseしたとき分かち書きで表示してくれる c = MeCab::Tagger.new("-Owakati") mem = Hash.new{ |h,k| h[k] = []} a = c.parse($stdin.read).split(" ") a.each_cons(2){ |k,v| mem[k] << v } (1..n).inject(a.first) do |select_word, _| print select_word puts "" if select_word == "。" vs = mem[select_word] vs[rand(vs.length)] end
使うときは
cat <file> | ruby1.8 malkov.rb 300
みたいな感じで