对话交互如何与推荐系统结合

在浅谈语音助手的对话管理与策略制定中提到过导购场景的推荐型bot,这类bot关注的问题在于如何与用户交互以明确用户的意图,以及如何对匹配物品排序和优化交互过程。本文针对这些问题,谈谈关于对话交互与推荐系统的结合。

目录

  • 一、为什么结合对话交互与个性化推荐
    • 1.基于知识的推荐
    • 2.交互过程
    • 3.GUI vs CUI
  • 二、对话交互推荐
    • 1.用户发起的推荐
      • 交互流程
      • 交互优化
    • 2.bot发起的推荐-主动推荐

一、为什么结合对话交互与个性化推荐

电商领域的售前导购场景是对话交互与推荐系统结合的典型场景,处理这类对话的机器人,也称为购物助理或推荐导购bot。
为什么需要将对话交互与推荐系统结合呢?以下通过基于知识的推荐系统的适用场景、交互方法、GUI与VUI交互界面的对比来做说明。

1.基于知识的推荐

推荐系统的业务目标是提升用户的成交转化率。推荐系统在召回阶段,最常使用到的两大基本推荐算法是:协同过滤算法CF、基于内容的推荐算法CB。这两类算法的推荐是由目标用户过去的行为/评分、他的邻居的行为/评分或者两者相结合所决定的。
但在一些特定领域中和场景中,CF、CB算法就起不了作用了。例如:

  • 由于产品领域复杂。物品的类型、属性很多,而用户的兴趣只集中在某几个选项时,用户需要明确定义他们的需求。
  • 没有足够的历史行为数据。如低频购买的产品:房、车、金融产品、旅游服务等。
  • 评分数据具有时效性,用户偏好会发生变化。如更新迭代快的电子产品。

以上这些情形要使用基于知识的推荐来解决,这类推荐系统基于用户描述的明确需求来给出解决方案,如果找不到解决方案,用户需要修改需求(极强的交互性)。在这过程中需要用到知识库,知识库中包含了检索过程中运用到的用户需求的约束/限制,或用户需求与物品描述之间的相似性。
按使用到的知识库的不同,基于知识的推荐系统可划分为两类:

  • 基于约束的推荐系统:运用用户需求的约束/限制,在符合规则的物品集合中搜索到要推荐的物品集合。
  • 基于案例的推荐系统:根据用户需求与物品描述的相似性,检索出与用户需求相似的物品。

小结:三类基础推荐算法的目标和输入

推荐算法 目标 输入
协同过滤 利用用户本人或他的邻居的评分和活动,给出推荐 用户本人行为+邻居行为
基于内容 基于用户过去对内容(属性)的评分和活动,给出推荐 用户本人行为+物品属性
基于知识 基于用户对内容(属性)的明确需求说明,给出推荐 用户需求说明+物品属性+领域知识

2.交互过程

用户想要明确描述其需求,系统中必须有交互组件。CF、CB都不允许这种类型的用户反馈。在基于约束的推荐系统中,用户与推荐系统的交互过程,简单分为三步:
1)用户利用交互界面来说明其需求和偏好; 交互界面可以有GUI、CUI和GUI+CUI多模态的方式。
2)系统提供匹配物品的排序列表,并解释物品的推荐理由;
3)用户根据推荐结果,进行需求修改(增加或者移除一些约束/限制条件)

3.GUI vs CUI

用户描述需求的交互界面,我们可以选择GUI图形化交互和CUI对话交互。采用GUI是传统的作法,即通过菜单来实现多条件筛选、排序的功能。
我们知道推荐系统解决了两个主要问题,一个是信息过滤,另一个是找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些感兴趣但很难发现的商品。那么以推荐系统解决的主要问题出发,GUI与CUI对比如下:

对比项 GUI CUI
信息过滤 信息架构复杂,用户操作流程长 无二维界面限制,简化操作流程
挖掘长尾 服务头部信息,长尾信息难以获取 获取信息容易
个性化需求 很难做到个性化 对话交互场景下,个性化需求很强

对比分析后可以看出, 对话交互与推荐系统相结合可以更好地服务于业务目标。因此我们可以采取CUI+GUI多模态的交互方式。

二、对话交互推荐

在推荐导购bot中,对话发起分为两种情况,一种是用户发起,一种是bot发起。以下是两种情况的对话交互推荐。

1.用户发起的推荐

交互流程

与前面讲到用户与基于约束的推荐系统的交互过程相似,用户与推荐系统的交互可抽象成:“推荐-交互-再推荐”。具体流程为:
1)根据约束/限制条件,与用户进行交互,获得用户的需求选项。
2)基于约束生成推荐结果的回复
3)根据用户的反馈,发现新的约束,并根据约束迭代推荐结果。

一个示例:

User:我想买手机
Bot: 亲想买什么品牌的手机呢?
User:华为
Bot: 想看什么价位的呢?
User:3000左右吧
Bot: 给您精选了几款宝贝供您选择,这几款都是热卖的,您看一下哦~(展示推荐结果:nova5 pro、荣耀20 pro等)
User:想看支持5g的
Bot:支持5g的手机有以下几款哦~

这个示例中在识别购买手机的意图后,bot引导用户选择约束选项:品牌,用户回复“华为”,bot选择下一个交互的参数:价格。 用户回复“3000左右”后,bot根据交互策略没有进行下一轮提问,而是进行了搜索匹配,并给出排序后的推荐结果和推荐理由解释,例如热卖或与您浏览过的XX相似的产品。用户回复“想看支持5g的”,bot经过语义理解后,发现新的约束参数:5g网络; 根据用户要求对推荐结果进行过滤/筛选和重排。

交互优化

bot在对话过程中,对话管理需要决策接下来采取的系统动作。可能的系统动作有:

  • 提问物品的下一个属性值。例如示例中询问“价格”、“品牌”
  • 向推荐系统请求,根据约束的条件参数给出推荐结果

如果要采取继续提问的动作,需要考虑如何添加约束/限制物品的属性,从而提升交互推荐的效率和用户体验。因为如果约束太多,要回答的问题太多,用户会不耐烦; 如果约束太少,返回的推荐结果数据太大,也不是一个有效的解决用户需求的方案。
常见解决方案:
1)选择信息量最大的参数来提问(熵、基尼系数)
交互参数的选择,也就是物品特征选择,可以使用“决策树”来解决这个问题。在决策树算法中,构建决策树每次要选择区分度最高的特征,也就是选择信息量最大的特征。信息论提出“信息熵”来对信息进行量化度量。选择某个特征后,计算熵的减少量。减少量越大说明区分度越高。
基尼系数是另一个特征选择最常用的的度量方法。基尼系数越小表示更大的区分能力。

交互策略:静态or动态

  • 静态策略:就是对所有人先问属性A再问属性B。
  • 动态策略:比如对于属性A不同的反馈采取不同的行为。

决策树是动态策略的算法。一个示例:需要推荐的产品为台灯,假设对于台灯区分度最高的是品牌,对于品牌A区分度最高的是光源类型(led类/白炽灯/节能灯…),品牌B区分度最高的是开关控制(触摸/调光/按钮…)
对话交互如何与推荐系统结合_第1张图片

2)通过挖掘历史会话数据来选择约束的属性
历史会话日志可以在所有用户上定义,也可以在当前用户上定义。

  • 挖掘当前用户的对话日志可以提供更具有个性化的结果。例如通过数据挖掘发现用户常买的是A品牌,就不需要沟通品牌偏好的问题了,系统可以给这个属性设置默认值为A。
  • 当推荐用户不经常购买的物品时,只依赖该用户的会话日志不可能获得约束属性,这种情况要使用所有用户的会话数据来选择。使用所有用户的历史会话数据的思想是:选择最受欢迎的约束。如果一个用户在“一组/一个物品属性”中指定了约束,则包含这些属性的一个/多个会话会被识别出来。根据属性数量可以识别出前k个最临近的会话。在这k个近邻会话中最受欢迎的约束的属性可作为下一个候选的交互属性。
    例如:大多数用户在对手机的价格范围和品牌提出要求后,提问最多的问题是关于手机机身存储的大小,那么机身存储可以作为下一个对话交互的参数。

以上交互优化是关于如何选择约束的属性,来减少对话轮数,提高交互效率的。那么系统如何控制策略来优化交互过程呢?(即系统是选择继续提问,还是选择返回推荐结果的策略)关于这个问题,目前的方向是基于强化学习的方法。

强化学习是agent从环境到行为的映射学习,目标是奖励信号(强化信号)函数值最大,由环境提供强化信号评价产生动作的好坏。agent通过不断的探索外部的环境,来得到一个最优的决策策略,适合于序列决策问题。

在导购场景中,基于强化学习优化交互策略。用户相当于环境,agent是算法模型,action是本轮是作出提问的交互,还是直接给出搜索推荐结果。

2.bot发起的推荐-主动推荐

发起条件
主动推荐意图是由bot根据相关的策略发起的对话,主动推荐包含活动/商品推荐、推送优惠券、提醒/催单等。

主动推荐交互
创建意图,并根据意图的流程来设计交互。在主动推荐的意图中,用户是被动对话的,所以bot要引导用户进行多轮对话来完成推荐任务。比如当bot识别到用户的回复切换了意图时,要先根据用户的意图去交互,用户的主动意图交互完后,再使用拉回策略把用户引导回推荐的主流程中来。一个示例:

Bot: 您上次购买的[xx]商品正在进行满100-50活动,想要了解一下吗?–>根据一定策略发起对话
User: 你们家发什么快递?–>用户回复的意图为“查询快递”
Bot: 通过xx快递发货哦。
Bot: 活动商品,了解下?–>拉回推荐意图的策略

总结
导购推荐bot通常是智能客服机器人中的一个子bot,但是否需要加入这个bot,我个人认为要看企业所在的领域和服务的场景。比如在B2C电商平台,沉淀了大量的用户数据和交易数据,通常采用CF、CB算法/混合算法的推荐系统,用GUI方式展示推荐结果就能很好的达到目标,所以这类平台使用对话交互推荐不一定是强需求。但在前面讲到基于知识的推荐系统所适应的特定领域和场景中,加入导购推荐bot是一个不错的选择。因为这些场景用户的个性化需求极强,产品领域的属性相对复杂,并且用户可能会动态修改需求,使用对话交互的方式可以提高推荐系统的效率。

你可能感兴趣的:(对话交互如何与推荐系统结合)