词向量:对word2vec的理解

本文介绍了词向量的概念,从one-hot词向量到分布式词向量的转变,重点探讨了Word2Vec模型,包括CBOW和Skip-gram模型,以及Hierarchical Softmax和Negative Sampling两种加速训练的技巧,揭示了词向量在自然语言处理中的重要性。
摘要由CSDN通过智能技术生成

一、词向量

在自然语言处理中,需要把自然语言转化为计算机可以理解的形式,一般采用向量空间模型(VSM)进行表示,在这里就是词向量。

1、one-hot词向量

在中文处理中,将分词的结果经过降噪等预处理后,选择出来的特征在进行权重计算时,采用布尔权重,就能够得到one-hot词向量。

从表现形式上来看,向量的长度是词典的大小V,同时它的分量只有一个是1,其他全是0,1的位置对应词在词典中的索引。

但是这种词向量的长度是随着词典的大小增加而增加,同时数据非常稀疏。这样很容易受到维数灾难的困扰,而且由于是独立形式的词索引,无法体现出词与词之间的联系。

2、分布式词向量

分布式词向量被提出来解决one-hot向量的不足,它的基本思想是:通过某种训练将语料中的每一个词映射成一个固定长度的向量,所有的词向量组成一个向量空间,这样就可以把词向量对应成空间中的一个点。

分布式词向量的做法很好解决one-hot词向量的问题:词向量的长度可以自行确定,词与词直接的关系也可以由空间中点的距离进行衡量。机器学习中提到的word2vec或者深度学习中的word embedding都可以理解为训练分布式词向量的方法。

上面提到的训练词向量的方法,比较流行的都是使用语言模型。

二、语言模型

语言模型的作用实际上是确定字符串s作为一个句子出现的概率,词向量可以看成在训练语言模型的过程中出现的副产品。

统计语言模型的训练方式常见的有:n-gram模型、神经网络等方法,Word2vec是基于神经网络的方法来进行训练的,关于语言模型可以参考:语言模型

三、Word2Vec

1、什么是word2vec?

word2vec的本质是一个神经网络语言模型,基于语言模型进行分布式词向量的训练。

与传统神经概率语言模型不同的是,作者提出了新的方法进行训练:CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。同时为了加快训练速度,使用Hierarchical Softmax和Negative Sampling这两种tricks。

2、CBOW模型和Skip-gram模型


上面可以看到,连个模型都包含三层:输入层,投影层和输出层。

(1)CBOW模型

CBOW模型是是在已知当前词的上下文的情况下,预测当前词

(2)Skip-gram模型

Skip-gram模型则是在已知当前词的情况下,预测其上下文

(3)模型其他知识

从形式上来看,这两种模型与n-gram模型的思想很相似。在统计语言模型中,n-gram通过引入马尔科夫假设,假设当前词只与在它之前出现的n个词有关。这实际上隐式的带入了一种思想,当前词可以在某种形式上由其上下文代替。而这种思想也是符合人的思维的,通过上下文猜测当前词(填空)、通过当前词猜测上下文(造句)。

word2vec用了一种称为window的说法,实现了类似的上下文范围划定功能。

3、基于Hierarchical Softmax的CBOW模型


上述模型包括三层:输入层、投影层和输出层。简单的来说:

* 输入层包含了中2c个词的词向量,...,

* 投影层将输入层的2c个向量做求和累加,合并成向量。

* 输出层对应一颗huffman二叉树,将V分类转换成多次二分类,得到输出。

具体流程,下面通过gensim.models.Word2vec源码,进行说明。

(1)遍历语料,构造词典

代码详见Word2vec.scan_vocab(),如下:

for sentence_no, sentence in enumerate(sentences):
    ...
    for word in sentence:
       vocab[word] +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值