
论文链接:https://arxiv.org/pdf/2007.04032.pdf
代码链接:https://github.com/RUCAIBox/KGSF
1、摘要
会话推荐系统(CRS)旨在通过交互式对话向用户推荐高质量的项目。尽管已为CRS做出了一些努力,但仍有两个主要问题有待解决。首先,对话数据本身缺少足够的上下文信息,无法准确地了解用户的偏好。第二,自然语言表达与项目级用户偏好之间存在语义鸿沟。
为了解决这些问题,我们结合了面向单词和面向实体的知识图谱(KG)以增强CRS中的数据表示,并采用互信息最大化来对齐单词级和实体级的语义空间。基于对齐的语义表示,我们进一步开发了用于KG增强的推荐程序组件,以及可以在响应文本中生成信息丰富的关键字或实体的KG增强的对话框组件。大量的实验证明了我们的方法在推荐和会话任务上都能产生更好的效果。

上图展示了一个具体的实例,红色单词表示一些重要的上下文信息,蓝色单词代表电影名称。
2、KGSF模型
整体模型框架如下:

主要包括4个部分:对话信息、基于知识图谱的语义融合(项目图谱DBpedia和单词图谱ConceptNet)、推荐系统和会话系统等。
2.1、编码外部知识图谱
2.1.1、编码面向单词的知识图谱
使用的知识图谱为ConceptNet,首先从整个知识图谱中筛选出与对话相关的单词,组成一个小型知识图谱,然后使用GCN学习单词节点的嵌入表示,即V(l)=ReLU(D−21AD−21V(l−1)W(l))这里A代表邻接矩阵,忽略了知识图谱中的关系信息。这样,每个单词w得到一个dw维的向量表示vw。
2.1.2、编码面向项目的知识图谱
使用的知识图谱为DBpedia,首先从整个知识图谱中筛选出与对话内容相关的项目实体,组成一个小型知识图谱,然后使用R-GCN学习单词节点的嵌入表示,即ne(l+1)=σ(r∈R∑e′∈Eer∑Ze,r1Wr(l)ne′(l)+W(l)ne(l))这里Eer代表实体e在关系类型r下的邻居实体集合。这样,每个实体e得到一个de维的向量表示ne。
2.2、通过互信息最大化融合两个知识图谱
在以上的两个部分,我们分别得到了单词的表示vw和实体的表示ne,为了进行信息融合,我们对同时出现在一个对话中的单词和项目实体进行编码,使他们在隐空间中尽可能地接近,即g(e,w)=σ(ne⊤⋅T⋅vw)然后最大化互信息,即优化下面的式子:MI(X,Y)≥EP[g(x,y)]−EN[g(x′,y′)]这里EP和EN分别表示正负样本。
由于在一个对话中有大量的单词-实体对,如果对每一个都这样计算,复杂度较高,因此,提出一个super token w~来编码整个对话中的所有单词的融合表示,使用的方法为自注意力机制:vw~=V(C)⋅αα=softmax(b⊤⋅tanh(WαV(C)))这里,V(C)表示出现在一个对话C中的所有上下文单词的嵌入表示。出现在同一个对话中的项目的表示也是采用类似的方法。
2.3、KG增强的推荐模块
根据自注意力机制,我们可以得到在一个对话C中的所有上下文单词的表示V(C)以及所有出现的项目的表示N(C),接下来对这两部分进行融合,得到用户u的偏好表示pu:pu=β⋅V(C)+(1−β)⋅N(C)β=σ(Wgate[V(C);N(C)])得到用户的偏好表示之后,把项目集中的某个项目i推荐给用户u的概率为Prrec(i)=softmax(pu⊤⋅ni)整个损失函数为Lrec=−j=1∑Ni=1∑M[−(1−yij)⋅log(1−Prrec(j)(i))+yij⋅log(Prrec(j)(i))]+λ∗LMIM其中,j为对话的索引,i为项目的索引。
2.4、KG增强的应答生成模块
对于用户提出的一个为题,为了生成一个应答,这里采用Transformer模型来形成一个encoder-decoder框架。为了在decoder中生成应答,我们在子注意力模块之后加入两个基于KG的注意力层,以此来融合外部KG信息:

使用copy mechanism来增强生成的应答的质量:Pr(yi∣y1,⋯,yi−1)=Pr1(yi∣Ri)+Pr2(yi∣Ri,G1,G2)损失函数为Lgen=−N1t=1∑Nlog(Pr(st∣s1,⋯,st−1))这里N代表在一个对话C中的对话轮数,我们为C中的每个句子st分别计算损失。
整个算法流程为:

3、实验
实验数据集为REcommendations through DIALog(REDIAL),划分训练集、验证机和测试集的比例为8:1:1。
推荐任务实验结果:

有无MIM loss对实验结果的影响:

对话生成任务实验结果:

消融实验:

case study:

4、展望
- 融合更多的外部信息,比如,用户的统计特征等。
- 如何生成高质量的应答。
- 如何融入用户-项目交互信息。