2017-02-22 47 views
0

gensim中的Word2Vec对象有null_word参数,在文档中没有对此进行说明。什么是gensim Word2Vec中的`null_word`参数?

类gensim.models.word2vec.Word2Vec(句子=无,大小= 100,α-= 0.025,窗口= 5,min_count = 5,max_vocab_size =无,样品= 0.001,种子= 1,工人= 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

null_word仅用于如果使用PV-DM与级联模式 - 在模型初始化参数dm=1, dm_concat=1

在该非默认模式中,doctag矢量和内的目标字的位置window相邻字的载体是级联成一个非常宽的输入层,而不是更典型平均。

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

而原来Paragraph Vectors纸在他们的一些实验中使用这种模式所提到的,此模式是不足以重现他们的结果。 (我所知道的没有人能够重现这些结果,并且其中一位作者的其他评论意味着原始论文在其过程中有一些错误或遗漏。)

此外,我还没有找到案例这种模式提供了明显的好处来证明增加的时间/记忆。 (这可能需要非常大的数据集或非常长的培训时间才能显示出任何好处。)

因此,除非您使用此不太常见的模式进行高级实验,否则不应过于担心此模型属性 - 在这种情况下,您可以查看源代码以获取有关如何将其用作填充的详细信息。