Word2Vec的参数解释

9 篇文章 5 订阅

使用Gensim训练Word2vec十分方便,训练步骤如下:

1.将语料库预处理:一行一个文档或句子,将文档或句子分词(以空格分割,英文可以不用分词,英文单词之间已经由空格分割,中文预料需要使用分词工具进行分词,常见的分词工具有StandNLP、ICTCLAS、Ansj、FudanNLP、HanLP、结巴分词等);

2.将原始的训练语料转化成一个sentence的迭代器,每一次迭代返回的sentence是一个word(utf8格式)的列表。可以使用Gensim中word2vec.py中的LineSentence()方法实现;

3.将上面处理的结果输入Gensim内建的word2vec对象进行训练即可:
 

from gensim.models import Word2Vec

model = Word2Vec(LineSentence(inp), size=100, window=10, min_count=3,
            workers=multiprocessing.cpu_count(), sg=1, iter=10, negative=20)

具体的训练参数解释如下:


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。

· max_vocab_size: 设置词向量构建期间的RAM限制,设置成None则没有限制。

· sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)。

· seed:用于随机数发生器。与初始化词向量有关。

· workers:用于控制训练的并行数。

· min_alpha:学习率的最小值。

· sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。

· hs: 如果为1则会采用hierarchica·softmax技巧。如果设置为0(默认),则使用negative sampling。

· negative: 如果>0,则会采用negativesampling,用于设置多少个noise words(一般是5-20)。

· cbow_mean: 如果为0,则采用上下文词向量的和,如果为1(default)则采用均值,只有使用CBOW的时候才起作用。

· hashfxn: hash函数来初始化权重,默认使用python的hash函数。

· iter: 迭代次数,默认为5。

· trim_rule: 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)。

· sorted_vocab: 如果为1(默认),则在分配word index 的时候会先对单词基于频率降序排序。

· batch_words:每一批的传递给线程的单词的数量,默认为10000。

 

一些参数的选择与对比:

1.skip-gram (训练速度慢,对罕见字有效),CBOW(训练速度快)。一般选择Skip-gram模型;

2.训练方法:Hierarchical Softmax(对罕见字有利),Negative Sampling(对常见字和低维向量有利);

3.欠采样频繁词可以提高结果的准确性和速度(1e-3~1e-5)

4.Window大小:Skip-gram通常选择10左右,CBOW通常选择5左右。

综上,就完成了一个Word2vec模型的训练过程。可以将训练好的模型保存在文件中:
 

model.save_word2vec_format(outp2, binary=False)

 

当然,也可以调用load()函数将保存的模型加载进来:

from gensim.models import Word2Vec
model = Word2Vec.load("D:/data/W2V/word2vector.model")
print(model.similarity('Chinese', 'China'))

 

  • 22
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值