gensim 對wiki中文文本語料進行訓練Word2vec

 

gensim的安裝

pip instll gensim

語料庫的下載

gensim僅提供了Word2Vec的模型實現,訓練詞向量的另一個必須條件是足夠大的文本語料。這裏我們將要使用的是中文維基百科語料,直接下載即可: 
https://pan.baidu.com/s/1qXKIPp6 
提取密碼爲 kade。

下載之後可以在Sublime中打開並查看其內容,文件名和後綴名可以不用在意,因爲Sublime支持打開任意類型的文本文件。其中每一行是一條維基百科,即一項詞條對應的百科內容,並且已經完成了分詞處理。

模型的訓練

# 加載包
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

# 訓練模型
sentences = LineSentence('wiki.zh.word.text')

# size:詞向量的維度
# window:上下文環境的窗口大小
# min_count:忽略出現次數低於min_count的詞
# iter:迭代輪數
# workers:併發數,worker參數只有在安裝了Cython後纔有效. 沒有Cython的話, 只能使用單核
model = Word2Vec(sentences, size=128, window=5, min_count=5, workers=4,iter =10)

保存模型

# 保存模型
model.save('word_embedding_128')

# 如果已經保存過模型,則直接加載即可
# 前面訓練並保存的代碼都可以省略
# model = Word2Vec.load("word_embedding_128")

模型的增量訓練

new_model = Word2Vec.load("word_embedding_128")
more_sentences = [['我', '愛', '你'], ['我', '愛', '祖國']]
# 增量訓練,total_examples是句子的數量,epochs是迭代輪數
new_model.train(more_sentences, total_examples=len(more_sentences), epochs=new_model.iter)

模型的使用

# 返回兩個詞語之間的相關度
model.similarity(u'男人',  u'女人')

# 返回和一個詞語最相關的多個詞語以及對應的相關度
items = model.most_similar(u'中國')
for item in items:
    # 詞的內容,詞的相關度
    print item[0], item[1]

 

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