@Override public double evaluate(double[] x) { double score; // initialized below setValues(x); if (getCmd() != null) { evaluateCmd(getCmd()); score = interpretCmdOutput(); } else { try { // TODO: Classify in memory instead of writing to tmp file File f = File.createTempFile("CRFClassifierEvaluator","txt"); f.deleteOnExit(); OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(f)); PrintWriter pw = IOUtils.encodedOutputStreamPrintWriter(outputStream, null, true); classifier.classifyAndWriteAnswers(data, featurizedData, pw, classifier.makeReaderAndWriter()); outputStream.close(); BufferedReader br = new BufferedReader(new FileReader(f)); MultiClassChunkEvalStats stats = new MultiClassChunkEvalStats("O"); score = stats.score(br, "\t"); log.info(stats.getConllEvalString()); f.delete(); } catch (Exception ex) { throw new RuntimeException(ex); } } return score; }
@Override protected void addGuess(String guess, String trueLabel, boolean addUnknownLabels) { LabeledChunkIdentifier.LabelTagType guessTagType = chunker.getTagType(guess); LabeledChunkIdentifier.LabelTagType correctTagType = chunker.getTagType(trueLabel); addGuess(guessTagType, correctTagType, addUnknownLabels); }
stats = new MultiClassStringLabelStats(backgroundLabel); } else { MultiClassChunkEvalStats mstats = new MultiClassChunkEvalStats(backgroundLabel); mstats.getChunker().setDefaultPosTag(defaultPosTag); mstats.getChunker().setIgnoreProvidedTag(ignoreProvidedTag); stats = mstats;
@Override protected void markBoundary() { if (inCorrect) { inCorrect=false; correctGuesses.incrementCount(getTypeLabel(prevCorrect)); } prevGuess = null; prevCorrect = null; }
@Override public String getConllEvalString() { return getConllEvalString(true); }
@Override protected void finalizeCounts() { markBoundary(); super.finalizeCounts(); }
labelIndex = new HashIndex<>(); labelIndex.add(getTypeLabel(guess)); labelIndex.add(getTypeLabel(correct)); if (prevCorrectEnded && prevGuessEnded && prevGuess.typeMatches(prevCorrect)) { inCorrect=false; correctGuesses.incrementCount(getTypeLabel(prevCorrect)); } else if (prevCorrectEnded != prevGuessEnded || !guess.typeMatches(correct)) { inCorrect=false; foundCorrect.incrementCount(getTypeLabel(correct)); foundGuessed.incrementCount(getTypeLabel(guess));
@Override public String getConllEvalString() { return getConllEvalString(true); }
protected void finalizeCounts() { markBoundary(); super.finalizeCounts(); }
public double evaluate(double[] x) { double score = 0; setValues(x); if (getCmd() != null) { evaluateCmd(getCmd()); } else { try { // TODO: Classify in memory instead of writing to tmp file File f = File.createTempFile("CRFClassifierEvaluator","txt"); f.deleteOnExit(); OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(f)); classifier.classifyAndWriteAnswers(data, featurizedData, outputStream, classifier.makeReaderAndWriter()); outputStream.close(); BufferedReader br = new BufferedReader(new FileReader(f)); MultiClassChunkEvalStats stats = new MultiClassChunkEvalStats("O"); score = stats.score(br, "\t"); System.err.println(stats.getConllEvalString()); f.delete(); } catch (Exception ex) { throw new RuntimeException(ex); } } return score; }
stats = new MultiClassStringLabelStats(backgroundLabel); } else { MultiClassChunkEvalStats mstats = new MultiClassChunkEvalStats(backgroundLabel); mstats.getChunker().setDefaultPosTag(defaultPosTag); mstats.getChunker().setIgnoreProvidedTag(ignoreProvidedTag); stats = mstats;
protected void markBoundary() { if (inCorrect) { inCorrect=false; correctGuesses.incrementCount(getTypeLabel(prevCorrect)); } prevGuess = null; prevCorrect = null; }
public String getConllEvalString() { return getConllEvalString(true); }
protected void addGuess(String guess, String trueLabel, boolean addUnknownLabels) { LabeledChunkIdentifier.LabelTagType guessTagType = chunker.getTagType(guess); LabeledChunkIdentifier.LabelTagType correctTagType = chunker.getTagType(trueLabel); addGuess(guessTagType, correctTagType, addUnknownLabels); }
protected void finalizeCounts() { markBoundary(); super.finalizeCounts(); }
public double evaluate(double[] x) { double score = 0; setValues(x); if (getCmd() != null) { evaluateCmd(getCmd()); score = interpretCmdOutput(); } else { try { // TODO: Classify in memory instead of writing to tmp file File f = File.createTempFile("CRFClassifierEvaluator","txt"); f.deleteOnExit(); OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(f)); PrintWriter pw = IOUtils.encodedOutputStreamPrintWriter(outputStream, null, true); classifier.classifyAndWriteAnswers(data, featurizedData, pw, classifier.makeReaderAndWriter()); outputStream.close(); BufferedReader br = new BufferedReader(new FileReader(f)); MultiClassChunkEvalStats stats = new MultiClassChunkEvalStats("O"); score = stats.score(br, "\t"); System.err.println(stats.getConllEvalString()); f.delete(); } catch (Exception ex) { throw new RuntimeException(ex); } } return score; }
stats = new MultiClassStringLabelStats(backgroundLabel); } else { MultiClassChunkEvalStats mstats = new MultiClassChunkEvalStats(backgroundLabel); mstats.getChunker().setDefaultPosTag(defaultPosTag); mstats.getChunker().setIgnoreProvidedTag(ignoreProvidedTag); stats = mstats;
@Override protected void markBoundary() { if (inCorrect) { inCorrect=false; correctGuesses.incrementCount(getTypeLabel(prevCorrect)); } prevGuess = null; prevCorrect = null; }
public String getConllEvalString() { return getConllEvalString(true); }
@Override protected void addGuess(String guess, String trueLabel, boolean addUnknownLabels) { LabeledChunkIdentifier.LabelTagType guessTagType = chunker.getTagType(guess); LabeledChunkIdentifier.LabelTagType correctTagType = chunker.getTagType(trueLabel); addGuess(guessTagType, correctTagType, addUnknownLabels); }