胡玉雪,吴明民,沙 灜,曾 智,张瑜琦
(1. 华中农业大学 信息学院,湖北 武汉 430070;2. 农业农村部智慧养殖技术重点实验室,湖北 武汉 430070;3. 湖北省农业大数据工程技术研究中心,湖北 武汉 430070;4. 农业智能技术教育部工程研究中心,湖北 武汉 430070)
委婉语(Euphemism)是指通过温和、含蓄的措辞来表达不直接、不得体的信息,是语言交际中的一种重要形式[1]。在内容审核[2-3]和暗网交易市场[4-6]等领域中,委婉语被广泛应用以掩盖不良信息的真实含义,如歧视、仇恨、非法交易等。这些委婉语看似普通,实则晦涩难懂,使得地下交易过程难以追踪。因此,委婉语识别,即识别出委婉语具体指代的目标词对帮助内容审核、打击地下交易具有重大意义。
目前,针对委婉语识别的研究较少,Zhu等人[2]对训练集语句构建词典,使用词袋模型提取句子级特征,最后通过多项逻辑回归来识别委婉语;Yuan等人[3]将委婉语识别到一个泛类别,而不是具体的目标词。例如,他们将“horse”识别为“drug”(毒品类)而不是直接识别为“heroin”(海洛因)。Sha等人[7]基于字词和部首联合训练词向量,根据语义相似度对候选目标词进行排序以实现委婉语的识别。You等人[8]融合全局范围内的新词发现词片段信息,根据跨文档语料相似性度量对目标词进行排序以获得委婉语指代的具体目标词。
目前委婉语识别面临的主要挑战在于: ①缺乏委婉语与其目标词之间有准确映射关系的数据集; ②委婉语既可用作表面含义,也可表示潜在含义,且委婉语潜在含义和表面含义相差甚远,例如,“weed”表面含义是杂草,但在用作毒品类委婉语时,表示“Marijuana”(大麻)。而当前的方法主要使用词袋模型,普遍采用静态词嵌入方法[9-10],这样丢失了委婉语在不同上下文中的语境信息。
针对上述问题,本文提出了一种双层自监督学习方法(DSLM)。为了解决缺乏有效标注数据集的问题,DSLM在委婉语语料库上预训练委婉语BERT[11]模型,基于此模型构建一个自监督学习框架,将掩码掉目标词的句子作为样本、掩码掉的目标词作为标签,这样自动构建了一个带标签数据集;为了解决委婉语表面含义和潜在含义不一致的问题,DSLM使用语境对比学习方法,采用两阶段对比学习,首先疏远委婉语上下文和委婉语表面含义的语义距离,然后拉近委婉语上下文和目标词的语义距离,以加强委婉语上下文到目标词的映射关系。在三个委婉语数据集[2](Drug、Weapon、Sexuality)上进行了实验验证,本文方法得到的结果比当前最先进的方法高24%~35%,且我们的模型更稳定、收敛更快。本文的主要贡献如下:
(1) 提出了基于BERT的双层自监督学习框架,自动构建带标注的训练数据集,以解决缺乏有效标注数据集的问题。
(2) 提出了语境对比学习方法,该方法使用两阶段对比学习,可以加强委婉语上下文到目标词的映射关系,有效缓解委婉语表面含义和潜在含义不一致的问题。
(3) 实验证明了我们模型的有效性,本文提出的DSLM方法在三个数据集上的性能都优于当前最佳方法。且随机多批次测试结果表明,DSLM模型置信度高、收敛更快。
本文所涉及的主题主要包括委婉语识别、自监督学习、对比学习。本节将分别介绍这三个方面的相关研究进展。
在自然语言处理领域中,委婉语识别是一项具有重要应用价值的任务,它在社交媒体、内容审核、情感分析等领域得到广泛应用。目前,现有的委婉语识别方法较少,其中最为相关的是Zhu等人[2]的工作。他们首次提出了委婉语识别任务,开发了一种自监督学习的算法,利用词袋模型在句子层面分析委婉语的上下文以对应目标词。Yuan等人[3]的工作主要是识别委婉语的上位词,而不是直接识别出委婉语的具体含义。他们生成一组上位词(如“毒品”是“海洛因”的上位词),使用二元随机森林分类器和递归查找方法,将给定的委婉语分类到特定上位词。他们的方法将“horse”识别为一种毒品,而不是直接解释为海洛因。这些方法使用静态词嵌入、词袋模型,难以区分同一词的不同含义,无法捕捉委婉语的潜在含义。
从委婉语的社交用途来看,变体词是委婉语的一种形式,委婉语识别任务与变体词解析相关[7-8]。Sha等人[7]提出基于字词和部首联合训练的词向量的方法,根据语义相似度对候选目标词进行排序,以获得委婉语的目标词。You等人[8]提出了联合词片段信息的BiLSTM-CRF模型来实现委婉语的发现,再使用CRF对文档中的委婉语进行标注,最后根据跨文档语料相似性度量对目标实体进行排序。这些方法主要针对中文特有属性,其中的委婉语多数基于娱乐等目的,具有一定的时间性、事件性。
自监督学习是一种机器学习方法,它利用无标签数据进行训练,通过生成伪标签或注释来学习模型[12]。例如,要训练一个文本预测模型,可以取一个文本语料库,掩码句子的一部分,然后训练模型预测被掩码的部分,这样可以从未标注的数据创建监督学习任务。自监督学习主要分为两类: 生成模型和对比模型[13]。典型的模型有GPT[14]、BERT[11]、VQ-VAE[15]、MoCo[16]等。
自监督学习方法在标签数据稀缺或获取成本高昂的情况下非常有用。在自然语言处理(Nature Language Processing,NLP)领域,自监督学习被广泛应用于上游语言模型,如预测中心词和相邻词[9-10]、自回归语言建模[14]、掩码语言模型和下一句预测[11]、句子重排和文档旋转[17]等。进而应用于机器翻译[18]、问答系统[19]、情感分析[20]等下游任务。
对比学习是一种有效的自监督学习方法,通过比较不同样本之间的相似性和差异性,学习到样本的内在特征,并将其应用于下游任务。对比学习最早在计算机视觉领域被引入[21],主要使用孪生神经网络[22]进行训练,旨在拉近同类图像的特征之间的距离、推远不同类图像之间的特征之间的距离,以获得更好的特征提取模型,典型的模型有SimCLR[23]、MoCo[16]等。近年来,对比学习在NLP领域也受到了广泛关注,如SimCSE[24]、SimCTC[25]等。
近年的研究表明,对比学习在NLP任务中具有广泛的通用性和潜力。例如,Xie等人[26]提出了一种基于全局和局部特征对比学习的文本分类方法;Nguyen等人[27]提出了一种主题建模的对比学习方法;Zhou等人[28]提出了一种零样本跨语言迁移的跨语言对比学习方法,在没有任何并行数据的情况下将知识从源语言迁移到目标语言。从文本分类到主题建模再到跨语言迁移,对比学习是一种具有发展潜力的方法,可以学习文本的鲁棒表示,并将其推广到新的自然语言处理任务。
本文研究的问题是: 已知含有委婉语的句子s=[w1,…,euph,…,wi,…,wm](其中已知euph是委婉语),目标词集T={t1,…,tg,…,tj,…,tn}。我们的目标是确定委婉语euph实际指代的目标词tg。以表1为例,我们希望能确定“pot”指的是目标词集中的“marijuana”。
表1 部分委婉语句子和目标词示例
本文提出了一种双层自监督学习方法(DSLM),架构如图1所示。DSLM主要由外层自监督学习框架和内层自监督学习模块组成。
训练时,外层自监督学习框架,基于BERT预训练模型,提取了所有含有目标词的句子,对目标词进行掩码,将掩码后的句子作为训练样本,对应的目标词作为标签,这样,自动构造了一个带标签数据集。内层自监督学习模块,用于学习掩码掉目标词处的上下文语义表示,最大化其与目标词语义表示的一致性。测试时,输入掩码掉委婉语的句子,经过外层和内层自监督学习微调好的模型,预测掩码掉委婉语处对应的目标词。
训练过程中,DSLM模型一共分为三个阶段: 预处理、语境对比学习、分类预测。首先,在委婉语语料[2]上进行增量预训练,得到一个委婉语BERT模型(记为“Euph_BERT”),分别提取掩码掉委婉语和目标词处的上下文语义。其次,采用语境对比学习模块疏远委婉语上下文和委婉语表面含义的语义距离,拉近目标词上下文和目标词的语义距离。最后,将多个表示组合起来,通过分类模块预测掩码掉目标词处对应的目标词。
为了充分利用委婉语上下文信息,DSLM在委婉语语料库上继续预训练得到委婉语BERT模型(Euph_BERT),然后基于此模型对数据集进行处理。
首先,将掩码掉委婉语的句子s(s∈S,S是掩码掉委婉语的句子集)转化为BERT模型的输入序列seqe={[CLS],toke1,…,tokei,[MASK],…, tokep,[SEP]}。同样地,将掩码掉目标词的句子s′(s′∈S′,S′是掩码掉目标词的句子集)转化为BERT模型的输入,得到seqt={[CLS],tokt1,…,toktj,[MASK],…,toktq,[SEP]}。tokei和toktj分别是seqe的第i个词条、seqt的第j个词条。[MASK]是掩码掉委婉语或目标词处的标记,特殊标记[CLS]和[SEP]是用作引导和结束输入通道序列的边界标记。经过BERT Encoder层编码,分别取seqe和seqt掩码处的最后一层隐藏向量hme和hmt作为掩码委婉语处上下文表示和掩码目标词处上下文表示,如式(1)、式(2)所示,其中,me和mt分别是序列seqe和seqt中[MASK]处的索引值。
然后,将委婉语集Euph={euph1,euph2,…,euphm}和目标词集T={t1,t2,…,tn}分别转换为BERT模型的输入,经过Euph_BERT嵌入层[式(3)、式(4)],分别得到委婉语表面含义表示heuphi和目标词表示htj(在绝大多数上下文情况下,委婉语体现的都是其表面含义,所以可以将heuphi用作委婉语表面含义表示)。
针对委婉语表面含义和潜在含义不一致的问题。DSLM使用语境对比学习模块,该模块包含两阶段对比学习: 第一阶段疏远委婉语上下文和委婉语表面含义的语义距离;第二阶段拉近目标词上下文和对应目标词的语义距离,疏远和其他目标词的语义距离。通过两阶段对比学习可以最大化委婉语上下文和其潜在含义的语义一致性。
第一阶段正样本对由掩码掉委婉语处上下文表示hmei和其对应的委婉语表面含义表示heuphi组成(euphi是掩码掉的委婉语),负样本对则可表示为{hmei,heuphj}(i≠j)。与SimCSE[24]不同的是,这里我们要疏远正样本对,以强化其语义之间的差别,而不是拉近它们,因此对第一阶段对比学习损失进行取反操作,以疏远正样本对,具体计算如式(5)、式(6)所示。
其中,N是训练集中正样本对数量,b是批次内正样本对数量,τ是温度超参数,sim(h1,h2)是余弦相似度。
第二阶段正样本对由掩码掉目标词处上下文表示hmti和其对应的目标词表示hti组成(ti是掩码掉的目标词),负样本对由掩码掉目标词处上下文表示和其他目标词表示组成。使用负数的交叉熵作为训练目标,第二阶段对比学习损失计算如式(7)所示。
(7)
语境对比学习模块联合第一阶段和第二阶段对比学习代价进行训练,损失为:
ls=λls1+ls2
(8)
这里,λ是超参数,是为了调整两个阶段对比学习对最终委婉语识别任务的权重。
分类模块用来预测掩码处上下文对应的目标词,基于上述得到的掩码掉目标词处上下文表示hmt,对每一个候选目标词打分,计算出给定掩码处上下文得到选择的目标词的概率,如式(9)所示。
(9)
其中,s∈S训练句子集,w∈d、b∈是模型参数,⊙是逐位相乘。训练的目标是最小化预测结果和真实值的交叉熵,如式(10)所示。
(10)
其中,n是目标词候选集中目标词的所属类别数(同一类别下的目标词,表示同一事物),tg是真实目标词的单热向量。预测损失ls和对比学习的损失lc之和就是我们整个委婉语识别任务训练损失,最终的损失函数loss表示如式(11)所示。
loss=lc+ls
(11)
训练时,DSLM模型通过联合地计算对比学习损失和分类损失来微调、优化模型参数。测试时,DSLM可以动态提取委婉语上下文语义特征,有效识别语料中的委婉语。
本节在三个基准数据集[2](Drug、Weapon、Sexuality)上对我们提出的模型(DSLM)进行了实验评估,并将其与一组基线模型进行了比较。
本文在数据集Drug、Weapon、Sexuality上进行了模型实验,这些数据集来源于毒品市场帖子、Gab社交网络服务平台、在线俚语词典等,包含三种类别的句子: 含有目标词的句子、含有委婉语的句子、不含委婉语和目标词的句子。各个数据集的概览情况如表2所示,其中Drug、Weapon、Sexuality三个数据集对应的目标词候选集分别有33、9、12个类别(每个类别下的目标词,表示同一事物)。
表2 数据集概览
DSLM采用了自监督学习框架以解决缺乏含委婉语到目标词映射的数据集问题。在训练模型时,使用掩码掉目标词的句子作为训练数据,并将对应的目标词作为标签;测试时,输入掩码掉委婉语的句子,并使用已训练好的模型来预测委婉语对应的目标词。因此,需要两种输入: ①从原始文本语料库中提取掩码掉目标词的句子(用于训练)、掩码掉委婉语的句子(用于测试); ②目标词列表。为了评估DSLM测试结果的准确性,需要依赖委婉语及其目标词对应的真实列表,该列表应包含从每个委婉语到其潜在含义的一对一映射。值得注意的是,该真实列表并没有参与整个模型的训练过程,只用于评估模型对委婉语的识别准确性。
为了排除其他因素对结果与基线对比的影响,同当前最佳模型[2]一样,本文在各个数据集上独立进行训练,并保持数据集划分的一致性。在训练过程中,将掩码掉目标词的句子划分为80%训练集和20%验证集;在测试阶段,则使用全部掩码掉委婉语的句子作为测试数据。
在进行训练之前,使用基于bert-base-uncased(1)https://huggingface.co/bert-base-uncased模型的MLM[11]任务分别在上述三个数据集上继续预训练,得到预训练的委婉语BERT模型(Euph_BERT)。然后,我们使用此模型进行微调,来训练委婉语识别任务。在预训练阶段,我们设定输入序列最大长度为512,批量大小为64,迭代次数为3。在微调过程中,设定输入序列最大长度为128,批量大小为32,初始学习率为5e-5,温度超参数τ设置为0.05,超参数λ设置为1e-3,预热步骤为1 000,采用优化器AdamW[29]基于预热线性计划进行训练。
同当前最佳模型[2]一样,本文采用Acc@k作为评价指标: 对于每个检测到的委婉语,根据生成的目标词的概率对其排序,然后评估topK准确率(Acc@k),即真实标签值落在我们生成的排序列表中前k个值的频率。
为了进一步评估DSLM的有效性,我们将其与其他方法进行了比较,并在三个数据集上进行了测试。
4.3.1 对比方法
本文分别与当前最佳方法[2](记为“SelfEDI”)、Word2Vec方法,以及我们建立的4个基线模型进行比较。
•Word2Vec[2]: 在数据集上训练Word2vec算法,通过得到所有单词的词嵌入(100维),来使用余弦相似度来选择最接近它的目标关词。
•SelfEDI[2]: 采用词袋模型在句子级别的语境中提取句子特征,通过训练一个多项逻辑回归分类器来识别委婉语。
•BERT: 在数据集上预训练得到一个BERT预训练模型,提取句子的特征表示(768维),通过训练一个多项逻辑回归分类器来识别委婉语。
•DSLM: 本文提出的模型,在委婉语数据集上预训练得到一个委婉语BERT模型,来获取上下文表示,然后引入语境对比学习模块,使用第一阶段和第二阶段对比学习方法来学习委婉语上下文表示,最终微调识别委婉语。
•DSLM_base:DSLM的基础方法,不使用语境对比学习模块,直接基于委婉语BERT模型微调识别委婉语。
•DSLM_ls1: 在DSLM_base的基础上,引入第一阶段对比学习方法。
•DSLM_ls2: 在DSLM_base的基础上,引入第二阶段对比学习方法。
4.3.2 实验结果和分析
为了公平地比较模型性能,参考Zhu等人[2],所有结果均来自于模型的最佳性能表现。表3总结了基线模型和我们模型在委婉语识别上的结果,其中基线模型Word2Vec和SelfEDI的结果直接取自Zhu等人[2]的研究。我们的算法在所有三个数据集上都达到了最佳性能。
表3 委婉识别结果
实验结果分析从表3可以看出,我们的方法DSLM比当前最佳模型SelfEDI的Acc@1准确率提升了7%~11%,所有模型结果取自Acc@1最佳的结果。Word2Vec性能表现较差,原因在于其无法捕捉同一词的不同含义。相比于SelfEDI使用词袋模型提取句子特征进行识别,我们创建的DSLM_base使用BERT编码,其来自Transformer的Encoder既保留了句子中词的先后顺序,又考虑了词之间的语义联系,提取的句子特征语义更为丰富。在三个数据集上,DSLM_base结果明显优于BERT,前者使用微调的方法,而后者基于特征方法,将BERT当作特征提取器,显然微调方法优于基于特征的方法。模型不使用语境对比学习模块后的Acc@1准确率降低了3%~5%。经过预训练后,委婉语上下文和其表面含义表示之间的距离会拉开,因此第一阶段对比学习DSLM_ls1效果不明显;而第二阶段对比学习DSLM_ls2直接拉近掩码处上下文表示和目标词语义表示之间的距离,显然其效果更好,结果表明DSLM_ls2对模型贡献更高,比DSLM_ls1提升了1%~2%的准确率。相较于DSLM_base,DSLM_ls1和DSLM_ls2在Acc@1准确率上提升最多,在Acc@2上略有提升,但在Acc@3上出现下降。与Acc@1不同,Acc@3指的是候选目标词中前三个正确的占比,这样扩大了结果目标词范围。由于目标词之间的语义差异较小,例如“Marijuana”“Cocaine”和“Heroin”等,这样,相似的目标词更容易被纳入扩大的结果目标词中,从而引起准确率的波动。尤其是在Sexuality数据集上,该数据集中目标词种类较少且分布极度不均衡(约72%的训练数据属于“Sex”类别,而其他类别仅占约2.5%),因而导致较差的Acc@3准确率。相比Acc@3,Acc@2和Acc@1结果范围有限,仅涉及前两个或者一个目标词,因此受到目标词语义相似和分布不均衡的影响较小。然而,DSLM通过联合对比学习的第一阶段和第二阶段,能够学习到更加准确的委婉语表示,并加强委婉语与目标词之间的映射关系。这在一定程度上克服了准确率的波动,最终展现出最佳的整体结果。
图2展示了模型在三个数据集上随机运行100次得到的Acc@1、Acc@2、Acc@3准确率箱型图和小提琴图。由图2可以看出,模型DSLM的结果稳定、方差小。相比之下,当前最佳模型SelfEDI结果方差大,结果分布不集中,模型置信度低。值得注意的是,DSLM_ls2相比基础模型DSLM_base而言,不仅提升了模型准确度,还改变了结果的密度分布,使其集中在高精度区。由此可见,第二阶段对比学习方法有利于模型结果和置信度的提升。
图2 委婉语识别结果图
为了进一步验证模型的收敛速度,本文绘制了各方法在三个数据集上训练过程中的Acc@1准确率随迭代步数变化的曲线,如图3所示。从图中可以看出,DSLM、DSLM_ ls1和DSLM_ls2方法收敛速度最快;而DSLM_base和SelfEDI收敛较慢。这表明,使用对比学习可以有效缩小掩码词和目标词之间的语义距离,从而提高模型的学习效率,加快收敛速度。
图3 各模型在三个数据集上的准确率变化曲线
可视化分析为了更加直观地呈现DSLM模型对于委婉语识别的影响,本文使用t-SNE[30]算法对模型训练前后的掩码掉委婉语处上下文表示和目标词表示进行可视化处理。如图4所示,我们随机选取了96个(3个批次,批次大小是32)掩码掉委婉语处上下文表示和目标词表示(33个类别),并进行了二维展示。从图中可以看出,经过模型训练后,掩码处上下文表示和目标词表示更加接近,模型成功解决了委婉语上下文表示和目标词表示不一致问题。
图4 DSLM模型训练前后掩码词和目标词的表示分布左边是训练前的表示分布,右边是训练后的表示分布。蓝色点状代表掩码词上下文表示,随机取了96个;橙色十字代表目标词表示,共计33个。
综上所述,DSLM方法采用基于BERT的自监督学习方法和两阶段对比学习,可以有效获取委婉语上下文语义,解决缺乏有效标注的数据集问题和委婉语表面含义和潜在含义不一致的问题。该方法在三个数据集上的识别结果均超过当前最佳模型SelfEDI,且具有更小的结果方差和更稳定的性能表现,模型收敛速度更快。
本文提出了一种双层自监督学习方法DSLM,用于委婉语识别。DSLM使用基于BERT的自监督学习框架来解决缺乏有效标注的数据集问题;使用语境对比学习模块,拉大委婉语上下文和委婉语表面含义的语义距离,缩小委婉语上下文和目标词的语义距离,以使模型可以在委婉语上下文的语义特征空间学习到委婉语潜在含义的特征,从而缓解委婉语表面含义和潜在含义不一致的问题。在三个数据集上的实验结果表明,DSLM模型性能最佳。此外,本文使用可视化技术展示了模型训练前后委婉语上下文和目标词表示的分布情况,证明DSLM能够有效缓解委婉语表面含义和潜在含义不一致的问题。未来,我们计划新增其他类型的委婉语数据集,如暴力、歧视等,以更好地帮助监管社交媒体言论和地下交易市场。