前沿重器[39] | 对话式推荐系统——概念和技术点

news2024/10/7 16:17:23

前沿重器

栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经是20年的事了!)

2023年文章合集发布了!在这里:又添十万字-CS的陋室2023年文章合集来袭

往期回顾

  • 前沿重器[34] | Prompt设计——LLMs落地的版本答案

  • 前沿重器[35] | 提示工程和提示构造技巧

  • 前沿重器[36] | ACL23-基于检索的大语言模型-报告阅读

  • 前沿重器[37] | 大模型对任务型对话的作用研究

  • 前沿重器[38] | 微软新文query2doc:用大模型做query检索拓展

对话式推荐系统(Conversational Recommender Systems,CRS)本身并不是一个新的东西,比较有名的综述,早在21年就已经有了,众所周知,当一个领域开始有综述,说明该领域已经有一定研究基础,甚至开始成熟了,但时至今日,借着大模型的东风,对话系统被包装为各种产品,CRS也有开始被拿出来尝试的迹象,因此,本文借助这篇综述,给大家介绍一下CRS吧。

此处也给大家推荐这种学习方法,要了解一个领域,从综述下手是非常高效的,不仅了解了基本概念,也了解具体的研究现状,甚至可能是研究方向, 另一个比较好的材料就是学位论文的相关知识这块,要是想入门,这两个材料可以帮助你快速了解。

综述论文:Advances and Challenges in Conversational Recommender Systems: A Survey。参考材料:

  • 完整论文看这个:https://www.sciencedirect.com/science/article/pii/S2666651021000164

  • https://blog.csdn.net/weixin_40423032/article/details/118230434

  • https://zhuanlan.zhihu.com/p/455851322

  • https://www.jianshu.com/p/5520dbfa39d4

另外,要真正理解CRS,是需要对推荐系统以及对话系统都有一定了解的,推荐系统本身并非我之擅长,但对话系统是有一定了解的,有兴趣大家可以看看我这篇文章,希望能帮大家建立起对对话系统的基本概念(前沿重器[21-25] | 合集:两万字聊对话系统)。

本文不会严格按照论文来进行讨论,本文更倾向于讨论CRS的概念以及关键的技术点。

懒人目录:

  • 概念

  • CRS的组成和常用方法

  • 最简CRS在线流程

概念

我们先从常规的推荐系统开始,例如知乎的文章推荐、淘宝的商品推荐等,这些推荐系统是基于用户的行为,为用户推荐可能合适的物料,这个领域想必大家也知道,已经有了大量的研究工作,同时借助业界应用的经验,有了大量的成果。

而CRS,是在这种常规推荐系统下,演化而来的一种更特别的推荐系统,通过对话交互了解用户的偏好而进行产品推荐就可以被称为对话式推荐系统了,来看看论文的定义:

A recommendation system that can elicit the dynamic preferences of users and take actions based on their current needs through real-time multiturn interactions using natural language. 

———————————————— 

一种推荐系统,可以通过使用自然语言实时多轮交互,从而激发用户的动态偏好,并根据用户的当前需求采取行动

先来看看例子:

c21c61d9d7c37bb420a1a1df0c5c0838.png

从这个例子分析,CRS从产品形态上,相比常规推荐系统具有的最大的优势,就是具备可交互性,这种可交互性,能为推荐系统如下非常重要的信息:

  • 直接获取用户的显性需求,以便进行更加精准的推荐。

  • 交互意味着还能够获取反馈,反馈能为目前对话推荐以及未来的推荐提供信息支持。

  • 用户体验的提升,对话过程中能更敏感地更新需求,精准获取结果。

  • 一般的推荐系统可能只能获取用户的选择,然而CRS借助对话能力,可以深入挖掘需求或者兴趣的原因,例如好看的封面和精彩摘要、生活需求等,都可以挖掘,还能反向挖掘出对某些物料感兴趣的关键点。

CRS的组成和常用方法

CRS本身的结构非常好理解,其实就是C-对话和R-推荐,在论文中,是把C-对话这个模块又拆了一层,拆成了NLP部分和对话策略部分,最终形成了3个组件:

  • user interface:负责理解用户会话和生成回复,即NLU和NLG的部分,是面向用户的第一步和最后一步,所以被称为用户接口。

  • conversation strategy module:负责对话策略部分,例如进行挖掘挖掘用户兴趣还是推荐的决策等。

  • recommendation engine:负责筛选产品进行推荐,论文强调还指出了Exploration and Exploitation (E&E)的问题。

用户接口

首先是NLP部分,即负责用户会话和生成回复的部分。

理解这块,这块方案上其实并不算难,都是传统NLP这一套,理解用户会话的任务其实就是意图识别和槽位抽取,意图识别主要识别的是用户想要做的事,这个是直接影响对话策略的,常规的意图可以考虑这些(来源于一篇论文,不过一时找不到了,有找到的小伙伴欢迎在评论区补充):

  • 开场白-开始一场对话

  • 闲聊-和推荐目标无关的话术

  • 提供偏好-和系统分享自己的偏好

  • 修改偏好-修改开始或之前提及的偏好

  • 索要推荐-希望从系统中获取推荐结果

  • 获取解释-希望知道推荐理由

  • 获取详情-获取推荐物料的详情

  • 推荐反馈-对推荐结果进行反馈

  • 重启-重新开始对话

  • 接受推荐-结果某一个推荐结果

  • 结束语-结束一场对话

而槽位提取,更多是捕捉用户兴趣,这个做的糙一点其实就直接提取标签(关键词抽取)就行,复杂的就需要做命名实体识别了。当然也有隐式的向量化来整,这个方法也是有的。

至于生成这块,需要配合对话策略决策和推荐模块的返回结果,进行组装和生成,一般而言需要考虑如下信息输入:

  • 语言回复话术:例如打招呼之类的,那肯定是需要有对应的回复的。

  • 推荐结果:物料的结构化信息。

  • 其他对话策略,例如追问、道歉等的指令。

把这些内容梳理整理完,就是生成了,此处需要注意,这里不只是模型生成,很多内容其实是可以配置化甚至写死的,一般而言,文本是会有两个来源:

  • 模型生成:特定的话术,通过模型生成,例如道歉、追问、推荐理由等回复,这块非常适合用大模型了。

  • 配置话术和话术模板:例如物料的解释,再例如开场白回复等,其实完全可以直接拼接或者配置,就完全可用了。

对话策略模块

其实我个人更想把这一步叫做对话管理,这一步确实是对话系统,尤其是多轮对话的关键模块了。

  • DST(Dialogue State Tracer)记录历史对话内容,例如关键的槽位意图,在CRS里面就是用户提及的兴趣偏好,以及各种反馈和推荐信息。

  • DP(Dialogue Policy)根据DST,给出对话决策,即下一句应该回什么话,例如该追问、安抚还是给推荐结果,甚至是组合,基本都是由这一步来做的。

而在CRS里面,会有特殊的一步,就是将NLU中提取的槽位、意图转化为用户的兴趣特征,这种信息可能是用户直接对兴趣的描述,例如“我喜欢周杰伦的音乐”,亦或者是用户的显式选择反馈,例如直接点击了“稻香”,这块内容我的观点和作者一致,就是放在DST里面做,当然也可以放在NLU里,这个问题不大。

特别地,这块论文中提及了一些兴趣抽取与挖掘的方案,这块大家有兴趣可以直接看论文了解。

推荐模块

这里独立出来的推荐模块,其实和常规的推荐系统整套就比较类似了,论文里面着重提及了EE(exploration-exploitation)问题,常规推荐系统中有个重要的权衡,即探索还是利用,一方面,我们需要时刻捕捉用户的兴趣,另一方面还要给用户推荐合适的产品,没有前者,我们无法知道用户兴趣,没有后者推荐系统就没有意义,但是推荐的位置是固定的,所以此时需要权衡。这是推荐系统的问题之一吧,不过肯定不是全部,此处大家有兴趣可以看看论文,尤其是在加入对话系统之后这个问题本身性质的变化和解决方案的变化,都挺有意思的。但因为本身和CRS的架构关系不大,所以我就不赘述了。

最简CRS的在线流程

这里给出一个基于个人理解的最简单的对话式推荐系统的在线推理流程吧,即要建设一个CRS,最简单的版本需要哪些处理模块。

  • 用户输入

  • NLU模块:

    • 意图识别、槽位提取。

  • 对话管理模块:

    • 记录对话内容。

    • 对话决策:

      • 通用回复,如打招呼、再见。

      • 追问信息(索要偏好)

      • 提供推荐(给出推荐结果)

  • 推荐系统:

    • 兴趣梳理和特征工程。

    • 对话决策为【提供推荐】时:

      • 召回:基于用户兴趣,从多个渠道路径进行多路召回。

      • 排序:多路召回的合并和排序。

    • 对话决策为【追问信息】时:

      • 确认需要追问的内容

  • NLG模块:

    • 对话决策为【提供推荐】:

      • 梳理推荐结果,结构化返回。

    • 对话决策为【追问信息】:

      • 根据需要追问的内容构造回复话术。

    • 对话决策为【通用回复】:

      • 查询通用话术回复。

系统架构上,可以参考这个服务推理流程。

fed4444e108f77c73fb9e41ab8a9d1c6.png

  • Center是中控模块,负责管理整个推理流程。

  • 首先请求NLU,负责做query理解。

  • 然后请求DM模块,DM模块需要结合历史信息和本轮信息,一方面梳理对话内容,形成对话记录,这个需要重新写回DST,另一方面把对话决策返回到center中。

  • RECOMMEND则开始进行推荐,此处还依赖之前有的用户画像以及物料画像。

  • NLG则根据对话决策和推荐结果返回回复话术。

补充说一下,这里可能会有人问到是否可以把DM抽出来做center来控制整轮流程,其实前期服务比较简单的时候可以这么做,但是后期逐渐复杂后还是需要形成这样的结构,看时间阶段吧,后期毕竟DM模块内其实有很多业务逻辑,尤其是对话决策这块,可能涉及模型的分类、排序啥的。

f636159cc14c18be2d486e705be68835.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P1单片机定时器配置及定时器中断——C51(超详细)

目录 1. 简介 1.1 概念解读 1.2 定时器怎么定时 1.什么是晶振 2.什么是时钟周期 3.什么是机器周期 4.加1经过了多少时间 1.3 定时器编程 1.如何算出10ms定时器的初值(TL0 TH0) 2.关于TCON ,怎么知道爆表 3.怎么开始计时(TR0) 4.定时器使用是有很多种模式的&#xf…

sylar高性能服务器-配置(P10-p11)代码解析+调试分析

文章目录 p9:配置模块搭建一、ConfigvarBase二、ConfigVar三、Config四、小结 p10:YAML的使用一、安装yaml-cpp二、使用yaml-cpp三、代码解析 P11:YAML与日志的整合一、方法函数二、代码调试三、test_config结果四、小结 p9:配置模…

2023年全球软件开发大会(QCon广州站2023)-核心PPT资料下载

一、峰会简介 本次峰会包含:泛娱乐时代的边缘计算与通讯、稳定性即生命线、下一代软件架构、出海的思考、现代数据架构、AGI 与 AIGC 落地、大前端技术探索、编程语言实战、DevOps vs 平台工程、新型数据库、AIGC 浪潮下的企业出海、AIGC 浪潮下的效能智能化、数据…

联邦边缘学习中的知识蒸馏综述

联邦边缘学习中的知识蒸馏综述 移动互联网的快速发展伴随着智能终端海量用户数据的产生。如何在保护数据隐私的前提下,利用它们训练出性能优异的机器学习模型,一直是业界关注的难点。为此,联邦学习应运而生,它允许在终端本地训练并协同边缘服务器进行模型聚合来实现分布式机器…

C++字符串插入函数(insert)

1.在下标为n处插入y #include <iostream> #include <algorithm> #include <string> using namespace std;string x,y; int n;int main() {cin>>x>>y>>n;x.insert(n,y); //在下表为n处插入ycout<<x<<endl;return 0; }2…待续

十几个软件测试实战项目【外卖/医药/银行/电商/金融】

项目一&#xff1a;ShopNC商城 项目概况&#xff1a; ShopNC商城是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城&#xff0c;系统PC后台是基于ThinkPHP MVC构架开发的跨…

【TiDB理论知识10】TiDB6.0新特性

新特性 Placement Rules in SQL 小表缓存 内存悲观锁 Top SQL TiDB Enterprise Manager 一 Placement Rules in SQL Placement Rules in SQL 之前会遇到的问题 比如 北京的业务需要访问 T2 和 T3表 &#xff0c;但是T3表的数据在纽约 纽约的业务需要问访T4 T5 T6表…

基于PaddleNLP的深度学习对文本自动添加标点符号(一)

前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号又在古文识别语音识别上有重大应用。 基于此&#xff0c;本文开始讲解基于PaddleNLP的深度学习对文本自动添加标点符号…

js 有关递归简单介绍

递归&#xff1a;指调用自身的函数 重点&#xff1a;递归函数必须有可以终止递归调用的语句&#xff0c;否则会导致内存溢出 递归的性能不好&#xff0c;因为在递归终止前&#xff0c;JavaScript引擎会为每一次递归分配一块内存以存储栈帧&#xff0c;随着递归的深入&#xff…

【C语言】结构体实现位段

引言 对位段进行介绍&#xff0c;什么是位段&#xff0c;位段如何节省空间&#xff0c;位段的内存分布&#xff0c;位段存在的跨平台问题&#xff0c;及位段的应用。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;…

力扣每日一题----2008. 出租车的最大盈利

这题我们是怎么思考的呢&#xff1f; 已知有乘客最多30000个&#xff0c;有最多100000个地点&#xff0c;那么通过算法时间复杂度&#xff0c;不可能是O(n^2), 那么我们就可以去看题目&#xff0c;题目又是最多盈利多少元&#xff1f;那么很容易联想到动态规划&#xff0c;并…

9:00面试,9:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到12月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…

支持向量机模型(超详细,含案例代码)

什么是支持向量机&#xff1f; 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种在机器学习领域中用于分类和回归分析的强大算法。它是一种监督学习算法&#xff0c;其目标是在特征空间中找到一个超平面&#xff0c;将不同类别的数据点分开&…

Axure元件的介绍使用与登录界面以及个人简历的绘制

目录 一.Axure元件介绍 1.1.简介 1.2.常见的元件 1.3.元件的操作 二.基本元件的使用 2.1.矩形和圆形 2.2.图片 2.3.文本元件 2.4.热区 2.5.线段元件 三.表单型元件的使用 3.1.文本框 3.2.文本域 3.3.下拉列表 3.4.列表框 3.5.单选按钮 3.6.复选框 四.菜单和表…

2007-2022年全国各省数字经济政策支持力度、ZF工作报告数据经济词频数据

2007-2022年全国各省数字经济政策支持力度、ZF工作报告数据经济词频数据, 1、时间&#xff1a;2007-2022年 2、范围&#xff1a;31省市 3、指标&#xff1a;行政区划代码、年份、地区、所属地域、文本总长度、仅中英文-文本总长度、文本总词频-全模式、文本总词频-精确模式、…

dockerfile基于NMP+wordpress创建镜像

内部通信地址 nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php 1、创建单独目录 2、创建容器的自定义网络 docker network create --subnet172.111.0.0/16 --opt "com.docker.network.bridge.name"&quo…

19、命令模式(Command Pattern,不常用)

命令模式&#xff0c;将一个请求封装为一个对象&#xff08;命令&#xff09;&#xff0c;使发出请求的责任和执行请求的责任分割开&#xff0c;有效降低系统的耦合度。这样两者之间通过命令对象进行沟通&#xff0c;这样方便将命令对象进行储存、传递、调用、增加与管理。命令…

磁力计LIS2MDL开发(1)----轮询获取磁力计数据

磁力计LIS2MDL开发.1--轮询获取磁力计数据 概述视频教学样品申请源码下载通信模式速率生成STM32CUBEMX串口配置IIC配置CS设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置速率启用偏移消除开启温度补偿设置为连续模式轮询读取数据主程序演示 概述 本文将介绍如何使…

明道云在戴斯克,从业务整合到高效管理的秘诀

内容来自演讲&#xff1a;付震东 | 北京戴斯克商务有限公司 &#xff5c;数字化负责人 摘要 本文介绍了明道云在戴斯克公司的应用以及数字化转型过程中所起的作用。戴斯克公司使用明道云后&#xff0c;实现了系统落地速度、工作效率、决策方法和工作意识的提升。通过不断抽象…

集成开发之如何用好明道云

内容来自演讲&#xff1a;张嵩 | 苏州睿能科技有限公司 | 公司负责人 摘要 这篇文章介绍了作者所在公司如何利用明道云进行集成开发&#xff0c;并分享了四个实际案例。在第一个数字化实验室项目中&#xff0c;该公司使用明道云取代现有的STARLIMS商业软件&#xff0c;并实现…