@Shareable @ThreadSafe public class SignificanceWeightedVectorSimilarity extends java.lang.Object implements VectorSimilarity, java.io.Serializable
Apply significance weighting to a similarity function. The threshold is configured with the SigWeightThreshold
parameter.
Significance weighting decreases the similarity between two vectors when the number of common entities between the two vectors is low. For a threshold (S) and key sets (K_1) and (K_2), the similarity is multipled by [\frac{|K_1 \cap K_2|}{\mathrm{max}(|K_1 \cap K_2|, S)}]
SigWeightThreshold
,
Serialized FormConstructor and Description |
---|
SignificanceWeightedVectorSimilarity(int thresh,
VectorSimilarity sim) |
Modifier and Type | Method and Description |
---|---|
VectorSimilarity |
getDelegate()
Get the underlying similarity (for debuggin purposes).
|
boolean |
isSparse()
Query whether this similarity function is sparse (returns 0 for vectors with disjoint key sets).
|
boolean |
isSymmetric()
Query whether this similarity function is symmetric.
|
double |
similarity(Long2DoubleMap vec1,
Long2DoubleMap vec2)
Compute the similarity between two vectors.
|
java.lang.String |
toString() |
@Inject public SignificanceWeightedVectorSimilarity(@SigWeightThreshold int thresh, VectorSimilarity sim)
public VectorSimilarity getDelegate()
Get the underlying similarity (for debuggin purposes).
public double similarity(Long2DoubleMap vec1, Long2DoubleMap vec2)
VectorSimilarity
Compute the similarity between two vectors.
similarity
in interface VectorSimilarity
vec1
- The left vector to compare.vec2
- The right vector to compare.public boolean isSparse()
VectorSimilarity
Query whether this similarity function is sparse (returns 0 for vectors with disjoint key sets).
isSparse
in interface VectorSimilarity
true
iff VectorSimilarity.similarity(Long2DoubleMap, Long2DoubleMap)
will always return true when applied to two vectors with no keys in common.public boolean isSymmetric()
VectorSimilarity
Query whether this similarity function is symmetric. Symmetric similarity functions return the same result when called on (A,B) and (B,A).
isSymmetric
in interface VectorSimilarity
true
if the function is symmetric.public java.lang.String toString()
toString
in class java.lang.Object