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

2020 年 10 月 16 日 AINLP

论文标题:Towards Topic-Guided Conversational Recommender System

论文来源:COLING 2020

论文链接:https://arxiv.org/abs/2010.04125

数据集链接:https://github.com/RUCAIBox/TG-ReDial

对话推荐系统(conversation recommender system, 以下简称CRS)旨在通过交互式的对话给用户推荐高质量的商品。为了搭建一个高质量的CRS,高质量的数据集至关重要。现有的数据集往往存在以下问题:

  1. 没有考虑用户自身的需求,直接就给出推荐,缺乏系统主动引导用户从非推荐场景过渡到推荐的过程;

  2. 没有考虑用户的个性化信息,如喜好的话题、购买过的商品等等。

这些问题导致对话推荐的数据集与实际应用场景存在一定差距,依此构建的CRS也就很难投入实际应用。

为了解决上述问题,本文提出了一个电影领域的对话推荐数据集TG-ReDial (Recommendation through Topic-Guided Dialog)。它包含1万个完整的对话和近13万条语句,加入了话题线索以实现将用户引导至推荐场景这一语义的自然转移,并且采用半自动的方式构建,保留了用户真实的个性化信息(如交互历史,偏好主题),使得人工标注过程更加合理可控。

基于TG-ReDial,本文提出了一个新任务,基于话题引导的对话推荐,并且基于目前最佳的预训练模型给出了相应的解决方法。实验表明了该方法在话题预测、物品推荐和回复生成三个子任务上的有效性。

数据集概况

TG-ReDial的统计数据见下表:

TG-ReDial中的每段对话包含了丰富的话题,平均一段对话涉及8次话题转移,提及3部电影,平均语句长度达到19个单词,超出了已有的CRS数据集。

此外,大多数现有的数据集主要关注冷启动场景,缺少历史交互数据,TG-ReDial则提供了用户的profile和丰富的观影历史。

我们从豆瓣上收集了真实的观影记录和电影评论,从中构造出user profile(用户偏好的话题)和用户的历史交互信息;在ConceptNet[1]这样一个知识图谱上找出连接所有电影的话题,作为话题转移序列;从豆瓣语料[2]和电影评论中进行检索并加以人工润色,得到最终的对话。可以看到,用红色和紫色标出的话题引导对话从闲聊自然转移到推荐,充分考虑到用户需求,符合真实的对话推荐场景。

总结一下,TG-ReDial提供了这样几个属性:

  • 对话
  • 话题转移序列
  • user profile(用户偏好的话题)
  • 用户交互序列(观影历史)

文章最后给出了一段中文对话样例供大家参考。

数据集构建

收集用于推荐的电影

我们从豆瓣上收集了真实的用户观影记录。从网站提供的标签(如电影的类别、导演和主演)和电影评论中提取到的高频关键词这两者中筛选出每部电影的标签,据此将整个观影序列划分成若干个至少拥有一个相同标签的子序列,每个子序列对应一段对话,平均每个用户参与了4到5段对话,根据用户对每部电影的评分来决定该用户是否会接受这部电影。

创建话题序列

所有对话的初始话题都设定为greeting(打招呼),从下一步要推荐的电影选出一个标签作为下一个话题。我们采用深度优先遍历的方式在ConceptNet上找出连接这两个话题的最短路径,重复上述过程将所有要推荐的电影连接起来,连接所有电影的路径就称作话题序列

此外,为了使得对话与用户偏好相一致,我们采用关键词+模板的方式构造了user profile(用户偏好的话题)。如果当前话题出现在user profile中,就采用这一话题;如果不在,有1/2的概率不采用这一话题,使得对话更加丰富多样。

生成对话

每段对话从闲聊开始,根据话题转移序列逐步转移到最终向用户推荐电影。受到MultiWOZ[3]的启发,我们采用候选驱动的方法,基于开源的豆瓣语料[2]和爬取的电影评论来生成对话。

  • 对于目标之前的话题,我们首先从豆瓣语料中随机检索出20个包含该话题的语句,然后使用一个基于RNN的匹配模型[4]计算相似度,选出和最后一句对话相关性最强的,加以人工润色,作为回复。
  • 对于目标话题,我们需要给出电影的推荐理由。因此我们基于extreme embedding similarity[5]检索出三个最相关的电影评论,人工挑选出一个进行润色,作为回复。

此外,为了保证数据的质量,我们引入了人工检查和Distinct[6]、BLEU[7]这两个评估指标进行筛选。

新任务:基于话题引导的对话推荐

基于TG-ReDial这个数据集,本文提出了一个新任务:基于话题引导的对话推荐

给定user profile ,用户交互序列 ,历史对话 和对应的话题序列 ,要求:

  • 预测下一个话题 或者要推荐的电影
  • 生成关于话题或者是电影推荐理由的正确回复

这些子任务分别对应话题预测,物品推荐和回复生成。实验时,按照8:1:1的比例随机划分生成训练集、验证集和测试集,对三个子任务进行评估。

推荐

这里的关键是得到一个有效的用户表示用于推荐。本文分别使用BERT[8]和SASRec[9]来编码历史对话和用户交互序列,将得到的嵌入进行拼接送入MLP,得到用户的表示:

由此计算出用户和物品的相似度,得到物品被推荐的概率:

其中, 是物品 的嵌入。

与其他基线模型相比,本文提出的模型使用了文本和交互序列这两方面的信息,性能显著优于其他模型。

话题预测

本文分别使用三个BERT[8]来对对话,话题和profile进行编码。对于每个BERT,将对应的文本和候选话题进行拼接,来突出话题的语义。和推荐类似,我们通过计算相似度预测出下一个话题:

其中, 是话题 的嵌入。

可以看出,历史对话和话题序列在话题预测中更为重要。

去掉候选话题后,性能显著下降,验证了加入候选话题的必要性。

回复生成

本文使用了预训练模型GPT-2[10]生成回复:

  • 对于非推荐的情况,我们将下一个话题和历史对话拼接在一起作为输入;
  • 对于推荐的情况,我们将要推荐的电影和历史对话拼接在一起作为输入。

实验中,在PPL,BLEU,Distinct三个自动评测指标的基础上加入了人工评价指标Relevance, Fluency,Informativeness。大多数情况下本文提出的模型是最优的。

总结

本文提出了CRS领域的数据集TG-ReDial,基于该数据集,提出了基于话题引导的对话推荐这样一个新任务并给出了解决方法。实验表明,该方法在三个子任务上的效果优于其他基线方法。

TG-ReDial可以用于个性化的闲聊,目标引导的对话和序列化推荐,未来,我们将在TG-ReDial上探索这些任务。此外,我们还将探索解决基于话题引导的对话推荐这一新任务的其他方法。

附:数据集样例

conv_id : 10002
messages :
  {'local_id': 1, 'role''Recommender''content''你在忙什么呢?'}
  {'local_id': 2, 'role''Seeker''content''我最近打算考驾照呢!会开车真的很方便啊!'}
  {'local_id': 3, 'role''Recommender''content''单纯会开车还不行,还得学会倒车。'}
  {'local_id': 4, 'role''Seeker''content''可别提倒车了,真的是太难了,而且每次要学开车,我就感觉车子下一秒就有可能变成怪物,可能是我恐怖片看多了。'}
  {'local_id': 5, 'role''Recommender''content''哈哈,那我觉得你应该多看看英雄题材,克服一下这种恐惧,要不要我给你推荐?'}
  {'local_id': 6, 'role''Seeker''content''好啊,有那种关于英雄的战争片推荐吗?'}
  {'local_id': 7, 'role''Recommender''content''《细细的红线》可以去看看,上帝保佑那些在战争中失去灵魂的孩子们,这部剧真的很好。'}
  {'local_id': 8, 'role''Seeker''content''唉,如果全人类都反战,那当然不会有战争,这部电影听起来真的不错,我会好好看这一部的。还有什么关于二战的片子推荐吗?'}
  {'local_id': 9, 'role''Recommender''content''你看过《黑皮书》么?我没想到战争和悬疑融合的这么好,是真的好喜欢。'}
  {'local_id': 10, 'role''Seeker''content''可以信任人,但不可信任人性,我听说这部电影很有深意,我看的时候会好好的去参透的。'}
  {'local_id': 11, 'role''Recommender''content''没错,是真的很有深意,很有人生意义,我觉得人生中最重要的感情之中,必不可少的感情是一定会有友谊了,人真的是不能没有朋友啊!'}
  {'local_id': 12, 'role''Seeker''content''对啊,而且我觉得在军队里的友情是最深厚的。因为大家一切并肩作战,一起经历过生死。'}
  {'local_id': 13, 'role''Recommender''content''那我就给你推荐一部战争题材的军队片吧,我觉得《从奴隶到将军》不错,参与战争,首先需要知道为何而战,这部片子真的很有意义,我认为你一定会喜欢的。'}
  {'local_id': 14, 'role''Seeker''content''这部我了解过,电影很长,但一气呵成,线索分明,环环相扣,也是非常值得看的。谢谢你推荐这么多,回头聊,再见啦!'}
goal_path : {2: ['Seeker''谈论''开车'], 3: ['Rec''谈论''倒车'], 4: ['Seeker''拒绝''倒车''谈论''怪物'], 5: ['Rec''谈论''英雄''请求推荐''英雄'], 6: ['Seeker''允许推荐', ['战争''英雄']], 7: ['Rec''推荐电影''细细的红线'], 8: ['Seeker''反馈', None, '请求推荐''二战'], 9: ['Rec''推荐电影''黑皮书'], 10: ['Seeker''反馈', None], 11: ['Rec''谈论''友谊'], 12: ['Seeker''谈论''军队'], 13: ['Rec''请求推荐', ['战争''军队'], '推荐电影''从奴隶到将军'], 14: ['Seeker''反馈,结束', None]}
mentionMovies : {7: ['1292781''细细的红线(1998)'], 9: ['1858802''黑皮书(2006)'], 13: ['1437321''从奴隶到将军(1979)']}
user_id : 559

参考文献

[1] Robyn Speer, Joshua Chin, and Catherine Havasi. 2017. Conceptnet 5.5: An open multilingual graph of general knowledge. In Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence, February 4-9, 2017, San Francisco, California, USA, pages 4444–4451.

[2] Yu Wu, Wei Wu, Chen Xing, Ming Zhou, and Zhoujun Li. 2017. Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots. In Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics, ACL 2017, Vancouver, Canada, July 30 - August 4, Volume 1: Long Papers, pages 496–505.

[3] Pawel Budzianowski, Tsung-Hsien Wen, Bo-Hsiang Tseng, I˜nigo Casanueva, Stefan Ultes, Osman Ramadan, and Milica Gasic. 2018. Multiwoz - A large-scale multi-domain wizard-of-oz dataset for task-oriented dialogue modelling. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing, Brussels, Belgium, October 31 - November 4, 2018, pages 5016–5026.

[4] Ryan Lowe, Nissan Pow, Iulian Serban, and Joelle Pineau. 2015. The ubuntu dialogue corpus: A large dataset for research in unstructured multi-turn dialogue systems. In Proceedings of the SIGDIAL 2015 Conference, The 16th Annual Meeting of the Special Interest Group on Discourse and Dialogue, 2-4 September 2015, Prague, Czech Republic, pages 285–294.

[5] Chia-Wei Liu, Ryan Lowe, Iulian Serban, Michael Noseworthy, Laurent Charlin, and Joelle Pineau. 2016a. How NOT to evaluate your dialogue system: An empirical study of unsupervised evaluation metrics for dialogue response generation. In Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, EMNLP 2016, Austin, Texas, USA, November 1-4, 2016, pages 2122–2132.

[6] Jiwei Li, Michel Galley, Chris Brockett, Jianfeng Gao, and Bill Dolan. 2016. A diversity-promoting objective function for neural conversation models. In NAACL HLT 2016, The 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, San Diego California, USA, June 12-17, 2016, pages 110–119.

[7] Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. 2002. Bleu: a method for automatic evaluation of machine translation. In Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics, July 6-12, 2002, Philadelphia, PA, USA, pages 311–318.

[8] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. BERT: pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, NAACL-HLT 2019, Minneapolis, MN, USA, June 2-7, 2019, Volume 1 (Long and Short Papers), pages 4171–4186.

[9] Wang-Cheng Kang and Julian J. McAuley. 2018. Self-attentive sequential recommendation. In IEEE Interna-tional Conference on Data Mining, ICDM 2018, Singapore, November 17-20, 2018, pages 197–206.

[10] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. 2019. Language models are unsupervised multitask learners. OpenAI Blog, 1(8):9.


由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心


欢迎加入ChatBot技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注Chatbot

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

IEEE游戏汇刊(T-G)发表关于游戏的科学、技术和工程方面的高质量原创文章。本杂志的文章按照IEEE PSPB操作手册(章节8.2.1.C和8.2.2.A)的要求进行同行评审。每一篇发表的文章都由至少两名独立的审稿人通过单盲的同行评审过程进行评审,审稿人的身份作者并不知道,但审稿人知道作者的身份。文章在被接受前筛选是否抄袭。 官网地址:http://dblp.uni-trier.de/db/journals/tciaig/
【KDD 2020】基于互信息最大化的多知识图谱语义融合
专知会员服务
39+阅读 · 2020年9月7日
基于旅游知识图谱的可解释景点推荐
专知会员服务
90+阅读 · 2020年9月4日
专知会员服务
85+阅读 · 2020年1月20日
【工大SCIR】AAAI20 基于Goal(话题)的开放域多轮对话规划
深度学习自然语言处理
6+阅读 · 2020年5月20日
论文浅尝 | 基于图注意力的常识对话生成
开放知识图谱
8+阅读 · 2019年2月5日
【知识图谱】基于知识图谱的用户画像技术
产业智能官
102+阅读 · 2019年1月9日
推荐算法不够精准?让知识图谱来解决
人工智能头条
7+阅读 · 2018年6月4日
快手类推荐系统实践
深度学习与NLP
25+阅读 · 2018年2月8日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
Arxiv
14+阅读 · 2020年1月27日
Arxiv
3+阅读 · 2018年11月12日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
12+阅读 · 2018年1月20日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
【工大SCIR】AAAI20 基于Goal(话题)的开放域多轮对话规划
深度学习自然语言处理
6+阅读 · 2020年5月20日
论文浅尝 | 基于图注意力的常识对话生成
开放知识图谱
8+阅读 · 2019年2月5日
【知识图谱】基于知识图谱的用户画像技术
产业智能官
102+阅读 · 2019年1月9日
推荐算法不够精准?让知识图谱来解决
人工智能头条
7+阅读 · 2018年6月4日
快手类推荐系统实践
深度学习与NLP
25+阅读 · 2018年2月8日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
相关论文
Arxiv
14+阅读 · 2020年1月27日
Arxiv
3+阅读 · 2018年11月12日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
12+阅读 · 2018年1月20日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员