给定单词相似度推断句子相似度
Posted
技术标签:
【中文标题】给定单词相似度推断句子相似度【英文标题】:Extrapolate Sentence Similarity Given Word Similarities 【发布时间】:2015-03-25 15:26:22 【问题描述】:假设我对两个句子中的每对单词都有一个单词相似度分数,那么根据这些分数确定整体句子相似度的合适方法是什么?
单词分数是使用代表每个单词的向量的余弦相似度计算的。
现在我有了单个单词的分数,将单个单词的分数相加然后除以两个句子的总字数来得到两个句子的分数是不是太天真了?
我已经阅读了有关进一步构建向量来表示句子的信息,使用单词分数,然后再次使用余弦相似度来比较句子。但是我不熟悉如何从现有的单词分数中构造句子向量。我也不知道与上面描述的天真的方法相比,权衡是什么,至少我可以很容易地理解。 :)。
非常感谢任何见解。
谢谢。
【问题讨论】:
每对单词,你是指句子A中的word1与句子B中的word1相比,然后将A中的word2与B中的word2进行比较,等等?或者是句子 A 中的 word1 与句子 B 中的每个单词相比。那么句子 A 中的 word2 也是如此,等等?你是对所有单词都这样做,还是去掉停用词,还是只对名词这样做? 我用所有的词来做。所以 S1 的计数 x S2 的计数就是比较的总数。 【参考方案1】:我最终做的是取每组向量的平均值,然后对这两个平均值应用余弦相似度,从而得到句子的分数。
我不确定这种方法在数学上有多合理,但我已经在其他地方看到过它(比如 python 的 gensim)。
【讨论】:
【参考方案2】:单词最好使用contextual word embeddings(向量表示)。
这是一种通过成对单词相似度来判断句子相似度的方法:BERTScore。
你可以检查数学here。
【讨论】:
以上是关于给定单词相似度推断句子相似度的主要内容,如果未能解决你的问题,请参考以下文章
Java之词义相似度计算(语义识别词语情感趋势词林相似度拼音相似度概念相似度字面相似度)