在doc2vec训练过程的每个微小步骤中,它都会在一定长度(称为窗口大小)内获取一个单词及其邻居。对邻居进行求和,平均或归纳,依此类推。
我的问题是,如果窗口超出某个文档的边界,例如 this
那么邻居如何求和,求平均值或求简?还是只是被丢弃?
我正在做一些nlp工作,数据集中的大多数文档都很短。欣赏任何想法。
答案 0 :(得分:3)
纯PV-DBOW模式(dm=0
)训练迅速且通常表现出色(特别是在短文档上),根本不使用滑动window
。每个文档的向量都经过训练,可以直接预测文档中的单词-相邻单词没有任何区别。
仅当您切换到PV-DM模式(dm=1
)或添加交错的跳过语法单词向量训练(dm=0, dbow_words=1
)时,window
才有意义。然后,该窗口的处理方式与Word2Vec培训中的处理方式相同:如果它会超出文本的任一末端,则它会被截断以使其不会超出末端,可能会使有效的窗口偏斜。
因此,如果您有一个文本“ ABCDE”,且window
为2,则在预测第一个单词'A'时,只有右边的'B'和'C'起作用(因为零左边的字)。当预测第二个单词“ B”时,左侧的“ A”和右侧的“ C”和“ D”起作用。依此类推。
增加的皱纹是为了以计算有效的方式对附近的单词进行更强的加权,用于任何一个目标预测的实际窗口实际上是从1到配置的window
值的随机大小。因此,对于window=2
,一半的时间实际上仅在两边使用1的窗口,另一半时间在2的整个窗口中使用。(对于window=5
,它使用的有效值为1表示20%的预测,2表示20%的预测,3表示20%的预测,4表示20%的预测和5表示20%的预测。)这实际上为近词带来了更大的影响力,无需每次都包含所有全窗口单词或进行任何额外的部分加权计算的全部计算成本。