Genisim doc2vec:如何处理短文档?

Genisim doc2vec: how is short doc processed?

在 doc2vec 训练过程的每一个微小步骤中,它都采用一定长度(称为 window 大小)内的单词及其邻居。对邻居求和、平均或连接等等。

我的问题是,如果 window 超出某个文档的边界怎么办,比如 this

那么邻居是如何求和、平均或连接的?或者它们只是被简单地丢弃了?

我正在做一些 nlp 工作,我数据集中的大多数文档都很短。感谢任何想法。

纯 PV-DBOW 模式 (dm=0),训练速度很快并且通常表现很好(尤其是在短文档上),完全不使用滑动 window。每个文档向量都经过训练,可以很好地直接预测文档的单词——相邻的单词没有任何区别。

只有当您切换到 PV-DM 模式 (dm=1) 或添加交错的 skip-gram 词向量训练 (dm=0, dbow_words=1) 时,才与 window 相关。然后,window 的处理方式与 Word2Vec 训练中的处理方式相同:如果它超过文本的任一端,它就会被截断以不超过末尾,可能会留下有效的 window lop-支持。

因此,如果您有文本 "A B C D E",并且 window 为 2,则在预测第一个词 'A' 时,只有 'B' 和 'C' 向右贡献(因为左边有零个单词)。在预测第二个词 'B' 时,左边的 'A' 和右边的 'C' 和 'D' 有贡献。等等。

一个额外的问题是,为了以计算高效的方式对附近的词进行更强的加权,用于任何一个目标预测的实际 window 实际上是从 1 到配置的随机大小window 值。所以对于 window=2,有一半时间它真的只在每边使用 1 的 window,而另一半时间使用 2 的完整 window。(对于 window=5,它使用有效值 1 表示 20% 的预测,2 表示 20% 的预测,3 表示 20% 的预测,4 表示 20% 的预测,5 表示 20% 的预测。)这有效地赋予了更接近的词更大的影响力,而无需每次都包括所有完整的 window 个词或任何额外的部分加权计算的全部计算成本。