NLP自然语言处理(四)—— Word2Vec(CBOW & Skip-Gram) & Python实现

Word2Vec

NLP非常核心、非常重要、非常基础的技术

Word2Vec就是用神经网络把词转换成向量的模型

Word2Vec的发展

WordNet是Word2Vec的鼻祖

Word2Vec是2013年由Mikolov提出

Word2Vec模型

man比woman和king更像

所以可以看出,词之间也有远近关系的

Word2Vec的不足

①使用了唯一的词向量,对于多义词没有很好的效果

②context很小,没有使用全局的cooccur 对cooccur的利用少

Word2Vec的两个模型——CBOW和Skip-Gram

CBOW和Skip-Gram相反

CBOW是根据上下文来预测一个词

       例如一个句子,“我爱机器学习”,我们输入我、机器学习,让它预测爱

Skip-Gram是根据一个词,来预测其上文和下文

CBOW连续词袋模型

CBOW, Continous Bag of Word Model

和正常的神经网络一样,都是加权求和,即对wx+b求和,然后通过softmax得到的概率最大的词作为我们的结果

CBOW的特点

①没有隐层

       Word2Vec是一个千层的神经网络

②结合双向上下文,上下文词序无关

③输入低维稠密,映射层求和

     输入是低维稠密,所以计算量还是比较大的

     映射层即上图的PROHECTION

网络结构

Skip-Gram模型

没有隐层

映射层也可以省略

输入爱,输出我,机器学习

当然,输出什么结果,即预测出什么结果,是和语料数据集有关系的

网络结构

Python实现

      在这个例子中,我们使用gensim库中的Word2Vec类来训练一个简单的Word2Vec模型。sentences是一个包含多个句子的列表,每个句子又是一个单词列表。size参数指定了生成的每个单词向量的维度大小,window参数指定了Word2Vec算法中窗口的大小,min_count参数指定了单词的最小出现次数,workers参数指定了训练过程中使用的CPU核数。

from gensim.models import Word2Vec
sentences = [["I", "love", "machine", "learning"],
             ["I", "love", "deep", "learning"],
             ["I", "enjoy", "studying", "machine", "learning"]]
model = Word2Vec(sentences, size=10, window=2, min_count=1, workers=4)

#一旦我们训练好了Word2Vec模型,我们可以使用以下代码来查找与指定单词最相似的单词:
print(model.wv.most_similar("machine"))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值