Emotional Chatting Machine: Emotional Conversation Generation with Internal and External Memory
摘要
情感的感知和表达是对话系统或者会话代理成功的关键因素。
然而,到目前为止这个问题还没有在大规模会话生成中研究。
在本文中,我们提出情感聊天机(Emotional Chatting Maching,ECM),
它可以根据内容(相关性和语法)和情感(情感一致性)来生成适当的回复。
据我们所知,这是第一项在大规模会话生成上解决情感问题的工作。
ECM使用三种新机制来解决这一问题:
- 使用嵌入情感类别来建模高层抽象的情感表达
- 捕捉隐含内部情感状态变化
- 使用外部情感词汇来显式的表达情感
实验表明,提出的模型不仅在内容上还在情感上生成了合适的表达。
3. Emotional Chatting Machine
3.1 背景:编解码器框架
我们的模型基于通用序列到序列(简称seq2seq)模型(Sutskever,Vinyals和Le 2014)的编解码器框架。
它通过GRU实现。
编码器转换POST序列
X
=
(
x
1
,
x
2
,
⋯
,
x
n
)
\boldsymbol { X } = \left( x _ { 1 } , x _ { 2 } , \cdots , x _ { n } \right)
X=(x1,x2,⋯,xn)
为隐藏表示
h
=
(
h
1
,
h
2
,
⋯
,
h
n
)
\boldsymbol{h}=\left( h _ { 1 } , h _ { 2 } , \cdots , h _ { n } \right)
h=(h1,h2,⋯,hn),其定义为:
h t = G R U ( h t − 1 , x t ) (1) \boldsymbol { h } _ { t } = \mathbf { G } \mathbf { R } \mathbf { U } \left( \boldsymbol { h } _ { t - 1 } , x _ { t } \right)\tag{1} ht=GRU(ht−1,xt)(1)
解码器将上下文向量
c
t
\boldsymbol { c } _ { t }
ct和
先前解码词的嵌入
e
(
y
t
−
1
)
\boldsymbol{e}(y_t-1)
e(yt−1)作为输入
使用另一个GRU来更新它的状态
s
t
\boldsymbol{s}_t
st:
s t = G R U ( s t − 1 , [ c t ; e ( y t − 1 ) ] ) (2) \boldsymbol { s } _ { t } = \mathbf { G } \mathbf { R } \mathbf { U } \left( \boldsymbol { s } _ { t - 1 } , \left[ \boldsymbol { c } _ { t } ; \boldsymbol { e } \left( y _ { t - 1 } \right) \right] \right)\tag{2} st=GRU(st−1,[ct;e(yt−1)])(2)
其中,
[
c
t
;
e
(
y
t
−
1
)
]
\left[ \boldsymbol { c } _ { t } ; \boldsymbol { e } \left( y _ { t - 1 } \right) \right]
[ct;e(yt−1)]
是两个向量的连接,作为GRU单元的输入。
上下文向量
c
t
\boldsymbol{c}_t
ct被设计为在解码期间动态关注输入帖子的关键信息。
一旦获得状态向量
s
t
\boldsymbol{s_t}
st,则解码器通过从
输出概率分布
o
t
\boldsymbol{o_t}
ot中采样来生成token,该输出概率分布根据解码器的状态
s
t
\boldsymbol{s_t}
st计算:
y t ∼ o t = P ( y t ∣ y 1 , y 2 , ⋯ , y t − 1 , c t ) = softmax ( W o s t ) (3,4) \begin{aligned} y _ { t } \sim \boldsymbol { o } _ { t } & = P \left( y _ { t } | y _ { 1 } , y _ { 2 } , \cdots , y _ { t - 1 } , \boldsymbol { c } _ { t } \right) \\ & = \operatorname { softmax } \left( \mathbf { W } _ { \mathbf { o } } s _ { t } \right) \end{aligned} \tag{3,4} yt∼ot=P(yt∣y1,y2,⋯,yt−1,ct)=softmax(Wost)(3,4)
3.2 任务定义和概述
我们的问题表述如下:
给定帖子:
X
=
(
x
1
,
x
2
,
⋯
,
x
n
)
\boldsymbol { X } =\left( x _ { 1 } , x _ { 2 } , \cdots , x _ { n } \right)
X=(x1,x2,⋯,xn)
以及要生成的响应的情感类别
e
e
e(下面解释),
目标是生成一个回复
Y
=
(
y
1
,
y
2
,
⋯
,
y
m
)
\boldsymbol{Y}=(y_1,y_2,\cdots,y_m)
Y=(y1,y2,⋯,ym)其与情感类别
e
e
e是一致的。
本质上,该模型估计概率:
P
(
Y
∣
X
,
e
)
=
∏
t
=
1
m
P
(
y
t
∣
y
<
t
,
X
,
e
)
P ( \boldsymbol { Y } | \boldsymbol { X } , e ) = \prod _ { t = 1 } ^ { m } P \left( y _ { t } | y _ { < t } , \boldsymbol { X } , e \right)
P(Y∣X,e)=∏t=1mP(yt∣y<t,X,e)。
情感类别是
{
Angry
,
Disgust, Happy, Like, Sad, Other}
\{ \text {Angry} , \text { Disgust, Happy, Like, Sad, Other\}}
{Angry, Disgust, Happy, Like, Sad, Other},
取自中文情感分类挑战任务1。
在我们的问题陈述中,我们假设要生成的响应的情感类别是给定的,因为情感是高度主观的。
给出一篇帖子,可能有多种情绪类别适合它的回应,这取决于受访者的态度。
给出一篇帖子,可能有多种情绪类别适合它的回应,这取决于受访者的态度。
帖子和回应之间灵活的情感交互是与以前研究的一个重要区别(Hu等人。2017年;Ghosh等人。2017年;卡根、弗兰克和萨法蒂2017),
它们使用与输入帖子中相同的情绪或情绪进行回应。
因此,由于情感反应的这种主观性,我们选择专注于解决核心问题:根据帖子和响应的情感类别生成情感响应。
因此,无论响应情绪类别如何,我们的模型都可以工作。
请注意,可以通过多种方式使聊天机器人选择情感类别进行响应。
一种方法是赋予聊天机器人个性和一些背景知识。
另一种方法是使用训练数据找到给定帖子中频率最高的响应情感类别,并将其作为响应情感。
这种方法是合理的,因为它反映了人们的普遍情感。我们将这项研究留给我们未来的工作。
在上一节讨论的生成框架的基础上,我们提出了情感聊天机(ECM),它使用三种机制生成情感表达:
首先,由于情感类别是情感表达的高级抽象,因此ECM对情感类别进行embed
,然后将情感类别嵌入反馈给解码器。
其次,我们假定在解码过程中,有一个内部情感状态,并且为了
捕获隐含的状态变化,能够动态地平衡语法状态和情感状态之间的权重,ECM采用了内部存储器模块。
第三,通过外部存储模块对通用(非情感)或情感词的显式选择来对情感的显式表达进行建模。
图1概述了ECM。
在训练过程中,将post-response语料对喂入情感分类器来为每个响应生成情感类别标签,然后对三元组数据(post,responses,响应的情感标签)
进行ECM训练
在预测阶段,一个post被喂入ECM来生成情感响应在不同情感类别的条件下。
3.3 情感类别嵌入
由于情感类别(例如,愤怒、厌恶、高兴)提供了情感表达的高级抽象,因此在响应生成中对情感建模的最直观的方法是将要生成的响应的情感类别作为附加输入。
每个情感类别由实值的低维向量表示。
对于每个情感类别
e
e
e,我们随机初始化一个情感类别
v
e
\boldsymbol{v}_e
ve,然后训练学习该情感类别的向量。
情感类别嵌入
v
e
\boldsymbol{v}_e
ve,词嵌入
e
(
y
t
−
1
)
\boldsymbol{e}(y_{t-1})
e(yt−1)和上下文向量
c
t
\boldsymbol{c}_t
ct,一起被喂入编码器来更新它的状态
s
t
\boldsymbol{s}_t
st:
s t = G R U ( s t − 1 , [ c t ; e ( y t − 1 ) ; v e ] ) (5) \boldsymbol { s } _ { \boldsymbol { t } } = \mathbf { G } \mathbf { R } \mathbf { U } \left( \boldsymbol { s } _ { t - 1 } , \left[ \boldsymbol { c } _ { t } ; \boldsymbol { e } \left( y _ { t - 1 } \right) ; \boldsymbol { v } _ { e } \right] \right)\tag{5} st=GRU(st−1,[ct;e(yt−1);ve])(5)
基于 s t \boldsymbol{s}_t st,解码器概率分布可以通过公式(4)来计算,来生成下一个token y t y_t yt。
3.4 内部存储器
上一节介绍的方法是相当静态的:情感类别的嵌入在生成过程中不会改变,这可能会牺牲句子的语法正确性(Ghosh等人2017)。
受情绪反应相对短暂且涉及变化的心理学发现(Gross 1998;Hochschild 1979)和情绪反应中的动态情绪状况(Alam,Danieli和Riccardi 2017)的启发,我们设计了一个内部记忆模块来捕捉解码过程中的情绪动态。
我们模拟表达情感的过程如下:
在解码过程开始之前,每个类别都有一个内在的情绪状态;
在每一步,情绪状态都会衰退一定的量;
一旦解码过程完成,情绪状态应该衰减到零,表明情绪已经完全表达。
内部存储器模块的详细流程如图2所示。
在每个步骤
t
t
t,ECM使用先前解码单词
e
(
y
t
−
1
)
\boldsymbol{e}(y_{t-1})
e(yt−1)的词嵌入,
先前解码器的状态
s
t
−
1
\boldsymbol{s}_{t-1}
st−1
和当前的上下文向量
c
t
\boldsymbol{c}_t
ct作为输入
来计算读取门
s
t
r
{\boldsymbol{s}_t^r}
str。
写入门 g t w \boldsymbol{g}_t^w gtw根据解码器的状态向量 s t \boldsymbol{s}_t st计算。读取门和写入门定义如下:
g t r = sigmoid ( W g r [ e ( y t − 1 ) ; s t − 1 ; c t ] ) (6) \boldsymbol { g } _ { t } ^ { r } = \operatorname { sigmoid } \left( \mathbf { W } _ { \mathbf { g } } ^ { \mathbf { r } } \left[ \boldsymbol { e } \left( y _ { t - 1 } \right) ; \boldsymbol { s } _ { t - 1 } ; \boldsymbol { c } _ { t } \right] \right)\tag{6} gtr=sigmoid(Wgr[e(yt−1);st−1;ct])(6)
g t w = sigmoid ( W g w s t ) (7) \boldsymbol { g } _ { t } ^ { w } = \operatorname { sigmoid } \left( \mathbf { W } _ { \mathbf { g } } ^ { \mathbf { w } } \boldsymbol { s } _ { t } \right)\tag{7} gtw=sigmoid(Wgwst)(7)
然后,将读取和写入门分别用于读取和写入内部存储器。
因此,在每个步骤中,情绪状态被擦除一定量(通过 g t w \boldsymbol{g}_t^w gtw)。
在最后一步,内在情绪状态将衰减为零。此过程的正式描述如下:
M r , t I = g t r ⊗ M e , t I (8) \boldsymbol { M } _ { r , t } ^ { I } = \boldsymbol { g } _ { t } ^ { r } \otimes \boldsymbol { M } _ { e , t } ^ { I }\tag{8} Mr,tI=gtr⊗Me,tI(8)
M e , t + 1 I = g t w ⊗ M e , t I (9) \boldsymbol { M } _ { e , t + 1 } ^ { I } = \boldsymbol { g } _ { t } ^ { w } \otimes \boldsymbol { M } _ { e , t } ^ { I }\tag{9} Me,t+1I=gtw⊗Me,tI(9)
其中, ⊗ \otimes ⊗是按元素乘, r / w r/w r/w分别代表读和写, I I I代表内部。
GRU更新它的状态
s
t
\boldsymbol{s}_t
st根据先前的目标单词
e
(
y
t
−
1
)
\boldsymbol{e}(y_{t-1})
e(yt−1),
先前的解码器状态
s
t
−
1
\boldsymbol{s}_{t-1}
st−1,上下文向量
c
t
\boldsymbol{c}_t
ct和
情感状态更新
M
r
,
t
I
\boldsymbol{M}_{r,t}^I
Mr,tI,定义如下:
s t = G R U ( s t − 1 , [ c t ; e ( y t − 1 ) ; M r , t I ] ) (10) \boldsymbol { s } _ { t } = \mathbf { G } \mathbf { R } \mathbf { U } \left( \boldsymbol { s } _ { t - 1 } , \left[ \boldsymbol { c } _ { t } ; \boldsymbol { e } \left( y _ { t - 1 } \right) ; \boldsymbol { M } _ { r , t } ^ { I } \right] \right)\tag{10} st=GRU(st−1,[ct;e(yt−1);Mr,tI])(10)
基于该状态,可以使用公式(4)获得单词生成分布
o
t
\boldsymbol{o}_t
ot,
然后可以采样下一个单词
y
t
y_t
yt。
在生成下一个单词后,
M
e
,
t
+
1
I
\boldsymbol{M}_{e,t+1}^I
Me,t+1I
被写回到内部存储器中。
注意公式(9)被执行了很多次,它等效于连续乘以矩阵,
从而导致衰减效果,因为
0
≤
sigmoid
(
⋅
)
≤
1
0 \leq \operatorname { sigmoid } ( \cdot ) \leq 1
0≤sigmoid(⋅)≤1。
这类似于内存网络中的DELETE操作 (Miller et al. 2016)。
3.5 外部存储器
在内部存储器模块中,内部情绪状态的变化与单词选择之间的相关性是隐含的,不能直接观察到。
由于情感表达与句子中包含的情感词(Xu等,2008)截然不同,例如
l
o
v
e
l
y
lovely
lovely和
a
w
e
s
o
m
e
awesome
awesome,
与一般的(非情感的)单词,如
p
e
r
s
o
n
person
person和
d
a
y
day
day相比,这些词带有强烈的情感,
我们提出了一个外部存储模块,通过将不同的生成概率分配给情感词和通用词来显式地对情感表达进行建模。
因此,模型可以选择从情感词汇表或通用词汇表生成单词。
具有外部存储器的解码器如图3所示。
给定解码器的当前状态
s
t
\boldsymbol{s}_t
st,
对分别从外部存储器和通用词汇表读取的情感词汇表计算
情感softmax
P
e
(
y
t
=
w
e
)
P_e(y_t=w_e)
Pe(yt=we)和通用softmax
P
g
(
y
t
=
w
g
)
P_g(y_t=w_g)
Pg(yt=wg)。
类型选择器
α
t
\alpha_t
αt控制产生情感或通用词的权重。
最后,从下一个单词概率(两个加权概率的串联)中
采样下一个单词
y
t
y_t
yt。
该过程如下:
α t = sigmoid ( v u ⊤ s t ) P g ( y t = w g ) = softmax ( W g o s t ) P e ( y t = w e ) = softmax ( W e o s t ) y t ∼ o t = P ( y t ) = [ ( 1 − α t ) P g ( y t = w g ) α t P e ( y t = w e ) ] (11-14) \begin{aligned} \alpha _ { t } & = \operatorname { sigmoid } \left( \mathbf { v } _ { \mathbf { u } } ^ { \top } \boldsymbol { s } _ { t } \right) \\ P _ { g } \left( y _ { t } = w _ { g } \right) & = \operatorname { softmax } \left( \mathbf { W } _ { \mathbf { g } } ^ { \mathbf { o } } \boldsymbol { s } _ { t } \right) \\ P _ { e } \left( y _ { t } = w _ { e } \right) & = \operatorname { softmax } \left( \mathbf { W } _ { \mathbf { e } } ^ { \mathbf { o } } \boldsymbol { s } _ { t } \right) \\ y _ { t } \sim \boldsymbol { o } _ { t } = P \left( y _ { t } \right) & = \left[ \begin{array} { c } \left( 1 - \alpha _ { t } \right) P _ { g } \left( y _ { t } = w _ { g } \right) \\ \alpha _ { t } P _ { e } \left( y _ { t } = w _ { e } \right) \end{array} \right] \end{aligned}\tag{11-14} αtPg(yt=wg)Pe(yt=we)yt∼ot=P(yt)=sigmoid(vu⊤st)=softmax(Wgost)=softmax(Weost)=[(1−αt)Pg(yt=wg)αtPe(yt=we)](11-14)
其中,
α
t
∈
[
0
,
1
]
\alpha_t \in [0,1]
αt∈[0,1]是一个标量,用来平衡情感词
w
e
w_e
we和通用词
w
g
w_g
wg之间的选择,
P
g
/
P
e
P_g/P_e
Pg/Pe分别是在通用/情感词上的分布,
P
(
y
t
)
P(y_t)
P(yt)是最终的字解码分布。
注意,这两个词汇表没有交集,
最终的分布
P
(
y
t
)
P(y_t)
P(yt)是两个分布的串联。
3.6 损失函数
损失函数是训练语料库中预测的token 分布
o
t
\boldsymbol{o}_t
ot
和黄金分布
p
t
\boldsymbol{p}_t
pt之间的交叉熵误差。
此外,我们还应用了两个正则化项:
一种在内部存储器上,强制内部情绪状态在解码结束时衰减到零,
另一种在外部存储器上,限制对情感或普通词的选择。
样本
<
X
,
Y
>
(
X
=
x
1
,
x
2
,
…
,
x
n
,
Y
=
y
1
,
y
2
,
…
,
y
m
)
< \boldsymbol { X } , \boldsymbol { Y } > \left(\boldsymbol { X } = x _{ 1 } , x _{ 2 } , \ldots , x _{ n } , \boldsymbol { Y } = y _ { 1 } , y _ { 2 } , \ldots , y _ { m } \right)
<X,Y>(X=x1,x2,…,xn,Y=y1,y2,…,ym)的损失定义如下:
L ( θ ) = − ∑ t = 1 m p t log ( o t ) − ∑ t = 1 m q t log ( α t ) + ∥ M e , m I ∥ (15) L ( \theta ) = - \sum _ { t = 1 } ^ { m } \boldsymbol { p } _ { t } \log \left( \boldsymbol { o } _ { t } \right) - \sum _ { t = 1 } ^ { m } q _ { t } \log \left( \alpha _ { t } \right) + \left\| \boldsymbol { M } _ { e , m } ^ { I } \right\|\tag{15} L(θ)=−t=1∑mptlog(ot)−t=1∑mqtlog(αt)+∥∥∥Me,mI∥∥∥(15)
其中
M
e
,
m
I
\boldsymbol{M}_{e,m}^I
Me,mI是最后步骤
m
m
m处的内部情感状态,
α
t
\alpha_t
αt是选择情感词或通用词的概率,
其中,
q
t
∈
0
,
1
q_t \in {0,1}
qt∈0,1是
Y
\boldsymbol{Y}
Y中情感词或通用词的真实选择。
第二项用于监控选择情感或通用词的概率。
第三项用于确保一旦生成完成,内部情绪状态已被完全表达。
4. 数据准备
由于没有现成的数据来训练ECM,我们首先使用NLPCC情感分类数据集训练情感分类器,然后使用分类器对STC会话数据集(尚、鲁和李2015)进行标注,以构建我们自己的实验数据集。
数据准备过程分为两个步骤:
4.1 构建一个情感分类器
我们在NLPCC数据集上训练了几个分类器,然后选择最好的分类器进行自动标注。
该数据集被用于NLPCC20132和NLPCC2014中具有挑战性的情感分类任务3,
由从微博收集的23105个句子组成。
它被手动标注了8个情感类别:Angry, Disgust, Fear, Happy, Like, Sad, Surprise,Other。
在删除不用的类别(Fear(1.5%),Surprise(4.4%)),
我们有六种情绪类别,既Angry, Disgust, Happy, Like, Sad, Other.
然后,我们将NLPCC数据集按8:1:1的比例划分为训练集、验证集和测试集。
在过滤后的数据集上训练了几个情感分类器,包括基于词典的分类器(我们使用了Xu等人的情感词典),
RNN
\text{RNN}
RNN,
LSTM
\text{LSTM}
LSTM和
Bi-LSTM
\text{Bi-LSTM}
Bi-LSTM。
表2中的结果表明,所有神经分类器的性能都优于基于词典的分类器,其中BiLSTM分类器获得了0.623的最佳准确率。
4.2 用情感注释STC
我们使用最好的分类器Bi-LSTM对STC数据集进行了六种情感类别的标注。
在标注后,我们获得了一个情感标记数据集,
我们称之为情感STC(ESTC)数据集。
表3显示了ESTC数据集的统计数据。
5. 实验
5.1 实现细节
我们使用Tensorflow来实现提出的模型。
编码器和解码器具有两层GRU结构,每层具有256个隐藏单元,并且分别使用不同的参数集。
单词嵌入大小设置为100。词汇量限制在40,000个以内。
情感类别的嵌入大小设置为100。
内部存储器是大小为
6
×
256
6\times 256
6×256的可训练矩阵,
而外部存储器包含通用词和情感词(情感词具有不同的标记)
的40000个词的列表。
为了产生不同的响应,我们在解码过程中采用波束搜索,将波束大小设置20,然后在去除UNKs,未知词的响应后,根据生成概率对响应进行重新排序。
我们采用小批量的随机梯度下降(SGD)算法。批次大小和学习率分别设置为128和0.5。
为了加快训练过程,我们在STC数据集上训练了一个带有预训练单词嵌入的seq2seq模型。
然后我们在ESTC数据集上训练我们的模型,使用由预先训练好的seq2seq模型的参数初始化的参数。
我们运行了20个epoches,每个模型的训练阶段在Titan X GPU机器上花费了大约一周的时间。
5.2 基线
如上所述,本文是首次研究大规模会话生成中的情感因素。
我们没有找到与本文密切相关的基线。
AffectLM(Ghosh et al.2017)不能成为我们的基准,因为它无法针对同一帖子生成不同情绪的响应。
相反,它只是简单地复制和使用输入帖子的情感。
此外,它严重依赖语言资源,需要手动调整参数。
尽管如此,我们还是选择了两个合适的基准:
一个通用的seq2seq模型(Sutskever,Vinyals和Le 2014),以及我们创建的情感类别嵌入模型(EMB),其中情感类别被嵌入到向量中,该向量用作每个解码位置的输入,类似于用户嵌入(Li等人。2016b)。
由于情感类别是情感表达的高级抽象,这是我们模型的合适基线。
5.3 自动评估
指标: 正如(Liu et al.。2016年),BLEU不适合测量会话生成,因为它与人类判断的相关性较低。
我们在内容层面(内容是否相关,是否符合语法)采用困惑度对模型进行评估。
为了在情感层面对模型进行评价,我们采用情感准确度作为情感分类器生成的反应的预期情感类别(作为模型的输入)与预测情感类别之间的一致性。
结果: 结果列於表四。
由此可见, ECM \text{ECM} ECM在情感准确度上取得了最好的表现,在困惑度方面的表现好于 Seq2Seq \text{Seq2Seq} Seq2Seq,但逊于 EMB \text{EMB} EMB。
这可能是因为
ECM
\text{ECM}
ECM的损失函数不仅在困惑度上受到监督,
而且在通用词或情感词的选择上也受到监督(见公式(15))。
在实践中,情感准确性比困惑更为重要,因为生成的句子已经很流利,语法也很好,困惑度达到68.0。
为了研究不同模块的影响,我们进行了消融试验,每次从
ECM
\text{ECM}
ECM中取出三个模块中的一个。
可以看出,没有外部存储器的
ECM
\text{ECM}
ECM在困惑度上获得了最佳的性能。
通过引入内部记忆,我们的模型可以在不牺牲语法性的情况下生成响应,在内部记忆中,模块可以动态地平衡语法和情感之间的权重。
在删除外部记忆后,情感准确性下降最多,这表明外部记忆会显著选择情感词,从而导致较高的情感准确性。
请注意, Seq2Seq \text{Seq2Seq} Seq2Seq的情感准确性极低,因为它针对不同的情感类别产生相同的响应。
5.4 手动评估
为了从内容和情感角度更好地理解生成的响应的质量,我们进行了手动评估。
给定一个帖子和一个情感类别,将从所有模型生成的响应随机呈现给三个人类注释者。
指标
注释者被要求根据内容(等级为0,1,2)和情感(等级为0,1)来对响应进行评分,并说明任何两个系统之间的偏好。
内容的定义是响应是否适当且自然,是否可能由人产生,这是研究人员和对话性任务广泛采用的度量标准,如(Shang,Lu和Li,2015年)。
情感被定义为响应的情感表达是否与给定的情感类别一致。
注释统计: 我们从测试集中随机抽取了200个帖子。
对于每个模型,我们总共生成了1200个响应:
对于
Seq2Seq
\text{Seq2Seq}
Seq2Seq,我们为每个帖子生成了前6个回复,
对于
EMB
\text{EMB}
EMB和
ECM
\text{ECM}
ECM,我们生成了对应于6个情绪类别的最高响应。
我们计算了Fleiss‘kappa(Fleiss 1971)来衡量评分者之间的一致性。
Fleiss在Content和Emotion上的kappa分别为0.441和0.757,分别表示“中度认同”和“实质性认同”。
结果: 结果如表6所示。
具有所有配件的 ECM \text{ECM} ECM在这两个指标上都比其他方法好 (2-tailed t t t检验, p < 0.05 p<0.05 p<0.05对于内容, p < 0.005 p<0.005 p<0.005对于情感)。
整合内部存储器和外部存储器模块后,与 Emb \text{Emb} Emb相比, ECM \text{ECM} ECM在Emotion中的性能得到了改善,这表明我们的模型可以生成更明确的情绪表达。
此外,内容的表现从 Emb \text{Emb} Emb的1.256提高到 ECM \text{ECM} ECM的1.299,这表明 ECM \text{ECM} ECM具有控制情绪权重并生成适合内容的响应的能力。
在所有情感类别中,
ECM
\text{ECM}
ECM在情感上的表现都优于其他方法。
然而,由于没有足够的训练数据用于这两个类别,
ECM
\text{ECM}
ECM在内容上的得分不如在
Disgust,Angry
\text{Disgust,Angry}
Disgust,Angry类别上的基线。
例如,在我们的ESTC数据集中,
Angry
\text{Angry}
Angry类别有234,635个回复,远远少于其他类别。
为了评估$\text{ECM}是否能够生成不仅在内容上而且在情感上都合适的响应,我们在表5中给出了同时考虑内容和情感得分的结果。
我们可以看到,在 ECM \text{ECM} ECM产生的回复中,27.2%的回复内容得分为2,情绪得分为1, Emb \text{Emb} Emb只有22.8%, Seq2Seq \text{Seq2Seq} Seq2Seq只有9.0%。
这表明 ECM \text{ECM} ECM在内容和情感两个方面都能更好地产生高质量的回复。
偏好测试: 此外,情感模型(
Emb, ECM
\text{Emb, ECM}
Emb, ECM)
比
Seq2Seq
\text{Seq2Seq}
Seq2Seq更受青睐,并且相对于其他方法,
ECM
\text{ECM}
ECM也受关注(2尾
t
t
t检验,
p
<
0.001
p<0.001
p<0.001)如表7所示。
与 Seq2Seq \text{Seq2Seq} Seq2Seq模型生成的通用响应相比,多样化的情感响应对用户更具吸引力。
而且,由于情感表达的明确性和内容的适当性, ECM \text{ECM} ECM更受青睐。
5.5 情感互动分析与案例研究
图5可视化了 ESTC \text{ESTC} ESTC数据集中帖子和回复的情感交互模式。
情感交互模式 (EIP) 定义为
<
e
p
,
e
r
>
< e _ { p } , e _ { r } >
<ep,er>,
帖子与其回复的情感类别对。
EIP的值是条件概率 P ( e r ∣ e p ) = P ( e r , e p ) / P ( e p ) P \left( e _ { r } | e _ { p } \right) =P \left( e _ { r } , e _ { p } \right) / P \left( e _ { p } \right) P(er∣ep)=P(er,ep)/P(ep)。
标记为深颜色的EIP比标记为浅颜色的EIP出现的频率更高。从图中,我们可以得出一些结论。
首先,频率高的EIP表明,给定一个帖子的情感类别后,存在一些主要的响应情感。
例如,当帖子表达Happy时,回应的情绪通常是Like或Happy。
其次,对角线模式表示情感共情,这是情感互动的一种常见类型。
第三,如前所述,帖子还有其他EIP,表明对话中的情感交互非常多样。
请注意,Other类比其他类具有更多的数据(请参见表3),这表明EIP由于数据偏见和情感分类错误而偏向于此类(图5的第一列)。
我们在图4中提供一些示例。
可以看出,对于一个给定的帖子,有多个情感类别适合它在对话中的反应。
Seq2Seq
\text{Seq2Seq}
Seq2Seq会产生一种随机的情绪回复。
ECM
\text{ECM}
ECM可以根据每个情感类别产生带情感的回复。
所有这些回应都适合帖子,表明存在多个EIP,以及为什么应该将情感类别指定为我们系统的输入。
我们可以看到,如果预先指定的情感类别和帖子的情感属于频率高的EIP之一,
ECM
\text{ECM}
ECM就可以产生适当的回复。
彩色单词表示ECM可以通过应用外部存储器显式表达情感,该外部存储器可以在解码过程中选择通用(非情感)或情感词。
对于低频EIP,例如
<
Happy, Disgust
>
,
<
Happy, Angry
>
< \text { Happy, Disgust } >, <\text{Happy, Angry}>
< Happy, Disgust >,<Happy, Angry>
如图4的最后两行所示,由于缺乏训练数据和/或情绪分类器造成的错误,反应不适合情绪类别。
6. 结论与未来工作
在本文中,我们提出了情感聊天机(ECM)来建模情感在大规模对话生成中的影响。
提出了情绪因素的三种建模机制,即情绪类别嵌入机制、内部情绪记忆机制和外部记忆机制。
客观评价和人工评价表明,ECM不仅能产生内容上合适的反应,而且能产生情感上合适的反应。
在未来的工作中,我们将探索与ECM的情感互动:
模型应该为响应决定最合适的情绪类别,而不是指定一个情绪类别。
然而,这可能是具有挑战性的,因为这样的任务取决于主题、上下文或用户的情绪。