一、问题描述
互联网虚假信息正在威胁着全球互联网的安全,其在规模、传播速度、造假手段三个方面呈现快速增长。2018年顶级国际期刊《科学》指出,在2016年美国总统大选期间样本选民平均每人每天要接触4篇假新闻;要传播至1500个选民,假新闻的速度是真实新闻的6-20倍。研究认为互联网虚假新闻甚至影响了英国脱欧投票和2016年美国总统大选的结果。2018年底陆续出来的DeepFake造假技术(图像视频换脸)和DeepNude造假技术(自动生成裸体照片)给各国政府带来了恐慌。国际咨询公司Gartner预测,到2020年,互联网虚假新闻将面临泛滥之势,基于人工智能技术的造假能力将远超于虚假检测的能力。 这种现象引起了各国政府和社会群体的空前关切和担忧,其对国家安全、个人与企业声誉和媒体信任度带来了严重冲击。为此,2019年6月,美国国会召开听证会,讨论DeepFake(深度伪造)技术的风险和对策。呼吁国家加强虚假信息检测技术的研发,以及虚假信息治理执法。2019年8月,人民网舆情中心也发出了同样的呼吁,目前辟谣滞后造成“空窗期”内谣言广泛传播,造假手段不断更新让人工审核力不从心,急需开展人工智能技术和人工审核结合的联合辟谣。 本次虚假新闻检测由中国科学院计算技术研究所,以及北京智源人工智能研究院共同举办,旨在促进互联网虚假新闻检测技术的发展,营造清朗的网络空间。
二、数据集内容
训练集有38,471条数据,其中真实新闻19,186条,虚假新闻19,285条。初赛测试集共4,000条,复赛测试集3,902条,真假新闻比例与训练集基本一致。每条数据有id、text、label三个字段,其中1代表正例 (真),0代表负例(假)。
数据样例:train.csv
id | text | label |
---|---|---|
1cdf439752d339b45fc848984c609899 | 【男子捏造“周浦滴滴司机砍死乘客”谣言被刑拘称只是觉得好玩】 | 0 |
d3aa07cc41ab42fa5c8718bd655abb1c | 【善良的大桥】金沙江大桥在没车行走的时候自我坍塌,这桥通人性,未伤一车一人,太善良了。应该当选2013年度《感动中国》特别致敬者。(by夏骏) | 1 |
e940e98292b76024dfbcbcff378c9d2f | 幼儿园都发通知了,家长们注意啦:现在得白血病的小孩越来越多,妇幼保健院提示您,请不要给宝宝喝爽歪歪和有添加剂的牛奶饮料,告诉家里有小孩的朋友,旺仔牛奶、可口可乐、爽歪歪、娃哈哈AD钙奶、未来星、QQ星、美汁源果粒奶优菠萝味的。都含有肉毒杆菌。现在紧急召回。请转发扩散!!! | 1 |
引用要求
@misc{dataset_538556,
title = { 智源&计算所-互联网虚假新闻检测挑战赛数据集 }
author = { KOTO },
howpublished = { \url{https://www.heywhale.com/mw/dataset/5e096a422823a10036b10a81} }
year = { 2019 }
}
数据集版权许可协议
三、解决方案样例
解决方案
BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 架构的预训练语言模型,其核心优势在于:
- 双向上下文建模:通过自注意力机制(Self-Attention)同时分析文本中每个词与前后所有词的关系,捕捉长距离依赖。
- 预训练任务:通过大规模无监督语料库训练,学习通用的语言表示能力(如完形填空任务 Masked Language Model 和句子关系任务 Next Sentence Prediction)。
流程
虚假新闻检测的流程如下:
(1) 输入文本预处理
- 分词:将新闻文本分割为子词(Subword),例如使用 BERT 的
WordPiece
分词器。 - 添加特殊标记:在文本开头添加
[CLS]
标记(用于分类任务),结尾添加[SEP]
标记。 - 构建输入格式:将分词后的文本转换为
input_ids
(词索引)、attention_mask
(注意力掩码)和token_type_ids
(区分句子类型)。
(2) BERT 编码
- 嵌入层:将
input_ids
转换为词向量(Word Embedding)、位置向量(Position Embedding)和段落类型向量(Segment Embedding)。 - Transformer 编码层:通过多层 Transformer 块进行编码,每层对输入文本进行双向特征提取,最终输出每个词的上下文相关向量表示(Contextual Embeddings)。
(3) 分类头(Classification Head)
- 提取
[CLS]
标记的向量:该向量被设计为整个输入文本的聚合表示。 - 添加全连接层:将
[CLS]
向量输入一个分类器(通常是一个简单的线性层 + Softmax),输出虚假新闻的概率(二分类:真/假)。
为什么 BERT 适合虚假新闻检测?
- 语义理解:BERT 能捕捉文本中的隐含语义、情感倾向和逻辑矛盾(例如虚假新闻中常见的夸张表述或前后不一致)。
- 上下文敏感:虚假新闻可能通过局部真实信息误导读者,BERT 的双向建模能力可识别上下文中的异常关联。
- 迁移学习:预训练模型已具备通用语言理解能力,只需少量标注数据微调(Fine-tuning)即可适配具体任务。
微调(Fine-tuning)过程
- 数据准备:标注好的虚假新闻数据集(文本 + 标签)。
- 模型调整:在预训练 BERT 模型顶部添加分类层,冻结或微调底层参数。
- 损失函数:通常使用交叉熵损失(Cross-Entropy Loss)优化分类结果。
- 训练:通过反向传播更新模型参数,使其适应虚假新闻的特征模式。
实际应用中的优化方向
- 处理长文本:BERT 的输入长度限制为 512 个词,需对长新闻截断或分段处理(如使用滑动窗口)。
- 多模态融合:结合文本之外的元数据(如发布时间、作者信息)或图片/视频内容。
- 对抗样本防御:针对虚假新闻制造者可能故意添加的干扰词设计鲁棒性策略。
使用Bert预训练模型对虚假新闻的文本进行检测,训练了两个epoch后,线下有效的f1值98.71%(训练数据集句子相似度太高,划分的验证集在训练集也存在高度相似的句子),提交线上初赛测试集的分数为88.79%。
运行环境
numpy
pickle
scikit-learn
PyTorch 1.0
matplotlib
pandas
pytorch_transformers=1.1.0
源码结构
数据集文件目录:pybert/dataset
模型文件目录:pybert/pretrain/bert/base-chinese
主要配置信息:pybert\configs\base.py
BASE_DIR = Path('pybert')
config = {
'raw_data_path': BASE_DIR / 'dataset/train.csv',
'test_path': BASE_DIR / 'dataset/test_stage1.csv',
'data_dir': BASE_DIR / 'dataset',
'log_dir': BASE_DIR / 'output/log',
'writer_dir': BASE_DIR / "output/TSboard",
'figure_dir': BASE_DIR / "output/figure",
'checkpoint_dir': BASE_DIR / "output/checkpoints",
'cache_dir': BASE_DIR / 'model/',
'result': BASE_DIR / "output/result",
'bert_vocab_path': BASE_DIR / 'pretrain/bert/base-chinese/vocab.txt',
'bert_config_file': BASE_DIR / 'pretrain/bert/base-chinese/config.json',
'bert_model_dir': BASE_DIR / 'pretrain/bert/base-chinese',
'xlnet_vocab_path': BASE_DIR / 'pretrain/xlnet/base-cased/spiece.model',
'xlnet_config_file': BASE_DIR / 'pretrain/xlnet/base-cased/config.json',
'xlnet_model_dir': BASE_DIR / 'pretrain/xlnet/base-cased'
}
命令
运行 python run_bert.py --do_data 对数据进行预处理.
运行 python run_bert.py --do_train --save_best --do_lower_case 进行模型训练.
运行 run_bert.py --do_test --do_lower_case 进行新数据预测.
训练
[Training] 1475/3848 [==========>...................] - ETA: 17:24:51 loss: 0.0004
Epoch: 2 - loss: 0.0363 - acc: 0.9916 - f1: 0.9916 - valid_loss: 0.0679 - valid_acc: 0.9871 - valid_f1: 0.9871
Epoch 2: valid_f1 improved from 0.93659 to 0.98713
四、参考资料
GitHub – deping-1/2019-false-news-detection-challenge: 智源研究院&中科院计算所-互联网虚假新闻检测挑战赛
五、获取案例套件
文件包大小:3,000 MB
需要登录后才允许下载文件包。登录