2017-02-22 121 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紙在他們的一些實驗中使用這種模式所提到的,此模式是不足以重現他們的結果。 (我所知道的沒有人能夠重現這些結果,並且其中一位作者的其他評論意味着原始論文在其過程中有一些錯誤或遺漏。)

此外,我還沒有找到案例這種模式提供了明顯的好處來證明增加的時間/記憶。 (這可能需要非常大的數據集或非常長的培訓時間才能顯示出任何好處。)

因此,除非您使用此不太常見的模式進行高級實驗,否則不應過於擔心此模型屬性 - 在這種情況下,您可以查看源代碼以獲取有關如何將其用作填充的詳細信息。