Word2Vec Python 相似度
Word2Vec Python similarity
我用这段代码做了一个词嵌入:
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()
有什么区别?
我应该使用哪一个?
编辑:也许我们应该在这里标记 gensim
,因为它是我们正在使用的库
如果你想找到两者的邻居,你可以使用
model.wv.most_similar()
这将为您提供每个单词的字典(前 n 个)及其与给定字符串(单词)的相似度。此方法将计算 word-vectors.
之间的余弦相似度
请注意,您提到的其他方法在 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 或源文件以获取更多信息,我认为代码文档非常好。
我用这段代码做了一个词嵌入:
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()
有什么区别?
我应该使用哪一个?
编辑:也许我们应该在这里标记 gensim
,因为它是我们正在使用的库
如果你想找到两者的邻居,你可以使用
model.wv.most_similar()
这将为您提供每个单词的字典(前 n 个)及其与给定字符串(单词)的相似度。此方法将计算 word-vectors.
请注意,您提到的其他方法在 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 或源文件以获取更多信息,我认为代码文档非常好。