簡體   English   中英

在python上使用gensim Word2Vec的不同型號

[英]Different models with gensim Word2Vec on python

我試圖在python中應用在gensim庫中實現的word2vec模型。 我有一個句子列表(每個句子都是一個單詞列表)。

比如我們有:

sentences=[['first','second','third','fourth']]*n

我實現了兩個相同的模型:

model = gensim.models.Word2Vec(sententes, min_count=1,size=2)
model2=gensim.models.Word2Vec(sentences, min_count=1,size=2)

我意識到模型有時是相同的,有時是不同的,這取決於n的值。

例如,如果n = 100,我就獲得了

print(model['first']==model2['first'])
True

而對於n = 1000:

print(model['first']==model2['first'])
False

這怎么可能?

非常感謝你!

查看gensim 文檔 ,運行Word2Vec時會有一些隨機化:

seed =用於隨機數生成器。 每個單詞的初始向量用單詞+ str(種子)的串聯的散列來播種。 請注意,對於完全確定性可重現的運行,您還必須將模型限制為單個工作線程,以消除OS線程調度中的排序抖動。

因此,如果您希望獲得可重現的結果,則需要設置種子:

In [1]: import gensim

In [2]: sentences=[['first','second','third','fourth']]*1000

In [3]: model1 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2)

In [4]: model2 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2)

In [5]: print(all(model1['first']==model2['first']))
False

In [6]: model3 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234)

In [7]: model4 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234)

In [11]: print(all(model3['first']==model4['first']))
True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM