diff --git a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java index 073ef3152..eeec89de7 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java +++ b/opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java @@ -44,6 +44,7 @@ public LanguageDetectorEvaluationErrorListener() { */ public LanguageDetectorEvaluationErrorListener(OutputStream outputStream) { super(outputStream); + printStream.println("Expected\tPredicted\tContext"); } @Override @@ -51,4 +52,10 @@ public void missclassified(LanguageSample reference, LanguageSample prediction) printError(reference, prediction); } + @Override + protected void printError(LanguageSample referenceSample, LanguageSample predictedSample) { + printStream.println(String.join("\t", referenceSample.getLanguage().getLang(), + predictedSample.getLanguage().getLang(), + referenceSample.getContext())); + } } diff --git a/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java b/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java index 8bdd71bab..5e8b2eae4 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java @@ -17,11 +17,15 @@ package opennlp.tools.langdetect; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicInteger; import org.junit.Assert; import org.junit.Test; +import opennlp.tools.cmdline.langdetect.LanguageDetectorEvaluationErrorListener; + public class LanguageDetectorEvaluatorTest { @@ -33,6 +37,8 @@ public void processSample() throws Exception { final AtomicInteger correctCount = new AtomicInteger(); final AtomicInteger incorrectCount = new AtomicInteger(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator(langdetector, new LanguageDetectorEvaluationMonitor() { @Override @@ -46,7 +52,7 @@ public void missclassified(LanguageSample reference, LanguageSample prediction) { incorrectCount.incrementAndGet(); } - }); + }, new LanguageDetectorEvaluationErrorListener(outputStream)); evaluator.evaluateSample(new LanguageSample(new Language("pob"), "escreve e faz palestras pelo mundo inteiro sobre anjos")); @@ -63,6 +69,12 @@ public void missclassified(LanguageSample reference, Assert.assertEquals(3, evaluator.getDocumentCount()); Assert.assertEquals(0.33, evaluator.getAccuracy(), 0.01); + + String report = outputStream.toString(StandardCharsets.UTF_8.name()); + + Assert.assertEquals("Expected\tPredicted\tContext\n" + + "fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos\n" + + "fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos\n", report); } }