@Override protected double getWeight(byte[] originalForm, double w) { return w * weight(originalForm); }
@Test public void testDynamicWeights() { FeatureVectorEncoder enc = new AdaptiveWordValueEncoder("word"); Vector v = new DenseVector(200); enc.addToVector("word1", v); // weight is log(2/1.5) enc.addToVector("word2", v); // weight is log(3.5 / 1.5) enc.addToVector("word1", v); // weight is log(4.5 / 2.5) (but overlays on first value) enc.addToVector("word3", v); // weight is log(6 / 1.5) Iterator<Vector.Element> i = v.nonZeroes().iterator(); Iterator<Integer> j = ImmutableList.of(7, 101, 118, 119, 152, 199).iterator(); Iterator<Double> k = ImmutableList.of(Math.log(2 / 1.5) + Math.log(4.5 / 2.5), Math.log(6 / 1.5), Math.log(3.5 / 1.5), Math.log(3.5 / 1.5), Math.log(6 / 1.5), Math.log(2 / 1.5) + Math.log(4.5 / 2.5)).iterator(); while (i.hasNext()) { Vector.Element element = i.next(); assertEquals(j.next().intValue(), element.index()); assertEquals(k.next(), element.get(), 1.0e-6); } assertFalse(j.hasNext()); } }
@Override protected double getWeight(byte[] originalForm, double w) { return w * weight(originalForm); }
@Override protected double getWeight(byte[] originalForm, double w) { return w * weight(originalForm); }