Doc2Vec:区分句子和文档

Vik*_*h B 5 python gensim doc2vec

我只是在玩来自 gensim 的 Doc2Vec,分析堆栈交换转储以分析问题的语义相似性以识别重复项。

Doc2Vec-Tutorial的教程似乎将输入描述为带标签的句子。

但是原始论文:Doc2Vec-Paper声称该方法可用于推断段落/文档的固定长度向量。

有人可以解释在这种情况下句子和文档之间的区别,以及我将如何推断段落向量。

由于一个问题有时可以跨越多个句子,我想,在训练期间,我会给来自同一个问题的句子使用相同的标签,但是我将如何在看不见的问题上对 infer_vector 执行此操作?

这个笔记本:Doc2Vec-Notebook

似乎是关于 TRAIN 和 TEST 文档的训练向量,有人可以解释这背后的基本原理吗,我也应该这样做吗?

goj*_*omo 5

Gensim 的 Doc2Vec 希望您提供与示例 TaggedDocument 类相同的对象形状的文本示例:同时具有 awords和 atags属性。

\n\n

words是文本 \xe2\x80\x93 的字符串标记的有序序列,它们可能是一个句子,或者一个段落,或者一个长文档,这取决于你。

\n\n

这些tags是从文本 \xe2\x80\x93 中学习的标签列表,例如纯整数或字符串标记,它们以某种方式用于命名相应的文本。在最初的“段落向量”论文中,它们只是每个文本 \xe2\x80\x93 的唯一 ID,例如从 0 单调递增的整数。(因此第一个 TaggedDocument 可能只有tags[0][1]一个等)

\n\n

该算法仅适用于文本块,而不知道句子/段落/文档等可能是什么。(为了 Doc2Vec 的目的,只需将它们视为所有“文档”,然后由您从语料库中决定什么是正确类型的“文档”。)标记化甚至通常保留标点符号,例如句子之间的句点,作为独立标记。

\n\n

通过该方法进行推理infer_vector(),该方法采用强制参数doc_words,该参数应该是字符串标记列表,就像作为文本提供的那些一样words在训练期间作为文本提供的那些一样。

\n\n

您无需在推断的文本上提供任何标签:Doc2Vec 只是返回一个原始向量,该向量在模型学习的关系中与文本很好地契合。(也就是说:向量擅长预测文本的单词,就像批量训练期间学习的向量和内部模型权重擅长预测训练文本的单词一样。)

\n\n

steps请注意,许多人通过增加可选参数(并可能减少推理开始时间)发现了更好的推理结果alpha使其更像批量训练起始 alpha,从 0.025 到 0.05),发现了更好的推理结果。

\n\n

doc2vec-IMDB 演示笔记本试图重现原始段落向量论文中的其中一个实验,因此它遵循其中所描述的内容,以及作者之一(Mikolov)曾经发布的演示脚本。由于“测试”文档(没有目标标签/已知情感)在训练时可能仍然可用,以帮助改进文本建模,因此在无监督 Doc2Vec 训练期间包含其原始文本是合理的。(他们的知名标签不是(在训练使用文档向量的分类器时,

\n\n

(请注意,目前,2017 年 2 月,doc2vec-IMDB 演示笔记本与当前 gensim Doc2Vec 默认值和最佳实践 \xe2\x80\x93 相比有点过时,特别是模型没有给出正确的显式iter=1值以使稍后的手动循环train()执行正确数量的训练。)

\n