对话推荐系统CRS论文精读RevCore: Review-augmented Conversational Recommendation

前言

本文于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} Yi1表示前一时刻decoder的输出, Y i Y^i Yi表示当前时刻的输出。需通过以下五层网络计算,MHA所表示的注意力机制均由多头注意力机制实现:
A 0 i A_0^i A0i的MHA表示自注意力机制,即根据上一时刻输出 Y ( i − 1 ) Y^(i-1) Y(i1)计算自注意力机制。
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的设计大相径庭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值