狭义地讲,知识图谱是由谷歌公司首先提出,被互联网公司用来从语义角度组织网络数据,从而提供智能搜索服务的大型知识库。
形式上,它是一个用图数据结构表示的知识载体,描述客观世界的事物及其关系,其中,节点代表客观世界的事物,边代表事物之间的关系。在具体实现上,知识图谱用语义网(Semantic Web)中的资源描述框架(Resource Description Framework, RDF)对知识体系的实例数据两个层面的内容进行统一表示,共同构成一个完整的知识系统。
扩展开来,知识描述、实例数据及其相关的配套标准、技术、工具及其应用系统构成了广义的知识图谱。
如何让计算机自动阅读、分析、理解海量、繁杂乃至泛滥的数据,从中挖掘有价值的信息,为用户提供精准的信息服务,是构建下一代信息服务的核心目标之一。
语义网的定义: 定义一种对客观世界进行描述的概念化规范(即本体),基于本体并通过一套统一的元数据规范对网络内容进行详细的语义标记,从而赋予万维网信息以含义,将网页互联的万维网转化为内容互联的语义网。
知识图谱的几个特点:
目前所定义的知识图谱智能表示事实性的知识,或者称为以实体为核心的结构化知识。知识类型还有很多:常识知识、场景知识、事务知识、情感知识等。
知识图谱丰富的语义表达能力和开放互联能力,为计算机理解万联网的内容以及万联网知识互联打下了坚实的基础。
知识图谱的发展经历了从人工标注到群体智能,到基于统计机器学习的自动构建过程,也体现了从单一语言、单一领域到多语言、多领域的发展趋势。
知识图谱本身是一种语义网络,但是相较于传统的知识表示,现有的知识图谱以三元组为统一表示形式,不仅形式上更加开放,更容易被人们接受,其存储、搜索和推理也更加高效。
以符号表示为基础的知识图谱和以数值计算为基础的深度学习在不同应用中各有优势,目前的趋势包括在深度学习方法中融合知识图谱和在知识图谱中应用深度学习技术。
知识总体上可以分为陈述性知识(或称描述性知识)和过程性知识(或称程序性知识)两大类。
在对各种知识进行收集和整理的基础上,进行形式化表示,按照一定的方式进行存储,并提供相应的知识查询手段,从而使知识有序化,这是知识共享和应用的基础。知识编码和数字化形成了知识库。
计算机擅长处理结构化数据。然而,互联网中大量的信息以非结构化的形式存储和传播,为了让计算机能够处理这些信息,就需要理解这些非结构化形式数据蕴含的语义,分析其中的语义单元之间的关系,从而将其转化为结构化形式。数据的结构化并和已有的结构化数据进行关联,就构成了知识图谱。知识图谱对于知识服务有重要的支撑作用,能够将传统基于浅层语义分析的信息服务范式提升到基于深层语义的知识服务。
按照Wikipedia的描述:
知识图谱是谷歌公司用来支持从语义角度组织网络数据,从而提供智能搜索服务的大型知识库。
从这个意义上讲,知识图谱是一种比较通用的语义知识的形式化描述框架,它用节点表示语义符号,用边表示符号之间的语义关系。在计算机世界中,节点和边的符号通过“符号具化(symbol grounding)”表征物理世界和认知世界中的对象,并作为不同个体对认知世界中信息和知识进行描述和交换的桥梁。
在计算机科学技术领域,对知识和结构化数据的表示和存储具有不同的技术路线,最典型的包括本体(Ontology) 和 数据库(Database) 两类。
人工智能应用中不仅需要具体的知识实例数据,数据的描述和定义也非常关键。知识图谱用统一的形式对知识实例数据的定义和具体知识数据进行描述,即用三元组形式(二元关系)对知识系统进行资源描述和存储。
各个具体实例数据只有在满足系统约定的“框架”约束下运用才能体现为“知识”,其中框架(Schema,或称“元知识”)就是对知识的描述和定义,知识框架和实例数据共同构成了一个完整的知识系统。
在约定的框架下,对数据进行结构化,并和已有结构化数据进行关联,就形成了知识图谱。
知识图谱往往需要将自身的框架结构映射到某种数据库系统所支持的框架定义上,必要时可以对数据库进行专门的扩展。所以,知识是认知,图谱是载体,数据库是实现,知识图谱就是在数据库系统上利用图谱这种抽象载体表示知识这种认知内容。
知识图谱以结构化三元组的形式存储现实世界中的实体以及实体之间的关系,表示为 G = ( E , R , S ) \mathcal{G}=(\mathcal{E},\mathcal{R},\mathcal{S}) G=(E,R,S),其中, E = { e 1 , e 2 , … , e ∣ E ∣ } \mathcal{E}=\{e_1,e_2,\ldots,e_{|\mathcal{E}|}\} E={e1,e2,…,e∣E∣}表示实体集合, R = { r 1 , r 2 , … , r ∣ R ∣ } \mathcal{R}=\{r_1,r_2,\ldots,r_{|\mathcal{R}|}\} R={r1,r2,…,r∣R∣}表示关系集合, S ⊆ R × E × E \mathcal{S}\subseteq\mathcal{R}\times\mathcal{E}\times\mathcal{E} S⊆R×E×E表示知识图谱中三元组的集合。
尽管目前大多数知识图谱都以三元组的形式表示各种类型的知识,但是实际上知识图谱的知识表示绝不仅仅在以二元关系为基础的三元组上,还体现在实体、类别、属性、关系等多颗粒度、多层次语义单元的关联之中,它以一种统一的方式体现知识定义(Schema)和知识实例(Instance)两个层次共同构成的知识系统。
从工程角度,知识框架一般包含三个层次的知识:
知识图谱营部应该包含推理规则型知识?
知识图谱以丰富的语义表示能力和灵活的结构构建了在计算机世界中表示认知世界的物理世界中信息和知识的有效载体,成为人工智能应用的重要基础设施。
可以从人工智能和语义网两个领域进行追溯:
因此,知识库在人工智能和语义网领域的目标可以分别总结为知识的数据化(让计算机表示、组织和存储人类的知识)和数据的知识化(让数据支持推理、预测等智能任务)。
1977年,图灵奖得主斯坦福大学教授费根鲍姆(Edward Feigenbaum)最早提出了“知识工程”的概念,他认为:“知识中蕴藏着力量(In the knowledge lies the power)”,并通过实验和研究证明了实现智能行为的主要手段在于知识,在多数实际应用中是特定领域的知识。
语义网使用能够被计算机理解的方式描述事物之间的联系,它的基本出发点是计算机能够自动识别并理解互联网上的内容,并对不同来源的内容进行融合,从而为人们更加快速地获取信息提供了技术支撑。
语义网的目标是以Web数据的内容和语义为核心,以计算机能够理解和处理的方式链接起来的海量分布式数据库,其理想是将整个万维网上的在线文档所构成的数据编辑成一个巨大可用的数据库。但是,在数据处理和智能应用上仍然存在缺陷,限制了语义网在实际中大规模使用的可能性。
由于以上问题的存在,语义网刚推出的十年间,并没有被大规模应用,但是在这方面的成果,大力推动了使用本体模型和形式化手段表达数据语义的方法的研究,为后续知识图谱的研究热潮奠定了基础。
语义网得到真正的发展,以维基百科(Wikipedia)为核心的协同知识资源起到了功不可没的作用(甚至可以说是决定性作用)。
最典型的两个大规模同一领域知识图谱Freebase和DBpedia都是以Wikipedia的Infobox数据为基础构建而成的。Freebase更偏向于知识工程的技术路线,而DBpedia更偏向于语义网的技术路线。
知识图谱这一领域的蓬勃发展是在Google于2012年正式提出知识图谱(Knowledge Graph)这个概念后。Google试图通过知识图谱,对网页内容进行刻画,从这些非结构化的文本内容中提取实体以及实体关系,将其事实性的文本内容转化为相互连接的图谱结构,从而让计算机真正做到内容理解。
根据知识的客观性,可以把知识分为事实性(或者客观性)知识和主观性知识。
根据知识的变化性质,已有的知识可以分为静态知识和动态知识。
另外,也可以把知识分为领域知识、百科知识、场景知识、语言知识、常识知识等。
常识也是人工智能领域的一大难题,目前对于常识的边界、常识如何表示等问题在研究界还存在很大的争论,常识的存储和利用也仍然是一个难点问题。
文中将已有的知识图谱根据领域和用途大致分为语言知识图谱、语言认知知识图谱、常识知识图谱、领域知识图谱以及百科知识图谱等几个类别。
传统构建知识图谱的方法主要基于专家知识,如:Cyc、WordNet、HowNet等。这些知识图谱无论是覆盖领域还是知识规模都难以达到实用的程度。
随着机器学习技术的发展,许多自动构建知识图谱的技术也发展起来,极大地提升了知识图谱的规模并拓宽了覆盖的知识领域,代表性的知识图谱有WOE、ReWeb、NELL和Knowledge Vault等。**整个知识图谱的构建经历了从人工和群体智慧构建到面向互联网利用机器学习和信息抽取技术自动获取的过程。**几个有代表性的知识图谱简介如下:
除了上述通用领域知识图谱之外,针对特定领域的知识和应用需求,人们也构建了垂直领域知识图谱:
在构建和应用知识图谱的过程中有几个重要环节,主要包括知识体系构建、知识获取、知识融合、知识存储、知识推理和知识应用等。
知识体系构建也称为知识建模,是指采用什么样的方式表达知识,其核心是构建一个本体对目标知识进行描述。在这个本体中需要定义出知识的类别体系、实体之间的语义关系,同时也包括定义在这个本体上的一些推理规则。
语义网的核心是让计算机能够理解文档中的数据,以及数据与数据之间的语义关联关系,从而使得计算机可以更加自动化、智能化地处理这些信息。其中与知识图谱数据建模紧密关联的核心概念是资源描述框架(RDF)。
RDF的基本数据模型包括了三个对象类型:资源(resource)、谓词(predicate)及陈述(statement)。
目前知识图谱中的数据也是采用RDF数据模型进行描述。在知识图谱中,上述的“资源”称为实体或者实体的属性值,“谓词”称为关系或者属性,“陈述”指的是RDF三元组,一个三元组描述的是两个实体之间的关系或者一个实体的属性。。
知识获取的目标是从海量的文本数据中通过信息抽取的方式获取知识,其方法根据所处理的数据源的不同而不同。知识图谱中的数据主要来源有各种形式的结构化数据、半结构化数据和非结构化文本数据(纯文本)。从结构化和半结构化数据源中抽取知识是工业界常用的技术手段,这类数据源的信息抽取方法相对简单,而且数据噪声少,经过人工过滤后可以得到高质量的结构化三元组。学术界主要集中在非结构化文本中实体的识别和实体之间关系的抽取,它设计自然语言分析和处理技术,难度较大。因为互联网上更多的信息都是以非结构化文本的形式存在,而非结构化文本的信息抽取能够为知识图谱提供大量较高质量的三元组事实,因此它是知识图谱的核心技术。
目前知识表示大多以实体关系三元组为主,因此信息抽取包括如下基本任务:实体识别、实体消歧、关系抽取以及事件抽取等。这一过程需要自然语言处理技术的支撑,由于自然语言表达方式变化多样,给信息抽取带来巨大挑战。目前主流的方法是基于统计机器学习的方法。
事件是发生在某个特定事件的时间点或时间段、某个特定的地域范围内,由一个或者多个角色参与的,一个或多个动作组成的事情或者状态的改变。
现有知识图谱中大多以实体和实体之间的关系为核心,缺乏事件知识。然而,很多科学家认为人们是以事件为单位来认识世界的,事件符合人们的正常认知规律。事件知识能够弥补现有以实体和实体关系为核心的知识图谱知识表达能力不足的问题,是构建知识图谱不可或缺的技术。事件结构本身的复杂性和自然语言表达的歧义性和灵活性,对事件抽取提出了很大的挑战。根据抽取方法的不同,已有的事件抽取方法可以分为基于模式匹配的事件抽取和基于机器学习的事件抽取。知识融合是对不同来源、不同语言或不同结构的知识进行融合,从而对已有知识图谱进行补充、更新和去重。从融合的对象上来看,知识融合包括:知识体系的融合和实例的融合。
知识融合的核心是计算两个知识图谱中两个节点或边之间的语义映射关系。
从融合的知识图谱类型来看,知识融合可以分为:竖直方向的融合和水平方向的融合。
知识存储是研究采用何种方式将已有的知识图谱进行存储。因为目前的知识图谱大多采用基于图的数据结构,它的存储方式主要有两种形式:RDF格式存储和图数据库(Graph Database)。
由于处理数据的不完备性、所构建的知识图谱中肯定存在知识缺失现象(包括实体缺失、关系缺失)。由于数据的稀疏性,我们很难利用抽取或融合的方法对缺失的知识进行补充。因此,需要采用推理的手段发现已有知识中的隐含知识。目前知识推理的研究主要集中在针对知识图谱中缺失关系的补足,即挖掘两个实体之间隐含的语义关系。所采用的方法可以分为两种:
知识推理也可以直接应用于相关的应用任务。关键问题在于如何将问题映射到知识图谱所支撑的结构表示中,在此基础上才能利用知识图谱中的上下文语义约束以及已有的推理规则,并结合常识等相关知识,得到正确的答案。
知识图谱已经在智能搜索、自动问答、推荐、决策支持等各个相关任务上得到了广泛应用。
在未来的研究当中,知识图谱作为一种知识管理与应用的新思路,它的应用将不仅局限于搜索引擎,在各种智能系统中它都将具有更加广泛的应用。
知识图谱中的各个任务都需要对文本和符号进行表示和处理,在此基础上进行语义理解、知识推理进而支撑问答、对话、决策等上层人工智能应用。
虽然深度学习在特定任务上表现良好,但也存在不少局限性,并且很多是根本性问题。
为了模拟人类的认知过程,进行更好的知识抽象和推理,人们定义了符号逻辑对知识进行表示和推理,其中知识图谱就是典型代表之一。但是,符号逻辑难以从历史数据中习得,目前大多还是采用人工编撰和校验的方式获得符号逻辑推理规则;而且,尽管可以利用概率图模型等方法学习有限的知识推理规则,但是受限于模型复杂度还是难以扩展到大规模数据上。
为了利用有限标注数据进行有效的预测,应融合可学习的表示学习模型和可表达、可解释的符号逻辑方法。利用表示学习模型从历史数据中学习知识,结合使用符号逻辑表示的领域专家知识,不仅能够有效提升预测性能,还能够得到可解释的预测结果。因此,人们逐渐形成共识:
基于数值计算的深度学习方法与基于符号表示和匹配的方法需要融合。
只有这样才能把现有基于浅层语义分析方法提升到能解决更深层、更高级人类认知任务的深层语义分析方法。
知识应用的难点在于知识推理,知识推理的难点在于知识表示。因此,知识表示是基于知识的人工智能应用中的核心部分。
在1993年的AI Magazine上发表的文章“What is a Knowledge Representation?”中指出:
知识表示的五个主要角色是:
- 知识表示是一种代理,基于对知识的表示,我们无需实践而是通过思考和推理就可以得到有关外部世界的结论;
- 知识表示是一组本体论约定的集合,说明我们以什么样的方式来思考世界;
- 知识表示是智能推理的组成部分:推理需要对知识进行表示,但知识表示不是推理的全部;
- 知识表示是高效计算的媒介:通过对知识进行有效组织,支持高效推理;
- 知识表示是人类表达的媒介:基于通用表示框架,方便人们表达和分享对世界的认知。
逻辑本身根据复杂性从简单到复杂分为:命题逻辑、一阶谓词逻辑、高阶逻辑。
命题逻辑的基础就是上述五种逻辑连接词,它们可以将一些原子命题组合成现实中的复杂知识。为了避免运算的歧义,命题逻辑还定义了不同连接词和操作符的优先级关系。
在经典逻辑学中,一个命题要么是真要么是假,不会存在中间状态,但在概率逻辑中,会对这种假设进行松弛,使命题可以以不同的概率处于真和假之间的状态。
谓词逻辑可以分为一阶谓词逻辑和高阶谓词逻辑,它们的主要区别在于是否可以量化谓词或者集合。由于高阶谓词逻辑过于复杂,实践中应用很少。
一阶谓词逻辑又简称一阶逻辑,他在命题逻辑的基础上增加了量词的概念。一阶逻辑的基本语法元素是表示对象、关系和函数的符号,其中对象对应常量符号,关系对应谓词符号,函数对应函数符号。对象是指一些事物的个体或类别,关系或谓词是指一种映射,函词是代表全函数的一种特殊的谓词形式,它要求每一个定义域中的对象具有一个映射值。
谓词逻辑的优势是可以表达对象集合的属性,而不用逐一列举所有对象,通过量词就能够实现对对象集合的描述,一阶谓词逻辑中有两种量词:全称量词( ∀ \forall ∀)和存在量词( ∃ \exist ∃)。
命题逻辑和谓词逻辑是陈述性的,它利用简单统一的方式描述知识,让知识表示和知识推理分离,使得推理方法完全不依赖于具体领域。
这种产生式表示方法难以表示过程性知识和不确定性知识,而且当表示知识中的属性时、谓词和命题数量增大时,其推理过程因为符号的组合爆炸问题,计算复杂性呈指数级增长态势。因此,基于谓词逻辑的推理过程比较耗时,工作效率低。
语义网络(Semantic Network)模型认为人类的记忆是由概念间的联系实现的,该思想受到两点启发:
语义网络是一个通过语义关系连接起来的概念网络,它将知识表示为相互连接的点和边的模式,其中,节点表示实体、事件、值等,边表示对象之间的语义关系。语义网络其实是一种有向图表示的知识系统,节点代表的是概念,而边则表示这些概念之间的语义关系。最基本的语义单元称为语义基元,可以用三元组表示:<节点1,关系,节点2>。
语义网络中有很多种类型,包括:
可以按照论元个数把关系分为一元关系、二元关系和多元关系。
语义网络利用最简单的一种统一形式描述所有知识,非常有利于计算机的存储和检索。但缺点是,它仅用节点及其关系描述知识,推理过程不像谓词逻辑表示方法那样明了,需要针对不同关系做不同处理,推理方法还不完善。
从认知学的角度,框架理论继承了人类认知世界的方式,对现实世界中各种事物,人类都是以一种类似于框架的结构存储在记忆中的。
当面对一个新事物时,人们就从记忆中找出一个合适的框架,并根据实际情况对框架中的具体值进行填充,填充的部分被称为槽(Slot),而框架以及槽的粒度则根据人类对事物的认知程度而定。
理论上,框架表示法是对世界知识的一种有效建模。
在原始的框架定义中,槽可以是任何形式的信息,包括原子值或值的集合;对于非原子的槽,还可以由多个侧面(facet)对槽的描述进行补充。这样做的目的是更立体更准确地描述事物的属性和关系。
人类对事物的认知存在层级的特性,框架的设计就引入了层级结构,并且根据类别之间的所属和细化,框架中的属性集合存在着继承性质。
框架表示法也有不可避免的缺陷:由于真实世界的多样性和复杂性,许多实际情况与框架原型存在较大差异,在框架设计中难免引入错误或冲突。另外,因为框架结构的复杂性,一方面,不同系统之间的框架很难对齐,另一方面,也给从非结构文本中抽取信息填充框架增加难度。
FrameNet是一个经典的基于框架表示的知识库,针对词汇级的概念进行框架的建模,它认为大部分词汇的语义能够通过语义框架的形式进行表示。最能指示框架发生的词叫做该框架的词法单元(lexical,LU),其它名词称为框架元素(frame element,FE)。FrameNet中的数据是以层级结构进行表示和存储的。位于最上层的节点表示框架,框架之间的边表示框架间的关系。框架之间有两种边:无向边和有向边,它们分别对应FrameNet中的无向关系和有向关系。每个框架下跟随的节点表示该框架的词法单元,它们由带词性限制的词元(lemma)组成。FrameNet还为每个词法单元标注了一组样例(examples),每个样例中详细标注了当前框架的词法单元和框架元素的信息。FrameNet还定义了8中关系,分别是:继承关系(inheritance)、视角关系(perspective_on)、子框架关系(subframe)、前置关系(precede)、使动关系(inchoative of)、因果关系(causative_of)、使用关系(using)和参考关系(see_also)。FrameNet被证明对一系列自然语言处理任务有明显的效果,包括信息抽取、文本蕴含、语义解析和角色标注等任务。
脚本通过一系列的原子动作来表示事物的基本行为,按照时间顺序描述事物的发生。脚本表示的知识有确定的时间或因果顺序,必须是前一个动作完成后才会触发下一个动作的开始。脚本是一个描述动态的过程而非静态知识的表示方法。
根据脚本表示法的定义,一个完整的脚本应该包括以下几个重要的组成部分:
脚本表示法能力有限,不具备对元素基本属性的描述能力,也难以描述多变的事件发展的可能方向。但在非常狭小的领域内,脚本表示方法却可以比其他方法更细致地刻画步骤和时序关系。
经典知识表示理论中的语义网络、框架和脚本都属于基于槽的表示方法,有所区别的是槽是否具有层次、时序、控制关系。
- 语义网络是最简单的一种,它的每个三元组都可以看成是一个槽结构。
- 框架系统由一组相关的框架联结而成,其中每个框架是由若干节点和关系构成的网络,因此,框架可以看成是层次化的语义网络,是语义网络的一般化形式。
- 脚本是按照一定的时间流程对事件的发展和变换控制进行的建模,因此,可以认为是定义了时间和控制条件的槽结构,与语义网络也没有本质的区别。
此处的语义网(Sematic Web)与人工智能中提出的语义网络(Semantic Network)的概念有所不同。
语义网的概念来自于万维网(World Wide Web),最初的目的是为了对万维网的功能进行扩展以提高其智能程度,因此人们也将语义网称为Web 3.0。
目前主要包括如下三个层次:
XML的最初版本是二十世纪八十年代初被提出来用来处理动态信息的显示问题,以及为了解决HTML在数据表示和描述方面混乱的问题而提出的技术标准。XML作为标记语言,可以由相关人士自由决定标记集合,这样极大地提升了语言的可扩展性。
一个标准的XML文档需包含一个序言和若干具体的内容,也可以包含一个尾注。序言是对XML的声明以及对外部文档的引用。XML的内容通过元素来记录,元素都带有标签。元素可以有嵌套结构,嵌套深度不受限制。
XML具有树状结构从根节点出发,总会找到一条路径可以到达某一元素或属性,这被称为XML路径语言(XML path language, XPath),其作用是辅助XML解析器解析或者方便编程者处理。
XML的通用性其灵活性的严重限制,因此,迫切需要统一且无歧义的语义定义方式,以促进语义网不同知识的相互链接。
RDF假定任何复杂的语义都可以通过若干个三元组的组合来表达,并定义这种三元组的形式为“对象-属性-值”或“主语-谓词-宾语”。其中,需要公开或通用的资源都会绑定一个可识别的通用资源表示符(Uniform Resource Identifier,URI)。
有时候需要表示的参数超过两个,三元组不便直接表示这种情况,可以通过RDF定义的一组二元谓词(指该谓词有两个论文)来表示。如何更好地扩展RDF的表达形式依然是一个开放的问题。
知识表示后,需要存取相关的知识。研究者为RDF开发了一套类似于SQL语句中select-from-where的查询方式。
标准的RDF同样是领域无关的,使得同一领域中不同知识内容难以交互和融合。RDFs是一种用户描述RDF的轻量级语言,主要关注类别和属性的层次结构以及继承关系等。RDFs用词汇rdf: Property定义属性,即RDF的“边”,RDF不区分对象属性和数据属性。
RDF局限于二元谓词,RDFs则限制于子类和属性层次及其属性的定义域、值域。因此,W3C又提出网络本体语言(Web Ontology Language,OWL)作为语义网的领域本体表示工具。OWL主要包括头部和主体两个部分:
OWL还有功能性标签,如传递性owl:TransitiveProperty,对称性owl:SymmetricProperty,函数性owl:FunctionalProperty,可逆性owl:inverseOf,约束性owl:Restriction。其中,属性约束标签owl:Restriction用来对一些类别进行约束。
在语义网络中,对节点和边的描述没有标准,用户可以自行定义,这就导致:
- 不同用户定义方式不同,不便于知识的分享;
- 无法区分知识描述和知识实例。
语义网基于W3C制定的标准,利用统一的形式对知识进行描述和关联,这种表示方法更便于知识的共享和利用。语义网通过语义具化(Semantic Grounding),让每一个概念(实体、类别、关系、事件等)都有一个唯一的标识符,这种唯一性使得知识共享在更大领域更大范围成为可能。
一个知识本体主要涵盖以下几个方面的内容:
目前大多数知识图谱主要是对前四部分内容(即事物、概念、属性和关系)进行建模,只有很少的知识图谱建模了简单的规则结构,这也反映了不同层次知识在表示上的复杂程度不同。
知识图谱用节点对应事物或概念,用边对应它们之间的关系。并且,知识图谱用统一的形式对知识定义和具体实例数据进行描述,各个具体实例数据只有在满足系统约定的“框架”约束下运用才能体现“知识”。
知识图谱是一个知识系统,以一种统一的方式表示了知识定义(Schema)和知识实例(Instance)两个层次的知识。知识图谱也可以看成是语义网的工程实现,知识图谱不太专注于对知识框架的定义,而专注于如何以工程的方式从文本中自动抽取,或依靠众包的方式获取并组建广泛的具有平铺结构的知识实例,最后再要求使用它的方式具有容错、模糊匹配等机制。知识图谱放宽了对三元组中个项值的要求,并不局限于实体,也可以是数值、文字等其他类型的数据。
整个Freebase数据库是一张大图,每个节点都使用type/object定义,边使用type/link定义。每个条目称之为一个Topic,一个Topic往往有很多属性。
Freebase创造了一个虚拟的节点结构,被称为组合值类型(compound value type,CVT),试图对多元关系进行表示,CVT对更准确地表达知识是必需的。除此之外,CVT也是事件知识表示的基础,事件的角色和事件间的关系可以通过定义属性和关系进行描述。
知识图谱的真正魅力在于它的图结构,使得知识图谱与图论、概率图等碰撞出火花。
很多知识表示方法用符号显式表示概念及其关系,概念的种类和关系的类型都是人们总结的结果,其中难免存在有遗漏的情况,因此在语义计算过程中,仅仅依赖这些显式表示的知识,难以获取更全面的知识特征。
目前大多数语义计算任务都采用数值计算的统计机器学习方法,而作为知识载体的数据表示是机器学习中的基础工作,数据表示的好坏直接影响到整个机器学习系统的性能。因此,人们致力于研究如何针对具体任务,设计一种合适的数据表示方法,以提升机器学习系统的性能,这一环节也被称为特征工程。特征工程在传统机器学习算法中有着不可替代的作用,但由于需要大量的人力和专业知识,也成为了机器学习系统性能提升的瓶颈。为了让机器学习算法有更好的扩展性,研究人员希望可以减少对特征工程的依赖。从人工智能的角度看,算法直接从原始的感知数据中自动分辨出有效的信息,是机器走向智能的重要一步。
用特征、逻辑、框架等符号表示的知识便于人们理解,可解释性也更好,但是,大部分语义计算任务都是目标导向的。对于这类任务,我们不需要知道计算过程,只需要知道计算结果。
文本是符号数据,两个词只要字面不同,就难以刻画它们之间的联系。(语义鸿沟现象)我们希望计算机能够从大规模、无标注的文本数据中自动学习得到文本表示,这种表示需要包含对应语言单元(词或文档)的语义信息,同时可以直接通过这种表示度量语言单元之间的语义相似度。
词是知识表示的基本单元,而传统用不同符号表示各个词的方式不包含任何语义信息。使用神经网络构造词表示的方法可以更灵活地对上下文进行建模,这类方法开始逐渐成为了词分布表示的主流方法。
知识图谱表示学习的主要方法有张量分解模型和基于能量函数的模型等。
核心思想是将整个知识图谱编码为一个三维张量 X ^ \hat X X^,如果三元组 r ( e 1 , e 2 ) r(e_1, e_2) r(e1,e2)存在于知识图谱中,则对应张量中的值 X ^ e 1 , r , e 2 \hat X_{e_1, r, e_2} X^e1,r,e2为1,否则为0。将张量 X ^ \hat X X^分解为核心张量 R ^ \hat R R^和因子矩阵 A A A的乘积形式 X ^ ≈ A T R ^ A \hat X \approx A^T \hat R A X^≈ATR^A,其中核心张量 R ^ \hat R R^中每个二维矩阵切片代表一种关系的语义,因子矩阵 A A A中每一列代表一个实体的向量。模型重构的结果 A T R ^ A A^T \hat R A ATR^A中的每一个元素都被看做对应三元组成立的概率,如果概率大于某个阈值,则对应三元组正确,否则不正确。这里重构的过程即是推理的过程。
张量分解在编码实体和关系的过程中综合了整个知识图谱的信息,它的主要缺点是需要优化张量中所有位置的值,包括0在内。因此,当关系数目较多时,张量的维度很高,分解过程计算量较大。
这类方法可以克服上述张量分解方法在大规模知识图谱表示学习的过程中学习效率低的问题。对于三元组 r ( e 1 , e 2 ) r(e_1, e_2) r(e1,e2),定义基于三元组的能量函数 f r ( e 1 , e 2 ) f_r(e_1, e_2) fr(e1,e2)。以TransE模型为例:
TransE模型中能量函数定义为 f r ( e 1 , e 2 ) = ∣ ∣ e 1 + r − e 2 ∣ ∣ L 1 / 2 f_r(e_1, e_2)=||e_1+r-e_2||_{L_{1/2}} fr(e1,e2)=∣∣e1+r−e2∣∣L1/2, e i e_i ei和 r r r分别表示实体 e i e_i ei和关系 r r r的向量表示。记知识图谱中三元组的集合为 Δ \Delta Δ, Δ r ( e 1 , e 2 ) ′ \Delta'_{r(e_1, e_2)} Δr(e1,e2)′表示由 r ( e 1 , e 2 ) r(e_1, e_2) r(e1,e2)生成的负样本的集合(比如,随机替换 e 1 e_1 e1或 e 2 e_2 e2),学习的目标函数定义为
L = ∑ r ( e 1 , e 2 ) ∈ Δ ∑ r ( e 1 ′ , e 2 ′ ) ∈ Δ r ( e 1 , e 2 ) ′ [ γ + f r ( e 1 , e 2 ) − f r ( e 1 ′ , e 2 ′ ) ] + \mathcal{L}=\sum_{r(e_1, e_2)\in\Delta}\sum_{r(e_1',e_2')\in\Delta_{r(e_1, e_2)}'}[\gamma+f_r(e_1, e_2)-f_r(e_1', e_2')]_+ L=r(e1,e2)∈Δ∑r(e1′,e2′)∈Δr(e1,e2)′∑[γ+fr(e1,e2)−fr(e1′,e2′)]+
其中, [ x ] + ≜ m a x ( 0 , x ) [x]_+ \triangleq max(0, x) [x]+≜max(0,x), γ > 0 \gamma>0 γ>0是分离正样本和负样本的边界值。该目标函数的原理是使正样本的能量比负样本的能量低,通过惩罚负样本的能量值来完成学习过程。因此,*推理过程即是计算三元组能量的过程,当三元组的能量值小于阈值时,该三元组为推断出的新三元组。不同能量模型的区别在于能量函数的构造不同。
知识图谱的表示学习是一个前沿学术热点方向,并且,表示学习和知识推理是两个相互关联的任务。
知识图谱是传统知识表示方法和语义网技术在互联网应用中的体现,它广泛利用了上述两类知识表示方法的技术和结果。
在知识图谱及其应用中,符号化和数值化表示的融合和统一是一个值得期待的发展方向。
知识图谱存储了结构化的知识,其中的实体、属性、关系等数据都具有明确的语义。实际上,知识图谱不仅包含了具体的实例知识数据,还包括了对知识数据的描述和定义,这部分对数据进行描述和定义的“元”数据被称为知识体系(Schema)或者本体(Ontology)。能够以一种统一的形式(三元组格式)表述实例型数据和描述型数据是知识图谱得以广泛应用的重要特点。
不同知识图谱关注的领域和侧面不同,如何对它们进行综合利用是一个重要问题。知识融合通过框架匹配和实例对齐,把分散的知识资源联合起来,可以极大地增加知识图谱的覆盖领域和共享程度,是知识构建的重要组成部分。
知识体系主要包括三个方面的核心内容:对概念的分类、概念属性的描述以及概念之间相互关系的定义。
知识体系的基本形态包括词汇(Terms)、概念(Concepts)、分类关系(Taxonomic Relations)、非分类关系(Non-Taxonomic Relations)和公理(Axioms)这五个不同层次。
完全自动地构建知识体系虽然是人们的终极目标,但是实践证明目前还很难做到,特别是最后两个层次的知识体系。
知识体系具有较高的抽象性及概括性,目前高质量的知识体系只能通过人工构建。早期,人们比较直接地构建了关于概念(类型)、概念属性和概念之间关系的知识体系。但是随着知识需求在不同领域和不同行业的增长,人们逐步构建出能够描述时空、事件等信息的知识框架。
人工构建知识体系的过程主要分为如下六个阶段:确定领域及任务、体系复用、罗列要素、确定分类体系、定义属性及关系、定义约束。
上述阶段在实践中并非严格的线性关系,有时需要回退到更早的阶段。
我们为什么要使用这个知识体系?这种知识体系能够帮助回答哪些类型的问题?谁会使用并维护这个知识体系?
这些问题应该贯穿于知识体系构建的各个阶段,并随着体系构建的推进,重新思考并根据新的想法修正已经构建的知识体系。必须保证上层类别所表示的概念完全包含于下层类别多表示的概念,也就是说所有下层类别的实例也必须是上层类别的实例。
这一步经常和上一步交叉进行,因为在定义属性的过程中可能会发现原有分类体系的不足,需要对其进行修正。
人工智能知识体系是一个耗时、昂贵、高度技巧化、程序繁琐而枯燥、很容易出错的任务。
知识体系的学习技术可以分为三大类:基于非结构化数据的知识体系学习、基于结构化数据的知识体系学习和基于半结构化数据的知识体系学习。
后两者的研究工作较少,大部分采用与人工构建结合的方式工作。
多个垂直领域都形成了专业的领域知识库,在这些知识库中,包含很多知识库没有的专业知识。只有将这些专业知识库联合起来应用,才能够满足用户跨领域的信息需求。
知识融合包括:竖直方向的融合和水平方向的融合。
各个知识图谱的数据来源非常广泛、质量也会参差不齐、关注领域也不尽相同。导致知识图谱之间存在多样性,不同知识图谱存在异构性。知识表示的异构性导致不同的知识图谱难以被联合利用,因此融合不同知识图谱成为解决知识集成和共享的核心问题。
知识融合通过对多个相关知识图谱的对齐、关联和合并,使其称为一个有机的整体,是一种提供跟全面知识共享的重要方法。
按照融合的对象不同可以分为框架匹配和对象对齐。
多个知识图谱中的实例知识常常有冲突,如何检测多个知识图谱之间的冲突并进行消解也是知识融合的重要步骤。
知识体系的不同导致不同知识图谱难以联合利用,框架匹配可以解决知识体系之间的异构性,是知识融合的重要组成部分。框架匹配也称为本体对齐。
知识框架主要包括概念(类型)、属性、关系和它们之间的约束。由于异构性,同样的知识在知识图谱中的描述可能差异很大。目前最常用的框架匹配方法还停留在匹配不同知识库中的元素。
框架匹配可以分为元素级匹配和结构级匹配。
符号是对元素的描述,有非常强的语义指示作用。
所以,最基本的方法可以基于字符串匹配的技术实现本体元素的匹配。字符串越相似,它们越有可能表示相同的概念。常用的匹配方法有:前缀距离、后缀距离、编辑距离和 n n n元语法距离等。这种方式忽略了语言符号的多义性(一词多义或一义多词)。基于语言学的技术将名称看作是自然语言中的词汇可以更好地计算元素之间的关联性。元素相似度的判断可以充分利用元素描述文字之间的语言关系。为了计算框架元素的匹配程度还可以利用元素的约束信息,这种匹配方法称为基于约束的匹配技术。这种技术通常与其他元素级技术同时使用,目的是减少候选映射对的数量,同时也可以作为其他方法的预处理步骤,以消除冲突的属性。WordNet是元素级匹配经常用到的语言学资源,为了突破其覆盖度的限制,可以引入词的表示学习技术,获得词向量。词向量的优点是可以将词表示为低维语义向量空间中的一个点,这样,词与词之间的语义相似度就可以用点之间的距离来衡量。
可以把词向量相似度和基于实体间编辑距离相似度结合在一起,用以对齐异构知识库。目标是能够链接多个异构知识库,并从顶层创建一个大规模的统一的知识库,从而帮助机器理解底层数据。实体对齐也称为实体匹配,是判断相同或不同知识库中两个实体是否表示同一物理对象的过程。
实体对齐可以分为成对实体对齐和协同实体对齐两类不同算法。
最近,基于表示的方法被用于知识对齐,将多个知识库表示在同一个语义向量空间中,把知识库对齐实体的过程转化为两个知识库实体相似度计算问题。知识库向量化模型通常是针对单一知识库的,如果简单地将这种方法用到两个知识库上,这两个知识库的资源就会被表示在两个独立的空间上,无法直接计算。为了将这两个知识库表示在同一向量空间中,需要利用种子对齐,训练时在目标函数中加入约束,让这些种子对齐中的资源尽可能有相同的向量表示。利用这种方法学习得到的向量就不再是独立的两个空间上的表示,而是在一个向量空间中的统一表示。
将两个知识库在统一向量空间中相近的实体视为相同实体,成为一个对齐,这种对齐方法被称为基于知识库向量联合学习的对齐方法。优点是:不需要依赖任何人工设定的规则和特征,也不需要了解知识库的命名习惯。这种方法适应性更强,更容易迁移到不同的领域。
模型联合学习两个知识库的向量表示步骤为:首先利用简单的对齐方法,例如字符串匹配,来产生初始的种子对齐,这些种子对齐要准确率很高。然后采用TransE方法,学习两个知识库的对齐。该模型的核心思想是:种子对齐中的两个实体的向量要在训练过程中尽可能相似。
如何检测冲突并消解是知识融合任务的主要研究问题,最简单的方法就是发现对于同样的属性和关系有不同的实例,但对于某些属性,这种策略不一定有效。
目前常见的策略有以下三类:冲突忽略、冲突避免和冲突消解。
冲突消解按照使用技术主要分为以下两类:基于投票的方法和基于质量估计的方法。
一些复杂的结构级匹配方法多用在本体匹配上,而实体对齐多使用一些简单的局部方法来保证对齐的运行时间在一个可接受的范围内。
语义验证过程一共检查五种一致性模板。
由于系统是针对片段和片段的比较,所以没有对整个知识库进行考虑。
系统在连接片段中输出对齐的资源。已经对齐的资源被当作新的锚,继续新一轮发现对齐的过程。这种机制不断重复,直到没有新的对齐产生。实体(Entity)是知识图谱的基本单元,也是文本中承载重要信息的重要语言单位。实体识别和分析是支持知识图谱构建和应用的重要技术。
根据Automatic Content Extraction(ACE)定义,在文本中对实体的引用(Entity Mention,也可称为指称项)可以有三种形式:命名性指称、名词性指称和代词性指称。
狭义地讲,命名实体指现实世界中具体或抽象的实体,通常用唯一的标识符(专有名称)表示。广义地讲,命名实体还可以包括时间、日期、数量表达式、金钱等。命名实体的确切含义只能根据具体应用来定。
命名实体识别任务是识别出文本中实体的命名性指称项,并标明其类别。一般就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。不同任务对不同实体类别颗粒度的需求不同。细粒度实体识别的难点主要是类别多、类别具有层次结构、标注成本高。
实体识别的难点: 七类实例中时间、日期、货币和百分比的构成有比较明显的规律,识别起来相对容易,而人名、地名、机构名的用字灵活,识别难度很大。命名实体是别的过程主要包括两部分:(1)识别实体边界;(2)确定实体类别(人名、地名、机构名等)。识别的主要难点在于:
命名实体识别大致有两种方法,第一种是基于规则的方法,第二种是基于机器学习的方法,也可以将两种方法结合起来使用。
- 基于规则的方法准确率较高,接近人类的思维方式,表示直观,而且便于推理。但是这种方法成本昂贵,规则的制定依赖于语言学家和领域专家,很难移植到新领域。
- 基于机器学习的方法更加健壮和灵活,而且比较客观,不需要太多的人工干预和领域知识,但是需要人工标注数据,数据稀疏问题比较严重。
基于规则的方法,首先可以制定一些简单的基本规则,然后在各种语料库中,通过对基于规则方法的实验结果进行错误分析,不断改进规则,最后直到识别出更多更准的命名实体为止。在大规模标注语料库缺少的情况下,基于规则的方法能够取得较好的效果。
最具代表性的方法是基于命名实体词典的方法,采用字符串完全匹配和部分匹配的方式,从文本中找到与词典中最相似的单词或短语完成实体识别。主要优势在于规则简单。比较经典的方法有基于正向最大匹配的方法、基于逆向最大匹配的方法和基于最短路径的方法。这类方法的性能往往受命名实体词典规模和质量的影响。然而,命名实体是一个动态变化的集合,新的实体不断涌现,再加上实体命名的不规则性,导致实体名称纷繁多样,难以构建出一个完备的词典。
基于规则的命名实体识别方法在特定领域的小规模语料上测试效果较好,速度快。但是,其对语言知识要求较高,需要大量的人力物力。当激活规则不止一个时,解决办法之一即是对这些规则按优先级进行排序,而排序过程耗费大量的人力物力,且不具有普适性。基于规则的方法语言受限,通用性不强。
基于机器学习的方法主要是利用预先标注好的语料训练模型,使模型学习到某个字或词作为命名实体组成部分的概率,进而计算一个候选字段作为一个命名实体的概率值。如果大于某个阈值,则识别为命名实体。这种方法鲁棒性更好,而且模型的构建代价较小。可以分为基于特征的方法和基于神经网络的方法。
- 基于特征的方法主要是利用传统的机器学习模型结合人工设计的大量特征进行实体识别。
- 基于神经网络的方法可以利用各种结构的神经网络自动捕获特征,进而完成实体识别。
命名实体的内部构成和外部语言环境具有一定的特征,都在试图充分发现和利用实体所在的上下文特征和实体的内部特征。基本步骤包括:
优点在于对语言的依赖性小,可移植性好。目前应用最广泛的方法是基于字标注的模型,该类模型将命名实体识别看做一个序列标注的任务,最具代表性的方法是基于条件随机场的模型。
条件随机场(Conditional Random Field,CRF)是一种有效的计算联合概率分布的概率图模型,从本质上说CRF模型可以预估给定输入序列后所得到标注序列的条件概率。具体做法为:
首先将系统每个输入的观测值(中文文本以字为基本单位)可能对应的标注标签集合定义为 F = B , I , O F=B,I,O F=B,I,O。 B B B(Begin)表示一个命名实体的开始位置, I I I(Internal)表示一个命名实体的中间部分, O O O(Other)表示句子中的非命名实体部分。
条件随机场也被称为马尔可夫随机场,定义如下:假设无向图 G ( V , E ) G(V,E) G(V,E),其中, V V V是图上的顶点, E E E是图上的边; X X X是输入观察序列, Y Y Y是输出标记序列, Y Y Y上的某个元素对应图中的一个节点,则条件随机场满足如下公式:
P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X,Y_w,w \neq v)=P(Y_v|X,Y_w, w \sim v) P(Yv∣X,Yw,w=v)=P(Yv∣X,Yw,w∼v)
在上述公式中, w ∼ v w \sim v w∼v表示两个顶点之间有直接连接的边,在命名实体识别任务中一般可看做线性CRF,因为输入和输出都是线性的。
CRF模型的数学表示:在条件随机场的输出序列上,线性链结构的条件随机场服从一阶马尔科夫独立性假设。这是给定的待标注序列 X X X,标注序列 Y Y Y的分布满足如下公式:
P ( Y ∣ X , λ , μ ) ∝ e x p ( ∑ i = 1 n ∑ j λ j t j ( y y − 1 , y i , x , i ) + ∑ i = 1 n ∑ k μ k s k ( y i , x , i ) ) P(Y|X,\lambda,\mu) \propto exp(\sum_{i=1}^{n} \sum_j \lambda_j t_j(y_{y-1},y_i,x,i)+\sum_{i=1}{n} \sum_k \mu_k s_k(y_i,x,i)) P(Y∣X,λ,μ)∝exp(i=1∑nj∑λjtj(yy−1,yi,x,i)+i=1∑nk∑μksk(yi,x,i))
在上述公式中, t j ( y i − 1 , y i , x , i ) t_j(y_{i-1},y_i,x,i) tj(yi−1,yi,x,i)和 s k ( y i , x , i ) s_k(y_i,x,i) sk(yi,x,i)都表示特征函数, t j ( y i − 1 , y i , x , i ) t_j(y_{i-1},y_i,x,i) tj(yi−1,yi,x,i)表示观察序列的标记序列位置 i − 1 i-1 i−1和 i i i之间的转移特征函数, λ j \lambda_j λj为这个转移函数的权重, s k ( y i , x , i ) s_k(y_i,x,i) sk(yi,x,i)为 i i i位置的状态特征函数, μ k \mu_k μk为这个状态函数的权重。
为训练CRF模型,首先需要定义特征函数集合。特征函数集的质量直接影响后续模型训练的质量。特征函数在CRF模型中分为状态特征函数和转移特征函数,两类函数都是二值函数,函数值取0或1.对于特征函数的定义,我们可以考虑上下文词汇和词性特征。如果训练规模比较大,那么只使用上下文特征便可以得到比较好的结果。
模型参数估计:根据训练集数据估计每个特征函数的权重 λ \lambda λ,这里可以采用经典的模型参数估计方法,如极大似然估计(Maximum Likelihood Estimation,MLE)。
训练好的CRF模型是一个庞大的篱笆网络,网络中每一个节点是每个预测值的不同取值,通过寻找网络中具有最大概率的路径来确定输出的命名实体标记。可以采用遍历的方法,但复杂度较高,耗时长,效率低。因此,可以采用维特比算法,这是一种特殊的但应用极为广泛的动态规划算法,如果模型的网络有 D D D个节点,长度为 N N N,那么维特比算法的复杂度只有 O ( N ⋅ D 2 ) O(N \cdot D^2) O(N⋅D2)。
基于传统特征的命名实体识别方法容易受到现有自然语言处理工具的性能的影响,而且扩展性差,需要大量的人工设计、挖掘的有效特征。随着深度学习的发展,很多工作提出利用神经网络自动地从文本中捕获有效特征,进而完成命名实体识别。这类方法主要有如下几个步骤:
以Lample等在2016年提出的神经网络模型(长短期记忆网络和条件随机场相结合的方法(LSTM+CRF))为例进行介绍。
由于不需要人工设计复杂的特征而且在性能和普适性上的优势,基于神经网络的命名实体识别方法目前占据了主导地位。
细粒度的实体类别包含了更多的知识,有助于相应任务性能的提升。
对于语料的标注,主要有两种方法:
KnowItAll系统是一个比较有代表性的无监督的细粒度实体抽取系统,主要由三部分组成:规则抽取、实体名的抽取和实体名的验证。首先人工制定一些通用的规则模板,然后根据通用模板和指定类别去细化模板,得到初始种子后,使用搜索引擎对模板进行扩展,进而从互联网上抽取大规模的实体名,最后使用验证规则并结合搜索引擎对实体名进行验证,将高置信度的实体名加入到知识库中。
实体扩展是一种开放域实体抽取方法。互联网信息呈现出多源、异构、海量的特点。但很多情况下,用户更需要的是提供一些实体种子,然后获得同类实体的工具。实体扩展技术的目标是从海量、冗余、异构、不规范的网络数据中大规模地抽取开放类别的命名实体,进而构建开放类别命名实体列表。
实体扩展在学术领域的主要应用包括:
实体扩展在工业领域的典型应用包括:
实体扩展的任务定义如下:对于某实体类别 C C C,给定该类别的 M M M个实体(称为“种子实体”),一个实体扩展系统需要找出同样属于类别 C C C的其他实体。
实体类别本身是未知的,需要抽取系统分析实体种子,寻找其共性得到关于目标实体类别的知识,进而抽取出属于该类别的实体。
实体扩展任务有以下三个特点:
实体扩展系统的评价指标主要包括Precision值(准确率),Recall值(召回率),MAP(mean average precision)值,P@N值和R-PREC值等五种。
实体扩展系统主要由以下三个模块组成:
后者的基本思路是:如果目标实体与种子实体同属于某个语义类别,则它们的上下文分布应该是相似的。
在预定义的模板中,主要假设是:(1)好的模板在语料中出现次数频繁;(2)好的模板总是指示目标类别的实体;(3)好的模板可以在不需要其他知识的前提下在文本中被识别出来。使用预定义模板能找到的新实体数量有限,一种最具代表性的改进方法是基于Bootstrapping策略,反复迭代,得到更多的模板。在基于模板的方法中,如何衡量模板质量是一个重要的问题,可以通过考察<候选实体-模板>之间的抽取关系评估模板质量,进而更准确地度量候选实体与目标实体类别之间的语义相关度。针对错误候选实体是如何产生这一问题,Vyas等人研究发现:
针对以上现象,Vyas等人设计了一种结果过滤方法:在每轮迭代的过程中由人工找出一个错误候选,然后通过以下两种方法找出候选实体集合中与错误候选实体语义相似的候选实体并将其剔除:
实体识别和扩展技术是构建知识图谱的基础技术和关键技术,由于实体的种类繁多,而且新实体不断出现,所以在真实的互联网文本中实体识别和抽取的性能还需要进一步提高,如何高效地获取高质量的标注语料,如何提高模型的可移植性和可扩展性都是实体识别的扩展技术中的关键研究点。
实体具有歧义性,因此实体识别的结果很难之间存放到知识图谱中。同一实体在不同的文本中会有不同的指称,这是指称的多样性(Name Variation);形同的实体指称在不同的上下文中可以指不同的实体,这是指称的歧义性(Name Ambiguation)。
因此,必须对实体识别的结果进行消歧才能得到无歧义的实体信息。
实体消歧旨在解决文本信息中广泛存在的名字歧义问题,在知识图谱构建、信息检索和问答系统等领域具有广泛的应用价值。
实体消歧所处理的对象都是命名实体,可以通过如下六元组进行定义:
M = N , E , D , O , K , δ M = N, E, D, O, K, \delta M=N,E,D,O,K,δ
其中, N = n 1 , n 2 , … , n l N = n_1, n_2, \ldots, n_l N=n1,n2,…,nl是待消歧的实体名集合。 E = e 1 , e 2 , … , e k E = e_1, e_2, \ldots, e_k E=e1,e2,…,ek是待消歧实体名的目标实体列表。在实际应用中,目标实体列表通常以知识库的形式给出。 D = d 1 , d 2 , … , d n D = d_1, d_2, \ldots, d_n D=d1,d2,…,dn是一个包含了待消歧实体名的文档集。 O = o 1 , o 2 , … , o m O = o_1, o_2, \ldots, o_m O=o1,o2,…,om是 D D D中所有待消歧的实体指称项集合。实体指称项表示实体消歧任务的基本单元:一个实体指称项是一个在具体上下文中出现的待消歧实体名。
实体指称项的上下文可以通过多种方式自由定义。 K K K是命名实体消歧任务所使用的背景知识。由于实体名本身所携带的信息不足以指称实体消歧任务,消歧系统需要大量背景知识,其中最常用的北京知识是关于目标实体的文本描述。 δ : O × K → E \delta: O \times K \rightarrow E δ:O×K→E是命名实体消歧函数,用于将待消歧的实体指称项映射到目标实体列表(如果 E E E是显式给定的)或者按照其指向的目标实体进行聚类(如果 E E E没有显式给定,是隐藏变量)。命名实体消歧函数是命名实体消歧任务的核心部分。
按照目标实体列表是否给定,实体消歧系统可以分为基于聚类的消歧系统和基于实体链接的消歧系统;按照实体消歧任务的领域不同,实体消歧系统可以分为结构化文本实体消歧系统和非结构化文本实体消歧系统。
结构化文本实体消歧系统和非结构化文本实体消歧系统的主要差别在于实体指称项的文本表示:在结构化文本命名实体消歧系统中,每一个实体指称项被表示为一个结构化的文本记录;而在非结构化文本实体消歧系统中,每一个实体指称项被表示为一段非结构化文本。由于实体指称项的表示不同,两种消歧系统的技术路线也不一样:结构化文本的命名实体消歧由于缺少上下文,主要依赖于字符串比较和实体关系信息完成消歧;而非结构化文本实体消歧系统有大量上下文辅助消歧,因此主要利用指称项上下文和背景知识完成消歧。
给定待消歧的实体指称项集合 O = o 1 , o 2 , … , o k O = o_1, o_2, \ldots, o_k O=o1,o2,…,ok,消歧步骤如下:
**以聚类方式实现实体消歧的关键问题是计算指称项之间的相似度。**按照计算相似度的方法不同,基于聚类的实体消歧系统又可以分为三类:(1)基于表层特征的实体指称项相似度计算;(2)基于扩展特征的实体指称项相似度计算;(3)基于社会化网络的实体指称项相似度计算。
给定一个实体指称项,基于词袋子(Bag of Words,BoW)模型的实体消歧系统首先将其表示为Term向量的形式,其中每个Term的权重通常采用经典的TF-IDF算法进行计算。实体消歧系统通常使用向量的Cosine相似度来计算实体指称项之间的相似度。
这些方法没有考虑到上下文特征之间的内在关联,因此影响了聚类效果。
为了克服基于表层特征指称项相似度的缺陷,一些研究工作开始使用知识资源来提升实体消歧的性能。最直接的方法就是使用知识资源来扩展实体指称项的特征表示。
实体的社会化关系也提供了相当多的重要信息,基于社会化网络的实体指称项相似度通常使用基于图的算法,能够充分利用社会化关系的传递性,从而考虑隐藏的关系知识。缺点在于它只利用到了上下文的实体信息,不能完全利用实体指称项的其他上下文信息。
所有信息都被表示成一个社会化关系图 G = ( V , E ) G = (V, E) G=(V,E),其中,实体指称项和实体都被表示为社会化关系图中的节点,而节点之间的边则表示它们之间的社会化关系。在实体指称项表示中可以方便地加入从其他知识库中抽取出来的社会化关系。在社会化关系图表示框架下,实体指称项之间的相似度通常使用图算法中的随机游走算法来计算。
实体链接(通常称为Entity Linking,与Entity Grounding, Entity Resolution,Record Linkage和Entity Disambiguation意义相近)指的是将一个命名实体的文本指称项(Textual Mention)链接到知识库中相应实体的过程。(知识库中可能不包含待消歧指称项的对应实体,这是就链接到空实体NIL)。
实体链接的输出通常包括两个部分:
实体链接任务通常需要两个步骤。
大部分实体链接研究的重点在于第二步,即如何根据实体指称项的上下文信息和知识库中实体的信息从候选链接中确定目标实体。
大部分工作都是基于实体指称项词典:通过在词典中记录一个指称项所有可能指向的目标实体来进行链接候选过滤。
传统实体链接方法通常使用Wikipedia等知识资源来构建指称项词典,为了匹配模糊的或拼错的指称项,一些基于词典的模糊匹配方法也在TAC评测中被使用。
给定一个指称项 m m m及其链接候选 E = e 1 , e 2 , … , e n E = e_1, e_2, \ldots, e_n E=e1,e2,…,en,实体链接方法选择与指称项具有最高一致性打分的实体作为其目标实体:
e = a r g m a x e S c o r e ( e , m ) e = \mathop{argmax}\limits_e \ Score(e, m) e=eargmax Score(e,m)
实体链接的关键在于如何计算实体指称项与目标实体之间的一致性打分 S c o r e ( e , m ) Score(e, m) Score(e,m)。现有方法可分为四种:
向量空间模型:实体指称项与目标实体的一致性打分主要基于实体指称项上下文与目标实体上下文中特征的共现信息来确定。实体概念和实体指称项都被表示为上下文中Term组成的向量。向量空间模型可以计算两个向量之间的相似度对实体概念和指称项之间的一致性进行打分。目前,针对向量空间模型的研究主要集中在两个方面:
主体一致性模型:决定一致性打分的是实体指称项的候选实体概念与指称项上下文中的其他实体概念的一致性程度。选择一个与指称项上下文中的实体具有高度一致性打分的实体作为指称项的目标实体。需要考虑以下两个因素:
其中, o o o是实体指称项, w ( e , o ) w(e, o) w(e,o)是实体 e e e的权重,而 s r ( e , e i ) sr(e, e_i) sr(e,ei)是实体之间的语义关联度。
协同实体链接:一篇文章内的所有实体指称项的目标实体也应该是相互关联的。**协同实体链接方法的最大问题在于算法的复杂度。**如何在高性能和高准确率之间寻找一个平衡的优化算法,也是一个值得研究的问题。
基于神经网络的实体消歧方法:计算实体与实体、实体与文本、文本与文本之间的相似度是核心问题。基于神经网络的方法不需要人工设计复杂的特征,易于补货深层语义,取得了比较好的性能并具有良好的扩展性,占据了实体消歧的主导地位。
很多结构化数据中存在大量的非结构化描述文本,这类结构化数据的消歧方法可以参照上文介绍过的方法。
列表型数据没有上下文描述信息,因此对消歧带来了很大的挑战。在结构化文本的实体消歧方法中主要是利用实体的类别信息、实体的流行度和列表中的其他信息进行消歧。
面向非结构化文本的实体消歧应用最为广泛,主流方法有基于聚类的实体消歧和基于链接的实体消歧,两类方法中的核心问题都是计算待消歧实体与候选实体的语义相似度。
实体之间的关系是知识图谱中不可或缺的部分,不同的关系将独立的实体连接在一起编织成知识图谱。如何从结构化或者非结构化文本中识别出实体之间的关系是知识图谱构建的核心任务之一。
关系定义为两个或多个实体之间的某种联系,关系抽取就是自动识别实体之间具有某种语义关系。
二元关系抽取,关注两个实体间的语义关系,得到 ( a r g 1 , r e l a t i o n , a r g 2 ) (arg_1, relation, arg_2) (arg1,relation,arg2)三元组,其中 a r g 1 arg_1 arg1和 a r g 2 arg_2 arg2表示两个实体, r e l a t i o n relation relation表示实体之间的语义关系。
根据处理的数据源不同,关系抽取可以分为以下三种:
根据抽取的文本范围不同,可以分为:
在知识图谱构建过程中,我们需要分析图谱中两个节点(实体)之间边上的语义标签(关系),而并不用特别关注它们所出现的具体文本。
根据所抽取领域来划分,可以分为:
但是面对大规模知识图谱构建时,人工标注的训练语料远远不够,所以有很多工作利用弱监督学习解决训练语料的标注问题。
限定域关系抽取指在一个或多个限定的领域内判断文本中所出现的实体指称之间是何种语义关系,且待判别的语义关系是预定义的。因此常把这项任务看成是文本分类任务,即在输入一个句子以及标识句子中所出现的实体指称的条件下,系统将其分类到所属的语义类别上。
越来越多的研究者采用有监督学习的方法,即针对每个关系类别标注充足的训练数据,然后设计关系抽取模型,其研究多关注于如何抽取有效的特征。人工标注语料耗时费力,成本高,因此很多情况下很难获得足够的训练数据,因此有很多研究利用弱监督学习的方法抽取关系。
基于模板的关系抽取方法通过人工编辑或者学习到的模板对文本中的实体关系进行抽取和判别。但人工不可能针对多类关系穷举所有的模板,那么就需要采用自动的方法学习抽取模板。面临的问题是:(1)如何学习用于抽取关系的模板?(2)如何将学习到的模板进行聚类?
已有的方法多采用自提升(Bootstrapping)策略,对于实体和模板进行联合迭代式地交替抽取和学习。基本出发点是:一种语义关系可以采用对偶的方式进行表示,包括两种表示方式:
因此,我们可以利用实体对在文本中获取模板信息,再利用获取到的模板抽取更多的实体对。这是一个自提升过程。
其中关键步骤是抽取句子中的实体对之间表达关系的模板。模板可以是基于词汇的,也可以是基于句法或语义的。这一过程需要自然语言处理技术。
我们可以首先使用句子边界探测工具将给定的文本预料分割为句子,然后运行词性标注工具获得单词的词性。为了探测句子中的实体,可以使用名词短语块识别工具或命名实体识别工具提取合适的名词词组块和实体。然后分别抽取词汇级关系模板和句法级关系模板。
模板学习的另一个关键问题是不同的模板可能表示同一语义关系。在抽取模板之后,需要对习得的模板进行聚类,将表示同一语义关系的模板聚在一起。
最大问题在于其受限于模板的质量和覆盖度,可扩展性不强。
有监督关系抽取的主要工作在于如何抽取出表征实体指称间语义关系的有效特征。特征抽取主要使用自然语言处理工具包,从句子中抽取出如词汇、句法和语义等特征,作为关系分类的证据。为了缓解句法特征的稀疏性,有很多研究集中于利用核函数的方法进行关系抽取。
核函数可以在高维的特征空间中隐式地计算对象之间的距离,不用枚举所有特征也可以计算向量的点积,表示实体关系很灵活,可以方便地利用多种不同的特征,使用支持核函数的分类器进行关系抽取。
以Zeng等在2014年提出的基于卷积神经网络的关系抽取为例:
模型主要包括三个部分:词表示(Word Representation)、特征抽取(Feature Extraction)和输出(Output)。整个模型的输入是一个句子以及给定的两个词(通常为名词、名词短语或实体),输出是这两个词在该句子中所属的预定义的语义关系类别。
首先,输入的句子通过词向量表示,转化为向量的形式输入网络。然后,待抽取部分进一步提取词汇级别特征和句子级别特征,接下来将这两种特征拼接起来作为最终的特征进行关系分类。词汇级别特征的抽取是将句子中某些词向量挑选出来,并将挑选出的向量拼接起来作为这部分特征抽取的结果。然后,使用卷积神经网络学习句子语义的组合规律和方式,在以词向量作为输入的基础上,将句子中包含的词向量组合起来,进而得到句子级别特征表示。优点在于不再依赖于传统的自然语言处理工具,完全通过卷积网络直接从具有冗余信息的词向量中自动学习、挑选出有用的特征信息,进而学习得到高质量的特征。
位置特征表示当前词到待分类的两个词之间的相对距离。
特征 | 备注 |
---|---|
L1 | 词1对应的词向量 |
L2 | 词2对应的词向量 |
L3 | 词1左右各一个词对应的词向量 |
L4 | 词2左右各一个词对应的词向量 |
L5 | 词1和词2在WordNet中的一般语义分类 |
带标注的文本通常是稀缺的资源。
在学术界和企业界的共同努力下,已经构建了许多开放可用的知识图谱,这些知识图谱以结构化三元组和形式存储实体和实体之间的关系,距离监督(Distant Supervision)正是利用了这种结构化的数据,让知识图谱自动标注训练样本,由于标注过程不需要人工逐一标注,因此距离监督关系抽取也是弱监督关系抽取的一种。该方法启发式地对齐知识图谱和文本中的实体,然后根据这个对齐学习关系抽取器。该类方法主要基于如下的距离监督假设:如果两个实体之间存在某种关系,则所有包含这两个实体的句子都表达了这种关系,这些句子的集合被称为一个“包”。
一个例子是Zeng等使用分段卷积网络(Piecewise Convolution Neural Networks,PCNNs)抽取文本的特征,他们认为传统的最大池化(max-pooling)难以捕捉句子的结构信息,因为两个实体将示例分割为三段,中间是实体对之间的内部特征,而两端是外部特征,这种结构信息是示例的重要特征,因此需要分别对它们进行最大池化操作。在模型的训练过程中,还利用了多示例学习(Multi Instance Learning, MIL)的算法缓数据噪音问题。多示例学习的最终目标是预测未知包而非示例的标签,传统的误差反向传播的目标函数定义在示例上,而多示例训练中把目标函数定义在包上。
由于弱监督学习的关系抽取系统不需要人工标注数据,因此目前基于弱监督学习的关系抽取系统抽取的关系实例规模比较大。
开放域关系抽取不需要预先定义关系,而是使用实体对上下文中的一些词语来描述实体之间的关系。
TextRunner是第一个开放域实体关系抽取系统,使用启发式规则自动标注预料,不需要人工预先定义关系类别体系,主要分为三个模块:
由于开放域关系抽取得到的关系无法直接映射到知识图谱中,限定域的关系抽取是目前研究的主流方法。传统的基于模板的关系抽取方法可扩展性差,基于机器学习的关系抽取方法是目前研究的热点。基于有监督学习的关系抽取需要人工标注大量训练数据,耗时费力,目前基于弱监督的关系抽取方法得到了越来越多的关注。
事件抽取以命名实体为基础,命名实体抽取效果的好坏将直接影响事件抽取的结果。而对事件抽取而言,首先要识别出文本中是否存在关心的事件,其次要识别出事件所涉及的元素(一般是实体),最后需要确定每个元素在事件中所扮演的角色。
事件是发生在某个特定的时间点或时间段、某个特定的地域范围内,由一个或者多个角色参与的一个或者多个动作组成的事情或者状态的改变。
事件中最重要的几个要素是事件发生的事件、地点、参与事件的角色以及与之相关的动作或者状态的改变。不同的动作或者状态的改变代表不同类型的事件。同一个类型的事件中不同的时间、地点和角色代表了不同的事件实例。在某些同一个类型的事件中不同粒度的时间、地点、角色代表了不同粒度的事件实例。不同的应用场景会定义不同类型、不同粒度的事件。
事件抽取主要研究如何从描述事件信息的文本中抽取出用户感兴趣的事件信息并以结构化的形式呈现出来。该任务首先从非结构化文本中识别出事件及其类型,然后抽取出该事件所涉及的事件元素。
几个事件抽取有关的概念如下:
限定域事件抽取是指,在进行抽取之前,预先定义好目标事件的类型及每种类型的具体结构(包含那些具体的事件元素)。除了事件类型和事件的结构,限定域事件抽取任务通常还会给出一定数量的标注数据。由于事件结构的复杂性,标注数据的规模普遍较小,但是可以保证每个预定义的事件类型都有若干标注样本与之对应。
指对某种类型事件的识别和抽取是在一些模式的指导下进行的,模式匹配的过程就是事件识别和抽取的过程。一般分为两个步骤:模式获取和模式匹配。模式的加入是为了提高事件抽取的准确率,因此,模式准确性是影响整个方法性能的重要因素。按所需训练数据的来源,可以分为有监督的事件模式匹配和弱监督的事件模式匹配。
模式的获取完全基于人工标注的语料,这类方法需要人工预先对语料进行完全标注,模式的学习效果高度依赖于人工标注效果。一般包括如下步骤:
只需要人工对语料进行一定的预分类或者制定少量种子模式,由机器根据预分类语料或者种子模式自动学习事件模式。主要有两个步骤:
基于模式匹配的事件抽取方法在特定领域中性能较好,但该类方法依赖于文本的具体形式(语言、领域和文档格式等),获取模板的过程费事费力,具有很强的专业性。而且,制定的模式很难覆盖所有的事件类型,当语料发生变化时,需要重新获取模式。可以执行差,召回率低。
一般包括三个步骤:(1)训练样本的表示;(2)训练分类器并训练模型,优化模型参数;(3)利用训练好的模型从未标注数据中抽取事件实例。重点在于挑选合适的特征和分类器使得分类结果更加准确。可以分为两类:一类是基于特征工程的方法,主要是在不同的分类器模型上尝试不同类别的特征;另一类是基于神经网络的方法,自动从纯文本中提取特征,避免使用传统自然语言处理工具带来的误差积累问题。
有监督事件抽取需要大量的标注样本,而人工标注数据耗时费力、一致性差,尤其是面向海量异构的网络数据时,问题更加明显。在弱监督事件抽取中,为了得到规范的语义标签,需要给出具有规范语义标签的标注训练数据。语料的获取有两种途径:(1)利用Bootstrapping的方法扩展语料,首先人工标注部分数据,然后自动扩展数据规模。(2)利用Distant Supervision的方法自动生成大规模语料,主要利用结构化的事件知识回标非结构化文本,获取大规模训练样本后完成事件的抽取。基于弱监督的事件抽取,关键在于如何获得大规模的标注样本。
基于弱监督的事件抽取方法还处于起步阶段,迫切需要能自动生成大规模的、高质量的标注数据的方法来提升事件抽取的性能。
金融事件可以帮助用户快速获取公司交易盈亏、人事变动、股权变动等信息,进而辅助用户做出正确的决策。公司通常通过公告的形式发布公司的重大事件,但公告内容一般是一篇文章而不仅仅是一个独立的句子,因此,如何从篇章级的公告信息中抽取出重要的结构化金融事件信息具有重要价值和现实意义。
基于机器学习的方法是目前主流的研究方法,这类方法将事件抽取建模为分类问题。弱监督学习方法被逐渐应用到事件抽取任务中,旨在自动生成部分标注数据,缓解数据稀疏带来的性能影响。然而,限定领域的事件远远不能满足大规模事件知识图谱的构建和其他大规模应用的需求。
开放域事件抽取的目标类型不受限制,在进行事件识别之前,可能的事件类型以及事件的结构都是未知的,因此该任务通常没有标注数据。
开放域事件抽取主要是基于无监督的方法,该方法主要基于分布假设:如果两个词出现在相同的上下文中且用法相似,那么这两个词就意思相近。
在事件抽取中,如果候选事件触发词或者候选事件元素具有相似的语境,那么这些候选事件触发词倾向于出发相同类型的事件,相应的候选事件元素倾向于扮演相同的事件元素。无监督事件抽取将候选词的上下文作为表征事件语义的特征。
一般包含如下步骤:
无监督关系抽取中,关键在于如何寻找更好的文本表示方法、文本相似度衡量指标以及事件聚类模型。发现的新事件往往是相似模板的聚类,难以规则化,很难被用来构建知识库,需要将其同现有知识库的事件框架进行对齐,或者通过人工方式来给每个聚类事件簇赋予语义信息。
通过检测文本的异常发布情况进行事件识别。这类方法的基本假设是:某个重大事件的发生会导致新闻媒体或社交网络上涌现大量的相关报道或讨论;反之,关于某一主题的报道或讨论突然增多则暗示着某一重大事件的发生。
开放域事件识别虽然可以自动发现新的事件,但其发现的事件往往缺乏语义信息,并且难以进行结构化。如果想要获得准确的语义信息,则需要通过人工标注的方式为每个类别簇赋予特定的语义标签。上述缺点导致开放域事件识别的结果很难被应用到其他自然语言处理任务中。
从历史事件中发现规律,厘清事件间的关系有助于人们从全局了解世界,进而构建事件知识图谱,支撑各种事件相关的应用。核心任务是以事件为基本语义单元,实现事件逻辑关系的深层检测和抽取。
当两个事件指称指向真实世界的同一个目标事件时,则认为这两个目标事件具有共指关系。事件共指关系的发现,有助于在多源数据中发现相同事件,对事件信息的补全和验证有积极作用。核心问题是计算两个事件指称之间的相似度。一般会利用两类特征:(1)事件指称的文本语义相似度;(2)事件类型和事件元素之间的相似度。
事件因果关系反映了事件间前后相继、由因及果的一种关系。因果关系的抽取对文本的深层语义理解有着重要意义,有助于掌握事件演变的过程,从而为决策者提供重要的决策信息。
因果事件的抽取极其困难:
子事件关系反映了事件之间的粒度和包含关系。
事件时序关系是指事件在时序上的先后顺序。事件时序关系不仅有助于厘清事件发生的先后顺序,还能辅助其他事件关系的发现。目前主流的是基于机器学习方法的事件时序关系抽取,该类方法一般将事件时序关系识别转化为一个多分类问题。
目前大部分知识图谱只包含实体和实体关系知识,缺乏事件知识,事件知识的加入会进一步提升知识图谱的表达知识的能力。如何组织和构建同时包含实体、实体关系、事件和事件关系的事件知识图谱得到了越来越多的关注。
如何有效地存储和检索上述大规模的知识图谱数据集是一个重要的研究内容。
知识图谱是一种有向图结构,描述了现实世界中存在的实体、事件或者概念以及它们之间的关系。其中,图中的节点表示实体、事件或者概念,边表示相邻节点之间的关系。
知识图谱的目标是构建一个能够刻画现实世界的知识库,对知识的持久化存储并提供对知识数据的高效检索是一个知识图谱系统必须具备的基本功能。
知识图谱的知识是通过RDF结构进行表示的,其基本构成单元是事实。
每个事实是一个三元组(S,P,O),其中S是主语Subject的简写,其取值可以是实体、事件或者概念中的任何一个;P是谓词Predicate的简写,取值可以是关系或者属性;O是宾语Object的简写,取值可以是实体、事件、概念或者普通的值(例如数字、字符串等)。
根据不同的设计原则,知识图谱可以具有不同的表结构。
优点是简单直接,易于理解;缺点有:
为每种类型构建一张表,同一类型的实例存放在相同的表中。表的每一列表示该类实体的一个属性,每一行存储该类实体的一个实例。这样虽然克服了三元组表的不足,但也有新的问题:
一种有效的解决方法是,在构建数据表时,将知识图谱的类别体系考虑进来,即每个类型的数据表只记录属于该类型的特有属性,不同类别的公共属性保存在上一级类型对应的数据表中,下级表继承上级表的所有属性。
基于类型表的存储方式也有明显的不足之处:
关系数据库通过属性对现实世界中的事物进行描述,每个属性的取值范围构成一个集合,称为对应属性的域。属性的取值只能是原子数据。原子数据是指不能进一步拆分的数据,如整数、字符串等;相反,非原子数据则由多个原子数据构成,可以进一步拆分,如集合、列表、元组等。
关系数据库以二维表对数据进行组织和存储,表的每一列表示一个属性,每一行表示一条记录。这些属性可以分为以下几类:
关系数据库通过SQL语言为用户提供一系列的操作接口,其核心功能包括插入、修改、删除、查询四种操作。如果选择关系数据库作为知识图谱的存储引擎,那么对知识图谱的所有操作都需要转换为SQL语句才能执行。
基于图结构的存储方式能够直接准确地反映知识图谱的内部结构,有利于知识的查询。以图的方式对知识进行存储,还可以借鉴图论的相关算法,有利于对知识的深度挖掘及推理。
基于图结构的存储模型用节点表示实体,用边表示实体之间的关系。基于图结构的存储从实体出发,不同实体对应的节点可以定义不同的属性。
基于图结构的存储方法利用有向图对知识图谱的数据进行建模,因此无向关系需要转化为对称的有向关系。优点是不仅可以为节点定义属性,还可以为边定义属性。
图数据库的理论基础是图论,通过节点、边和属性对数据进行表示和存储。图数据库基于有向图。
大部分数据库系统通过形式化的查询语言为用户提供访问数据的接口。关系型数据库的标准查询语言是SQL,图数据库的是SPARQL。
用于管理关系数据库,主要功能包括对数据的插入、修改、删除、查询四种操作。
INSERT
语句完成该功能。基本语法为:INSERT INTO 表名 VALUES (值1, 值2, ...)[, (值1, 值2, ...), ...]
VALUES
对应的值的顺序和数量有着严格的要求。可以加入多个值对,相当于一次插入多行数据到表中。插入数据也可以指明插入数据的列,语法为:
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...)[, (值1, 值2, ...), ...]
UPDATE
语句完成该功能。语法为:UPDATE 表名 SET 列1=值1, 列2=值2, ... WHERE 条件
如果不指定条件,会导致整个表的数据都被修改。
3. 数据删除:通过DELETE
语句完成该功能,基本语法为:
DELETE FROM 表名 WHERE 条件
如果不指定条件,将会清空整张表。
4. 数据查询:通过SELECT
语句完成该功能,查询的结果存储在一个临时的结果表中,基本语法为:
SELECT 列1, 列2, ..., FROM 表名 WHERE 条件
如果想要查询指定表中所有列的数据,可以使用
SELECT * FROM 表名 WHERE 条件
SPARQL也是一种结构化的查询语言,用于对数据的获取与管理,主要包括对数据的插入、删除和查询操作。
INSERT DATA 三元组数据
三元组数据可以是多条三元组,不同的三元组通过“.”(英文句号)分隔,用“;”(英文分号)可以连续插入与前一个三元组的头实体相同的三元组。
2. 数据删除:从RDF图中删除一些三元组,基本语法为:
DELETE DATA 三元组数据
对于给定的每个三元组,如果其在RDF图中,则将其从图中删除,否则忽略该三元组。
3. 数据更新:更新RDF图中指定的三元组的值。可以通过组合INSERT DATA
语句和DELETE DATA
语句来实现该功能。
4. 数据查询:
SELECT
是最为常用的查询语句,可以从知识图谱中获取满足条件的数据,基本语法为:SELECT 变量1 变量2 ... WHERE 图模式 [修饰符]
ASK
用于测试知识图谱中是否存在满足给定条件的数据,如果存在则返回“yes”,否则返回“no”,该查询不会返回具体的匹配数据,基本语法为ASK 图模式
DESCRIBE
用于查询和指定资源相关的RDF数据,这些数据形成了对给定资源的详细描述,基本语法为:DESCRIBE 资源或变量 [WHERE 图模式]
CONSTRUCT
则根据查询图的结果生成RDF,该语句的产生流程为:首先执行WHERE
子句,从知识图谱中获取所有满足图模式的变量取值;然后针对每一个变量取值,替换RDF图模板中的变量,生成一组三元组。基本语法为:CONSTRUCT 图模板 WHERE 图模式
标准的图查询算法复杂度很高,如何提高图查询的效率成为知识图谱研究的重要问题。
图查询的任务是在给定的图数据集中查找给定的查询图,其核心问题是判断查询图是否是图数据集的子图,因此也称为子图匹配问题。该问题的形式化定义为:
子图匹配问题是指在给定查询图 Q Q Q和目标图集 D = G i D={G_i} D=Gi的条件下,在 D D D中找出所有与 Q Q Q同构的子图。
子图同构问题已经被证明是一个NP完全问题。但是,知识图谱中的图结构具有丰富的标签信息:
虽然子图同构判定问题的算法复杂度很高,但是在实际应用中匹配算法的运行时间通常都在可承受范围内,主要有两方面的原因:
为减少匹配的次数,图数据库在进行子图匹配时会先按照一定条件对数据进行筛选,减小候选子图的个数。
图索引技术是实现子图筛选的有效方法。基本原理是:首先根据图上的特征信息建立索引,在进行子图匹配时,根据查询图上的特征能够快速地从图数据库中检索得到满足条件的候选子图,避免在全部子图上进行匹配操作。
频繁度是衡量一个子图频繁程度的指标,通俗地讲,频繁度就是子图出现的次数。
实践中,需要设置一个频繁度来控制需要被索引的子图规模。频繁度设置得过高,那么每个索引项都指向过多的子图,导致过滤效果不佳;频繁度过低则导致索引项太多,不仅导致索引的空间开销过大,也影响索引的检索效率。Ullmann算法是实践中常用的一种判定子图同构的算法,它能够枚举出所有的同构子图,因此也叫做枚举算法。
设矩阵 M A M_A MA、 M B M_B MB分别是图 A A A和图 B B B的邻接矩阵表示;邻接矩阵的第 i i i行第 j j j列的值 M ( i , j ) M_{(i, j)} M(i,j)指示了图中顶点 i i i和顶点 j j j之间是否有边相连,如果有边相连,其值为1,否则为0;Ullmann算法的目标是找到一个映射矩阵 F F F,使得其满足如下条件:
∀ ( i , j ) M A ( i , j ) = 1 ⇒ M F ( i , j ) = 1 \forall(i, j) M_{A(i, j)} = 1 \Rightarrow M_{F(i, j)} = 1 ∀(i,j)MA(i,j)=1⇒MF(i,j)=1
其中, M F = F ( F ⋅ M B ) T M_F=F(F\cdot M_B)^T MF=F(F⋅MB)T。该算法包括三个基本步骤:
图的查询算法复杂度较高,为了提高效率,实践中一般将图的查询问题拆分为子图筛选和子图同构判定两个步骤。
结构化知识图谱的一大优势是能够支撑高效的推理,知识推理是人工智能应用迈向更高级认知智能的重要技术。
虽然知识图谱中包含大量有价值的结构化数据,但是它是非常不完备的。对于具有 r ( h , t ) r(h, t) r(h,t)形式的三元组知识图谱,弱 h , r h, r h,r或 t t t是未知的,需要使用推理方法将缺失的实体或关系预测出来的,这样的任务称为链接预测。
在补全知识图谱缺失关系时,可以选一条边(“边”表示“关系”)连接任意两个实体,构成新的三元组,再判断该三元组是否正确。如果正确,则说明新增加的关系是合理的,意味着发现了一个缺失的关系,可以将其添加到知识图谱中;否则丢弃该边。
在知识图谱中选择一个实体和一个关系,该实体可以作为头实体也可以作为尾实体。当作为头实体时,对尾实体作为预测;当作为尾实体时,对头实体进行预测。如果模型能够准确预测头或者尾实体,则说明可以在选择的实体和预测的实体之间添加关系,否则丢弃该关系。
基于知识的问答主要是通过对自然语言问句的分析,在语义理解的基础上从知识图谱中寻找答案的过程。问答中需要推理的本质原因同样是知识的缺失,问答过程中需要的知识可能在知识图谱中没有显式表达,需要通过推理才能获得隐含知识。
这种情况可能是由于缺失知识图谱中某种关系的明确定义,还可能是由于问题的答案本身就是个复杂的结构。
按照推理任务,推理可以被分为三类,即归纳推理(induction)、演绎推理(deduction)、设证推理(abduction)。设证推理具有一定的特殊性,且不经常使用。
归纳是从特殊到一般的过程,所谓归纳推理,就是根据部分对象所具有的性质,推出一类事物中所有对象都具有这类性质的推理方式。一般具有三个步骤:
从一般到特殊的推导过程,就是从一般性的前提出发,通过推导即“演绎”,得出具体陈述或个别结论的过程。重在通过利用每一个证据,逐步地推导到目标或者意外的结论。
演绎推理中的矛盾关系是指在同一世界中描述同一个问题,两个矛盾的语句或命题不能同时为真,也不能同时为假。
除了矛盾关系外,演绎推理还关注充分条件和必要条件。
具备完备的推理过程和充分的表达能力,可以严格地按照专家预先定义好的规则准确地推导出最终的结论,也就是说在推理的起始点和规则集合固定的情况下,结论也是固定的。确定性逻辑推理没有准确性的评价,如何快速自动地推导出结论是确定性逻辑推理主要研究的目标。
确定性逻辑推理有准确性高、推理速度快等特点。但在真实世界中,尤其是存在于大规模知识图谱中的不确定甚至不正确的事实和知识,确定性逻辑推理很难对其进行处理。
确定性逻辑推理很难应用于充满不确定性的自然语言处理任务中,主要有以下三个原因:
根据以往的经验和分析,结合专家先验知识构建概率模型,并利用统计计数、最大化后验概率等统计学习的手段对推理假设进行验证或推测。
这种基于概率图模型的无约束推理一般都是NP-hard问题,因此在最坏情况下需要指数级的推理时间,更严重的是对于这种推理的近似求解依然是一个NP-hard问题。
目前在这方面的主要工作有:
单纯的概率图模型只是针对具有直接概率依赖的实例级元素,并没有对更高层次的语义框架进行抽象,缺失了真实世界中存在的规律和规则,导致这一类模型需要大量重复的概率评估,会因为海量知识之间存在的复杂的概率依赖关系而需要大量的计算。因此,单纯的概率图模型并不能很好地处理大规模知识推理任务。
2. 概率逻辑推理:通过概率图模型对逻辑进行建模的一类方法,弥补了概率图模型中缺乏可复用规则的缺点。马尔可夫逻辑网模型(Markov Logic Network,MLN)在每个规则上绑定一个权重,并将不同逻辑规则对推理目标的贡献合并到统一的概率模型下,如下所示:
P w ( X = x ) = 1 Z e x p [ ∑ f i ∈ F w i ∑ g ∈ G f i g ( x ) ] = 1 Z e x p [ ∑ f i ∈ F w i n i ( x ) ] \begin{aligned} P_w(X=x) &= \frac{1}{Z}exp \left[\sum_{f_i \in \mathcal{F}} w_i \sum_{g \in G_{f_i}} g(x) \right] \\ &= \frac{1}{Z} exp \left[\sum_{f_i \in \mathcal{F}} w_i n_i(x) \right] \end{aligned} Pw(X=x)=Z1exp⎣⎡fi∈F∑wig∈Gfi∑g(x)⎦⎤=Z1exp⎣⎡fi∈F∑wini(x)⎦⎤
其中, g ( x ) = 1 g(x)=1 g(x)=1时表示这一条实例化的规则是真的,反之是假的,而第二行中的 n ( x ) n(x) n(x)则是 g ( x ) g(x) g(x)为1的计数。 F \mathcal{F} F为Markov网中所有谓词规则的集合, G f i G_{f_i} Gfi是利用所有原子事实去实例化规则 f i f_i fi后的集合。 Z = ∑ x ′ ∈ X e x p [ ∑ f i ∈ F w i n i ( x ) ] Z=\sum_{x' \in X} exp \left[ \sum_{f_i \in \mathcal{F}} w_i n_i(x) \right] Z=∑x′∈Xexp[∑fi∈Fwini(x)]是集合了所有可能世界的归一化参数。马尔可夫逻辑网等概率推理模型的研究围绕结构学习、参数学习和推理三个重要任务展开。
结构学习又可以称为概率逻辑推理模型下的规则自动挖掘,其目的不仅仅是从实例级的数据中获得逻辑规则的样式,也需要在获得的逻辑规则集合的作用下确保目标世界概率最大。
对于参数学习,学习MLN参数的目的是为逻辑规则赋值合适的权重,权重越大,意味着满足该规则的世界越有可能发生。
在获得带有权重的规则集合后,对于使用规则进行推理的过程,一般会规约到概率图模型的推理问题上,再通过最大后验概率或基于可满足性的方法进行推理。
也可以看成是传统的逻辑推理,特点是在知识图谱中的实体和关系符号上直接进行推理操作。
使用归纳推理的思想,从现实的大规模网络知识图谱中自动地总结出逻辑规则,这一任务也被称为逻辑规则挖掘。
假设一般逻辑规则的形式为 r 1 ( x 1 , x 2 ) ∧ r 2 ( x 2 , x 3 ) ∧ … ∧ r n ( x n , x n + 1 ) ⇒ r n + 1 ( x 1 , x n + 1 ) r_1(x_1, x_2) \wedge r_2(x_2, x_3) \wedge \ldots \wedge r_n(x_n, x_{n+1}) \Rightarrow r_{n+1}(x_1, x_{n+1}) r1(x1,x2)∧r2(x2,x3)∧…∧rn(xn,xn+1)⇒rn+1(x1,xn+1),这是一个含环的子图结构,并且可能存在反向边。具有这种形式的逻辑规则被称为Horn子句。
频繁子图挖掘先搜集知识图谱的规则实例,再将规则实例中的实体替换成变量,同时设定一些约束,以快速地确定规则的实用性,并根据知识图谱中规则实例的支撑来快速评价挖掘到的规则。但其朴素的搜索算法具有指数的计算复杂度。一般会有两个指标来评价一条逻辑规则的质量:支持度 s s s和置信度 c c c,两个指标的计算方法如下:
s ( X → Y ) = σ ( X ∪ Y ) N c ( X → Y ) = σ ( X ∪ Y ) σ ( X ) \begin{aligned} s(X \rightarrow Y) &= \frac{\sigma(X \cup Y)}{N} \\ c(X \rightarrow Y) &= \frac{\sigma(X \cup Y)}{\sigma(X)} \end{aligned} s(X→Y)c(X→Y)=Nσ(X∪Y)=σ(X)σ(X∪Y)
其中, X X X可以看成是逻辑规则的身体部分,而 Y Y Y则是逻辑规则的头部,也就是要推理的假设 r n + 1 ( x 1 , x n + 1 ) r_{n+1}(x_1, x_{n+1}) rn+1(x1,xn+1), σ \sigma σ为计数函数, σ ( X ∪ Y ) \sigma(X \cup Y) σ(X∪Y)代表 X X X和 Y Y Y同时出现的次数, N N N是记录的条数,但由于子图挖掘中这一基数非常大,因此一般直接以支持计数(即 X X X、 Y Y Y同时存在的记录条数)作为支持度的度量,即 s ( X → Y ) = σ ( X ∪ Y ) s(X \rightarrow Y) = \sigma(X \cup Y) s(X→Y)=σ(X∪Y)。
AMIE(Association Rule Mining Under Incomplete Evidence)算法是一个典型的规则挖掘算法。
归纳逻辑编程(ILP)更重视没有出现在知识图谱中的负三元组,它认为正例( E + E_+ E+)+负例( E − E_- E−)+背景知识( B B B) ⇒ \Rightarrow ⇒ 假设( h h h)。一个正确的假设 h h h是满足以下要求的命题:
必 要 性 : B ⊭ E + 充 分 性 : B ∧ h ⊨ E + 弱 一 致 性 : B ∧ h ⊭ f a l s e 强 一 致 性 : B ∧ h ∧ E − ⊭ f a l s e \begin{aligned} 必要性:&B \nvDash E_+ \\ 充分性:&B \wedge h \vDash E_+ \\ 弱一致性:&B \wedge h \nvDash false \\ 强一致性:&B \wedge h \wedge E_- \nvDash false \end{aligned} 必要性:充分性:弱一致性:强一致性:B⊭E+B∧h⊨E+B∧h⊭falseB∧h∧E−⊭false
其中,必要性是指在没有引入假设 h h h作为约束时,仅使用背景知识 B B B不能蕴含出正例 E + E_+ E+;充分性指背景知识 B B B以及假设 h h h可以蕴含出正例 E + E_+ E+,这个性质也就是被频繁子图挖掘方法所使用的;弱一致性是指假设 h h h不能与背景知识 B B B冲突;而强一致性是指在弱一致性的基础上不能与已出现的负例有冲突,因此没有负例引入时与强一致性是相同的。
基于ILP的方法比仅利用图结构信息的频繁子图挖掘更具有逻辑性,但由于需要引入大量的负例而在计算规模上受到了约束。
指在一个整体的目标下,通过挑选使整体概率最大的逻辑规则加入到推理模型中,这一过程一般分为四个部分:(1) 定义目标函数;(2)创建逻辑规则结构;(3)搜索逻辑规则的策略;(4)提速方法。
目标函数的定义取决于使用不同的概率逻辑推理模型。
所有多规则空间中选择一个子集使目标函数最大是结构学习方法的核心,而寻找策略大多是将逻辑规则一条接一条地加入到规则集合中,可视为一种在线的增量学习方法,但这种方法的缺陷是在每增加一条规则后都要通过实例化逻辑规则的方法评估概率,这是一个非常耗时的操作。
λ \lambda λ演算是一个形式系统,它本身是一种程序设计语言的模型,主要是被用来研究函数定义、函数应用和递归,后来发展为通用的表达式语言。 λ \lambda λ演算的核心是 λ \lambda λ表达式,而 λ \lambda λ表达式的本质则是一个匿名函数。
一个 λ \lambda λ表达式由变量名,抽象符号 λ \lambda λ,“.”,“(”和“)”组成,并且具有以下语法:
< λ 表 达 式 > : : = < 变 量 名 > ∣ ∣ < λ 表 达 式 > < λ 表 达 式 > ∣ ∣ λ < 变 量 名 > . < λ 表 达 式 > ∣ ∣ ( < λ 表 达 式 > ) \begin{aligned} <\lambda 表达式>::=&<变量名> \\ &||<\lambda表达式><\lambda表达式> \\ &||\lambda <变量名>.<\lambda表达式> \\ &||(<\lambda 表达式>) \end{aligned} <λ表达式>::=<变量名>∣∣<λ表达式><λ表达式>∣∣λ<变量名>.<λ表达式>∣∣(<λ表达式>)
λ \lambda λ表达式具有两种形式:应用型和抽象型。没有显式 λ \lambda λ符号的表达式是应用型函数,标准形式为 E 1 E 2 E_1 E_2 E1E2,其中 E 1 E_1 E1是函数定义, E 2 E_2 E2是函数 E 1 E_1 E1的实参。
对于 λ \lambda λ表达式的运算规律,应用型是从左到右运算,而抽象型是从右到左运算。
λ \lambda λ表达式中含有自由变量(free variable)和绑定变量(bound variable)。被绑定的变量表示某个函数形参的变量,而自由变量不表示任何函数形参的变量。
λ \lambda λ演算的三种操作:
马尔可夫逻辑可以被看成一种通过为逻辑规则绑定权重的方式将一阶逻辑向概率逻辑进行扩展的方法。每个权重的大小反映了对应规则的相对强度或对于推理假设的重要性。当将马尔可夫逻辑规则的权重调到无限大时,其退化为标准的一阶逻辑。
为了表示元组之间的关系,马尔可夫逻辑网为共享一个实体的两个三元组连上一条无向边,并且假设在网络中,不存在超边。在多于两个元组共享一个实体时,应该为每两个元组都连接一条边,并利用团(cliques)捕获元组的依赖性。在确定了推理假设的关系类型后,这样的团结构可以被分割为逻辑表达式。
在规则学习的过程中,通过动态地向规则集合中加入和去除逻辑规则或调节规则的权重,就可以令所有事实的概率趋向于最大化,这是获得的带有权重的规则集合就是一个好的规则集合。
概率软逻辑模型(Probabilistic Soft Logic,PSL)是一种基于一阶逻辑词和马尔可夫逻辑网络的统计关系学习(Statistical Relational Learning)框架。PSL使用加权的一阶谓词公式对无向概率图模型进行紧凑的表示。PSL最大的优点是谓词可以在连续的[0, 1]区间内任意取值。因此,PSL可以方便地对具有连续值的特征(如相似度)进行建模。
PSL模型由一组带有权重的一阶逻辑谓词公式组成,其中每个公式编码了马尔可夫网络中一组共享同一权重的特征集合。书中用 I ( a ) I(a) I(a)表示谓词实例 a a a的取值。PSL使用松弛版本的合取( ∧ \wedge ∧)、析取( ∨ \vee ∨)和取反( ¬ \neg ¬)操作进行逻辑推理,它们的规则如下:
I ( l 1 ∧ l 2 ) = m a x 0 , I ( l 1 ) + I ( l 2 ) − 1.0 I ( l 1 ∧ l 2 ) = m i n I ( l 1 ) + I ( l 2 ) , 1.0 I ( ¬ l 1 ) = 1.0 − I ( l 1 ) \begin{aligned} I(l_1 \wedge l_2) &= max{0, I(l_1)+I(l_2)-1.0}\\ I(l_1 \wedge l_2) &= min{I(l_1)+I(l_2), 1.0}\\ I(\neg l_1) &= 1.0-I(l_1) \end{aligned} I(l1∧l2)I(l1∧l2)I(¬l1)=max0,I(l1)+I(l2)−1.0=minI(l1)+I(l2),1.0=1.0−I(l1)
对于一个给定的实例化谓词公式 r ≡ r b o d y → r h e a d r \equiv r_{body} \rightarrow r_{head} r≡rbody→rhead,其成立的充要条件是$I(r_{body}) \leqslant I(r_{head}) $,也就是说公式头部的取值至少要和主体部分相同。
给定一阶谓词实例和公式,PSL计算所有可能的谓词取值 I I I的概率分布。用 R R R表示实例化的谓词公式集合,那么其概率密度函数 p ( I ) p(I) p(I)为
p ( I ) = 1 Z e x p { − ∑ r ∈ R λ r [ d ( r ) ] p } Z = ∫ I e x p { − ∑ r ∈ R λ r [ d ( r ) ] p } \begin{aligned} p(I) &= \frac{1}{Z} exp \left \{ -\sum_{r \in R} \lambda_r [d(r)]^p \right \} \\ Z &= \int_I exp \left \{ -\sum_{r \in R} \lambda_r [d(r)]^p \right \} \end{aligned} p(I)Z=Z1exp{−r∈R∑λr[d(r)]p}=∫Iexp{−r∈R∑λr[d(r)]p}
其中, Z Z Z是正则化因子, λ r \lambda_r λr是公式 r r r的权重, p ∈ 1 , 2 p \in {1, 2} p∈1,2提供了两种不同的损失函数。
表示学习指将离散的符号表示成低维实数向量或矩阵以捕获元素之间的隐式关联的一种技术手段,而这些被量化的关联也很容易加入到后续任务的计算模型中。表示学习也相当于将原始的特征空间向分布式空间做一次映射,可以带来如下好处:
矩阵(张量)分解的基本思想是用多个低维的矩阵或张量的积代替原始的关系矩阵,从而用少量的参数替代稀疏而大量的原始数据。
RESCAL模型的核心思想是:将知识图谱看成一个三维张量 X X X,其中每个二维矩阵切片代表一种关系,如果两个实体存在某种关系,则将矩阵中对应的值标为1,否则为0;之后将张量 X X X分解为实体矩阵 A A A和一个低阶三维张量 R R R的乘积 X ≈ A R A T X \approx ARA^T X≈ARAT,其中,矩阵 A A A的每一行代表一个实体的向量,张量 R R R的每个切片 R i R_i Ri表示第 i i i种关系。
根据任务的不同,自定义能量函数(或称为目标函数、损失函数),使得成立的事实三元组能量低,不成立的能量高,并通过能量函数的计算结果对事实是否成立进行推理。在学习中,最常见的方法是基于间隔的排序损失(margin-based pairwise ranking loss)。
优势:
但这种方法推理的精度较低。以PTransE和Gu方法为例:
这类方法将普通的原子关系扩展到一个关系序列上,认为知识图谱中的一个关系序列的向量表示可以用来预测两个实体间是否存在这个关系序列下的路径。若一个三元组中的两个实体之间存在一条路径,那么这条路径的向量表示应该接近于三元组关系的向量表示。
两个对符号运算和数值计算进行了融合的具体工作为:
由于常识目前没有统一的表示方法,因此,常识的推理形式也取决于常识的表示方法。
ConceptNet是一个著名的常识知识库,它以三元组的形式来表示一部分常识,并且给出了这类常识在自然语言中的表达方式。因此,其中常识的推理与正常的知识图谱推理没有什么不同。
另一个著名的常识库是Cyc,Cyc是一个致力于将各个领域本体及常识知识进行继承,并在此基础上实现知识推理的人工智能项目。
作为一种描述自然知识与社会知识的重要载体,知识图谱最直接和最重要的任务是满足用户的精确信息需求,提供个性化知识服务。目前的问答和回答系统大多只能回答事实型问题,不能很好地处理复杂问题。
问答技术发展的两大困难是缺乏高质量的知识资源和高效的自然语言分析技术。
Watson和Wolfram Alpha成功的关键因素包括:(1)丰富的知识资源;(2)强大的语义分析技术。
问答系统按照依赖的数据源可以分为:
问答和对话任务中的结构化知识常常被称为知识库(而不是知识图谱)。
知识库的描述语言不仅可以为用户提供统一的交互接口,还能更方便地描述抽象知识(如逻辑规则)和执行复杂查询。
使用结构化查询语言的优点是表达能力强,可以满足用户精细的信息需求。但缺点是用户不但需要掌握结构化查询语言的语法,而且还要充分了解知识库中的资源表示形式。如果不经过训练,普通用户很难利用此类接口找到需要的知识内容。
知识问答系统使用自然语言作为交互语言,为用户提供了一种更加友好的知识图谱查询方式。一方面,自然语言的表达能力非常强,可以满足用户精细而复杂的信息需求;另一方面,这种方式不需要用户接受任何的专业训练。
知识图谱一般表示为相互关联的事实三元组集合。针对用户使用自然语言提出的问题,问答系统通过与知识图谱进行交互,检索相关知识点(事实集),进而进行知识推理得出最终准确的答案。按照技术方法可以分为两类:
语义解析是指把一个自然语言句子映射为某种形式化的语义表示,语义表示形式会根据应用领域的不同而不同。
面向知识图谱的问句解析是指利用知识图谱中的资源项(实体、关系、类别等)表示自然语言问句的语义,并以逻辑公式等形式化语句进行语义表示的任务。
首先需要对问句中的词/短语与知识图谱中的资源项(词汇表)进行映射;然后对匹配到的资源项进行组合;最后还需要对匹配和组合过程中存在的歧义进行消解,选择最正确的组合结果。
语义解析的任务是把一种结构的数据(串行结构的自然语言句子或树形结构的句法树)转换成另一种结构的数据(逻辑表达式)。统计语义解析方法正是利用机器学习模型从已有的数据中学习解析模型,不同的学习方法依赖于不同的学习数据。
生成问句对应的逻辑表达式形式的主要方法是根据语义组合原则构造完整的语义表示结构。语义组合原则是:一条复杂语句的含义由其子句的含义和它们的语义组合原则确定。
语义组合模型:组合范畴语法(Combinatory Categorial Grammars,CCG)是一种有效的、表达能力强的语义组合语法形式,它能处理长距离依赖等多种自然语言现象。CCG的主要思想是把词的句法和语义信息组合在一起形成分析的基础辞典,依据组合语法规则自底向上对自然语言句子进行解析。CCG的核心是辞典 Λ \Lambda Λ,它包括了语义组合过程中所需的全部语法和语义信息。辞典中的每个项由词/短语、句法类型/范畴和逻辑表达式组成。辞典项的类型和语义表达式定义了该项如何与周围项进行组合以及组合之后得到的结果是什么。CCG中还包括了一组组合规则,规定了相邻辞典项如何组合(包括句法类型的组合和逻辑表达式的组合),该过程可以循环迭代地进行。
语义解析的分析过程依次使用这些组合规则,得到句法树,生成相应的逻辑表达式。通过自底向上的解析过程,根据句子的句法结构组合成最终的逻辑表达形式。
在DCS(Dependency-Based Compositional Semantics)中,逻辑形式以树结构表示,被称为DCS树,这种树结构与句子的句法结构平行。因此,DCS树更容易解析和学习。DCS树中的每个节点都表示了一个限制性满足问题(CSP),它通过有效的方式获取各种节点的目标值(根节点的目标值即为该逻辑形式的结果)。
语义词典构造:辞典构建过程中是允许出现错误辞典的,这种错误辞典可以通过后期剪枝等操作进行过滤。
为了从训练集中的<句子,逻辑表达式>对获得<短语,子逻辑表达式>的匹配关系,可以通过模板和规则从整个问句的逻辑表达式中提取子逻辑表达式,然后与问句中提取的短语进行匹配形成候选辞典项。每个规则包含一个能识别逻辑表达式子结构的触发词。对于每个能匹配触发词的逻辑表达式子结构,CCG都需要为其创建一个对应的范畴。通过使用这些辞典项对训练集中的句子进行解析,可能产生一个或多个高得分的分析结果。从这些分析结果中抽取出产生高得分的辞典项加入原始辞典,一直重复该过程直到无法添加新辞典为止。
大规模知识库的问句解析中的一个重要任务就是扩展限定领域中的辞典。
近年来的工作主要思想是通过文本与知识库间的对齐关系,学习到文本与知识库中不同符号的关联程度。
组合消歧模型:PCCG定义概率模型,计算句子 S S S最有可能转换成的逻辑表达式 L L L:
a r g m a x L P ( L ∣ S ; θ ) = a r g m a x L ∑ T P ( L , T ∣ S , θ ) arg \mathop{max}\limits_L P(L|S; \theta) = arg \mathop{max}\limits_L \sum_T P(L, T|S, \theta) argLmaxP(L∣S;θ)=argLmaxT∑P(L,T∣S,θ)
其中,一个逻辑表达式 L L L可能由多个解析树 T T T产生,生成逻辑表达式 L L L的概率由累加所有可以生成该结果的分析树产生, θ ∈ R d \theta \in R^d θ∈Rd是概率模型的参数,其参数值(权重)需要通过学习得到。
PCCG对分析结果定义了如下的概率模型:
P ( L , T ∣ S , θ ) = e f ( L , T , S ) ⋅ θ ∑ ( L , T ) e f ( L , T , S ) ⋅ θ P(L, T|S, \theta) = \frac{e^{f(L, T, S) \cdot \theta }}{\sum_{(L, T)} e^{f(L, T, S) \cdot \theta }} P(L,T∣S,θ)=∑(L,T)ef(L,T,S)⋅θef(L,T,S)⋅θ
其中,函数 f f f用于从 ( L , T , S ) (L, T, S) (L,T,S)中抽取属于 R d R^d Rd的特征向量,每个特征表示了 ( L , T , S ) (L, T, S) (L,T,S)中的某个子结构,分母对满足语法的所有有效分析结果的得分进行求和。
典型的转换过程包括:
类似于人工回答的过程。检验匹配的方法直接在知识图谱中搜索候选答案并按照匹配程序排序,选择排在前面的若干答案作为最终结果。
首先,问答系统需要识别句子中的主题实体(对应知识图谱中的实体);然后,根据该实体在知识图谱中遍历得到候选答案(一般为与它有一条关系路径连接的实体);最后,分别从问句和候选答案中抽取特征表示,训练过程需要根据(问题,答案)数据学习匹配打分模型,测试过程则直接根据训练得到的模型计算它们之间的匹配得分。
一种直接的做法是对问句和候选答案定义特征,并使用特征工程的方法抽取它们,最后基于特征匹配的分类模型对问题-答案匹配程度进行建模。主要步骤包括从问句中提取特征,从候选答案中提取特征,并利用它们进行匹配程度的计算。
基于特征工程的方法可能使特征维度扩大到难以处理。
通过表示学习方法,模型将用户用自然语言表示的问题转换为一个低维空间中的数值向量,同时把知识库中的实体、概念、类别以及它们之间的关系表示为同一语义空间中的数值向量。于是,知识问答任务(判断候选答案集合中哪些实体是正确答案)可以看成是问句的表示向量与候选答案的表示向量匹配程度计算的过程。
这种方法有更好的迁移性,更适用于互联网大规模的知识库问答应用。
WebQuesitons是目前使用最广泛的评测数据集,对于知识问答这类复杂信息需求,完全数据驱动的模型还难以达到理想的性能,对于需要聚合函数、时间推理等的复杂问题,还需要结合规则进行处理。
知识问答系统中假设问题包含了提问者的所有信息需求,实际上对于包含多个信息需求的问题,人们常常会以多个问题的方式表达出来;而且假设问题之间没有任何关系,实际上,多个问题之间常常共享信息。
对话系统是更自然友好的知识服务模式,它可以通过多轮人机交互满足用户的需求、完成具体任务等。
对话系统有几个特征:
本质上讲,对话系统就是能与人进行连贯对话的计算机系统。
对话系统的典型架构包括如下六个组成部分:
根据系统目标的差别,可以分为:(1)任务导向型系统:用户在使用系统时有确定的目标,一般为完成确定任务;(2)通用对话系统:用户没有具体目标,可能在多个任务之间切换。
首先是系统引导对话,然后是用户输入意图,通过用户输入和系统引导的方式交互式地完善用户意图信息,最终完成具体任务。
目标是将文本数据表示的信息转换为可被机器处理的语义表示。机器可处理的语义表示都与具体的任务有关,它需要与特定任务维护的内容数据(知识图谱)进行交互。
如何把输入的文本数据转换为语义信息,有多种难点:
目前,对话系统还难以解决上述所有问题。
这种方法的好处是非常灵活,也容易实现,人们可以根据任务定义各种各样的模板。缺点是复杂场景下需要很多模板,而这些模板几乎无法穷举。因此,基于模板的自然语言理解只适合相对简单的场景。
目前很多方法都是使用数据驱动的统计模型识别对话中的意图和抽取对话中的意图项(槽值抽取和填充)。对话意图识别可以描述为一个分类问题,通过从输入查询中提取的文本特征进行意图分类。槽值抽取可以描述为一个序列标注问题,通过对每个输入词的标注和分类找出各个槽对应的值。
对话管理是对话系统中最重要的组成部分。对话管理用于控制对话的框架和结构,维护对话状态,通过与任务管理器的交互生成相应的动作。
状态转移图可以用有限状态自动机进行描述,状态图中的节点表示系统询问用户各个“槽”值的提示语句,节点间的边表示用户状态的改变,节点间的转移控制着对话的进行。对话过程中,用户的输入对应着特定“槽”的信息,系统根据用户输入的信息从当前状态转移到下一个状态,当任务完成时,即完成了一次对话的交互。
对话管理系统根据各个“槽”的填充情况控制对话的过程。由于可以一次获取框架中的多个“槽”值,因此,不需要重新询问用户已经提供过的信息。另外,填写各个“槽”值的时候也不需要按照固定顺序进行。
这类系统更灵活,它能够适应更多的对话类型。由于它不需要预先确定所有对话流程,因此可以根据当前用户的意图和对话的上下文信息来决定下一步对话操作。前两种方法需要人工定义规则,非常耗费人力和时间,而且人工定义的规则集合难以保证列出所有规则,覆盖率不够。
对话过程是一个连续决策任务,一个好的决策应该是选择各种动作,这些动作集合的目标是最大化完成最终任务的回报(reward)和最小化损失(cost)。因此,可以利用马尔可夫决策过程(Markov Decision Process,MDP)进行建模。MDP是一种可以应用在对话管理系统上的概率模型,通过分析对话数据学习到决策规则,在一定程度上克服了人工定义规则规则覆盖率不足的问题。使用该模型对对话系统建模,能够利用强化学习(Reinforcement Learning)技术基于特定回报/损失求解最优对话策略,学习对话管理模型。
基于对话状态,自然语言生成模块需要得到具体的回复内容。自然语言生成技术包括两个部分:内容选择和内容描述,其中,内容选择是由对话管理模型决定,用户接收的描述内容则取决于自然语言生成模块。
最简便直接的自然语言生成方法通过预先设定的模板,对系统状态(内容)进行一定的组织、选择和变换,将模板填充完整后输出。该方法效率高,实现简单,但是生成的句子质量不高。模板难以维护或扩充,也难以创造新的语言表达。
端到端的自然语言生成模型,采用数据驱动的统计模型学习如何自动生成完整自然语言回复句子。知识问答中自然答案的生成具有非常明确的现实意义和巨大的应用背景,具有如下优势:
以通过图灵测试为目标。
主要是使用关键字和模板匹配的方法,处理和生成的局句式都比较简单,也比较固定,能处理的领域有限,不能处理较复杂的对话,对话的自然度较差。
基于端到端的对话模型希望从原始历史对话数据中学习对话过程中所需的全部知识,自动生成流利、完整的对话内容。
最理想的评价方式就是让人使用对话系统,然后从各个方面对满意度进行打分。
每改变一次系统都需要人工评价,在实践中显然不可行。因此,常常需要有些启发式的自动评价方法,它们能从不同方面对对话系统的性能进行评估比较。
所有评价指标都是基于如下两个准则:(1)最大化任务完成度;(2)最小化成本开销。