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/05/24 20:20:25 UTC

svn commit: r1127194 - in /incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron: PerceptronModel.java SimplePerceptronSequenceTrainer.java

Author: joern
Date: Tue May 24 18:20:24 2011
New Revision: 1127194

URL: http://svn.apache.org/viewvc?rev=1127194&view=rev
Log:
OPENNLP-185 Now uses only one instance of the pmap

Modified:
    incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/PerceptronModel.java
    incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/SimplePerceptronSequenceTrainer.java

Modified: incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/PerceptronModel.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/PerceptronModel.java?rev=1127194&r1=1127193&r2=1127194&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/PerceptronModel.java (original)
+++ incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/PerceptronModel.java Tue May 24 18:20:24 2011
@@ -28,9 +28,19 @@ import java.util.Map;
 import opennlp.model.AbstractModel;
 import opennlp.model.Context;
 import opennlp.model.EvalParameters;
+import opennlp.model.IndexHashTable;
 
 public class PerceptronModel extends AbstractModel {
 
+  public PerceptronModel(Context[] params, String[] predLabels, IndexHashTable<String> pmap, String[] outcomeNames) {
+    super(params,predLabels,pmap,outcomeNames);
+    modelType = ModelType.Perceptron;
+  }
+  
+  /**
+   * @deprecated use the constructor with the {@link IndexHashTable} instead!
+   */
+  @Deprecated
   public PerceptronModel(Context[] params, String[] predLabels, Map<String,Integer> pmap, String[] outcomeNames) {
     super(params,predLabels,outcomeNames);
     modelType = ModelType.Perceptron;

Modified: incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/SimplePerceptronSequenceTrainer.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/SimplePerceptronSequenceTrainer.java?rev=1127194&r1=1127193&r2=1127194&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/SimplePerceptronSequenceTrainer.java (original)
+++ incubator/opennlp/trunk/opennlp-maxent/src/main/java/opennlp/perceptron/SimplePerceptronSequenceTrainer.java Tue May 24 18:20:24 2011
@@ -26,11 +26,13 @@ import java.util.Map;
 import opennlp.model.AbstractModel;
 import opennlp.model.DataIndexer;
 import opennlp.model.Event;
+import opennlp.model.IndexHashTable;
 import opennlp.model.MutableContext;
 import opennlp.model.OnePassDataIndexer;
 import opennlp.model.Sequence;
 import opennlp.model.SequenceStream;
 import opennlp.model.SequenceStreamEventStream;
+import opennlp.model.TwoPassDataIndexer;
 
 /**
  * Trains models for sequences using the perceptron algorithm.  Each outcome is represented as
@@ -64,7 +66,7 @@ public class SimplePerceptronSequenceTra
   private MutableContext[] averageParams;
   
   /** Mapping between context and an integer */ 
-  private Map<String,Integer> pmap;
+  private IndexHashTable<String> pmap;
 
   private Map<String,Integer> omap;
   
@@ -90,10 +92,8 @@ public class SimplePerceptronSequenceTra
     }
     outcomeList  = di.getOutcomeList();
     predLabels = di.getPredLabels();
-    pmap = new HashMap<String,Integer>();
-    for (int pli=0;pli<predLabels.length;pli++) {
-      pmap.put(predLabels[pli], pli);
-    }
+    pmap = new IndexHashTable<String>(predLabels, 0.7d);
+      
     display("Incorporating indexed data for training...  \n");
     this.useAverage = useAverage;
     numEvents = di.getNumEvents();
@@ -257,8 +257,8 @@ public class SimplePerceptronSequenceTra
         }
         for (int oi=0;oi<numOutcomes;oi++) {
           for (String feature : featureCounts[oi].keySet()) {
-            Integer pi = pmap.get(feature);
-            if (pi != null) {
+            int pi = pmap.get(feature);
+            if (pi != -1) {
               //System.err.println(si+" "+outcomeLabels[oi]+" "+feature+" "+featureCounts[oi].get(feature));
               params[pi].updateParameter(oi, featureCounts[oi].get(feature));
               if (useAverage) {