1. 引言
为应对不断增长的用户需求,淘宝、京东等电商平台采用在线客服系统提供服务。用户满意度是衡量服务质量的重要指标,因此电商平台建立了服务评级系统,通过用户评价对在线客服的服务质量进行评级。然而,目前普遍采用的评级系统多为事后评价,即服务结束后用户才能进行反馈,导致客服无法在对话过程中及时调整服务,进而引发用户负面情绪升级和流失。
Figure 1. A service dialogue in E-commerce
图1. 一个电商客服的服务对话示例
在线客服对话是一种连续交互过程,包含用户丰富的情绪变化。如图1所示的对话中,用户一开始情绪积极,并使用“:)”表达友好,但随着对话的进行,客服反复强调“It is not a quality problem”并要求用户承担退货运费,忽视了用户的反馈,导致用户情绪转为愤怒和不满。用户情绪能够反映对客服服务的满意度,而消极的情绪可能影响复购率和品牌忠诚度。因此,理解并分析用户情绪的变化,对于提升客服服务质量和用户体验至关重要。
情感分析(Sentiment Analysis)作为自然语言处理(NLP)中的核心任务之一,旨在识别文本中的情感倾向。与词语级[1]、方面级[2]的情感分析相比,对话情感分析因其多轮互动和上下文依赖性更具挑战性。对话中的情感往往跨越句子,并随着对话进程不断变化,这增加了情绪追踪的难度。单句分析往往无法准确捕捉情感的动态变化,因此结合上下文信息[3] [4]进行多轮对话的情感建模至关重要。然而,现有的对话情感识别方法多集中于为单句情感标签分配[5],未能充分考虑对话情感的连续性和全局性。在多轮对话中,情绪波动曲线能够更直观地展示情绪的全局趋势[6],弥补逐句分析的不足。对话中的情感常由两个或多个参与者共同影响,因此理解不同发言者间的情感互动和相互反应同样重要[7]。与极性分析相比,对话情感分析应关注更细粒度的情绪,如惊讶、失望和愤怒等。此外,特定对话场景中常有高频词汇,如客服对话中的“发货”、“退款”、“质量问题”等,深入理解这些词语的语境含义有助于更准确地识别对话情感。
为应对这些挑战,本文提出了一种基于情感词辅助的跨句上下文对话情绪分类模型(Sentiment-Lexicon Enhanced Cross-Sentence Contextual Dialogue Emotion Classification Model, SLED-EC)。首先结合SenticNet情感词典和RoBERTa模型,构建了包含词语级和句子级情感标签的训练数据集。接着,通过[CLS] token将对话中的各语句连接为长序列,并使用Character Embeddings替代BERT的Segment Embeddings,使模型更好地区分不同发言者的情绪和语义差异,增强对多轮对话情感的理解。最后,通过分析对话中单句的情感分布,构建整个对话的情绪波动曲线。SLED-EC的主要创新点如下:1) 结合SenticNet实现词语级情感识别,增强模型对细粒度情感变化的捕捉能力;2) 利用跨句上下文信息,准确识别多轮对话中的情感转折与动态变化;3) 构建情绪波动曲线,提供用户情感状态的全局视角。该模型在电商平台客服系统中具有广泛的应用潜力,可以通过监测和分析用户的情绪波动,辅助客服及时调整服务,预防负面情绪的积累,提升用户满意度。此外,模型还可应用于智能对话系统,通过精确的情绪识别提供个性化和贴心的服务体验。
2. 相关研究
2.1. 上下文依赖的对话情感分析
对话情感通常具有上下文依赖性,每个句子的情感不是孤立存在的,这种依赖性增加了多轮对话情感分析的复杂性。早期的情感分析研究主要集中于单句或短文本[1]的情感分类,未能充分考虑上下文因素的影响。然而在多轮对话中,单个句子的情感往往不足以反映对话的整体情感走向,因为情感状态会随着对话进展而动态变化。
长短期记忆网络(LSTM)和Transformer等模型因其对序列数据的处理能力,被广泛应用于捕捉对话中的上下文信息。LSTM能够有效地保留对话中的长距离依赖[8],而Transformer的自注意力机制能够在更大范围内捕捉情感变化的细节[9]。一些研究将LSTM模块与Transformer结合,以进一步提升对对话中上下文信息的建模能力[10]。随着技术的发展,多轮对话情感分析逐渐从单句分析向上下文依赖的动态分析转变。
随着对话系统的复杂性增加,模型不仅需要捕捉显性情感信息,还需理解情感的动态转变,这对模型的上下文处理能力提出了更高的要求。在客服满意度[11]和对话响应[12]等应用中,基于上下文的多轮对话情感分析被证明在提升用户体验和理解用户意图方面发挥重要作用。此外,对话情感分析还应关注情感的连续性和整体趋势,其中情绪波动曲线作为一种整体建模方法,能够动态反映用户情绪在整个服务过程中的变化,帮助客服系统更全面地识别用户情绪变化的关键时刻。在电商客服场景中,情绪波动曲线能为客服提供情绪变化的趋势参考,尤其当用户情绪波动剧烈时,系统可以为客服提供适当的沟通策略建议或建议更换客服,以更有效地管理用户情绪,提升服务质量。
2.2. 基于BERT的对话情感分析
Devlin等[13]于2018年提出了基于Transformer编码器的BERT模型。该模型采用了MLM (Masked Language Model)和NSP (Next Sentence Prediction)预训练任务,能够学习融合左右上下文信息的深层双向语言表示。在BERT模型中,每个句子在开头插入CLS标记,末尾插入SEP标记,将文本转换为字向量、文本向量和位置编码之和作为输入,如图2所示。
Figure 2. Architecture of BERT
图2. BERT模型结构
近年来,BERT模型在自然语言处理任务中取得了显著进展,尤其在情感分类任务中表现优异[14]。与传统的单向语言模型相比,BERT不仅能够识别文本的整体情感倾向,还能捕捉更为细腻的情感变化,特别是在处理情感转折点和细粒度情感类型(如愤怒、爱、喜悦等)方面表现卓越[15]。
对话情感分析涉及多轮互动和复杂上下文关系,BERT因其强大语境理解能力而广泛应用于对话系统。Zhang等[16]提出Dialogue BERT,通过改进BERT的输入表示并引入对话特征,增强了模型在对话理解和情感分析任务中的表现。Yang等[17]基于BERT提出了一种情感动态建模方法,用于在多轮对话中捕捉并预测情感的时序变化,从而提高了对话系统的情感分析精度和上下文理解能力。BERT不仅能够捕捉对话中的细粒度情感,还能为客服服务、对话生成等下游任务提供了强有力的支持[18]。
3. 客服对话情绪识别模型
3.1. 问题描述
为挖掘用户在电商客服服务过程中的动态情绪体验,本文将以对话中句子级的情绪为研究对象。一句话可能包含多种不同的情绪,如当用户希望商家对退货运费做出售后时(如图1):“If it is not, what else is?? You mean no sleeves???”,句子表达了用户的惊讶和愤怒,且愤怒相对惊讶更高。因此模型不仅需要识别句子中有无情绪信息,还需要识别具体情绪的强度大小。此外,客服对话通常是一个多轮交互过程,包含了多个语句,又可以进一步实现情绪的动态波动建模。
如图3所示,SLED-EC模型将基于词语级、句子级两个情绪分类任务展开,通过对语句中词语情绪的预测提升模型对语句情绪的理解。一段对话由N个句子组成,即对话
,其中上标
表示t时刻语句对应的说话人,
,
表示t时刻
的说话内容。每个语句经过分词处理得到词语
,即t时刻的句子
。词语
和句子st将分别具有对应的情绪标签
和
。由于对话中通常存在上下文语境关系,因此除了考虑时刻的句子
,还需要考虑时刻前的语句
,甚至时刻后的语句
。
Figure 3. Structure of SLED-EC model
图3. SLED-EC模型结构
3.2. 模型构建
情感分析任务中,外部情感知识可以看作是文本语义的情感补充来源。SenticNet [19]是一个公开的情感知识库,结合了情感和认知两个维度来理解和分析文本数据,并为每个概念提供相应的情感分数,被广泛应用到情感分析、情感标签生成等任务中。本文利用SenticNet情感词典构建词级训练数据集:对话中句子的词语
的情绪标签
,及对应的情感分数
。强消极词的情感分数接近−1,强积极词情感分数接近1,当
时,表示词语
的情感倾向为中性或者在词典中不存在。SenticNet中词语的情绪标签示例如表1所示。本文直接采用MELD对话数据集[20]中的情绪分类:anger、disgust、sadness、joy、neutral、surprise和fear,即句子
具有情绪标签
。
Table 1. Examples of word sentiment score and mood tags in SenticNet
表1. SenticNet中词语情感分数及标签示例
单词
|
|
Mood tags |
excellent |
0.744 |
#joy, #eagerness |
fantastic |
0.87 |
#joy, #calmness |
damage |
−0.45 |
#sadness, #fear |
awful |
−0.94 |
#sadness, #disgust |
对话中语句的情绪强度分布可以视为一组基于BERT的上下文语境建模问题。将带有情绪标签
的语句通过[CLS] token连接后,形成“[CLS] I apply for a return [CLS] Will you return freight [CLS]…”的长序列输入至BERT模型中,并转换为Token Embeddings、Character Embeddings、Position Embeddings之和作为BERT模型的最终输入(如图4所示)。需要注意的是,Character Embeddings (即Customer Embeddings与Service Embeddings)取代了原BERT模型中的Segment Embeddings,用于识别各语句的说话人。模型将预测得到对话中每个语句的情绪标签及分布,通过权重计算得到相应的情感分数,最终生成不同对话的语句间情感波动情况。
Figure 4. Architecture of BERT in SLED-EC model
图4. SLED-EC中BERT的模型结构
BERT模型由多个Transformer层重叠而成,Transformer层主要由Encoder和Decoder组成。其中,Encoder层包含一个自注意力网络层和一个前馈神经网络,而Decoder层比Encoder层多一层注意力层。在Transformer架构中的注意力机制中,Query用于衡量与每个Key的相关性,Key用于构建注意力得分的计算基础,而Value用于根据注意力得分进行加权求和。多头注意力将信息进行融合生成最终的注意力输出:
(1)
模型选择交叉熵损失(Cross-Entropy Loss)作为模型的主要损失函数:
(2)
(3)
(4)
其中,
为任务最终的损失函数,
、
分别表示词语级与句子级情感分类任务的损失函数。
、
是训练样本,
、
分别表示两类任务的情绪类别数。
、
为训练数据中的真实标签,
、
为预测标签,
为对话中的语句数,取均值以减少对话中语句数量差异造成的影响。最终得到语句的七类情绪概率分布。为进一步计算对话中每句语句的情感值,本文对七类情绪标签进行了排序:joy、surprise、neutral、sadness、fear、disgust、anger,并根据情绪的正负向和强度分配了相应的权重。通过加权计算得到语句的情感值为:
(5)
其中,
表示语句
中第
种情绪的概率分布,
表示不同情绪的权重,设定
,
,
,
,
,
,
。
4. 实验结果及分析
4.1. 数据集
本文基于一个公开可用的电商领域服务对话数据集进行实验。该数据集[21]是京东公司在客服和客户的真实聊天数据上做了脱敏处理后的数据,包含了共计10,000个对话数据。数据集中包含了每段对话的角色信息(0-用户,1-客服)和具体对话内容,由于对话文本属于短文本非结构化数据,实验前将需要对文本进行预处理。文本预处理是文本挖掘的准备工作,主要包括文本翻译、分词、去停用词等。EmoBERTa [22]是一种改进的RoBERTa模型,支持多分类情感识别,在两个对话情感分析数据集上表现优异。因此,实验结合EmoBERTa和人工标注方法对在线客服对话数据集进行情感标注,统计信息与标注示例如表2、表3所示。数据集设定训练、开发与测试集的比例为8:1:1。
Table 2. Statistics of emotion categories in the dataset
表2. 数据集情绪类别统计信息
总句子数 |
joy |
surprise |
neutral |
sadness |
fear |
disgust |
anger |
212,808 |
40,788 |
1,182 |
131,085 |
19,507 |
739 |
4,729 |
14,778 |
Table 3. Examples of sentences for emotion categories in the dataset
表3. 数据集情绪类别句子示例
情绪类别 |
句子示例 |
情绪类别 |
句子示例 |
joy |
Okay, thank you! |
surprise |
Really? |
neutral |
Can I pick it up myself? |
sadness |
I hope this issue can be resolved for me as soon as possible. |
fear |
Afraid I might not be back when the delivery arrives. |
disgust |
Someone I know bought this before and had the same problem. |
anger |
Are you sure I’ll receive it by the [number x]??? |
|
|
4.2. 实验设置及评价标准
本实验基于BERT模型进行对话情绪分类,由12个Transformer块、12个自注意力头和768个隐藏单元组成,并使用预训练参数对BERT进行初始化,其他参数则随机初始化。采用AdamW优化器,设置初始学习率为0.001,
,
,L2正则化权重衰减为0.01,学习率预热步数为0,使用线性衰减学习率。所有结果为基于5次实验运行的平均值。
作为典型的分类问题,情绪分类的评价标准可以比照普通的分类问题处理,本文采用的评价指标是准确率(Precision)、召回率(Recall)和F1值,如下所示:
(6)
(7)
(8)
P和N表示模型实际的判别情况,T和F评价模型的判别情况正确与否,TP、FP、TN、FN分别表示真正例、假正例、真反例、假反例的样本数量。
4.3. 实验结果
4.3.1. 对比实验
为评估SLED-EC模型在客服对话情感识别任务中的表现,本文选择了以下几种对话情感分类模型作为基准,进行对比实验:
1) DMN [23]:动态记忆网络,通过动态存储和更新信息增强推理能力,尤其在长距离依赖的处理上表现优异。
2) BERT + MTL [24]:将情感识别与辅助说话者识别任务结合,提升对话情感识别的效果。
3) DialogueGCN [25]:利用图卷积网络处理对话中参与者之间的依赖关系,显著提升对话情感分析的效果。
4) DialogueBERT [16]:基于自监督学习的对话预训练编码器,通过改进BERT输入表示和引入对话特征,优化了对话情绪分类任务。
Table 4. Comparison of experimental results across methods
表4. 对比实验结果
模型 |
准确率P (%) |
召回率R (%) |
F1值(%) |
DMN [23] |
57.06 |
73.39 |
62.03 |
BERT + MTL [24] |
61.87 |
78.58 |
67.05 |
DialogueGCN [25] |
59.60 |
76.74 |
64.44 |
DialogueBERT [16] |
65.12 |
81.85 |
70.18 |
SLED-EC* |
67.78 |
83.81 |
72.36 |
表4比较了SLED-EC模型与其他四种基准模型在电商客服对话情感识别任务中的表现。SLED-EC在准确率(67.78%)、召回率(83.81%)和F1值(72.36%)这三个关键指标上均优于对比模型。尤其是在召回率和F1值方面,SLED-EC展现了在情感识别上的全面性和平衡性,表明了SLED-EC在细粒度情感捕捉和上下文依赖性分析方面的优势。
与其他模型相比,SLED-EC更适合处理客服对话中的情感识别任务。通过情感词典辅助的多任务结构,SLED-EC能够更好地挖掘特定场景中词语的不同语义和情绪强度。结合词级别和句级别任务,SLED-EC能够捕捉到更多细粒度情感变化,并结合上下文信息准确理解情绪转折,从而在整体性能上表现突出。尽管DMN、BERT + MTL和DialogueGCN在某些方面表现出色,但在处理多轮对话和电商场景下的情绪交互时,它们的局限性开始显现。SLED-EC则通过有效整合上下文信息和情感词,展现了更强的适应性。
在图1所示的对话示例中,用户的情绪从最初的积极(joy)逐渐转为愤怒(anger),表现出对客服回应的强烈不满。SLED-EC模型能够准确捕捉这一情绪变化过程。例如,当用户询问“Isn’t it a quality problem???”时识别出用户不满情绪的显著上升,并生成情绪波动曲线,直观展示用户情绪的整体变化趋势。与其他模型相比,SLED-EC结合了细粒度的词级情绪信息和跨句的上下文理解,提升了模型性能,并通过识别关键情绪转折点,为客服系统提供了有效的情绪管理支持。
4.3.2. 消融实验
消融实验评估了不同模型配置对情感分类性能的影响,具体设置如下:
1) 单句子输入模型:即不带对话上下文的单句子输入。将对话中的单个句子直接输入BERT模型进行情绪识别,忽略上下文信息和词级别的情绪标签,为后续实验提供基准。
2) 词级别与句子级多任务情感分类方法:结合SenticNet情感词典,在BERT模型中加入词语级情绪识别任务,以验证词级任务是否能提升句子级情绪分类的性能。
3) 跨句子上下文信息的情感分类方法:将对话中前后关联的句子作为长序列输入模型,并通过Character Embeddings区别说话人,验证上下文信息对情感理解的增强效果。
4) 情感词辅助的跨句上下文对话情绪分类模型(SLED-EC):同时结合词语级情绪识别与上下文信息,最大化利用对话中的语义与情感细节,以提升模型的情绪分类能力。
Table 5. Ablation study results
表5. 消融实验结果
句子级 |
词语级 |
上下文信息 |
准确率P (%) |
召回率R (%) |
F1值(%) |
√ |
× |
× |
60.56 |
74.24 |
65.20 |
√ |
√ |
× |
62.74 |
77.66 |
67.26 |
√ |
× |
√ |
64.36 |
80.01 |
69.11 |
√ |
√ |
√ |
67.78 |
83.81 |
72.36 |
实验结果如表5所示,展示了模型在不同配置下的性能表现。当仅依赖句子级别的情感识别时,模型的准确率、召回率和F1值分别为60.56%、74.24%和65.20%,为所有配置中表现最差的情况。引入词语级别情感识别后,准确率和F1值分别提升至62.74%和67.26%,但提升幅度有限。这是因为词语级别情感识别虽然增强了对细微情感的捕捉能力,但在多轮对话中无法充分捕捉上下文中的情感关联。
当进一步加入上下文信息时,模型的准确率、召回率和F1值分别提升至64.36%、80.01%和69.11%。上下文信息的引入使模型能够理解对话中的前后关系,更好地捕捉情感转折,提升了情感分析的准确性。在多轮对话中,用户情绪常因客服的回应逐步变化,这种变化仅靠单句或词语级别分析难以捕捉,需借助上下文信息来识别。
结合句子级、词语级情感识别及上下文信息的SLED-EC模型表现最佳,其准确率、召回率和F1值分别达到了67.78%、83.81%和72.36%,相比基础配置提升了7.22、9.57和7.16个百分点。多层信息的融合使SLED-EC能更精确地捕捉情感细节与情绪动态变化,不仅提高了整体性能,还增强了其在复杂情感交互场景中的适应性和灵活性。
4.3.3. 情绪波动曲线分析
如图5所示,四组客服对话的情绪波动曲线揭示了用户和客服的情感变化趋势。
Figure 5. Dialogue content and emotional fluctuation curve
图5. 对话内容与情绪波动曲线图
在对话过程中,客服的情绪表达多为积极或中性,而用户的情绪则更为多变。因此,本文优先考虑用户的情绪,并定义了以下四种情绪波动类型:
1) 情绪回归型:用户起初表达出失望或愤怒等负面情绪,在客服安抚下情绪逐渐回归至中立或积极状态。
2) 情绪转折型:由于问题未能及时解决或服务未达用户预期,用户情绪从积极转向负面。
3) 情绪稳定型:用户情绪在对话过程中波动较小,保持相对稳定。
4) 情绪波动型:用户情绪在对话中多次变化,出现显著的波动。
结合图5所示的对话内容和情绪波动曲线,可以观察到在“情绪转折型”对话中,因客服未能及时安抚或提供满意服务,用户情绪从愉快(joy)转为愤怒(anger)。而在“情绪波动型”对话中,用户情绪先得到了缓和,但因平台或商家的降价促销活动导致未能满足预期,再度出现反感情绪(disgust)。这种波动并非直接由客服的服务质量引起,而是由于外部因素导致。通过监控用户情绪变化,平台可以识别情绪转变的关键时刻,从而优化客服沟通策略,有效缓解用户不满并提升整体满意度。
5. 结论与展望
现有的对话情感分析方法在处理多轮对话的上下文语境以及电商服务场景下的细粒度情感分析方面,仍存在一定的局限性。特别是在多轮对话中,准确捕捉上下文关联和角色间的情感交互仍然是一个挑战。针对这一问题,本文提出了一种结合BERT模型和SenticNet词典的情绪分类模型。通过整合词语级和句子级的情感识别,模型能够有效提升对话中每个语句的情感理解能力,尤其在情感波动和角色情感交互复杂的场景中展现出优异表现。实验结果表明,本文模型在客服对话情感分析任务中表现出较高的准确性,尤其在情感变化检测和长对话情感预测方面具有明显优势。与现有方法相比,本文模型不仅提升了对各类情感的识别精度,还在情感波动场景下提供了更细致、更完整的分析,为电商服务中的用户满意度评估提供了更有力的支持。
尽管SLED-EC模型在实验中取得了较好的效果,但由于所使用的数据集主要来自于特定电商平台的客服对话,这可能限制模型在其他平台或行业中的泛化能力。数据集中情感类别的分布不均,可能导致模型在少数类情感(如“fear”或“disgust”)上的表现较弱。未来将扩展数据来源,并结合多模态数据(如语音、视频等),以增强模型对对话情感的理解能力。考虑到智能客服系统对情感分析的实时性需求,接下来将着重提高模型在动态对话中的响应速度和准确性。同时,情感波动模式和趋势的预测也将成为研究的重点,通过进一步优化模型,推动智能客服系统向更加个性化的方向发展,从而提升用户体验。
NOTES
*通讯作者。