1. 程式人生 > >基於Gensim的work2vec程式實現

基於Gensim的work2vec程式實現

work2vec官方API地址

models.word2vec – Word2vec embeddings

models.word2vec

這個模組實現了word2vec演算法。其中包括基於Hierarchical和Negative的CBOW和Skip-gram網路。

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, ns_exponent=0.75, cbow_mean=1, hashfxn=, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000, compute_loss=False, callbacks=(), max_final_vocab=None)

  • sentences, 訓練文件,可以是list,大檔案也可用Text8Corpus讀入.多語料是,將每份語料分詞後裝入一個列表中,再把多份語料的列表作為元素放入新的列表中。
  • size, (int) 定義詞向量維度
  • window,(int)定義當前詞和預測詞之間的最大距離,即預測詞與它前面多少個詞有關。
  • min_count,(int)詞頻限制,即當某詞的詞頻小於該值時,該詞忽略。
  • workers,(int)使用多少執行緒來訓練模型
  • sg,{0,1},0=CBOW;1=Skip-gram
  • hs,{0,1}, 0=negative; 1=Hierarchical;default=0
  • cbow_mean,{0,1},0說明CBOW的輸入層到對映層為加和;1說明輸入層到對映層為求平均。
  • alpha,初始化學習率
  • min_alpha,在執行過程中,學習率會隨之減少。該引數為學習率下線。
  • seed,詞向量的隨機初始化種子
  • max_vocab_size: 設定詞向量構建期間的RAM限制。如果所有獨立單詞個數超過這個,則就消除掉其中最不頻繁的一個。每一千萬個單詞需要大約1GB的RAM。設定成None則沒有限制。
  • sample: 表示 取樣的閾值,如果一個詞在訓練樣本中出現的頻率越大,那麼就越會被取樣。預設為1e-3,範圍是(0,1e-5)
  • negative: 如果>0,則會採用negativesamp·ing,用於設定多少個noise words
  • iter:迭代次數,預設為5。
  • hashfxn: hash函式來初始化權重。預設使用python的hash函式
    batch_words:每一批的傳遞給執行緒的單詞的數量,預設為10000

讀取生成的詞向量

model=models.word2vec.Word2Vec(line_sent,min_count=1, size=5, window=2,sg=0,hs=1)#此處引數可以自行設定
model['word_name']