穆建媛,朱 毅,周鑫柯,李 云,强继朋,袁运浩
(扬州大学 计算机科学与技术系,江苏 扬州 225127)
随着互联网通信新时代的到来,每天都有海量的互联网信息产生,并且这些信息以飞快的速度在更迭,如新闻标题[1]、微博推送[2]、论坛讨论[3]、手机短信[4]等文本信息,这些大多是非结构化的短文本数据。与传统的长文本数据相比较,这些短文本数据的最大特点在于语句较短,其中包含的词汇较少,语义较为发散,容易产生歧义。这些特点导致了短文本数据的关键特征信息难以提取,所以,如何对短文本进行正确的分类处理,已成为热门的研究方向。
短文本分类是自然语言处理(Natural Language Processing, NLP)的重要任务之一,已经有越来越多的国内外学者对比进行了大量的研究,并取得了很好的效果[5]。近年来,随着深度学习的蓬勃发展,基于深度学习的分类模型应用到短文本分类任务上也取得了较好的效果[6]。如Kim[6]在2014年提出的基于卷积神经网络(Convolutional Neural Networks, CNN)的TextCNN模型,首次将CNN应用到文本分类上。随着研究的进一步推进,预训练语言模型也被应用到自然语言处理的任务中,如Sun等[7]研究了BERT(Bidirectional Encoder Representation from Transformers)在文本分类任务上的不同微调方法,包括文本的预处理、逐层学习率和灾难性遗忘等问题,在短文本分类任务上取得了较大的性能改进。
尽管传统的神经网络模型以及预训练语言模型已经较为成熟地应用到短文本分类任务中,并且取得了良好的分类效果。但是,这些方法在训练过程中通常需要大量的有标签或无标签的数据[8],且模型参数量较大。然而在实际应用中,训练分类模型时,训练数据的来源是最大的难题之一。我们经常面临资源匮乏的数据问题,通常是因为训练时所需的大量数据相对来说难以获取,并且在对大量的数据进行训练时成本较高[9]。因此如何在少样本数据的情况下,对短文本进行准确的分类,已经成为实际应用中巨大挑战。
为了解决这个问题,本文提出了一种基于提示学习的中文短文本分类方法,在仅有少样本数据的情况下取得了良好的中文短文本分类效果。提示学习是自2021年开始自然语言处理领域掀起的一股新的浪潮[10],提示学习为了更好地利用预训练语言模型的知识,改变了输入数据的格式,通过加入模板和构建标签词表的方式,将分类问题转化为一个预测和标签词相关的问题[11]。本文对以新闻标题、外卖评论等为代表的中文短文本进行分类,手动设计了不同的模板,通过实验选择效果较好的模板对输入的数据进行了新的构造,变成了一个带有mask的短文本,通过词向量的方式输入提示学习的模型,最后将模型的输出映射到该短文本所属的真实标签后进行预测。据我们所知,这是第一次将提示学习运用到中文短文本分类上,并且与其他常用的分类方法相比,分类效果良好。
本文的主要贡献总结如下:
(1) 提出了一种新的基于提示学习的中文短文本分类方法,充分利用了预训练语言模型的知识,分类效果较为理想。
(2) 不同于以往的需要大量有标签或无标签的训练数据的分类器模型,本文方法仅仅需要很少的训练样本就能实现良好的分类。
(3) 实验结果证明,本方法在微博评论这种中文短文本数据集中,分类的准确率明显优于现有的几种方法,在仅有40个训练样本的情况下比BERT预训练语言模型使用740个样本的准确率高出近6%。
由于社交网络以及互联网应用的大范围普及,文本数据的交互已成为传播信息的主要方式。在这个背景下,短文本数据大量出现在我们的视野中并正在爆炸式地增长。不同于较为规范的长文本,短文本通常具有稀疏性、即时性、不规范性,以及噪声特征较多、更新迭代较快的特点[12]。这些特征都给短文本分类增加了很大难度,为了更好地解决这个问题,研究人员投入了大量的精力。现有的短文本分类方法可以大致分为基于传统机器学习、基于深度神经网络以及基于预训练语言模型三种方法。
早期的短文本分类研究集中在传统机器学习模型上,如朴素贝叶斯[13]、K近邻[14]以及支持向量机(Support Vector Machine, SVM)[15]等算法。Peng等[16]提出了将N-gram[17]与朴素贝叶斯结合起来的方法,克服了朴素贝叶斯独立假设的不足,增强了属性间的联系。Lin等[18]结合KNN与SVM算法,利用反馈改进分类器预测的概率来提高其性能。但是这些方法往往忽略了文本中词语和词语之间的联系,同时特征工程的构建也较为复杂。并且由于数据的稀疏性问题,传统机器学习在短文本分类上效果不佳。
随着研究的深入,深度神经网络被广泛地应用到短文本分类的任务中[19-20]。如Kalchbrenner等[21]在卷积神经网络[22]的基础上提出了基于动态的卷积神经网络模型DCNN,该模型能处理不同长度的文本并取得了较好的性能表现。Lai等[23]将循环卷积神经网络(Recurrent Neural Networks, RNN)用于文本分类上。相比于CNN模型来说,RNN这种序列模型更容易捕捉到短文本的特征信息。Hochreiter等[24]对RNN进行改进,提出了长短时记忆网络(Long Short Term Memory Network, LSTM)模型,很好地解决了其梯度消失的问题。随后的双向长短时记忆网络[25]比起RNN以及LSTM模型可以更好地获取上下文信息。Zhou等[26]提出C-LSTM模型,这种混合模型将CNN与LSTM的优势结合起来,可以更好地提取句子中的全局信息。为了解决数据稀疏性的问题,Wang等[27]提出了一种结合显式表示和隐式表示的深度CNN模型,通过词嵌入、概念嵌入和字符嵌入来捕获细粒度语义信息。Alam等[28]提出了一种基于CNN的方法,该方法使用单词和实体来生成短文本表示。
近年来,预训练语言模型已在短文本分类的实际应用中获得了更好的语言表示能力[29-30]。Devlin等[31]提出了基于双向Transformer的BERT预训练模型,通过基于遮掩的语言模型更好地理解了上下文之间的语义。受BERT模型的启示,Sun等[32]提出了ERNIE模型,该模型是知识增强的语义表示模型,同时在词向量的表示方面比前者具有更好的泛化能力,并且适应性较好,在中文的自然语言处理任务上取得了较好的性能表现。Lan等[33]提出了ALBERT模型,在缩减了BERT参数的基础上性能不变,并且大大缩短了模型的训练时间。OpenAI团队提出的第一代生成式预训练语言模型GPT-1[34]、GPT-2[35]以及改进后的GPT-3[36],它们随着模型的增加以及训练数据规模的加大而实现较强的泛化能力,在自然语言生成任务上表现得更为突出。Raffel等[37]利用迁移学习的知识,通过引入一个统一的框架来将所有基于文本语言的问题转换成文本到文本的格式,例如,分类任务的输出是单词而不是标签。
尽管基于深度神经网络以及预训练语言模型的短文本分类方法已经取得了较好的分类效果,但由于这些模型往往依赖大量的标注或无标注语料,在缺乏大规模训练数据时很难取得较好的效果。
近期,提示学习作为自然语言处理的第四范式走进了研究人员的视野。提示学习的基本思想是将输入的文本信息按照特定的模板进行处理,把任务重构成一个更能充分利用预训练语言模型的形式,减少模型对大规模数据的依赖。通过借助合适的prompt减少了预训练和微调之间的差异,进而使得模型在少量样本上微调即可取得不错的效果[38]。如Schick等[11]形式化地提出了提示学习的范式,并且对少样本进行了实验。Shin等[39]提出了基于梯度自动化搜索模板的方法,可以根据具体任务自动构造模板,比手动构造模板更为高效。Li等[40]提出参数化的提示,改善了原先离散的提示难以优化的问题,可以根据不同的模型结构定义不同的提示拼接方式,常用于生成任务。经实践发现,提示的变化对实验的性能有较大的影响,Liu等[41]使用非自然语言的提示,将模板的构建转化为连续参数优化问题,可以实现模板的自动构建。不同于前人在微调阶段使用提示的方法,Gu等[42]首次提出提示预训练过程,对预训练任务进行调整,使其在后续的少样本中获得更好的性能。Han等[43]使用逻辑规则来构建提示。考虑到前人工作中的映射基本上都是人工构建或基于模型自动搜索获得,容易带来高偏差,Hu等[44]通过引入外部知识来扩展标签词的搜索空间,取得了较好的效果。大量的实验表明,基于提示学习的方法能够较好地处理自然语言处理领域的下游任务。
本节将介绍本文提出的基于提示学习的中文短文本分类方法。
近代自然语言处理领域技术的发展可以分为四种范式,分别是非神经网络时代的完全监督学习、神经网络的完全监督学习、预训练-微调范式以及近期热门的预训练-提示-预测范式[10]。在提示学习这一第四范式产生之前,基于预训练语言模型的分类模型使用预训练-微调范式,这个范式利用那些已经在大规模未标记数据上通过自监督学习完成预训练的模型,在下游任务上使用少量人工标记的数据进行微调,这比起传统的全监督学习更加省时省力高效。而我们利用提示学习的分类方法,不需要对预训练模型的参数进行调整,而是把下游任务的输入输出形式改造成适合预训练模型的形式。它可以统一预训练和微调的优化目标,并实现轻量、高效的下游任务微调,从而更好地完成任务[45]。
整个提示学习分类方法可以大致分为以下流程: 为输入设计一个模板,构造答案空间的映射,将输入文本放入模板中,使用预训练语言模型进行预测,最后将预测的结果映射回真实的标签。
图1为该方法的整体框架图,我们将根据图1在以下部分详细阐述本文方法。
在实际应用中,一般在句中或句末设计模板填充答案。如果位于句中,称为完型填空提示,适用于预测任务(或称掩码语言模型任务);如果位于句末,称为前缀提示,较适用于生成任务。因此,在中文短文本分类任务中,我们选择完型填空提示。
在我们提出的基于提示学习的中文短文本分类方法中,通过对输入增加提示信息,我们将输入的中文短文本形式化为自然的表达,即增加了手工设计的模板。例如,要对新闻标题进行分类,如图1所示,假设需要将输入的句子x=“国际油价4日继续下跌”分类到类别y1=“经济”或是y2=“教育”中,那么这个模板xp可以设置为如式(1)所示。
这里的[CLS]指的是分类,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为整个短文本的语义表示,然后用于分类。在原始文本中加入模板之后,将作为新的输入数据进入预训练语言模型。
给定一组输入的数据x={x1,…,xn},它们都将会被分类到类别y∈Y中,类别标签的集合记作Vy={v1,…,vn},其中,V是整个类别的集合。Vy中每个单词v被填入[MASK]中的概率表示为p([MASK]=v∈Vy|xp),随后文本分类任务可以转化为类别标签词的概率计算问题,如式(2)所示。
p(y∈Y|x)=p([MASK]=v∈Vy|xp)
(2)
如在短文本“国际油价4日继续下跌”的分类过程中,如果属于y1=“经济”类别的概率大于y2=“教育”类别的概率,那么该文本就会被分类到“经济”中。
所有的类别标签词概率计算好以后,我们需要将每个标签词上预测好的概率映射到对应的类别中。假定映射时每个标签词对于预测结果重要性相同,那么预测分数的均值可以用来进行分类。即可以使用目标函数f进行分类,如式(3)所示。
(3)
最终得到分类结果。
本实验的数据集采用THUCNews新闻数据集[46]、Chinese News Titles[1]数据集、中文外卖数据集以及微博评论数据集,以下简记为THUC、CNT、WaiMai、WeiBo数据集,具体信息如表1所示。
表1 4个数据集的具体信息
通过与P-tuing[41]、TextCNN[47]以及预训练语言模型BERT[31]、ERNIE[32]基线方法进行对比实验,验证了本文方法的有效性。
(1)P-tuning: 将模板的构建转化成参数优化问题,实现模板的自动生成。
(2)TextCNN: 把词嵌入后的词向量再通过卷积层和池化层来更好地构造特征向量。
(3)BERT: 利用预训练模型,将文本嵌入为词向量,再送到分类器中进行分类。
(4)ERNIE: 将外部知识引入预训练语言模型中,对掩码机制进行了改进,更加适用于中文自然语言处理任务。
为了模拟真实应用中训练样本不足的情况,实验过程中,我们进行了5-shot、10-shot以及20-shot的k-shot少样本实验,最终以准确率来评估模型的分类效果。实验参数的设置如下: 我们对训练轮数选取迭代轮次数为5,对于THUC以及CNT数据集,训练集的批大小设为32,学习率设为0.000 3;对于外卖评论以及微博评论数据集,批大小设为5,学习率设为0.000 3。
同时对模型进行了调整,选择了具有较好性能的其他参数进行实验,如选取实验效果最优的模板,这将在3.5节进行展示。对于参数批大小、迭代轮次、学习率对实验结果的影响将在3.6节进行展示。
下面是对于实验训练样本的说明: 在本文的模型中对于每一个k-shot实验,我们从原始的训练集中抽取每个类的k个样本数据来形成少量的shot训练集,并在每个类中抽取另外的k个样本数据来构成验证集。由于这些少样本训练集和验证集选择的不同对于实验结果有一定的影响,所以我们重复了三次随机采样,并对三次随机采样实验后的结果取平均值。
由于TextCNN、BERT以及ERNIE各自性能的原因,我们也分别进行了手动随机采样。以下是具体的采样说明:
(1) 在TextCNN的对比实验中,我们从THUC原始的180 000训练集中分别随机采样700(70×10)条、800(80×10)条以及900(90×10)条;从CNT原始的47 850训练集中随机采样1 920(60×32)条、2 240(70×32)条以及2 560(80×32)条;从WaiMai原始的5 000训练集中分别随机采样140(70×2)条、160(80×2)条、200(100×2)条;从WeiBo原始的100 000训练集中分别随机采样800(400×2)条、900(450×2)条、1 000(500×2)条样本进行实验,为了避免较大的误差,各自进行三次不同的采样后实验的结果取平均值。对照本文所提的模型中的5-shot、10-shot、20-shot样本数。
(2) 在BERT的对比实验中,我们从THUC原始的训练集中分别随机采样1 200(120×10)条、1 300(130×10)条以及1 400(140×10)条;从CNT原始的训练集中随机采样640(20×32)条、800(25×32)条以及960(30×32)条;从WaiMai原始的训练集中分别随机采样440(220×2)条、460(230×2)条、500(250×2)条;从WeiBo原始的训练集中分别随机采样680(340×2)条、700(350×2)条、740(370×2)条样本进行实验。同样,对三次不同随机采样后的实验结果取平均值。对比本文的模型中的5-shot、10-shot、20-shot样本数。
(3) 在ERNIE的对比实验中,我们从THUC原始的训练集中分别随机采样800(80×10)条、900(90×10)条以及1 000(100×10)条;从CNT原始的训练集中随机采样960(30×32)条、1 600(50×32)条以及1 920(60×32)条;从WaiMai原始的训练集中分别随机采样240(120×2)条、260(130×2)条、300(150×2)条;从WeiBo原始的训练集中分别随机采样400(200×2)条、500(250×2)条、560(280×2)条样本进行实验,对三次随机不同采样后的实验结果取平均值。对照本文所提的模型中的5-shot、10-shot、20-shot样本数。
表2及图2~图5详细记录了4个数据集的所有实验结果,从实验中可以得出以下结论。
表2 4个数据集上不同模型的结果
图2 数据集为THUC时各模型的结果
图3 数据集为CNT时各模型的结果
图4 数据集为WaiMai时各模型的结果
图5 数据集为WeiBo时各模型的结果
(1) 本实验所用的样本数量不等,但是在样本数增加的过程中,所有模型的实验性能都有所提高,这说明增加训练样本的数量可以在少样本的分类过程中提高分类效果。
(2) 与TexTCNN以及BERT相比,本文方法在训练样本数量相差巨大的情况下,仍取得了更好的分类效果。如在THUC和WeiBo数据集中,TextCNN训练样本数分别达到提示学习所用样本数的14和80倍;在WaiMai数据集中,BERT模型所用样本数达到提示学习所用样本数的44倍。
(3) 在4个数据集中,ERNIE模型所用样本数最高达到提示学习所用样本数的40倍。这些实验结果说明在绝大多数情况下,本文的模型与以上三个对比方法相比取得了更为理想的分类效果,这就证明本文方法在少样本的情况下是有效的。
(4) P-tuing是在提示学习中自动生成模板的方法,经过实验,分类效果整体上优于TextCNN以及BERT模型, 但是不及本文方法中手动设计模板的实验结果,这就说明通过我们手工设计的模板进行实验的方法是更加有效的。
模板的设计与选取在很大程度上也影响了提示学习的实验效果,使用好的模板可以得到较高的准确率。在表3中列出了实验过程中手动设计的模板。
表3 模板的具体内容
经过对不同模板多次随机实验,我们发现并使用了分类效果较好的模板。表4列出了我们在 10-shot 样本数时不同模板的实验结果。
表4 10-shot时不同模板的准确率
在这一部分,本文研究所提方法中不同的参数对实验结果的影响,选取实验轮数、学习率以及批大小作为考察因素,在THUC数据集上选取100个样本进行实验。经过实验我们发现,随着迭代轮次数量的增加分类的正确率在整体上呈现上升趋势,这表明适当地增加训练轮数可以提高分类效果,但是随着轮数的增加,所有模型的实验效果都有所提高,同时也会增加时间复杂度,所以主实验中我们只选择了迭代轮次轮数为5。对于批大小的选择,我们发现在32时得到较好的效果,由实验结果可知,批大小的选择对实验结果有一定程度的影响。并且随着模型的学习率的变化,实验结果也在一定范围内波动。图6~图8展示了具体的实验结果。
图6 10-shot时不同迭代轮次下模型的实验结果
图7 10-shot时不同批大小下模型的实验结果
图8 10-shot时不同学习率下模型的实验结果
本文提出了一种基于提示学习的中文短文本分类方法,该方法不需要大量的训练数据,充分利用了预训练语言模型的强大泛化能力,仅在少样本的情况下即可解决短文本的分类问题,减少了对下游任务有监督数据的依赖,经过实验证明,该方法有效。下一步工作中,我们将尝试使用高效的方法对分类标签的空间进行扩展,以便在不同的下游任务中取得更好的性能表现。