在gensim中,word2vec相關的API都在gensim.models.word2vec中,與算法相關的參數在 gensim.models.word2vec.Word2Vec中。其具體參數說明如下:(個人翻譯,如有出入歡迎指正)
class Word2Vec(BaseWordEmbeddingsModel):
"""訓練, 使用和評估https://code.google.com/p/word2vec/中描述的神經網絡
一旦你訓練完一個模型 (不再更新,僅查詢)
只能在`~gensim.models.keyedvectors.KeyedVectors`的`self.wv`實例中存儲並使用,這樣可以節省內存
該模型可以通過`~gensim.models.word2vec.Word2Vec.save`和`~gensim.models.word2vec.Word2Vec.load`方法來存儲和加載
訓練後的單詞向量還可以通過`self.wv.save_word2vec_format`原始word2vec實現方法和`gensim.models.keyedvectors.KeyedVectors.load_word2vec_format`來存儲和加載。
一些重要的屬性如下:
屬性
----------
wv : :class:`~gensim.models.keyedvectors.Word2VecKeyedVectors`
這個對象本質上包含單詞和embeeding之間的映射。經過訓練,可以通過各種方式直接用來查詢這些embeeding。有關示例,請參見模塊級文檔說明。
vocabulary : :class:`~gensim.models.word2vec.Word2VecVocab`
該對象表示模型的詞彙表(有時在gensim中稱爲Dictionary)。
除了跟蹤所有不同的單詞之外,此對象還提供了其他功能,例如構造霍夫曼樹(常用詞更接近詞根),或丟棄極爲罕見的詞。
trainables : :class:`~gensim.models.word2vec.Word2VecTrainables`
該對象表示用於訓練embeeding的內部淺層神經網絡。
在兩種可用的訓練模式(CBOW或SG)中,網絡的語義略有不同,但是您可以將其視爲具有單個投影和隱藏層的NN,我們在語料庫上對其進行訓練。
然後將權重用作我們的embeeding(這意味着隱藏層的大小等於特徵“ self.size”的數量)。
"""
def __init__(self, sentences=None, corpus_file=None, size=100, alpha=0.025, window=5, min_count=5,
max_vocab_size=None, sample=1e-3, seed=1, workers=3, min_alpha=0.0001,
sg=0, hs=0, negative=5, ns_exponent=0.75, cbow_mean=1, hashfxn=hash, iter=5, null_word=0,
trim_rule=None, sorted_vocab=1, batch_words=MAX_WORDS_IN_BATCH, compute_loss=False, callbacks=(),
max_final_vocab=None):
"""
參數
----------
sentences : 可迭代的對象, 可選的
需要分析的預料。可迭代的"sentences" 可以是tokens列表集中的一個簡單列表,但是對於較大的語料庫,請考慮直接從磁盤/網絡中流式傳輸"sentences"的可迭代項。
如果您不提供“sentences”,則該模型將保持未初始化狀態。如果您打算通過其他方式對其進行初始化,則可以這樣做。
corpus_file : 字符串類型, 可選的
語料庫文件的路經:`~gensim.models.word2vec.LineSentence`格式.
您可以使用此參數代替“sentences”從而提高性能。僅需傳遞“sentences”或“ corpus_file”兩個變量中的一個即可(或不傳遞任何一個,在這種情況下,模型將保持未初始化狀態)
size : 整型, 可選
詞向量的維數。
window : 整型, 可選
句子中當前詞和預測詞之間的最大距離。window越大,則與中心詞較遠的詞也會產生上下文關係。
min_count : 整型, 可選
最小詞頻,忽略所有總頻率低於此頻率的單詞。
workers : 整型, 可選
訓練模型所採用的工作線程數量(=使用多核機器進行訓練將更快)。
sg : {0, 1}, 可選
訓練模型: 1表示skip-gram; 0表示CBOW.
hs : {0, 1}, 可選
如果爲1, 將用hierarchical softmax 訓練模型.
如果爲0, 並且`negative`不爲0,則將採樣負採樣訓練模型。
negative : 整型, 可選
如果大於0, 將使用負採樣, negative的絕對值決定了"noise words"的個數
應該被設置 (一般情況下取值範圍爲5-20).
如果設置爲0, no negative sampling is used.
ns_exponent : float, optional
"exponent"用於構造負採樣分佈。
值1.0表示與頻率成正比,值0.0表示對所有單詞均勻採樣,而負值對低頻詞的採樣比對高頻詞的採樣多。最初的Word2Vec文件選擇了流行的默認值0.75。
最近,Caselleles-Dupré,Lesaint和Royo-Letelier在https://arxiv.org/abs/1804.04212中建議,其他值對於"推薦類應用程序"可能會表現更好。
cbow_mean : {0, 1}, optional
如果爲0, 在cbow做投影的時候則使用上下文詞向量的總和. 如果爲1, 則使用平均值, 僅在使用cbow時適用.
alpha : float, optional
在隨機梯度下降法中的初始學習率(初始步長).
min_alpha : float, optional
最小的迭代步長值。隨着訓練的進行,學習率將線性下降到"min_alpha".
seed : int, optional
隨機數生成器的種子。
每個單詞的初始向量都以單詞的級聯哈希值+`str(seed)`作爲種子。
請注意,如果需要運行結果完全重現,還必須將模型限制爲單個工作線程(“workers = 1”),以消除OS線程調度中的排序抖動。
(在Python3中,解釋程序啓動之間的可重複性還需要使用`PYTHONHASHSEED`環境變量來控制哈希隨機化)。
max_vocab_size : int, optional
最大詞彙數量,如果設置爲`None` 表示不限制
在詞彙構造過程中限制RAM;如果許多的獨特詞,則可以修剪不常用的詞。每1000萬個字類型需要大約1GB的RAM。
max_final_vocab : int, optional
通過自動選擇一個匹配的min_count將詞彙表限制爲目標詞彙表大小。
如果指定的min_count大於計算的min_count,則將使用指定的min_count。如果設置爲`None` 表示不限制。
sample : float, optional
配置高頻詞被隨機下采樣的閾值,比較可靠的範圍是(0,1e-5)。
hashfxn : function, optional
哈希函數用於隨機初始化權重,以提高訓練的可重複性。
iter : int, optional
語料庫上的迭代次數
trim_rule : function, optional
詞彙修剪規則,指定是否應保留某些單詞,對其進行修剪或使用默認值處理(如果單詞數<min_count則捨棄)。
可以設置爲None(將使用min_count,可以查看`〜gensim.utils .keep_vocab_item`),
也可以是接受參數(word,count,min_count)並返回以下任意一種的可調用對象:
attr:`gensim.utils.RULE_DISCARD` ,
attr:`gensim.utils.RULE_KEEP`
attr:`gensim.utils.RULE_DEFAULT`。
如果給出規則,則該規則僅用於在build_vocab()期間修剪詞彙,而不會存儲爲模型的一部分。
輸入參數具有以下類型:
*`word`(str)-我們正在檢查的單詞
*`count`(int)-語料庫中單詞的頻率計數
*`min_count`(int)-最小計數閾值。
sorted_vocab:{0,1},可選
如果爲1,則在分配單詞索引之前,按降序對詞彙表進行排序。
參見:`〜gensim.models.word2vec.Word2VecVocab.sort_vocab()`方法
batch_words:int,可選
傳遞給工作線程(以及cython例程)的示例批處理的目標大小(以字爲單位)。
(如果單個文本的長度超過10000個單詞,則將傳遞較大的批處理,但是標準cython代碼將截斷到該最大值)。
compute_loss:布爾值,可選
如果爲True,則計算並存儲的損失值可以通過`〜gensim.models.word2vec.Word2Vec.get_latest_training_loss`方法檢索查看。
callbacks : iterable of :class:`~gensim.models.callbacks.CallbackAny2Vec`, optional
在訓練過程中的特定階段執行的回調序列。
例如
--------
初始化並訓練一個`~gensim.models.word2vec.Word2Vec`模型
.. sourcecode:: pycon
>>> from gensim.models import Word2Vec
>>> sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
>>> model = Word2Vec(sentences, min_count=1)
"""