王正佳,李 霏,姬东鸿,滕 冲
(武汉大学 国家网络安全学院 空天信息安全与可信计算教育部重点实验室,湖北 武汉 430072)
立场检测是指分析确定文本作者对目标(如实体、事件、观点等)的立场,通常将立场分为三类,“支持(favor)”“反对(against)”和“其他(none)”[1]。该任务属于文本分类任务,给定目标(target)和文本(text),判断文本作者对该目标的立场(stance)类别。立场检测是舆情分析中的重要手段。随着互联网的快速发展,人群越来越多地在社交媒体平台传播和获取信息,并针对于特定热点发表看法、表明立场。通过立场检测,掌握社交媒体用户对于重要目标的立场,是舆情风险控制的重要环节。比如英国数据公司剑桥分析曾在2016年美国大选中借助立场检测手段判断选民对候选人的立场,并精准投放广告影响选民立场。因此,利用立场检测掌握社交媒体上民众对于特定事件的立场,反制敌对势力的舆论引导,关乎网络舆情安全乃至国家安全。
立场检测方法早期主要是基于特征工程的机器学习方法,基于词向量、词频等信息,利用SVM、词袋模型、随机森林、决策树等方法进行立场分类[2-3]。随着深度学习方法的兴起,特征提取从人工转为自动学习,基于LSTM,CNN以及基于大规模预训练模型的方法取得了相当好的效果[4-5]。在特征的选取方面,提取并融合语义特征、情感特征、主题特征是目前主流的模型设计思路。通过特征提取网络获取文本或主题的句向量是诸多方法的基础,如近期采用bert模型获取文本和主题句向量的方法[6-7]。通常获取bert句向量有两种手段,其一使用bert特殊符号[CLS]的隐层状态作为句向量,该符号为bert自带添加于句首,包含一定的全句信息;其二则将句子中每个词对应的bert隐层状态进行融合,如对每个词隐层状态求平均作为句向量。
提示学习是自然语言处理最近兴起的方法,通过在输入中添加若干提示(prompt),提高预训练模型的性能[8-10]。与过去的微调(tuning)方法不同,思路上提示学习方法不再是让模型去适应任务,而是通过构造合适的提示使任务向模型靠拢,保留原有的分类器。提示学习方法发挥预训练模型自身学习的知识,通过提示引入语义引导模型生成结果,或者配合提示进行微调训练。掩码语言模型(Masked Language Model,MLM)是提示学习中常用的预训练模型类型(如bert模型)[11-12],通常基于MLM的提示学习提示模板中只有一个掩码位置,然而中文词汇或词组常常超过一个字(词),无法全部填入掩码位置,因此常常只将第一个字(词)填入。比如,“作者的态度是__。”,假如态度是“支持”,由bert分词器分词后包含两个字“支”和“持”,只有一个掩码位置,则通常只填入第一个字“支”,但仅填入一个字不利于形成通顺语义。
针对前文所述要点,该文提出了基于多掩码与提示句向量融合分类立场检测模型。首先,对句向量的生成方法进行改进,构造提示模板利用bert生成句向量;其次,在结构上进行创新,设计了多掩码提示学习分类结构,支持多字填入,并构造合适的模板将提示句向量和多掩码提示学习相结合,提示句向量专注于对文本语义的聚合,通过训练新分类器对立场进行隐式的分类,多掩码提示学习分类利用具体的答案器,显式判断立场,同时答案词能为句向量引入立场词信息,加强句向量与具体的如“支持”等立场词的联系。在NLPCC中文立场分类数据集上进行了实验。与相关基线模型相比,该方法效果明显,取得了79.3的总F1值,与最优方法接近。
2016年Mohanmmad等[13]从推特上收集文本构建了立场检测英文数据集,SemEval-2016 Task6立场检测任务使用了该数据集作为任务数据集。Xu等[1]构建了基于中文微博文本的立场检测数据集,并发布于NLPCC-2016会议的立场检测任务。
早期的立场检测方法基于特征工程利用机器学习方法进行分类。Dian等[2]提出基于多文本特征融合的立场检测方法,综合词袋特征、共现特征、词向量等多种特征信息,利用支持向量机(Support Vector Machine,SVM)、随机森林等多种方法进行立场分类。在Zhang等[3]的工作中,提取了情感词和主题词作为特征词,再利用对应的词向量使用SVM进行分类。
深度学习兴起后利用深度网络提取特征进行立场检测成为主流。Bai等[4]设计了基于双向长短时记忆网络(Bidirectional Long Short Term Memory Network,BiLSTM)与卷积神经网络(Convolutional Neural Network,CNN)进行特征提取,经过注意力池化,再连接特征嵌入进行特征融合并分类的方法。Du等[5]提出了特定目标的注意力网络立场检测方法,利用双向循环神经网络(Recurrent Neural Network,RNN)编码文本,训练目标特征嵌入,将文本与目标信息进行内积计算融合特征,训练分类器分类。预训练模型出现后相关方法取得了更好的效果,由bert生成的句向量相比此前的RNN相关方法优势明显。Wang等[6]设计的Bert-Condition-CNN模型采用bert的[CLS]作为句向量,构建话题集与句向量间的关系矩阵,用CNN提取特征,对立场进行分类。Geng等[7]利用bert获取话题和文本表示向量,其中话题句向量由词隐层状态平均得到,并用卷积注意力融合特征,提取文本的词语级与句子级情感特征,将特征拼接进行分类,取得了NLPCC2016数据集上目前的最佳结果。
提示学习方法通过合适的提示将下游任务转化为适合模型的形式,通常无需训练新分类器,可以在原分类器上微调,在监督任务以及少样本、零样本任务中均有不错的表现[8]。在提示形式方面,Petroni等[11]提出的LAMA模型定义了完形填空形式的提示模板,Li等[14]使用了前缀形式的提示;在答案设计方面,Schick等[12]使用了人工设计的答案器(verbalizer),Hambardzumyan等[15]提出的WARP框架则使用了新定义的一组嵌入作为答案器。掩码语言模型(Masked Language Model,MLM)是语言模型的一种,最具有代表性的是bert模型[16],在预训练过程中语料被随机掩蔽部分位置,再由模型还原。单向生成语言模型(Left-to-Right LM,如GPT-3模型[10])、编解码结构语言模型(Encoder-Decoder LM,如T5模型[17])、前缀语言模型(Prefix LM,如UniLM1模型[18])也广泛应用于提示学习。该文使用了完形填空形式的提示模板以及人工设计的答案器。
对于立场检测任务,输入是一个数据集D={(x1,t1),(x2,t2),…,(xn,tn)},x表示一个句子,t表示特定目标,D包含n个样本;对于每一个样本,输出该文本x对于目标t的立场标签y,其中y∈Y={favor,against,none},依次表示“支持”“反对”和“其他”三种类别。例如对于句子“春节放鞭炮污染环境,建议禁止”和目标“春节放鞭炮”,应输出立场y=against。
如图1所示,多掩码与提示句向量融合立场检测模型由四层组成。输入层输入文本(text)和目标(target);提示层是一个经过设计的提示模板,将文本和目标填入,并包含若干掩码位置[mask];bert编码层得到模板填入内容后的句子,在每个词的位置进行编码;融合分类层包括三个部分,图1左侧的bert提示句向量分类,由新训练的分类器分类;右侧通过答案器进行分类,不需要训练新分类器;最后由中间的融合概率分类部分对句向量分类和答案器分类结果进行融合,计算损失联合优化模型。
图1 多掩码与提示句向量融合立场检测模型
提示层由一个完形填空形式的提示模板构成,如图1所示。模板中的[text]和[target]位置对应填入数据样本中的文本和目标。
在“句子“[text]”的含义是[mask]”这一句中,[mask]掩码位置用于句向量的生成,提示模板要求模型在[mask]处总结句子含义,以此生成能够代表[text]语义的句向量。
在“对于主题“[target]”表达了[mask][mask]态度”这一句中,两个[mask]掩码位置对应于答案器中的答案词,如“反”和“对”。
由于bert模型在其注意力部分允许模型同时看到前后所有位置的信息,因此句向量生成位置虽然在前,也能够捕获主题信息和答案器引入的信息。
该文使用预训练模型bert作为提示学习框架中的掩码语言模型。对于句子x,由bert分词器对x进行分词,得到n个单词,并自动在句子头尾分别添加[CLS]和[SEP]特殊符,得到x'。将分词处理后的句子输入bert模型,bert模型对上下文信息进行综合,在每一个词的位置计算隐层表示,得到全句编码H:
H=BERT(x')
(1)
其中,H={H0,H1,…,Hn+1}。bert包括多个隐层,对于第i位置的词,其对应的隐层可以表示为Hi={h0,h1,…,hj},j表示有j层隐藏状态。
2.5.1 bert提示句向量分类
如图1,在第一个[mask]位置获取bert提示句向量。此位置通过提示模板的构造,引导模型概括句子含义。相比于采用[CLS]隐藏状态的方法,提示句向量语义指向性更强;而相比于对句子所有词的隐藏表示取平均的做法,bert提示句向量利用了模型自身的注意力机制,避免了简单平均造成的重要信息权重不足。该bert提示句向量记为s0,s0由隐藏状态的后k层求平均获得,即:
(2)
其中,hi∈H0,k≤j。该文采用了k=4,即后四层隐藏状态的平均。
如图2所示,提示句向量由bert在图中第一个[mask]位置给出,bert联系上下文综合文本、目标和立场词信息,将特征融合。图2中的模板是简略示意,实际模板是符合语义的完整句子(如图1),相比于简单拼接,使用提示模板能够降低模型的困惑。
图2 提示句向量的原理示意图
该文采用了一个双层前向神经网络(Feed Forward Neural Networks,FFNN)作为分类器,将bert提示句向量输入分类器得到句向量分类概率分布p0,即:
o=relu(W0·s0+b0)
(3)
p0=softmax(W1·o+b1)
(4)
其中,W0,b0和W1,b1分别表示第一层与第二层的矩阵与偏置,使用了relu激活函数。
2.5.2 多掩码提示学习分类
定义2:提示模板T(·),将x映射到带有若干掩码位置的完形填空句子中。一个模板可以有多个文本填充位置,T(·)的输入可能是多个句子,如图1。
前文所引彭绍升《儒行述》中的徐枋小传,在其篇末是这样表明史源的:“《居易堂集》《苏州府志》。”是则,传主的自我人生选择,特别是诗文集中的自我抒怀和陈情,对身后为其写作传记、行状者,还是起着至关重要的作用的。对此,徐枋本人是深信不疑的,这在其自编《居易堂集》的时候,就表现得尤为突出,在《自序》中,他这样说道:
定义3:答案器v(·),将分类标签y映射到具体的词组上,经过分词后词数量可能大于1,因此定义v(y)={w1,w2,…,wm},m的大小也对应于模板中掩码的数量,用vk(y)表示wk,wk∈v(y),即v(y)中第k个单词。以图1中后半句为例,由于bert按单个汉字分词,v(y=favor)={支,持},长度为2即m=2,对应有v1(y=favor)=w1=支,v2(y=favor)=w2=持。不同标签对应的答案词分词后长度不一致,则使用填充符补足长度。对于不同类别答案器的词组确保是不同的。
图3给出了单独使用的多掩码提示学习分类示意图,与图1比较,多掩码提示学习分类与提示句向量分类能够自然地结合。
图3 多掩码提示学习分类示意图
对于掩码位置k,分类标签为y的概率可以表示为:
(5)
该过程使用模型本身的分类器,无需训练新分类器,记bert分类器为bert_cf。记fv(·)表示根据答案器v(·)所定义的字选取这些字对应位置的值,如图3中答案器所示,fv(·)从词表概率分布中选出答案词对应的字的概率,以此作为分类依据。向bert分类器输入最后一层隐藏状态,同2.4节,将图1中后两个掩码位置概率分布分别记为p1,p2,可得:
p1=softmax(fv(bert_cf(H1[-1])))
(6)
p2=softmax(fv(bert_cf(H2[-1])))
(7)
显然不同的[mask]位置都可以独立完成分类。
2.5.3 融合概率分类
(8)
(9)
训练时采用交叉熵函数对模型参数φ进行优化:
(10)
提示句向量分类器与bert指定不同的学习率进行训练,通常提示学习中微调bert学习率设置较小。
采用了立场检测中文数据集NLPCC2016[1]对文中方法进行实验测试,包括了5个目标上的总计4 000条已标注立场类别的中文微博文本数据,并划分了其中3 000条作为训练集,1 000条作为测试集。数据集统计信息如表1,括号内为目标的简写,与后文实验表格对应。
表1 NLPCC2016数据集统计信息
文中方法的实现使用了Pytorch[19]和Huggingface Transformers工具[20]。掩码语言模型选择了bert[16]模型(bert-base-chinese),该模型由12层transformer[21]编码器组成,词向量维度768。提示句向量分类器维度为768*768*3。模型训练优化使用了SGD优化器。对于句向量分类器学习率设置为0.01,bert的参数学习率设置为5e-4。将训练集的15%作为验证集选取最佳模型,对不同目标的样本单独训练模型。提示模板、答案器设置如图1。
机器学习方法:
Dian[2]:该方法基于词频统计的特征和文本深度特征,使用支持向量机,随机森林和梯度提升决策树对特征进行立场分类。
深度学习方法:
CBL[22]:CNN-BiLSTM模型,CNN提取文本向量的局部特征,BiLSTM网络提取文本的全局特征,两者结合进行立场检测。
TAN[5]:该模型通过BiLSTM网络与注意力机制提取文本与目标之间的特征信息,实现了基于特定目标的注意力深度分类网络。
BGA[23]:基于GCN(卷积图网络)与BiLSTM,BiLSTM捕获句子的特征,根据依存句法树建立GCN,结合注意力得分进行分类。
CTB[24]:基于bert编码文本和话题,将两者拼接,并引入情感分类辅助任务。
BCC[6]:该模型对微博文本进行主题短语提取来扩充目标话题,利用Bert模型获取文本的句向量,构建话题集合与文本句向量间的Condition层关系矩阵,用CNN提取特征,对立场类别进行分类。
BSECA[7]:该模型基于bert句向量,利用卷积注意力对文本和话题进行信息提取,融合词语级和句子级情感表示,形成最终的语义表示检测文本立场。该模型额外使用了微博情感数据集训练情感分类器。
按照此前的中文立场检测研究的评价指标惯例,对于特定目标,对支持和反对两个类别计算F1值,取二者平均作为该目标上的评价指标:
(11)
总评价指标使用各个目标上F1的算术平均值:
(12)
其中,c表示目标类别的数量,近年来的中文立场检测相关研究使用了式12衡量总体效果,与NLPCC立场检测任务[1]评价指标设置一致。
本节表中PBMSV(Prompt Bert with Multi-mask and Sentence Vector)表示该文提出的多掩码与提示句向量融合立场检测模型。
表2给出了文中方法与相关对比方法在NLPCC中文数据集上对五个目标的数据单独训练模型的实验结果。
表2 NLPCC中文数据集五个目标单独训练(F1)
从表2可以看出,在该中文数据集上五个目标分开单独训练的实验中,PBMSV模型在五个目标中有两个目标取得了最好的F1值,并取得了接近最优的总F1值。相较于采用机器学习方法以及BiLSTM获取句子信息的Dian,TAN,CBL,BGA方法,采用bert生成句向量特征的方法总F1提高较多,表现出bert预训练模型在特征提取方面的显著优势。采用bert进行编码的方法中,BCC对数据进行充分清洗,采用condition层和CNN进一步融合特征,相比此前的方法优势明显。
BSECA设计了更为复杂的特征提取网络,并且利用了额外的微博情感数据集训练单独模型引入情感信息,大幅提高了此前的结果。PBMSV方法利用了新的提示句向量代替此前的[CLS]或平均句向量方法,利用多掩码提示学习分类和提示句向量相结合的方法,提高句向量生成质量,思路上既融合了目标和文本语义,又利用句向量和人工答案器提示学习相结合将“支持”“反对”等具体的立场词信息引入,实验结果在两个目标上超过了BSECA方法,一个目标F1相同,取得79.3的平均F1值。考虑BSECA方法使用了额外的微博情感数据集训练情感特征提取模型,文中方法效果上与之接近。
为验证PBMSV模型中各个模块的有效性,设计了六个消融对比实验,比较各个模块的作用。
PBMSV:主要包括提示句向量(Prompt Sentence Vector,PSV)、多掩码提示学习(Prompt with Multi-mask)和融合分类(fusion classification,fc)三个部分。
-fc:去掉融合分类,将句向量分类损失和答案器两掩码位置损失相加进行优化,分类由句向量分类器完成。
-PSV:去掉提示句向量,重新设计提示模板,掩码位置损失相加进行优化,分类由答案器首位置完成。
-PM:去掉多掩码的答案器提示学习分类,保持提示模板不变,由句向量分类器完成分类。
PBSV:由图1中的模板前半句生成提示句向量,再将目标输入bert模型取[CLS]隐藏状态获得目标句向量,将二者拼接输入分类器。
BERT [CLS]:分别将文本和目标输入bert,它们各自的[CLS]隐藏状态作为文本和目标的句向量,将二者拼接输入分类器。
BERT avg.:分别将文本和目标输入bert,取它们各自每个词的最后一层隐藏状态平均值作为文本和目标的句向量,将二者拼接输入分类器。
从表3可以看出,两种BERT基础句向量实验与PBSV比较,结构基本一致,区别在于PBSV使用了提示句向量,PBSV的F1值略高表明了提示句向量在特征提取方面有一定的提升效果。-PM和PBSV比较,两者差距不大,表明了使用模板引入目标信息与直接拼接目标句向量效果接近,而使用模板降低了分类器维度,参数量更少。-PSV只使用多掩码提示学习方法,取得了77.1的F1值,效果出色,相比于4.1节中的多数方法取得领先。PBMSV比-fc效果更好,验证了融合多个分类结果优化损失的有效性。相比于BERT [CLS]和BERT avg.,PBMSV分别取得了8.4%和9.5%的提高。
表3 NLPCC中文数据集上的消融实验(Avg. F1)
该文提出了一种基于多掩码与提示句向量融合分类的立场检测模型(PBMSV)。该模型中对句向量的生成进行了改进,采用提示学习思想,构造语义通顺的模板融合文本、目标和立场词信息,帮助bert生成更好的句向量进行分类;采用模板-答案器结构的多掩码提示学习分类方法,使用bert自身分类器获取词表概率分布,由答案器分类,与提示句向量配合,在结构上进行创新改进;融合句向量分类结果和答案器分类结果,联合优化模型,完成立场检测分类。在NLPCC2016中文立场检测数据集上的相关实验证明了PBMSV模型的有效性,并验证了提示句向量的效果。
现有研究大多采用bert生成特征,再进一步通过设计网络结构对相关特征进行融合和分类。而提示学习方法着重于发挥预训练模型知识,利用提示帮助模型完成下游任务。除监督方法之外,提示学习方法在少样本场景下也表现出色。在未来的工作中,将进一步地研究提示学习在立场检测中的应用,还将探索少样本场景、迁移场景的立场检测。