protected double semanticSimilarityVW( Counter<String> features, String prefix, Sentence candidate1, Sentence candidate2) { double[] v1 = embeddings.get(candidate1); double[] v2 = embeddings.get(candidate2); double sim = Util.WordEmbedding.dotProduct(v1, v2); // features.incrementCount(prefix + "semantic-similarity", 2*sim - 1); // to make it between // 0 and 1. return 2 * sim - 1; }
protected double semanticSimilarityVW( Counter<String> features, String prefix, NumericMention mention, Sentence candidate) { double[] v1 = embeddings.get(mention.sentence.get(), mention.token_begin, mention.token_end); double[] v2 = embeddings.get(candidate); double sim = Util.WordEmbedding.dotProduct(v1, v2); // double sim = // candidate.lemmas().stream() // .map(w -> embeddings.get(Collections.singletonList(w), 0, 1)) // .map(v2 -> Util.WordEmbedding.dotProduct(v1, v2)) // .max(Double::compare) // .get(); // features.incrementCount(prefix + "semantic-similarity", 2*sim - 1); // to make it between // 0 and 1. return 2 * sim - 1; }