Skip to content

Commit f82b5b5

Browse files
committed
OPENNLP-1125: Change misclassified report layout for LanguageDetector
1 parent c2c14e9 commit f82b5b5

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

opennlp-tools/src/main/java/opennlp/tools/cmdline/langdetect/LanguageDetectorEvaluationErrorListener.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,18 @@ public LanguageDetectorEvaluationErrorListener() {
4444
*/
4545
public LanguageDetectorEvaluationErrorListener(OutputStream outputStream) {
4646
super(outputStream);
47+
printStream.println("Expected\tPredicted\tContext");
4748
}
4849

4950
@Override
5051
public void missclassified(LanguageSample reference, LanguageSample prediction) {
5152
printError(reference, prediction);
5253
}
5354

55+
@Override
56+
protected void printError(LanguageSample referenceSample, LanguageSample predictedSample) {
57+
printStream.println(String.join("\t", referenceSample.getLanguage().getLang(),
58+
predictedSample.getLanguage().getLang(),
59+
referenceSample.getContext()));
60+
}
5461
}

opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageDetectorEvaluatorTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@
1717

1818
package opennlp.tools.langdetect;
1919

20+
import java.io.ByteArrayOutputStream;
21+
import java.nio.charset.StandardCharsets;
2022
import java.util.concurrent.atomic.AtomicInteger;
2123

2224
import org.junit.Assert;
2325
import org.junit.Test;
2426

27+
import opennlp.tools.cmdline.langdetect.LanguageDetectorEvaluationErrorListener;
28+
2529

2630
public class LanguageDetectorEvaluatorTest {
2731

@@ -33,6 +37,8 @@ public void processSample() throws Exception {
3337
final AtomicInteger correctCount = new AtomicInteger();
3438
final AtomicInteger incorrectCount = new AtomicInteger();
3539

40+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
41+
3642
LanguageDetectorEvaluator evaluator = new LanguageDetectorEvaluator(langdetector,
3743
new LanguageDetectorEvaluationMonitor() {
3844
@Override
@@ -46,7 +52,7 @@ public void missclassified(LanguageSample reference,
4652
LanguageSample prediction) {
4753
incorrectCount.incrementAndGet();
4854
}
49-
});
55+
}, new LanguageDetectorEvaluationErrorListener(outputStream));
5056

5157
evaluator.evaluateSample(new LanguageSample(new Language("pob"),
5258
"escreve e faz palestras pelo mundo inteiro sobre anjos"));
@@ -63,6 +69,12 @@ public void missclassified(LanguageSample reference,
6369

6470
Assert.assertEquals(3, evaluator.getDocumentCount());
6571
Assert.assertEquals(0.33, evaluator.getAccuracy(), 0.01);
72+
73+
String report = outputStream.toString(StandardCharsets.UTF_8.name());
74+
75+
Assert.assertEquals("Expected\tPredicted\tContext\n" +
76+
"fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos\n" +
77+
"fra\tpob\tescreve e faz palestras pelo mundo inteiro sobre anjos\n", report);
6678
}
6779

6880
}

0 commit comments

Comments
 (0)