protected void semanticCrossFeatures( Counter<String> features, String prefix, NumericMention mention, Sentence str2) { double[] vec1 = embeddings.get(mention.sentence.get(), mention.token_begin, mention.token_end); double[] vec2 = embeddings.get(str2); for (int i = 0; i < vec1.length; i++) features.incrementCount(prefix + "wv-" + i, vec1[i] - vec2[i]); }
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; }
protected void semanticCrossFeatures( Counter<String> features, String prefix, Sentence str1, Sentence str2) { double[] vec1 = embeddings.get(str1); double[] vec2 = embeddings.get(str2); for (int i = 0; i < vec1.length; i++) features.incrementCount(prefix + "wv-" + i, vec1[i] - vec2[i]); }
protected void semanticFeatures(Counter<String> features, String prefix, NumericMention mention) { double[] vec = embeddings.get(mention.sentence.get(), mention.token_begin, mention.token_end); for (int i = 0; i < vec.length; i++) features.incrementCount(prefix + "wv-" + i, vec[i]); }
protected void semanticFeatures(Counter<String> features, String prefix, Sentence str) { double[] vec = embeddings.get(str); for (int i = 0; i < vec.length; i++) features.incrementCount(prefix + "wv-" + i, vec[i]); }