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());