gensim Word2Vec中的`null_word`参数是什么?

时间:2017-02-22 03:32:51

标签: python null deep-learning gensim word2vec

gensim中的Word2Vec对象的null_word参数未在文档中说明。

  

class gensim.models.word2vec.Word2Vec(sentences = None,size = 100,alpha = 0.025,window = 5,min_count = 5,max_vocab_size = None,sample = 0.001,seed = 1,workers = 3,min_alpha = 0.0001,sg = 0,hs = 0,负= 5,cbow_mean = 1,hashfxn =,iter = 5,null_word = 0,trim_rule =无,sorted_vocab = 1,batch_words = 10000)

null_word参数用于什么?

检查https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py#L680处的代码,它说明:

    if self.null_word:
        # create null pseudo-word for padding when using concatenative L1 (run-of-words)
        # this word is only ever input – never predicted – so count, huffman-point, etc doesn't matter
        word, v = '\0', Vocab(count=1, sample_int=0)
        v.index = len(self.wv.vocab)
        self.wv.index2word.append(word)
        self.wv.vocab[word] = v

什么是“串联L1”?

1 个答案:

答案 0 :(得分:1)

只有在模型初始化中使用带有连接模式的PV-DM - 参数null_word时才使用dm=1, dm_concat=1

在这种非默认模式下,doctag-vector和目标词的window位置内相邻词的向量连接到一个非常宽的输入层,而不是而不是更典型的平均值。

这些模型比其他模式更大更慢。对于文本示例的开头或结尾附近的目标词,可能没有足够的相邻词来创建此输入层 - 但模型需要这些插槽的值。所以null_word主要用作填充。

虽然在他们的一些实验中使用此模式提到的原始Paragraph Vectors论文,但此模式不足以重现他们的结果。 (我所知道的任何人都无法重现这些结果,其中一位作者的其他评论暗示原始论文在其过程中有一些错误或遗漏。)

此外,我还没有找到这种模式提供明显好处来证明增加时间/内存的情况。 (可能需要非常大的数据集或非常长的训练时间才能显示任何好处。)

所以你不应该过于担心这个模型属性,除非你用这种不太常见的模式进行高级实验 - 在这种情况下你可以查看源代码,了解它如何用作填充的所有细节。 / p>