团员分享_交互式课程推荐BOT尝试心得(2)_@大番薯_20200522
2020年5月19日 更新
开启更多功能,提升办公效能

前言:本文作者是团员“大番薯”,“交互式课程推荐BOT”这个重度干货非常长,将会分成3篇文章来叙述,本文是第2篇;也欢迎有更多的团员们来分享你的AI干货~


注:第1篇文章在《团员分享_交互式课程推荐BOT尝试心得(1)_@大番薯_20200519

  • 背景(何谓交互式推荐?为什么在课程推荐场景要做交互式对话?交互式对话和任务型对话的区别)
  • 一、角色定位
  • 二、意图设计



三、对话管理

对话管理模块,分为用户对话状态跟踪+对话策略生成。

 

通过BOT与用户交互式的对话,引导或限定用户的回答范围,理解用户的意图,管理对话的状态,基于状态进行对话策略的判断,从而生成下一步的动作。

 

这里就涉及到几个关键点:

1)对话如何设计:包括BOT的对话的类型和话术,根据用户可能的回答来设置不同的回复方式

2)对话状态:包括用户全局状态,和在语境中上下文所处的状态

3)对话策略:基于对话状态进行对话策略的设置和判断,从而生成下一步动作

4)对话生成:针对每个BOT动作,生成对应的话术

 

1、对话设计

在对话流中,首先需要考虑BOT的说话都有哪些种类。在这个场景下,除了开场白/结束语,其余的总结为三个大类别:提问、回复、推荐 

 

1)提问

  • 有哪些不同场景下的问题类型

总结了如下不同的问题类型及问题:

问题类型

问题

获取用户画像

问用户性别

 

用户职能

 

问用户爱好

 

问用户技能

通过知识图谱等关系生成一些问题供用户选择,激发用户自身兴趣

用户回复职能后,提供职业路径发展路径的选择

 

用户回复职能后,提供职能下top的技能和素质,问用户感兴趣哪个

获取用户对推荐课程的反馈

问用户喜欢某门课的理由

 

问用户不喜欢某门课的理由

 

列举一些用户不喜欢可能的理由,让用户选择

 

通过用户历史行为记录,猜测出用户偏好,问用户是否喜欢/不喜欢某个标签

继续/重新推荐课程的确认

问用户需不需要再推荐一些课

 

根据历史对话记录发现用户感兴趣标签,问用户是否要再推荐一些这方面的课程

 

问用户是否要重新推荐一波课程

 

  • 用户如何答

拆解完有哪些场景下的问题以后,最重要的是设想每个场景每个问题下面用户可能的回复。如何预测用户的回复,并作出应对

 

即使在强话术引导的情况下,用户的回答也可能是千奇百怪,不按照你的既定套路进行的,所以需要做好各种情况下的预判和回复话术。

 

在这里也赞一下饭官大人的分享,笔者之前在整个项目过程中时,也经历了测试时期焦头烂额的情况,测试的时候才发现很多异常情况没有兜底回复,究其原因还是一开始没有想清楚用户在每个问题下可能的回复,拆解得不够清晰,在看了@饭官大人 的文章以后,有了豁然开朗的感觉,感觉分享的这一套方法论在交互式推荐的这个场景下,还是蛮适用的。

 

方法论中,用户可能的回答有几种情况:

A)跟随 也就是乖宝宝型,我就是按照你的套路认真填充

 

B)筛选与修订 在课程推荐的场景下,就是对BOT给出的对话选项或者是否问题不满意,人为回答了一些其他的回答。比如BOT问职能一、职能二、职能三当中你对哪个更感兴趣的时候,用户回答“都不感兴趣,我喜欢职能四”。

 

C)关联咨询 比如推荐课程以后,针对不太理解的名词,会进行QA问答。或是针对课程详情中的各种属性有一些疑问,均可能产生问题,比如:xx课的讲师是谁?/ 有没有其他跟这门课类似又适合xx职能的课程?

 

D)无意图表述 

无意图表述本身可能包含很多种情况,如下:

 

我也不知道/ 稍等我想想/ 我不喜欢你的推荐 /你看着办吧/随便吧 /你怎么总给我推荐这个/ 你推荐下吧

 

这里针对无意图表述,利用情感模型识别出了喜欢/不喜欢的情况(如果有槽位也会抽取)

比如 “我不喜欢你的推荐” 这句话,会被识别成“负向情感”,接下来可能会请求用户问具体不喜欢的点。

 

还有 【推荐】这个意图,即使没有明确方向,还是会被识别出来的,接下来会通过各种随机问题去增加话题,激发用户的兴趣,找到推荐方向。

 

剩余的无意图表述,在每种状态下面可以配置不同的回复策略。

 

E)命令控制 这个场景下暂时不存在

 

F)用户表达跳出/退出

跳出是跳出当前对话,在这个场景下主要是用户明确表达否定意图或拒绝继续当前的推荐,这时候可以跳出当前推荐流程,切换到其他话题;

 

退出则是明确说再见,是整体这轮对话流的结束。

 

增加挽留确认话术和退出引导话术也是继续对话比较重要的,有时候用户可能只是对当前的推荐流程不太满意,但还不至于退出整个对话流,因此跳出的时候需要增加挽留确认话术,猜测用户感到厌烦的点,切换其他用户可能感兴趣的点。同样退出的时候,加上引导话术也是给用户更好的体验。

 

其实拆解完用户如何答以后,用户的意图模块也补充得差不多了。

 

  • 提问的类型

提问的类型也是要依据不同场景和语境进行切换的,同时需要根据用户可能的回复设置不同的提问方式,大致分为以下三种:

 

A)开放型:不限制用户的回答,提问的问题属于开放型的问题,但由于整体属于课程推荐的场景,正常情况下预期用户的回答是局限在这个场景下的,因此,如何设计针对性的提问会显得比较重要。比如:现在是互联网大数据时代,技能傍身不用愁,你有没有想要学习的技能呀?

 

B)选择型:提问中提供几个选项,让用户进行选择。比如:你是男孩子还是女孩子丫? / 我统计了跟你同职能的职场人士,职业路径发展的top3是:职能1,职能2,职能3,你对哪个职能比较感兴趣?

 

C)是否类:事先生成了一些需要确认的信息,通过是否类的问题来让用户进行确认。比如:需要我为您再推荐一些课吗?/ 看出来你很喜欢xx相关的内容啊,要我再为您推荐一些类似的课程么?

 

这三种类型,开放型给用户最为自由的权利,其次是选择型,最后是是否类。

 

开放型在给予用户极大权利的同时,也带来了极大的不确定性。因为用户会针对你的问题产生各种各样的回复,如果开放型太多,没有做好异常回复管理,用户心理预期反而会下降。

 

解决方案就是在设计的时候,尽量引导用户,使得用户正常回复的范围是限定在某个领域下的。比如用户反馈不喜欢的理由的时候,BOT可以引导说:“我发现你对xx课不太满意, 能否告诉我具体对哪方面不满意?你可以从讲师、兴趣爱好、行业领域、适用岗位、推荐力度这些角度来考虑,方便我重新推荐更合适的课程给你。” 而这些领域,正是算法会着重识别并理解,最终反馈到推荐效果的方面。这样一方面给了用户一个心理预期,一方面也会使得用户的感知更好。

 

选择型的问题有两种类型,一种是枚举型且数量较少的,比如性别、学历等;另一种是为了引导用户按照既定的思路和节奏走。这里需要注意的是,用户不按照既定选项回答的情况,要怎么回复。

 

比如BOT问:你是男孩子还是女孩子丫? 

 

此时用户回答:变性人

 

当然带有一定的调侃,这时候是直接认怂,走兜底策略承认自己听不懂;

 

还是继续进行追问,追问的话要追问多少次;

 

或是有一些特殊的设置,比如针对这问题:我统计了跟你同职能的职场人士,职业路径发展的top3是:职能1,职能2,职能3,你对哪个职能比较感兴趣?

 

用户对提供的这些选项都不感兴趣,他可能会回复:这些我都不感兴趣

 

针对这一类回复,可以新设置一类意图:用户对BOT问题明显表示拒绝或否定

 

识别到这个意图以后,进入对应的状态,再配置对应的话术和动作,就可以覆盖这种情况了

 

以上,是我举的一个例子,说明了在每一个选择型问题下面,都需要对用户可能的回复进行预判,并抽象出通用的用户意图并进行对应的处理。

 

是否类的问题在这个场景下比较单一,主要集中在BOT问是否要再推荐一些课程的时候,或是BOT通过前面的反馈行为理解了用户偏好后,主动发问是否要推荐类似课程的时候。

 

这时候只要识别用户肯定/否定的意图,在肯定意图的时候,配置话术,并根据用户画像进行推荐;在否定意图的时候,可以给出合适的话术;其他情况下,认怂走兜底话术就好了。

 

  • 每种问题的问法有多少种

每种问题下,是可配置多种不同问法的,可以设置每次随机抽取一种问法进行提问。具体问法的话术就要涉及到语感层面,怎么问会让人比较舒适,且人格整体是一致的

 

  • 固定问题 VS 随机问题

这个问题的提出,主要是经历了前后的两个版本。一开始设计问题的时候,将问题分成了:开场后的固定问题,根据用户反馈后必出的问题,还有学习一段时间对话以后根据用户画像偏好生成的问题。固定问题是事先设置的,并且在开场后就会出来,无非是问性别、年龄、职业、爱好等等,先收集一波用户画像。

 

试验了一个版本之后,感觉效果并不好,遂将这些预设的问题切换成了随机问题,只在开头问一两个问题,接下来每次顺利完成一个推荐过程无话可聊以后,会随机生成这些问题提问,也就是“找话聊”,继续对话流。

 

如何做到在没话聊的时候自动找话聊呢?具体的方案是给每一个动作设置一个优先级,比如类似这些问题优先级就比较低,正常推荐反馈再推荐的流程中的动作优先级就比较高。

 

在随机问题中,还可以设置每个问题是否能被重复触发。因为有些比如性别、岗位,不可能问了一次以后继续重复问,会显得很傻;而像爱好、想学的技能这种,可以设置问多次。

 

总结固定问题和随机问题两者的区别,主要是:

固定问题:具体的问题,用户会感到压力,有种被审问的感觉 

随机问题:具有随机性,在没话聊的时候出现,顺利推动对话的进行,可能给人惊喜感

 

对于这两者的看法,可能也是见仁见智。笔者有同事体验以后,发现随机出问题反而会对他产生困扰,导致他感觉很乱,没有一条清晰的主线,反而是起了副作用。这也带出了下面这个话题:对话的整体节奏。

 

2)整体节奏

交互式推荐主打的就是交互式的对话体验,肯定需要考虑整体节奏如何更合理,让人更舒服。主要有两个点:

  • 被动式 & 主动式
  • BOT主动多一点 or 用户主动多一点

 

目前版本的设定是,交互式对话应该在掌握整体节奏的情况下,更多地去引导用户,理解用户,推动对话的进行,因此每一轮对话结束后,必定会出现回复、推荐、提问的行为

 

这里有一个值得探讨的场景,就是当每轮推荐课程后,BOT会让用户去点赞点睬,一旦进行了这个操作,下面就会针对评分进行互动,比如问一些反馈理由等等,方便更精准地推荐。但是评价的行为不是强制进行的,因此没有互动的时候,BOT会默认认为用户不感兴趣,或是用户本身的习惯就不喜欢操作,为了推进对话进程,接下来会切换问其他话题的问题,就是上文提到的随机问题。

 

针对这种设定,采访发现两拨人有不同看法,赞成的人认为对话推进较好,如果还在看推荐的课程,那直接忽略下面的提问就好了;不赞成的会觉得我还沉浸在上面推荐的课程中,这时候出问题,会打断我之前的进程。

 

这两种想法都能理解,个人其实比较偏向不赞成,更希望通过前端的交互体验来改善,比如通过记录用户的操作和浏览,或设置一定时间以后,推测用户对推荐内容不感兴趣,已经完成了浏览以后,再继续问问题,这样在浏览过程中不至于打破用户的进程。

 

关于BOT主动多一点 ,还是用户主动多一点这个问题,在交互式对话中也是很关键的一个问题,因为这个度很难把握。一旦把握不好,BOT太主动,用户会感觉丧失了主动权,被你牵着鼻子走;而BOT如果太不主动,又没办法推进对话的进程,很多时候一旦一轮对话结束以后,用户会不知道接下来可以干嘛,从而疯狂地尝试输入对话,很可能一下子就走入了死穴。

 

要想达到最佳的效果,个人认为还是需要有很有趣的话术引导,通过NLU的能力理解用户跟你说什么,并且在适当的时机随机出一些功能,带来惊喜感。同时,也要给用户足够的自主权利,比如用户可能已经有了很明确的方向了,根本不想听你这么多引导,那就要明确告诉用户有哪些意图是直接可以支持的,用户可以直接说,简单高效,直达最终目标。

 

交互式推荐如果能给人带来很好的体验,核心一定是底层NLU的理解能力,理解得好了,我会觉得你做什么都对,再加一点小惊喜就很完美了;理解得不好,所有的主动引导就变成了累赘,越说我越烦。这是我深切的体会。

 

3)回复

回复行为每回合可以无限多个,且出现在提问行为之前。因为每轮回复的优先级肯定是最高的,接下里没话说了才会进行提问或推荐。

 

4)推荐

推荐行为是每轮对话最后的基石,前面的所有对话都是为了引导到最后推荐的行为,可谓是最重要的行为。有别于传统推荐,BOT推荐场景,有以下几点需要着重考虑。

 

  • 推荐时机

什么时候算是一个最好的推荐时机?用户有明确意图的时候,可以直接推荐;相反如果用户不清楚要看什么课程的时候,要通过各种引导,在对话的过程中,让用户找到欠缺的知识点,或者激发潜在的兴趣,一旦get到有用的信息点以后,就可以直接推荐。

 

要注意的是,在对话整个过程中,大部分画像推荐之前,需要向用户确认是否需要推荐,除非是用户很明确的意图来推荐,或是BOT在问的时候,已经提前预告过需要根据用户的回答来做相应推荐了,那就可以直接推荐。

 

请求确认,这是对用户的一种尊重。

 

  • 推荐类别

推荐的类别一共分为三种:

A)搜索推荐:抽取用户话语中的槽位,根据职能/技能/爱好/讲师等单维度直接推荐课程

 

B)画像推荐:根据对话历史中积累的用户画像和偏好,结合上下文信息,推荐课程,主要涉及到合理的推荐课程排序呈现

 

C)相似推荐:针对推荐出来的每一门课,都可以推荐跟这门课相似的课程

 

搜索推荐和画像推荐的区别,可以从用户来使用这个BOT的动机出发。说白了,用户如果来这里就是有很明确的目标和需求,那就是直接走搜索,如果推荐得好,一轮就可以解决问题;

完全没有目标,纯粹靠用户行为反馈,就变成了信息流推荐;

 

如果推荐效果不满意,可能会有很多因素,可能课程确实是相关,但是某些力度不够匹配,或者仅仅是不喜欢讲师风格等等。通过多次的反馈,理解用户的目标,最终反馈到推荐结果上面,这就实现了一个小闭环。

 

用户满意了以后,是否还需要继续推荐?或是问用户是否要推荐类似课程?

 

不喜欢评论的用户心态是什么样子的?如果每轮推荐课程后都不反馈,便会一直切换话题,不停地进行推荐,这样是否合理?但如果不切换话题,对话流就不会继续,用户会知道如何继续对话么?也许有一部分用户会希望主动问BOT,大部分用户可能会不知道如何继续对话。

 

如果每次以用户满意为一个小目标小闭环,为了继续推动对话,接下来还会针对其他话题进行提问,但下一次的话题可能与上一次话题偏差较大,此时当前的画像更新后,根据画像推荐的课程中,如何平衡历史对话中所有涉及的画像维度?如果在toC场景下,采用传统信息流的样式,推荐课程的数量一定不是个问题,但BOT由于受到样式的限制,导致设定每轮只推荐三门课程,不可能覆盖全部的历史画像维度,此时如何展示,让人体验更好?

 

以上的问题,我也一直在思考,但到底什么样的方式是最好的,我还没有一个特别明确的答案。

 

 

  • 推荐场景

可能出现的推荐场景如下:

推荐场景

推荐依赖

推荐动作

推荐结果呈现

成功获取用户职能

根据职能推荐课程

搜索推荐

 

成功获取用户想学的技能或素质

根据技能或素质推荐课程

搜索推荐

 

成功获取用户兴趣爱好

根据之前对话中获取的用户画像推荐课程

画像推荐

最近的兴趣相关课程排序在前

成功识别用户理由中喜欢/不喜欢的标签,并更新用户画像

根据最新的用户画像推荐课程

画像推荐

最新理由中的喜欢/不喜欢偏好体现在最前面

通过问答成功获取用户偏好后

根据更新的用户画像推荐课程

画像推荐

最新用户偏好体现在最前面

获得用户想要推荐某方面课的意图后

根据标签推荐课程

搜索推荐

 

用户主动要求进行某方面课程的推荐

根据职能/技能/兴趣/讲师等推荐课程

搜索推荐

 

用户要求推荐相似课程

 

相似推荐

 

 

2、对话状态

1)用户状态

uid

 user id

hobbies

 兴趣爱好

function

 职位

gender

 性别

skill

 问技能时, 用户直接回复的技能 (不包括其他途径提取的技能)

quality

 用户选过的quality

path

 用户喜欢的未来职业

replied

 已经回复过的话术template集合

like

 所有识别到的用户喜欢的东西

dislike

 所有识别到的用户不喜欢的东西

rejected_slots

 用户所有拒绝回答过的槽位, 比如问用户职能时, 用户说不告诉你, 然后职能就会被记录进来

recommended_kw

 ask_recommend动作会不停选以前用户喜欢过的东西来问他要不要推荐, 这里记录已经选过的关键词

course_score

 记录用户所有打过分的课程及其得分

 

2)系统全局状态

prev_state

 上一个状态 

slots

 一些临时用到的信息, 每次这些信息被使用后则被清空

nlg_param

 一些特殊的nlg生成话术时使用的参数

asked

 已经问过的问题template集合

debug

 debug信息, 传给前端显示

retry_count

 记录现在是retry的第几轮, 一般为0

retrying

 记录现在是在retry哪个问题

recommended_round

 记录现在是第几轮对话

recommended_courses

 记录所有推荐过的课程及其信息

current_state

 现在bot处于的state名字(e.g. await_function)

 

3)BOT当前状态 & 对话策略(包含状态成功、失败、拒绝时的BOT动作)

所有状态正常退出时,默认先回复用户,动作为reply_xxx

 

凡是带await的状态都是等待用户对上一轮bot问出的问题的回复, 不带的都是主动识别到的意图

 

下表罗列了所有的当前状态、对应含义:

状态含义

处理失败时重新追问次数

系统正在等待用户回答自己的职能, 每次系统问职能后自动进入这个状态

1

系统正在等待用户回答自己的兴趣, 每次系统问兴趣后自动进入这个状态

不追问

系统正在等待用户回答自己想学的技能, 每次系统问技能后自动进入这个状态

不追问

系统正在等待用户回答理由, 每次系统问理由后自动进入这个状态(包括ask_reason_neg_select

不追问

系统正在等待用户回答是否要重新推荐, 每次系统问是否要再推荐或重新推荐时自动进入这个状态(上文进行ask_confirm或ask_reason_confirm后进入该状态)

1

根据用户画像没有推荐出来合适的课程

 

推荐服务挂了的情况下的回复

 

系统正在等待用户选择职业发展路径, 每次系统问职业发展路径后进入

不追问

系统正在等待用户选择喜欢的技能或素质,每次系统问是否有感兴趣的技能或素质的时候进入这个状态

不追问

系统正在等待用户回答是否是喜欢/不喜欢这门课的某一方面

不追问

ask_recommend 随便挑一个用户喜欢的tag拿出来问他要不要再推点课后,

系统正在等待用户回答是否要推荐某方面的课

不追问

识别用户意图为主动要求搜索推荐时进入

 

用户点赞/踩

 

用户要求推荐相似课程

 

相似课程没搜到课

 

用户刚进入BOT

 

用户再见/退出

 

用户在闲聊

 

用户在任何情况下表示了否定

 

用户在抱怨不喜欢某东西

 

用户针对某些词语进行提问

 

 

对话策略模块,主要的流程为:

 

识别用户意图——判断系统进入什么状态(考虑用户状态+系统全局状态+BOT当前状态)——根据当前状态下成功/失败/拒绝的情况决定下一步动作——有下一步动作的根据每个动作对应话术,走话术+action;没有明确动作的进入随机提问状态,根据提问优先级出随机问题。

 

3、对话生成

对话生成模块,主要需要厘清所有可能的BOT动作,在每个动作下需要生成对应的话术。如何根据BOT动作生成对应的话术?是这个模块主要考察的点。

 

生成话术一些基本考虑的点在对话设计中基本已经覆盖,在此不做赘述。

 

1)话术引导

  • 通过话术引导用户,激发用户潜在的兴趣,在用户无目的无目标很迷茫的时候,发掘出自身的需求
  • 考虑用户成本,在跳出/退出意图时,增加挽留确认和退出引导
  • 在封闭域推荐场景,尽量不要给用户太过开放的回答形式,使用话术限定
  • 尽量多模拟真实场景,考验共情能力
  • 整体BOT人设一致
  • 多增加共情话术,表示理解了用户的话,可以通过一些trick达到

 

2)话术限定

通过BOT的不同问法,限定用户的回答范围,使之不至于偏差太多

 

3)动态话术生成

一旦获取到某个标签,比如性别、技能、职能等用户画像字段,每一个维度都会预设一些话术生成的模板。笔者所在公司深耕于人力资源领域,所以底层具有丰富的知识图谱资源,利用职能与技能关系、职业路径发展等,可以生成一些模板,并融入到话术中,如下例:

 

  • 职能-技能关系

我掐指一算,80%的{职能名称}都对这些专业技能和优秀素质感兴趣:{技能列表}<br />你对哪个比较感兴趣?我可以给你推荐相关课程哦

 

  • 职业路径发展

我统计了跟你同职能的职场人士,职业路径发展的top3是:{职能名1,职能名2,职能名3}<br />你对哪个职能比较感兴趣?

 

这样子确保了每个生成的问题都是动态随机的,不会死板。

 

4)BOT动作 & 包含功能 & 对应话术模板

BOT会根据对话状态来选择反馈行为,动作行为一共分为三种:推荐reco、提问ask、回复reply。

 

每次BOT说话必会出至少一个提问/推荐行为来推动对话流进行,回复行为每回合可以无数个,且出现在提问行为前。

 

每个动作可以设置触发条件,比如一些依赖槽位成功获取以后才会触发。

 

注意:首次和非首次的话术可以有所区分

 

推荐模块会在下一个章节详细介绍。这里主要介绍动作中包含的几个功能:

 

  • 感兴趣问题生成

根据用户的历史对话记录和反馈行为,发现用户偏好,生成问题,在无话可聊的时候提问:

根据历史对话记录,我发现你对{like}相关内容较感兴趣,需要我再为你推荐些这方面的课程吗

 

  • 情感分类

1、在用户反馈喜欢/不喜欢理由的文本中,判断用户喜欢或不喜欢的情感

2、全局判断用户是否抱怨的意图,如:别再给我推这些课了。一旦识别到该意图,BOT会说:

好的, 看出来你不喜欢关于{标签名}的内容, 以后的推荐中为你避免这些内容

 

设置第二个功能,主要是考虑到很多人可能不适应交互式主动对话的场景,且当推荐效果不尽如人意的时候,很容易产生负面情绪,需要这样一个全局意图来解决

 

  • query理解抽取喜欢/不喜欢标签

这个功能是情感分类的下一步,从用户反馈的文本中,抽取出具体喜欢或不喜欢的标签,这个需要一波语料进行训练,在这个场景下可能的回复大致如下,截取了其中一些片段:

 

我更喜欢like老师的课

相比较dislike老师,我觉得like老师在这方面讲得更好

我(觉得/认为)like老师的课讲得很精彩

我不太需要掌握dislike相关的技能

这门课讲的内容比较偏重dislike,但我想要跟like更相关一些的内容

我喜欢like,不喜欢dislike

我喜欢like相关的内容,但是不太想要dislike的内容

我觉得这门课比较适合dislike行业或领域,不太适合我

 

抽取到喜欢/不喜欢标签后,会针对不同情况回复不同模板:

 

我明白了, 你可能喜欢{like_vals}相关的内容, 不喜欢{dislike_vals}

我明白了, 你可能喜欢{like_vals}相关的内容

我明白了, 你可能不喜欢{dislike_vals}相关的内容

好的,收到您的反馈

 

 

  • 共情

共情的功能第一个是体现在话术上面,当每个状态失败、拒绝或服务异常的时候,会配置相应的话术。

下面举一些例子:

用户回复兴趣爱好后,模型没达到分类阈值,回复一句共情

['太好了,原来我们有共同的爱好', '看来我们有很多共同话题哦', "原来你喜欢这个呀,跟我一样"]

没有识别出用户喜欢/不喜欢的东西时候的回复,表示理解了

好的, 收到您的反馈

没识别出来用户职位时候回复

真是罕见的职业呢, 我对它知之甚少

用户回答是不是不喜欢某个标签以后的回复

明白了, 记录了您的偏好

推荐服务挂了的情况下的回复

对不起, 绞尽脑汁没有发现合适的课程

没有理解用户语言时回复

["对不起, 我没听懂", "对不起,我没有理解你的意思,换一种说法吧~", "对不起,你们人类的语言太高深了,超出了我的理解范畴"]

 

第二个是,当用户回复兴趣爱好后,利用小样本多分类模型,将标签分类到事先定义的某一个兴趣类别标签,并配置不同的呈现后缀,比如当用户说喜欢网球时,回复:看出来你是个运动健将呀

 

第三个是,用户面对获取画像的一些问题回复后,针对每个回答中的关键词,会生成对应的问题,并给出相应的解释,也可能直接回复关键词对应的解释。主要是基于丰富的问答语料和百度百科info box来进行训练,生成答案。下面举一些问答的例子:

用户回答中的关键词

根据关键词生成的问题

问题相应的回答/ 关键词对应解释

销售

如何成为好销售

勤奋,要想做好销售首先要勤奋,这也是一名销售人员所必备素质。在营销界有这样句话:“一个成天与客户泡在一起的销售庸材的业绩一定高于整天呆在办公室的销售天才”。这句话讲得很好,“勤能补拙”,勤奋体现在以下几个方面: 1.勤学习,不断提高、丰富自己。 2.勤拜访。 3.勤动脑。 4.勤沟通。 5.勤总结。灵感,灵感就是创意,就是创新。要想做好销售,就不能墨守成规,需要打破传统的销售思路,变换思维方式去面对市场,灵感可以说无处不在。技巧,技巧就是方法,而且销售技巧自始至终贯穿整个过程之中。我们所面对的客户形形色色,我们都要坚持有一个原则:一是投其所好;二是围魏救赵;三是软磨硬泡。

数据分析

 

数据分析的目的是最大化地开发数据的功能

网球

如何理解网球的用脚打球

一般情况下,网球的击球动作都是固定的,打球的时候最重要的就是把平时对着空气练习的击球动作打在球上。

 

 

  • QA

用户针对每个标签进行提问,触发QA模块后回复

主要在用户针对推荐课程的一些专有名词不清楚时,进行提问,会实时从百科抓取词条对应的解释。

-什么是人工智能?

-认真搜索了知识库, 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

 

  • 下面罗列了具体BOT action和含义

动作含义

优先级

是否可以重复提问

用户说再见或者退出的时候返回

5

 

用户首次登陆的欢迎语

5

 

没有理解用户语言时回复

 

 

用户打分以后回复

 

 

提示用户打分

 

 

问用户性别

1

 

问用户职能

1

 

首次问用户爱好

1

 

非首次问用户爱好

1

可以重复提问

问用户喜欢某门课的理由

4

 

问用户不喜欢某门课的理由

4

 

列举一些用户不喜欢可能的理由,让用户选择

 

 

非首次问用户需不需要再推荐一些课

5

 

首次问用户需不需要推荐课程

5

 

用户回答职位后回复

 

 

没识别出来用户职位时候回复

 

 

问理由后, 同时存在识别出的用户喜欢和不喜欢的东西时回复的话

 

 

问理由后,只识别出喜欢的东西

 

 

问理由后, 只识别出不喜欢的东西

 

 

没有识别出用户喜欢/不喜欢的东西时候的回复,表示理解了

 

 

搜索推荐, 且提出了用户query里的关键词时说的话

 

 

搜索推荐, 但啥也没提到时说的话

 

 

搜索推荐,没有搜索到合适的课程

 

 

用户回复兴趣爱好后,模型分类到某一个标签,回复用户是xx小能手

 

 

用户回复兴趣爱好后,模型没达到分类阈值,回复一句共情

 

 

相似课程推荐

 

 

相似课程没搜到课

 

 

根据用户画像推荐课程

 

 

根据用户画像没有推荐出来合适的课程

 

 

推荐服务挂了的情况下的回复

 

 

询问用户需不需要推荐,用户肯定回复后,BOT的回复

 

 

首次问用户想学的技能

1

 

非首次问用户想学的技能

1

可以重复提问

用户回复技能后,识别出技能后的回复

 

 

用户回复技能后,未识别出技能后的回复

 

 

用户回复职能后,提供职业发展路径的选择(当职能槽位获取到的时候才会触发)

1

 

用户回复职能后,提供职能下top的技能和素质,问用户感兴趣哪个(当职能槽位获取到的时候才会触发)

3

 

用户对给出的技能和素质都不感兴趣的时候的回复

 

 

用户选择了技能素质中任意一个时

 

 

触发闲聊模块后回复

 

 

用户在任何情况下表示否定时的回复

 

 

用户回复想看某方面的课程时

 

 

用户表达不喜欢/不想看某方面课程时回复

 

 

用户表达不喜欢某方面课, 但没看懂他不喜欢什么时候的回复

 

 

用户针对每个标签进行提问后,触发QA模块后回复

 

 

用户给某门课打分后,随机出问题,问他是不是喜欢/不喜欢这门课的某个标签(目前为和课标题最相关的tag)

 

 

 

用户回答是不是不喜欢某个标签以后的回复

 

 

随便挑一个用户喜欢的tag拿出来问他要不要再推点课

2

 

用户回答要不要再推点某tag相关课以后回复

 

 

成功识别用户回答中的喜欢/不喜欢课程理由后,问用户是否要重新推荐

 

 

 

 未完待续:

四、推荐:包括搜索推荐,画像推荐,相似推荐

五、测试&评价

六、落地应用场景

七、可优化方向


 

-END-

 

以上内容,来自饭团“AI产品经理大本营”,点击这里可关注:http://fantuan.guokr.net/groups/219/ (如果遇到支付问题,请先关注饭团的官方微信服务号“fantuan-app”)

 

 

---------------------

作者:黄钊hanniman,图灵机器人-人才战略官,前腾讯产品经理,7年AI实战经验,10年互联网背景,微信公众号/知乎/在行ID“hanniman”,饭团“AI产品经理大本营”,分享人工智能相关原创干货,200页PPT《人工智能产品经理的新起点》被业内广泛好评,下载量1万+。