使用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. 

 

posted @ 2019-04-18 20:34  lypbendlf  阅读(511)  评论(0编辑  收藏  举报