/** UnknownFeature.java * * @author Sunita Sarawagi * @version 1.3 */ package iitb.Model; import iitb.CRF.DataSequence; /** * * @author Sunita Sarawagi * */ public class UnknownFeature extends FeatureTypes { private static final long serialVersionUID = 6122L; int stateId; WordsInTrain dict; int numStates; public UnknownFeature(FeatureGenImpl m, WordsInTrain d) { this(m,d,true); } public UnknownFeature(FeatureGenImpl m, WordsInTrain d,boolean assignStateIds) { super(m); dict = d; if (assignStateIds) numStates = m.numStates(); else numStates=1; } public boolean startScanFeaturesAt(DataSequence data, int prevPos, int pos) { if (dict.count(data.x(pos)) > WordFeatures.RARE_THRESHOLD+1) { stateId = numStates; return false; } else { stateId = 0; return true; } } public boolean hasNext() { return (stateId < numStates); } public void next(FeatureImpl f) { setFeatureIdentifier(stateId,stateId,"U",f); f.yend = stateId; f.ystart = -1; f.val = 1; stateId++; } public int maxFeatureId() { return numStates; } };