【问题标题】:Word2Vec Python similarityWord2Vec Python 相似度
【发布时间】:2018-08-29 00:38:32
【问题描述】:

我用这段代码做了一个词嵌入:

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() 有什么区别? 我应该使用哪一个?

【问题讨论】:

    标签: python similarity word2vec gensim word-embedding


    【解决方案1】:

    编辑:也许我们应该在这里标记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 或源文件以获得更多信息,我认为代码文档非常好。

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 2018-10-27
      • 2015-10-10
      • 1970-01-01
      • 2021-04-27
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多