为了解决以上这两个问题,本篇文章提出了两种改进策略。
实验结果证实了在无监督和弱监督场景下,作者的方法相比于其他方法具有优势。
为了解决上述问题,我们提出了一种无需人类标注就能抽取社交媒体情绪原因的方法。该方法主体是一种基于规则的方法,并采用一种特殊的训练策略。
首先是constituency based rule方法,通过发现情绪和原因表达中特殊的句法模式,不依赖人类标注就能获得大量基于规则标注的数据集。然后是引入了一个规则引导的伪监督学习 (RGPS) 框架来开发一个通用的系统,用于在社交媒体上提取情感原因。该方法涉及通过屏蔽提示词在规则注释数据集上训练模型,并包括一个用于迭代学习的标签细化模块。
为了评估方法的有效性,在COVID-19 ECE数据集和CoEmoCau数据集上进行实验,我们的实验结果如下:
1) 与之前的基于规则的方法相比,我们提出的基于成分的规则在跨度级别的情感原因提取性能上显示出显著的提升。此外,这种方法实现了高精度,这对于社交媒体中的大规模实际应用非常有益。
2) 伪监督ECE模型基于CBR显著提高了情感原因提取的召回率,从而导致F值的显著提升。基于25600个实例的基于规则的伪注释,我们的RGPS方法在跨度级别的提取性能上与使用数百个人工标注实例的标准监督学习方法相当。
3)通过利用我们的RGPS方法并结合少量人工标注数据,我们进一步提高了性能。例如,借助200个人工标注实例的帮助,我们的方法得到的结果与使用该数据集上全部人工标注得到的结果相当。
因为社交媒体博文比较短,且充满非正式表达,因此更适合在跨度级别去做情绪原因识别。
因此,本研究聚焦于跨度级别的情感原因识别任务(Li et al., 2021b),其形式化定义如下:给定一个包含N个词符序列的帖子S = [w1, w2, ..., wN]和在S中标注的情感表达E = [e1, e2, ..., eK],跨度级别的情感原因识别任务旨在从S中检测出激发情感表达的情感原因跨度的边界。
以前的工作发现了一些特定的词表明了情绪原因,将这些词总结为七个类别。
如表 1 所示,作者基于人工注释数据集 (COVID19-ECE) 的统计数据表明,62.07% 的黄金情绪原因跨度完全与成分分析树上单个成分对应的文本跨度重叠。当放宽边界条件,允许5个token的错误时,重叠率提高到85.89%。此外,统计数据表明成分分析树中超过90%的原因组成类型,属于IP(简单从句)、VP(动词短语)和 NP(名词短语)。基于这一观察,我们提出了我们的基本假设,即跨度级情感原因提取问题可以转化为选区解析树上特定成分类型的原因成分识别问题。也即跨度级别情绪原因抽取问题可以转化为对成分解析树上特定成分进行分类。
具体来说,作者为 ECE 问题定义了选区解析树的一些关键成分和因果句法关系,如下所示。
作者通过观察数据集,总结归纳出线索词和原因成分在句法分析树中存在固定的模式,
作者总结归纳得出这样的结论,线索词和原因成分在成分分析树中存在较为固定的模式,总结为以下四种。
采用模式匹配去做可能会在匹配过程中匹配多个候选成分,采用就近原则,选择距离情绪成分或者提示词成分最近的候选成分作为原因成分。
作者还提到,经过观察,中英文情绪原因表达的句法模式是基本接近的,因此中文微博数据集上总结出来的规则和模式,大多数可以直接迁移到英文上,只有很少的区别。
作者指出常规的注释数据集只能反映特定的模式,无法涉及所有的因果关系模式,这限制了模型的泛化能力。为了解决这个问题,提出了一种“规则引导的伪监督学习”(RGPS)方法。该方法使用案例推理(CBR)自动注释数据,创造出一个大规模的规则注释数据集。然后,利用这个数据集通过RGPS方法训练模型,从而提高其泛化能力。如图2所示。
跨度级ECE任务可以形式化为一个序列标记任务(李等人,2021b)。具体来说,一个帖子S = [w1, w2, ..., wN]和S中给定的情感表达E = [e1, e2, ..., eK]被串联起来形成一个组合序列X,作为输入输入到一个预训练模型如BERT中:[CLS],w1,...,wN,[SEP],e1,...,eK,[SEP],其中[CLS]和[SEP]是特殊标记。模型的输出是组合序列中每个标记的上下文化表示,然后我们使用条件随机场(CRF)层来预测输入帖子的标签。我们使用{B, I, O}作为标签集。这里,B、I和O分别代表原因跨度的开始、内部和外部,指示跨度范围。
为了训练模型学习超越由规则注释数据集固有的模式的因果关系,我们提出了一种称为“规则掩蔽”的方法。它涉及随机掩蔽一定比例的因果提示词和情感提示词,然后指导模型在没有看到这些明确提示的情况下预测情感原因范围。这个过程打破了规则注释数据集中固有的因果模式,并阻止模型在编码过程中依赖提示词特征,从而使模型更多地关注其他有效且有意义的信息。如图2所示,绿色和红色的[MASK]标记分别代表被掩蔽的因果提示词和情感提示词。
请注意,我们屏蔽了模型输入层注意掩码中的提示词。在训练期间,训练模型以学习原始序列标签,促进捕获情感表达和情感原因跨度之间的联系。我们使用 Dr' 来表示修改后的数据集.
from transformers import BertTokenizer, BertForMaskedLM, BertConfig
import torch
# 初始化BERT模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForMaskedLM.from_pretrained('bert-base-uncased')
# 示例文本
text = "I feel very [MASK] because my pet is sick."
# 对文本进行分词处理
inputs = tokenizer(text, return_tensors='pt')
labels = tokenizer("I feel very sad because my pet is sick.", return_tensors='pt')['input_ids']
# 将标签应用于模型
inputs['labels'] = labels
# 训练模型(这里仅为示例,实际应用中需要大量数据和迭代)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)
model.train()
outputs = model(**inputs)
loss = outputs.loss
loss.backward()
optimizer.step()
# 打印损失值
print(loss.item())
gpt4给出了这样一段代码示例,用以说明屏蔽情绪词并进行掩码重建的过程。
CBR生成的标签有限且常常不准确。经过初步实验,我们发现通过伪标签进行初始训练的模型已经显著优于基于规则的方法。因此,我们提出标签细化,在训练过程中迭代更新原始标签。具体来说,我们用初始规则标签在被掩蔽规则注释的数据集D′r上训练初始模型θ(0)。在后续的迭代轮次中,我们使用前一轮模型在训练集上预测的标签作为监督标签来训练当前轮次的模型。因此,在第t次迭代中,模型的输出为ˆy(t) = BERT-CRF(x; θ(t))。在每次迭代中,我们使用前一次迭代已经收敛的模型来初始化当前轮次的模型。原始规则注释数据集中的信息通过迭代训练程序传播。随后的模型在一个新的、具有更准确和多样化标签的细化数据集上进行训练,这有助于模型更有效地学习。
从图中可以看出,在初始轮次,模型首先在随机mask掉因果提示词和情感提示词的基于规则标注的数据集上进行训练,这时模型的表现已经优于优于一些基于规则的方法了。然后模型不断地在无标签数据集上进行迭代地训练,不断优化模型的效果。
本文在COVID19-ECE和CoEmoCause两个数据集上进行实验,表3是对两个标注数据集的介绍:
COVID19-ECE是用户爬取的大规模语料库,由人工进行标注。
CoEmoCause是一个中文细粒度的情绪原因配对抽取数据集,最初来自SMP2020微博情感分类竞赛。
从表3中可以看出,CoEmoCause总的条目数较多,但是单句长度较短。
因为COVID19-ECE和CoEmoCause都与新冠病毒有关,所以作者使用前面提到的基于成分分析树和规则的方法,获取大量以COVID-19为主题的基于规则进行标注的数据集,获取方法如下:
我们使用 Huggingface Transformers 的 PyTorch 版本实现了我们的模型(Wolf 等人,2020)。我们对 BERT/RoBERTa 使用 1e-5 的学习率为 1e-5,CRF 层使用 1e-2。我们对[16,32,64,128,256]中的批大小进行网格搜索,并将其设置为16。热身应用于最初的10%步骤。变压器层之间的dropout率设置为0.1。AdamW作为优化器。在完全监督的设置中,我们使用验证集来保留检查点以进行最终测试。在无监督设置中,我们训练模型,直到它收敛并使用最后 10 步的测试集的平均评估结果作为最终结果。所有结果都平均超过 4 次随机复制实验。
作者将本文提到的CBR+RGPS方法与其他方法在两种设置下进行比较,比较的依据是是否使用了少量的人工标注。
作者在Covid19-ECE 和 CoEmoCause 上比较了这些方法,结果如表5所示:
CBR与WBR的比较:
CBR+RGPS的表现:
CBR+RGPS+FT的改进:
结论:
RGPS由LR即label refinement和rule masking两部分构成