如何从Gensim的自定义输入单词词典到矢量获取相似单词

时间:2019-04-03 10:25:59

标签: python gensim cosine-similarity

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

我想将此字典提供给gensim,对于每个文档,请在“ my_dict”中获取更接近它的其他文档。我该怎么办?

1 个答案:

答案 0 :(得分: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.docsim中的gensim.similarities.MatrixSimilarity,我建议您阅读文档和示例。

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