NLP文本分类实战(二)-- 预训练word2vec模型

词向量模型word2vec的理解

1、CBOW与Skip-Gram模型

 word2vec模型可以理解为简化的神经网络,主要包含两种词训练模型:CBOW与Skip-Gram模型。其模型结构如下:

CBOW模型:根据中心词w(t)的词来预测中心词。该模型的第一层是输入层,输入的值是周围每个词的one-hot编码形式,第二层隐含层是对输入值做了加权求和SUM操作,这里并不想神经元一样,这里没有激活函数进行非线性变换,输出值的维度和输入值得维度是一致的。

Skip-gram模型:根据中心词W(t)来预测周围的词。该模型的第一层也是输入层,输入值W(t)中心词是one-hot形式,隐含层只是做线性变换,输出的是输出值的softmax转换后的概率。模型的神经网络结构如下:

 神经网络是可以有输入值、输出值和模型参数决定。在这里,我们认为模型的参数就是隐含层的权重矩阵。隐含层的输出是每个输出单词的“嵌入词向量”,如下图所示:

上式子,输入的是中心词one-hot编码形式,事实上,在做运算是并不是直接进行算法运算,而是利用one-hot编码的特性,直接用过输入值中的位数的索引来寻找隐含层中权重矩阵中对应的索引行。

词向量的优点:一、降低输入的维度,如上面式子所示,5维的one-hot编码转换为了三维的形式。二、增加了语义信息,即两个相互接近的词向量也是具有一定的相似性。

2、word2vec的实现API

class gensim.models.word2vec.Word2Vec(sentences=None, corpus_file=None, 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>, iter=5, null_word=0, trim_rule=None, 
                                    sorted_vocab=1, batch_words=10000, compute_loss=False, 
                                    callbacks=(), max_final_vocab=None)
主要参数介绍如下:

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

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

3) window:即词向量上下文最大距离,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,则算法中的xw为上下文的词向量之和,为1则为上下文的词向量的平均值。在我们的原理篇中,是按照词向量的平均值来描述的。个人比较喜欢用平均值来表示xw,默认值也是1,不推荐修改默认值。

8) min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。9) iter:随机梯度下降法中迭代的最大次数,默认是5。对于大语料,可以增大这个值。

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

11) min_alpha: 由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小的迭代步。

 

词向量的训练代码:

import logging
import gensim
from gensim.models import word2vec

wordVec = gensim.models.KeyedVectors.load_word2vec_format("word2Vec.bin", binary=True)

sentences = word2vec.LineSentence("../data/preProcess/wordEmbdiing.txt")
a = list(sentences)
len(a)

model = gensim.models.Word2Vec(sentences, size=200, sg=1, iter=8)  
model.wv.save_word2vec_format("./word2Vec" + ".bin", binary=True) 

# 加载bin格式的模型
#wordVec = gensim.models.KeyedVectors.load_word2vec_format("word2Vec.bin", binary=True)

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WordVec是一个词向量预训练模型。它可以将每个单词表示为一个固定长度的向量,使得具有相似上下文的单词在向量空间中距离更近。Word2Vec模型有两种训练模型:CBOW(Continuous Bag of Words)和Skip-Gram。CBOW模型试图通过上下文中的周围单词来预测中心单词,而Skip-Gram模型则相反,通过中心单词来预测周围单词。这两种模型都在大规模数据上进行训练,并且可以用于提取词特征、句子特征,以及提升自然语言处理(NLP)任务的性能,如分类、序列标注和序列转换。Word2Vec的提出具有重要意义,为后续更广泛应用的GloVe、ELMo、GPT、BERT等模型的研究奠定了基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【原创】预训练词表示之word2vec(一)](https://blog.csdn.net/u010567574/article/details/109501184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [NLP文本分类实战)-- 预训练word2vec模型](https://blog.csdn.net/weixin_40437821/article/details/102638337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DYF-AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值