Python3 - Doc2Vec:通过 vector/ID 获取文档

Python3 - Doc2Vec: Get document by vector/ID

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

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

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

gensim Doc2Vec work-in-progress 的 speculative/experimental 位将 forward-propagate 通过模型的 neural-network 生成 doc-vector,并报告返回 most-highly-predicted 个目标词。 (这与 infer_vector() 的工作方式有些相反。)

可能 ,很有可能给出一个 sort-of 摘要文本。有关详细信息,请参阅此公开问题和附件 PR-in-progress:

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

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

但是,请注意这样的 set-of-words 不会 符合语法。 (它只是 most-predicted 个单词的 ranked-list。也许其他一些子系统可以尝试以自然的语法方式将这些单词串在一起。)

此外,一个概念是否有许多潜在的关联词,或者只有一个,可能会极大地影响这种过程的 "top N" 结果。构想一个可能的例子:描述'cold'环境的词有很多。因此,doc-vector 的关于冷门的文本可能在排名第 11-20 位的 'cold' 中有很多 near-synonyms —— 这样 "total likelihood" 至少一个 cold-ish 词非常高,可能比任何其他词都高。但是只看前 10 个 most-predicted 个词可能会列出其他 "purer" 个可能性不那么大的词,而错过 "coldness" 的 (more-important-overall) 意义。因此,这个实验性的 pseudo-summarization 方法可能会受益于 second-pass 以某种方式 "coalesces" groups-of-related-words 进入他们的 most-representative 词,直到某个整体比例(而不是固定的 top-N) 的 doc-vector 的 predicted-words 被传达。 (这个过程可能有点像找到一组 M 个单词,其 "Word Mover's Distance" 到完整的 predicted-words 集被最小化——尽管这可能是一个非常昂贵的搜索。)