本文介绍一个刚刚发表在 NAACL 上的中文的事实核查数据集 CHEF(受 HotpotQA 启发,是不是可以搞一个吃饭数据集宇宙 XD),论文作者来自清华,剑桥和 UIC 的 Philip Yu 组。据我们所知,这是第一个基于证据的中文事实核查数据集。欢迎大家使用 CHEF!
- 论文地址:https://arxiv.org/pdf/2206.11863.pdf
- 数据集CHEF Dataset链接:https://github.com/THU-BPM/CHEF
3. 数据集构建
数据集的构建包含 4 个部分:数据收集,声明标注,证据检索和数据验证。
3.1 数据收集
原始声明主要从四个中文的事实核查网站上面爬取(根据杜克新闻平台 ),其中简体中文有两个:中国辟谣中心和腾讯较真。繁体中文是来自于台湾的两个平台:MyGoPen 和台湾事实核查中心。由于从事实核查网站中爬取的声明绝大部分(90%+)都是不实的,其实很直观,大部分流行的谣言 / 声明都是不实的,才会被核查平台辟谣 / 验证。参考前人的方法(PublicHealth[7]),我们爬取中国新闻网的标题作为真实的声明,构造一个标签相对平衡的数据集。
3.2 声明标注
和国外相对成熟的事实核查机构相比,中国的核查平台发布的文章相对没有那么规范。比如 PolitiFact 会明确告诉你声明是什么,核查摘要是什么,证据和推理细节是什么(如上图所示)。但中文的文章一般不会明确指出,所以我们请标注者阅读文章之后抽取出文章验证的声明。同时也对声明进行清洗,降低其含有的偏差(bias)。之前有工作表明[8],事实核查数据集里面的声明含有比较强的 bias(比如不实的声明一般带有否定词),BERT 等 PLM 可以通过直接捕捉这些 bias,不需要证据就可以验证声明。清洗的方法包括将反问句改为陈述句,去掉一些可能带有 bias 的词语,比如:重磅,震惊等等。抽取出声明之后,我们还要求标注根据事实核查的文章给声明打标签。我们采取和 FEVER 等一系列工作类似的分类,使用 Supported,Refuted 和 Not enough information(NEI)的三分类。其中 Refuted 是最多的,NEI 的数量是最少的。
3.3 证据检索
我们使用声明作为查询语句去查询谷歌搜索,然后过滤掉部分文档,一部分是声明发表时间之后的文档,另一部分是来自于不实消息传播平台的文档,最后保留 Top 5 的文档。然后要求标注者针对每个声明,选择最多 5 个句子作为证据。数据集中的声明和证据的统计数据如下所示:每个声明返回文档的平均长度为 3691 个词,其中标注者抽取出最后细粒度证据的句子包含 126 个词,假如使用谷歌基于规则的摘要则平均包含 68 个词。简单地从数字上面进行比较,使用返回的文档和标注的句子,要比直接使用摘要提供了更多的上下文信息。
3.4 数据验证
为了保证标注一致性,我们添加了一轮数据验证,随机抽取了 3% 已标注的声明,一共 310 个分给 5 个标注者进行标签再标注。Fleiss K score 达到了 0.74,比 FEVER 的 0.68 和 Snopes[5]的 0.70 略高一些,说明了数据标注的质量不逊色于前人构建的数据集。CHEF 中声明主要分为 5 个主题:社会,公卫,政治,科学和文化。和欧美的事实核查平台关注在政治领域不同,中文平台更加关注公共卫生议题,比如:新冠病毒,养生,医疗等。另一个主要议题是社会,比如:诈骗,升学,社会事件等。
验证声明主要有四方面的挑战:
- 证据搜集:将近 70% 的声明都要求搜寻到相关的证据才能验证。
- 专家咨询:将近 40% 的声明需要通过咨询专家才能得到相关的信息。
- 数值推理:18% 的声明验证需要进行数值上的推理才能得出结论。
- 多模态:约 8% 的声明需要图片,视频等非文本的证据。
4. 基线系统
和之前经典的事实核查数据集(比如 FEVER)类似,机器学习系统需要先在给定的文档里面选择相关的句子作为证据(证据检索),然后再根据证据对声明进行验证(声明验证)。本文根据千人的工作,提出了两大类的基线系统:流水线(pipeline)和联合(joint) 系统。
流水线(pipeline):即证据检索和声明验证是两个分开的模块,先使用证据检索器抽取出证据,再联合声明一起交给声明验证模块进行分类。
- 证据检索部分:我们使用了 4 种不同的抽取器从返回的文档当中抽取句子作为细粒度的证据。第一种就是基于字符特征匹配:TF-IDF;第二种是基于语义特征匹配:我们使用中文 BERT,然后计算余弦相似度。第三种是混合特征:采取上述两种特征,然后在用 rankSVM 排序。最后一种基线系统就是经典的谷歌返回的摘要。
- 声明验证部分:我们使用 3 种不同的模型。第一种就是基于中文 BERT,将声明和上面得到的证据拼接起来丢给 BERT 进行三分类。第二种是基于注意力的模型,基于声明赋予证据不同的权重之后进行分类。第三种是基于图的模型:我们使用了 FEVER 上面的 SOTA 图模型 KGAT[9],可以更好地在综合不同的证据进行推理。
联合(joint):证据检索和声明验证模块联合进行优化。使用了三种不同的模型,第一种是 FEVER 上面 SOTA 的联合模型[10],使用了多任务学习的框架,同时学习给证据和声明打标签。第二种是把证据抽取作为隐变量进行处理[11],给返回的文档的每个句子打 0 或者 1 的标签,打了 1 标签的句子将会留下作为证据和声明一起进行分类,使用 REINFORCE 进行训练。第三种方法和第二种类似,只不过使用 HardKuma 和重参数的方法进行联合训练[12],而不是使用策略梯度。
5. 实验结果
5.1 主要结果
实验主要结果如下图所示:
- 从证据检索的角度来看:联合模型要比流水线模型表现总体要好一些,主要原因是证据检索模块可以被优化,从而能够找到更加能够帮助验证声明的证据。另一方面,使用返回的文档总比使用谷歌摘要效果要好,主要因为是文档包含更加丰富的信息。最后就是直接使用人类标注的证据效果远远超过了目前的两大类基线模型。和其他事实核查的数据集类似(FEVEROUS),证据检索是验证声明的一个难点。怎么根据人类标注的证据去优化证据检索模块是未来值得研究的方向。
- 从声明验证的角度来看:基于图的模型(KGAT)的表现比基于简单的 BERT 和基于注意力的模型要好一些,通过构造图来捕捉证据推理链是有效的方法。但另一方面,图模型的提升并没有特别明显,可能还需要针对数据集本身做一些因地制宜的优化。
5.2 细粒度证据的数量
细粒度证据的数量并不是越多越好,如下图所示,当我们选择 5 个句子作为细粒度证据的时候,流水线系统里面的证据抽取器取得了最好的效果,当抽取 10 个和 15 个句子作为证据的时候,效果越来越差,我们猜测是抽取的句子里面引入了比较多的噪声,影响了声明验证的模型进行判断。
5.3 声明长度的影响
绝大部分的声明都大于 10 个词,其中长度越长模型效果越好,我们猜想主要原因是声明比较详细,比较容易搜集到的详尽的证据帮助模型进行判断。在声明长度比较短的时候,集中基线模型的差距不是很大,当长度比较长的时候,拿到的证据越好,声明验证的效果越好,也说明了证据检索这一环节的重要性。
5.4 声明领域的影响
来自于科学领域的声明最难被验证,模型效果基本都不超过 55。一方面是比较难搜集到相关的证据,另一方面是关于科学议题的声明相对比较复杂,往往需要隐式的推理才能得到结果。
5.5 声明类别的影响
如图所示,即使我们引入了部分 Supported 的声明,但是整个数据集仍然存在类别不平衡的问题。模型在 NEI 这个类别上的效果要远远弱于 Supported 和 Refuted 这两个类别。未来的工作可以研究如果针对类别不平衡的事实核查数据集,调整声明验证的模型,或者使用数据增强的方法,在训练过程中随机增加 NEI 的数量,比如 FEVEROUS[13]在训练过程中就随机针对一些声明扔掉对应的证据,然后将这些声明的类别改为 NEI。
6. 引用文献
[1] A Survey on Automated Fact-Checking. TACL 2022
[2] FEVER: a Large-scale Dataset for Fact Extraction and VERification. NAACL 2018
[3] TabFact: A Large-scale Dataset for Table-based Fact Verification. ICLR 2020
[4] MultiFC: A Real-World Multi-Domain Dataset for Evidence-Based Fact Checking of Claims. EMNLP 2019
[5] A Richly Annotated Corpus for Different Tasks in Automated Fact-Checking. CoNLL 2019
[6] X-Fact: A New Benchmark Dataset for Multilingual Fact Checking. ACL 2021
[7] Explainable Automated Fact-Checking for Public Health Claims. EMNLP 2020
[8] Towards Debiasing Fact Verification Models EMNLP 2019
[9] Fine-grained Fact Verification with Kernel Graph Attention Network. ACL 2020
[10] TwoWingOS: A Two-Wing Optimization Strategy for Evidential Claim Verification. EMNLP 2018
[11] Rationalizing Neural Predictions. EMNLP 2016
[12] Interpretable Neural Predictions with Differentiable Binary Variables. ACL 2019
[13] FEVEROUS: Fact Extraction and VERification Over Unstructured and Structured information. NeurIPS 2021