python - 如何从自定义输入词典中获取相似词到gensim中的向量
问题描述
我正在研究文档相似性问题。对于每个文档,我检索其每个单词的向量(来自预训练的词嵌入模型)并将它们平均以获得文档向量。我最终得到了一个字典(比如 my_dict),它将我集合中的每个文档映射到它的向量。
我想将此字典提供给 gensim,并且对于每个文档,在“my_dict”中获取更接近它的其他文档。我怎么能那样做?
解决方案
您可能需要考虑重新表述您的问题(从标题中,您正在寻找单词相似性,从我收集的描述中您想要文档相似性)并在描述中添加更多细节。如果没有关于你想要什么和你尝试过什么的更详细信息,就很难帮助你实现你想要的,因为你可能想做一大堆不同的事情。话虽这么说,我想我可以帮助你,即使不知道你想让 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
),并且可能会丢失有价值的信息。
推荐阅读
- html - 如何在浏览器上上传 GLB 格式文件并捕获正确的文件类型
- oracle - 如何在 Oracle PL/SQL 存储过程中使用插入查询插入多个项目?
- javascript - 如何应对快速行动
- javascript - 如何添加内容安全策略 (CSP)
- javascript - Node.js 中的多个 setTimeout 执行是单线程还是多线程?
- postgresql - 如何将从.bat文件中的复制命令返回的错误插入到表中
- spring-boot - 我们如何更改默认的 Spring Boot 登录页面
- nginx - 如何在 nginx 中将子域代理到主域以进行 SEO
- swagger - 为什么最近大幅减少了 swagger jbpm 文档?
- mongodb - 将备份从容器导出到主机