智能客服机器人:基于知识图谱的多轮对话系统

news2024/11/26 0:41:21

━━━━

近年来,随着人工智能的快速发展,人机交互能力不断增强,其中问答技术能够在保证一定准确度的情况下极大地简化用户的搜索操作,在节约时间的同时,还能够加深用户对搜索事物的了解程度,百度公司的小度、苹果公司的Siri等正是基于问答技术形成的产品。

作为问答技术的关键构造,对话系统根据对话目的或应用场景的不同,可以分为任务型对话以及非任务型对话。前者一般面向特定任务,目的是尽可能准确且使用较少对话轮次完成用户提问、查询等语义任务;后者则以聊天机器人为代表,对话领域开放,目的是尽可能用多样化、丰富的表述来模拟人类对话。在人机对话过程中,提问与回复往往需要多方面的知识作为支撑,因此将知识图谱应用于多轮对话,可以帮助对话系统在面对特定领域提问时,完成更为准确且更有意义的回复。在国家重点研发计划项目的支持下,哈尔滨工业大学研究团队结合知识图谱与冬奥会主题的内容,构建出冬奥会智能客服机器人,其能够满足体育赛事票务查询预订以及交通路线规划的用户需求,实现基于冬奥会知识图谱的多轮对话,回答用户的相关提问。

━━━━

面向冬奥会的任务型对话系统

冬奥会对话系统属于任务型对话,具有领域范围小、主题明确等特点。研究团队基于管道方法(Pipeline Method)搭建了面向冬奥会的任务型对话系统,其主要由自然语言理解(NLU)、对话管理(DM)自然语言生成(NLG)以及用户交互四大模块组成(见图1);研究团队还建立了基于反射机制高扩展性框架

自然语言理解模块可以将用户输入的语言文本换为结构化语义框架表示(包括领域、意图、槽位-槽位值对集合)并输出,主要包含意图识别与槽识别两个任务。意图识别任务负责将用户语句文本归类到其对应的意图类别之中。槽识别任务负责将用户语句文本中全部的槽位-槽位值对识别出来,一般被视为序列标注问题

该模块的语言理解任务涵盖票务与交通两大领域,属于多领域语言理解任务,包含8种意图识别类型(如询问比赛时间、询问比赛地点、规划交通路线)以及14种槽位(如比赛名称、地点、目的地),槽位采用BIO标注模式,前缀“B-”表示槽位开始词,前缀“I-”表示槽位中间词,“O”表示非槽位词,系统在进行填充时会去掉前缀。对话开启后,该模块会先加载预训练好的模型,由对话管理模块判断用户输入语句是否为本轮对话的首句。若是,则调用适用于文本分类的卷积神经网络(TextCNN)模型对其进行意图识别(见图2),并返回意图识别的结果;然后调用具备考虑上下文信息能力的双向长短时记忆网络(BiLSTM)模型对该句进行槽识别(见图3),得到每个词对应的槽类型,再将词的值填入对应槽,并返回至对话管理模块。

对话管理模块是整个系统的调度模块,可以利用对话历史与用户语义框架表示来追踪对话状态并生成对话行为,主要包括对话状态追踪任务与对话策略任务。对话状态追踪任务是指根据对话历史与当前用户对话文本来推断更新当前对话状态的过程。对话状态包括槽位及槽位值,能够表示对话过程的进度。对话策略任务是指根据当前对话状态生成的对话行为。对话行为由动作谓词与槽位构成,动作谓词表示基本的意图(如Inform表示通知、Request表示请求、Thanks表示感谢、Closing表示结束),即用户或对话代理想要执行什么操作,槽位表示语义内容,即用户或对话代理执行操作所需的信息。

该模块采用的对话状态追踪技术,会先将所有槽位分为Inform类型槽位(其槽位值来自用户,在对话过程中用于约束信息查询)以及Request类型槽位(其槽位值是用户在与对话系统交互过程中期望获取到的有关信息),在给定由自然语言理解模块从用户对话文本中解析到的语义框架表示之后,会根据当前对话状态中的限制条件(Inform类型槽位信息),检索数据库中符合条件的数据,再利用语义框架表示数据库检索结果,将对话状态更新并获取下一个对话状态,最后将对话状态转换为对话策略任务需要的形式,例如基于规则的对话策略需要对话状态的语义框架表示。

自然语言生成模块可以将结构化的对话行为表示转换为自然语言语句,使用基于规则的方案。这是因为在冬奥会赛事背景下,票务查询与预订、交通路线规划这两项需求相对比较简单,人工规则需求量不大且制定难度较低;此外,基于生成式模型的方案需要大量难以收集的领域相关对齐语料,且生成式模型生成的自然语言难以保证文本的流畅性与信息准确性。在基于规则的自然语言生成模块实现过程中,研究团队先为不同的对话行为定义不同的模板。该模板由自然语言文本与槽位标签构成,例如,在模板“您想观看什么时候的{{比赛名称}}比赛”中,“{{比赛名称}}”就是槽位标签。当使用模板生成自然语言时,需要先根据当前对话行为与对话状态中的已知槽位集合,在模板数据库中进行查询,选出满足相应条件的模板,再根据对话状态中的已知槽位信息替换模板中的槽位标签,从而得到该对话行为对应的自然语言文本。

用户交互模块是一个前端交互界面,主要完成系统与用户之间的交互,用户交互功能通过WEB网站实现。当用户输入信息时,向后端发送信息,经自然语言理解模块、对话管理模块、自然语言生成模块调用,并将处理后的结果返回至前端,回复给用户。浏览器/服务器(B/S)模式的开发优势在于WEB网站可以在最大程度上实现资源共享,即在网站部署之后所有用户都可通过浏览器进行访问,并且系统维护成本较低,更新升级只需修改服务器端的代码。此外,研究团队选择基于具有小巧、灵活、支持高并发等优势的Tornado框架来开发该对话系统,并使用Ajax技术来实现系统前后端分离,即前端界面通过Ajax请求完成与后台的信息交互。这种低耦合性的实现方式,对于系统的后期升级与改造大有裨益。

为解决任务型对话系统每次模型更迭都需要对源代码进行繁琐而低效的更改这个问题,研究团队在面向冬奥会的任务型对话系统架构设计中使用Python的接口类机制与反射机制,并通过模块抽象类定义、模块抽象类扩展、设置类文件路径、反射机制获取对象这四个步骤,建立了基于反射机制的高扩展性框架。第一步,研究团队先为自然语言理解、对话管理、自然语言生成3个模块,分别定义一个抽象类,并为各抽象类定义对应的抽象方法;第二步,可以对第一步预先定义好的抽象类进行扩展,以不同的方式实现其抽象方法;第三步,将类文件路径(从根目录开始)以及类名称(文件中扩展类的名称)的信息填写在配置文件中,为反射机制获取对象做准备;第四步,反射机制是指计算机程序在运行时可以访问、检测与修改其自身状态或行为,在Python语言中,反射机制将字符串转换为类对象,直接调用扩展类的抽象方法,而不需要对源代码进行任何修改,从而大大提高了系统框架的可扩展性。

━━━━

基于知识图谱的多轮对话小程序

对话系统所需的冬奥会知识图谱由清华大学李娟子老师团队提供,其中大约包含15836个三元组、7397个实体、14种关系。实体主要分为4大类,即冬奥会、比赛项目、场馆、参赛人员,其中冬奥会包含首届至第二十四届冬奥会的基本信息;比赛项目包含高山滑雪、冰壶、冰球等16个大类,每一大类又包含多个子类,如高山滑雪包括男子滑降、高山混合团体赛等;场馆包含历届冬奥会的部分比赛场馆;参赛人员仅包含历届冬奥会的获奖运动员;关系主要包含比赛场馆、运动员获奖名次(第一、二、三名)等。

哈工大研究团队基于冬奥会知识图谱构建了多轮对话数据集。首先分析知识图谱的本体及其关系(图谱中每个节点即本体,各条边即本体之间的关系),得到本体关系图(见图4),并转化为有向图(需要根据实际情况人工添加或删除部分路径,见图5),然后分别以各个本体为起点遍历有向图(已遍历节点不能重复遍历),得到全部最长路径,再对全部路径进行拆分与融合,得到子路径,每一条子路径即对应一个多轮对话模板,最后将知识图谱中相应的实体与关系填充到模板中,即可得到多组基于知识图谱的多轮对话语料。

在多轮对话数据生成过程中,系统可以对用户语句进行自动标注。例如,利用模板“{冬奥会}有哪些比赛项目?”生成语料时,可以自动生成模板填充的实体及其编号等标注信息,用于命名实体识别(NER)数据生成,同时可以标注问句的意图类型,用于意图识别数据生成。生成的17010条不同的意图识别数据,主要包括13种意图,询问的具体内容分别为吉祥物、参赛国家和地区、比赛场馆、场馆举办过第几届冬奥会/举办过的比赛、比赛项目、某个大类的子项目、某个子项目的第一名/第二名/第三名、某个运动员参加过哪几届冬奥会/参加过哪些比赛/取得的成绩。此外,该程序包含冬奥会、项目大类、子项目、运动员、场馆这5种槽位,每一个意图可以对应多个槽位。

多轮对话系统的前端为微信小程序。多轮对话的主要流程为“输入当前用户语句→进行意图识别→进行命名实体识别→判断识别实体的类型→根据意图与槽位信息进行对话”,其中意图识别使用BiLSTM模型,命名实体识别程序使用BiLSTM+条件随机场(CRF)。在多轮对话中,系统会将每次识别到的实体及其类型保存至对话历史,这样一来,对于省略了部分实体的用户提问,系统仍能做出正确回答,从而保证了上下文的连贯性。

━━━━

意图分类实验与对话演示实例

缺乏自然语言理解模块的标注数据通常是在新领域构建任务型对话系统所遇到的第一个障碍。为此,研究团队总结归纳出一套自然语言理解模块标注数据半自动化构建方案,其主要流程为“人工标注意图识别种子语料→爬虫扩展语料→人工校正意图识别语料→模板扩展语料(需要扩充时)→人工标注槽位填充语料”。研究团队最终收集到6970条数据,以其中的5586条作为训练集、692条作为测试集、692条作为验证集,并在此数据集上分别采用TextCNN、FASTTEXT、ERNIE这3种模型进行意图分类实验,结果表明:三者中ERNIE与TextCNN的效果更优,准确率(Accuracy)分别为97.83%与96.24%,宏平均F1(macro avg F1)分别为93.36%与92.03%,加权平均F1(weighted avg F1)分别为97.83%与96.24%。

面向冬奥会的对话系统在体育赛事票务查询与预订方面,可以识别出询问比赛时间、询问比赛地点、询问比赛票价、预订比赛门票等用户意图;在交通路线规划方面,可以识别出询问交通工具运营时间、规划交通路线等用户意图。对话演示实例如图6与图7所示,当用户在系统输入框内输入想要咨询的问题后(如“帮我买花样滑冰的比赛门票”“请问从望京到鸟巢怎么走”),对话系统先通过自然语言理解模块对其进行理解,分析识别出用户的意图、槽位及槽位值,之后依次对用户目标中的约束信息(如比赛日期、购票数量、比赛时间、门票类型、出行策略)进行询问,最后利用询问过程中收集到的全部信息,在后台数据库进行查询,并做出正确流畅的回复。

在正常连贯的对话中,用户的下一条提问很可能会省略之前已经提及的部分信息,因此对话系统需要结合上下文来理解用户的提问,即使当前问题省略了部分实体,系统也能做出连续而准确的回复。多轮对话小程序演示实例如图8所示,用户在第三条提问中省略了第一条提问所提及的“平昌冬奥会”与第二条提问所提及的“越野滑雪子项目”,所以第三条提问实际是在向对话系统询问“平昌冬奥会中,越野滑雪的子项目——男子竞速赛的第三名是谁?”

哈工大研究团队开发的冬奥会智能客服机器人,基于目前的冬奥会知识图谱,可以帮助人们更为精细地了解冬奥会的相关知识与发展历史;在未来,不断升级改造的冬奥会智能客服机器人,在接入冬奥会数据平台后,也能具备服务北京2022年冬奥会的能力,可以帮助想去现场感受冰雪赛事的人们解决票务查询预定与交通路线规划等具体问题。

致谢:感谢国家重点研发计划“云计算和大数据”重点专项项目“大数据驱动的自然语言理解、问答和翻译”课题“面向自然口语交互的情境化语义理解和多轮对话交互管理技术”(课题编号:2017YFB1002102)的支持。

本文刊登于IEEE Spectrum中文版《科技纵览》2021年8月刊。

专家简介

郑德权:现任哈尔滨商业大学教授,就职于哈尔滨工业大学期间参与完成该项研究工作。

衣景龙:哈尔滨工业大学硕士。

赵铁军:哈尔滨工业大学教授。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一篇文章搞定《Android中View的绘制流程》

一篇文章搞定《CoordinatorLayout完成电商首页》 本文前言怎样到达ViewRootImpl过程如下:流程图小结: 到达ViewRootImpl做了什么第一步:setView()第二步:performTraversals()第三步:DecorView中的Measure()、Layout()、…

nginx配置代理报错

1.背景 因部署需要将项目用nginx进行二次转发访问,配置过程中出现各种报错,现将记录如下 Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as.... 2.nginx配置如下 upstream wuhan1 {#server 19…

【SpringBoot】整合Elasticsearch 操作索引及文档

官网操作文档:Elasticsearch Clients | Elastic 踩坑太多了。。。这里表明一下Spring Boot2.4以上版本可能会出现问题,所以我降到了2.2.1.RELEASE。对于现在2023年6月而言,Es版本已经到了8.8,而SpringBoot版本已经到了3.x版…

Hyper-v 虚拟机挂载物理硬盘的方法-Windows Server 2022/2025

起因: 之前我写过一篇介绍在KVM虚拟机体系下,如何直接挂载物理硬盘和物理分区的方法:KVM虚拟机直接挂栽物理硬盘分区的方法_给libvirt虚机挂载磁盘_lggirls的博客-CSDN博客。近期帮助一个朋友搭建局域网,其中有OA系统要用到window…

【安全】awvs使用(二)

目录 一、设置目标 二、设置登录 三、扫描引擎 四、开启扫描 五、扫描结束 六、报告 前言:怎么使用awvs进行扫描出报告呢? 一、设置目标 二、设置登录 因为扫描的网站需要登录的,这里需要设置这个 三、扫描引擎 四、开启扫描 翻译的页面…

【正点原子STM32连载】第三十六章 SPI实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第三…

测试实战总结,性能测试-秒杀系统实战与优化,彻底打通性能测试...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 对于大并发量的系…

小程序跳转

小程序的路由跳转 一、路由跳转的方式 1.1 wx.navigateTo wx.navigateTo 保留当前页面,跳转到应用内的某个页面。会将页面缓放在页面栈中,最多十个。 wx.navigateTo({url: test })1.2 wx.redirectTo wx.redirectTo 关闭当前页面,跳转到应…

电商项目,订单如何测试?软件测试实战场景,所有测试点汇总...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 订单测试作为常见…

scanpy单细胞分析流程

梳理一下scanpy单细胞分析流程(处理的是scRNA-seq)。 先上一张流程图: scanpy单细胞分析流程 import scanpy as scRead data 常用的文件格式有两种,分别是h5ad和10X mtx # read h5ad adata sc.read()# read 10X mtx adata …

从小白到大神之路之学习运维第44天---第三阶段----拓展知识-----文件管理命令(find+sed+awk)、pycharm工具

第三阶段基础 时 间:2023年6月20日 参加人:全班人员 内 容: 目录 一、文件管理命令 find 1. 根据文件名查找文件 2. 根据文件类型查找文件 3. 根据文件大小查找文件 4. 根据时间戳查找文件 5. 组合多个条件查找文件 Sed 1. 替…

【Vue】学习笔记-创建Vue3.0工程

创建Vue3.0工程 使用vue-cli创建查看vue/cli版本,确保vue/cli版本在4.5.0以上安装或者升级你的vue/cli创建启动 使用vite创建创建工程进入工程目录安装依赖运行 使用vue-cli创建 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-…

【性能测试】压力测试指标全解之TPS、响应时间

hello,大家好!我是磨磨唧唧小蘑菇~ 接上期阐述了《TP50/90/99/999》的含义及计算方式,本期将阐述压力测试的其他指标,如TPS、响应时间等。 目录 一、TPS 二、响应时间 三、TPS与响应时间RT的关系 一、TPS 1、TPS的含义 …

vscode折叠代码展开快捷键

1.折叠所有代码 (按住ctrl 分别点击k和0) ctrlk,ctrl0 2.展开所有代码 (按住ctrl 分别点击k和j) ctrlk,ctrlj 3. 折叠鼠标竖线所在位置的节点以及当前节点下的子节点(递归折叠) ctrlk,ctrl[ 4. 展开鼠标竖线所在位置的节点以及当前节点下的子节点&#x…

【Springboot】关于Spring和SpringBoot的那些事儿

参考javaguide的学习笔记~ 1 怎么那么多名字呀~ 一开始看到这个图太劝退了,但实际上一开始只需要理解它是一个框架,包含很多个模块,能够简化开发。 使得接收HTTP请求,查数据库,写业务逻辑三部分能够分开。 并且能很…

【2023最全最叼教程】Selenium 自动化测试环境搭建

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。本文详细介绍了搭建自动化测试环境所需的工具,让你学习自动化测试不…

人脸检测——基于机器学习3】AdaBoost算法

简介 主要工作AdaBoost算法的人脸检测算法包含的主要工作:(1)通过积分图快速求得Haar特征;(2)利用AdaBoost算法从大量的特征中选择出判别能力较强的少数特征用于人脸检测分类;(3)提出一个级联结构模型,将若干个弱分类器集成一个强分类器,其能够快速排除非人脸区域,…

系统架构设计师-系统工程与信息系统基础(2)

一、电子政务类型 电子政务主要有3类角色:政府(Government)、企(事)业单位(Business)及公民(Citizen)。如果有第4类就是公务员(Employee)。 二、企…

CMIP6降尺度方法

气候变化关系到农业、生态系统、社会经济和人类生存与发展,是当今世界关注的重点问题之一。IPCC(Intergovernmental Panel on Climate Change)第6次评估报告指出,自 20 世纪 50 年代以来,从全球平均气温和海温升高、大…

Unity核心10——导航寻路系统

Unity 中的导航寻路系统是能够让我们在游戏世界当中,让角色能够从一个起点准确的到达另一个终点,并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往 ​ Unity 中的导航寻路系统的本质,就是在 A 星寻路算法的基础上进行了拓展和…