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()); } }