Word2Vec Python 相似度

4

我使用了以下代码制作了一个词嵌入:

with open("text.txt",'r') as longFile:
        sentences = []
        single= []
        for line in longFile:
            for word in line.split(" "):
                single.append(word)
            sentences.append(single)
    model = Word2Vec(sentences,workers=4, window=5)

我现在想计算两个词语之间的相似度,并查看它们的邻居。 model["word"]model.wv.most_similar()model.similar_by_vector()model.similarity()有什么区别? 我应该使用哪一个?

1个回答

3

编辑:也许我们应该在这里标记gensim,因为它是我们使用的库。

如果您想找到两者的邻居,则可以使用model.wv.most_similar(),这将为每个单词和其相似性提供一个字典(前n个),给定一个字符串(单词)。此方法将计算单词向量之间的余弦相似度。

请注意,您提到的其他方法在3.4.0中已弃用,请改用model.wv.similarity()model.wv.similar_by_vector()

您还可以使用model.wv.similar_by_vector()通过传递向量来完成完全相同的操作。例如,model ["woman"]将为您提供这样的向量。实际上,如果您查看实现,所有方法都会调用most_similar()

def similar_by_vector(self, vector, topn=10, restrict_vocab=None):
   return self.most_similar(positive=[vector], topn=topn, restrict_vocab=restrict_vocab)

同样适用于similar_by_word()方法。其实,我不知道这些方法为什么存在。
要在两个单词之间找到相似度度量,您可以使用model.wv.similarity()来查找余弦相似度,或者使用model.wv.distance()来查找两者之间的余弦距离。
回答您的实际问题,我会简单地计算两者之间的相似度,而不是比较most_similar()的结果。
希望这可以帮助您。查看docs或源文件以获得更多信息,我认为代码文档非常好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接