钱亚冠,方科彬,康 明,顾钊铨,潘 俊,王 滨,Wassim Swaileh
(1. 浙江科技学院 大数据学院,浙江 杭州 310023;2. 海康威视-浙江科技学院 边缘智能安全联合实验室,浙江 杭州 310023;3. 南京航空航天大学 经济与管理学院, 江苏 南京 211106;4. 广州大学 网络空间先进技术研究院, 广东 广州 510006;5. 塞尔齐.巴黎大学 ETIS 国家实验室, 巴黎 法国 95032)
文本分类在文档检索[1]、网络搜索[2]、垃圾邮件过滤[3]等应用中有着重要作用,其中文本的词向量和段落向量表示方法一直是研究者的关注热点。词袋模型(bag-of-words)[4-5]作为早期词向量表示的代表方法,由于其具有直观、简便的特点,在文本分类任务中得到了广泛的应用。然而,词袋模型的表示存在稀疏、高维、离散的问题,同时文本表示间存在强正交性[6-7],使得这种表示方法不适合计算文本之间的相似性[8-9]。
段落向量是文本分布式表示中的一个重大发展。在此之前,长文本的表示方法受到较多的限制,如Socher等人[10]提出的有监督方法,通常需要对文本进行语法分析[11],才可以用于长文本的表示,而段落向量的出现实现了长文本表示的无监督学习。段落向量主要是通过段落向量化算法(Doc2Vec)[12],利用无监督学习[13],将变长文本表示为固定长度的连续实向量。该方法成功解决了将模型扩展到单词级表示之外的问题,实现了短语级或句子级表示[14-15]。
近年来,研究者针对段落向量提出了许多改进方法。Elmer等人[16]提出了层次段落向量,利用分层文档结构提高单词嵌入的质量。Gerek等人[17]通过强制让段落向量的元素为正,以减少表示嵌入的空间,使段落向量更易于解释。霍朝光等人[18]提出Doc2Vec与SVM结合,解决了重名作者姓名识别问题,用以提升作者姓名消歧准确率。
但是上述改进的方法都忽略了Doc2Vec存在的两个缺陷: ①在学习段落向量的过程中,相比于短段落,长段落会得到更充分的训练; ②长段落语料往往包含短段落语料的信息,长段落向量的表示优于短段落。因此本文提出一种段落向量正向激励的方法,通过激励系数使分类模型在训练过程中(输入特征包含长段落向量和短段落向量)倾向长段落向量,从而提升分类准确率。
该方法引入激励系数λ,用于选取最优的模型。通过在Stanford Sentiment Treebank、IMDB和Amazon Reviews三个数据集上进行实验,结果证实,通过选取合适的激励系数,该方法可以显著提升文本分类模型的准确率。
在众多文本分布式表示学习模型中,词向量化(Word2Vec)是较为常用的算法[19],可以将词转化成向量表示。图1是一个经典的Word2Vec学习词向量框架,其主要任务是根据上下文的单词来预测中间的单词,训练词向量的神经网络结构如下: ①输入层,上下文词向量ωt-k,…,ωt+k; ②投影层,将输入层的词向量进行连接或平均; ③输出层,输出中间词向量。假定一个句子S由T个单词{ω1,ω2,…,ωT}组成, 词向量模型的优化目标是最大化平均对数概率,如式(1)所示。
图1 学习词向量框架
(1)
句子S中的第t个单词所对应的向量表示为ωt∈dω,其中dω表示词嵌入的维度,k表示窗口距离。在输出层通过Softmax得到中间词的预测结果,与真实标签计算误差反向传播和梯度下降来更新W。
(2)
每个yi是输出单词i的非标准化对数概率,通过式(3)所示公式计算得到:
y=b+Uh(ωt-k,…,ωt+k;W)
(3)
其中,U,b表示Softmax参数,W表示词向量矩阵,h由从W中提取的词向量ωt连接或平均后构成。
Doc2Vec是使用广泛的文本特征提取器,可以将段落转化成向量表示。与Word2Vec相比,Doc2Vec将式(3)中的h改由W和D构造。
y=b+Uh(ωt-k,…,ωt+k;D+W)
(4)
其中,D∈L×dp表示段落向量矩阵,L表示语料中段落的个数,dp表示段落向量嵌入的维度。其主要任务是根据段落和段落中上下文的单词来预测中间的单词以获得D。段落向量模型的优化目标是最大化平均对数概率,如式(5)所示。
(5)
具体的训练步骤如下: ①通过上下文预测中间词以得到参数U、b和W; ②固定词向量矩阵W和Softmax权重U、b,在输出层通过Softmax得到中间词的预测结果,与真实标签计算误差反向传播和梯度下降来更新D。上述Doc2Vec方法被称为PV-DM,其框架如图2所示。
图2 PV-DM框架
此外,另一种Doc2Vec方法忽略输入的上下文单词,通过强制模型由输出的段落去预测随机取样的单词,该方法被称为PV-DBOW,其框架如图3所示。
图3 PV-DBOW框架
首先,Doc2Vec没有考虑到训练过程中长短段落训练次数存在差异的情况。Doc2Vec的优化目标如式(4)所示,在一个epoch中,Dj的滑动窗口训练过程如下:
每个滑动窗口代表该epoch中Dj的一次训练,由此可知一个epoch中Dj的训练次数为L-2k次。当段落长短不同时,一个epoch训练过程中长段落会比短段落获得更多的训练次数。通常随着训练次数的增加,段落向量的表达会更加准确。以图4为例,设k为1,每个epoch经过滑动窗口采样过程后,长段落的段落向量会被更新6次,而短段落的段落向量只会被更新两次。
图4 长短段落语料内容
其次,Doc2Vec没有考虑训练语料之间的包含关系。设语料中的一个短段落为dS,其包含的词为ωs1,ωs2,ωs3,…,ωsT;一个长段落为dL,其包含的词为ωl1,ωl2,ωl3,…,ωlT,ωl(T+1),…,ωl(T+n)。由于dL中的词比dS更具有多样性,所以dS中的一部分词很可能同时出现在dL中。如果中间词ωt与上下文ωt-k,…,ωt+k存在一致的情形,当这两个段落经过上述训练过程时,这两个段落的向量表示在高维空间中会相互接近,导致在剩余的训练过程中,长段落向量表示比短段落向量表示获得更丰富的信息。
以图5为例,若设k为1,当长短段落经过PV-DM框架训练,并进行两次滑动窗口采样后,dS与dL将包含相同的信息以及近似的向量表示。长段落dL会继续进行滑动采样,同时更新段落向量,从而比短段落dS获得更多的信息。
图5 长短段落语料内容
尽管长段落包含的信息比短段落更为全面,然而在训练分类模型时,短段落的段落向量和长段落的段落向量的作用等同,使得分类模型的性能受到了限制。
针对上述问题,本文提出段落向量正向激励方法,在训练过程中通过适当提高长段落的段落向量作为输入特征的比重,使文本分类模型向长段落向量有所偏倚。本方法包含: ①段落向量划分模块; ②段落向量激励模块;③文本分类模块。框架如图6所示。
图6 段落向量正向激励框架图
由于通过Doc2Vec得到的段落向量矩阵D,存在长段落向量表示优于短段落向量的情形,本文提出段落向量划分,将段落向量矩阵D划分为长段落向量矩阵DL和短段落向量矩阵DS。本文通过一个数组记录每个段落的长度,并以中位数作为划分DL与DS的依据,目的是让两类样本数接近,以利于后续分类模型性能的提升。其中DL用[dL1,dL2,…,dLl]来表示,DS用[dS1,dS2,…,dSs]来表示,l表示语料中长段落的个数,s表示语料中短段落的个数,D∈L×dp,dp表示段落向量嵌入的维度:
(6)
其中⊕号表示矩阵按列向量拼接。具体示例如图7所示,设l=2,s=2,dp=5。
图7 段落向量划分示例
经过段落向量划分后,需进一步对DL和DS进行处理以解决Doc2Vec存在的缺陷。根据2.1节的描述,长段落向量的表示优于短段落,然而在分类模型训练过程中,DL和DS发挥了相同的作用,使得分类模型的性能受到了限制。本文希望分类模型在训练过程中偏向长段落向量以提升模型性能,因此提出段落向量激励方法。本文不再将原始段落向量矩阵D直接作为分类模型的输入特征,而是对D做进一步处理,变为DNew,使分类模型自动偏向长段落向量。具体而言,是在矩阵D中随机加入一部分长段落向量,称之为正向激励。加入多少长段落向量由激励系数λ决定,具体的操作公式表示如式(7)所示。
(7)
(8)
其中,DNew∈(l+s+l*λ)×dp。相关示例如图8所示,设l=2,s=2,dp=5,λ=0.5。
图8 段落向量激励示例
整个框架的过程如算法1所示。
算法1: 段落向量正向激励输入: 待分类文本语料{d1,d2,…,dT},语料长度向量N,激励系数λ输出: 新的模型输入特征DNewStep 1 使用Doc2Vec训练语料得到DStep 2 将D根据段落长度划分为DL DS① for eachDj∈D② 根据Nj的大小划分为:③ D = DL DSStep 3 将DL经过激励系数λ变为DNewL①for eachDLj∈DL② DNewL=DL R(DL,λ)③ R(DL,λ)表示从DL中随机选择l×λ个列向量。Step 4 将DNewL和DS合并为DNewDNew=DNewL DS
设分类模型为f(x),一般的文本分类过程如下: ①Doc2Vec训练得到D。②经过分类模型f(D)训练得到准确率。而本文选择在过程①和②中间加入段落向量正向激励方法,将D经过处理变为DNew、使得f(DNew)在训练过程中模型自动偏向长段落向量进行训练,这在一定程度上解决了Doc2Vec算法存在的缺陷。在合适的激励系数下,f(DNew)性能优于f(D),使Doc2Vec算法能够更好地结合分类模型以解决现实中的文本分类任务。
本文使用三个常用的文本分类数据集来验证本文方法的有效性。三个数据集分别为Stanford Sentiment Treebank数据集(SST)[20]、Internet Movie Database数据集(IMDB)[21]和Amazon Reviews数据集。这些数据集中的段落长度差异显著,其中SST数据集中的每个段落由一个句子组成,而IMDB和Amazon Reviews数据集中的每个段落都由多个句子组成。
SST数据集: 该数据集由8 544个训练句子、2 210个测试句子和1 101个验证句子组成。此外,其可以考虑分为5细粒度或2细粒度的分类任务。
IMDB数据集: 该数据集由来自IMDB的100 000条电影评论数据组成,其中25 000个带标记的训练集、25 000个带标记的测试集和50 000个未带标记的训练集。
Amazon Reviews数据集: 该数据集从 Xiang Zhang的Google Drive目录中提取,由4 000 000条Amazon中的客户评论(输入文本)和星级评定(输出标签)组成,其中标签1是关于1星和2星的评论,标签2是关于4星和5星的评论。
本文分别对三个数据集的语料使用Doc2Vec算法进行训练并学习得到各自的词向量和段落向量表示,然后通过卷积神经网络(LeNet-5网络结构)、支持向量机(SVM)(C=0.1,kernel=‘RBF’)以及Logistic分类器(C=0.001,penalty=‘l2’)来预测各自的情感类型。我们在验证集上使用网格搜索来确定最佳超参数,超参数设置情况如表1所示。
表1 超参数设置
最终确定SST数据集的最佳窗口大小为8,其余两个数据集的最佳窗口大小为10。分类器的输入向量是两个向量的连接,一个是通过PV-DBOW方法得到的400维向量,另一个是通过PV-DM方法得到的400维向量。其中特殊字符,如字符“,”“!”“?”会被当作一个正常的词来对待。如果段落中的单词个数少于窗口大小,本文会预先放置一个特殊的空单词符号。
为了验证长、短段落的段落向量在分类模型中的表现差异,本文通过实验证明段落向量正向激励方法的有效性。对比实验划分为两组: 第一组不经过任何处理,直接将Doc2Vec得到的段落向量矩阵输入分类模型,第二组则是经过段落向量正向激励方法处理后的段落向量矩阵输入分类模型。本文选择较为简单的分类模型SVM和Logistic,目的是最大限度地剔除模型超参数对预测准确率带来的影响,从而更好地分析段落向量表现的差异性。
首先利用Doc2Vec训练得到段落向量矩阵D,然后利用3.1节的段落向量划分方法,获得短段落向量矩阵DS和长段落向量矩阵DL,分别训练SVM和Logistic回归模型。采用独立的测试集测试上述模型,得到的实验结果如表2所示。为了避免实验的偶然性,本文进行50次重复实验并取各自准确率的平均值。
表2 重复实验结果 (单位: %)
从表2的实验结果可以发现,输入特征为DL的分类模型准确率均高于输入特征为DS的分类模型,证明长段落向量表示比短段落向量表示更有助于提高分类准确率。
为进一步验证段落向量正向激励方法对分类模型性能的影响,本文进行如下对比实验: ①使用原始段落向量矩阵(λ=0)作为输入特征并训练模型; ②使用本文方法(λ分别取0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,2,5)得到新的段落向量矩阵作为输入特征训练模型。由于这三个数据集的训练样本的各类别数都较为均衡,故只用交叉验证得到的准确率作为评估指标。
实验结果如表3所示,当增加了激励系数之后,三个分类模型的性能得到了明显的提升。但当激励系数达到一定值时,准确率不再提高。在SST(2细粒度)实验中,三个分类模型的最优激励系数均为0.3;在SST(5细粒度)实验中,CNN、 SVM和Logistic的最优激励系数分别为0.4、0.5和0.6;在IMDB实验中,CNN的最优激励系数为0.3,SVM和Logistic为0.1;在Amazon Reviews实验中,CNN、SVM和Logistic的最优激励系数分别为0.3、0.2和0.1。IMDB和Amazon Reviews的最优激励系数均小于SST,这表明如果语料中的段落长度普遍较长,长段落向量的表示能力会接近短段落向量,即Doc2Vec存在的缺陷会因为语料段落长度的增加而得到一些缓解,从而只需要较小的激励系数就能使分类模型的性能得到提升。此外,本文还发现最优激励系数通常在(0.1,0.5)之间。以上两点有助于我们更快地找到当前语料所需要的最优激励系数。
表3 实验结果汇总 (单位: %)
CNN、SVM以及Logistic分类器性能对比如表4所示。可以看出: ①在SST(2细粒度)实验中,三者的准确率分别提升了1.49%、1.15%、1.07%; ②在SST(5细粒度)实验中三者的准确率分别提升了2.29%、1.34%、0.99%;③在IMDB实验中三者的准确率分别提升了0.85%、0.8%、0.61%; ④在Amazon Reviews实验中三者的准确率分别提升了1.79%、0.8%、0.61%。因此,将Doc2Vec训练得到的原始段落向量矩阵经过段落向量正向激励方法后,再放入分类模型训练可以更好地提高文本分类准确率。
表4 不同模型数据集下的性能对比 (单位: %)
为进一步分析激励系数λ的变化对分类模型性能的影响,我们把实验结果表示成折线图,如图9至图12所示。本文发现三种模型在三个数据集上的性能均随着激励系数λ的增大,呈现先上升再下降,最后趋于平稳的趋势。当激励系数处于合适的范围时,长段落的段落向量在分类模型中的地位正处于合理的范围内,且短段落的段落向量也能在分类模型中发挥一定的效果。随着激励系数逐渐增大,短段落的段落向量在分类模型中逐渐失去影响力, 使得模型缺失了过多的短段落信息,从而出现分类模型性能下降的情形。如果激励系数趋于无穷大,短段落便彻底在分类模型中丧失了作用,从而性能比λ=0时还有所下降。此外,我们还发现,在IMDB和Amazon Reviews数据集实验中三个模型的性能趋势和SST基本一致,但是准确率波动程度较小,这可能是由于这两个数据集的语料均由多个句子构成,使得长短语料之间的包含关系对分类模型的性能的影响有所减弱。
图9 SST(2细粒度)实验结果
图10 SST(5细粒度)实验结果
我们又分析了本文方法对训练时间的影响,结果如表5所示。因最优激励系数λ通常落在(0.1,0.5),本文主要分析了λ=0、λ=0.1以及λ=0.5时分类模型训练所需的时间。通过比较,发现CNN模型训练时间增加(6%,26%),SVM模型训练时间增加(10%,31%),Logistic模型训练时间增加(8%,30%),表明使用本文方法的模型所需的额外训练时间均在可接受的范围内,因此不在时间效率上评价本文方法的优劣。
表5 训练时间 (单位: s)
我们进一步探究了超参数Windows和Vector Size对本文方法的影响,表6、表7展示了Logistic模型上的结果,其中λ选用各个数据集对应的最优激励系数。在保证其他超参数一致的情况下,随着Windows和Vector Size的变化,基准模型和正向激励后模型的准确率出现一定波动,但是经过本文方法的分类模型性能均得到了不错的提升,表明Windows和Vector Size的变化不会影响本文方法在分类模型中的使用。
表6 Windows对本文方法的影响
表7 Vector Size对本文方法的影响
此外,将表6和表7实验结果对比可以发现: Windows的变化不会对模型性能带来显著的影响,但Vector Size维度过小,会显著降低模型性能,这可能是由于向量维度过小,出现了欠拟合现象,因此选用合适的Vector Size对模型性能的提升至关重要。我们在CNN和SVM模型上重复了上述实验,得到了类似的结果,由于篇幅的关系,不再赘述。
本文提出了一种基于段落向量正向激励的文本分类方法,通过提升长段落的段落向量在分类模型中的地位,从而提高分类模型的性能。实验结果表明,该模型可以有效提升模型分类性能,并比本文的对比方法(λ=0)取得了更好的效果,其中最优激励系数λ通常落在(0.1,0.5)。在未来的研究工作中,我们将重点从Doc2Vec算法内部解决其缺陷,使其能够更好、更快地得到段落向量,从而使模型性能获得更大的提升。