You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by jo...@apache.org on 2011/07/12 16:32:28 UTC

svn commit: r1145608 - /incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java

Author: joern
Date: Tue Jul 12 14:32:27 2011
New Revision: 1145608

URL: http://svn.apache.org/viewvc?rev=1145608&view=rev
Log:
OPENNLP-199 Added config options to param file

Modified:
    incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java

Modified: incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java?rev=1145608&r1=1145607&r2=1145608&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java (original)
+++ incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/model/TrainUtil.java Tue Jul 12 14:32:27 2011
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
+import opennlp.perceptron.PerceptronTrainer;
 import opennlp.perceptron.SimplePerceptronSequenceTrainer;
 
 public class TrainUtil {
@@ -70,6 +71,17 @@ public class TrainUtil {
       return defaultValue;
   }
   
+  private static double getDoubleParam(Map<String, String> trainParams, String key,
+      double defaultValue, Map<String, String> reportMap) {
+    
+    String valueString = trainParams.get(key);
+    
+    if (valueString != null)
+      return Double.parseDouble(valueString);
+    else
+      return defaultValue;
+  }
+  
   private static boolean getBooleanParam(Map<String, String> trainParams, String key,
       boolean defaultValue, Map<String, String> reportMap) {
 
@@ -173,7 +185,25 @@ public class TrainUtil {
     else if (PERCEPTRON_VALUE.equals(algorithmName)) {
       boolean useAverage = getBooleanParam(trainParams, "UseAverage", true, reportMap);
       
-      model = new opennlp.perceptron.PerceptronTrainer().trainModel(
+      boolean useSkippedAveraging = getBooleanParam(trainParams, "UseSkippedAveraging", false, reportMap);
+      
+      // overwrite otherwise it might not work
+      if (useSkippedAveraging)
+        useAverage = true;
+      
+      double stepSizeDecrease = getDoubleParam(trainParams, "StepSizeDecrease", 0, reportMap);
+      
+      double tolerance = getDoubleParam(trainParams, "Tolerance", PerceptronTrainer.TOLERANCE_DEFAULT, reportMap);
+      
+      opennlp.perceptron.PerceptronTrainer perceptronTrainer = new opennlp.perceptron.PerceptronTrainer();
+      perceptronTrainer.setSkippedAveraging(useSkippedAveraging);
+      
+      if (stepSizeDecrease > 0)
+        perceptronTrainer.setStepSizeDecrease(stepSizeDecrease);
+      
+      perceptronTrainer.setTolerance(tolerance);
+      
+      model = perceptronTrainer.trainModel(
           iterations, indexer, cutoff, useAverage);
     }
     else {