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