NLP基础学习7-word2vec

这次实在没有时间我偷一点懒,写的简略些。虽然这一次的任务是NLPer熟悉的不能再熟悉的word2vec, 具体来看:

  1. 文本表示:从one-hot到word2vec。
  2. 词袋模型:离散、高维、稀疏。
  3. 分布式表示:连续、低维、稠密。word2vec词向量原理并实践,用来表示文本。

从one-hot 到word2vec

独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
**优点:**解决了分类器不好处理离散数据的问题,并且在一定程度上也起到了扩充特征的作用。
缺点: 在文本特征表示上有些缺点就非常突出了。首先,它是一个词袋模型,不考虑词与词之间的顺序(文本中词的顺序信息也是很重要的);其次,它假设词与词相互独立(在大多数情况下,词与词是相互影响的);最后,它得到的特征是离散稀疏的。更大的问题是其不满足我们前面的期望——相似的词的距离较近而不相似的较远。对于one-hot向量来说,相同的词距离是0,而不同的词距离是1。这显然是有问题的,因为cat和dog的距离肯定要比cat和apple要远。但是在one-hot的表示里,cat和其它任何词的距离都是1

为了解决上述缺陷,提出了word2vec。其实这基于Firth 教授在1957年提出一个分布式语义的假设,即A word’s meaning is given by the words that frequently appear close-by (一个词的语义是由它周围经常出现的词决定的)。 word2vec的本质就是求词向量的框架。这里对于每一个词用一个低纬度的稠密向量来表示,词是由所有维度共同表示,单独一维并没有的独立的含义。

从数学角度看, word2vec的目标函数: J ( θ ) = − 1 T l o g ( L ( θ ) ) J(\theta)= -\frac{1}{T}log(\mathcal{L}(\theta)) J(θ)=T1log(L(θ))
其中, L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m ; j ! = m P ( w t + 1 ∣ w t ; θ ) \mathcal{L}(\theta)=\prod_{t=1}^T \prod_{-m \le j \le m; j != m}P(w_{t+1}|w_t;\theta) L(θ)=t=1Tmjm;j!=mP(wt+1wt;θ)

对于word2vec的具体求解,目前主流的是两种方法,即 CBOW 和 skip-gram。两种都采用了滑动窗口,前者是用窗口内的其他词去预测中心词,而后者则是用中心词去预测窗口的其他词。现实中,两者的效果接近。

CBOW
Skip-gram
从实现的角度,采用的是最基本的神经网络(输入层->隐藏层->输出层),如下图所示CBOW的实现:
CBOW实现
关于其他word2vc的方式,比如glove, 我会在后面有时间补上。

参考文献

  1. 郭耀华的blog,NLP之——Word2Vec详解,https://www.cnblogs.com/guoyaohua/p/9240336.html
  2. cs224n, lecture 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值