本周的比赛内容是客服系统设计,所以这次文章我们就写一下这个系统;
这个系统简单理解了一下,大概分为3个部分:
1. 线下的mis管理:主要涉及问题的输入和答案的编写
2. 线上的展示,主要涉及问题按分类进行输出,已经点赞等功能的支持
3. 自动答复功能
第一部分:faq的后端mis管理,主要是由两个表组成,主要是分类和问题编写,分类是多级的,主要考虑到之后可能会用在多个业务线,以及问题会属于不同的类目,方便进行筛选;
第二部分:faq的前端展示,主要是模板的编写,页面根据mis管理功能进行展示,然后以及一个点赞功能;
前两部分基本上都是一些数据表的增删改查,我就不在这里细说了,主要说第三部分的事情;
第三部分是自动答复功能,主要由3个模块来构成,分别是语义解析,后端搜索,排序截断这三个功能(因为时间有限,所以比较简单):
语义解析主要是涉及到一个切词的功能,这个开源的切词模块都有,百度也有,切完之后,将高频词什么的都删掉,留下一些特征比较明显的名词或者形容词,另外这个切词的模块,最好自己用训练集训练出来,这样的话得到的结果会更加优美;
根据第一块切出来的词,我们会将这些词去做一个检索功能,检索功能是分开的,一部分是建索引,另外一部分是查询,建索引的操作和语义解析类似,其实也就是把问题和答案进行切词,把高频词去掉,留下特征词,可以根据需求,判断索引key的长度,最好是不要建单个字的索引,那样的话找出来的结果非常不好,建立好索引之后,查询这里的功能其实就是把各个切词拿出来的结果做个merge返回给前端;
第三个模块是排序和截断,排序主要是用来判断相关性什么的,另外还可以根据这个回答的点赞数,优先级进行加权平均,另外考虑到用户的个人属性,还可以把用户之前问的问题,做切词来进行查询做一个补充;根据排序会做一个截断,返回3-5条的答案返回回去,并给用户一个反馈的功能,好或者不好,用来优化下次功能;
这三部分做好了之后,一个基本的faq就做出来了,剩下的就是一些问题的补全等等;除此之外还可以接入一个聊天机器人,当后端能回答的用faq,不能回答的用人工,其他场景下用机器人
时间有限,就写这么多了;