【问题标题】:How to get similar words from a custom input dictionary of word to vectors in gensim如何从自定义输入词典中获取相似词到gensim中的向量
【发布时间】:2019-08-24 20:22:17
【问题描述】:

我正在处理文档相似性问题。对于每个文档,我检索其中每个单词的向量(来自预训练的词嵌入模型)并将它们平均以获得文档向量。我最终得到了一个字典(比如 my_dict),它将我集合中的每个文档映射到它的向量。

我想将此字典提供给 gensim,并为每个文档获取“my_dict”中更接近它的其他文档。我怎么能这样做?

【问题讨论】:

    标签: python gensim cosine-similarity


    【解决方案1】:

    您可能需要考虑重新表述您的问题(从标题中,您正在寻找单词相似性,从我收集的描述中您想要文档相似性)并在描述中添加更多细节。如果没有关于你想要什么和你尝试过什么的更详细的信息,就很难帮助你实现你想要的,因为你可能想做一大堆不同的事情。话虽这么说,我想我可以帮助你,即使不知道你想让 gensim 做什么。 gensim 非常强大,并提供了许多不同的功能。

    假设你的字典已经是 gensim 格式,你可以像这样加载它:

    from gensim import corpora
    dictionary = corpora.Dictionary.load('my_dict.dict')
    

    那里 - 现在您可以将它与 gensim 一起使用,并根据您的意愿运行分析和建模。对于单词之间的相似性,您可以使用gensim.word2vec.most_similar('word_one', 'word_two') 等预制函数。

    有关与经过训练的 LDA 模型的文档相似性,请参阅 this stackoverflow question

    有关更详细的说明,请参阅this gensim tutorial,它使用余弦相似度作为文档之间相似度的度量。

    gensim 有一堆不需要 LDA 的预制功能,例如来自 similarities.docsimgensim.similarities.MatrixSimilarity,我建议查看文档和示例。

    另外,为了避免一大堆陷阱:是否有特定的理由自己对向量进行平均(或者甚至完全对它们进行平均)?您不需要这样做(gensim 有一些更复杂的方法可以为您实现文档到向量的映射,例如 models.doc2vec),并且可能会丢失有价值的信息。

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 1970-01-01
      • 2017-10-09
      • 2019-10-15
      • 1970-01-01
      • 2018-08-14
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多