当前位置:   article > 正文

文本表示(Representation)_文本表示向量的英文

文本表示向量的英文

文本表示(Representation)

image-20221128150736539

自然语言处理问题中,一般以词作为基本单元,例如我们想要分析“我爱中国”这句话的情感,一般的做法是先将这句话进行分词,变成,,中国。由于神经网络无法处理词,所以我们需要将这些词通过某些办法映射成词向量。词向量可以被认定为词的特征向量,可以用作代表这个词。通常把词映射为实数领域向量的技术也叫词嵌入(Word embedding).

image-20221124123220710

独热编码(one-hot representation)

假如我们要计算的文本中一共出现了4个词:猫、狗、牛、羊。向量里每一个位置都代表一个词。所以用one-hot来表示就是:

  • [ 1 , 0 , 0 , 0 ] [1,0,0,0] [1,0,0,0]
  • : [ 1 , 0 , 0 , 0 ] [1,0,0,0] [1,0,0,0]
  • : [ 0 , 1 , 0 , 0 ] [0,1,0,0] [0,1,0,0]
  • : [ 0 , 0 , 1 , 0 ] [0,0,1,0] [0,0,1,0]
  • : [ 0 , 0 , 0 , 1 ] [0,0,0,1] [0,0,0,1]

但是在实际情况中,文本中很可能出现成千上万个不同的词,这时候向量就会非常长。其中大部分都是0填充。

one-hot的缺点如下:

  1. 无法表达词语之间的关系
  2. 这种过于稀疏的向量,导致计算和存储的效率都不高

整数编码

这种方式也非常好理解,用一种数字来代表一个词,对应钱买你的例子则是:

  • : 1
  • :2
  • :3
  • :4

将句子里的每个词拼起来就是可以表示一句话的向量。

整数编码的缺点如下:

  1. 无法表达词语之间的关系
  2. 对于模型解释而言,整数编码可能具有挑战性

Word2vec

Word2vec 是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量它们之间的关系。挖掘词之间的联系。

模型整体理解

Word2vec的训练模型本质上是只具有一个隐含层的神经元网络,如下图:

img

它的输入是采用One-Hot编码的词汇表向量,它的输出也是One-Hot编码的词汇表向量。使用所有的样本,训练这个神经元网络,等到收敛之后,从输入层到隐含层的那些权重,便是每一个词的Distributed Representation的词向量。比如,上图单词的Word embedding后的向量便是矩阵 W V ∗ N W_{V * N } WVN的第i行的转置。这样我们就把原本维度为 V V V的词向量变成了维数为N的词向量,并且词向量间保留了一定的相关关系。

Google在关于Word2Vec的论文中提出了CBOWSkip-gram两种模型,CBOW适合于数据集较小的情况,而Skip-Gram在大型语料中表现更好。其中CBOW如上图左部分所示,使用围绕目标单词的其他单词作为输入,在映射层做加权处理后输出目标单词。与CBOW根据语境预测目标单词不同,Skip-gram根据当前单词预测语境,如下图右部分所示。假如我们有一个句子“There is an apple on the table”作为训练数据,CBOW的输入为(is,an,on,the),输出为apple.而Skip-gram的输入为apple,输出为(is, an, on , the)。

img

我的理解

好吧,上面这些是从其它地方copy来的。其实讲得挺好的了,大致可以理解其中的工作原理。我又针对其中的细节进行进一步分析,可以根据下图进一步梳理其中的运作流程(将上述将上面的输入输出流程拆分为最小单元,即输入一个字的one-hot得到一个输出结果,例如输入一个 x 1 x_{1} x1得到一个 Y 1 Y_{1} Y1):

image-20221128101731224

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/819455
推荐阅读
相关标签