首页 > 解决方案 > 如何从自定义输入词典中获取相似词到gensim中的向量

问题描述

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

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

标签: pythongensimcosine-similarity

解决方案


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

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

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

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

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

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

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

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


推荐阅读