基于Java的智能客服系统设计与实现_第1页
基于Java的智能客服系统设计与实现_第2页
基于Java的智能客服系统设计与实现_第3页
基于Java的智能客服系统设计与实现_第4页
基于Java的智能客服系统设计与实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要AI和5G网络的应用和普及,将会带来时代的新的变革,企业应该要抓住这样的机遇,创造开发出更好的产品和提供更好的服务。智能客服将在这个过程中扮演很重要角色:更智能化的产品需要人和机器进行对话,更好的用户体验也需要智能问答。本文客服系统包含人工坐席以及智能客服,默认先是智能机器人对话,不能回答的问题给人工坐席来回答。NLP来模拟人类进行对话的应用。智能聊天机器人可以代替企业中比较固定的对话、重复的需要大量人力的任务。企业需要快速回复客服问题,在当前市场上已经存在很多应用商能提供较为全面的智能客服系统,总体API但是在智能机器人客服中,用户的体验大都参差不齐。通常机器人按照功能可以分QA-BotBM25算法在知识库中进行匹配客户的问题以及根据打分机制超过阈值进行回复。Java的一个SpringActiveMqRedis缓ElasticsearchWindowsWindowsk8sDocker容器中。关键:Java 聊天机器人 知识库问答 对话系统 Docker容器目录摘 要 IAbstract II绪论选背景意义 (1)国外研现状 (1)本主要究内容 (3)论的章节 (5)客系统础 (6)Java基础 (9)智聊天器人要设步骤 (13)Spring框架 (14)2.5本小结 (14)系统设计智客服统的作原理 (15)3.2整架构 (22)3.3聊机器人 (23)3.4评体系 (24)3.5本小结 (25)机人客服 (26)4.2对系统 (33)4.3开环境建 (34)4.4本总结 (39)5.1系环境 (40)5.2机人测试 (40)5.3客服系统.........................................................................

(42)5.4本小结 (44)6.1总结 (45)6.2展望 (46)致谢 (47)参文献 (48)1绪论我们日常生活中会遇到大量的客服问题,比如说你打电话给联通、移动等,或者说在淘宝上买东西,这些问题大部分都是一些重复的问题,而且频率也特别高,非常的耗人工;对于一些客服咨询或者任务需求比较大的企业来说,如果使用大量的人工在线客服,会使得企业在客服这块的开销以及成本非常的大;人工客服是不24的有价值的数据,这些数据也没有被很好的利用起来。基于以上的这些原因,我们就会产生一个比较好的想法:能不能有一个机器人24天记录里面的一些有价值的知识点。这也是智能客服所出现的原因及背景。人工智能和5G网络应用和普及,将带来时代的变革,企业要抓住这样的机遇,必须创造更好的产品,提供更好的服务。聊天机器人将会在时代的更新过程中扮演比较重要的角色,既更加智能化的产品需要客户和机器人进行对话。智能客服系统能够有效减少人工成本、增强用户体验[1]。企业需要快速回复客服问题,在当前市场上,存在很多应用商能提供较为全面api以集成起来比较轻松。但是在智能机器人客服中,用户的体验大都参差不齐。聊天机器人[2],是一种通过NLP的方式来实现模拟人类进行对话的应用。智能聊天机器人可以代替企业中相对固话、重复的人力密集型任务或流程。典型的业务场景有:业务咨询类问答机器人、智能客服类机器人、行政助理类机器人、产品推荐类机器人。智能客服机器人的发展趋势智能聊天机器人的首次提出是源于五六十年代,阿兰图灵所发表的《计算机器与智能》中提到了图灵测试,同时这也被认为是智能聊天机器人的目标,让机器实1966年麻省理工学院的约瑟夫.[3]AI容易实现落地,这是因为智能客服系统领域的场景应用都是有相对较明确的特征。决定了基于全量数据进行高并发需求处理的人工智能将会在客服领域大有可为[4]。在人工智能领域,智能客服应该是比较容易落地,而且技术比较成熟,这是因为客服领域的场景路径具有相对明确的特征,决定了基于全量数据进行高并发需求处理的人工智能在客服领域将大有可为。目前,基于大数据、云计算和深度学习等领先的人工智能技术,智能客服已经可以实现自主问答、业务办理、故障诊断等一系列复杂操作,实现客服行业中大部分的应答需求,快速高效的解决用户问题。国内在智能聊天机器人的研究也发展的很快,国内出现了很多优秀的聊天机器apii细分。微软公司也推出了中文聊天机器人小冰,它是一个基于情感的聊天机器人。AI的智能客服已经可以做到自主问答和业务办理以及故障诊断等一系列复杂的操作,20185布的《中国智能客服行业研究报告》统计,包括基础硬件设施加客服人员大约规模40005G越来越普及,时代更新很快,智能客服系统将会在对话系统中扮演越来越重要的角色。智能客服系统细分领域整个智能客服系统的发展非常快,市面上已经开发好的智能客服有很多。应用也划分了几大类的细分领域。第一大类是对话操作系统级别的系统。那么这一类系统比较有代表性的有亚马第二大类系统是智能客服,智能客服类型中将其又细分为两类:一类是企业内部实现的智能客服,自主研发的智能系统为了适应公司的发展及需要;还有一类是对外提供服务的智能客服,这种客服是以以SaaS平台的方式对外服务。Sii[Cotna等。智能家居现在做得比较火热的就是一些智能音箱,比如说亚马逊Echo等。还有些公司是做一些智能交互的服务,这些智能交互服务主要是自然语言处理和意图识别方面的服务应用,其他的厂商如有需要可以在这些智能交互服务的基础之上做一些适合于自己的应用系统。第四类是开放平台,这个开放平台也可以叫BotFactory,比较有代表性的,有GoogleAPI.AIFacebookWit.AILuis.AI等等。这些开放平台主要是做任务对话方面的一些定制。智能客服系统的常见功能智能客服最常见的功能目前比较多的应用方式是扩展开发出智能的客服在人工客服的基础上,单轮的知识库问答、多轮语义对话以及人机协作等都是比较常见的功能。单轮问答:一问一答,但是没有记录上下文,每一次问答和下一次问答都没有任何的关系。多轮对话:是带着上下文来问答,每个问答可能跟它的上文是有一定关系,或者是它记录了上文的一些信息。人机协作:它是很有效的辅助人工的功能,目前实现的应用方式主要有:一类是机器人加人工进行问答,另外一大类是机器人推荐答案然后人工选择回答。我们这里举几个例子:比如说上班的时候人工来回答,下班的时候机器人来回答;优先级是普通的客户交给我们的智能机器人来回答,优先级是VIP的客户由我们的人工来回答;或者是说分渠道来选择,比如说微信客户端访问的由机器人回答,手机客户端咨询访问的由人工回答;还有就是机器人优先回答客户,机器人若答不出来,转给人工坐席来回答。客服系统主要目标智能客服的技术目标是需要做到以下这些目标,一个客服的机器人负责回答客户的一些高频简单问题,将疑难问题交给人工客服团队来回答,它是根据不同场景以及不同的技术条件不同厂商的技术能力而不同的,有的厂商是80%而有的是90%,这些是不确定的。总之智能客服做的一个技术目标就是按照一定比例的解决客服的简单的高频问题,将疑难问题仍然交给人工客服团队。这是目前智能客服一个基本的技术目标,是一个比较现实的目标。那么想让客服的机器人来完全取代人工客服,这个目标到目前为止在绝大部分场景下还没有办法实现,为用户提供更加便捷、舒适的服务[6]。客服工作台客服人员和消费者建立连接,并完成对话的聊天室,是客服系统的核心之一。除了建立连接的速度,消费者的用户体验也是在聊天的过程中体现的,当服务场景需要智能化和自动化时,也是围绕聊天室进行的。我们根据不同的访问端客户的需求不同,实现的聊天室会针对不同的需求有不同的设计,常见的状态(如图1-1所示)。图1-1客服工作状态客服工作状态有排队状态,人工坐席繁忙,消费者接入聊天室时没有空闲的客服人员接起会话,这时消费者往往会等待,在等待的过程中输入问题。此时消费者不能断开,断开后重连有可能重新排队。活动状态,人工坐席加入会话,开始和消费者聊天,解答问题,并且有可能进行几句寒暄。转接状态,当前服务人员有时会需要其他工作人员协助,往往也会直接将消费者转接到另外一名客服人员。这时,聊天室就被另外一名客服人员接管。关闭状态,聊天结束后的一种状态,代表服务聊天结束后的一种状态,代表服务顺利完成,比如消费者得到了满意的回答,关闭聊天室。该论文的实现分为六个章节,具体内容如下:第一章介绍的是本文的选题背景和意义,首先介绍智能客服系统的国内外研究现状,智能机器人的发展趋势、常见功能及细分领域。然后就是主要研究内容,实现的客服系统目标和客服工作台,最后就是组织结构。第二章介绍的是智能系统理论基础和实现系统所需要的关键技术。客服系统基础包括智能客服的服务场景、聊天机器人的分类、智能客服系统可能遇到的问题、Java基础介绍了mavenactiveMqRedis缓存MySQLesspring框架。第三章是系统的设计,首先介绍了智能客服系统的工作原理,包括系统所包含的模块、自然语言理解、意图识别、知识库、知识图谱、对话系统的设计。然后介绍了智能客服整体架构接着介绍了聊天机器人的三种实现,最后介绍了系统的评价体系,包括基于人工标注的评价和基于用户反馈的评价。第四章是系统的实现,首先介绍了智能客服系统的单点登录,然后介绍了机器人客服包括从开始创建机器人、安装机器人插件、词典管理、知识库问答对、意图识别、单轮与多轮对话系统、对话系统实现。接着介绍了开发环境的配置,最后介绍了开发好的应用程序如何在docker容器中运行。第五章是功能的测试,本章主要演示了我们的智能客服系统以及在局域网和外网情况下和机器人或者人工坐席对话,外网的情况还需要进行全端口映射。第六章是总结和展望,首先是对本文的工作的成果进行总结,然后分析了实现过程中遇到的问题及解决的方案,最后给出了本系统未来可以改进的方向。2理论基础与关键技术UI开发,后台逻辑开发,对话系统以及系统采用哪种方式来部署。前端页面采使用freemarkerLayUIspring框架,系统部署可以在云服务器上,可以配置相关组件及服务部署在Windows下,也可以把应用打包成Linuxdockerdocker-compose以及最k8s等。WindowsJava语言开发环境[7],系统开发的所用的Idea。智能客服服务场景聊天客服创建的机器人,它是模拟和人类问答对话的程序通过NLP。智能聊天机器人可以代替企业中相对固话、重复的需要大量人力的任务。典型业务场景:业务任务类机器人、咨询问答的机器人、行政方面的助理机器人、产品相关推荐的机器人。目前已经实现的比较完整的智能客服行业里,一般包含的应用服务场景有以下IVR以及智能的质量检测等。以下是阿里云对外公布的智能客服应用框架(2-1所示)。图2-1智能客服应用框架B端企业带来的价值,包括降低人工成本、提高工作效率、提供更精准准业回答等。而智能客服最大的隐性价值在于实际场景中得到的标准化后的数据积累,可以在挖掘客服价值信息中起到降本增效的作用,后续还可以作精准营销和产品升级。聊天机器人分类在智能客服系统里面通常会有聊天机器人这个模块,它也有不同的分类方式。按照所实现的功能分为:咨询问答型机器人、任务处理机器人以及Seq2seq-Bot机器人。QA-BotBM25[8]知识库中进行匹配客户的问Seq2seq-Bot中使用端对端的生成模型[9]。我们需要提取问句中的焦点词汇,以此去三元组或知识图谱中检索,且为了提高检则可以将数据用在我们的深度学习模型训练,这样就能得到所需要的目标模型。按照模式分类可分为:基于检索模式和生成式模式。BM25算法对问题进行预测打分,根据系统预先设置的阈值分,大于阈值情况下会从知识库中选出答案回复给用户。生成式模型[10],这种方法要更难一些,它主要基于机器翻译技术,但不是从一种语言翻译到另一种语言,而是从输入到输出的“翻译”。它可以引用输入中的实按领域分类可分为:开放领域和封闭领域。chatbotReddit这样的社交媒体网站上的chatbot这些系统不需要谈论政治,只需要尽可能有效地完成具体任务。当然,用户仍然可以在任何他们想要的地方进行对话,但系统并不需要处理所有的这些情况,用户其实也不期望这样做。智能客服系统中遇到的问题做通用智能客服系统还是垂直行业智能客服系统智能客服系统的都是2B的,通用型智能客服系统意味着市场更大,用户更多。技术优势现阶段各家差距不大,小公司可以给用户定制化,但是通用化系统不可以,最终变成市场很大,但是被一个个一句突起的做垂直领域的智能客服系统小公司蚕食了。互联网刚开始的时候,门户网站率先突起,能够服务大多数人的需求,接下来,微信公号可以订阅,每个人的阅读内容都不一样了,这就是一种定制版的资讯平台。从用户角度来说,定制化是演进方向,最终通用型客服会被垂直行业智能客服所取代。SAAS服务还是私有化部署传统行业的人工客服有限,往往对智能机器人回复以及结合人工坐席的需求比较大,单从数据安全角度来讲,会随着技术发展来解决,移动支付刚开始的时候大家还很害怕,绑定自己银行卡会不会被盗。有足够的投入才会有足够的资金支撑技化的更快。私有化部署其实并不是一个比较好的选择。服务大客户还是中小客户客户群体不一样,但是主攻大客户的话,一些定制化需求难以满足,而且大客户流程比较长,一般具有长期服务的服务商,对产品成熟性要求比较高,创业公司很难打进去。做垂直领域的SAAS系统,就需要有更多的用户使用,才能更快的迭代系统,只有一两个大客户,很难提出建设性的改进建议,所以说做中小客户,尽快的找到第一批用户,把系统跑起来然后不断优化迭代。智能客服系统评价体系智能客服系统可以进行对比分析[11]。客户希望自己提出的问题可以尽可能多地被解决,同时客户与客服进行会话的满意度也同样重要。我们使用最常用的评估方法Recall@k[12]。从运营的层面来讲,企业使用智能客服的一大重要原因就是其可以省去大量人力成本。由智能客服完成解答的问题越多,智能客服的拦截率也就越高,对运营层面来说效果也就越好,因此机器人对用户咨询的拦截率也是需要重点考察的指标。智能机器人要有意图识别,当用户咨询时,智能客服需要根据用户的问句以及上下文信息,准确识别出用户的咨询意图是什么,并返回相应的答案。除此以外,为了保证用户体验,还需要借助机器人的情绪识别的能力。这样不仅能够提高客服满意度,还能帮助运营对业务进行分析,如判断其刚上线或刚更新的业务的用户反馈情况(如图2-2所示)。图2-2用户服务企业需要快速回复客服问题,当前市场上,存在很多厂商能提供全渠道智能客服系统,相对来说,渠道对接已经非常成熟,集成起来容易。但是在智能客服实现上,用户的体验感觉都是不一样的。Java基础mavenmaven构建工具能够通过在项目的配置文件中使用少量的配置来管理Javaweb项目的构建。Maven的核心功能就是合理描述项目间的依赖关系,也就是通过pom.xml依赖文件的配置来得到jarjar包会很多,这样自己手动去配置是不太现实的。项目构建工具还有gradle,两者有一定的区别,gradleAndroid环境下的开发。activeMq消息中间件消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送。activeMqbrokebroke基于发布/者向多个消费者推送数据。这两种消息传递类型的不同,点对点传输消费者可以接/订阅模式的传输方式消费者只能接受到连接之后生产者推送的数据。activeMq-broker简介:brokeractiveMQ的一个简单实例,在程序中创建brokeractiveMqMaven项目然后引入依赖;2)web10条消息在队列中等待10messagemessage待消费了;我们先运行两个消费者,在运行一个生产10message,会发现对类中的数据会平均的分给每一个消费者消费,且每一条数据只能被消费一次。以上是基于队列点对点的传输类型。JavaJMS:JMS是一种规范,它定义了一些规则及接口,Java定义了消息服务的规范,不管哪个厂商做的消息服务的中间件,我们应用程序开发的时候activeMqactiveMqkafka更多一点,kafkaactiveMqkafka本质上的工作差不多。Elasticsearch全文搜索我们可以将es安装成Windows服务service:1)首先打开dos界面,在es相应bin目录下,运行命令service.batinstall;2)esservice.batstart;3)service.msces服务。esmysql比较多,而文本以es。Redismysql数据库Redis简介RedisRedismemcachedmemcached较好但Redis160开始的递增数字命databasesredis内存数据库操作事务的命是用keyJedis的使用JedisRedistcpjedistcpjedis对象的个数,在极端的情况下可能会造成连接泄露,而连接池的形式可以有效的保护和控制资源的使用。redis分片集群大型的应用一般都会随着访问并发量的提高而需要进行横向的扩容。redis为一个很高效的内存数据缓存,当然也有分片特性功能。简单介绍数据分片模型所谓数据分片,就是将所存储的数据按照一定的规则存储在不同的服务上,通redis如何实现分片redis集群内部被固定划分为16384个槽(slot)每个数据都会被存储在指定槽putkey时,rediscrc160x3FFF进行与运算确定数据存储的槽位,当数据正确存储后,通过Gossip协议向其他节点广播该数据的位redis没有中心路由的概念,所有节点都知道数据-节点的路由信息。/更新数据的时候是随机对master节点进moved异常(slot没有正在移动过程中)当然客户端最好能缓存数据与节点的对应关系,提升数据访问或者更新速度。PingPong操作pingpongpingpong能够提高数据传输的效redisping的。一般应用程序都会和数据库进行连接以存储数据,mysqlNavicatmysql数据库(2-3所示)。druid

图2-3 NavicatformysqlJava大型应用系统一般都是要连接数据库的。druid其实是很不错的一种选择。Jdbc主要是Java语言和数据库之间连接的驱动,是一种标准的Java应用编程接口,java语言和其他的数据库。HibernatemysqlSQL前端组件layUIUI框架,其代码非常简洁性很适合较快的开发系统所需要界面,先去官网下载layerscriptjsHTML/css/jslayUIlayui.csslayui.js<linkrel=“stylesheet”href=“./layui/css/lsyui.css”><scriptsrc=“./layui/layui.js”></script>,js代码可以直接书bodyjsjs文件。freemarkerThymeleaf,渲染视图是很不错的选择。API接口来将语音转换成文本比如科大讯飞。语义处理:由于机器本来是无法理解文本的含义的,如果要真正做到语义完整的解析理解需要涉及自然语言处理,工程庞大。可以换种思维,由于只能是做某个特定行业的VSMQA定的语料中这种匹配效果还是相当不错的。才能往下分析。VSM:VSM方案,第一步训练阶段,由计算机程序来总结分类的规则;第二步则分类阶,给程序一些它之前没有碰到过的文档然后进行分类。上下文语义:要做到理解上下文语义就需要引入决策树或神经网络。Spring框架如果我们开发的web系统是使用三层结构,持久层类中我们使用注解@repository、业务层类中我们使用注解@service和控制层相对应的类我们使用注解@controller。Beanspring容器中是容器来创建而不是程序员自己创建bean一个切面类,主要实现的原理是利用Java语言中的反射机制。比如我们的应用系统中有重复的日志模块,可以在切点处统一使用日志组件,通知有前置通知、后置通知以及环绕通知等。JavaRediselasticsearch全文检mysqlactiveMqlayUIjQueryspingspingspringbean初始化及自动装配。3系统设计包含的模块(3-1所示)。

图3-1工作流程首先可能会有一个ASR(语音识别)模块,也可能没有,这取决于具体厂商的一个选择,这个语音识别模块会把语音转换成文字。如果没有对应的语音识别转换模块,那直接操作的就是文本[13]。意图识别:对这个文字做一个问句的理解,或者说做一个查询的理解,理解完以后,再对意图做一个识别。机器回答:最后,我们把这个问句的理解和意图识别的结果带到对话管理系统里边[14],对话管理系统会决定到底是给哪一种机器人发过去。这些机器人最后给出答案,将答案返回[15]。对话管理系统可以选择一个机器人将问题发过去[16],也可以同时将问题发给所有的机器人,当它们都回复答案时,进行答案选择再返回,使用哪种方式取决于厂商自己的一个选择[17]。这四种类型的智能机器人对应不同的模块。第一种是任务管理类的模块,比如说订机票,它属于一个特定的任务,这种Siri,是任务处理类;第二种是知识库问答,也就是咨询问答类的,只是做一些咨询类的工作,一般情况下,它并不处理实际的一些任务;第三类是知识图谱问答[18],知识图谱是知识库中比较常见的是提供一个问答对和一个树型的结构,而知识图谱是提供了一个图结构。可以认为是一个广义上的知识库问答[19]。第四类是聊天机器人的技术,聊天并不是客服的首要功能,客服主要是解决原因在于,一是在用户没有输入知识库内容的时候,这个聊天机器人会被客户当成是测试厂商机器人技术能力的评测对象;二是在某些场景下,会让整个客服对话没那么单调。自然语言理解自然语言理解主要做一些用户的问题的预处理,如果是多句话,那么我们做一个“分句”,对每一句话来寻找答案,最后将答案组合起来发给用户;“分词”很常见,分词后才能理解以及进行标注,进行实体识别,这是常规的一些处理,然后就是句法分析、指代消解,再有就是词权重、语义相似度等等,做这些分析都是为后面的算法做准备,这是首先对文本进行预处理。意图识别第二部分进行意图的识别预处理。意图识别主要是用户的这句话暴露了用户什么样的意图,我们这个例子里“今天天气怎么样”,这个意图实际上就是用户要问天气。那么如果用户说“帮我定一张去上海的机票”,这个意思就是用户要订机票。意图识别一般情况下的使用方式有模板和分类方法。模板的方式:武汉今天天气怎么样?”我们会建一个叫“city”这里面会有武汉、北京、上海、天津等城市;我们会把今天、明天、后天等等也做一个词典,词典名字叫做“date”。这样如果满足刚开始有一个“city”,中间有任意字“date”,然后再有“天气”分类器方式:我们在某一个特定领域里面收集大量语料,人工去标注这些语料是属于哪种意图的,用分类器模型来做一些二分类或者多分类的分类器,用来判断意图。但是分类器方法需要大量人工标注的数据,以及如何去收集多个领域里面的语料的问题。基于知识库的问答我们可以使用检索的方式来实现。检索式回答的流程是:首BM25[20]、TF-IDF或者向量相似度等匹配出一个问题集合,这类似推荐系统中的召回过程;由于我们是一个问答系统,最终是直接返回给用户一个答案,因此需要从问题集合中挑出最相似的那个问题,这里会对问题集合做重排序,例如利用规则、机器学习或者深度学习模型做排序,每个问题会被打上一个分值,最终挑选出top1,将这个问题对应的答案返回给用户,这就完成了一次对话流程。在实际应用中,我们还会设置阈值来保证回答的准确性,若最终每个问题的得分低于阈值,会将头部的几个问题以列表的形式返回给用户,最终用户可以选择他想问的问题,进而得到具体的答案。知识库知识库问答[21]bm25问答型机器人在回答用户的咨询之前,首先要分析咨询的问题并对问题进行归类,然后再进行回答[22]。分为两个阶段:第一个阶段是侯选集的召回过程,第二个阶段是进行重排序。首先是侯选集,侯选集召回有很多种方式,和搜索引擎相比相对简单,原因是搜索引擎要召回的量特别的大,但是知识库是人工导入的,它的召回的就没有那么复杂。第二是重排序,其实我们可以用文本相似度、检索相关度,如果有足够数据的话,还可以用神经网络的语义相似度等来做重排序工作。这些工作也可以用多模型融合的方式来做,将多个模型的结果综合考虑得到最终结果。这些都跟搜索引擎的技术没有特别本质的区别,也会有些微小的差别,这是知识库这块的工作。知识图谱知识图谱问答最难的一点在于数据的整理,其次是工具方面[23-25]。有较多开源的工具比如Neo4j等。假设我们解决了数据来源和更新的问题,同时也有了工具,接下来要做的事情就是查询转换的工作,因为一般的知识图谱工具都会有一些自己的查询语言。我们所要做的工作实际上就是把自然语言通过某种方式转换成知识图谱的工具所支持的查询语言[25-27]。查询转换也有常见的两种方式,一种是可以用模板,做一些查询转换的工作[28](如图3-2所示)。对话技术

图3-2知识图谱对话技术比较典型的有三大类:第一大类是一种用状态机,或者和状态机类似的填槽方式。这种方式的主要特点是将整个的对话过程抽象成一个有限状态机,这里面的所有状态,以及所要执行的动作都是事先约定好的,所以状态机它比较适合一些场景简单的对话,对于场景复杂的对话,状态机这种方式就已经不太适应了。第二大类就是马可夫决策过程(MarkovDecisionProcess,MDP)的方式,它和状态机的区别在于它里面增加了动作,状态机里面的动作是我们事先约定好的,是固定的动作,已经事先知道对话到了那时候,于是就固定的采取这样的动作,但是MDP第三大类是端到端的生成式模型。端到端的模型主要出发点是我有一个问题,把问题输入到一个模型里面之后,这个模型是帮我解决了我们之前整个对话过程所有流程的所有问题,而这个模型是需要从数据里面去学习,包括对文本进行的自然语言预处理、用户的意图识别,还有智能客服其他的都需要全方面学习。这个模型对于我们来说它是个黑盒,我给它一个问题,它也能给我答案,我并不需要仔细的去研究里面是怎么做得,我只需要设计训练这么一个模型就行了。这三种方式是现在的比较常见的三类对话技术,第一大类,像状态机和填槽这一类是商用系统的主流;第二大类是学术界的主流,但是工业界也在积极的尝试,有的也已经落地或者接近落地;端到端这种模型,主要还是停留在学术界的研究阶段,目前还没商业系统已经做到了端到端的模型的产品化,还没有成为商用主流的技术。单轮对话与多轮对话技术如下:单轮对话指简单的一问一答,问题可以用一句话来描述而不依赖于上下文。对话系统中大量的问题都是这样的单轮问答,一般这样的问答依赖于一个知识库/问答对集合。机器人从知识库里检索相似的问题,然后给出答案。单轮对话指标召回率指客服机器人所能够回答的问题越多召回率越高。召回率等于机器人能回答的问题数除以问题的总数,会话没有召回可能存在两种情况:一是知识库规则不够全面,问题是知识库里没有的问题,在这种情况下需要完善知识库,这就涉及到知识库的初始设置和后续的自己学习。二是相似问题在知识库里面有,但是由于语义理解问题没有找到的情况,这就需要对其进行优化。例如相同的问题,k8s的k8s以归类为同一个问题,这个就是优化算法。准确率指对于闲聊机器人来说,因为闲聊场景下没有明确的正确答案,所以准确率不是闲聊机器人的主要评测指标。闲聊机器人更加的关注召回率,比如说问答的相关性,是否有情感等指标。对任务型和问答型机器人来说,要求优先保证准确率,也就是宁愿不回答不要不出错。准确率这一测评指标在实际应用中需要人工来标注机器人的回答是否准确,所以使用场景相对受限。企业的客服部门通常会使用问题解决率来作为日常工作中对机器人的主要测评指标。问题解决率指机器人成功解决的问题数=问题总数-转人工客服的问题数量-顾客经过反馈后不太满意的回答的数量,问题解决率等于机器人成功解决的问题数除以问题的总数。企业需要设置合理的机器人转人工策略,确保顾客在客服机器人不能很好的解决问题的情况下,可以转由人工客服接待。同时,企业应该在智能客服系统中应有对机器人客服的反馈功能和打分机制。单轮对话的难点第一是识别同一问题的不同表达式,在口语中通常一个意思有很多种表达方式。做的不好的机器人需要把左边的几个问法一个个的录入,而做得好的机器人只需要输入其中一个问法,其他的问法可以自动识别然后返回一个相同的答案。第二是理解语义细微差别,处理差异性问法,语言在叙述中常有细微的差别,可能是一两个子的区别,语义就不一样了,也有可能字完全一样但标点语气不同,表达的其实也不是一个意思。好用的机器人即使问句非常类似,但语义存在差别,也会自动匹配到不同语义下的不同答案。第三是聚类高频问题,机器人可以自动学习优化知识库。提高准确率以及召回率首先需要完善知识库。人工进行补充知识库是非常有难度的,使用的客服机器人需要有自己学习的能力,根据历史对话数据自动总结及挖掘不再知识库内的高频问句,补充和完善知识库。多轮对话多轮对话需要考虑话语之间的相互关系,可以处理不完整的语义情况并且记录历史话语。而单轮对话任意两句话之间都相互独立,执行一条指令所需要的全部信息都在这一句话中且没有记忆功能。多轮对话评测指标定制难度API多轮对话是不一定表现为与客户问答所进行的多次会话,如果用户的话语中已经提供了充足的信息,或者其他来源的补充信息已经足够将用户的初步意图转换为一条明确的用户指令,那就不会存在与用户的多次对话交互。多轮对话难点首先需要准确进行语义理解,要有上下文的关联、支持中途打断回溯、支持指代识别。其次是状态和个性化语言生成,“用户画像管理”,结合用户画像,机器人应当做出个性问答反馈,比如针对不同地域的用户咨询教育机构选课场景。北京的用户得到的机器人回复应当是北京开班的课程,上海的用户得到的回复则是上海开班的课程。所以即使是相同的问题,不同地域的用户所问得到的答案会完全不同。“对话状态管理”,比如“328日北京到上海的机票”->证信息,“请帮我订北京到上海的机票引导出发时间&身份证信息。意图识别和预置行业知识库有关系,预置行业知识库越完善,机器人对用户的意图就能够识别的更加具体和准确。在相同的意图大类下,还有可能会将更详细的意图进行分类。例如:“请问下你们使用哪家快递公司”和“请问下我的快递到时候能收到”都同样属于物流咨询意图,但从更细致分类来讲,“请问你们发哪家快递”属于咨询物流供应商选型的意图,而“请问我的快递走到哪儿了”属于查询物流状态的意图。任务型对话需要意图识别[31-33],而咨询问答型的对话并不会用到意图识别。整体技术架构如下图所示,包括基础服务层、应用服务层、编辑运营层、接入层以及在线客服系统。可以使用基于深度学习的自然语言模型[29-30]。基础服务层提供对话系统的基础技术能力,系统需要对用户输入的一段语句进行理解,同时需要识别用户的意图,包括通用意图和业务意图,通用意图是指用户是来做业务咨询还是闲聊,业务意图是指若用户是做业务咨询,具体咨询什么业务,这里会使用文本分类的技术去识别用户意图(整体架构如图3-3所示)。图3-3整体结构图KB-Bot基于问答知识库的机器人、Chat-Bot闲聊类型机器人。这是智能客服系统的三种核心能力[31-34]。编辑运营层是指有一个编辑团队支撑算法策略迭代,主要完成数据标注、问答运营、数据分析和效果评估的工作,这些工作输出会作用到基础服务API用来给业务方的系统进行接入。此外,机器不是万能的,用户有很多复杂的问题仍需要人工解决,这里有一套在线客服系统提供了人工客服功能,应用服务层能够跟这个在线客服系统对接。自然语言理解Jieba,hanlp等;第二步是词向量转换,中文文本分词以后依然无法被计算机识别,这是因为计算机只能进行数字的计算,word2vec;第三步是相似度计算,语句相似度指的是在中文语料中,两句话0-1BM25算法。BM25Query进行语素解析,生成语素qiDQIDqi相对于DQueryD的相关性得分。第四步是阈值比较,获取到知识库中每个问题和用户输入问题的相似度之后,究竟哪个问题的答案可以作为机器人最终的回答返回,这里就需要阈值比较来决定。人工在线客服java来实现的,采netty-socketIOssosessionsessionsping对Rds的支持是通过spingdtaRdisjdisConntionctoyRedisjavajedisspringjava组件来完成在线客服系统的开发实现。在智能客服系统里面通常都会有聊天机器人的模块。这个模块主要有以下三种实现方式:第一种就是检索式[35],比如答案是事先编辑好的,并不会随便生成,在检索式里面又会分为两大类:第一类是用大量的语料和模型来进行训练,需要收集大量的语料,然后把问题和对应的答案输送到一个神经网络的模型,用这个模型帮我去找到问题和答案之间的相关度,这样的话,就能够用大量的语料训练出聊天机器人模型,这是最常见的一种方式。第二种方式是基于规则来做,使用类似于之前介绍过的Alice机器人所用到AIMLpattern,以及在这个pattern如果需要编辑大量的规则,规则之间可能会有冲突等问题,所以主流的这种聊天机器人的方式是我们说到的第一种,用统计模型和大量的语料来训练聊天机器人。需要限定在一定的领域里面。开放领域里直接生成式的聊天机器人会有一些敏感词的问题,因为语料一般是网上收集的,想做到所有语料都人工审核成本是巨大的。所以说生成式需要把它限定在一个特定的领域里面,生成式分为两种,一种是纯粹的生成,一种是基于一些模板来生成。智能客服系统需要有一个完备的评价体系去评价它的好坏,在我们的评价体系中有基于人工标注的评价和基于用户反馈的评价两种方式:基于人工标注的评价系统的回答能力受限于知识库的丰富程度,因此并非能回答用户的所有问题,系统最佳的状态是将能回答的全部回答准确,不能回答的全部拒识,即拒绝回答。因此这里的评价指标包括有结果率、拒识率、召回率和准确率等,我们的目标是让系统的有结果率无限接近数据的真实有结果率,召回率和准确率尽量高。这里我们是通过标注标准评测集来计算系统的各项指标,我们会从每日的全量数据集中抽样出一个小数据集,保证小数据集的数据分布尽量符合全量数据集,然后由标注团队对数据集做标注,标注出每个问题的实际答案,一般标注完成后还有质检的环节,以保证标注结果尽量准确,这样便生成了每日数据的标准评测集。基于该标准评测集我们会去评价系统的好坏,并且每次做新模型迭代时都会使用标准评测集去评价新模型,只有新模型的效果好了才允许上线。基于用户反馈的评价人工评价能够评价智能客服系统的准确率,但是答案是否合理,能否为用户解决问题,需要用户去反馈评价,整个智能客服系统的最终目标是帮助用户解决问题。我们会在产品上设计智能客服和在线客服的评价功能,例如会让用户评价智能客服的每个单轮对话回复的答案或者某个对轮语义的对话,在客户和人工客服聊天完毕会发一份表单让用户去评价使用系统后的满意程度。最终我们会统计参评比例、满意度等指标,这些指标能够真正的反应智能客服系统的好坏。实际中往往用户参评比例低,我们会使用各种方法去刺激用户评价。意图识别、知识库、知识图谱、对话系统的设计。然后介绍了智能客服整体架构,包括基础服务层、应用服务层、编辑运营层、接入层以及在线客服系统。接着介绍了聊天机器人的三种实现,最后介绍了系统的评价体系,包括基于人工标注的评价和基于用户反馈的评价。4系统的实现各个系统之间就能够感知到该用户已经登录无需再登录(4-1所示)。图4-1机器人客服客服机器人将加入到聊天室中,它有两种参与客户服务的方式:辅助客服人员及接管聊天室,直接和消费者沟通。具体地说,在排队阶段,引导消费者问问题,借助智能问答引擎服务,进行意图识别,如果意图匹配到了智能问答引擎中的多轮对话,就启动多轮对话,完成服务;未匹配到多轮对话则继续排队,在客服人员接入会话时,机器人客服针对消费者的问题,给客服人员建议回复。针对不同企业客户的需求,机器人客服的服务方式也可以调整,最主要的是机器人客服可以利用多轮对话和知识库,提高用户满意度、提高效率、人工坐席专注于更加棘手的问题。创建聊天机器人聊天机器人即服务,它面向互联网用户开放,聊天机器人开发者/开发商可以快速实现企业级的聊天机器人服务,以保护用户隐私为前提,以提供专业的服务来赢得青睐,采用按量计费的方式获利。目前市面上能够见到的第三方机器人有很多比Chatopera云服务是企业级别的服务我们使用第三方api接口,登录Chatopera云服务,注册并在【控制台】中创建聊天机器人(如图4-2所示)。图4-2创建机器人创建一个问答作为测试示例。点击知识库按钮跳到下一个页面后我们再点击新建问24安装机器人插件配置环境变量:在机器人客服问答中,会从云服务检索答案,答案有时候也包含很多条记录,怎么回答访客的问题按照如下策略:(1)首先,每个答案包含于访客问题的相似度,该相似度在0-1区间,值越大二者越是相似。(2)最高的相似度的答案如何大于或等于最佳回复阈值时,机器人客服将直接发送答案给访客。(3)如果2中没有得到答案,那么将相似度大于或等于建议回复阈值的记录作为一个列表发送给访客。(4)如果2和3都没有答案则进行预先设置好的兜底回复。设置环境变量:0.80.6,议回复阈值。词典管理什么是词典:词典就是机器人在对话中所掌握的概念,机器人凭借词典区分不同实体,词典通过不同形式约定了一个词汇的集合。实体是比如订一份外卖需要知道用户想定什food、time、num、taste、address,Chatopera机器人平台提供多种形式的词典。词典类型:Chatopera机器人平台预置的词典,词典标识以"@"包括词汇表词典和正则表达式词典两种类型。系统词典:(1)系统词典可以直接引用,无需配置词条。已有的系统词典包括:地名(@LOC),人名(@PER)、时间(@TIME)和组织机构(@ORG),在引用系统词典页面中可以看到。(2)引用与取消引用对于系统词典我们可以引用或者取消引用。已经被引用了的系统词典我们可以用。词汇表词典:词汇表词典就是管理词条,一个词汇是否属于某词汇表词典,就是检查该词汇1-32位。同一个机器人下的词典标识名不能重复,词典标识名一经确认后无法修改。在词典管理页面点击新建自定义词典,在弹出的对话框里输入正确的自定义词典名称,词典类型选择“词汇表”,点击确定。对于已经创建的自定义词典可以修改中文名。对于我们不再需要的词典可以点击删除。对于已经绑定了槽位的自定义词典不可删除。添加词条:使用分号分隔词项,第一个词项作为标准词,后面的词项作为同义词。修改词条:一个词条的标准词一旦确定不可修改,但是同义词可以修改,点击编辑按钮,出现输入框可以对同义词进行修改。查找词条:对于词条较多的词典来说,可以快速搜索词条。在搜索框输入我们在机器人词典中已经创建好的词条之后点击回车键就可以进行搜索。搜索完成后搜索框中出现一个清楚按钮,点击之后清除本次搜索。在编辑完所有词条之后,需要进行保存,否则变更不生效。比如本页词条有变更的情况下进行翻页或者搜索,都需要先进行保存。保存成功后会重新训练机器人。为了用户有更好的体验,需要对自定义词典进行维护与管理。在创建时,创建词典添加词条时,尽可能多的全面的添加不同的词条和同义词,便于在槽位中被识别出来,如果说用户的词条在该自定义词典中没有就无法识别。使用时在历史消息中可以查看所有机器人和用户之间的对话,如果发现用户说的词条在该自定义词典中没有,则应该加入词典。正则表达式词典:正则表达式词典是通过正则表达式的形式约束一个词汇的集合,正则表达式是以一定语法作为规则的语法。命令规则如下,词典标识名为字母、数字、下划线的1-32位;同一个机器人下的词典标识名是不能够重复的;词典标识名经过确认后不能再进行修改。在词典管理页面点击新建自定义词典,在弹出的对话框里输入正确的自定义词典名称,词典类型选择"正则表达式",然后点击确定。ChatoperaPCRE标准,PCRE是"Perl-compatibleregularexpressions"的缩写,广泛的被各种编程语言支持,虽然在PCRE机器人平台使用C++BoostRegex库。添加正则表"添加表达式"项目下,写入表达式,点击"添加",然后点击"保存"。保存成功后会重新训练机器人,如果遇到错误会弹出提示消息,对于没有意图或意图中没有说法的情况,训练机器人会失败,这时候保存正则表达式词典是成功的,该错误可忽略,后续在添加了意图和说法后,就正常了。正则表达式定义支持多个表达式,在使用正则表达式词典时,会按照正则表达式列表的顺序进行匹配,如果匹配到表达式就跳过其他表达式,否则继续匹配,直到遍历表达式列表。保存成功后会自动训练机器人,还需要确认表达式是否能够按(4-3所示)。图4-3验证表达式验证表达式的过程就是在输入框中输入一段测试文本,然后点击“验证”,结果会显示在下方。上文提到了Chatopera机器人平台的正则表达式词典是基于C++BoostRegex库并使用PCREPCRE正则表达式有邮箱[-*@([az09]az09]+.)+[z]{2,14\d{15}(\d\d[0-9xX])?QQ号码[1-9][0-9]{4,}。正则表达式是一个易学难精的技能,相关Perl正则表达式或PCRE正则表达式的适用于Chatopera机器人平台的正则表达式词典。知识库知识库是基于信息检索系统的一问一答的问答服务,通过建立【问题-扩展问-答案】和近义词实现智能问答,常用于常见问题集的机器人对话。系统集成聊天机器人时,发送的知识库检索或者多伦对话检索,会返回置信度score也称为命中阈值,该值在[0-1]区间,值越大代表机器人越确定回复的准确性。对知识库的评测常常用一系列测试问题查询返回结果,进而计算机器人回答的准确率评价检索系统。在系统集成时,常常设定一个置信度,在高于该值时可以将机器人的回复返回给消费者。或在某个区间时,询问消费者是否问以下问题,这是目前智能客服常见的场景。通过知识库管理页面的命中率调试窗口,开发者可以调整置信度来调试知识库。ChatoperaExcelExcel,客服人员想要快速回复客户消息非常困难,同时也有不容易维护的问题,小助手的出现主要就是专门用于解决这个问题而开发的。意图识别客户的意图是什么,然后根据识别到的意图继续与客户问答。得到这个意图的相关信息之后,机器人才会去执行这个意图所代表的任务。初次使用首先需要创建一个机器人,对该机器人进行配置,配置主要包括词典在添加意图的槽位时需要对词典进行配置,包括新建自定义词典或引用系统词典。在创建后默认是没有词条的,这种情况下会导致训练失败。相似的在正则表达式词典也需要有表达式定义,否则会导致机器人训练失败。如果碰到训练失败的情况,通过错误提示消息进行解决,在保存词典,保存意图时会进行训练(如图4-4所示)。图4-4意图识别模块配置意图的槽位时需要为各个槽位设置对应的词典,此时可以在槽位配置模块选择词典时引用系统词典或者新建自定义词典,在测试机器人的时候,测试对话窗口输入意图中的用户说法对机器人进行训练,机器人识别到意图后会对该意图下添加的槽位进行追问。然后用户输入内容时候,该槽位对应的词典会进行检索词条包括标准词或者近义词,只要检索到机器人会进行下一个槽位的追问,对于没有设置必填的相应槽位,我们的机器人不再对其进行追问。机器人识别到所有的槽位后会结束对话然后建立新的会话。添加说法:对于用户的说法,可以添加没有槽位的说法,也可以用{}关联槽位,把槽名称放到{}里面即可,一个说法可以绑定多个槽位。用户说法如果关联槽位后,在测试机器人的时候,用户输入该槽位对应的词典中的词条,则首先追问的是该槽位。机器人存在调试版本时可进行测试,测试无误后可对当前调试版本进行发布上线。对于不会再使用的槽位我们可以删除它。对于需要修改的槽位,我们也可以直接进行编辑和修改即可。在编辑完所有说法和槽位之后,需要进行保存。保存并且训练成功有提示。显示成功之后我们就可以进行测试了,每次保存并且训练成功后,都会自动更新调试版本。但是此时不该急于发布上线,需要多次在测试对话页面进行测试,确保无误之后再发布上线(如图4-5所示)。图4-5添加用户说法和槽位对话理解方法基于语义解析:任务型识别用户对话意图并将其参数化[36],比如:今天晚上七点帮我在安宁自助火店预约一个包厢2个人。意图是预定餐厅,词槽是餐厅名{安宁自助火锅}、时间{2020.5.1119:00}、人数{2},参数化就是生成结构化的数据。技术手段(如表4-1所示)。表4-1常见技术手段启发式规则&推导传统机器学习深度学习优势少量数据即可启动数据&特征驱动优化纯数据驱动优化优化手段直观可控具有较好的泛化效果具有较好的泛化效果劣势需要大量的专业知识需要领域特征工程容易达到效果瓶颈需要标注大量语料需要海量语料可迁移性较差可迁移性较差可控性、可解释性差可控性、可解释性差基于语义匹配:问答型识别用户对话意图并找到与该意图最相似的问答对,也就是从知识库中找出与这句话最相似的问题,然后然后给出这个相似的问题的答案。技术手段有先输入查询->语言处理->语义计算<-->问答数据库->相似查询。词槽是满足用户对话意图时的关键信息和限制条件,可以理解为用户需要提供的筛选条件。比如在查询气候时词槽是时间和地点,词典是词槽的所有词汇所组成的。对话样本是用来给对话系统做示范,教它在用户说的具体句子里,该如何理解对话意图,哪个词是重要信息及对应的词槽是什么。对话模板用来给对话系统按照具体语法、句式做出的示范,教他在某一特定语法句式中该如何理解对话意图,哪个词是重要信息以及对应的词槽,特征项是什么。比如:通过对话样本标注告诉机器人“三亚明天会不会下雨”与“三亚明天会下雨吗”“三亚city这个词槽,“明日”和“明天”time词槽。这样的训练越多,机器人的理解能力便越强,这与学习语言中的人类孩童的学习方式十分相似。例如:“[D:sys_loc][D:sys_time]天气如何”,上述标注表示可以将所有满足“[城市]+[时间]+天气如何”query优先级就应该是最高的。对话系统分类按场景分类有任务型[37],有任务目标,且需要参数化请求比如智能助手,整个对话围绕一个目标,一般通过多轮对话才能达成这个目标。问答型是有任务目标,无参数化请求如智能客服,单轮就可以完成对话。闲聊型是开放不限定领域如陪聊机器人,通常是任务型和问答型结合使用。人的表达会存在各种各样的情况,所以不管用户说什么,不要把它当成是一个错误来处理,而是要考虑如何把这转变为一个机会,去推进更顺畅自然的沟通,让机器进行主动学习。对于重要的请求,需要明确的显性确认,而对于低风险的任务可以采用隐形的确认。把它转变为一种提供有价值的互动的机会,让机器人像人一样在交流中学习[38]。对话系统[39]一般包括语音识别、自然语言理解、对话管理等,对话系统的搭建有两种方式:代码工程实现和第三方工具实现。传统的软件开发和对话系统的开发是有区别的,对话系统的分析中,要善于利用线上的对话日志,通过用户在对话过程中的纠正、反馈,来优化对话模型中的对话理解效果,让机器人越来越聪明。我们可以使用ubuntucorpus数据集作为测试集来测试对话系统效果[40]。bm25算法,elasticsearch搜索引擎也是采用类似的算算法首先对查询语句进行语素解析,生成语素qidqid的相关性得分进行加权dword2vec,将用户输入的中文问题转换为计算机能够识别的数字。JavaspringRedisRedisMySQL比较慢比如进行客服与客户会话时。MySQL用来存储关系型的数据比如咨询会话,elasticsearch建立倒排索引用用来进行全文检索。客服系统的访客与客户端之间的通信是全双工通信,websocket是TCP协议的客户端与服务端的双向通信。依赖:GitJava8maven3.0IntelliJIDEA署在容器中运行的话需要Linux下安装docker及容器管理工具kubernetes或者docker-composeMySQLNavicatforelasticsearchactiveMqWindows服务(4-6所示)配置执行:

图4-6Windows服务spring8035,因为应用是部署在本地执行,本地电脑网络没有接入公网,所以其他客户端只能在局域网内访问程序,为webnat123nat123访问者软件,这web应用。我们的应用系统还esmysql数据库、消activeMqRedis的连接端口、数据库的服务器地址在本文中是本机、连接池的最大连接数等。Elasticsearchmysql的配置(4-7所示):图4-7es和mysql配置activeMq配置(4-8所示):Redis配置(4-9所示

图4-8activeMq配置docker

图4-9redis配置DockerLinux下运行的容器技术,它和虚拟机不同,两者的隔离级别不一样。微服务技术近年来越来越兴起,因为容器中运行应用程序方便快捷,不需要配置繁琐的环境变量和运行配置,只需要在一台机器上把已经开发好的应用程序打包成镜像然后发布到的个人仓库或者公共仓库,在任何电脑上就可以下拉镜像,然后docker容器中运行应用程序,而且容器可以和宿主机的端口进行映射,可以把容器中运行的应用发布成服务,这样外界也就可以访问容器中运行的应用了。Dockerdocker-swam,docker-swam是一款用来管理多主机上docker容器工具,可以监控容器状态。如果容器的状态不正常它会帮你重新启动k8s它本身的功能是和DockerSwarmk8s是谷歌公司根据自身多年的运维经验研发的一dockerswamdocket公司研发的。Docker-Compose只能管理当前主机上的Docker,也就是说不能去启动其他主机上的Docker容器。composek8sdocker-compose.ymldocker-compose.ymlk8sdocker-compose.ymlconvert操作去转换,我们也是可以直接运行命令的。可以把已经开发好的应用程序打包成镜像,然后在容器中运行服务,首先需要Linuxk8sdocker-compose使用较为简单,所以本文使用它来安装服务。首先写好docker-compose.yaml文件,终端进入到该目录运行以下命令(4-10所示):图4-10启动服务图4-11应用程序启动应用程序启动后(4-11所示)localhost:8035就可以访问到我们的智能客服系统,然后输入管理员账号和密码就登录到系统了。查看运行中的服务(如图4-12所示)。图4-12运行中的服务docker-compose.yaml文件里面经常会有服务名和容器的名字,这两者docker的概念,所以我们在docker里面,处理的是容器。服务是属于docker-compose的概念。docker-composestart/stop处理的服务名字而不是容器名字。创建机器人、安装机器人插件、词典管理、知识库问答对、意图识别、单轮与多轮Windowsdocker容器中运行。5系统功能测试系统环境主要包含了软件检测与硬件检测。其中硬件环境是本机Windows10系统电脑,具体配置参数如表5-1所示。软件测试环境如表5.2所示。5-1CPU内存操作系统Inter(R)Core(TM)i5-7300U@2.0GHz2.50GHz8.00GBwindows105-2软件名称版本Redis5.0.5Elasticsearch2.4.6activeMq5.14.3Mysql5.7Nginx1.10.3Kubernetes1.8.7这些相关软件涵盖了智能客服系统的开发和测试环境需要用到的相关服务,安装并且配置好这些软件之后,就可以进行相关指标的测试了。决率。召回率指机器人能答上来的问题越多,则召回率越高。召回率=机器人能回答的问题数/问题总数。问题解决率计算如下,机器人成功解决的问题数=问题总数-转人工客服的问题数量-顾客反馈不满意的数量,问题解决率=机器人成功解决的问题数/问题总数。准确率这一测评指标在实际应用中需要人工来标注机器人的回答是否准确,所以使用场景相对受限。图5-1知识库测试2000.6,然后在Chatopera(5-1所示)。根据知识库系统匹配到的问题数,可计算得召回率、准确率、问题解决率相关指标(5-3所示)服结合人工客服解决一些咨询类的问题。表5-3测试结果召回率准确率问题解决率96.26%95.43%94.69%登录我们的智能客服系统设置好的账号和密码,本系统使用单点登录(如图5-2所示)。5-2登录界面进入系统后,点击坐席进入对话列表页面,可以显示历史

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论