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) {