针对问题咨询场景中出现大量相关领域的问题,PAI提供了智能客服对话系统解决方案,以降低客户等待时间和人工客服成本。本文以汽车售前咨询业务领域为例,介绍如何基于人工智能算法,快速构建智能客服对话系统。
您可前往阿里云AI体验馆中的智能客服页面,体验“汽车售前咨询”的服务示例。
背景信息
在企业服务用户的过程中,每天都会出现大量相关领域内的问题。传统的人工客服作息服务解答效率低,且成本高。针对该问题,PAI提出了如下解决方案,搭建智能客服对话系统,从而帮助企业实现在线服务的智能化人机协作、提高坐席服务的效率、降低人力开销及新人业务学习成本:
- 解决方案
PAI在智能客服领域提供了端到端的纯白盒解决方案。您只需要准备好自己相关领域的常见问题FAQ(Frequently Asked Questions)和知识图谱数据,就可以利用PAI搭建自定义的人工智能流程,形成从算法构建到模型部署的端到端解决方案,从而实现对应领域的智能客服业务系统。
本文以汽车售前咨询业务领域为例,为您展示如何快速搭建智能客服机器人,从而实现机器人自动回答关于汽车售前业务的相关问题。该方式不仅能够节省客户的咨询等待和信息检索时间,而且能够节省企业运营人力成本,使精力可以集中在高价值客户上。
- 方案架构智能客服对话系统工程部署架构图如下所示。
您先将知识图谱数据、模型和特征文件及FAQ数据存储在OSS上,然后将智能客服对话系统服务部署在PAI-EAS上,就可以使用FAQ检索和知识图谱查询提供的功能进行智能客服问答。
智能客服对话系统内部状态跳转逻辑如下图所示。系统初始化后进入闲聊状态,对用户输入“您好”等话语进行响应。响应完成后系统进入问题接收状态,此刻等待用户提问。接入通过实体归一化、属性归一化明确用户提问中的实体和属性,接着进入问答状态进行FAQ检索或知识图谱查询。当出现异常状况时,进入异常处理模式,在异常处理中引导用户进入正确的查询。
- 方案优势
- 纯白盒:您可以根据自己具体的业务场景自定义智能客服业务系统。
- 端到端:从最初的数据准备到最后的模型部署推理,提供全链路的系统构建流程。
- 有据可依:对话系统内所有的回答都是有依据的,避免纯深度学习方案的不可解释性。
- 鲁棒可控:系统任何地方出了问题,都有相应的异常处理与Bad Case分析应对机制。
前提条件
- 已开通PAI(Studio、DSW、EAS)后付费,详情请参见开通。
- 已开通工作空间,并添加MaxCompute计算资源和DLC计算资源,详情请参见创建工作空间。
- 已创建OSS存储空间(Bucket),用于存储标签文件和训练获得的模型文件。关于如何创建存储空间,请参见创建存储空间。
- 已创建PAI-EAS专属资源组,本文训练好的模型会部署至该资源组。关于如何创建专属资源组,请参见创建专属资源组。
- 已下载并配置PAI-EAS的客户端工具eascmd,本文使用该工具进行模型部署相关操作,详情请参见下载并认证客户端。
- 已开通ECS并创建ECS安全组,用于配置PAI-EAS在线服务。开通请参见通过控制台使用ECS实例(快捷版) 云服务器ECS快速入门 ,安全组创建请参见创建安全组。
- 已创建专有网络VPC和专有网络交换机,用于配置PAI-EAS在线服务。关于如何创建专有网络VPC和交换机,详情请参见创建和管理专有网络和创建和管理交换机。
- 已创建数据库Redis实例,用于配置PAI-EAS在线服务,详情请参见步骤1:创建实例。
操作流程
基于阿里云机器学习PAI平台,构建智能客服对话系统的流程如下:
- 步骤一:基于FAQ构建检索问答系统
检索问答系统在对您提出的查询进行预处理的基础上,从FAQ数据集中找到该查询的同义问句,从而匹配并回答预置好的答案。
- 步骤二:基于KBQA构建知识图谱问答系统
对问题进行语义理解和解析,进而基于知识图谱构建的知识库进行查询和推理,从而得到答案。
- 步骤三:配置智能客服在线服务
部署智能客服在线服务,并进行在线调试。
步骤一:基于FAQ构建检索问答系统
基于FAQ的问答系统总体结构如下图所示。
该系统包括以下关键模块:

- 频繁问答对数据集:FAQ问答库。
- 预处理模块:负责对查询进行分词等操作。
- 检索模块:负责从FAQ中检索可能与您查询相似的若干标准问句。
- 相似问句选择模块:负责从候选相似问句中,选择与您查询最相似的标准问句。
- 准备FAQ频繁问答对的数据集。FAQ是业务场景中最常问的问题,也称为标准问题。对于这类问题,您可以提前编制答案,构成问答对,即QA对(Question Answer Pair)。问答系统的知识库中存储的FAQ数据集,实际上是标准问题与其答案构成的QA对数据集。如果您提出的问题和FAQ数据集中的某个标准问题相似,那么您问题的答案就是该标准问题的答案。
构建频繁问答对数据集需要根据场景特点,确定问题涉及的范围。然后根据开放数据源及自有数据集,采集问答对内容或编写问答对内容。此外,本解决方案支持业务方持续对FAQ数据集进行优化,业务方可以增加一个标准问题、增加同一标准问题的同义问句、增加问题的答案配置集等。
本文以汽车售前的智能客服场景为例,展示FAQ所需的数据,文件列表及层级关系如下所示。car_faqs ├── query_label_idx_map.txt # 标注问题ID编号文件。 ├── questions # 标准问题同义配置文件。 │ ├── 保养灯的使用说明 │ ├── 保养一次多少钱 │ ├── 变速箱故障灯亮 │ ├── ...... ├── answers # 标准答案配置文件。 │ ├── 某汽车品牌_A型号_2021款_标准续航升级版 │ ├── 某汽车品牌_A型号_2021款_长续航版 │ ├── ......
以下为构建上述FAQ所需的数据文件的具体步骤。
- 对问答进行特征向量化。利用可视化建模PAI-Designer提供的基于海量大数据语料预训练获得的NLP迁移学习模型,构建查询向量表征模型。示例使用的训练集为train.csv、评估集为dev.csv、测试集为test.csv。
步骤二:基于KBQA构建知识图谱问答系统
基于知识库问答KBQA(Knowledge Base Question Answering)是指给定自然语言问题,通过对问题进行语义理解和解析,进而基于知识图谱构建的知识库进行查询和推理,从而得出答案。基于KBQA的知识图谱问答系统的架构图如下所示。
该系统包括以下关键模块:

- 实体链接:将问句中提到的实体关联到唯一的实体表达。
- 语义角色标注:对属性的类型进行自动打标。
- 意图分类:判断问句属于什么问题类型。
- 查询链路生成:生成查询知识库的查询语句。
- 答案生成:负责按照问题意图的类型,在答案模板里生成答案。
以下为您介绍如何准备基于实体和属性描述的知识图谱数据。
针对实体、属性名称和属性值,基于KBQA的知识图谱问答系统采用可读性强的JSON构建数据文件。属性名可以包括子属性,以“某汽车品牌_A型号_2021款_标准续航升级版”为例,车轮制动属性包括前制动器类型、后制动器类型、驻车制动类型这些子属性。您需要将业务中的数据转换为JSON格式。下面为示例文件某汽车品牌_A型号_2021款_标准续航升级版.json的部分样例数据。
{
"实体": {
"名称": "某汽车品牌_A型号_2021款_标准续航升级版",
"关键词": "某汽车品牌|A型号|2021款|标准续航升级版"
},
"属性": {
"厂商": "某汽车品牌中国",
"品牌": "某汽车品牌",
"经销商报价": "27.6万",
"级别": "中型SUV",
"上市时间": "2021.07",
"纯电续航里程": "525km",
"充电时间": "快冲一小时,慢充10小时",
"百公里加速时间": "5.6s",
"整车保修期限": "4年或8万公里"
},
"变速箱": {
"变速箱档位个数": "6个",
"变速箱类型": "手动变速箱"
},
"配置": {
"内部配置": {
"空调": {
"空调控制方式": "自动",
"温度分区控制": "有",
"后座出风口": "无"
},
"行车电脑显示屏": "有",
"倒车视频影像": "有"
}
}
}
步骤三:配置智能客服在线服务
- 创建安全组。创建安全组时,您需要注意以下参数的配置。
区域 参数 描述 基本信息 网络 选择已经创建的专有网络VPC。如果没有专有网络VPC,单击创建专有网络创建VPC,并完成专有网络中的交换机创建。 访问规则的入方向 协议类型 选择自定义TCP。 端口范围 配置为 6379/6379
。授权对象 填写已创建的PAI-EAS专属资源组对应的服务器IP。 重要 此处不能填写0.0.0.0/0,该策略会导致使用到该安全组的ECS、RDS等资源被外部入侵。 - 创建Redis实例,详情请参见步骤1:创建实例。创建Redis实例时,您需要注意以下参数配置,其他参数使用默认值即可。
参数 描述 网络类型 选择专有网络。 专有网络 选择已创建的专有网络。 虚拟交换机 选择已创建专有网络下的虚拟交换机(vSwitch)。 密码设置 选择立即设置,并填写自定义的密码。 - 获取Redis的连接地址和端口号。
- 单击已创建的Redis实例,进入实例详情页面。
- 在实例信息的连接信息中,查看专有网络的连接地址和端口号,在后续的部署中会使用到这两个信息。
- 准备数据。
- 部署在线服务。