夺冠 or 姜子牙?ChatBot帮你搞定:基于话题引导的对话推荐系统


夺冠 or 姜子牙?ChatBot帮你搞定:基于话题引导的对话推荐系统文章插图

  • 论文标题:Towards Topic-Guided Conversational Recommender System
  • 论文来源:COLING 2020
  • 论文链接:
  • 数据集链接:
对话推荐系统(conversation recommender system, 以下简称CRS)旨在通过交互式的对话给用户推荐高质量的商品 。 为了搭建一个高质量的CRS , 高质量的数据集至关重要 。 现有的数据集往往存在以下问题:
  1. 没有考虑用户自身的需求 , 直接就给出推荐 , 缺乏系统主动引导用户从非推荐场景过渡到推荐的过程;
  2. 没有考虑用户的个性化信息 , 如喜好的话题、购买过的商品等等 。
这些问题导致对话推荐的数据集与实际应用场景存在一定差距 , 依此构建的CRS也就很难投入实际应用 。
为了解决上述问题 , 本文提出了一个电影领域的对话推荐数据集TG-ReDial (Recommendation through Topic-Guided Dialog) 。 它包含1万个完整的对话和近13万条语句 , 加入了话题线索以实现将用户引导至推荐场景这一语义的自然转移 , 并且采用半自动的方式构建 , 保留了用户真实的个性化信息(如交互历史 , 偏好主题) , 使得人工标注过程更加合理可控 。
基于TG-ReDial , 本文提出了一个新任务 , 基于话题引导的对话推荐 , 并且基于目前最佳的预训练模型给出了相应的解决方法 。 实验表明了该方法在话题预测、物品推荐和回复生成三个子任务上的有效性 。
1 数据集概况
TG-ReDial的统计数据见下表:
夺冠 or 姜子牙?ChatBot帮你搞定:基于话题引导的对话推荐系统文章插图
TG-ReDial中的每段对话包含了丰富的话题 , 平均一段对话涉及8次话题转移 , 提及3部电影 , 平均语句长度达到19个单词 , 超出了已有的CRS数据集 。
此外 , 大多数现有的数据集主要关注冷启动场景 , 缺少历史交互数据 , TG-ReDial则提供了用户的profile和丰富的观影历史 。
夺冠 or 姜子牙?ChatBot帮你搞定:基于话题引导的对话推荐系统文章插图
我们从豆瓣上收集了真实的观影记录和电影评论 , 从中构造出user profile(用户偏好的话题)和用户的历史交互信息;在ConceptNet[1]这样一个知识图谱上找出连接所有电影的话题 , 作为话题转移序列;从豆瓣语料[2]和电影评论中进行检索并加以人工润色 , 得到最终的对话 。 可以看到 , 用红色和紫色标出的话题引导对话从闲聊自然转移到推荐 , 充分考虑到用户需求 , 符合真实的对话推荐场景 。
总结一下 , TG-ReDial提供了这样几个属性:
  • 对话
  • 话题转移序列
  • user pro?le(用户偏好的话题)
  • 用户交互序列(观影历史)
文章最后给出了一段中文对话样例供大家参考 , 看AI如何从考驾照聊到战争片 。
2 数据集构建
夺冠 or 姜子牙?ChatBot帮你搞定:基于话题引导的对话推荐系统文章插图
收集用于推荐的电影我们从豆瓣上收集了真实的用户观影记录 。 从网站提供的标签(如电影的类别、导演和主演)和电影评论中提取到的高频关键词这两者中筛选出每部电影的标签 , 据此将整个观影序列划分成若干个至少拥有一个相同标签的子序列 , 每个子序列对应一段对话 , 平均每个用户参与了4到5段对话 , 根据用户对每部电影的评分来决定该用户是否会接受这部电影 。
创建话题序列所有对话的初始话题都设定为greeting(打招呼) , 从下一步要推荐的电影选出一个标签作为下一个话题 。 我们采用深度优先遍历的方式在ConceptNet上找出连接这两个话题的最短路径 , 重复上述过程将所有要推荐的电影连接起来 , 连接所有电影的路径就称作话题序列 。