: Ngramしてみた
なんとなくNgramを実装してみたくなったのでやってみた
#!/usr/bin/ruby require 'pp' require 'open-uri' $KCODE = 'u' String.class_eval do def ngram(n) analyzed = Hash.new(0) self.split(//).each_cons(n) do |cons| next if cons.include?("\n") analyzed[cons.join('')] += 1 end analyzed end def clear_tag self.gsub(/<[^>]+?>/, '') end end if $0 == __FILE__ open(ARGV[0]) do |f| pp f.read.clear_tag.ngram(3).sort_by{|k, v| -v} end end
使い方
引数にURLを指定するとそのページのタグを除去して解析する。
ちなみに「ハッカーになろう」を解析した上位はこんな感じ
$ ruby ngram.rb http://cruel.org/freeware/hacker.html [["ッカー", 151], ["ハッカ", 144], ["です。", 121], ["ます。", 85], ["ません", 70], ["せん。", 56], ["ありま", 54], ["ること", 49], ["います", 47], ["しょう", 43],
ですます調で書かれているんだろうね。