37DATA

中文互联网内容违规检测:挑战、数据集、方法与评估

引言

背景

随着互联网和社交媒体的迅速发展,海量的用户生成内容每天都在互联网上传播。虽然这些平台为人们提供了交流和分享思想的空间,但也带来了许多挑战,其中之一就是违规内容的传播。这些违规内容包括但不限于仇恨言论、虚假信息、垃圾信息、色情内容、暴力威胁等。对于中文内容平台而言,进行有效的违规内容检测显得尤为重要。

目标

  1. 维护社区规范和用户体验
  2. 法律和合规要求
  3. 社会责任和道德义务
  4. 保护未成年人
  5. 商业利益和品牌形象
  6. 防止虚假信息传播

违规内容的分类和定义

违规内容分类

  1. 仇恨言论
  2. 暴力威胁
  3. 虚假信息
  4. 钓鱼诈骗
  5. 淫秽内容
  6. 骚扰和欺凌
  7. 广告
  8. 刷屏灌水

违规内容的定义

仇恨言论

定义:仇恨言论是指针对一个人或一群人的攻击性言论,通常基于种族、民族、宗教、性别、性取向、残疾状况等身份特征。仇恨言论旨在贬低、侮辱、威胁或煽动对特定群体的敌意和暴力。

示例:
诋毁某个种族或民族的言论。
针对宗教信仰的恶毒攻击。
贬低女性或 LGBTQ+ 群体的言论。

暴力威胁

定义:暴力威胁是指威胁对他人施加身体伤害或暴力行为的言论。这些言论可能包括具体的威胁行为、恐吓或煽动他人实施暴力。

示例:
威胁要伤害或杀害他人。
描述具体的暴力行为计划。
煽动他人对某个人或群体实施暴力。

虚假信息

定义:虚假信息是指故意传播不真实或误导性的信息,旨在欺骗或误导公众。这些信息可能涉及新闻事件、健康指南、政治声明等。

示例:

传播未经证实的谣言或假新闻。
宣传虚假的健康疗法或医疗建议。
发布误导性的政治信息或选举结果。

钓鱼诈骗

定义:钓鱼诈骗是指通过伪装成合法机构或个人,欺骗用户提供敏感信息(如用户名、密码、信用卡信息等)的行为。这些诈骗通常通过电子邮件、短信或虚假网站进行。

示例:

伪装成银行或金融机构发送的钓鱼邮件,要求用户提供账户信息。
伪装成社交媒体平台发送的消息,要求用户重置密码。
创建虚假的购物网站,诱骗用户输入支付信息。

淫秽内容

定义:淫秽内容是指包含色情或性暗示的图像、视频、文本等,旨在引起性兴奋或满足淫秽欲望。这类内容通常被认为是不适合公开传播的。

示例:

发布裸露或性行为的图片或视频。
描述性行为或色情内容的文字。
传播含有性暗示的图像或视频。

骚扰和欺凌

定义:骚扰和欺凌是指通过言语、文字或行为对他人进行持续的攻击、侮辱、威胁或恐吓,以造成心理或情感上的伤害。这些行为可能在线上或线下进行。

示例:

在社交媒体上发布侮辱性或威胁性的评论。
发送重复的、令人不安的私人消息。
公开羞辱或诋毁他人。

广告

定义:广告是指未经许可发布的商业促销内容,旨在宣传产品、服务或品牌。这些内容通常具有商业目的,可能干扰用户体验。

示例:

在社交媒体或论坛上发布产品促销信息。
发送包含商业广告的垃圾邮件。
在评论区或留言板上发布广告链接。

刷屏灌水

定义:刷屏灌水是指在短时间内大量发布无关或重复的内容,干扰正常的交流和信息流。这种行为通常没有实质性内容,旨在制造噪音或引起注意。

示例:

在论坛或社交媒体上连续发布相同的评论或帖子。
发送大量无意义的字符或表情。
在聊天群组中重复发布相同的信息。

数据集简介

THUCNews

概述:

  • 来源
    THUCNews 数据集由清华大学自然语言处理与社会人文计算实验室(THUNLP)发布。
  • 内容
    包含从新浪新闻 RSS 抓取的新闻数据,覆盖不同的新闻类别,如体育、娱乐、家居、房产、教育、时尚、时政、游戏、科技、财经等。
  • 规模
    数据集包含超过 20 万篇新闻文章,每个类别大约有 2 万篇文章。

应用场景:

  • 违规内容检测
    可以通过标注部分新闻数据中的违规内容(如仇恨言论、虚假信息等),用于训练和评估违规内容检测模型。

获取方式:

  • THUCNews 数据集下载链接

Chinese Offensive Language Dataset (COLD)

概述:

  • 来源
    COLD 数据集由相关研究人员发布。
  • 内容
    包含大量标注为攻击性和非攻击性的中文文本。
  • 规模
    具体规模根据数据集版本不同而有所变化,通常包含数万条文本数据。

应用场景:

  • 攻击性语言检测
    :直接用于训练和评估攻击性语言检测模型。

获取方式:

  • COLDataset github

ChineseNlpCorpus Review Dataset

概述:

  • 来源
    ChineseNlpCorpus Review 数据集包含美团外卖评论、weibo、豆瓣、酒店评价、酒店开等等数据。
  • 内容
    包含用户对各个服务的评论,分为正面和负面评论。
  • 规模
    数据集包含数万条评论数据。

应用场景:

  • 情感分析
    用于训练情感分析模型,通过标注负面评论中的违规内容(如辱骂、骚扰等),也可用于部分违规内容检测。

获取方式:

  • ChineseNlpCorpus github

Weibo Data

概述:

  • 来源
    从新浪微博抓取的社交媒体数据。
  • 内容
    包含用户的帖子和评论,覆盖广泛的主题和话题。
  • 规模
    具体规模根据抓取的数据量不同而有所变化,通常包含数十万到数百万条文本数据。

应用场景:

  • 社交媒体违规内容检测
    通过标注部分数据中的仇恨言论、虚假信息、骚扰等违规内容,用于训练和评估违规内容检测模型。

获取方式:

  • ccgi github

NLPCC Shared Tasks

概述:

  • 来源
    NLPCC(自然语言处理与中文计算会议)发布的共享任务数据集。
  • 内容
    包含多个任务的数据集,如文本分类、情感分析、阅读理解等。
  • 规模
    具体规模根据任务不同而有所变化,通常包含数万条文本数据。

应用场景:

  • 内容审核和违规检测
    根据具体任务进行适应和标注,用于训练和评估内容审核和违规检测模型。

获取方式:

  • NLPCC 共享任务数据集下载链接

CLUE (Chinese Language Understanding Evaluation)

概述:

  • 来源
    CLUE(Chinese Language Understanding Evaluation)基准数据集。
  • 内容
    包含多个任务的数据集,如文本分类、情感分析、阅读理解等。
  • 规模
    具体规模根据任务不同而有所变化,通常包含数万条文本数据。

应用场景:

  • NLP 任务
    用于各类 NLP 任务,包括违规内容检测,通过标注违规内容进行训练和评估。

获取方式:

  • CLUE 数据集下载链接

Chinese Toxic Comments Dataset

概述:

  • 来源
    包含中文社交媒体上的有毒评论。
  • 内容
    专门用于检测仇恨言论和攻击性内容。
  • 规模
    数据集包含数万条评论数据。

应用场景:

  • 仇恨言论和攻击性内容检测
    直接用于训练和评估有毒评论检测模型。

获取方式:

  • ToxiCN_MM github

Sensitive-lexicon

概述:

  • 来源
    一个中文敏感词库,用于帮助开发者和内容管理者识别和过滤文本内容中的不当或不适宜的语言。通过使用本敏感词库,可以有效防止有害信息的传播,维护在线环境的健康和秩序。

应用场景:

  • 广泛的词汇覆盖
    包含各类敏感词汇,涵盖政治、色情、暴力等多个领域。
  • 定期更新
    随着社会环境和语言使用的变化,我们会定期更新词库,确保其时效性和准确性。
  • 开源共享
    鼓励社区成员贡献和分享,共同完善敏感词库。

获取方式:

  • Sensitive-lexicon

SafetyBench

概述:

  • 来源
    SafetyBench 是评估法学硕士安全性的综合基准,包含 11,435 道不同的多项选择题,涵盖 7 个不同的安全问题类别。SafetyBench 还结合了中文和英文数据,方便使用两种语言进行评估。请访问我们的网站或查看我们的论文了解更多详情。

获取方式:

  • SafetyBench

Safety-Prompts

概述:

  • 来源
    该仓库包括100k条中文安全场景的prompts和ChatGPT的回复,涵盖了各类安全场景和指令攻击,可以用于全面评测和提升模型的安全性,也可以用于增强模型关于安全方面的知识,对齐模型输出和人类价值观。

获取方式:

  • Safety-Prompts

JailBench

概述:

  • 来源
    JailBench 是针对大型语言模型在中文语境下越狱攻击风险的综合性多领域安全评测数据集,面向《网络安全技术 生成式人工智能服务安全基本要求》 训练数据及生成内容的主要安全风险 标准分类设计,是目前公开发布题库规模最大,越狱攻击手段覆盖最为广泛的中文评测数据集。

获取方式:

  • JailBench

CCAC2024-FS_Moderation

概述:

  • 来源
    大模型安全的双重防线:少样本文本内容安全挑战赛。里面包含少量样本

获取方式:

  • CCAC2024-FS_Moderation

NLP CHINESE CORPUS

概述:

  • 来源:大规模中文自然语言处理语料 Large Scale Chinese Corpus for NLP,中文任务基准测评,10大任务 & 9个模型

获取方式:

  • github

简体中文阅读理解:CMRC 2018

CMRC 2018数据集是哈工大讯飞联合实验室发布的中文机器阅读理解数据。
根据给定问题,系统需要从篇章中抽取出片段作为答案,形式与SQuAD相同。
评测指标为:EM / F1

繁体中文阅读理解:DRCD

DRCD数据集由中国台湾台达研究院发布,其形式与SQuAD相同,是基于繁体中文的抽取式阅读理解数据集。
由于ERNIE中去除了繁体中文字符,故不建议在繁体中文数据上使用ERNIE(或转换成简体中文后再处理)。
评测指标为:EM / F1

司法阅读理解:CJRC

CJRC数据集是哈工大讯飞联合实验室发布的面向司法领域的中文机器阅读理解数据。
需要注意的是实验中使用的数据并非官方发布的最终数据,结果仅供参考。
评测指标为:EM / F1

自然语言推断:XNLI

在自然语言推断任务中,我们采用了XNLI数据,需要将文本分成三个类别:entailment,neutral,contradictory。
评测指标为:Accuracy

情感分析:ChnSentiCorp

在情感分析任务中,二分类的情感分类数据集ChnSentiCorp。
评测指标为:Accuracy

句对分类:LCQMC, BQ Corpus

以下两个数据集均需要将一个句对进行分类,判断两个句子的语义是否相同(二分类任务)。

LCQMC

LCQMC由哈工大深圳研究生院智能计算研究中心发布。
评测指标为:Accuracy

BQ Corpus

BQ Corpus由哈工大深圳研究生院智能计算研究中心发布,是面向银行领域的数据集。
评测指标为:Accuracy

篇章级文本分类:THUCNews

篇章级文本分类任务我们选用了由清华大学自然语言处理实验室发布的新闻数据集THUCNews。
我们采用的是其中一个子集,需要将新闻分成10个类别中的一个。
评测指标为:Accuracy

数据集标注和处理

标注方法

介绍常用的标注方法和工具,如LLM打标(如 GPT、豆包、千问)、人工手动标注、众包标注平台(如 Amazon Mechanical Turk、midflow)。

对于 LLM 分类打标,经过3000条数据测试,目前 AI 打标的准确率在60~80%之间,中文效果豆包最好。参考数据如下:

gpt4o
claude
doubao
AI 打标准确率
0.673
0.672
0.68
AI 打标正常占比
0.307
0.302
0.3
AI 打标违规占比
0.693
0.698
0.7
AI 打标为空占比
0
0
0
正常
0.913294798
0.907514451
0.901734104
违规
0.819830713
0.824667473
0.825876663
涉黄
0.68
0.7
0.71
政治敏感
0.778688525
0.786885246
0.795081967
广告
0.821782178
0.811881188
0.821782178
刷屏灌水
0.54
0.55
0.57
谩骂
0.79
0.77
0.76
违禁
0.623762376
0.603960396
0.653465347
诈骗
0.38
0.39
0.41
违法公序良知
0.339805825
0.339805825
0.32038835

数据预处理

包括数据清洗、分词、去停用词、词向量生成等。

最终转换为需要的标签数据,如

CONTENT
LABEL
喊话内容*
正常
过分了哎,你还想要双强灵啊
广告
喊话内容*
广告
你进群了吗
正常
出满星女大时装三万五一件,中时装两万五一件,收元宝
刷屏灌水
欢迎光临光临我的仙府!
正常
收霸业***
正常
国色天香
广告
1058958
正常
生16才有护国军
政治敏感
..........
刷屏灌水

违规内容检测模型

传统机器学习方法

如逻辑回归、支持向量机、朴素贝叶斯等。

深度学习方法

如卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等。

预训练语言模型

如 BERT、RoBERTa、GPT 等。

用于分类的核心代码

BERT模型分类

fromtransformers importBertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
importtorch
fromtorch.utils.data importDataset, DataLoader
importnumpy as np
model_name ='bert-base-uncased'
num_labels =5# 假设有 5 个分类标签
tokenizer =BertTokenizer.from_pretrained(model_name)
model =BertForSequenceClassification.from_pretrained(model_name, num_labels=num_labels)
defcompute_metrics(p):
preds =np.argmax(p.predictions, axis=1)
accuracy =accuracy_score(p.label_ids, preds)
precision, recall, f1, _ =precision_recall_fscore_support(p.label_ids, preds, average='weighted')
return{
'accuracy': accuracy,
'f1': f1,
'precision': precision,
'recall': recall
}
training_args =TrainingArguments(
output_dir='./results',
num_train_epochs=3,
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
warmup_steps=500,
weight_decay=0.01,
logging_dir='./logs',
logging_steps=10,
evaluation_strategy="steps",
)
trainer =Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
tokenizer=tokenizer,
compute_metrics=compute_metrics
)
trainer.train()
results =trainer.evaluate()
print(results)

评价标准和基准测试

评价指标

如准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 分数(F1 Score)等。

准确率(Accuracy)

准确率是最直观的性能指标,表示模型正确预测的样本数占总样本数的比例

Image

其中,TP(True Positives)是真正例,TN(True Negatives)是真负例,FP(False Positives)是假正例,FN(False Negatives)是假负例。

精确率(Precision)

精确率衡量的是模型预测为正类的样本中,实际为正类的比例。
对于多分类问题,精确率可以针对每个类别单独计算,也可以计算全局精确率(Macro-average Precision、Micro-average Precision、Weighted Average Precision)。

Image

召回率(Recall)

召回率衡量的是所有实际为正类的样本中,被模型正确预测为正类的比例。

召回率可以针对每个类别单独计算,也可以计算全局召回率(Macro-average Recall、Micro-average Recall、Weighted Average Recall)。

Image

F1 分数(F1 Score)

F1 分数是精确率和召回率的调和平均值,它试图在精确率和召回率之间找到一个平衡。

Image

结论

有人的地方就有江湖,有江湖的地方就有风流俗语。