diff options
author | Patrick Simianer <p@simianer.de> | 2015-08-04 15:57:31 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2015-08-04 15:57:31 +0200 |
commit | 81f6b20d1c41d8906900c57ab71ec08a007ea02c (patch) | |
tree | b05250a71f8ec2417f0fb26fa2b6e79ea41deca6 /rerank.rb | |
parent | 5f983dd1edeff0dd04c701381c7f0d3f2a83a525 (diff) |
voted perceptron
Diffstat (limited to 'rerank.rb')
-rwxr-xr-x | rerank.rb | 27 |
1 files changed, 16 insertions, 11 deletions
@@ -3,13 +3,13 @@ require 'zipf' class KbestItem - attr_accessor :rank, :model, :gold, :f, :model_orig + attr_accessor :rank, :model, :rr, :gold, :f def initialize s a = s.split "\t" @rank = a[0].to_i @gold = a[1].to_f @model = a[2].to_f - @model_orig = @model + @rr = -1.0 @f = SparseVector.from_kv a[3], "=", " " end @@ -18,27 +18,32 @@ class KbestItem end end -`mkdir rrkb` w = SparseVector.from_kv ReadFile.new(ARGV[0]).read, "\t", "\n" +def o kl + scores = [] + scores << kl.first.gold + kl.sort! { |i,j| j.model <=> i.model } + scores << kl.first.gold + kl.sort! { |i,j| j.rr <=> i.rr } + scores << kl.first.gold + + puts scores.join "\t" +end + STDERR.write "reranking..\n" cur = [] k_sum = 0 j = 0 while line = STDIN.gets item = KbestItem.new line.strip - item.model = w.dot(item.f) + item.rr = w.dot(item.f) if item.rank == 0 && cur.size > 0 - cur.sort! { |i,j| j.model <=> i.model } - f = WriteFile.new "rrkb/#{j}.gz" - f.write cur.map{|x| x.to_s}.join("\n") - f.close - puts "RERANKED\t#{cur.first.gold}" + o cur cur = [] j += 1 end cur << item end -cur.sort! { |i,j| j.model <=> i.model } -puts "RERANKED\t#{cur.first.gold}" +o cur |