package edu.berkeley.cs.nlp.ocular.eval;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import edu.berkeley.cs.nlp.ocular.eval.Evaluator.EvalSuffStats;
import edu.berkeley.cs.nlp.ocular.util.FileHelper;
import edu.berkeley.cs.nlp.ocular.util.Tuple2;
/**
* @author Taylor Berg-Kirkpatrick (tberg@eecs.berkeley.edu)
* @author Dan Garrette (dhgarrette@gmail.com)
*/
public class EvalPrinter {
public static void printEvaluation(List<Tuple2<String, Map<String, EvalSuffStats>>> allEvals, String outputPath) {
Map<String, EvalSuffStats> totalSuffStats = new HashMap<String, EvalSuffStats>();
StringBuffer buf = new StringBuffer();
buf.append("All evals:\n");
for (Tuple2<String, Map<String, EvalSuffStats>> docNameAndEvals : allEvals) {
String docName = docNameAndEvals._1;
Map<String, EvalSuffStats> evals = docNameAndEvals._2;
buf.append("Document: " + docName + "\n");
buf.append(Evaluator.renderEval(evals) + "\n");
for (String evalType : evals.keySet()) {
EvalSuffStats eval = evals.get(evalType);
EvalSuffStats totalEval = totalSuffStats.get(evalType);
if (totalEval == null) {
totalEval = new EvalSuffStats();
totalSuffStats.put(evalType, totalEval);
}
totalEval.increment(eval);
}
}
buf.append("\nMacro-avg total eval:\n");
buf.append(Evaluator.renderEval(totalSuffStats) + "\n");
FileHelper.writeString(outputPath, buf.toString());
System.out.println("\n" + outputPath);
System.out.println(buf.toString());
}
}