word2vec

Word2Vec

参考:http://yangapku.github.io/2016/05/11/gensim/

model = Word2Vec(sentences, sg=1, size=100,  window=5,  min_count=5,  negative=3, sample=0.001, hs=1, workers=4)

1) sentences: 我们要分析的语料,可以是一个列表,或者从文件中遍历读出。

2) size: 词向量的维度,默认值是100。这个维度的取值一般与我们的语料的大小相关,如果是不大的语料,比如小于100M的文本语料,则使用默认值一般就可以了。如果是超大的语料,建议增大维度。

3) window:即词向量上下文最大距离,这个参数在我们的算法原理篇中标记为cc,window越大,则和某一词较远的词也会产生上下文关系。默认值为5。在实际使用中,可以根据实际的需求来动态调整这个window的大小。如果是小语料则这个值可以设的更小。对于一般的语料这个值推荐在[5,10]之间。

4) sg: 即我们的word2vec两个模型的选择了。如果是0, 则是CBOW模型,是1则是Skip-Gram模型,默认是0即CBOW模型。

5) hs: 即我们的word2vec两个解法的选择了,如果是0, 则是Negative Sampling,是1的话并且负采样个数negative大于0, 则是Hierarchical Softmax。默认是0即Negative Sampling。

6) negative:即使用Negative Sampling时负采样的个数,默认是5。推荐在[3,10]之间。这个参数在我们的算法原理篇中标记为neg。

7) cbow_mean: 仅用于CBOW在做投影的时候,为0,则算法中的xwxw为上下文的词向量之和,为1则为上下文的词向量的平均值。在我们的原理篇中,是按照词向量的平均值来描述的。个人比较喜欢用平均值来表示xwxw,默认值也是1,不推荐修改默认值。

8) min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。

9) iter: 随机梯度下降法中迭代的最大次数,默认是5。对于大语料,可以增大这个值。

10) alpha: 在随机梯度下降法中迭代的初始步长。算法原理篇中标记为η,默认是0.025。

11) min_alpha: 由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小的迭代步长值。随机梯度下降中每轮的迭代步长可以由iter,alpha, min_alpha一起得出。这部分由于不是word2vec算法的核心内容,因此在原理篇我们没有提到。对于大语料,需要对alpha, min_alpha,iter一起调参,来选择合适的三个值。

12)worker,指定了完成训练过程的线程数,默认为1不使用多线程。workers=multiprocessing.cpu_count()

### Word2Vec 技术简介 Word2Vec是一种用于生成词语向量的技术,能够将自然语言中的单词转换成数值型向量表示。这种技术基于神经网络模型,在处理大规模语料库时表现出色[^1]。 ### 使用 Gensim 库构建 Word2Vec 模型 为了简化开发流程并提高效率,可以利用 Python 的 `gensim` 库快速搭建起一个功能完备的 Word2Vec 实现方案: #### 安装依赖包 首先需要安装必要的Python库: ```bash pip install gensim numpy ``` #### 准备训练数据 准备待训练的数据集,并将其转化为适合输入的形式。假设变量名为 `x` ,它应该是一个由多个句子组成的列表,而每个句子又是一系列分词后的字符串数组。 #### 初始化与配置参数 创建一个新的 Word2Vec 对象实例,并设置一些重要的超参选项,比如特征向量维度 (`vector_size`) 和最小词频阈值(`min_count`)等: ```python from gensim.models.word2vec import Word2Vec import numpy as np w2v = Word2Vec( vector_size=100, # 特征向量长度设为100维 min_count=3 # 过滤掉出现频率低于三次的词汇 ) ``` #### 构建词汇表 调用 `.build_vocab()` 方法读取整个语料库以建立词汇索引关系: ```python w2v.build_vocab(x) ``` #### 开始训练过程 通过`.train()`函数启动迭代更新权重的过程,期间指定总的样本数量以及循环轮次数目(epochs): ```python w2v.train( x, total_examples=w2v.corpus_count, epochs=20 # 设定训练周期数为20次 ) ``` 上述代码片段展示了如何使用Gensim库轻松地完成从零开始构建自己的Word2Vec模型的任务[^2]。 ### 关键概念解析 在深入理解Word2Vec的工作原理之前,有必要先熟悉几个核心术语和技术细节,例如神经网络架构的选择(CBOW vs Skip-Gram),优化算法(Hierarchical Softmax 或 Negative Sampling)等等[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值