Python自然语言处理—词嵌入 word2vec

Python自然语言处理这本书后几章感觉更偏向一些文法知识,我简单读了一下放弃了。现在开始学

https://github.com/yandexdataschool/nlp_course,本章将介绍第一周的内容——词嵌入。

一 Word Embedding

词如何转为向量呢?最简单的方法就是维护一个长的词典,使用one-hot来表示一个词,吃饭 [0,0,0,0,1,...,0,0,0]。基于这样的词向量,句子向量可以通过简单的词向量累加获得,接着就可以用句向量去做一些文本分类。

one-hot的词向量有两个缺点

1,矩阵稀疏,如果词典长100,000,那么每个词向量其实长度是10万,能否找到一种方法将长度10万的词向量嵌入到低纬度的空间中呢?这也是词嵌入名字的由来。

2,忽视了词与词之间的关系。例如番茄和西红柿其实是一个意思,英国+首都和伦敦是一个意思。如何将这种关系体现在词向量中呢?

词嵌入的方法有很多,可以通过矩阵分解来完成也可以通过机器学习来完成,下面介绍Google推出的word2vec的词嵌入方法。

 

二 word2vec

1. 分布相似性原理

首先模型是建立在分布相似性理论上的,即相似的词上下文也是相似的。所以‘喜欢’和‘讨厌’最终训练的词向量是相似的,当然数据量足够大,数据样本质量足够高可以训练出 ‘喜欢’和‘讨厌’的词向量之间差一个否定词的向量,就是这么神奇。网上常用的例子是国王-男性+女性 = 王后。

2. word2vec有两种模型SG和CBOW

Skip-gram的核心思想是用当前词预测上下文,如下图所示。有人会问input是词,output是上下文,那么我们需要的词向量呢?

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值