如何使用Gensim的word2vec模型和python计算句子相似度
根据Gensim
Word2Vec,我可以使用gensim包中的word2vec模型来计算2个单词之间的相似度。
例如
trained_model.similarity('woman', 'man')
0.73723527
但是,word2vec模型无法预测句子相似度。我在gensim中发现了具有句子相似性的LSI模型,但是似乎无法与word2vec模型结合使用。我拥有的每个句子的语料库长度不是很长(少于10个字)。那么,有没有简单的方法可以达到目标呢?
-
这实际上是您要问的一个非常具有挑战性的问题。计算句子相似度需要建立句子的语法模型,理解等效结构(例如“昨天他去商店”和“昨天他去商店”),不仅要在代词和动词上找到相似性,还要在句子中找到相似性。专有名词,在许多真实的文本示例中找到统计共现/关系,等等。
您可以尝试的最简单的方法-尽管我不知道这样做的效果如何,并且肯定不会给您带来最佳效果-首先删除所有“停止”字词(例如“ the”,“
an”等等),然后对两个句子中的单词运行word2vec,将一个句子中的向量求和,将另一个句子中的向量求和,然后找出两者之间的区别总和。通过对它们进行汇总,而不是逐字逐句地进行区别,您至少不会受单词顺序的约束。话虽这么说,但这将以多种方式失败,而且无论如何都不是一个好的解决方案(尽管对这个问题的好的解决方案几乎总是涉及一定数量的NLP,机器学习和其他聪明才智)。因此,简短的答案是,不,没有简单的方法可以做到这一点(至少不能很好地做到这一点)。