郑 诚,倪显虎,张苏航,赵伊研
1(安徽大学 计算机科学与技术学院,合肥230601)
2(计算智能与信号处理教育部重点实验室,合肥230601)
文本分类是自然语言处理的一个重要研究领域,经过不断的发展,它在许多方面都有极其广泛的应用,例如情感分析[1]、主题标注[2]和疾病诊断[3]等.在如今的大数据时代,如何在海量文本数据中提取关键特征进行文本所属类别的分类,进而服务于自然语言处理的其他任务,一直以来都是热点问题.
最近,称为图神经网络或图嵌入的新研究方向引起了广泛关注[4],例如Yao等人[5]采用了图卷积网络[6],并将关于文本的分类问题转化为节点分类问题(TextGCN).他们从整个数据集构建一个单一的无向图,基于训练集中的文档计算交叉熵损失来训练GNN,然而将图卷积神经网络应用到文本分类任务中主要有以下两方面的限制,一是,Yao等人构建了文档和单词之间具有全局关系的单个图,并未充分考虑文本局部特征(如关键短语)的提取;其次,在通过邻接矩阵聚合节点的领域信息时,由于是无向图,忽略了词排序问题,在一些上下文语义信息丰富的文本上表现欠佳,并且在归纳学习方面有困难[7].
为了解决上述提到的相关问题,本文提出了一种新的图神经网络模型,该模型主要由两个特征提取层以及一个图池化层组成,两个特征提取层分别对应着全局信息及局部特征的提取.第1个特征提取层是由多层感知机(Multi-Layer Perceptron,MLP)和门控循环单元(Gated Recurrent Unit,GRU)构成的全局信息提取层.首先本文利用MLP模型在数据拟合上的优势初步得到节点的邻居信息,接着利用GRU在建模长距离单词交互上的优势,将节点本身的特征和上一步经过MLP聚合所得的邻居节点特征结合起来,从而得到了丰富的文本上下文语义信息.在这里,GRU的作用具体表现在以下两点,一是通过领域聚合的方式增强模型全局信息感知能力;二是捕获文本中长距离和非连续的单词交互关系,这样就进一步得到了更丰富的全局信息表达.第2个特征提取层是由是由注意力(attention)构成的局部特征提取层,帮助GRU 捕获文本更深层次的局部特征信息,如关键字、关键短语等.在单词节点被充分更新之后,它们被聚集成文档的特征表示送入图池化层,除了对加权单词特征进行平均池化(Mean-pooling),本文还用了最大池化(Max-pooling),这样处理后,不仅让每个单词都在文本中发挥了作用,而且让关键词更明确地发挥了作用.该模型通过使用固定大小的滑动窗口将文档表示为一个统计单词共现的有向加权图.此外,该图还包括一个特殊的文档节点(主节点),通过单位权重双向边连接到所有其他节点,如图1展示了使用大小为4的滑动窗口进行构图的例子.最后将提取的特征信息送入全连接层再通过Softmax函数得到文档的预测类别.
图1 有向文本图示例
本文的模型不同于大多数现有的基于GNN的方法,本文的方法具有归纳性.对于新加入的文档,本文可以直接将它们对应的文本图输入到先前学习的模型中,并计算它们的标签.简而言之,本文能够以归纳的方式处理新添加的数据,而不是重新训练模型.
本文贡献如下:
提出了一种基于图神经网络的新模型,将文本构成含有主节点的有向加权图后,使用GRU作为GNN层的聚合函数提取丰富的全局上下文语义信息.
使用attention进行局部特征信息的提取,并使用平均池化和最大池化生成文档表示,弥补了图卷积神经网络在局部特征提取不充分等问题.
在3个英文数据集上的实验结果表明,本文模型相较于基准模型,取得了一定的效果.
在传统的文本分类方法中,包括朴素贝叶斯[8],k-近邻[9]和支持向量机[10]等.这些方法主要是基于特征工程步骤来表示文本,最常用的特征工程包括词袋模n-grams[11]等.后来Mikolov等人[12]从单词的意义依赖于其上下文的假设中受到启发,提出了一种将单词转化为单词向量的方法,突破了自然语言处理和深度学习之间的障碍.此后,许多深度学习方法被引入到文本分类任务中.
使用深度学习的方法进行文本分类表现出了良好的性能.其中Kim等人[13]使用基于词向量的多个卷积核的卷积神经网络(TextCNN)从文本中提取文本信息,可以有效地从句子中得到单词或短语特征.该方法证明了CNN在文本分类任务中的可行性;Liu等人提出使用循环神经网络[14]用于文本分类(TextRNN),循环神经网络可以建模更长的序列信息,能够更好的表达上下文信息,成为了文本分类中重要的深度学习模型之一.然而,他们都关注单词交互的局部信息,因此缺乏长距离和非连续的单词交互.进而在RNN之后,门控循环单元(GRU)应运而生,它是在长短期记忆[15](LSTM)的基础上,将遗忘门和输入门合并成更新门,因此相对于长短期记忆,它具有更简单的结构.不仅能够在训练时控制梯度的收敛性,在一定程度上解决了传统递归神经网络存在的梯度消失和梯度爆炸等问题,还可以保持长期的记忆性.然而,不管是LSTM还是GRU,均没有体现每个隐层输出的重要程度,在挖掘文本深层次的局部特征信息方面,依然有不小的压力.为此Vaswani等人[16]提出了一种基于注意机制的特征提取方法,这种方法不仅比LSTM提取信息更好,而且具有更快的计算速度,并已广泛用于最近的预训练模型[17,18]中.但是,文本分类需要综合考虑文本的全局和局部信息,上述大多数方法只将文本的全局和局部特征视为两个独立的部分,并未很好地将两者结合考虑.因此在信息提取过程中依然面临着特征提取不充分、全局信息表征模糊等问题.
最近,图神经网络(GNN)被证明是通过考虑单词之间的长距离依赖性来解决文本分类问题的强大工具[19].它不把文本当作一个序列,而是当作一组共同出现的词,通过将文本数据转换为图形数据的方式,来捕捉单词之间固有的语义依赖关系,在一些文本分类任务中取得了良好的结果.因此,GNN可以直接处理复杂的结构化数据,并优先利用全局特征.基于GNN的文本学习必须包括两个阶段:一是从自由文本构建图形,二是构建基于图形的学习框架.Peng等人[20]将文档表示为未加权的、无方向的单词共现网络,单词嵌入作为节点特征,然后他们使用空间GNN[21]来执行图形分类.最近的一些研究进一步扩展了GNN模型,Ding等人等人在聚合过程中考虑了全局图形信息[22]和单词交互信息[23].TextGCN该模型使用包含文档和单词作为节点构成图形进而对文本语料库进行建模,将卷积思想和图神经网络相结合应用到文本分类任务中取得了良好性能.图注意力网络(Graph attention networks)[24]在聚集节点的邻域信息时,结合可训练的注意力权重来指定邻居的细粒度权重,提取到了重要局部特征信息.而 Liu等人[25]提出了一个文本图张量(TensorGCN)通过结合更多的上下文信息来学习单词和文档嵌入.最近,超图神经网络[26]被提出来捕获节点之间的高阶相关性.在超图神经网络的基础上,Ding[19]等人所提出的一个基于双重注意机制超图模型,通过用文档级超图对文本文档建模,提高了模型表达能力,降低了计算消耗,获得了目前较先进的性能.
本模型主要由以下4个关键部分组成,分别是图形的构建、基于GRU的全局语义信息提取层、基于注意力的局部特征提取层以及池化分类,该架构如图2所示.在本节中,本文将详细介绍它们是如何工作以及所实现的功能.
图2 模型总体框架图
考虑到任何两个词只要共现就认为有语义关联,本文将文档表示为一个统计单词共现网络,因此共现描述了在固定大小的滑动窗口中出现的单词之间的关系,并且它们在图中具有方向.本文用G=(V,E)来表示这个图,其中V={v1,…,vn}表示图中的节点集合,E={e1,…,em}表示边的集合.预处理文档中的每个唯一单词由G中的一个节点表示,如果在窗口的至少一个实例中发现两个节点在一起,则添加一条边,注意此图是有向图,边的方向反映了词的顺序.例如在图1中,通过将文本预处理后,因为本文选取名词、形容词和动词等作为图的节点,所以选取了“Mary”,“girl”,“who”,“loves”,“singing”作为图中的节点,并且使用了一个大小为 4 的滑动窗口在原始文本上进行滑动.例如在图1原始文本中,“Mary”,“is”,“a”“girl”在同一个滑动窗口中,但“is”,“a”作为停用词不被当做图中节点,因此“Mary”和“girl”有一条边相连,且因“Mary”在“girl”前面,所以方向为“Mary”指向“girl”,以此类推.
与Zhang等人[7]不同的是,首先本文将文本数据构成有向图,这很好解决了目前一些基于GNN方法中被忽略的词排序问题;其次关于权重,传统的方法是通过计算词频来实现,忽略了词与词之间的关系.即他们使用滑动窗口内单词的共现次数来作为边的权重,这种处理的方法显然只考虑了单词共现频率对边权重的影响,但未考虑单词共现距离与边权重之间的联系.虽然同一组单词可以共现多次,但每次单词之间的距离越小,语义关联性就越强,应该赋予此次共现更大的权重,而不是把每次共现同等处理.因此本文使用公式(1)来统计每次共现权重大小.其中vi,vj代表单词节点,而i,j是单词下标,它反映了单词节点在原始文本中的位置信息:
(1)
此外,构成的图G还包括一个特殊的文档节点,本文将它称为主节点(master node),通过单位权重双向边链接到所有其他节点,用于捕获文档的全局信息结构.
以下算法1描述了构图过程.本文使python-style字典(Dictionary)作为存放共现信息的容器,它可以存放具有映射关系(key-value)的数据.在本文算法1中,key 是一个二元组,存放了两节点之间边的类型,value为边的权重,在建图过程中可以根据滑动窗口动态地通过查找key来进行value的更新,由于算法1的基本语句操作只涉及了查找与更新过程,因此其时间复杂度为O(n).
算法1.图形的构建
输入:docs/*文本训练样例*/
输出:A/*包含图结构信息的邻接矩阵A*/
1.Begin/*对原始文本进行预处理*/
2. for doc in docs:
edges=dict()/*读取数据集并定义存放共现信息的python-style字典*/
3. for i in len(doc):/*遍历整个句子*/
for j in(i+1,i+window_size):/*在固定窗口大小范围内滑动*/
if j if(doc[i],doc[j])in edges:/*若字典中已经存在两个节点的共现信息*/ edges(doc[i],doc[j])+=1.0/j-i /*则更新权重*/ else: edges(doc[i],doc[j])=1.0/j-i/*构建vi指向vj的有向边及初始化权重,并读入字典中*/ 4. edges(vi,“master node”)=1 and edges(“master node”,vi)=1/*构造主节点,其余节点通过单位权重双向边连接到主节点*/ 5. A(vi,vj)=edges(doc[i],doc[j])/*读取字典信息生成最终邻接矩阵A*/ 6.End 在目前的工作中,很多流行的GNN模型遵循邻域聚合方式来得到节点表示.在邻域聚合过程中,近邻指的是同一个句子中的连续单词,因此从不出现在同一个句子中但与同一个(多个)单词共现的单词,这些节点可以通过公共邻居连接在一起,从而进行信息聚合.GNN层可以定义为: (2) 在此模型中,本文使用门控循环神经网络[29]作为聚合函数在每个图上来学习单词节点的嵌入表示.任何一个节点都可以通过MLP从它的相邻节点中接收信息,然后与它本身的节点特征通过GRU进行合并更新,GRU是将LSTM中的输入门和遗忘门合二为一成为更新门(update gate),合并后的GRU单元结构如图3所示. 图3 GRU结构模型 基于此结构本文得到聚合公式如下所示: at+1=ft+1(D-1AHt) (3) Rt+1=σ(WRat+1+URHt) (4) Zt+1=σ(WZat+1+UZHt) (5) (6) (7) 其中Ht∈Rn×d包含了节点特征,A∈Rn×n是G的邻接矩阵,由于G是有向的,因此A是非对称的.D∈Rn×n是G的度矩阵.f表示多层感知机,at+1∈Rn×d包含邻域信息的特征信息矩阵.σ(x)=1/(1+exp(-x))是sigmoid函数,所有W,U都是可训练的权重矩阵.Z和R分别作为更新门和遗忘门,以确定邻居信息对当前节点嵌入的贡献程度.此外,A的对角线为1,因为本文选择在更新其表示时,不仅考虑了传入的邻居节点的特征,还考虑了节点本身的特征. 在单词节点经过上述的全局语义信息提取层经过T次的迭代更新后,本文获得包含最终顶点特征表示矩阵HT,它们被聚集成文档的图形表示,最终的预测是基于该图形表示.显然,并不是所有的单词都同样有助于最终的标签预测,有些单词比其他单词更重要.因此,本文使用attention机制来衡量每个单词的重要程度,以此提取局部关键信息.Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,如图4所示. 图4 局部特征提取层结构 结合图4结构本文可以得到基于注意力机制的特征提取公式可以表述为: (8) (9) (10) 事实上随着迭代的进行,节点特征捕获了越来越多的全局信息,保留迭代过程中产生的一些局部特征信息对于最终结果预测还是有用的,因此在使用注意力进行特征提取时,只在最后一层使用注意力机制会损失掉传播过程中图的大量特征,因此本文在t次迭代的每一次都使用attention进行特征信息的提取,最后拼接成为图的特征.通过这种修改,本文考虑了局部和全局特征信息的融合. 如图5所示.这个过程可以表述为: 图5 拼接和池化 HG=CONCAT(attention(Ht))|t=1…T) (11) 在得到了文档表示HG后,本文将其送入到池化层融合单词表示形成最终的图级表示用于分类或者预测,除了对其使用平均池化(Mean-pooling)外,本文还对其使用了最大池化(Max-pooling),目的是为了不仅让每个单词都在文本中发挥作用,而且让关键词更明确地发挥作用.通过进行池化操作,该模型能够进一步地捕获文本中潜在的词与词之间的语义相关性,从而可以更好地提取文本关键特征信息.最后形成最终的图形级表示hg: hg=Mean(HG)+Max(HG) (12) 最后,将得到的图形级表示向量馈送到softmax层来预测标签.本文通过交叉熵函数将损失降至最低: (13) (14) 其中W是将图级表示映射到输出空间的权重矩阵,b是权重和偏差,ygi为其真实标签. 本文在3个广泛使用的基准数据集上进行了实验,如表1所示,其中最后一栏Prop.NW代表在测试集中新单词的比例.下面是对数据集的介绍: 表1 数据集统计表 MR:是一个用于二元情感分类的电影评论数据集[30],其中每个评论只有一句话.语料库有5331条正面评论和5331条负面评论. R8:是路透社新闻数据集,来自Yao[5],该数据集包含 8 个类别.共有 5485 个训练数据和 2189 个测试数据,并且每个数据只与一个类别相关. R52:是路透社21578数据集的一个子集.R52数据集总共有52个类别,其中分为6532个训练数据和2568个测试数据.并且每个数据只与一个类别相关. 1)CNN(non-static)[13]:卷积神经网络,这里使用随机初始化的单词嵌入向量作为输入,利用卷积操作和最大池化获得文本表示. 2)LSTM[14]:LSTM 模型使用最后一个隐藏状态作为整个文本的表示形式. 3)Bi-LSTM[31]:双向LSTM,将预训练好的词向量输入到双向LSTM,能够从局部连续单词嵌入中捕获文本特征表示. 4)fast Text[32]:一种基于词嵌入的文本分类模型,该方法将单词嵌入的平均值作为文档的嵌入,然后将文档嵌入送到线性分类器中进行分类. 5)SWEM[33]:一种基于词嵌入的文本分类模型,采用简单的词向量池化方法获得文本表示. 6)Graph-CNN[6]:一种基于图的文本分类模型,该模型在图上推广了CNN的卷积方式,定义了并实现了一个图谱域的卷积公式. 7)Text GCN[5]:一种基于图的文本分类模型,Text GCN(transductive)使用单词和文档作为节点构成基于文本语料库的大图进行节点分类.而Text GCN(inductive)是同一作者实现的归纳版本. 8)DHTG[34]:将概率深度主题模型集成到图的构建中,并提出了一种全新的可训练层次主题图(HTG)模型,包括单词级、层次主题级和文档级节点. 9)SSGC[35]:利用改进的马尔可夫扩散核导出了简单谱图卷积,捕获了每个节点的全局和局部上下文信息. 10)T-VGAE[36]:提出了一种归纳式主题变分图自动编码器模型,该模型继承了主题模型的可解释性和图变分编码器高效的信息传播机制,来捕获文档和单词之间隐藏的语义信息. 对于所有数据集,本文使用Adam训练器,并将Adam[37]的学习率设置为0.001.为了防止过拟合,将dropout率设置为0.5.初始单词向量使用谷歌新闻向量,维度为300维.在文本预处理环节,包括词干提取和去停用词等.对于数据集的划分,本文采用十折交叉验证(cross-validation)的方式随机抽样每个数据集中训练集的10%来构建验证集,根据验证精度选择最佳时期,上限为200 epoch.基线实验中的结果均采用原论文结果. 实验结果如表2所示,其中加粗字体表示最优值,可以观察到基于图的方法总是优于其他类型的模型,这表明将文本数据转换成图模型这一思想的必要性.此外,模型在MR、R8、R52这3个经典的数据集上,性能均优于基线模型,说明本文通过在全局语义信息提取层引入GRU以及在局部特征提取引入attention机制进行信息融合的有效性,使得模型相对于Text GCN(inductive)有着明显的分类性能的提高.此外,该模型在MR数据集上表现最好,这是因为MR中的短文档导致TextGCN中形成的是低密度图,所以它限制了标签消息在文档节点之间传递,而本文的图结构并不依赖于这种标签信息传递机制.此外,如表1所示,大约有三分之一的新单词在测试集中,而该模型本身就具有归纳性,这表明该模型对于新加入的单词更友好. 表2 实验结果 为了进一步分析模型中各个模块对于实验结果的影响,本文做了消融实验,其结果如表3所示.其中(w/o)代表删除该模块后的模型,(last)代表只在迭代的最后一层使用attention机制.从表中可以观察到,虽然各个模块对于整体模型的贡献程度不尽相同,但删除某个模块总会带来性能上的下降.这说明模型引入这些模块确实是有用的,而且在功能上是相辅相成的. 表3 消融实验结果 删除有向边:例如本文将有向图改为无向图后,发现总会导致模型性能的下降,这说明了在将文本数据转换成图数据时,应该要考虑词排序问题,同一组单词在不同的位置出现或前后出现的顺序不同,可能所表达的意思也不相同.尤其在情感分析任务中,为了捕获情感,对词序进行建模尤为重要. 删除主节点:删除主节点后会降低在所有数据集上的性能,这说明了本文添加这样一个主节点的必要性.事实上,本文通过引入主节点来连接到其它所有节点,因此它能在信息聚合期间对文档进行编码,学习到关于图形表示的全局语义信息;此外,通过实验可以发现,删除主节点以后,在R8和R52数据集上虽然有影响,但是在MR数据集上影响最大,这跟MR数据集中文本的自身属性有关,在上一小节中,本文提到相比较于R8、R52等数据集,MR中的短文档导致TextGCN中形成的是低密度图,这会导致在信息聚合过程中,一些基于全局上下文关系的单词信息没有很好地进行提取,通过加入主节点,本文的图模型引入了更多的边,在模型学习过程中,可以将全局上下文信息整合到最终的单词表示中. 删除GRU:本文发现在全局语义信息提取层去掉GRU后,总会导致模型在性能上有较大的降低,这说明通过加入GRU进行全局语义信息的提取是非常有必要的.这是因为GRU能够捕获文本中长距离和非连续的单词交互信息,因此加入GRU,在进行邻域聚合的过程中,本文可以捕获到上下文语义信息,从而增强了模型全局感知能力. 删除注意力:通过在局部特征提取层加入注意力机制,本文的模型可以利用注意力机制捕获同一个句子中单词之间句法依赖和语义特征,提高模型对局部关键信息的提取能力.另外经过实验发现,如果只在迭代过程中的最后一层使用注意力机制,也会导致模型性能的下降,这也验证了保留迭代过程中产生的一些局部特征信息对于最终结果预测还是有益的. 删除最大池化:通过加入池化层使本文模型分类的效果带来了提升.在使用聚合函数在网格状数据上提取特征信息时,最大池化非常重要,因为它能够保留主要特征并且减少参数,从而增加运算速度. 图6~图8分别展示了模型在3个数据集上使用不同滑动窗口大小对分类的影响,本文可以观察到滑动窗口由3到11递增的过程中,分类的正确率总是先增大后减小,不同的是,MR数据集在滑动窗口大小为7时,文本分类性能最好,之后开始减小.而R8和R52数据集在滑动窗口大小为5时取得了良好的结果,之后开始下降.从3个数据集分类的正确率上可以看出,同样大小滑动窗口对于不同的数据集分类性能的影响可能会不一样,这是由数据集本身所具有的性质决定的,比如MR是一个用于二元情感分类的电影评论数据集,而R8和R52是来自路透社新闻的主题分类数据集;其次,通过图中分类性能的变化可以观察到,滑动窗口过大过小都不好,窗口过小会导致固定窗口大小中的单词数量减少,使得文本图中的节点之间的边数减少,这样会导致在信息提取过程中,节点之间的一些关键信息丢失而降低分类性能.而窗口过大导致固定窗口大小中的单词数量增加,从而使得文本图中节点之间的边数增多,在为节点增加更多邻域信息的同时,不仅会导致图结构变得复杂而且会引入与分类无关的冗余信息,导致分类性能的下降. 图6 窗口大小对MR分类效果影响 图7 窗口大小对R8分类效果影响 图8 窗口大小对R52分类效果影响 针对文本分类中对于全局上下文语义信息以及局部特征信息提取不充分等问题,本文提出了一种结合GNN进行全局感知与局部特征相融合的新模型.该模型通过将文本表示成有向、加权的词共现网络,利用GRU在聚合长距离单词信息上的优势,来捕获全局上下文语义信息,接着利用attention机制捕获更深层次的局部依赖关系,如关键字、关键短语等.最后使用平均池化以及最大池化进一步提升了模型对关键特征信息的提取能力,丰富了模型对于文本信息的表示,提高了分类效果.通过在经典的3个数据集上进行了广泛的实验,相较于基线模型均有了不同程度的提升.在将来的工作中我们会在图的构建中做进一步的扩展,尝试从不同的角度(例如句法、语义、标签等)构建多种不同的图来进行信息的融合,从而实现分类效果的提升.3.3 基于GRU的全局语义信息提取层
3.4 基于attention的局部特征提取层
3.5 池化和分类
4 实验及结果分析
4.1 数据集介绍
4.2 对比实验
4.3 实验参数设置
4.4 实验结果
4.5 消融实验
4.6 参数分析
5 总 结