@Override public double similarity(Long2DoubleMap vec1, Long2DoubleMap vec2) { return pearson.similarity(rank(vec1), rank(vec2)); }
@Override public boolean isSparse() { return delegate.isSparse(); }
@Override public boolean isSymmetric() { return delegate.isSymmetric(); }
@Override public double similarity(long u1, Long2DoubleMap v1, long u2, Long2DoubleMap v2) { return delegate.similarity(v1, v2); }
@Inject public SpearmanRankCorrelation(@SimilarityDamping double damping) { Preconditions.checkArgument(damping >= 0, "negative damping not allowed"); pearson = new PearsonCorrelation(damping); }
@Before public void setUp() { sim = new PearsonCorrelation(); }
@Test public void testEmptyDamped() { assertEquals(0, dampedSimilarity.similarity(emptyVector(), emptyVector()), EPSILON); }
/** * Construct a new cosine similarity function. * * @param damping The Bayesian damping term (added to denominator), to bias the * similarity towards 0 for low-cooccurance vectors. */ @Inject public CosineVectorSimilarity(@SimilarityDamping double damping) { Preconditions.checkArgument(damping >= 0, "negative damping not allowed"); dampingFactor = damping; }
@Inject public SignificanceWeightedVectorSimilarity(@SigWeightThreshold int thresh, VectorSimilarity sim) { threshold = thresh; delegate = sim; }
@Before public void setUp() throws Exception { similarity = new CosineVectorSimilarity(); dampedSimilarity = new CosineVectorSimilarity(10); }
@Test public void testDampedEqualKeys() { long[] keys = {2, 5, 6}; double[] val1 = {1, 2, 1}; double[] val2 = {1, 2, 5}; Long2DoubleMap v1 = Long2DoubleSortedArrayMap.wrapUnsorted(keys, val1); Long2DoubleMap v2 = Long2DoubleSortedArrayMap.wrapUnsorted(keys, val2); assertEquals(0.375, dampedSimilarity.similarity(v1, v1), EPSILON); assertEquals(0.42705098, dampedSimilarity.similarity(v1, v2), EPSILON); }
@Override public double similarity(long i1, Long2DoubleMap v1, long i2, Long2DoubleMap v2) { return delegate.similarity(v1, v2); }
@Override public boolean isSparse() { return delegate.isSparse(); }
@Override public boolean isSymmetric() { return delegate.isSymmetric(); }
@Test public void testEmpty() { assertEquals(0, similarity.similarity(emptyVector(), emptyVector()), EPSILON); }
@Inject public PearsonCorrelation(@SimilarityDamping double s) { Preconditions.checkArgument(s >= 0, "negative damping not allowed"); shrinkage = s; }
@Override public double similarity(long i1, Long2DoubleMap v1, long i2, Long2DoubleMap v2) { return delegate.similarity(v1, v2); }
@Override public boolean isSparse() { return delegate.isSparse(); }
@Override public boolean isSymmetric() { return delegate.isSymmetric(); }
@Override public boolean isSparse() { return delegate.isSparse(); }