文章目录
前言
本文于2021年由港中大与京东AI研究所联合发布于ACL findings,文章通过情感分析技术来引入与用户情感相同的影评信息,加强推荐和对话的效果。
原文链接:https://arxiv.org/abs/2106.00957v1
代码链接:https://github.com/JD-AI-Research-NLP/RevCore
p.s.这个方向的人好少啊。。有没有道友能私信我相互交流下/(ㄒoㄒ)/
一、原文摘要
现有的对话推荐系统(CRS)在对简短的对话历史和不熟悉的项目进行操作时,通常存在项目信息不足的问题。合并外部信息(例如评论)是缓解这一问题的潜在解决方案。考虑到评论通常提供了大量来自于不同兴趣的用户的体验情感,它们是在信息丰富的对话中提供高质量建议的潜在理想资源。在本文中,我们设计了一个新的端到端框架,即评论增强的对话推荐系统(RevCore),在该框架中,评论无缝地与推荐目标结合在一起,以丰富项目信息,并有助于生成连贯和信息丰富的响应。具体而言,我们提取情感一致的评论,对项目建议执行评论丰富和基于实体的建议,并使用评论关注的编码器解码器生成响应。实验结果表明,我们的方法在推荐和对话响应方面都具有更好的性能。
二、提出动机
- 当前对话推荐领域存在两种问题:①对话中所含信息量太少,导致推荐不准确。②由于数据收集过程缺乏专业性,生成的对话回复信息较少。本文提出了一种评论增强的对话推荐系统RevCore。在电影推荐领域来说,就是给系统额外引入电影的评论信息。简要来说,首先提取对话中用户所谈及的实体(某部电影),同时对用户的话语进行情感分析,在电影评论数据库中找到情感一致的评论后,得到评论集R。评论集R都分别输入推荐模块和对话模块中。
- 作者在文中给出了引入电影评论的原因:①电影评论来源充足,且样本量大,可以针对不同的兴趣因素进行评论;②只列举推荐目标,而不解释推荐理由往往会导致推荐不成功;③单靠用户话语中的信息太少,系统可能不熟悉用户所提到的电影,需要有效的外部知识。
三、网络结构
由上图可知,该模型共分为三个模块:①评论检索模块;②推荐模块;③对话模块
3.1 评论检索模块
首先进行初步检索,初步从对话上下文C中检索用户所提到的item(某部电影),通过情感分析在
R
d
b
R_{db}
Rdb中检索到与用户情感一致的评论
r
r
r。公式(1)为进行情感分析的表达式,
v
v
v表示评论
r
r
r的情感打分,情感分析模块是一个基于Transformer的预测器。最后选出所有和用户情感极性相匹配的评论集
R
R
R。
由于评论往往都是一大段,所以作者根据语境上下文
C
C
C,只保留每条评论中的一部分(一个句子
r
(
c
)
r^{(c)}
r(c),选取评论的有效部分有两种方式:逐单词,逐句子的选择。
- 逐单词的方式,就是在原始评论中随机选择单词来组成句子,虽然牺牲了句子的流畅度,但由于有大量的单词、短语组合,该方式享有很大的可变性。
- 逐句子选取的方式,就是在原始评论中直接随机地选取句子。二次选取评论的表达式如(2)表示,最后生成的 r ( c ) r^{(c)} r(c)也被加入到评论集 R R R。
对于检索到的影评句,合并的方法是将它直接插入到条目所在的句子后面(句子前后直接拼接起来),这样做显然会牺牲回复的流畅性,所以作者无缝地将影评embedding与对话结合起来。
在这一模块中,模块所筛选出的影评句能够对电影进行简要的介绍或解释。
3.2 评论增强的推荐模块(Review-augmented Recommendation)
首先对知识图谱DBpedia采用GCN提取知识图谱里面所有items的embedding,得到embedding集
ε
ε
ε。再根据语境上下文
C
C
C,提取对话中出现的所有实体items,然后在ε中找到这些实体items的embedding,然后拼接成矩阵
E
(
c
)
E^{(c)}
E(c),矩阵行数为实体数
I
(
c
)
I^{(c)}
I(c),列数为
e
m
b
e
d
d
i
n
g
embedding
embedding的维数
d
d
d。
通过自注意力层,把
e
m
b
e
d
d
i
n
g
embedding
embedding矩阵
E
(
c
)
E^{(c)}
E(c)聚合为用户的偏好表示
U
(
c
)
U^{(c)}
U(c),如公式(3)。
公式中的
α
α
α表示每个实体自注意力机制得分向量。将用户偏好表示
u
(
c
)
u^{(c)}
u(c)输入至MLP中,再经过softmax归一化,得到候选实体的概率集
p
p
p。最后选择
p
p
p中概率最大的实体作为待推荐的目标。
最后,计算推荐目标的概率
p
p
p和目标电影类别
p
∗
p^*
p∗之间的交叉熵损失
L
r
e
c
Lrec
Lrec
作者特别提到了,
E
(
c
)
E^{(c)}
E(c)是由对话中的实体和影评中的实体合并而来
3.3 评论增强的对话生成模块(Review-augmented Response Generation)
在encoder部分,首先将上下文C和影评R分别通过两个Transformer,
θ
X
θ_X
θX,
θ
R
θ_R
θR表示Transformer所学习到的参数,生成其对应的embedding:
X
(
c
)
X^{(c)}
X(c),
R
(
c
)
R^{(c)}
R(c)。
在Decoder部分,将
E
(
c
)
E^{(c)}
E(c)和
X
(
c
)
X^{(c)}
X(c),
R
(
c
)
R^{(c)}
R(c)一起作为注意力层的输入。Decoder的注意力层受到KGSF的启发,公式如(8)所示。
其中
Y
i
−
1
Y^{i-1}
Yi−1表示前一时刻decoder的输出,
Y
i
Y^i
Yi表示当前时刻的输出。需通过以下五层网络计算,MHA所表示的注意力机制均由多头注意力机制实现:
A
0
i
A_0^i
A0i的MHA表示自注意力机制,即根据上一时刻输出
Y
(
i
−
1
)
Y^(i-1)
Y(i−1)计算自注意力机制。
A
1
i
A_1^i
A1i的MHA表示交叉注意力机制,将
A
0
n
A_0^n
A0n作为
Q
Q
Q,上下文
X
(
c
)
X^{(c)}
X(c)作为
K
K
K,
V
V
V,计算后得到
A
1
i
A_1^i
A1i。
A
2
i
A_2^i
A2i的MHA表示交叉注意力机制,将
A
1
n
A_1^n
A1n作为
Q
Q
Q,上下文
X
(
c
)
X^{(c)}
X(c)作为
K
K
K,
V
V
V,计算后得到
A
2
i
A_2^i
A2i。
A
3
i
A_3^i
A3i的MHA表示交叉注意力机制,将
A
2
n
A_2^n
A2n作为
Q
Q
Q,上下文
X
(
c
)
X^{(c)}
X(c)作为
K
K
K,
V
V
V,计算后得到
A
3
i
A_3^i
A3i。
最后,将
A
3
i
A_3^i
A3i输入进一个全连接的前馈神经网络FFN,如公式(10)所示,该网络具有ReLU激活层的线性变换,最后就得到了当前时刻的输出
Y
i
Y^i
Yi。
得到了最后一轮的
Y
i
Y^i
Yi后,输入softmax层进行归一化,来预测句子中token的分布。除了聊天任务中要求的对话一致性,在生成的响应中通常包含相关实体和描述性关键词,这里采用了copy mechanism进一步引入词汇偏差,从而生成过程中的信息量。公式(11)表示了生成响应的公式。
P
r
1
P_{r1}
Pr1是词汇的生成概率函数,
Y
i
Y_i
Yi作为输入。G和R表示使用的知识图谱和影评数据。
P
r
2
P_{r2}
Pr2、
P
r
3
P_{r3}
Pr3分别是来自知识图谱的实体和评论的复制概率函数。
公式12表示对话生成模块的损失函数。
s
t
s_t
st表示第t轮生成的对话。
整个模型的训练包括三个步骤:①在评论检索模块中对情感预测概率进行预训练;②通过最小化 L r e c L_rec Lrec来训练推荐组件;③通过最小化 L g e n L_gen Lgen来训练对话组件。
四、实验
实验在Redial数据集上进行,影评数据来源于网站IMDb,每部电影爬取了30条评论。在情感极性方面,做了5分制的星级打分;在提取评论的有效部分时,逐句的筛选是根据每条句子的情感打分所得,而逐词的筛选是设定了合并句子由20个token所组成。
4.1 推荐模块
RevCore(+KG)与所有基线模型对比后,可以看到有了显著提升;且RevCore(-KG)的表现优于引入了两个知识图谱的KGSF,可以得出结论:非结构化的知识图谱虽然会增加实体表示的学习难度,但通过电影评论的引入,推荐效果得到了提升,说明这也是一种有效的改进方法。
4.2 对话模块
表2展示了对话模块的自动评估实验结果,可以看到,与KGSF相比,Dist-n的所有得分都有显著提高,Dist2提高了+0.14,Dist-3提高了+0.11,Dist-4提高了+0.08,这表明RevCore可以有效地生成多样化的回应。RevCore (+KG)取得了与KGSF相当的PPL分数。它证实了我们的主张,即加入影评不会导致生成回应的流畅性下降
表3展示了真人评估的结果,RevCore(有或没有KG)始终优于所有基线,特别是在大幅度提高信息量方面。这进一步证明了我们方法的有效性,也验证了它在数值结果上的优越性。
4.3 消融实验
表4对三个模块进行了消融实验:
①-revCP:移除copy mechanism。
②-revRA:移除decoder中包含评论embedding的注意层
③-revEN:移除评论情感分析模块
所有技术都有助于提高生成多样化话语的最终性能。复制机制和评论注意层在会话多样性中更重要。可能的原因是,这两个组件与decoder阶段直接相关。
4.4 参数讨论
4.4.1 逐词生成评论句的词数
可以看到,生成新评论的单词数在20个时,效果最好。过度引入外部文本可能会抑制原始文本,因此20是一个更好的选择,以保持它们之间的平衡。
4.4.2 影评是如何帮助CRS的
影评句是通过3个阶段才得到的,即首先从R_db数据库中搜索项目匹配的评论集,再根据有效性得分(helpful score)或情感打分对它们进行排序,最后逐词或逐句地构造影评句。
就这三个阶段,作者设置了实验来检查他们作用的效果。
表6中,iCorpus表示不使用相关语料库,“1-2-3”形式中,“1”取C时,表示正确地找到与电影相匹配的影评,取R表示随机地找影评;“2”取H时,表示按照有效性得分对影评进行排序,取S时表示按照情感打分对影评进行排序;“3”取W时,表示逐词的构造影评句,取S时,表示逐句的构造影评句。
可以看到“C-S-S”为最佳组合。通过情感值排序(C-S-S)比通过有用分数排序(C-H-S)在所有指标上都有更好的表现,这证明了使用情感感知评论检索的必要性;句子层面的方式(C-H-S)比单词层面的方式(C-H-W)得到的PPL低,这说明了随机选取单词的构造方式会降低语言流畅度;而iCorpus的对比实验也说明了使用电影评论语料库的重要性
五、结论
本文提出了一个引入了电影评论数据集的对话推荐系统,影评的引入使得推荐模块能够额外提取影评中的实体信息,生成更精准的用户偏好表示;在对话模块,影评的引入可以在文本中列举推荐理由,使得语句包含的信息更丰富。而在推荐模块与对话模块,作者的思想都和KGSF的设计大相径庭。