所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

词袋模型和词向量模型有什么区别?

发布时间:2020-04-12 08:42:43

资讯分类:词向量  模型  区别  什么  模型  向量  概率
词袋模型和词向量模型有什么区别?

1)词袋模型(Bag-of-Words)

Bag-of-Words实际上不考虑词与词之间的相对关系。认为每个词都是独立的关系,但是实际上,我们在自然语言中常用的是一个弱化了这种独立关系的N-gram模型。 可以简单的认为,我们把n个词的组合认为是独立的,但是这n个词之间的关系是语言模型的核心。

n-gram是基于这样一个假设:一个词出现的概率只与这个词前面n-1个词相关。这是一种简化的处理方式,其中n的选取综合考虑计算复杂度和模型效果两个因素。

考虑计算复杂度这个方面,中文词汇的量级一般在N = 20万左右,通过上表,我们可以看出模型的复杂度是N的指数函数O(N^n),实际中n取3是最常用的,谷歌的翻译模型用的n=4。


考虑模型效果方面,理论上,当然是n越大越好,但是n太大,在语料库不变的情况下,单个参数对应的训练数据就少了,使得模型的可靠性降低。n如果太小的话,模型的模型的可区别行降低,综合这几方面,n的选取是一个左右权衡的问题。此外,n-gram模型还涉及平滑化的问题,因为语料库这个有限集合必然会有一些情况,无法包涵其中,要对语料库没有的词汇作平滑处理,这里不细致讲解了,感兴趣的朋友可以在网上进一步学习一下。


2)词向量模型


词向量其实是一个简单的神经网络概率语言模型,这里我们把神经网络分成4个层次来看,Input Layer是我们想要预测的某一个词w的上下文,每一个词是一个向量表示,维数一般是100~400;Projection Layer所做的工作就是将词w的上下文的词向量首尾相接,或者取平均操作,到底哪一种处理方式效果好,在实际项目中实践得出,一般选择首尾相接的形式;Hidden Layer就是设计者自己设定的;最后输出层经过softmax处理后,得到一个N维的向量Yw(整个语料库词典的个数为N),Yw的第i个分量表示w是词典中第i个词的概率。


模型在训练的过程中,得到神经网络的最优参数,词向量其实是模型在训练完成之后的一个附属品,初始化的词向量是随机生成的. 我们可以这样理解,为了根据词的上下文更好的预测出下一个词,我们既要有一个正确的模型的参数,同时也要有一个正确的词语的表示,才能最终得到好的效果,所以神经网络语言模型在训练的过程中,将模型参数和词向量都训练出来了。


3)词袋模型和词向量模型的对比

两者相比,词向量模型有两个比较明显的优势:

a. 相似的词语可以用相似的词向量来表示。比如下图中的两句话,假设第一句话出现的次数远大于第二句话出现的次数,那词袋模型就会认为第一句话出现的概率远大于第二句话出现的概率,即偏向认为第一句话更是一句正确的话。

但是事实上,这两句话中的dog和cat从句法和语法上来说,都是类似的,都是比较常见的小宠物在跑,因此这两句话出现的概率也应该是近似的。词向量模型就能达到这个效果,因为词向量模型认为,上下文相近的词的词义也是相近的,因此dog和cat这两个词的词向量之间即使存在差距,差距也是微小的。语料库中只要出现下面句子中的一种,也会认为另一种出现概率相应地增大。

词向量模型在softmax层自带平滑处理,不需要像词袋模型需要额外考虑处理,相比之下词向量模型更加简单。

留言与评论(共有 0 条评论)
   
验证码:
Top