我正在尝试复制 Mikolov 的 PV-DM + PV-DBOW 作品。他说应该使用这两种算法以获得更好的结果。出于这个原因,我正在尝试训练模型,然后将文档标签提供给 t-SNE。
使用 Gensim 的 Doc2Vec,我可以获得带有 docvecs.vectors_docs
的文档标签,但串联结构似乎没有联合模型的文档标签。它仍然将模型视为单独的实体。
(这个我可以从变量资源管理器中看到)
我还使用了来自 gensim 的 ConcatenatedDoc2Vec
。
谁能帮帮我?有没有一种方法可以从串联的新实体而不是单个实体中获取文档标签?
最佳答案
请注意,许多人已尝试使用串联的 PV-DBOW 和 PV-DM+dm_concat 向量重现报告的“段落向量”结果,但没有成功。 (例如,Mikolov 本人 reports being unable to reproduce 他说合著者 Le 对论文做出贡献的确切数字。)
ConcatenatedDoc2Vec
类只是一个薄包装器,用于连接您已经分别训练过的两个模型,用于按标签进行向量查找 (__getitem__()
索引访问)和组合推理。 (这只是一个 10 lines of code 。)
为了使这个训练后连接变得合理,这两个模型应该以完全相同的顺序使用完全相同的文档/标签进行训练。
因此,如果您需要标签列表,请分别询问任一模型。
如果您需要这两个模型的其他组合——例如包含所有连接向量的单个大数组——您必须自己构建它,也许使用 numpy
的 hstack
方法。
您可以在 gensim
docs/notebooks
目录中看到我的笔记本试图重现论文的一些结果,或者在线查看:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-IMDB.ipynb
关于python - Gensim Doc2Vec 从串联模型中获取文档标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50535278/