Python利用NLPIR与gensim做中文词嵌入

gensim中的word2vec模块

首先下载gensim:pip install gensim
本来我的环境是python2.7,pip下载失败,提示error: command 'E:\\Anaconda2\\Scripts\\gcc.bat' failed with exit status 1,找了一圈没找到原因,猜想可能是gcc版本不够,于是重装了Anaconda,换成了python3.6,就可以直接下载了。附一个下载地址:https://repo.continuum.io/archive/
阅读一下gensim文档,主要是Word2Vec这一块:https://radimrehurek.com/gensim/models/word2vec.html
训练词嵌入模型的基本流程如下:

1. 导入库

也就是import,一般而言是以下库:

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
2. 构建格式化句子

使用方法class gensim.models.word2vec.LineSentence(...)
一般参数只有文件名称,文件格式必须是:每个句子一行,所有词已进行去除停用词等预处理且以空格分隔。而且,此方法得到的是一个对象,直接print只能打印出其内存地址,若要查看内容需要迭代读取并打印。

sentences = LineSentence('test.txt')
	for sentence in sentences:
		print(sentence)

test.txt文件与输出如下:
Python利用NLPIR与gensim做中文词嵌入_第1张图片
在这里插入图片描述
可以看到,sentence是一个列表的形式,因此,测试时也可直接在程序中定义,效果是一样的:

texts = [['你好', '再见'],
	['爸爸', '妈妈', '爷爷', '奶奶']]

如果在读取中文文件时,出现:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte的问题,可以参照 https://www.cnblogs.com/jiangxinyang/p/10411595.html 的博客,讲得很详细,大意是LineSentence方法读取文件时的编码问题。

3. 训练

使用方法class gensim.models.word2vec.Word2Vec(...)
一般是三个参数,格式化句子sentences,最小词频min_count,词向量维数size。训练后会得到一个模型。

model = Word2Vec(sentences,min_count=1,size=20)	   #每个词映射到一个20维向量

训练之后可以用print(model.wv['word'])查看某给定词的向量:
Python利用NLPIR与gensim做中文词嵌入_第2张图片

  • 增量训练
    如果语料库有更新,可以读取现有模型进行增量训练:
model = Word2Vec.load(ModelName)  
sentences = LineSentence(FileName)
model.build_vocab(sentences,update=True)	#更新语料库
model.train(sentences,total_examples=model.corpus_count,epochs=model.iter)

你可能感兴趣的:(python,深度学习)