public static EvaluateDiscrete structuredCVal(StructuredCommaClassifier model, Parser parser, boolean useGoldFeatures, boolean testOnTrain) throws Exception { Comma.useGoldFeatures(useGoldFeatures); int k = 5; parser.reset(); FoldParser foldParser = new FoldParser(parser, k, SplitPolicy.sequential, 0, false); EvaluateDiscrete cvalResult = new EvaluateDiscrete(); for (int i = 0; i < k; foldParser.setPivot(++i)) { foldParser.setFromPivot(false); foldParser.reset(); LinkedHashSet<CommaSRLSentence> trainSentences = new LinkedHashSet<>(); for (Object comma = foldParser.next(); comma != null; comma = foldParser.next()) { trainSentences.add(((Comma) comma).getSentence()); } model.train(new ArrayList<>(trainSentences), null); if (!testOnTrain) foldParser.setFromPivot(true); foldParser.reset(); LinkedHashSet<CommaSRLSentence> testSentences = new LinkedHashSet<>(); for (Object comma = foldParser.next(); comma != null; comma = foldParser.next()) { testSentences.add(((Comma) comma).getSentence()); } EvaluateDiscrete evaluator = model.test(new ArrayList<>(testSentences), null); cvalResult.reportAll(evaluator); } cvalResult.printPerformance(System.out); return cvalResult; }
public static EvaluateDiscrete structuredCVal(StructuredCommaClassifier model, Parser parser, boolean useGoldFeatures, boolean testOnTrain) throws Exception { Comma.useGoldFeatures(useGoldFeatures); int k = 5; parser.reset(); FoldParser foldParser = new FoldParser(parser, k, SplitPolicy.sequential, 0, false); EvaluateDiscrete cvalResult = new EvaluateDiscrete(); for (int i = 0; i < k; foldParser.setPivot(++i)) { foldParser.setFromPivot(false); foldParser.reset(); LinkedHashSet<CommaSRLSentence> trainSentences = new LinkedHashSet<>(); for (Object comma = foldParser.next(); comma != null; comma = foldParser.next()) { trainSentences.add(((Comma) comma).getSentence()); } model.train(new ArrayList<>(trainSentences), null); if (!testOnTrain) foldParser.setFromPivot(true); foldParser.reset(); LinkedHashSet<CommaSRLSentence> testSentences = new LinkedHashSet<>(); for (Object comma = foldParser.next(); comma != null; comma = foldParser.next()) { testSentences.add(((Comma) comma).getSentence()); } EvaluateDiscrete evaluator = model.test(new ArrayList<>(testSentences), null); cvalResult.reportAll(evaluator); } cvalResult.printPerformance(System.out); return cvalResult; }