Hi,忙碌了许久,终于有片刻的闲暇时光。想想了最近做的一些项目,其中涉及的部分功能设计觉得需要重新梳理一下思路,找出其中的不足,也分享给大家,请大家不吝赐教~
由于人工智能(AI)风的兴起,大家在日常生活中也慢慢的受AI技术的影响,像我们使用较频繁的产品如“喜马拉雅”、“今日头条”、“微博”等,这些产品都会根据我们每日浏览的内容推送给相关的内容给我们浏览阅读,比较普遍的叫法就是“千人千面”。
本文我想讲一下在客服领域中的“千人千面”,略懂皮毛~
业务诉求是:在企业中有一个智能问答的机器人,收集内部咨询比较频繁的业务知识,解决每位员工日常的咨询、答疑工作,从而减轻人工客服日复一日,重复的咨询工作。
需求是:将用户遇到问题被动的去咨询改变成根据用户历史咨询的内容,机器人自动推动与其相关的内容,让用户由被动转变成主动获取新的知识,更有利于用户快速解决问题。
涉及的算法:在实现“千人千面”的过程,主要用到了“itemcf 基于物品的协同过滤算法”和“usercf 基于用户协同推荐算法”
itemcf指的是给用户推荐和他之前喜欢的物品相似的物品
usercf指的是浏览量该物品的用户还浏览了哪些物品
抽取用户标签
首先需要获取用户与机器人最近一段时间内(可自定义)的会话记录,系统通过文本分析获取每位用户的标签信息。标签包含用户所属的部门、职级、咨询频率较高的知识分类等
在抽取标签的过程中 需要了解客户的业务,将没有用的信息降低权重,过滤掉不需要的标签词。比如“集团职能”仅是每个职位前面的修饰语,没有作为标签的价值
标签抽取完成后,由于是系统自动抽取存在抽取的标签不合理的情况,需要将此信息展示出来,能支持人工干预,提高标签的准确性。另外抽取出的标签有可能表达同样的意思但是标签名称不一样,这时候还需要利用“聚类”算法,对标签内容进行文本相似度计算,对于意思相近的标签进行合并
聚类可视化结果案例:同一类标签词位置相近且颜色相同。
根据用户历史访问记录,机器人自动推送相关热点问题供用户访问
用户标签抽取完成后,即可用于用户推荐了
在做推荐的过程中需要注意:
系统性能问题,因为数据分析需要消耗服务器性能,所以决定每天凌晨定时去分析数据,生成新的标签入数据库。这里也许你会发现一个问题,对,就是推荐数据不是实时的,每天更新一次,用户在当天内看到的推荐数据都是一样的。
冷启动问题,对于初次访问的用户来说,他没有会话记录,按照上面的逻辑无法完成推荐。所以我们想了其他的办法,找到与当前用户同部门、同职级的用户,将这些用户咨询的问题中浏览量topN的推送给当前的用户查看
验证推荐准确性
推荐功能做完后,需要验证推荐的效果是否对用户产生价值。
先模拟10位新用户,其中5位用户有针对性的对问题进行咨询,另外5位用户则随意咨询,每位用户咨询的问题数量不能少于10条,有利于标签的抽取
再模拟10位新用户,这些新用户与上面用户在相同的部门、相同的职级,查看这些新用户是否推送上面用户咨询过的问题。如果推送则说明推荐成功,否则推荐失败
结论
在设计这个功能的过程中,遇到了很多坑,标签抽取不准、推荐效果不理想、不知道该如何验证推荐准确性等,多次向NLP、研发同事请教,经过多番沟通,最终完成了这个推荐功能。自己从中学习到了不少知识点,最后产品上线也得到了业务部门的认可,很是感谢小伙伴的支持~