深度学习——NLP中词的表示方法&word embedding&word2vec

本文详细探讨了NLP中词的表示方法,从传统知识表示到词的独热表示,再到分布式表示,特别是词嵌入(word embedding)和word2vec、GloVe的原理。重点解释了词的分布式表示如何捕捉词义,包括基于矩阵的分布表示如GloVe和基于神经网络的分布表示如word2vec。最后,简要介绍了从词嵌入到BERT模型的发展,展示了预训练模型在NLP中的重要性。
摘要由CSDN通过智能技术生成

一直有点没明白标题中三者的关系,在此记录下来自己查阅之后的看法,有不对的地方,请大家指正,谢谢!

关于NLP中,有各种不同的表达,如: 词向量、word embedding、分布式表示、word2vec、glove等等,这一锅粥的名词术语分别代表什么,他们具体的关系是什么,他们是否处于平级关系?

希望写完这篇文章后,自己能清楚地理清他们之间的关系。

https://blog.csdn.net/sisteryaya/article/details/80879711  

一、NLP中词的表示方法

word representation方式:

  • 传统方法Knowledge-based representation
  • 词的独热表示one-hot representation
  • 词的分布式表示distributed representation

1、传统方法Knowledge-based representation:

Knowledge-based representation根据语言学家们制定的 WordNet ,其中包含了字与字之间的关联。来对文字进行表示。

  • 调用方法

from nltk.corpus import wordnet

  • 局限性
  1. 文字会不断地发展
  2. 主观性较强,不同的人之间有不同的理解
  3. 工作量比较大
  4. 字与字之间的相似性很难定义

2、词的独热表示one-hot representation

One-Hot编码,又称为一位有效编码,独热编码,将所有需计算的文字组成一个向量,给出一个文字,它在向量中的位置标为1,其余都为0。

  • 限制:无法捕捉两个word之间的关系,也就是没有办法捕捉语义信息

例如:car和motorcycle,无论怎样计算相似度都为0。

  • 期望:用另一种方式捕捉真正有关字义的部分。
  • 方法:当car与motorcycle以及它们相邻的单词(neighbor)存在某些关系时,可以认为这两个单词之间具有相关性。即Neighbors,如何确定neighbor的范围呢?
  1. 方式1,full document 。full document可以认为在同一篇文章中出现过,文章中的文字之间可以根据文章确定一个相关的主题。
  2. 方式2,windows 。windows限定在某个窗口内,可以是几句话或者几个单词之内范围,这种方式可以获得词性等信息。

词袋模型中,每个单词向量化之后对应维度上的值,还可以用一个权重表示,这个权重由TF-IDF计算得到,用来反映这个词在整篇文档中的重要性程度;而不仅仅是用上图中所示的词频后者直接不考虑词频。

这种one-hot不能捕获词和词之间的关系,因此有了接下来的  分布式表示distributed representation

3、分布式表示distributed representation

1. 基于矩阵的分布表示

    基于矩阵的分布表示通常又称为分布语义模型,在这种表示下,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。

常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示。

1.1  High-dimensional sparse word vector

  • 思想

        基于neighbour,设置Co-occurrence Matrix共现矩阵

  • 限制
  1. 随着文章字数增加矩阵的大小也会迅速增加;
  2. 计算量会迅速增加。之前one-hot形式,由于只有一列存在非0数字,所以维度即使再大,计算量也不会增加太多。而现在则不同,每列都有可能有数个非0数字;
  3. 大部分的有效信息,集中在少数区域。没有有效地“散开”,所以robustness会比较差
  4. 当增加一个word的时候整个矩阵都要更新
  • 期望

       找到一个低维向量

1.2  Low-dimensional sparse word vector

  • 思想

       降维dimension reduction,例如通过SVD等,从k维降为r维

        

  • 限制
  1. 计算量比较大
  2. 新增文字后,需要重建矩阵并重新计算矩阵和降维
  • 期望

       直接学习出低维向量,而不是从资料中学习到高维矩阵再进行降维

       由此引出了word embedding

2. 基于聚类的分布表示
3. 基于神经网络的分布表示,词嵌入( word embedding)

    基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation)

  • 思想

        directly learn low-dimensional word vectors

  • 两种方法

       word2vec (Mikolov et al. 2013)

              skip-gram

              CBOW

        Glove (Pennington et al., 2014)

              CBOW中,在做语言模型任务的时候,我把要预测的单词抠掉,然后根据它的上文 Context-Before 和下文 Context-after 去预测单词。以“我爱北京天安门”这句话为例。假设我们现在关注的词是“爱”,C=2时它的上下文分别是“我”,“北京天安门”。CBOW模型就是把“我” “北京天安门” 的one hot表示方式作为输入,也就是C个1xV的向量,分别跟同一个VxN的大小的系数矩阵W1相乘得到C个1xN的隐藏层hidden layer,然后C个取平均所以只算一个隐藏层。这个过程也被称为线性激活函数(这也算激活函数?分明就是没有激活函数了)。然后再跟另一个NxV大小的系数矩阵W2相乘得到1xV的输出层,这个输出层每个元素代表的就是词库里每个词的事后概率。输出层需要跟ground truth也就是“爱”的one hot形式做比较计算loss。这里需要注意的就是V通常是一个很大的数比如几百万,计算起来相当费时间,除了“爱”那个位置的元素肯定要算在loss里面,word2vec就用基于huffman编码的Hierarchical softmax筛选掉了一部分不可能的词,然后又用nagetive samping再去掉了一些负样本的词所以时间复杂度就从O(V)变成了O(logV)。Skip gram训练过程类似,只不过输入输出刚好相反。

  • 优点
  1. 任意两个词语之间的相似性很容易计算
  2. 可以使用在任何NLP监督任务上作为input,vector包含了语义信息
  3. 可以利用NN通过训练更新word representation(word embedding不是固定的,可以根据task微调)

神经网络词向量表示技术通过神经网络技术对上下文,以及上下文与目标词之间的关系进行建模。由于神经网络较为灵活,这类方法的最大优势在于可以表示复杂的上下文。在前面基于矩阵的分布表示方法中,最常用的上下文是词。如果使用包含词序信息的 n-gram 作为上下文,当 n 增加时, n-gram 的总数会呈指数级增长,此时会遇到维数灾难问题。而神经网络在表示 n-gram 时,可以通过一些组合方式对 n 个词进行组合,参数个数仅以线性速度增长。有了这一优势,神经网络模型可以对更复杂的上下文进行建模,在词向量中包含更丰富的语义信息。
这一节请阅读:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值