1.介绍
一句话,Gensim中的Word2Vec
类就是用来训练词向量的,这个类实现了词向量训练的两种基本模型skip-gram
和CBOW
,可以通过后面的参数设置来选择。但是,在Gensim这个模块中训练词向量的方法还有很多:gensim.models.doc2vec.Doc2Vec
,gensim.models.fasttext.FastText
,gensim.models.wrappers.VarEmbed
等等都能得到词向量。
2.Word2Vec类
2.1 Word2Vec类初始化参数
在下面介绍参数时,可能不会列举完,完整的参数见word2vec.py
源码。
注:参数表这一列,等号右边的值表示默认值
参数表 | 含义 |
---|---|
sentences=None | 语料句子,必须是一个可迭代的(参见后面例子) |
size=100 | 训练后词向量的维度 |
alpha=0.025 | 训练网络的初始学习率,之后会线性降低 |
min_alpha=0.0001 | 降低到最小的学习率 |
window=5 | 当前词和预测词之间的最大间隔 |
min_count=5 | 忽略词频<5的词语 |
max_vocab_size=None | 限制最大词数,防止内存溢出 |
workers=3 | 设置线程数,越高训练速度(前提是你有这么多) |
sg=0 | 训练模型的选择,1表示skip-gram,0表示CBOW |
hs=0 | 训练网络代价函数的选择 |
iter=5 | 迭代次数 |
2.2 示例
2.2.1 训练及保存模型
# 示例1
from gensim.test.utils import common_texts
from gensim.models import Word2Vec
print(common_texts)
train_model = Word2Vec(common_texts, size=100, window=5, min_count=1, workers=4)
train_model.save('./MyModel')
train_model.wv.save_word2vec_format('./mymodel.txt', binary=False)
训练模型
只需要给Word2Vec
类赋上参数,就可以直接训练了。其中common_texts
是一段内置的语料,如下:
[[‘human’, ‘interface’, ‘computer’], [‘survey’, ‘user’, ‘computer’, ‘system’, ‘response’, ‘time’], [‘eps’, ‘user’, ‘interface’, ‘system’], [‘system’, ‘human’, ‘system’, ‘eps’], [‘user’, ‘response’, ‘time’], [‘trees’], [‘graph’, ‘trees’], [‘graph’, ‘minors’, ‘trees’], [‘graph’, ‘minors’, ‘survey’]]
可以看到整体格式是[['A','B'],['C','D','E']]
,其中这个list表示所有的文本(此处表示2个文本,里面的A,B等表示单词,如果是中文则表示分词的结果,后面也会用中文演示)
保存模型
在示例1中,第8行和第10行都是用来保存训练模型的(简称save和format_save),而两者之间的相同点就是:都可以复用,即载入之后可以得到对应单词的词向量;不同点是&