NLP -Word2Vector

1. 什么是word2vector?

我们先来看一个问题,假如有一个句子 " the dog bark at the mailman"。
假如用向量来表示每个单词,我们最先想到的是用one hot 编码的方式来表达每个单词,具体来说。
the 可以表示为 [1,0,0,0,0]
dog 可以表示为 [0,1,0,0,0]
bark 可以表示为 [0,0,1,0,0]
at 可以表示为[0,0,0,1,0]
mailman可以表示为[0,0,0,0,1]

我们可以看到每个单词其实就用一个向量来表示。我们发现几个问题:
第一,每个向量之间相互正交的(内积为0)。也就是说词与词之间是没有任何关系的。
第二,每个词的向量维度和不同词的个数有关。比方说,在上面的这个句子里,有5个不同的词,所以向量的维度是5。然而往往现实中,一篇文章的中不同的词的个数是很多的。这样,向量的维度会非常的高。
这种对词的向量表示方法存在着以上的问题,忽略了词与词之间的关系(比如说,dog和cat都是动物,并非完全无关系)。维度太高的向量作为模型输入会导致模型变的复杂(模型复杂需要更多的训练样本才能够收敛)

那么是否存在一种更加合理的对词的用向量的表达方式呢?有的,其实就是word embedding。
word embedding说的简单一点其实就是将高维稀疏的向量降维成稠密的低维向量。(一种高维到低维的映射)

那么如何实现word embedding?
w2v其实就是一种高效实现word embedding的工具。
所以,如果用一句话来描述word2vector的话你会怎么描述?简单的说,我觉得可以这么说w2v其实是一种将单词转化向量的工具。这一种向量的其实是对单词更有效的表达。

2.word2vector怎么做?

Skip-Gram& CBOW

在介绍w2v模型之前,先介绍两个模型。一个是Skip-Gram和CBOW(Continuous Bag-of-Words)。
首先看CBOW,它的做法是,将一个词所在的上下文中的词作为输入,而那个词本身作为输出。
在这里插入图片描述
再来看Skip-Gram,它的做法和CBOW相反,将一个词所在的上下文中的词作为输出,而词本身作为输入
在这里插入图片描述
另外,我们介绍这两个模型都会涉及到的一个重要参数。
window_size:窗口大小。
举一个例子,还是上面那句话:" the dog bark at the mailman"
假设window_size取1时,利用CBOW模型可以得到:
([the,bark],dog)
([dog,at],bark)
([bark,the],at)
([at,mailman],the)
一共4组数据。
同样滴,假设window_size还是1,利用Skip-Gram模型可以得到:
(dog,[the,bark])
(bark,[dog,at])
(at,[bark,the])
(the,[at,mailman])
对于每组数据会稍微做一下处理。
比如对于第一组 (dog,[the,bark])一般处理成
(dog,the),(dog,bark)。类似有:
(bark,dog),(bark,at),(at,bark),(at,the),(the,at),(the,mailman)共8组数据。

Word2Vector

下面就可以直接介绍如何进行w2v,上面提到w2v可以看作是一个将高维空间映射到低维空间的过程,用一个单层神经网络就可以实现这种功能(和自编码器有点类似其实)。
对于CBOW,假如还是上面的句子,训练数据是([the,brak],dog)那么网络的输入输出如下图所示:

在这里插入图片描述
这里有几个细节:
1.上面介绍CBOW模型的时有一个模型的结构图,其中的SUM意思其实就是把各个上下文的词one-hot后的向量相加。
比如对于the的向量是[1,0,0,0,0]。bark向量是[0,0,1,0,0],SUM之后就是[1,0,1,0,0]这就是网络的输入。
输出就是[0,1,0,0,0]-dog
2.我们所谓的embedding vetcor其实就第二个红框里的线,每一根线其实就是一个权值。
3.第二个框里的红线其实就是dog这个单词的embedding结果(由5维变成3维)
4.这个单层NN训练完毕之后有用的部分就是embedding martrix这部分,其大小为 输入个数(词汇表长度)×embedding后的维度。
类似对于Skip-Gram模型有:

在这里插入图片描述

原发:word2vector入门教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值