1 package classification;
2
3 import java.io.Serializable;
4
5 import types.Alphabet;
6 import types.FeatureFunction;
7 import types.SparseVector;
8
9 public class CompleteFeatureFunction implements FeatureFunction, Serializable {
10
11 /*** this is the last feature for each y */
12 public int defalutFeatureIndex;
13 int numY;
14
15 private static final long serialVersionUID = 1L;
16
17 public CompleteFeatureFunction(Alphabet xAlphabet, Alphabet yAlphabet) {
18 xAlphabet.stopGrowth();
19 yAlphabet.stopGrowth();
20 numY = yAlphabet.size();
21 defalutFeatureIndex = xAlphabet.size();
22 }
23
24 public SparseVector apply(SparseVector x, int y) {
25 SparseVector res = new SparseVector();
26 for (int i = 0; i < x.numEntries(); i++) {
27 res.add(y * (defalutFeatureIndex + 1) + x.getIndexAt(i), x
28 .getValueAt(i));
29 }
30 res.add(y * (defalutFeatureIndex + 1) + defalutFeatureIndex, 1);
31 return res;
32 }
33
34 public int wSize() {
35 return numY * (defalutFeatureIndex + 1);
36 }
37
38 }