您现在的位置是:首页 >技术教程 >gensim.models.word2vec() 参数详解网站首页技术教程
gensim.models.word2vec() 参数详解
简介gensim.models.word2vec() 参数详解
1. Word2vec简介
Word2vec是一个用来产生词向量的模型。是一个将单词转换成向量形式的工具。 通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
2.Word2vec参数详解
classgensim.models.word2vec.Word2Vec(sentences=None, corpus_file=None, vector_size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, ns_exponent=0.75, cbow_mean=1, hashfxn=<built-in function hash>, epochs=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000, compute_loss=False, callbacks=(), comment=None, max_final_vocab=None, shrink_windows=True)
参数 | 说明 |
---|---|
sentences | 可以是一个list,对于大语料集,建议使用BrownCorpus,Text8Corpus或lineSentence构建。 |
vector_size | word向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好。推荐值为几十到几百。 |
alpha | 学习率 |
window | 表示当前词与预测词在一个句子中的最大距离是多少。 |
min_count | 可以对字典做截断。词频少于min_count次数的单词会被丢弃掉,默认值为5。 |
max_vocab_size | 设置词向量构建期间的RAM限制。如果所有独立单词个数超过这个,则就消除掉其中最不频繁的一个。每一千万个单词需要大约1GB的RAM。设置成None则没有限制。 |
sample | 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5) |
seed | 用于随机数发生器。与初始化词向量有关。 |
workers | 参数控制训练的并行数。 |
sg | 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。 |
hs | 如果为1则会采用hierarchica·softmax技巧。如果设置为0(default),则negative sampling会被使用。 |
negative | 如果>0,则会采用negative samping,用于设置多少个noise words。 |
cbow_mean | 如果为0,则采用上下文词向量的和,如果为1(default)则采用均值。只有使用CBOW的时候才起作用。 |
hashfxn | hash函数来初始化权重。默认使用python的hash函数。 |
epochs | 迭代次数,默认为5。 |
trim_rule | 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)或者一个接受()并返回RULE_DISCARD,utils。RULE_KEEP或者utils。RULE_DEFAULT的函数。 |
sorted_vocab | 如果为1(default),则在分配word index 的时候会先对单词基于频率降序排序。 |
batch_words | 每一批的传递给线程的单词的数量,默认为10000 |
min_alpha | 随着训练的进行,学习率线性下降到min_alpha |
3.案例实现
gensim库提供了一个word2vec的实现,我们使用几个API就可以方便地完成word2vec
from gensim.models import Word2Vec
import re
documents = ["The cat sat on the mat.", "I love green eggs and ham."]
sentences = []
# 去标点符号
stop = '[’!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]+'
for doc in documents:
doc = re.sub(stop, '', doc)
sentences.append(doc.split())
model = Word2Vec(sentences, vector_size=5, window=1, min_count=1, workers=4, sg=1)
# vector_size:词向量的维度 window:窗口的大小,sg=1使用Skip-Gram,否则使用CBOW
print(model.wv['cat'])
# [-0.16315837 0.08991595 -0.08274154 0.0164907 0.16997238]
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。