summaryrefslogtreecommitdiff
path: root/rerank.rb
diff options
context:
space:
mode:
authorPatrick Simianer <p@simianer.de>2015-08-04 15:57:31 +0200
committerPatrick Simianer <p@simianer.de>2015-08-04 15:57:31 +0200
commit81f6b20d1c41d8906900c57ab71ec08a007ea02c (patch)
treeb05250a71f8ec2417f0fb26fa2b6e79ea41deca6 /rerank.rb
parent5f983dd1edeff0dd04c701381c7f0d3f2a83a525 (diff)
voted perceptron
Diffstat (limited to 'rerank.rb')
-rwxr-xr-xrerank.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/rerank.rb b/rerank.rb
index 9e2a708..095e20b 100755
--- a/rerank.rb
+++ b/rerank.rb
@@ -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