#!/usr/local/bin/perl -w

#$nbest = "/shared/data/Chinese/mt03_chinese_devset_v0-xfer3-070419a-trans.txt";
#$nbest = "/shared/data/Chinese/mt03_chinese_evlset_v0-xfer3-070504-top1-trans2.txt";
$nbest = "/shared/data/Chinese/mt03_chinese_evlset_v0-xfer3-070519-2-trans2.txt";
#$nbest = "/shared/data/Chinese/mt03_chinese_evlset_v0-xfer3-070425-trans.txt";
$reranked = $nbest;
$reranked =~ s/-trans/-reranked/; #"/shared/data/Chinese/mt03_chinese_devset_v0-xfer3-070419a-reranked.txt";

$probweight = 1;
$ruleweight = 1;
$transweight = -5;
$lenweight = -5.7;
$fragweight = -1.9;

$maxsent = "";
open(NBEST, "<:encoding(gbk)", $nbest) or die $!;
open(PTRANS, ">:encoding(gbk)", $reranked) or die $!;
while ($line = <NBEST>) {
    #print $line;
    if ($line =~ m/^SrcSent/i) {
	#print PTRANS $line if $maxsent ne "";
	#print PTRANS "Best:\n$maxsent\n$max\n\n" if $maxsent ne "";
	print PTRANS "$maxsent\n" if $maxsent ne "";
	$max = -1000;
	$maxsent = "";
    } elsif ($line =~ m/^\d+ \d+\t(.+)$/) {
	$trans = $1;
    } elsif ($line =~ m/^Overall:/) {
	$scores = $line;

	$prob = $1 if $scores =~ m/Prob: ([^,]+)/;
	$rulescore = $1 if $scores =~ m/Rules: ([^,]+)/;
	$transscore = $1 if $scores =~ m/Trans: ([^,]+)/;
	$fragpen = $1 if $scores =~ m/Frag: ([^,]+)/;
	$lenpen = $1 if $scores =~ m/Length: ([^,]+)/;
	$scores =~ m/Words: (\d+),(\d+)/;
	$srclen = $1; $tgtlen = $2;

	#$score = $prob + $transscore;
	$score = $prob - $transscore;
	#$score = $prob;
=comment
	$score = ($probweight * ($prob/$tgtlen)) + 
	    ($ruleweight * $rulescore) +
	    ($transweight * ($transscore/$srclen)) +
	    ($fragweight * $fragpen) +
	    ($lenweight * $lenpen);
=cut

	@traces = ();
	$src = ""; $tgt = "";
	while ($line !~ m/^\s*$/) {
	    #print $line;
	    $line = <NBEST>;
	    push @traces, $line;
	    last if $line =~ m/^\s*$/;
	    $line =~ m/:\s*([^\(]+)/;
	    $src .= $1;
	    (@tgtwords) = ($line =~ m/ \'([^\']+)\'\)/g);
	    $tgt .= join(" ", @tgtwords) . " ";
	}
	#print "$src\n$tgt\n";
	#$prob = &transProb($src, $tgt);

	if ($score > $max) {
	    $max = $score;
	    $maxsent = $trans;
	}

	#$overall =~ s/Trans: ([^,]+)/Trans: $logprob/;
	#print PTRANS $overall, join("", @traces);

	#print "$prob\t$logprob\t$perword\n\n";

    } else {
	#print PTRANS $line;
    }

}
#print PTRANS "Best:\n$maxsent\n$max\n\n";
print PTRANS "$maxsent\n";

close(NBEST);
