List of usage examples for edu.stanford.nlp.util SystemUtils run
public static void run(ProcessBuilder builder, Writer output, Writer error)
From source file:gr.aueb.cs.nlp.wordtagger.classifier.SVMWindows64Factory.java
License:Open Source License
public SVMLightClassifier<L, F> trainClassifierBasic(GeneralDataset<L, F> dataset) { Index<L> labelIndex = dataset.labelIndex(); Index<F> featureIndex = dataset.featureIndex; boolean multiclass = (dataset.numClasses() > 2); try {/*w w w.j a v a 2s.co m*/ // this is the file that the model will be saved to File modelFile = File.createTempFile("svm-", ".model"); if (deleteTempFilesOnExit) { modelFile.deleteOnExit(); } // this is the file that the svm light formated dataset // will be printed to File dataFile = File.createTempFile("svm-", ".data"); if (deleteTempFilesOnExit) { dataFile.deleteOnExit(); } // print the dataset PrintWriter pw = new PrintWriter(new FileWriter(dataFile)); dataset.printSVMLightFormat(pw); pw.close(); // -v 0 makes it not verbose // -m 400 gives it a larger cache, for faster training String cmd = (multiclass ? svmStructLearn : (useSVMPerf ? svmPerfLearn : svmLightLearn)) + " -v " + svmLightVerbosity + " -m 5000 -w 3 -t 0 -g 7 "; // set the value of C if we have one specified if (C > 0.0) cmd = cmd + " -c " + C + " "; // C value else if (useSVMPerf) cmd = cmd + " -c " + 0.01 + " "; //It's required to specify this parameter for SVM perf // Alpha File if (useAlphaFile) { File newAlphaFile = File.createTempFile("svm-", ".alphas"); if (deleteTempFilesOnExit) { newAlphaFile.deleteOnExit(); } cmd = cmd + " -a " + newAlphaFile.getAbsolutePath(); if (alphaFile != null) { cmd = cmd + " -y " + alphaFile.getAbsolutePath(); } alphaFile = newAlphaFile; } // File and Model Data cmd = cmd + " " + dataFile.getAbsolutePath() + " " + modelFile.getAbsolutePath(); if (verbose) System.err.println("<< " + cmd + " >>"); /*Process p = Runtime.getRuntime().exec(cmd); p.waitFor(); if (p.exitValue() != 0) throw new RuntimeException("Error Training SVM Light exit value: " + p.exitValue()); p.destroy(); */ SystemUtils.run(new ProcessBuilder(whitespacePattern.split(cmd)), new PrintWriter(System.err), new PrintWriter(System.err)); if (doEval) { File predictFile = File.createTempFile("svm-", ".pred"); if (deleteTempFilesOnExit) { predictFile.deleteOnExit(); } String evalCmd = (multiclass ? svmStructClassify : (useSVMPerf ? svmPerfClassify : svmLightClassify)) + " " + dataFile.getAbsolutePath() + " " + modelFile.getAbsolutePath() + " " + predictFile.getAbsolutePath(); if (verbose) System.err.println("<< " + evalCmd + " >>"); SystemUtils.run(new ProcessBuilder(whitespacePattern.split(evalCmd)), new PrintWriter(System.err), new PrintWriter(System.err)); } // read in the model file Pair<Double, ClassicCounter<Integer>> weightsAndThresh = readModel(modelFile, multiclass); double threshold = weightsAndThresh.first(); ClassicCounter<Pair<F, L>> weights = convertWeights(weightsAndThresh.second(), featureIndex, labelIndex, multiclass); ClassicCounter<L> thresholds = new ClassicCounter<L>(); if (!multiclass) { thresholds.setCount(labelIndex.get(0), -threshold); thresholds.setCount(labelIndex.get(1), threshold); } SVMLightClassifier<L, F> classifier = new SVMLightClassifier<L, F>(weights, thresholds); if (doEval) { File predictFile = File.createTempFile("svm-", ".pred2"); if (deleteTempFilesOnExit) { predictFile.deleteOnExit(); } PrintWriter pw2 = new PrintWriter(predictFile); NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(5); for (Datum<L, F> datum : dataset) { Counter<L> scores = classifier.scoresOf(datum); pw2.println(Counters.toString(scores, nf)); } pw2.close(); } if (useSigmoid) { if (verbose) System.out.print("fitting sigmoid..."); classifier.setPlatt(fitSigmoid(classifier, dataset)); if (verbose) System.out.println("done"); } return classifier; } catch (Exception e) { throw new RuntimeException(e); } }
From source file:knu.univ.lingvo.coref.SieveCoreferenceSystem.java
License:Open Source License
/** * Run and score coref distributed// w w w . j a va 2s . c o m */ public static void runAndScoreCorefDist(String runDistCmd, Properties props, String propsFile) throws Exception { PrintWriter pw = IOUtils.getPrintWriter(propsFile); props.store(pw, null); pw.close(); /* Run coref job in a distributed manner, score is written to file */ List<String> cmd = new ArrayList<String>(); cmd.addAll(Arrays.asList(runDistCmd.split("\\s+"))); cmd.add("-props"); cmd.add(propsFile); ProcessBuilder pb = new ProcessBuilder(cmd); // Copy environment variables over Map<String, String> curEnv = System.getenv(); Map<String, String> pbEnv = pb.environment(); pbEnv.putAll(curEnv); logger.info("Running distributed coref:" + StringUtils.join(pb.command(), " ")); StringWriter outSos = new StringWriter(); StringWriter errSos = new StringWriter(); PrintWriter out = new PrintWriter(new BufferedWriter(outSos)); PrintWriter err = new PrintWriter(new BufferedWriter(errSos)); SystemUtils.run(pb, out, err); out.close(); err.close(); String outStr = outSos.toString(); String errStr = errSos.toString(); logger.info("Finished distributed coref: " + runDistCmd + ", props=" + propsFile); logger.info("Output: " + outStr); if (errStr.length() > 0) { logger.info("Error: " + errStr); } }
From source file:knu.univ.lingvo.coref.SieveCoreferenceSystem.java
License:Open Source License
public static void runConllEval(String conllMentionEvalScript, String goldFile, String predictFile, String evalFile, String errFile) throws IOException { ProcessBuilder process = new ProcessBuilder(conllMentionEvalScript, "all", goldFile, predictFile); PrintWriter out = new PrintWriter(new FileOutputStream(evalFile)); PrintWriter err = new PrintWriter(new FileOutputStream(errFile)); SystemUtils.run(process, out, err); out.close();/*from w w w.j ava2 s.c o m*/ err.close(); }
From source file:knu.univ.lingvo.coref.SieveCoreferenceSystem.java
License:Open Source License
public static String getConllEvalSummary(String conllMentionEvalScript, String goldFile, String predictFile) throws IOException { ProcessBuilder process = new ProcessBuilder(conllMentionEvalScript, "all", goldFile, predictFile, "none"); StringOutputStream errSos = new StringOutputStream(); StringOutputStream outSos = new StringOutputStream(); PrintWriter out = new PrintWriter(outSos); PrintWriter err = new PrintWriter(errSos); SystemUtils.run(process, out, err); out.close();/*from ww w . j a v a2 s. com*/ err.close(); String summary = outSos.toString(); String errStr = errSos.toString(); if (!errStr.isEmpty()) { summary += "\nERROR: " + errStr; } Pattern pattern = Pattern.compile("\\d+\\.\\d\\d\\d+"); DecimalFormat df = new DecimalFormat("#.##"); Matcher matcher = pattern.matcher(summary); while (matcher.find()) { String number = matcher.group(); summary = summary.replaceFirst(number, df.format(Double.parseDouble(number))); } return summary; }
From source file:LVCoref.LVCoref.java
License:Open Source License
public static String getConllEvalSummary(String conllMentionEvalScript, String goldFile, String predictFile) throws IOException { if (conllMentionEvalScript == null) return ""; ProcessBuilder process = new ProcessBuilder(conllMentionEvalScript, "all", goldFile, predictFile, "none"); StringOutputStream errSos = new StringOutputStream(); StringOutputStream outSos = new StringOutputStream(); PrintWriter out = new PrintWriter(outSos); PrintWriter err = new PrintWriter(errSos); SystemUtils.run(process, out, err); out.close();/*from w w w . java 2 s . co m*/ err.close(); String summary = outSos.toString(); String errStr = errSos.toString(); if (errStr.length() > 0) { summary += "\nERROR: " + errStr; } return summary; }