我想衡量句子之间的相似度。我可以使用sklearn和欧几里得距离来衡量句子之间的语义相似度吗?我也读过余弦相似度。有人可以解释这些措施与标准措施之间的区别,什么是最佳使用方法?
答案 0 :(得分:2)
有多个选项可以计算语义相似度。这取决于您要实现什么以及要使用哪些资源。
您是说语义上的相似性,例如“船在海里游泳”与“船在湖上漂浮”相似吗?
单词嵌入(例如word2vec)会为每个单词创建向量。词向量位于向量空间中,以使“在语料库中共享公共上下文的词在空间中彼此紧邻”(Wikipedia)。
欧几里德或余弦距离会弄乱两个单词向量之间的距离。这通常被视为单词之间的语义相似性。要弄清句子之间的距离或相似度,可以使用移词器距离,该距离由gensim实现。推子距离通过使用一种称为推土器距离的东西来计算从一组单词向量(一个句子)到另一组单词向量的距离。
另一种计算句子相似度的方法是doc2vec。另请参阅:How to calculate the sentence similarity using word2vec model of gensim with python