You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by co...@apache.org on 2011/07/13 01:21:40 UTC
svn commit: r1145816 - in
/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools:
cmdline/postag/POSTaggerCrossValidatorTool.java
cmdline/postag/POSTaggerEvaluatorTool.java postag/POSEvaluator.java
postag/POSTaggerCrossValidator.java
Author: colen
Date: Tue Jul 12 23:21:40 2011
New Revision: 1145816
URL: http://svn.apache.org/viewvc?rev=1145816&view=rev
Log:
OPENNLP-220 Added printErrors to POS Tagger evaluation tools
Modified:
incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java
incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java
incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java
incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java
Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java?rev=1145816&r1=1145815&r2=1145816&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerCrossValidatorTool.java Tue Jul 12 23:21:40 2011
@@ -86,7 +86,7 @@ public final class POSTaggerCrossValidat
mlParams, tagdict, null);
}
- validator.evaluate(sampleStream, 10);
+ validator.evaluate(sampleStream, 10, params.getPrintErrors());
} catch (IOException e) {
CmdLineUtil.printTrainingIoError(e);
throw new TerminateToolException(-1);
Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java?rev=1145816&r1=1145815&r2=1145816&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/postag/POSTaggerEvaluatorTool.java Tue Jul 12 23:21:40 2011
@@ -65,7 +65,7 @@ public final class POSTaggerEvaluatorToo
POSModel model = new POSModelLoader().load(params.getModel());
POSEvaluator evaluator =
- new POSEvaluator(new opennlp.tools.postag.POSTaggerME(model));
+ new POSEvaluator(new opennlp.tools.postag.POSTaggerME(model), params.getPrintErrors());
System.out.print("Evaluating ... ");
Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java?rev=1145816&r1=1145815&r2=1145816&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSEvaluator.java Tue Jul 12 23:21:40 2011
@@ -38,6 +38,18 @@ public class POSEvaluator extends Evalua
* @param tagger
*/
public POSEvaluator(POSTagger tagger) {
+ super();
+ this.tagger = tagger;
+ }
+
+ /**
+ * Initializes the current instance.
+ *
+ * @param tagger
+ * @param printErrors
+ */
+ public POSEvaluator(POSTagger tagger, boolean printErrors) {
+ super(printErrors);
this.tagger = tagger;
}
@@ -53,9 +65,16 @@ public class POSEvaluator extends Evalua
public void evaluateSample(POSSample reference) {
String predictedTags[] = tagger.tag(reference.getSentence());
+ String referenceTags[] = reference.getTags();
+
+ if (isPrintError()) {
+ String[] sentence = reference.getSentence();
+ printErrors(referenceTags, predictedTags, reference, new POSSample(sentence,
+ predictedTags), sentence);
+ }
- for (int i = 0; i < reference.getTags().length; i++) {
- if (reference.getTags()[i].equals(predictedTags[i])) {
+ for (int i = 0; i < referenceTags.length; i++) {
+ if (referenceTags[i].equals(predictedTags[i])) {
wordAccuracy.add(1);
}
else {
Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java?rev=1145816&r1=1145815&r2=1145816&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerCrossValidator.java Tue Jul 12 23:21:40 2011
@@ -37,7 +37,7 @@ public class POSTaggerCrossValidator {
private POSDictionary tagDictionary;
private Dictionary ngramDictionary;
-
+
private Mean wordAccuracy = new Mean();
@@ -68,8 +68,36 @@ public class POSTaggerCrossValidator {
modelType = null;
}
+
+ /**
+ * Starts the evaluation.
+ *
+ * @param samples
+ * the data to train and test
+ * @param nFolds
+ * number of folds
+ *
+ * @throws IOException
+ */
public void evaluate(ObjectStream<POSSample> samples, int nFolds)
- throws IOException, IOException {
+ throws IOException, IOException {
+ evaluate(samples, nFolds, false);
+ }
+
+ /**
+ * Starts the evaluation.
+ *
+ * @param samples
+ * the data to train and test
+ * @param nFolds
+ * number of folds
+ * @param printErrors
+ * if true will print errors
+ *
+ * @throws IOException
+ */
+ public void evaluate(ObjectStream<POSSample> samples, int nFolds,
+ boolean printErrors) throws IOException, IOException {
CrossValidationPartitioner<POSSample> partitioner = new CrossValidationPartitioner<POSSample>(
samples, nFolds);
@@ -89,7 +117,7 @@ public class POSTaggerCrossValidator {
this.tagDictionary, this.ngramDictionary);
}
- POSEvaluator evaluator = new POSEvaluator(new POSTaggerME(model));
+ POSEvaluator evaluator = new POSEvaluator(new POSTaggerME(model), printErrors);
evaluator.evaluate(trainingSampleStream.getTestSampleStream());
wordAccuracy.add(evaluator.getWordAccuracy(), evaluator.getWordCount());