/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2007 University of Texas at Austin and (C) 2005 // University of Pennsylvania and Copyright (C) 2002, 2003 University // of Massachusetts Amherst, Department of Computer Science. // // This software is licensed under the terms of the Common Public // License, Version 1.0 or (at your option) any subsequent version. // // The license is approved by the Open Source Initiative, and is // available from their website at http://www.opensource.org. /////////////////////////////////////////////////////////////////////////////// package mstparser; import java.io.File; /** * Hold all the options for the parser so they can be passed around easily. * * <p> * Created: Sat Nov 10 15:25:10 2001 * </p> * * @author Jason Baldridge * @version $Id: CONLLReader.java 103 2007-01-21 20:26:39Z jasonbaldridge $ * @see mstparser.io.DependencyReader */ public final class ParserOptions { public String trainfile = null; public String testfile = null; public File trainforest = null; public File testforest = null; public boolean train = false; public boolean eval = false; public boolean test = false; public String modelName = "dep.model"; public String lossType = "punc"; public boolean createForest = true; public String decodeType = "proj"; public String format = "CONLL"; public int numIters = 10; public String outfile = "out.txt"; public String goldfile = null; public int trainK = 1; public int testK = 1; public boolean secondOrder = false; public boolean useRelationalFeatures = false; public boolean discourseMode = false; public ParserOptions (String[] args) { for(int i = 0; i < args.length; i++) { String[] pair = args[i].split(":"); if (pair[0].equals("train")) { train = true; } if (pair[0].equals("eval")) { eval = true; } if (pair[0].equals("test")) { test = true; } if (pair[0].equals("iters")) { numIters = Integer.parseInt(pair[1]); } if (pair[0].equals("output-file")) { outfile = pair[1]; } if (pair[0].equals("gold-file")) { goldfile = pair[1]; } if (pair[0].equals("train-file")) { trainfile = pair[1]; } if (pair[0].equals("test-file")) { testfile = pair[1]; } if (pair[0].equals("model-name")) { modelName = pair[1]; } if (pair[0].equals("training-k")) { trainK = Integer.parseInt(pair[1]); } if (pair[0].equals("loss-type")) { lossType = pair[1]; } if (pair[0].equals("order") && pair[1].equals("2")) { secondOrder = true; } if (pair[0].equals("create-forest")) { createForest = pair[1].equals("true") ? true : false; } if (pair[0].equals("decode-type")) { decodeType = pair[1]; } if (pair[0].equals("format")) { format = pair[1]; } if (pair[0].equals("relational-features")) { useRelationalFeatures = pair[1].equals("true") ? true : false; } if (pair[0].equals("discourse-mode")) { discourseMode = pair[1].equals("true") ? true : false; } } try { File tmpDir = new File("/tmp"); if (null != trainfile) { trainforest = File.createTempFile("train", ".forest"); trainforest.deleteOnExit(); } if (null != testfile) { testforest = File.createTempFile("test", ".forest"); testforest.deleteOnExit(); } } catch (java.io.IOException e) { System.out.println("Unable to create tmp files for feature forests!"); System.out.println(e); System.exit(0); } } public String toString () { StringBuilder sb = new StringBuilder(); sb.append("FLAGS ["); sb.append("train-file: " + trainfile); sb.append(" | "); sb.append("test-file: " + testfile); sb.append(" | "); sb.append("gold-file: " + goldfile); sb.append(" | "); sb.append("output-file: " + outfile); sb.append(" | "); sb.append("model-name: " + modelName); sb.append(" | "); sb.append("train: " + train); sb.append(" | "); sb.append("test: " + test); sb.append(" | "); sb.append("eval: " + eval); sb.append(" | "); sb.append("loss-type: " + lossType); sb.append(" | "); sb.append("second-order: " + secondOrder); sb.append(" | "); sb.append("training-iterations: " + numIters); sb.append(" | "); sb.append("training-k: " + trainK); sb.append(" | "); sb.append("decode-type: " + decodeType); sb.append(" | "); sb.append("create-forest: " + createForest); sb.append(" | "); sb.append("format: " + format); sb.append(" | "); sb.append("relational-features: " + useRelationalFeatures); sb.append(" | "); sb.append("discourse-mode: " + discourseMode); sb.append("]\n"); return sb.toString(); } }