package edu.stanford.nlp.trees.international.negra; import java.io.*; import edu.stanford.nlp.io.IOUtils; import edu.stanford.nlp.trees.LabeledScoredTreeFactory; import edu.stanford.nlp.trees.PennTreeReader; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.trees.TreeReader; import edu.stanford.nlp.trees.TreeReaderFactory; import edu.stanford.nlp.trees.TreebankLanguagePack; /** A TreeReaderFactory for the Negra and Tiger treebanks in their * Penn Treebank compatible export format. * * @author Roger Levy */ public class NegraPennTreeReaderFactory implements TreeReaderFactory, Serializable { private static final long serialVersionUID = 5731352106152470304L; private final int nodeCleanup; // = 0; private final TreebankLanguagePack tlp; private final boolean treeNormalizerInsertNPinPP; // = false; public NegraPennTreeReaderFactory() { this(2, false, true, new NegraPennLanguagePack()); } public NegraPennTreeReaderFactory(TreebankLanguagePack tlp) { this(0, false, false, tlp); } public NegraPennTreeReaderFactory(int nodeCleanup, boolean treeNormalizerInsertNPinPP, boolean treeNormalizerLeaveGF, TreebankLanguagePack tlp) { this.nodeCleanup = nodeCleanup; this.treeNormalizerInsertNPinPP = treeNormalizerInsertNPinPP; this.tlp = tlp; } @Override public TreeReader newTreeReader(Reader in) { final NegraPennTreeNormalizer tn = new NegraPennTreeNormalizer(tlp, nodeCleanup); if (treeNormalizerInsertNPinPP) tn.setInsertNPinPP(true); return new PennTreeReader(in, new LabeledScoredTreeFactory(), tn, new NegraPennTokenizer(in)); } /** * * @param args File to run on */ public static void main(String[] args) { if(args.length < 1) { System.out.printf("Usage: java %s tree_file%n", NegraPennTreeReaderFactory.class.getName()); return; } TreebankLanguagePack tlp = new NegraPennLanguagePack(); TreeReaderFactory trf = new NegraPennTreeReaderFactory(2,false,false,tlp); try { TreeReader tr = trf.newTreeReader(IOUtils.readerFromString(args[0], tlp.getEncoding())); for (Tree t; (t = tr.readTree()) != null; ) { t.pennPrint(); } tr.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }