对话机器人学习篇(三)

智能客服系统架构

 

技术目标:以一定比例的解决客户的简单的高频问题,将疑难问题交给人工客服团队;

(比例根据不同场景及不同的技术条件而不同)

  

 

工作原理

 

 

对话管理系统可以选择一个机器人将问题发过去,也可以同时将问题发给所有的机器人,当它们都回复答案时,进行答案选择再返回,使用哪种方式取决于厂商自己的一个选择。上图中这四种机器人分别对应了四种不同的模块:

  • 第一类是任务管理类的模块,比如说订机票,它属于一个特定的任务,这种机器人就类似苹果的 Siri,是任务处理类;
  • 第二类是知识库问答,也就是咨询问答类的,只是做一些咨询类的工作,一般情况下,它并不处理实际的一些任务;
  • 第三类是知识图谱问答,知识图谱是知识库常见的是提供一个问答对结构和一个树型结构,知识图谱提供一个图结构,可以认为是一个广义上的知识库问答。
  • 第四类是聊天机器人的技术,聊天并不是客服的首要功能,客服主要是解决问题的,不是来聊天的,为什么在一个智能客服系统里面会有聊天这么一个功能呢?原因在于,一是在用户没有输入知识库内容的时候,这个聊天机器人会被客户当成是测试厂商机器人技术能力的评测对象;二是在某些场景下,会让整个客服对话没那么单调。

 

 

 

自然语言理解(NLU)

用户的问题是多句话—需要分句,对每一句寻找答案,将答案组合,发给用户;

对句子分词—词性标注—实体识别—-关键词抽取—句法分析—指代消解—词权重—语义相似度

 

 

意图识别的实现方式

 

需识别用户意图(通用意图+业务意图);

通用意图指用户做业务咨询还是闲聊,业务意图指若用户做业务咨询,具体咨询什么业务(使用文本分类的技术识别用户意图)

 

1.模版的方式

通过捕捉一个意图中包含的关键词

 

2.分类器

在某一特定领域里搜集大量语料,人工标注这些预料是属于哪种意图的,用分类器模型做一些二分类或多分类的分类器,用来判断意图;

(需要大量人工标注的数据,还有如何收集多个领域里的语料)

 

基于知识库的问答可以用检索或分类模型实现:

(1)先对用户输入问题作处理:分词,抽取关键词,同义词扩展,计算句子向量;

(2)然后基于处理结果在知识库中检索匹配,(利用BM25/TF_IDF/向量相似度等)匹配出一个问题集合;(类似推荐系统中的召回);

(3)问答系统直接会返回给用户一个答案,所以接着从问题集合挑出最相似的那个问题,需要对问题集合做重排序(利用规则/机器学习/深度学习模型做排序),每个问题打上一个分值,最终挑出问题top1,将这个问题对应的答案返回给用户,即完成了一次对话流程;

(4)实际应用时,可设置阈值保证回答的准确性,若最终问题集合每个问题的得分都低于阈值,则会将头部几个问题以列表的形式返回给用户,用户可以选择他想问的问题,进而得到(直接返回对应)具体的答案。

 

 

知识库

 

与搜索引擎类似,分为两个阶段:第一个阶段候选集召回,第二个阶段重排序;

候选集召回:由于知识库是人工导入,召回不那么复杂;

重排序:用文本相似度/检索相关度/神经网络的语义相似度/多模型混合来做;

 

知识图谱

 

(1)概念:知识域可视化或知识领域映射地图,显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系

(2)数据整理可使用开源工具:如Neo4j、OrientDB、Titan;

(3)然后 需要把自然语言通过某种方式转换成知识图谱的工具所支持的查询语言;

 

 

对话技术

 

分三类:

(1)状态机:填槽方式,将整个的对话过程抽象成一个有限状态机,每一轮对话,或者每几轮作为一种状态,随着对话状态的进行,这个状态机在不断的迁移,最终对话结束,状态机也结束。这里面的所有状态,以及所要执行的动作都是事先约定好的,所以状态机它比较适合一些场景简单的对话;

——商用系统的主流

(2)马可夫决策过程(MDP):和状态机的区别在于它里面增加了动作,状态机里面的动作是我们事先约定好的,是固定的动作,已经事先知道对话到了那时候,于是就固定的采取这样的动作,但是 MDP 这种方式,状态不确定,动作也不确定,所以说我的状态和动作是需要根据我的上一个状态和将要采用的动作做了以后的回馈(Reward)来进行决策的,所以说这个决策过程在特定领域里有足够的语料的时候可以做出很好的效果;

——学术界的主流

(3)短到端模型:有一个问题,把问题输入到一个模型里面之后,这个模型是帮我解决了我们之前整个对话过程所有流程的所有问题,而这个模型是需要从数据里面去学习,包括自然语言处理、意图识别,包括整个系统里面方方面面的各种东西都要学习到。这个模型对于我们来说它是个黑盒,我给它一个问题,它也能给我答案,我并不需要仔细的去研究里面是怎么做得,我只需要设计训练这么一个模型就行;

——学术界研究阶段

 

 

聊天机器人

 

智能客服系统通常会有聊天机器人模块,有三种做法:

  1. 第一种就是检索式,比如答案是事先编辑好的,并不会随便生成,在检索式里面又会分为两大类:第一类是用大量的语料和模型来训练,收集大量的语料,把问题和答案给一个神经网络的模型,用这个模型帮我去找到问题和答案之间的相关度,这样的话,就能够用大量的语料训练出聊天机器人模型,这是最常见的一种方式;

 

  1. 第二种方式是基于规则来做,使用类似于之前介绍过的 Alice 机器人所用到的 AIML 标记语言,写大量的 pattern,以及在这个 pattern 下所需要的答案,写大量这样的人工规则就可以做一个检索式的机器人,但是这仅限于少量的小规模应用,如果需要编辑大量的规则,规则之间可能会有冲突等问题,所以主流的这种聊天机器人的方式是我们说到的第一种,用统计模型和大量的语料来训练聊天机器人。

 

  1. 第三种是生成式的聊天机器人,我需要把我的答案直接生成出来,这种方式是需要限定在一定的领域里面。开放领域里直接生成式的聊天机器人会有一些敏感词的问题,因为语料一般是网上收集的,想做到所有语料都人工审核成本是巨大的。所以说生成式需要把它限定在一个特定的领域里面,生成式分为两种:一种是纯粹的生成,一种是基于一些模板来生成。

 

 

 

整体架构

 

 

  1. 基础服务之上是应用服务层,这一层具体实现了KB-Bot基于问答知识库的机器人、Task-Bot任务对话型机器和Chat-Bot闲聊类型机器人,这是智能客服系统的三种核心能力。
  2. 编辑运营层是指有一个编辑团队支撑算法策略迭代,主要完成数据标注、问答运营、数据分析和效果评估的工作,这些工作输出会作用到基础服务层和应用服务层。
  3. 基于应用服务层,对外提供通用的接口服务以便于业务方接入。
  4. 此外,机器不是万能的,用户有很多复杂的问题仍需要人工解决,这里有一套在线客服系统提供了人工在线客服的能力,应用服务层会和这套在线客服系统做无缝对接。

 

 

评价体系

 

两种方式:

 

(1)基于人工标注的评价:系统的回答能力受限于知识库的丰富程度,因此并非能回答用户的所有问题,系统最佳的状态是将能回答的全部回答准确,不能回答的全部拒识,即拒绝回答。因此这里的评价指标包括有结果率、拒识率、召回率和准确率等,我们的目标是让系统的有结果率无限接近数据的真实有结果率,召回率和准确率尽量高。

召回率 = 机器人能回答的问题数 /问题总数

准确率 = 机器人正确回答问题数 /问题总数

问题解决率 = 机器人成功解决问题数 /问题总数

 

实现方式:通过标注标准评测集来计算系统的各项指标,我们会从每日的全量数据集中抽样出一个小数据集,保证小数据集的数据分布尽量符合全量数据集,然后由标注团队对数据集做标注,标注出每个问题的实际答案,一般标注完成后还有质检的环节,以保证标注结果尽量准确,这样便生成了每日数据的标准评测集。基于该标准评测集我们会去评价系统的好坏,并且每次做新模型迭代时都会使用标准评测集去评价新模型,只有新模型的效果好了才允许上线。

 

(2)基于用户反馈的评价:人工评价能够评价智能客服系统的准确率,但是答案是否合理,能否为用户解决问题,需要用户去反馈评价,整个智能客服系统的最终目标是帮助用户解决问题。

 

实现方式:在产品上设计智能客服和在线客服的评价功能,例如会让用户评价智能客服的每个答案或者某次会话,在和人工客服聊天完毕会发送评价卡片给用户去评价满意度。最终我们会统计参评比例、满意度等指标,这些指标能够真正反应智能客服系统的好坏。实际中往往用户参评比例低,我们会使用各种方法去刺激用户评价。

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/xiaowa/p/15397130.html