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