内容理解:技术、算法与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 文本表示的方法

1.One-Hot编码

One-Hot编码又称独热编码、一位有效编码。这一编码使用N位状态寄存器来对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时刻,只有一位有效。文本内容的One-Hot编码的状态空间通常为词汇表,而词向量维度等于词汇表大小。

使用One-Hot编码提取文本特征时,通常采用词袋模型。接下来举例说明提取特征的过程,假设整个语料包含三句话。

❑我爱北京天安门

❑天安门在北京

❑北京是我的家乡

我们从整个语料中提取出词表:我、爱、北京、天安门、在、是、的、家乡。词表大小为8,每个词按顺序编号为1到8。那么语料中三句话的One-Hot编码如下。

❑[1,1,1,1,0,0,0,0]

❑[0,0,1,1,1,0,0,0]

❑[1,0,1,0,0,1,1,1]

One-Hot编码可以简单方便地表示文本,可以扩充特征数量。当词表非常大的时候,这一编码方式得到的文本向量的维度也会很大。此外,词袋模型只关注某个词是否出现,并不关注词的顺序信息以及上下文信息,词的顺序这一重要信息被完全丢弃了。

2.TF-IDF

TF-IDF中文名为“词频-逆文本频率”,是信息检索领域常用的加权技术。文本的TF-IDF表征同样属于词袋模型,它和One-Hot模型的区别在于每个词的特征包含了权重信息。

具体来说,TF-IDF由两部分组成。

❑第一部分是TF(Term Frequency,词频),指的是某一个词语在文本中出现的频率。

❑第二部分是IDF(Inverse Document Frequency,逆文本频率),是词语的普遍性的度量。

高频词包含的信息往往少于低频词,例如“的”“一”“在”,这些高频词并不包含太多的信息,而“猫”“苹果”这些词的频率相对较低,但包含的信息更加丰富。

IDF具体的计算公式为,其中N为文档总数,Nx)为包含单词x的文档数量。包含单词x的文档数量越少,说明单词x越独特,重要性越高。有一种特殊情况,即单词x特别稀有,导致没有文档包含x,此时分母Nx)等于0。为了避免这种情况发生,计算IDF时需要进行平滑化操作,常见的平滑操作为

最终,TF-IDF的计算公式为

TF-IDF(x)=TF(x)×IDF(x

某个具有高TF-IDF值的词语,既要在当前文档中出现频率较高,又要不经常出现在其他文档中,可以认为这种词语是当前文档的关键词。TF-IDF表征利用了更多的词频信息,比One-Hot编码的表征能力更强。

TF-IDF表征常用于传统机器学习文本分类方法中,对于更关注某些特定关键词而不那么关注句子语义的分类任务而言,可以取得很好的分类效果。举例来说,在新闻分类(体育、财经、娱乐等类别)任务中,包含“足球”关键词的内容大概率为体育类;包含“股票”关键词的内容大概率为财经类;包含“演唱会”关键词的内容大概率为娱乐类。这一表征方法有着悠久的历史,现在依然实用。

TF-IDF表征方法简洁高效,有着很多优点,在文本挖掘、信息检索领域都有广泛应用。但是,这一表征也有着词袋模型固有的缺点,即特征的维度与词表大小有关,当词表过大时会出现“维度灾难”的问题。同时,因为TF-IDF方法同样只关注关键词频率信息,而不关注词语顺序这一重要信息,也不能对语义这一更高层次的信息建模,所以难以解决与语义相关的更复杂的任务。

3.word2vec

与词袋模型的文本表示不同,word2vec是分布式文本表示。分布式表征使用低维向量来表示多种信息,常见的分布式表征是RGB(Red Green Blue)颜色表示法,红绿组合成黄色,红绿蓝组合成白色,红绿蓝以不同比重组合能得到其他颜色。

RGB值的概念引出了三维“颜色空间”,3个维度分别表示红、绿、蓝三原色,每个维度的数值范围是0~255,取值为整数,每个维度也可以用两位的十六进制数表示,某个具体的颜色可以用6位十六进制数表示。例如红色的RGB值为[255,0,0],用十六进制表示为#FF0000;黑色的RGB值为[0,0,0],用十六进制表示为#000000;粉色的RGB值为[255,192,203],用十六进制表示为#FFC0CB。

word2vec是文本的分布式表征,其将文本的信息压缩成一个低维的向量,向量维度通常是100、200或300。word2vec包含了Skip-gram和CBOW(Continuous Bag Of Words,连续词袋)两个模型,Skip-gram模型的任务是预测中心词的上下文词,而CBOW模型的任务是根据上下文词预测中心词,两个模型最终的目标是学习词表中每个词语的表征信息,模型的结构如图1-1所示,其中t表示序列的相对位置。

图1-1 CBOW和Skip-gram模型结构示意图

下面简要介绍Skip-gram模型的原理。Skip-gram模型需要预测给定目标词的上下文词。给定一对词语(w,c),w是给定目标词,那么词语c出现在w上下文中的概率可以表示为Pc|w)。我们使用噪声对比估计(Noise Contrastive Estimation,NCE)的方法来计算Pc|w),当cw的上下文时,Pc|w)的计算公式如下。

PD=1|w,c)=σ(wTc

c不是w的上下文时,Pc|w)的计算公式如下。

PD=0|w,c)=1-σ(wTc

其中D=1代表是上下文,D=0代表不是上下文,wc对应的是词语的向量表示,σ是sigmoid函数。

最终,训练模型时使用了负采样的方法,对于给定词w,取它的一个上下文词c,随机取k个词c1,c2,…,ck(可以认为随机抽取的词不是w的上下文词),则模型的损失函数如下。

当模型训练完成后,我们可以得到词语w的表示。这种分布式的词语表示包含了语义信息,与语义信息相近的词语表示也是相似的原理,因为具有相似语义的词往往具有相近的上下文。一般用两个词向量的余弦相似度来判断两个词语的相似程度,余弦相似度越接近1,则表示两个词语的词义越相近。

4.GloVe

GloVe同样是分布式的文本表示模型,目标和word2vec词表示相同,都是要得到包含丰富语义信息的分布式词表示。

GloVe模型的基本思想是从全局的角度统计词共现信息,我们首先定义共现矩阵为X,矩阵大小为n×nn是词表大小。矩阵Xi行第j列的值表示词表中第i个单词和第j个单词共同出现在同一个窗口中的次数。接下来,定义几个符号。Xi是第i个单词在上下文中出现的总次数,计算公式如下。

k个词语出现在第i个词语的上下文的概率如下。

两个概率的比率如下。

可以发现,ratioi,j,k这一指标是有规律的,当词语ik相关,词语jk不相关时,这一指标会很大;当ik不相关,jk相关时,这一指标会很小。在其他的情形下,这一指标会接近于1。我们希望学到的词向量能建模ratioi,j,k这一指标。

为了满足以上性质,作者构造模型损失函数如下。

其中f是权重函数,bibj为偏差项。作者通过实验确定的权重函数如下。

GloVe和word2vec都可以在大规模通用文本上训练通用的包含了语义信息的词表示。近年来,这种通用预训练的词表示被广泛应用于各种自然语言处理任务中,作为下游任务的神经网络模型中文本的原始输入。

5.ELMo

不同于传统的分布式词表示,2018年提出的ELMo词表示模型对上下文更加敏感。具体来说,word2vec和GloVe学到的词表示是固定的,同一个词语在不同的上下文中的表示是相同的,而在ELMo词表示模型中,同一个词语在不同上下文中的表示是不同的。如果想知道ELMo词表示是如何学习的,我们要先了解统计语言模型。

对于语言序列w1,w2,…,wn,语言模型就是该序列的概率:Pw1,w2,…,wn)。统计语言模型的概率通常用条件概率计算,我们认为某一个词出现的概率跟它前面的词有关,那么整个序列的概率可以拆分成条件概率的乘积,具体公式如下。

Pw1,w2,…,wn=Pw1Pw2|w1)…Pwn|w1,w2,…,wn-1

ELMo模型就是要训练一个正向和反向的语言模型,然后将训练完成的模型的网络参数作为词语的表示。具体的网络结构采用了多层LSTM网络,正向语言模型的公式如下。

反向语言模型的公式如下。

模型的损失函数如下。

其中θ1是正向LSTM网络的参数,θ2是反向LSTM网络的参数。

最终,某个句子中第i个词语wi的ELMo词表示由它的原始输入xi、对应位置的L层正向语言模型LSTM网络的隐藏层参数h1,i,1,h1,i,1,…,h1,i,L、对应位置的L层反向语言模型LSTM网络的隐藏层参数h2,i,1,h2,i,1,…,h2,i,L共同组成。

ELMo词表示的重要特点是上下文相关,可以很好地对一词多义的问题进行建模,使得上下文的信息得到充分利用。此外,2L+1组参数使得ELMo词表示具有相对较高的维度(大于1000),而更高的维度可以保留更多的信息。ELMo词表示对复杂语义的建模更好,在处理更加复杂的自然语言处理任务(例如机器阅读理解)时,ELMo词表示的表现要优于word2vec和GloVe。

6.BERT

ELMo词表示使用的神经网络是LSTM,随着深度学习的发展、硬件技术的提升,训练网络的计算力也大幅提升,像Transformer这样的大规模网络在机器翻译任务上取得了很好的效果。Transformer网络结构在理解文本语义方面比LSTM等结构具有更强的竞争力,BERT模型的主要结构就是堆叠的Transformer编码器。

BERT模型的任务有两个:遮蔽语言模型和预测下一句话任务。

遮蔽语言模型不同于传统的语言模型,传统的语言模型认为词语的生成具有方向性,即当前词只与它前面的词有关,与它后面的词无关,预测当前词语时只能利用前面词的信息。而遮蔽语言模型则不考虑语言生成的方向性,预测一个词语可以同时利用它的上下文信息。实际的训练过程就是随机遮蔽一些词,再训练神经网络将遮蔽的词语预测出来。

预测下一句话任务是一个很巧妙的从无监督语料中提取监督信号的方法。具体的做法是将某段文本一分为二,分成A、B两个部分,然后以一定的概率将B随机替换成另一段文本C。那么在训练样本中,A、B的标签是下一句话,A、C的标签就不是下一句话。预测下一句话任务,使得BERT模型能够很好地表示句子对的信息,这种能力在执行阅读理解、自然语言推理、搜索查询匹配等任务时很重要。

BERT模型应用于下游任务的方式也是多种多样的,既可以用于提取出特征,也可以用于整个网络的微调。图1-2是BERT用于下游双句分类任务的示意图,应用了微调方法,在分类任务上使用了整个模型参数,在最上层的CLS符号的特征上接一个简单的线性层进行分类。

图1-2 BERT应用于下游双句分类任务示意图

提取特征的方法更加多样,最常见的就是提取最上层对应位置的符号的特征。微调BERT的方法对计算能力有着较高的要求,通常会比使用BERT特征的方法有更好的表现。使用BERT特征的方法的优点是便捷、轻量,在工业界的搜索、推荐等方向有很多实际应用。