在当前人工智能技术发展的热潮中,对话系统已经越来越实用化。与一般的闲聊对话系统不同,特定领域的对话系统是基于知识,带有上下文推理的实用性对话系统。保险领域是典型的特定领域,介绍了一种保险相关领域对话系统的基本构建方法,可以帮助用户快速、实用地在某特定领域和场景下构建对话系统,且具有一定的推广性和拓展性。
中文引用格式: 代文韬,林诗璐,朱小燕,等. 基于知识图谱的保险领域对话系统构建[J].电子技术应用,2019,45(9):18-21,27.
英文引用格式: Dai Wentao,Lin Shilu,Zhu Xiaoyan,et al. A knowledge-based dialogue system for insurance domain[J]. Application of Electronic Technique,2019,45(9):18-21,27.
人工智能是当前世界科技发展的潮流。问答系统和对话系统是人工智能系统中既古老而又年轻的话题。随着互联网服务对象的规模日益扩大,为了提高效率,降低人力成本,很多特定领域的服务都开始引入自动问答系统。保险行业由于其业务量大、业务范围广、业务面对的对象多等特点,非常需要对话系统的建设。图1中描述了特定领域对话系统的一般结构,自然语言理解模块对用户的问题进行语义分析,产生语义结构,再通过对话管理和答案生成模块得到答案。对于特定领域的对话系统,知识图谱的地位非常重要。没有知识,就不能理解用户输入的上下文,也就不能进行对话。在结合知识的基础上,对自然语言进行分析,识别出用户的意图,通过对话管理,生成多轮的对话。
虽然随大数据和人工智能的发展出现了很多通用的知识图谱,例如Google的Knowledge Graph[1]就已经有了30亿条数据,但是如此庞大的图谱不足以支撑垂直领域所需要更细致的专业知识,对于保险领域来说也是如此。保险行业由于知识的复杂性、动态性和保密性,缺乏真实可用的知识图谱和与之相对应的语法分析与对话管理。
1 知识图谱构建和维护
对于领域的对话系统,知识图谱是非常重要的。当需要在一个新的领域构建一个对话系统时,首先必须做的就是构建出可以反映领域知识的知识图谱,然后在知识图谱的基础上,才可以真正地理解用户的意图,从而实现有上下文交互的对话流程。
1.1 知识图谱的表示
通常来说,知识图谱是基于语义网对概念、关系的抽象描述,描述专业领域知识和各类资源及资源之间的关系,可以帮助人类和计算机更好地协同工作[2]。本文使用RDF和RDFS作为知识图谱的描述语言[3]。资源描述框架(RDF)是用来表示万维网上各类资源和信息的一种语言,用三元组(Triple)的方式描述对象和对象之间的关系,通常可以形式化为(Subject,Predict,Object),简称为SPO。RDF Schema(RDFS)是对RDF的一种扩展。RDF通过类、属性和值来描述资源,在此之外,RDF还需要一种定义应用程序专业的类和属性的方法。应用程序专用的类和属性必须使用对RDF的扩展来定义。RDF Schema就是这样一种扩展,专门用来定义知识图谱的结构框架Schema。
1.2 知识图谱构建的一般方法
知识图谱的构建包括了本体的构建与知识实例的填充。常用知识图谱构建方法有企业建模法(Tove)、骨架法(Skeletal Methodology)、Methontology法、循环获取法、七步法等[4-5]。根据特定领域具体情况,本文借鉴了七步法构建知识图谱。7个步骤如图2所示,分别为:
(1)确定知识图谱的专业领域和范畴。明确构建的语义本体所覆盖的专业领域、构建目的、作用、维护和应用对象(这些元素与领域本体的建立有着很大的关系,所以在开发语义本体前就必须确定)。(3)列出语义本体中的重要术语。着手建立自己的本体前,先根据专业知识重要术语列出一个术语表。(4)定义类(Class)和类的等级体系(Hierarchy)。建立一个类等级体系一般来说有3种方法:一是自顶向下法,从领域中最大的通用概念开始,而后将这些概念细化;二是自底向上法,由等级体系树中底层叶子类的定义开始,然后将这些叶子类合并为更为概括的较大概念(即向上回溯);三是综合法,综合以上两种方法,首先定义直接大量显而易见的概念,然后再对它们进行进一步的归纳和细化。(5)定义类的属性。一旦定义好了类,就要开始描绘概念间的内在结构,即类的属性。任意一个类的所有下位类都会继承其上位类(父类)的属性。为了方便操作,属性的定义多是基于之前列出的术语清单。(6)定义属性的限制。属性限制有许多不同的类型,如描述赋值类型(value type)、允许的赋值(allowed value)以及赋值的基数(cardinality)。除了上述几种限制外,还有值域(range)和定义域(domain)的定义。(7)创建实例。在类和属性的结构确定后,根据实际情况和知识,建立实例。
1.3 保险领域知识图谱
保险领域包括了产品、个险、核保和养老社区等子领域。通过4步法,本文构建了如表1所示的知识图谱。
以保险产品为例,按照图3的方式定义了保险的层次类别。
一个具体的保险产品就是一个保险产品类的实例,同时具有多个属性。很多时候,实体和属性的关系往往比较复杂,这也需要在知识图谱里面加以体现。最简单的情况就是“实体-属性-值”,例如:(XX保险定义<def>)。除此之外,还存在以下几种复杂的情况,如图4所示。
例如:对于问句“我投保你们这个产品A的时候,定价是怎么定出来的?”,表示了如下的实体属性关系:“产品A-投保-定价方式-值”。在这种情况下需要引入一个空白节点(Blank Node),产品A是实体,投保是对象属性(OP),定价方式是数据属性(DP)。
例如:对于问句“我是个青少年,投保你们这个产品A的时候,定价是怎么定出来的?”,表示了如下的实体属性关系:“产品A-投保-定价方式-青少年-值”。即产品A是实体,投保是OP,条件属性(UC)为年龄阶段,条件是青少年,定价方式是DP。
例如:对于问句“产品A订单的查看方式是什么?”,表示了如下的实体属性关系:实体1是产品A,实体2是订单,查看方式是DP。语义分析是对话系统的核心,它负责分析输入的自然语言中关键的要素和整体的意图,对整个问答系统的处理能力起着至关重要的作用。基于语义模板的语义分析模型是比较成熟的语义分析方法。由于在特定领域,用户所用的语言和所涉及的语言变化相对较少,使用语义模板可以基本覆盖实际的需要,具有简单易行、准确性高、实用性强的特点。因此本文采用了改进的基于语义模板的语义分析模型。一方面把领域无关的语义知识和领域相关的语义知识分开,另一方面利用多层次模板生成的方法,保证模板的准确度与灵活度。模板既人工可控,可以较为精确地处理每一类问题,又可以充分体现人类智慧在人工智能中起到的指导意义。语义分析的基本流程如图5所示。
图5表示了语义分析的整个流程:自然语言通过预处理,得到分词后的字符串流,包括了各种命名实体的识别、特殊符号的识别等。字符串流和模板库中的模板进行匹配,得到相应的对话意图。同时输入的字符串通过信息检索的方法,对语料中存在答案的QA对进行搜索,通过相似度比对找到最相似的答案。后处理模块决定采用模板还是QA对的结果,将结果输出到对话管理。语义模板规则是通过模板的形式把用户的意图映射到知识图谱上面,例如:模板R:(如何|怎么)(购买|买){{保险产品:e}}→(e,p=“购买方式”,?)从工程上来说,类似R这种类正则表达式的方式,用户维护起来比较困难,很难考虑周全。本文把用户维护模板与系统模板分开,通过多级语言知识扩展,生成系统模板。模板生成模块递归调用同义规则资源,将可维护的模板自动生成为机器使用的模板。所谓的同义规则,主要由3种规则构成:(1)停用词规则:在句子中可以被省略的词,并不会影响句子的实质语义表达。通常这些词为副词、助词等。(2)同义词规则:在任何上下文中都可以相互替换而保持同义的词汇。例如:母亲和妈妈。这部分资源,可以在已有语言学资源的基础上(例如:同义词词林),经过人工编辑审核得到。(3)同义转换规则:只在特定上下文中是同义的,通常有较大的结构性的变化。这部分资源可以一方面通过人工编辑补充,也可以在较大规模的标注数据上归纳得到。如上的规则在很多情况下是领域无关的,维护好同义规则资源,对于领域迁移有很大的益处。统一转换规则1:如何购买{{NP}}→购买{{NP}}的方式R1:(如何|怎样)(购买|买){{保险产品:e}}对话管理模块的作用是处理对话的上下文信息,进行相应的逻辑运算并返回回答结果的表达式。特别对于保险领域来说,用户的主要目的不是闲聊,而是要获取相应信息,对话的进程有一定的限定性和指向性。对话管理模块主要包含了对话管理模型与自然语言生成两部分内容。在经过语义分析和意图分析后,输入的自然语言已经被转化为一个较为明确的逻辑表达式。对话模型旨在建立一个完整的对话流程控制和对话逻辑处理的体系,以完成对话系统的对话功能。结合特定领域的特点,本文采用了基于有限状态自动机的对话模型[6-7],同时结合了填表的方法来构建对话管理模块,如图6所示。
在当前保险领域,自动机的状态由{实体,意图,条件,上下文}四元组决定。状态之间转移而发生的对话动作(DA)主要有寒暄、反问、推荐、查询。自动机的设计遵循如下的规则,在当前状态下:(2)如果可以在知识图谱中得到结果,就返回查询结果;(4)如果在知识图谱中找到多个结果,按照条件或者意图反问澄清,并根据回答更新上下文。考虑到保险知识图谱的复杂性,自动机在自动生成的基础上,针对知识图谱的特殊结构做了特别的处理。例如:保险的投保年龄分别涉及投保人和被保险人的年龄,而年龄又有上限和下限的具体限制,如图7所示。在查询投保年龄时,系统检查上下文中是否包含了“对象”信息,以及所问的具体属性是否明确。如当用户询问“X保险最小几岁能买”时,系统反问“您想问的是X保险哪个对象的投保年龄下限:投保人、被保险人”,此时如果用户补充“被保险人”,系统便能回答“X保险被保险人的投保年龄下限为0岁”。每轮对话都会产生DA,DA由逻辑表达式通过可编辑的模板生成自然语言回答。答案生成模板是开放用户维护的。如果通过答案表达式索引到了多个模板,则从这些模板中随机进行选择,答案的形式可以变得更加丰富,也使得系统与人交互更为友好和智能。答案生成的数据资源和自动机逻辑是完全分离的,这使得系统能够快速有效地进行迁移。本文在保险领域构建了实用的对话系统。为搭建系统,在9 000条用户真实QA数据上进行了实体和意图的标注,构建了约800个语义模板。在40 000条用户真实测试集合上取得了93%正确率的效果,系统在实际的运行中,不满意占比小于10%,效果良好。
本文从特定领域的特点出发,介绍了特定领域对话系统的构建方法。总的来说特定领域的对话系统是以知识图谱为灵魂,语义解析和对话管理为核心的对话系统,强调实用性,时效性,可移植性。在具有较高冷启动性能的基础上,通过从易到难,从简单到复杂,从数据到知识,再从知识到数据的过程,逐步提高系统的表现。(1)从较大规模无结构数据中提取知识的有效性,利用半监督学习和增强学习的方法,尽量减少人工干预;(3)适用于特定领域的语法分析器,在满足数据量的基础上,结合知识图谱的向量化,通 过深度学习,得到更好的语言模型;(4)更好地利用数据评价知识,并对知识进行加权,甚至引入部分常识性表示;(5)更好地利用知识评价数据,减少标注数据的偏置,通过主动交互的方法,更有效地加快系统收敛的速度。
参考文献
[1] EHRLINGER L,WOB W.Towards a definition of knowledge graphs[C].SEMANTICS,2016.
[2] 李洁,丁颖.语义网、语义网格和语义网络[J].计算机与现代化,2005,7(4):38-41.
[3] MANOLA F,MILLER E.RDF primer recommendation[EB/OL].(2004-02-10)[2019-05-14].http://www.w3.org/TR/rdf-primer.
[4] 韩韧,黄永忠,刘振林,等.OWL本体构建方法的研究[J].计算机工程学报,2008,29(6):93-101.
[5] 王梅.OWL领域本体构建方法研究[J].图书情报工作,2006,50(12):30-35.
[6] 黄民烈,朱小燕.对话管理中基于槽特征有限状态自动机的方法研究[J].计算机学报,2004,27(8):1092-1101.
[7] LIU Y,HAO Y,ZHU X,et al.A question answering system built on domain knowledge base[C].Web-age Information Management,2015:111-122.
作者信息:
代文韬1,林诗璐2,朱小燕1,黄民烈1
(1.清华大学 计算机科学与技术系,北京100084;2.华北电力大学 控制与计算机工程学院,北京102206)