首页 > 解决方案 > Python3 - Doc2Vec:按向量/ID 获取文档

问题描述

我已经使用大约 20.000 个文件构建了我的 Doc2Vec 模型。我正在寻找一种方法来查找给定向量/ID 的字符串表示形式,这可能类似于 Word2Vec 的 index2entity。我可以使用模型 ['n'] 来获取向量本身,但现在我想知道是否有办法获得它的某种字符串表示形式。

标签: pythonnlpgensimword2vecdoc2vec

解决方案


如果您想查找您的实际训练文本,对于作为训练一部分的给定文本+标签,您应该将该映射保留在Doc2Vec模型之外。(该模型不存储训练文本——只是在训练期间反复查看它们。)

如果您想从 doc-vector生成文本Doc2Vec,那不是现有功能,我也不知道有任何已发表的作品描述了这样做的可靠技术。

gensim 正在进行一项推测性/实验性的工作Doc2Vec,它将通过模型的神经网络前向传播一个文档向量,并报告最高度预测的目标词。(这有点与工作方式相反infer_vector()。)

有可能,这可能会给出一种摘要文本。有关更多详细信息,请参阅此未解决的问题和附加的 PR-in-progress:

https://github.com/RaRe-Technologies/gensim/issues/2459

这是否真正有用或可能成为 gensim 的一部分仍不清楚。

但是,请注意,这样的一组词是不合语法的。(它只是预测最多的单词的排名列表。也许其他一些子系统可以尝试以自然的语法方式将这些单词串在一起。)

此外,一个概念是否有许多潜在的关联词或只有一个的微妙之处,可能会极大地影响这种过程的“前 N 个”结果。设计一个可能的例子:描述“冷”环境的词有很多。因此,一个关于冷的文本的文档向量可能在排名第 11 到 20 位的位置上有很多“冷”的近义词——这样至少一个冷词的“总可能性”非常高,也许比其他任何一个词都高。但是,仅查看前 10 个最预测的单词可能会列出其他“更纯”的单词,这些单词的可能性没有那么大,并且会错过(更重要的整体)“冷漠”感。因此,这种实验性的伪摘要方法可能会受益于以某种方式“合并”的第二遍 将相关词组转换为其最具代表性的词,直到传达了 doc-vector 的预测词的某个整体比例(而不是固定的 top-N)。(这个过程可能有点像寻找一组 M 个单词,其“Word Mover's Distance”与全部预测单词的距离被最小化——尽管这可能是一个非常昂贵的搜索。)


推荐阅读