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:16:50 UTC

svn commit: r1145813 - in /incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools: cmdline/sentdetect/ sentdetect/

Author: colen
Date: Tue Jul 12 23:16:50 2011
New Revision: 1145813

URL: http://svn.apache.org/viewvc?rev=1145813&view=rev
Log:
OPENNLP-220 Added printError to SentenceDetector evaluation tools

Modified:
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java?rev=1145813&r1=1145812&r2=1145813&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorCrossValidatorTool.java Tue Jul 12 23:16:50 2011
@@ -76,7 +76,7 @@ public final class SentenceDetectorCross
     }
     
     try {
-      validator.evaluate(sampleStream, 10);
+      validator.evaluate(sampleStream, 10, params.getPrintErrors());
     }
     catch (IOException e) {
       CmdLineUtil.printTrainingIoError(e);

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java?rev=1145813&r1=1145812&r2=1145813&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/sentdetect/SentenceDetectorEvaluatorTool.java Tue Jul 12 23:16:50 2011
@@ -62,8 +62,8 @@ public final class SentenceDetectorEvalu
     File trainingDataInFile = params.getData();
     CmdLineUtil.checkInputFile("Training Data", trainingDataInFile);
     
-    opennlp.tools.sentdetect.SentenceDetectorEvaluator evaluator = 
-        new opennlp.tools.sentdetect.SentenceDetectorEvaluator(new SentenceDetectorME(model));
+    opennlp.tools.sentdetect.SentenceDetectorEvaluator evaluator = new opennlp.tools.sentdetect.SentenceDetectorEvaluator(
+        new SentenceDetectorME(model), params.getPrintErrors());
     
     System.out.print("Evaluating ... ");
       ObjectStream<SentenceSample> sampleStream = SentenceDetectorTrainerTool.openSampleData("Test",

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java?rev=1145813&r1=1145812&r2=1145813&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SDCrossValidator.java Tue Jul 12 23:16:50 2011
@@ -58,8 +58,36 @@ public class SDCrossValidator {
     this(languageCode, 5, 100);
   }
   
-  public void evaluate(ObjectStream<SentenceSample> samples, int nFolds) throws IOException {
-    
+  /**
+   * Starts the evaluation.
+   * 
+   * @param samples
+   *          the data to train and test
+   * @param nFolds
+   *          number of folds
+   * 
+   * @throws IOException
+   */
+  public void evaluate(ObjectStream<SentenceSample> samples, int nFolds)
+      throws 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<SentenceSample> samples, int nFolds,
+      boolean printErrors) throws IOException {
+
     CrossValidationPartitioner<SentenceSample> partitioner = 
         new CrossValidationPartitioner<SentenceSample>(samples, nFolds);
     
@@ -79,7 +107,7 @@ public class SDCrossValidator {
       
       // do testing
       SentenceDetectorEvaluator evaluator = new SentenceDetectorEvaluator(
-          new SentenceDetectorME(model));
+          new SentenceDetectorME(model), printErrors);
 
       evaluator.evaluate(trainingSampleStream.getTestSampleStream());
       

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java?rev=1145813&r1=1145812&r2=1145813&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorEvaluator.java Tue Jul 12 23:16:50 2011
@@ -43,16 +43,34 @@ public class SentenceDetectorEvaluator e
    * Initializes the current instance.
    *
    * @param sentenceDetector
+   * @param isPrintErrors if should print false positives and negatives
+   */
+  public SentenceDetectorEvaluator(SentenceDetector sentenceDetector, boolean isPrintErrors) {
+    super(isPrintErrors);
+    this.sentenceDetector = sentenceDetector;
+  }
+  
+  /**
+   * Initializes the current instance.
+   *
+   * @param sentenceDetector
    */
   public SentenceDetectorEvaluator(SentenceDetector sentenceDetector) {
+    super();
     this.sentenceDetector = sentenceDetector;
   }
 
   public void evaluateSample(SentenceSample sample) {
 
-    Span starts[] = sentenceDetector.sentPosDetect(sample.getDocument());
+    Span predictions[] = sentenceDetector.sentPosDetect(sample.getDocument());
+    Span[] references = sample.getSentences();
+    if (isPrintError()) {
+      String doc = sample.getDocument();
+      printErrors(references, predictions, sample, new SentenceSample(doc,
+          predictions), doc);
+    }
 
-    fmeasure.updateScores(sample.getSentences(), starts);
+    fmeasure.updateScores(references, predictions);
   }
   
   public FMeasure getFMeasure() {