情感分析已经从简单地将电影评论分类为“正面”或“负面”,发展到了如今的细粒度数据分析时代。我们现在的关注点在于基于方面的情感分析 (Aspect-Based Sentiment Analysis, ABSA) 。 我们不仅想知道用户是否快乐,还想知道他们对什么感到快乐,他们喜欢哪个具体功能,以及他们使用了什么观点词。
这就引出了情感四元组 (Sentiment Quadruple) 的概念: 一组包含四个要素的结构化数据:
- 对象 (Target) : 实体 (例如,“iPhone 13”) 。
- 方面 (Aspect) : 组件 (例如,“电池续航”) 。
- 观点 (Opinion) : 表达 (例如,“支撑一整天”) 。
- 情感 (Sentiment) : 极性 (例如,“正面”) 。
从干净、简短的句子中提取这些四元组已经是一个被解决的问题。但是,从对话——包含打断、俚语和话题转换的杂乱多轮对话——中提取它们,则是一个巨大的挑战。
在这篇文章中,我们将深入探讨研究论文 《Overcome Noise and Bias: Segmentation-Aided Multi-Granularity Denoising and Debiasing for Enhanced Quadruples Extraction in Dialogue》 。 该论文提出了一个名为 SADD 的复杂框架,用以处理对话分析中的两大劲敌: 噪声 (Noise) 和顺序偏差 (Order Bias) 。
核心问题: 噪声与偏差
在探讨解决方案之前,我们必须了解为什么现有的“生成式方法” (生成输出文本序列的模型) 在对话场景中会失效。
1. 噪声问题
对话通常比较唠叨。与正式评论不同,对话中的人可能会说“噢,我明白了”,或者离题去谈论无关的细节。这些多余的词就是“噪声”。
在深度学习模型中,注意力机制会关注所有内容。如果用户说: “我没买三星,因为屏幕很暗,但我买了小米,因为价格很低”,一个简单的模型可能会因为词语距离较近而感到困惑。它可能会产生“幻觉”,认为“小米”有“暗屏幕”。
2. 顺序偏差问题
这是一个更微妙的数学问题。当我们训练模型生成一系列四元组时,我们必须强制将四元组排成一个序列。
试想一句话包含两个事实:
- 事实 A: (iPhone, 屏幕, 好, 正面)
- 事实 B: (三星, 价格, 高, 负面)
模型必须一个接一个地输出它们。但是先输出哪一个呢?A 还是 B?实际上, 顺序并不重要——它们是一组事实集合。然而,训练数据通常有固定的顺序 (通常只是它们在句子中出现的顺序) 。
如果模型总是被训练为先输出 A 然后输出 B,它就会开始学习一种虚假的因果关系 。 它会认为事实 B 的生成依赖于事实 A,或者认为这种顺序存在某种语义原因。这就是顺序偏差 (Order Bias) , 它会损害模型的泛化能力。

如图 1 所示,噪声 (橙色文本) 会干扰模型,而顺序偏差 (黄色框) 会迫使模型学习不存在的依赖关系。
解决方案: SADD
研究人员提出了 SADD (Segmentation-Aided multi-grained Denoising and Debiasing,辅助分割的多粒度去噪与去偏) 。虽然名字有点拗口,但其架构非常优雅。它从两个方面攻克这一难题:
- 通过名为 MGDG (Multi-Granularity Denoising Generation,多粒度去噪生成) 的模块进行去噪 。
- 通过名为 SOBM (Segmentation-aided Order Bias Mitigation,辅助分割的顺序偏差缓解) 的模块进行去偏 。
让我们来拆解一下这个架构。

如图 2 所示,该模型通过编码器处理对话,经过标注和分割模块进行清理,然后使用解码器生成最终的四元组。
第一部分: 消除噪声 (MGDG)
MGDG 中的“多粒度”意味着模型在两个级别上清除噪声: 词级别 (Word Level) 和话语 (句子) 级别 (Utterance Level) 。
词级别去噪: 序列标注
首先,模型会查看对话中的每一个词。它为每个词分配一个标签: 这是对象吗?是方面吗?是观点吗?还是*无 (None) *?
这是一个经典的序列标注任务。通过计算特定词为“无”的概率,模型可以了解哪些词可能是无关的噪声。这个概率图 (\(P\)) 会被保存下来,供解码器后续使用。
话语级别去噪: 感知主题的对话分割 (TADS)
这是该方法创新的地方。在长对话中,人们会切换话题。如果我们当前正在提取关于“电池续航”的情感,那么讨论“客户服务”的句子实际上就是噪声。
现有的方法试图将每个句子与所有其他句子进行比较以查找主题,这在复杂的聊天中计算量大且往往不准确。SADD 方法使用主题作为桥梁 。
- 识别主题: 模型将 (在词级别步骤中) 识别为“对象”的词视为潜在的主题。
- 交叉注意力: 它使用交叉注意力机制,其中主题充当查询 (Queries) , 而话语充当键/值 (Keys/Values) 。
- 聚类: 它预测哪些话语与哪个主题相关。
这创建了主题掩码 (Topic Masks) 。 如果话语 1 和话语 3 是关于“iPhone”的,它们会被分在一组。如果话语 2 是关于“三星”的,它会有自己的一组。当模型试图提取关于 iPhone 的信息时,它会应用掩码来完全隐藏话语 2。
去噪注意力: 整合在一起
模型如何使用这些信息?它修改了最终解码器中的交叉注意力 (Cross-Attention) 机制。标准的注意力允许模型查看任何地方。 去噪注意力 (Denoised Attention) 则限制了视野。
研究人员引入了一种数学调整来改变注意力权重。

在这个公式中:
- \(\hat{P}_j\) 是一个词有意义的概率 (源自词级别标注) 。
- \(m_j^{(k)}\) 是主题掩码 (源自话语级别分割) 。
- \(r_j\) 变成了一个“门控”。如果一个词是噪声,或者句子离题了,\(r_j\) 就会变为 0。
- \(w'_i\) 是新的注意力权重。
实际上,模型在词和句子级别都被“蒙上了眼睛”看不到噪声,这迫使它只关注相关数据。
第二部分: 消除顺序偏差 (SOBM)
现在输入已经清理干净了,我们必须解决输出生成的问题。研究人员提供了一个引人入胜的理论证明,指出顺序偏差源于理想训练目标与实际训练目标之间的差距。
数学差距
在理想世界中,我们会使用最大似然估计 (MLE) 对四元组的所有可能的有效顺序来训练模型。

理想情况下,对于一组四元组 \(S\),损失函数应该考虑所有排列 \(\Pi(S)\) 的概率总和。

然而,在实践中,我们通常只选择一种特定的顺序 (例如,出现的顺序) 并以此进行训练。这就是实际目标:

论文证明了这两个目标之间的差异 (差距 \(\Delta\)) 不为零 。 这个差距代表了偏差——模型因为以“错误”的顺序输出了正确的元组而受到惩罚,这会让它感到困惑。

解决方案: 辅助分割的数据增强
由于我们无法轻易更改损失函数来处理无限排列 (这会导致难以收敛的“一对多”映射问题) ,研究人员决定改变数据 。
他们提出了 SOBM (辅助分割的顺序偏差缓解) 。其核心思想是创建一个增强数据集 , 在这个数据集中,输入的对话被重新排列,目标标签也被重新排序。
但你不能只是打乱句子中的单词;那样会破坏语意。然而,你可以打乱回复线索 (Reply Threads) 。

如图 5 所示,对话通常是树状结构的。如果线索 A (话语 1, 2, 3) 和线索 B (话语 1, 4, 5) 从同一个根节点分支出去,但讨论的是不同的事情,那么它们在语义上是独立的。
策略:
- 使用对话分割 (来自第一部分) 来找到这些独立的线索。
- 在输入中重新排列这些线索,以创建新的、语义等价的对话 (\(\hat{x}\)) 。
- 将这些新输入与输出四元组的不同排列 (\(y\)) 配对。
通过用这些变体充实训练数据,数据分布 (\(p_{aug}\)) 发生了变化。论文从数学上证明,在这种增强分布下,理想训练目标与实际训练目标之间的差距缩小到近似为零。

这意味着模型终于明白了顺序并不重要 , 从而在不需要复杂的新损失函数的情况下解决了偏差问题。
实验与结果
这个复杂的架构真的有效吗?研究人员在 DiaASQ 基准测试集 (包含中文和英文对话) 上测试了 SADD。
数据集统计
该数据集规模庞大,包含数千个具有复杂回复结构的对话。

主要性能
结果令人印象深刻。SADD 与多个基线模型进行了比较,包括判别式模型 (如 SpERT) 和生成式模型 (如 ParaPhrase) 。

观察表 1 :
- SADD (Ours) 在各项指标上均取得了最高分。
- 在英文四元组提取 (Identification F1) 中,SADD 得分为 41.05% , 显著击败了之前的最佳模型 (MvI) 的 37.51%。
- 这种提升在英文 (EN) 和中文 (ZH) 数据集中都是一致的。
消融实验: 我们需要这两个部分吗?
研究人员分别关闭了 MGDG (去噪) 和 SOBM (去偏) 来看看会发生什么。

表 2 清楚地显示:
- 移除 MGDG 会导致大幅下降 (例如,在 EN Iden F1 中从 41.05% 降至 38.39%) 。
- 移除 SOBM 也会显著损害性能。
- 两者的结合产生了最好的结果。
对抗噪声
最令人信服的结果之一是专门由噪声引起的错误的减少。

表 3 显示,在之前的最先进模型 (MvI) 中,近 80% 的错误是由噪声引起的。SADD 将这一比例降低到了 48.67% 。 这是鲁棒性的巨大提升。
案例研究
可视化输出有助于理解这种改进。

在图 4 中,看第一个关于“魅族 18 (Meizu 18) ”的例子。
- 用户说“魅族 18 只是个备用机 (backup machine) ”。
- 基线模型 (MvI) 感到困惑并提取了:
(Meizu 18, machine, backup, neg)。这是不正确的;“机器 (machine) ”不是一个特征/方面,它只是指代手机的一个名词。 - 得益于词级别去噪, SADD 正确地忽略了这个噪声,没有提取错误的四元组。
意义何在
SADD 模型代表了向前迈出的重要一步,因为它将数据的结构视为解决方案的一部分。
- 它尊重对话的本质: 通过承认对话具有主题和线索,它使用分割 (TADS) 来智能地过滤上下文。
- 它修正了生成的数学逻辑: 通过证明“理想-实际差距”,它为数据增强提供了理论依据,而不仅仅是盲目地进行增强。
局限性
作者指出,虽然有效,但增强策略增加了训练时间,因为数据集变得更大了。此外,当前的实现使用了 BART,注意力的复杂性随序列长度增加而增加——这是大型语言模型 (LLM) 处理长上下文时的一个已知问题。
结论
从对话中提取情感就像试图在拥挤的房间里听清一段特定的对话。你需要屏蔽背景噪声 (去噪) ,并且需要在不假设错误的事件顺序的情况下组织你听到的片段信息 (去偏) 。
SADD 方法为实现这一目标提供了一个稳健的蓝图。通过结合序列标注、感知主题的分割和巧妙的数据增强,它为人工智能如何理解我们杂乱的人类对话树立了新标准。对于 NLP 领域的学生和研究人员来说,这篇论文是诊断特定模型故障 (噪声和偏差) 并设计针对性架构修复方案的大师级范例。
](https://deep-paper.org/en/paper/file-3468/images/cover.png)