我知道在python(gensim)中已经存在PV-DBOW(段落向量)的实现。
但是我有兴趣知道如何自己实现它。
official paper中对PV-DBOW的解释如下:
另一种方法是忽略输入中的上下文单词,但强制模型预测从输出中的段落中随机采样的单词。实际上,这意味着在随机梯度下降的每次迭代中,我们对文本窗口进行采样,然后对文本窗口中的随机单词进行采样,并根据给定的段落向量形成分类任务。
根据论文,单词向量没有存储
据说PV-DBOW与word2vec中的gram gram相似。
跳过语法在word2vec Parameter Learning中说明。
在跳过语法模型中,单词向量被映射到隐藏层。
执行此映射的矩阵会在训练期间更新。
在PV-DBOW中,隐藏层的尺寸应为一个段落矢量的尺寸。当我想将示例样本的单词向量与段落向量相乘时,它们的大小应相同。
单词的原始表示为大小(词汇大小x 1)。执行哪种映射以获得正确的大小(段落尺寸x 1)
在隐藏层中。当不存储单词向量时,如何执行此映射?
由于word2vec Parameter Learning中的公式26,我认为单词和段落的表示形式在隐藏层中的大小应相同
最佳答案
是的,可以使用word2vec跳过语法模型轻松实现PV-DBOW。
说您有以下句子:
孩子们在公园跑步
跳过语法模型试图在固定窗口的上下文中预测周围的单词以学习单词向量。如果窗口大小为2,则目标如下:
word -> context words to predict
--------------------------------
Children -> (are, running)
are -> (children, running, in)
running -> (children, are, in, the)
in -> (are, running, the, park)
the -> (running, in, park)
park -> (in, the)
现在,您可以简单地修改
word -> context to predict
数据如何馈送到您的skip-gram实现中,如下所示:word -> context words to predict
--------------------------------
PAR#33 -> (Children, are, running, in, the, park)
PAR#33
,它只是模型的另一个词(长度相同),实际上是代表整个段落的标记(句子)这是一种带有“段落大小的窗口”的跳过语法模型