Gensim 的 Doc2Vec 要求您提供与示例 TaggedDocument 类具有相同对象形状的文本示例:同时具有 words 和 tags 属性。
words 是文本的字符串标记的有序序列——它们可能是一个句子、一个段落或一个长文档,这取决于你。
tags 是要从文本中学习的标签列表——例如纯整数或字符串标记,它们以某种方式用于命名相应的文本。在最初的“段落向量”论文中,它们只是每个文本的唯一 ID——例如从 0 单调递增的整数。(所以第一个 TaggedDocument 可能有一个 tags 只是 [0],下一个 [1] 等.)
该算法仅适用于文本块,不知道句子/段落/文档等可能是什么。 (出于 Doc2Vec 的目的,只需将它们视为所有“文档”,您可以从语料库中决定什么是正确的“文档”。)标记化保留标点符号(例如句子之间的句点)作为独立标记甚至很常见.
通过infer_vector() 方法进行推理,该方法采用强制参数doc_words,它应该是一个字符串令牌列表,就像在训练期间作为文本words 提供的那些一样。
您不会在推断文本上提供任何标签:Doc2Vec 只是为您返回一个原始向量,该向量在模型学习的关系内非常适合文本。 (即:向量擅长预测文本的单词,就像批量训练时学习的向量和内部模型权重擅长预测训练文本的单词一样。)
请注意,许多人通过增加可选的steps 参数(并可能降低从alpha 开始的推理,使其更像批量训练的起始alpha,从0.025 到0.05)从推理中发现了更好的结果。
doc2vec-IMDB 演示笔记本试图重现原始段落向量论文中的一个实验,因此它遵循那里的描述,以及作者之一 (Mikolov) 曾经发布的演示脚本。由于“测试”文档(没有其目标标签/已知情感)在训练时可能仍然可用,以帮助改进文本建模,因此在无监督 Doc2Vec 训练期间包含其原始文本是合理的。 (他们的已知标签在训练使用 doc-vectors 的分类器时不使用。)
(请注意,目前,2017 年 2 月,doc2vec-IMDB 演示笔记本与当前的 gensim Doc2Vec 默认值和最佳实践相比有点过时 - 特别是模型没有给出正确的显式iter=1 值使后面的手动循环和-train() 进行正确数量的训练。)