使用genism训练词向量【转载】
转自:https://blog.csdn.net/qq_16912257/article/details/79099581
https://blog.csdn.net/thriving_fcl/article/details/51406780
1.简单使用
from gensim.models import word2vec sents = [ 'I am a good student'.split(), 'Good good study day day up'.split() ] model = word2vec.Word2Vec(sents, size=100, window=5, min_count=2, workers=10) # 打印单词'good'的词向量 print(model.wv.word_vec('good')) # 打印和'good'相似的前2个单词 print(model.wv.most_similar('good', topn=2)) # 保存模型到文件 model.save('w2v.model')
查看词典:w2v.wv.vocab
查看所有词向量:weights = w2v.wv.syn0
2020-9-17更新——————
2.常用参数
https://blog.csdn.net/laobai1015/article/details/86540813
class Word2Vec(utils.SaveLoad): def __init__( self, sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=1e-3, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=hash, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=MAX_WORDS_IN_BATCH):
· sentences:可以是一个list,对于大语料集,建议使用BrownCorpus,Text8Corpus或lineSentence构建。
· size:是指特征向量的维度,默认为100。
· alpha: 是初始的学习速率,在训练过程中会线性地递减到min_alpha。
· window:窗口大小,表示当前词与预测词在一个句子中的最大距离是多少。
· min_count: 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5。
sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。
参数的选择与对比:
1.skip-gram (训练速度慢,对罕见字有效),CBOW(训练速度快)。一般选择Skip-gram模型;
2.训练方法:Hierarchical Softmax(对罕见字有利),Negative Sampling(对常见字和低维向量有利);
3.欠采样频繁词可以提高结果的准确性和速度(1e-3~1e-5)
4.Window大小:Skip-gram通常选择10左右,CBOW通常选择5左右。
3.模型保存与加载
model.save_word2vec_format(outp2, binary=False) from gensim.models import Word2Vec model = Word2Vec.load("D:/data/W2V/word2vector.model") print(model.similarity('Chinese', 'China'))
4.