【NLP】Word2Vec筆記(代碼)

 

參考

word2vec源碼詳解(非Python)

Word2Vec的參數解釋

word2vector從參數解釋到實戰

 


參數解釋

from  gensim.models import Word2Vec
#下面的參數均是默認值
Word2Vec(sentences=None,  #sentences可以是分詞列表,也可以是大語料
        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, #訓練算法的選擇,sg=1,採用skip-gram,sg=0,採用CBOW
        hs=0,# hs=1,採用hierarchica·softmax,hs=10,採用negative sampling
        negative=5,#這個值大於0,使用negative sampling去掉'noise words'的個數(通常設置5-20);爲0,不使用negative sampling
        cbow_mean=1,#爲0,使用詞向量的和,爲1,使用均值;只適用於cbow的情況
        iter = 5,#迭代次數
        null_word = 0,
        trim_rule = None, #裁剪詞彙規則,使用None(會使用最小min_count)
        sorted_vocab = 1,#對詞彙降序排序
        batch_words = 10000,#訓練時,每一批次的單詞數量
        compute_loss = False,
        callbacks = ())

size: 對應代碼中layer1_size, 表示詞向量的維度,默認值是100。
train: 對應代碼中train_file, 表示語料庫文件路徑。
save-vocab: 對應代碼中save_vocab_file, 詞彙表保存路徑。
read-vocab: 對應代碼中read_vocab_file, 表示已有的詞彙表文件路徑,直接讀取,不用從語料庫學習得來。
debug: 對應代碼中debug_mode, 表示是否選擇debug模型,值大於1表示開啓,默認是2。開啓debug會打印一些信息。
binary: 對應代碼中全局變量binary,表示文件保存方式,1表示按二進制保存,0表示按文本保存,默認是0.
cbow: 對應代碼中cbow, 1表示按cbow模型訓練, 0表示按skip模式訓練,默認是1。
alpha: 對應代碼中alpha,表示學習率。skip模式下默認爲0.025, cbow模式下默認是0.05。
output: 對應代碼中output_file, 表示詞向量保存路徑。
window: 對應代碼中window,表示訓練窗口大小。默認是5
sample: 對應代碼中sample,表示下采樣閥值。
hs: 對應代碼中hs, 表示按huffman softmax模式訓練。默認是0, 表示不使用hs。
negative: 對應代碼中negative, 表示按負採樣模式訓練, 默認是5。值爲0表示不採用負採樣訓練;如果使用,值一般爲3到10。
threads: 對應代碼中num_threads,訓練線程數,一般爲12。
iter: 對應代碼中iter,訓練迭代次數,默認是5.
min-count: 對應代碼中min_count,表示最小出現頻率,低於這個頻率的詞會被移除詞彙表。默認值是5
classes: 對應代碼中classes,表示聚類中心數, 默認是0, 表示不啓用聚類。

 


文章一 筆記

構建詞彙庫

  先判斷是否已經有處理好現成的詞彙庫,有的話直接讀取,沒有的話再進行訓練。詞彙表訓練過程分爲以下幾個步驟:

  • 讀取單詞(假設單詞通過空格或者tab鍵或者EOL鍵進行分割)
  • 計算單詞對應hash值
  • 通過hash值得到單詞在詞彙表中索引
  • 將單詞加入到詞彙表
  • 對詞彙表根據詞頻進行降序排序
  • 詞彙表裁剪函數(當詞彙表中詞彙量大於一定值時進行裁剪,先裁掉低頻詞,然後再裁掉高頻詞,直到詞彙量滿足要求)
  • 保存訓練好的詞彙表

初始化網絡

  • 初始化網絡參數
  • 構建哈夫曼樹
  • 初始化負採樣概率表

模型訓練

結果處理

可以直接保存結果或者用k-means聚類算法分析結果

 


文章二 筆記

Word2Vec的參數解釋 (使用Gensim訓練Word2vec)

語料庫預處理

原始的訓練語料轉爲sentence迭代器

每一次迭代返回的sentence是一個word(utf8格式)的列表。可以使用Gensim中word2vec.py中的LineSentence()方法實現。

訓練

將上面處理的結果輸入Gensim內建的word2vec對象進行訓練即可

保存

將訓練好的模型保存在文件中。隨後,可以調用load()函數將保存的模型加載進來。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章