package edu.stanford.nlp.parser.lexparser; import edu.stanford.nlp.util.logging.Redwood; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import edu.stanford.nlp.trees.Tree; public class EvalbFormatWriter { /** A logger for this class */ private static Redwood.RedwoodChannels log = Redwood.channels(EvalbFormatWriter.class); public final static String DEFAULT_GOLD_FILENAME = "parses.gld"; public final static String DEFAULT_TEST_FILENAME = "parses.tst"; private PrintWriter goldWriter; private PrintWriter testWriter; private int count = 0; private final static EvalbFormatWriter DEFAULT_WRITER = new EvalbFormatWriter(); public void initFiles(TreebankLangParserParams tlpParams, String goldFilename, String testFilename) { try { goldWriter = tlpParams.pw(new FileOutputStream(goldFilename)); testWriter = tlpParams.pw(new FileOutputStream(testFilename)); } catch (IOException e) { throw new RuntimeException(e); } count = 0; } public void initFiles(TreebankLangParserParams tlpParams, String testFilename) { try { goldWriter = null; testWriter = tlpParams.pw(new FileOutputStream(testFilename)); } catch (IOException e) { throw new RuntimeException(e); } count = 0; } public void writeTree(Tree test) { testWriter.println((test == null) ? "(())" : test.toString()); count++; // log.info("Wrote EVALB lines."); } public void writeTrees(Tree gold, Tree test) { goldWriter.println((gold == null) ? "(())" : gold.toString()); testWriter.println((test == null) ? "(())" : test.toString()); count++; // log.info("Wrote EVALB lines."); } public void closeFiles() { if (goldWriter != null) goldWriter.close(); if (testWriter != null) testWriter.close(); log.info("Wrote " + count + " EVALB lines."); } public static void initEVALBfiles(TreebankLangParserParams tlpParams) { DEFAULT_WRITER.initFiles(tlpParams, DEFAULT_GOLD_FILENAME, DEFAULT_TEST_FILENAME); } public static void closeEVALBfiles() { DEFAULT_WRITER.closeFiles(); } public static void writeEVALBline(Tree gold, Tree test) { DEFAULT_WRITER.writeTrees(gold, test); } }