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]

 

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