featuretypeposition.java
来自「dragontoolkit用于机器学习」· Java 代码 · 共 79 行
JAVA
79 行
package dragon.ml.seqmodel.feature;import dragon.ml.seqmodel.data.*;/** * This can be used as a wrapper around a FeatureType class that wants to * generate features which take into account the normalized distance of the token to * the start of a segement. */public class FeatureTypePosition extends AbstractFeatureTypeWrapper { private Feature savedFeature; private boolean squareSent; private int segStart; private int segEnd; private int currPos; private transient DataSequence dataSeq; public FeatureTypePosition(FeatureType ftype) { super(ftype); } private void advance() { while (true) { if (ftype.hasNext()) return; currPos++; if (currPos > segEnd) return; ftype.startScanFeaturesAt(dataSeq,currPos, currPos); } } public boolean startScanFeaturesAt(DataSequence data, int pos) { return startScanFeaturesAt(data,pos,pos); }; public boolean startScanFeaturesAt(DataSequence data, int startPos, int endPos) { segStart = startPos; segEnd = endPos; currPos = startPos; squareSent=true; dataSeq = data; ftype.startScanFeaturesAt(data,startPos, startPos); advance(); return ftype.hasNext(); } public boolean hasNext() { return !squareSent || ((currPos <= segEnd) && ftype.hasNext()); } public Feature next() { FeatureIdentifier id; Feature f; if (!squareSent) { squareSent = true; // saved feature with value change to square. savedFeature.setValue(savedFeature.getValue()*savedFeature.getValue()); id=savedFeature.getID(); id.setName("POS^2" + id.getName()); id.setId(id.getId()*2+1); advance(); return savedFeature; } else { f=ftype.next(); f.setValue((currPos-segStart+1)/(segEnd-segStart+1)); //dataLen; savedFeature=f.copy(); squareSent = false; id=f.getID(); id.setName("POS_" + id.getName()); id.setId(id.getId()*2); return f; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?