1. 程式人生 > >word2vec引數理解

word2vec引數理解

之前寫了對word2vec的一些簡單理解,實踐過程中需要對其引數有較深的瞭解:

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, negative=5, cbow_mean=1, hashfxn=<built-in function hash>,iter=5,null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

引數解釋:

·  sentences:可以是一個list,對於大語料集,建議使用BrownCorpus,Text8Corpus或·ineSentence構建。
·  sg

: 用於設定訓練演算法,預設為0,對應CBOW演算法;sg=1則採用skip-gram演算法。
·  size:是指特徵向量的維度,預設為100。大的size需要更多的訓練資料,但是效果會更好. 推薦值為幾十到幾百。
·  window:表示當前詞與預測詞在一個句子中的最大距離是多少。Harris 在 1954 年提出的分佈假說( distributional hypothesis)指出, 一個詞的詞義由其所在的上下文決定。所以word2vec的引數中,視窗設定一般是5,而且是左右隨機1-5(小於視窗大小)的大小,是均勻分佈,隨機的原因應該是比固定視窗效果好,增加了隨機性,個人理解應該是某一箇中心詞可能與前後多個詞相關,也有的詞在一句話中可能只與少量詞相關(如短文字可能只與其緊鄰詞相關)。
·  alpha: 是學習速率
·  seed:用於隨機數發生器。與初始化詞向量有關。
·  min_count
: 可以對字典做截斷. 詞頻少於min_count次數的單詞會被丟棄掉, 預設值為5。該模組在訓練結束後可以通過呼叫model.most_similar('電影',topn=10)得到與電影最相似的前10個詞。如果‘電影’未被訓練得到,則會報錯‘訓練的向量集合中沒有留下該詞彙’。
·  max_vocab_size: 設定詞向量構建期間的RAM限制。如果所有獨立單詞個數超過這個,則就消除掉其中最不頻繁的一個。每一千萬個單詞需要大約1GB的RAM。設定成None則沒有限制。
·  sample: 高頻詞彙的隨機降取樣的配置閾值,預設為1e-3,範圍是(0,1e-5)
·  workers引數控制訓練的並行數。
·  hs: 如果為1則會採用hierarchica·softmax技巧。如果設定為0(defau·t),則negative sampling會被使用。
·  negative: 如果>0,則會採用negativesamp·ing,用於設定多少個noise words
·  cbow_mean: 如果為0,則採用上下文詞向量的和,如果為1(defau·t)則採用均值。只有使用CBOW的時候才起作用。
·  hashfxn: hash函式來初始化權重。預設使用python的hash函式
·  iter: 迭代次數,預設為5
·  trim_rule: 用於設定詞彙表的整理規則,指定那些單詞要留下,哪些要被刪除。可以設定為None(min_count會被使用)或者一個接受()並返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的函式。
·  sorted_vocab: 如果為1(defau·t),則在分配word index 的時候會先對單詞基於頻率降序排序。
·  batch_words:每一批的傳遞給執行緒的單詞的數量,預設為10000

本文引數主要是參考文章:https://blog.csdn.net/szlcw1/article/details/52751314 和https://blog.csdn.net/somTian/article/details/52193993以及個人使用經驗寫的