![JAR search and dependency download from the Maven repository](/logo.png)
edu.berkeley.nlp.classify.FeatureManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of berkeleyparser Show documentation
Show all versions of berkeleyparser Show documentation
The Berkeley parser analyzes the grammatical structure of natural language using probabilistic context-free grammars (PCFGs).
The newest version!
package edu.berkeley.nlp.classify;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//import com.sun.javadoc.SerialFieldTag;
import edu.berkeley.nlp.util.Counter;
public class FeatureManager implements Serializable {
/**
*
*/
private static final long serialVersionUID = 42;
private transient Map featureInterner = new HashMap();
private transient List featureList = new ArrayList();
private boolean locked = false;
public void lock() {
this.locked = true;
}
public Feature getFeatrue(String pred, String val) {
return getFeature(pred+"="+val);
}
public void addFeature(String pred, String val) {
assert !locked;
addFeature(String.format("%s=%s",pred, val));
}
public void addFeature(String val) {
assert !locked;
getFeature(val);
}
public Feature getFeature(int index) {
return featureList.get(index);
}
public Feature getFeature(String val) {
Feature feat = new Feature(val, -1);
Feature canonicalFeat = featureInterner.get(feat);
if (canonicalFeat == null) {
assert !locked : "Can't find feature " + val + " in locked FeatureManager";
feat = new Feature(feat.toString(), featureInterner.size());
featureInterner.put(feat, feat);
featureList.add(feat);
canonicalFeat = feat;
}
return canonicalFeat;
}
public int getNumFeatures() {
return featureInterner.size();
}
public boolean hasFeature(String val) {
Feature feat = new Feature(val, -1);
return featureInterner.containsKey(feat);
}
public boolean isLocked() {
return locked;
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
out.writeObject(featureList.size());
for (Feature feat: featureList) {
out.writeObject(feat.toString());
}
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
{
in.defaultReadObject();
featureList = new ArrayList();
featureInterner = new HashMap();
boolean oldLocked = this.locked;
this.locked = false;
int numFeats = (Integer) in.readObject();
for (int i=0; i < numFeats; ++i) {
String f = (String) in.readObject();
addFeature(f);
}
this.locked = oldLocked;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy