引言
想象一下,你正在浏览 Twitter (现在的 X) 。你看到一个帖子,用户 A 发表了一条关于饮食和锻炼的评论。这看起来似乎无伤大雅。但随后,用户 B 愤怒地回复,声称用户 A 在对其进行身材羞辱 (body-shaming) 。用户 A 感到困惑,回复道: “我不是故意要冒犯你;我只是分享医生告诉我的话。”
在自然语言处理 (NLP) 领域,检测用户 A 原始帖子中的冒犯性极具挑战性。它不包含脏话、种族歧视用语或明确的威胁。这种冒犯是非故意的 (unintended) 且隐性的 (implicit) , 完全依赖于上下文和接收者的解读。
目前大多数 AI 模型都是在“意图情感数据集”上训练的。这些数据集是通过特定关键词 (如“#hate”) 或明确的亵渎语言收集的文本集合。虽然这种方法在捕捉网络喷子和霸凌者方面很有效,但这些模型往往无法捕捉到引发日常在线冲突的微妙误解。
在近期一篇题为 “Leveraging Conflicts in Social Media Posts: Unintended Offense Dataset” (利用社交媒体帖子中的冲突: 非故意冒犯数据集) 的论文中,来自台湾清华大学的研究人员提出了一种新颖的解决方案。他们不再寻找仇恨言论,而是寻找冲突解决的迹象。通过找到人们说“我不是故意冒犯”的推文,他们反向推导以确定导致问题的文本。这篇博文将探讨他们的方法论、非故意冒犯数据集的创建,以及为什么理解人类冲突是构建安全网络空间的下一个前沿。
问题所在: 意图与感知
要理解这项研究的必要性,我们首先需要审视现有冒犯性语言检测的局限性。
传统上,数据集的构建侧重于发送者的意图 。 研究人员会在社交媒体上抓取已知的仇恨符号、诽谤语或像 #bully 这样的标签。这假设冒犯是客观的且被明确陈述的。然而,沟通是一条双向车道。
- 主观性: 冒犯往往取决于旁观者的看法。一句对发送者来说中立的话,根据接收者的生活经历,可能对其造成深深的冒犯。
- 上下文 (语境) : 像“你对我一无所知”这样的句子,单独看可能很中立,但在特定的对话中可能具有攻击性。
- 非故意冒犯: 通常,人们在无意中冒犯了他人。这些情况很少被 OLID (冒犯性语言识别数据集) 或 HateEval 等数据集捕捉到,因为它们缺乏仇恨言论的明确标记。
研究人员认为,我们需要将关注点从“内部冲突 (intra-conflict,即个体内部的不一致) ”转移到 “人际冲突 (inter-conflict) ” ——即发生在人与人之间的分歧。
核心方法: 挖掘人际冲突
这篇论文的天才之处在于其数据收集策略。研究人员不是去寻找冒犯本身,而是寻找冒犯的后果 。
冲突的解剖
该团队发现了一种特定的对话模式,这种模式标志着非故意冒犯的发生。他们称之为“响应线索 (Response Cue) ”收集。

如图 1 所示,一个典型的冲突线程包含四个不同的组成部分:
- 上下文帖子 (Context Post) : 对话的发起者 (例如,用户 A 抱怨膝盖疼痛) 。
- 目标帖子 (Target Post) : 潜在的冒犯性回复 (例如,用户 B 建议减肥) 。请注意,发送者这里的意图被标记为“无冒犯 (Not Offensive) ”。
- 后续帖子 (Follow-up Post) : 被冒犯一方的反应 (例如,用户 A 感到被评判) 。这标志着“可能感知到的 (Possible Perceived) ”冒犯。
- 响应线索帖子 (Response Cue Post) : 发送者澄清他们的意图 (例如,“不是故意要冒犯你”) 。
响应线索帖子是关键所在。它充当了一个回顾性的标签。如果有人说“我不是故意要冒犯”,这暗示了两件事:
- 前一条消息被解读为具有冒犯性。
- 这种冒犯是非故意的 (隐性的) 。
通过查询诸如“didn’t mean to offend (不是故意冒犯) ”、“no offense intended (无意冒犯) ”或“sorry if that sounded rude (如果听起来很粗鲁我很抱歉) ”等短语,研究人员可以识别出目标帖子——即隐性冒犯——而无需搜索任何诽谤语。
数据收集框架
收集这些线程不仅仅是关键词搜索那么简单。社交媒体数据充满噪音。研究人员开发了一套严格的流程,以确保捕捉到的是真实的人际冲突,而不是随机噪音。

图 2 概述了完整的框架,该框架分几个阶段运行:
1. 查询和第一阶段过滤
该过程从使用句子模板 (响应线索) 查询 Twitter API 开始,以寻找潜在的冲突。然而,仅仅找到“不是故意冒犯”这个短语是不够的。他们立即应用了两个关键过滤器:
- 引用过滤器 (Quotation Filter) : 移除那些引用他人道歉的推文。
- 歧义代词过滤器 (Ambiguous Pronoun Filter) : 移除那些澄清其他人意图的推文 (例如,“他不是故意要冒犯你”) 。目标是捕捉发言者自己的冲突。
2. 对话重构
一旦找到有效的线索,系统就会重构整个线程。它从道歉 (响应线索) 回溯,找到目标帖子和上下文帖子。这提供了互动的全貌。
3. 对话动态过滤器 (Conversation Dynamic Filter)
这是一个复杂的步骤,旨在处理多轮对话的混乱情况。在一个长线程中,如果用户 A 说“我不是故意的”,可能不清楚他们指的是之前的哪一条帖子。
研究人员定义了一个基于正则表达式的过滤器来强制执行严格的对话结构: Y+(X)Y+X$。
- X 是道歉的作者 (也是冒犯性帖子的作者) 。
- Y 是被冒犯的一方。
此过滤器确保对话严格交替进行,或遵循一种模式: 冒犯者 (X) 发言,被冒犯方 (Y) 反应,冒犯者 (X) 道歉。不符合这种清晰的“冲突-反应-解决”结构的线程被丢弃,以保持数据质量。
4. 第二阶段过滤
最后,数据经过一次清理检查:
- 语言过滤器: 仅限英语。
- URL 过滤器: 带有链接的帖子被移除。这确保冒犯包含在文本中,而不是链接的视频或图像中。
人工标注
经过过滤后,研究人员留下了 4,027 个高质量的线程。他们随机抽取了 2,401 个对话,并使用亚马逊众包平台 (Amazon Mechanical Turk, AMT) 进行标注。
至关重要的是,他们要求标注者:
- 角色扮演接收者: 假设自己是被回复的人 (用户 A) 的视角。
- 评分冒犯性: 范围从 0 到 100。
- 上下文感知: 分别在有和无周围上下文的情况下对帖子进行评分。
这产生了一个比目前任何可用数据集都更富含微妙、隐性冒犯的数据集。
分析数据集
这个“非故意冒犯数据集”与 OLID、Founta 或 Waseem 等标准基准相比如何?分析揭示了三个主要优势: 更高的隐晦度、更低的话题偏差以及上下文的关键作用。
1. 捕捉隐性冒犯
隐性冒犯是微妙的。它是“微侵略 (micro-aggression) ”而非“侵略”。研究人员测量了隐性冒犯消息 (即缺乏明确亵渎或诽谤语) 在冒犯性消息中的比例。

如表 2 所示,新数据集 (“Ours”) 达到了 74.40% 的隐性得分。相比之下,Founta 数据集为 22.13%,OLID 为 37.90%。
- 为什么这很重要: 像 Waseem 或 OLID 这样的数据集依赖于有偏见的采样 (搜索特定的脏话) 。这自然导致数据集充满显性冒犯。通过搜索冲突线索,新方法捕捉到了那些逃过关键词过滤器的微妙挖苦。
2. 减少话题选择偏差
冒犯性语言数据集最大的缺陷之一是话题偏差。如果你通过搜索种族诽谤语来构建数据集,你的数据集将严重偏向于关于种族的讨论。如果你搜索政治侮辱,它将偏向政治。
因为该方法搜索的是道歉 (“我不是故意要……”) ,所以它是与话题无关的。人们因为体育、游戏、烹饪和编程产生的误解而道歉的频率,与因为政治而道歉的频率一样高。
为了证明这一点,研究人员将他们的数据集的话题分布与通过随机采样构建的参考数据集 (Founta) 进行了比较 (随机采样代表了话题的“自然”分布) 。他们使用余弦距离计算了话题选择偏差 (Topic Selection Bias) 。

首先,他们使用公式 1 聚合了参考数据集的话题向量 (\(v^{ref}\)) 。
![]\nv ^ { t a r } = \\frac { \\sum _ { i = 1 } ^ { \\left| D ^ { t a r } \\right| } v _ { i } ^ { t a r } } { \\left| D ^ { t a r } \\right| }\n[](/en/paper/file-3306/images/007.jpg#center)
然后,他们使用公式 2 对目标数据集 (\(v^{tar}\)) 做了同样的处理。
![]\nB i a s ( D ^ { t a r } ) = 1 - \\frac { v ^ { r e f } \\cdot v ^ { t a r } } { | | v ^ { r e f } | | \\times | | v ^ { t a r } | | }\n[](/en/paper/file-3306/images/008.jpg#center)
最后,他们使用公式 3 计算偏差。分数越低,意味着数据集的话题看起来越像“现实生活”,越不像精心策划的争议话题列表。

表 3 证实了这一假设。新数据集的偏差得分为 0.063 , 显著低于 Kumar (0.280) 或 Waseem (0.151)。这意味着在这个数据上训练的模型不会仅仅因为某些无辜的话题 (如“穆斯林”或“女权主义”) 在训练数据中频繁出现,就学会将它们与冒犯联系起来。
3. 上下文的影响
上下文会让情况变得更糟还是更好?研究人员比较了标注者仅看到目标推文时的冒犯性评分与看到完整对话时的评分。
![]\n\\delta = R _ { c o n } - R _ { u n c o n }\n()](/en/paper/file-3306/images/010.jpg#center)
他们计算了有上下文的评分 (\(R_{con}\)) 与无上下文的评分 (\(R_{uncon}\)) 之间的差异 (\(\delta\)) 。

图 3 展示了一个有趣的趋势。蓝色条代表“正向影响” (上下文使其更具冒犯性) ,橙色代表“负向影响” (上下文使其冒犯性降低) 。
随着冒犯性阈值 (\(T\)) 的上升——意味着我们关注更严重的冒犯性推文——蓝色条占据主导地位。这表明对于非故意/隐性冒犯, 上下文通常会让冒犯变得更清晰且更严重。 没有上下文,一句粗鲁的话可能看起来只是陈述事实。
实验与结果
研究人员通过测试现有 AI 模型是否能从中学习来验证他们的数据集。他们使用 BERT (微调) 和 GPT-4 (零样本和少样本提示) 进行了实验。
RQ1: 现有模型能检测非故意冒犯吗?
首先,他们在现有数据集 (OLID 和 Founta) 上训练 BERT 模型,并在新的非故意冒犯数据集上进行测试。

表 4 的前几行显示了结果。
- OLID 训练的模型: 仅达到 0.501 的 Macro F1 分数。
- Founta 训练的模型: 达到 0.458 的 Macro F1 分数。
- 召回率是问题所在: 看一下“冒犯 (Offensive) ”类别的召回率 (0.260 和 0.141) 。这意味着模型漏掉了绝大多数非故意冒犯,将其归类为安全。
结论: 在传统的、侧重关键词的数据集上训练的模型,实际上对非故意冒犯是视而不见的。
RQ2: 新数据能改善检测吗?
接下来,他们将新数据纳入训练过程。
- BERT: 当在新数据集 (“Ours”) 上微调时,Macro F1 分数跃升至 0.802 (标记数据) ,在使用更大的未标记数据集时甚至达到 0.843 。
- GPT-4: 他们使用“少样本 (Few-Shot) ”提示测试了 GPT-4 (在要求 AI 分类之前给它几个示例) 。

表 5 显示了 GPT-4 的结果:
- 零样本 (Zero-Shot) : F1 分数为 0.468 (没有帮助时表现不佳) 。
- 5 样本 (使用 Founta 示例) : F1 分数为 0.565。
- 5 样本 (使用“Ours”示例) : F1 分数达到 0.728 。
从 0.565 到 0.728 的提升是巨大的。这证明仅仅向 GPT-4 展示五个“非故意冒犯” (人际冲突) 的例子,就能显著帮助它理解这个概念,效果远超展示标准仇恨言论的例子。
结论与启示
论文 “Leveraging Conflicts in Social Media Posts” 强调了当前 AI 安全措施中的一个盲点。由于过分关注说出的内容 (明确的诽谤语) ,我们忽视了它是如何被接收的 (隐性冒犯) 。
研究人员成功证明了:
- 冲突线索有效: 搜索“我不是故意冒犯”是挖掘高质量、微妙冒犯数据的可行方法。
- 语境至上: 非故意冒犯严重依赖于对话历史,而传统数据集忽略了这一点。
- 话题中立性: 这种方法产生的数据代表了更广泛的生活层面,减少了困扰当前 AI 模型的偏差。
对于 NLP 和数据科学的学生来说,这篇论文提供了一个宝贵的教训: 数据收集策略决定模型行为。 如果你只用脏话训练模型,它就只能检测脏话。要构建真正理解人类交流的 AI,我们必须超越文字本身,分析冲突、感知和解决的复杂动态。
非故意冒犯数据集是迈向 AI 的重要一步,这种 AI 不仅能理解我们说了什么,还能理解这些话给他人的感受。
](https://deep-paper.org/en/paper/file-3306/images/cover.png)