《知识图谱——方法、实践与应用》的阅读笔记
知识图谱——方法、实践与应用
第1章 知识图谱概述
1.1 什么是知识图谱
知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。
1.2 知识图谱的发展历史
- 1960 Semantic Networks 语义网络作为知识表示的一种方法被提出,主要用于自然语言理解领域
- 1980 Ontology 哲学概念“本体”被引入人工智能领域用来刻画知识
- 1989 Web Tim Berners-Lee在欧洲高能物理研究中心发明了万维网
- 1998 The Semantic Web Tim Berners-Lee提出了语义互联网的概念
- 1989 Linked Data Tim Berners-Lee定义了在互联网上链接数据的四条原则
- 2012 Knowledge Graph 谷歌发布了其基于知识图谱的搜索引擎产品
符号派:模拟人的心智,研究怎样用计算机符号表示人脑中的知识并模拟心智的推理过程
连接派:侧重于模拟人脑的生理结构,即人工神经网络
1.3 知识图谱的价值
- 辅助搜索
- 辅助问答:基于语义解析、基于图匹配、基于模板学习、基于表示学习和深度学习、基于混合模型
- 辅助大数据分析
- 辅助语言理解
- 辅助设备互联
1.4 国内外典型的知识图谱项目
1.4.1 早期的知识库项目
- Cyc:主要由术语和断言组成,主要特点是基于形式化的知识表示方法刻画知识。形式化的优势是可以支持复杂的推理,但过于形式化也导致知识库的扩展性和应用的灵活性不够
- WordNet:定义了名词、动词、形容词和副词之间的语义关系
- ConceptNet: 采用了非形式化、更加接近自然语言的描述
1.4.2 互联网时代的知识图谱
以互联网资源为基础的新一代知识库,构建方法分为三类:互联网众包、专家协作、互联网挖掘
- Freebase:基于RDF三元组模型,底层采用图数据库进行存储。不对顶层本体做非常严格的控制,用户可以创建、编辑类和关系的定义。
- DBpedia:采用RDF语义数据模型和较为严格的本体
- Schema.org:本质是采用互联网众包的方式生成和收集高质量的知识图谱数据
- Wikidata
- BabelNet:目标是解决WordNet在非英语语种中数据缺乏的问题。首先建立WordNet中的词于Wikipedia的页面标签的映射,然后利用Wikipedia中的多语言链接,再辅以机器翻译技术,给WordNet增加多种语言的词汇
- NELL(Never-Ending Language Learner):给定一个初始的本体(少量类和关系的定义)和少量样本,让机器能够通过自学习的方式不断从Web中学习和抽取新的知识
- Yago:将WordNet的词汇定义与Wikipedia的分类体系进行了融合集成,使得Yago具有更加丰富的实体分类体系;还考虑了时间和空间知识,为很多知识条目增加了时间和空间维度的属性描述
- Microsoft ConceptGraph:以概念定义和概念之间的IsA关系为主,可以用于短文本理解和语义消歧
- LOD(Linked Open Data):遵循Tim提出的进行数据链接的四个规则
- 使用URI标识万物
- 使用HTTP URI,以便用户可以查看事物的描述
- 使用RDF和SPARQL标准
- 为事物添加与其他事物的URI链接,建立数据关联
1.4.3 中文开放的知识图谱
- OpenKG:聚集大量开放的中文知识图谱数据、工具及文献
1.4.4 垂直领域知识图谱
比较项目 | 通用知识图谱 | 领域知识图谱 |
---|---|---|
知识来源及规模化 | 以互联网开放数据或社区众包为主要来源,逐步扩大规模 | 以领域或企业内部的数据为主要来源,通常要求快速扩大规模 |
对知识表示的要求 | 主要以三元组事实型知识为主 | 知识结构更加复杂,通常包含较为复杂的本体工程和规则型知识 |
对知识质量的要求 | 较多地采用面向开放域的Web抽取,对知识抽取质量有一定容忍度 | 知识抽取的质量要求更高,较多地依靠从企业内部的结构化、非结构化数据进行联合抽取,并依靠人工进行审核校验,保障质量 |
对知识融合的要求 | 融合主要起到提升质量的作用 | 融合多源的领域数据是扩大构建规模的有效手段 |
知识的应用形式 | 主要以搜索和问答为主要应用形式,对推理要求较低 | 应用形式更加全面,除搜索问答外,通常还包括决策分析、业务管理等,并对推理的要求更高,有较强的可解释性要求 |
举例 | DBpedia、Yago、百度、谷歌等 | 电商、医疗、金融、农业、安全等 |
领域知识图谱规模巨大、知识结构复杂、来源多样、知识更加异构、具有高度的动态性和时效性、更深层次的推理需求
1.5 知识图谱的技术流程
-
知识来源
-
知识表示与Schema工程
按知识类型的不同,知识图谱包括词、实体、关系、事件、术语体系、规则等
RDF把三元组作为基本的数据模型,其基本的逻辑结构包含主语、谓词、宾语三个部分。
-
知识抽取
按任务可以分为概念抽取、实体识别、关系抽取、事件抽取和规则抽取等
-
知识融合
当多个知识图谱进行融合,或者将外部关系数据库合并到本体知识库时,需要处理两个层面的问题:
- 通过模式层的融合,将新得到的本体融入已有的本体库中,以及新旧本体的融合
- 数据层的融合,包括实体的指称、属性、关系以及所属类别等,主要的问题是如何避免实例以及关系的冲突问题,造成不必要的冗余
-
知识图谱补全与推理
-
知识检索与知识分析
1.6 知识图谱的相关技术
1.6.1 知识图谱与数据库系统
基于三元组库和图数据库能够提供的知识图谱数据存储方案可分为三类:
- 基于关系的存储方案:包括三元组表、水平表、属性表、垂直划分、六重索引和DB2RDF等
- 面向RDF的三元组库
- 原生图数据库——Neo4j
1.6.2 知识图谱与智能问答
研究方法主要分三类:
- 基于语义解析的方法:将自然语言问句解析成结构化查询语言,进而在知识库上执行查询得到答案
- 基于信息检索的方法:通过粗粒度信息检索,在知识库中直接筛选出候选答案;根据问句中抽取出的特征,对候选答案进行排序
- 基于概率模型的方法:要求给定问句Q,答案为a的概率,进而引入概率分解或变分推理的技巧,将目标概率分而治之
单知识点事实型问题已经接近人类水平
多知识点事实型问答还需要聚焦
1.6.3 知识图谱与机器推理
典型的推理包括:演绎推理、归纳推理、溯因推理、类比推理等
推理的作用:对知识图谱进行补全和知识图谱质量校验
推理的方法:基于规则的推理、基于分布式表示学习的推理、基于神经网络的推理以及混合推理
1.6.4 知识图谱与推荐系统
1.6.5 区块链与去中心化的知识图谱
第2章 知识图谱表示与建模
知识图谱表示指的是用什么语言对知识图谱进行建模,从而可以方便知识计算。
2.1 什么是知识表示
无论是语义网络,还是框架语言和产生式规则,都缺少严格的语义理论模型和形式化的语义定义。
基于离散符号的知识表示与基于连续向量的知识表示对比
类别 | 特点 | 优缺点 |
---|---|---|
基于离散符号的知识表示 | 以符号逻辑为基础 | 优:易于刻画显式、离散的知识,具有内生的可解释性 缺:人类知识包含大量不易于符号化的隐性知识,完全基于符号逻辑的知识表示通常由于知识的不完备而失去鲁棒性 |
基于连续向量的知识表示 | 通过嵌入将知识图谱中的实体和关系投射到一个低维的连续向量空间,为每一个实体和关系学习出一个低维度的向量表示 | 优:通过数值运算来发现新事实和新关系,发现更多隐式知识和潜在假设 知识图谱嵌入也通常作为一种类型的先验知识辅助输入很多深度神经网络模型,用来约束和监督神经网络的训练过程。 |
2.2人工智能早期的知识表示方法——怎么表现知识
2.2.1一阶谓词逻辑
- 优点:
- 结构性 能把事物的属性以及事物间的各种语义联想显式地表示出来
- 严密性 有形式化的语法和语义,以及相关的推理规则
- 可实现性 可以转换为计算机内部形式,以便于算法实现
- 缺点:
- 有限的可用性 一阶逻辑的逻辑归结只是半可判定性的
- 无法表示不确定性知识
2.2.2霍恩子句和霍恩逻辑
- 优点:
- 结构性 能把事物的属性以及事物间的各种语义联想显式地表示出来
- 严密性 有形式化的语法和语义,以及相关的推理规则
- 易实现性 可判定,可以转换为计算机内部形式,以便用算法实现
- 缺点:
- 有限的表达能力 不能定义类表达式,不能够任意使用量化
- 无法表示不确定性知识
2.2.3语义网络
语义网络的单元是三元组(节点1,联想弧,节点2),所有节点均通过联想弧彼此相连,语义网络可以通过图上的操作进行知识推理。
- 优点:
- 联想性 最初是作为人类联想记忆模型提出来的
- 易用性 直观地把事物的属性以及语义联系表示出来,便于理解,自然语言与语义网络的转换比较容易实现
- 结构性 语义网路是一种结构化的知识表示方法,能把事物的属性以及事物间的各种语义联想显式地表示出来
- 缺点:
- 无形式化语法 表示形式不一致提高了处理的复杂性
- 无形式化语义 给定的语义网络表达的含义完全依赖处理程序如何对它进行解释
2.2.4框架
理论基本思想:认为人们对现实世界中各种事物的认识都以一种类似于框架的结构存储在记忆中。当面临一个新事物时,就从记忆中找出一个合适的框架,并根据实际情况对其细节加以修改、补充,从而形成对当前事物的认识。
类:知识表示的基本单位
槽:描述对象的一个属性(可以有属性值)
侧面:表示槽属性的一个方面(可以有属性值)
- 优点:
- 结构性 能把事物的属性以及事物间的各种语义联想显式地表示出来
- 框架对于知识的描述比较全面,支持默认值以及触发器
- 缺点:
- 框架构建成本非常高,对知识库的质量要求非常高
- 默认值会增大推理的复杂度
- 无法表示不确定知识
2.2.5描述逻辑
描述逻辑可被看做是利用一阶逻辑对语义网络和框架进行形式化后的产物。
描述逻辑一般支持一元谓词(类)和二元谓词(关系)
被选为互联网本体语言OWL的理论基础
- 优点:
- 结构性 能把事物的属性以及事物间的各种语义联想显式地表示出来
- 严密性 有形式化的语法和语义,以及相关的推理规则
- 多样性 具有大量可判定的扩展,以满足不同应用场景的需求
- 易实现性 可判定,可以转换为计算机内部形式,以便用算法实现
- 缺点:
- 有限的表达能力 不支持显式使用变量,不能够任意使用量化
- 无法表示不确定性知识
2.3互联网时代的语义网知识表示框架
早期Web的标准语言HTML和XML无法适应语义网对知识表示的要求,所以W3C提出了新的标准语言RDF、RDFS和OWL。
2.3.1RDF和RDFS
1.RDF简介
三元组(subject,predicate,object)是图的单元,主语宾语是图的节点,谓语是边。
三元组的主谓宾都有一个全局标识URI,可以被简化成前缀URI(例如ex:jeff)。RDF允许没有全局标识的空白节点,其前缀为“_”。
2.开放世界假设
RDF采用开放世界假设,知识有可能是不完备的,采用开放世界假设意味着RDF图谱可以被分布式储存。
3.RDFS简介
RDF用到了类以及属性描述个体之间的关系,这些类和属性由模式(schema)定义。RDF Schema(简称RDFS)提供了对类和属性的简单描述,从而给RDF数据提供词汇建模的语言,更丰富的定义则需要用到OWL本体描述语言。
RDFS提供了最基本的对类和属性的描述元语:
- rdf:type 用于指定个体的类
- rdfs:subClassOf 用于指定类的父类
- rdfs:subPropertyOf 用于指定属性的父属性
- rdfs:domain 用于指定属性的定义域
- rdfs:range 用于指定属性的值域
在更复杂场景下,RDF(s)语义表达能力显得太弱,并缺少常用的特征:
- 对于局部值域的属性定义:无法说明属性应用于某些具体的类时具有特殊的值域限制
- 类、属性、个体的等价性:无法声明两个类或多个类、属性和个体是等价还是不等价
- 不相交类的定义:只能声明子类关系,不能声明两个类不相交
- 基数约束:无法对某属性值可能或必备的取值范围进行约束
- 关于属性特征的描述:即无法声明属性的某些特征
基于上述问题,提出了OWL
2.3.2OWL和OWL2 Fragments
1.OWL的语言特征
OWL三个子语言的特征和限制举例
子语言 | 特征 | 使用限制举例 |
---|---|---|
OWL Lite | 用于提供给那些只需要一个分类层次和简单的属性约束的用户 | 支持基数,但允许基数为0或1 |
OWL DL | 在OWL Lite基础上包括了OWL所有约束,语言上的逻辑蕴涵是可判定的 | 当一个类可以是多个类的一个子类时,它被约束不能是另外一个类的实例 |
OWL Full | 允许在预定义的(RDF、OWL)词汇表上增加词汇,从而任何推理软件均不能支持OWL Full的所有feature。其语言上的逻辑蕴涵通常是不可判定的 | 一个类可以被同事表达为许多个体的一个集合以及这个集合中的一个个体,具有二阶逻辑特点 |
选择语言的原则:
- 选择Lite还是DL取决于用户需要整个语言在多大程度上给出约束的可表达性
- 选择DL还是Full取决于用户在多大程度上需要RDF的元模型机制
- 使用Full而不是DL时,推理的支持可能不能工作,因为目前没有完全支持Full的系统实现
2.OWL的重要词汇
- 等价性声明,声明两个类、属性和实例是等价的(exp是命名空间http://www.example.org的别称)
- 属性传递性声明
- 12属性互逆声明
- 属性函数性声明,声明一个属性是函数(一个x只能映射到一个y)
- 属性对称性声明
- 属性全称限定声明
- 属性存在限定声明
- 属性基数限定声明
- 相交的类声明,声明一个类是等价于两个类相交
3.OWL版本
最新版本为OWL2,三大子语言为OWL2 RL、OWL2 QL和OWL2 EL
子语言 | 特征 |
---|---|
OWL2 QL | 与本体查询设计的最简单的子语言 |
OWL2 EL | 专为概念术语描述、本体的分类推理设计 |
OWL2 RL | 在RDFS的基础上引入属性的特殊特性(函数性、互反性和对称性),允许声明等价性,允许属性的局部约束,其推理是前向链推理 |
2.3.3知识图谱查询语言的表示
1.SPARQL知识图谱查询基本构成——和MySQL的查询好像
- 变量,RDF中的资源,以"?“或”$"构成
- 三元组模板,在WHERE子句中列出关联的三元组模板
- SELECT子句中知识要查询的目标变量
2.常见的SPARQL查询算子
- OPTIONAL 可选算子
- FILTER 过滤算子
- UNION 并算子
2.3.4语义Markup表示语言
主要包括JSON-LD、RDFa和HTML5 MicroData
2.4常见开放域知识图谱的知识表示方法
2.4.1Freebase
框架主要包含以下几个要素:对象-Object 事实-Facts 类型-Types 属性-Properties
2.4.2Wikidata
框架主要包含以下几个要素:页面-Pages 实体-Entities 条目-Items 属性-Properties 陈述-Statements 修饰-Qualifiers 引用-Reference
2.4.3ConceptNet5
框架主要包含以下几个要素:概念-Concepts 词-Words 短语-Phrases 断言-Assertions 关系-Relations 边-Edges
2.5知识图谱的向量表示方法
2.5.1知识图谱表示的挑战
知识以基于离散符号的方法进行表达,但是这些符号并不能在计算机中表达相应语义方面的信息,也不能进行语义计算。同时因为图结构的特殊性,应用算法的使用与图算法有关,相关算法由较高的复杂度,面对大规模知识库很难扩展。因此改进传统表示的方法,提出了词的向量表示方法。
2.5.2词的向量表示方法
1.独热编码
表示方法简单,但是并没有编码语义层面的信息,稀疏性较强,当整个词典非常大时,编码出的向量的维度也会很大。
2.词袋模型
将文本想象成一个装词的袋子,不考虑上下文关系,不关心词在袋子中存放的顺序,仅记录没歌词在该文本中出现的次数。
3.词向量(词嵌入)
基于上下文的稠密向量表示法
产生词向量的手段:
- Count-based 基于计数的方法,记录文本中词的出现次数
- Predictive 基于预测的方法,既可以通过上下文预测中心词,也可以通过中心词预测上下文
- Task-based 基于任务的,也就是通过任务驱动的方法,通过对词向量在具体任务上的表现效果对词向量进行学习
经典开源工具word2vec中包含的CBoW和Skip-gram模型
模型 | 主要思想 | 过程 |
---|---|---|
CBow | 用上下文预测中心词,从而训练出的词向量包含了一定的上下文信息 | 中心词的上下文词的独热表示与词向量矩阵相乘,提取相应的词向量,并经过Softmax层得到输出,输出的是每一维表达的就是词表中每个词作为该上下文的中心词的概率 |
Skip-gram | 用中心词预测上下文 | 通过中心词的独热表示从词向量矩阵找那个的得到中心词的词向量得到投影层,经过Softmax得到输出,输出的每一维中代表某个词作为输入中心词的上下文出现的概率 |
训练好的词向量在连续空间中呈现一定的关系
2.5.3知识图谱嵌入的概念
知识图谱中包括实体和关系的内容映射到连续向量空间方法的研究领域称为知识图谱嵌入、知识图谱的向量表示、知识图谱的表示学习、知识表示学习。知识图谱嵌入方法的训练需要基于监督学习。在训练的过程中,可以学习一定的语义层信息,词向量具有的空间平移性也简单地说明了这点。
2.5.4知识图谱嵌入的优点
- 提高应用时的计算效率
- 增加下游应用设计的多样性
- 输入信息不再是孤立的不包含语义信息的符号,而是经过一次训练,并且包含一定信息的向量
2.5.5知识图谱嵌入的主要方法
知识图谱嵌入的方法 | 主要思想 | 重点 |
---|---|---|
转移距离模型 | 将衡量向量化后的知识图谱中的三元组的合理性问题,转化成衡量头实体和尾实体的距离问题 head+relation≈tail | 如何设计得分函数,得分函数常常被设计成利用关系把头实体转移到尾实体的合理性的函数。 |
语义匹配模型 | 将整个知识图谱编码成一个三维张量,由这个张量分解出一个核心张量和一个因子矩阵,核心张量中每个二维矩阵切片代表一种关系,因子矩阵中每一行代表一个实体 | 更注重挖掘向量化后的实体和关系的潜在语义 |
考虑附加信息的模型 | 利用附加的信息进行知识图谱嵌入提升 | 实体类型 关系路径 文本描述 逻辑规则 |
2.5.6知识图谱嵌入的应用
应用点 | 含义 | 方法举例 |
---|---|---|
链接预测 | 通过一个已知实体和关系预测另一个实体,或者通过两个实体预测关系。 | 将知识图谱中的每个实体都放在尾实体的位置上,并且放入相应的知识图谱嵌入模型的得分函数当中,计算不同实体作为该三元组的尾实体的得分,得分最高的实体会被作为链接预测的结果 |
三元组分类 | 给定一个完整的三元组,判断三元组的真假 | 三元组各个部分的向量表达带入相应的知识图谱嵌入的得分函数,得分越高,合理性和真实性越高 |
实体对齐 | 验证两个实体是否指代或者引用的是同一个事物或对象 | 使用知识图谱嵌入的得分函数对三元组(x,EqualTo,y)打分,但这种方法的前提是需要在知识图谱中存在EqualTo关系 或设计一些实体之间的相似度函数来判断两个实体的相似程度,再进行对齐 |
问答系统 | 对某一个具体的通过自然语言表达的问题,使用知识图谱中的三元组对其进行回答 | 设计一种得分函数,使问题的向量表示和其正确答案的向量得分较高 |
推荐系统 | 对用户推荐其没有接触过的、但有可能会感兴趣或者购买的服务或产品 | 协同过滤算法 |
第3章 知识存储
以文件形式保存的知识图谱显然无法满足用户的查询、检索、推理、分析及各种应用需求;
传统数据库的关系模型与知识图谱的图模型之间存在显著差异,关系数据库无法有效管理大规模知识图谱数据。
语义万维网领域发展出专门存储RDF数据的三元组库
数据库领域发展出用于管理属性图的图数据库
3.1知识图谱数据库基本知识
3.1.1知识图谱数据模型
在图论中,图是二元组 G =(V,E),其中V是节点集合,E是边集合。知识图谱数据模型基于图论中图的定义,用节点集合表示实体,用边集合表示实体间的联系。
1.RDF图
RDF是W3C制定的在语义万维网上表示和交换及其可理解信息的标准数据模型。
RDF三元组集合即为图中有向边的集合。
RDF图对于节点和边是哪个的属性没有内置的支持。节点属性可用三元组表示,这类三元组的宾语称为字面量,即图中的矩形。
2.属性图
属性图是目前被图数据库业界采纳最广的一种图数据模型,由节点集合边集组成,且满足:
- 每个节点具有唯一的id
- 每个节点具有若干条出边
- 每个节点具有若干条入边
- 每个节点具有一组属性,每个属性是一个键值对
- 每条边具有唯一的id
- 每条边具有一个头节点
- 每条边具有一个尾节点
- 每条边具有一个标签,表示联系
- 每条边具有一组属性,每个属性是一个键值对
3.1.2知识图谱查询语言
查询语言名称 | 知识图谱数据模型 | 介绍 |
---|---|---|
SPARQL | RDF图 | 从语法上借鉴了SQL,同样属于声明式查询语言。包括三元组模式、子图模式、属性路径等多种查询机制。 |
Cypher | 属性图 | 是一种声明式语言,便于用户学习掌握,同事给予数据库查询优化的空间,缺点是不能满足高级用户导航式查询的要求,数据库规划的查询执行计划有可能并不是最优方案。(Neo4j的语言) |
Gremlin | 属性图 | 是Apache TinkerPop图计算框架提供的属性图查询语言。其定位是图遍历语言,执行机制类似一个人置身于图中沿着有向边,从一个节点到另一个节点进行导航式的游走。这类语言的优点是可以时刻知道自己在图中所处的位置,以及如何到达该位置的,缺点是用户需要认识路。 |
3.2常见知识图谱存储方法
3.2.1基于关系数据库的存储方案
按照时间发展顺序简要介绍各种基于关系表的知识图谱存储结构,包括三元组表、水平表、属性表、垂直划分、六重索引和DB2RDF。
表类型 | 说明 | 优点 | 缺点 |
---|---|---|---|
三元组表 | 表的模式 三元组表(主语,谓语,宾语) | 三元组表是将知识图谱存储到关系数据库的最简单、最直接的办法 | 其最大的问题在于将知识图谱查询翻译为SQL查询后的三元组表自连接,当三元组表规模较大时,多个自连接操作会使SQL查询性能低下。 |
水平表 | 每行记录存储一个知识图谱中一个主语所有的谓语和宾语(相当于知识图谱的邻接表)水平表的列数是知识图谱中不同谓语的数量,行数是知识图谱中不同主语的数量 | 水平表的查询大为简化,仅需单表查询即可完成该任务,不用进行表连接操作 | 所需列的树木等于知识图谱中不同谓语数量,在真实图谱数据集中,不同谓语数量可能为几千个到上万个,很可能超出关系数据库允许的表中列数目的上限;对于一行来说,仅在极少数列上具有值,表中存在大量空值;在知识图谱中,同一主语和谓语可能具有多个不同宾语,而水平表的一行一列上只能存储一个值;知识图谱的更新往往引起谓语的增加、修改和删除,即水平表中列的增加、修改或删除,这是对于表结构的改变,成本很高。 |
属性表 | 将同类主语分到一个表中,不同类主语分到不同表中 | 克服三元组表的自连接问题,解决了水平表中列数目过多的问题 | 对于规模稍大的真实知识图谱数据,主语的类别可能由几千个到几万个,按照属性标方案,需要建立几千个到上万个表,往往超出关系数据库的限制;对于知识图谱稍复杂的查询,多个表进行连接影响查询效率;即使在同一类型中,不同主语具有的谓语集合不同会造成空值问题;水平表方案中一对多联系或多值属性存储问题依然存在。 |
垂直划分 | 为每种谓语建立一张表,表中存放知识图谱中由该谓语连接的主语和宾语值 | 谓语表仅存储出现在知识图谱中的三元组,解决了空值问题;一个主语的一对多联系或多值属性存储在谓语表的多行中,解决了多值问题;每个谓语表都按照主语猎德值进行排序,能够使用归并排序连接快速执行不同谓语表的连接查询操作。 | 需要创建的表的数目与知识图谱中不同谓语数目相等,在关系数据库中维护如此规模的表需要很大的开销;复杂的知识图谱查询操作,需要执行的表连接操作数很多,对于未指定谓语的三元组查询,将发生需要连接全部谓语表进行查询的极端情况 |
六重索引 | 将三元组全部6种排列对应地建立为6张表,spo(主谓宾)、pos(谓宾主)、osp(宾谓主)、sop、pso、ops | 每种三元组模式查询都可以直接使用相应的索引表进行快速的前缀范围查找;通过不同索引表之间的连接操作直接加速知识图谱上的连接查询,避免单表自连接。 | 需要花费6倍的存储空间开销、索引维护代价和数据更新时的一致性维护代价;当知识图谱查询变得复杂时,会产生大量的连接索引表查询操作,索引表自连接依然不可避免 |
DB2RDF | 由dph表、rph表、ds表和rs表组成 | 好,特别好(可以多看几遍) |
==DB2RDF==特别好,可以多看几遍
3.2.2面向RDF的三元组数据库(略,有需要再学)
3.2.3原生图数据库
3.2.4知识图谱数据库比较
名称 | 类型 | 许可证 | 存储方案 | 开发语言 | 特点 |
---|---|---|---|---|---|
3store | 基于关系 | 开源 | 三元组表 | C | 早期系统,三元组存储代表 |
DLDB | 基于关系 | 研究原型 | 水平表 | Java | 早期系统,水平表存储代表 |
Jena | 基于关系 | 开源 | 属性表 | Java | 主流语义web框架与数据库 |
SW-Store | 基于关系 | 研究原型 | 垂直划分 | C | 科研原型系统,垂直划分代表 |
IBM DB2 | 基于关系 | 商业 | DB2RDF | Java | 支持RDF的主流商业数据库 |
Oracle 12c | 基于关系 | 商业 | 关系存储 | Java | 支持RDF的主流商业数据库 |
RDF4J | RDF三元组库 | 开源 | SAIL API | Java | 主流语义web框架与数据库 |
RDF-3X | RDF三元组库 | 开源 | 六重索引 | C++ | 科研原型系统,六重索引代表 |
gStore | RDF三元组库 | 开源 | VS树 | C++ | 科研原型系统,原生图存储 |
Virtuoso | RDF三元组库 | 商业 | 多模型混合 | C/C++ | 语义web项目常用RDF数据库 |
AllegroGraph | RDF三元组库 | 商业 | 三元组索引 | Common Lisp | 擅长语义推理功能 |
GraphDB | RDF三元组库 | 商业 | 三元组索引 | Java | 支持SAIL层推理功能 |
Blazegraph | RDF三元组库 | 商业 | 三元组索引 | Java | 基于RDF三元组库的图数据库 |
StarDog | RDF三元组库 | 商业 | 三元组索引 | Java | 支持OWL2推理机制 |
Neo4j | 图数据库 | 开源/商业 | 原生图存储 | Java | 最流行的图数据库 |
JanusGraph | 图数据库 | 开源 | 分布式存储 | Java | 分布式图数据库 |
OrientDB | 图数据库 | 商业 | 原生图存储 | Java | 支持多模型数据管理 |
Cayley | 图数据库 | 开源 | 外部存储 | Go | 轻量级开源图数据库 |
3.3知识存储关键技术
3.3.1知识图谱数据库的存储:以Neo4j为例
一般认为具有“无索引邻接”特性的图数据库称为原生图数据库
只有将图数据的边表示的关系当作数据库的“一等公民”(即数据库中最基本、最核心的概念),才能实现真正的“无索引邻接”特性。
3.3.2知识图谱数据库的索引
1.属性数据索引
Neo4j数据库在前述存储方案的基础上支持用户对属性数据建立索引,目的是加速针对某属性的查询处理性能。
2.图结构索引
为图数据中的点边结构信息建立索引的方法
- 基于路径的图索引:将图中长度小于或等于一个固定长度的全部路径构建为索引结构
- 基于子图的图索引:将图数据中某些子图结构信息作为关键字,将该子图的实例数据作为值而构建的索引结构
为避免建立子图的图索引太复杂,可以从用户的查询日志中挖掘频繁使用的子图模式,并以此作为关键字建立索引。
第4章 知识抽取与知识挖掘
知识抽取式构建大规模知识图谱的重要环节,而知识挖掘则是在已有知识图谱的基础上发现其隐藏的知识。
4.1知识抽取任务
知识抽取是指自动化地从文本中发现和抽取相关信息,并将多个文本碎片中的信息进行合并,将问结构化数据转换成结构化数据,包括某一特定领域的模式、实体关系或RDF三元组,其目的在于从不同来源、不同结构的数据中进行知识提取并存入知识图谱中。
- 命名实体识别:从文本中检测出命名实体,并将其分类到预定义的类别中。一般命名实体识别是知识抽取其他任务的基础。
- 关系抽取:从文本中识别抽取实体及实体之间的关系。
- 事件抽取:识别文本中关于事件的信息,并以结构化的形式呈现。
4.2面向非结构化数据的知识抽取
4.2.1实体抽取
实体抽取式解决很多自然语言处理问题的基础,也是知识抽取中最基本的任务。
现有方法 | 描述 | 优点 | 缺点 |
---|---|---|---|
基于规则的方法 | 采用人工编写规则的方式进行实体抽取,由领域专家手动构建大量的实体抽取规则 | 在小数据集上可以达到很高的准确率和召回率 | 数据集很大时,规则集的构建周期变长,可移植性较差 |
基于统计模型的方法 | 利用完全标注或部分标注的语料进行模型训练,将命名实体识别作为序列标注问题处理。与普通分类问题相比,序列标注问题中当前标签的预测不仅与当前输入特征相关,还与之前的预测标签相关,即预测标签序列是有强相互依赖关系的。基于统计模型构建命名实体的识别方法主要涉及训练语料标注、特征定义和模型训练。 | ||
基于深度学习的方法 | 目前用于命名实体识别的神经网络主要有卷积神经网络、循环神经网络以及引入注意力机制的神经网络。不同的神经网络结构在命名实体识别过程中扮演编码器的角色,它们基于初始输入以及词的上下文信息,得到每个词的新向量表示,最后再通过CRF明输出对每个词的标注结果。 |
4.2.2关系抽取
关系抽取是从文本中抽取出两个或者多个实体之间的语义关系。
现有方法 | 描述 | 优点 | 缺点 |
---|---|---|---|
基于模板的关系抽取方法 | 基于语言学知识,结合语料的特点,由领域专家手工编写模板,从文本中匹配具有特定关系的实体 | 模板构建简单 | 数据规模较大,手工构建模板需要耗费领域专家大量的时间 可移植性较差 手工构建的模板数量有限,模板覆盖的范围不够,召回率普遍不高 |
基于监督学习的关系抽取方法 | 将关系抽取转化为分类问题,在大量标注数据的基础上,训练有监督学习模型进行关系抽取,步骤为:预定义关系的类型;人工标注数据;设计关系识别所需的特征;选择分类模型;基于标注数据训练模型;对训练的模型进行评估 | ||
基于弱监督学习的关系抽取方法 | 训练语料不足时,若监督学习方法可以只利用少量的标注数据进行模型学习,主要包括远程监督方法和Bootsrapping | 远程监督可以利用丰富的知识图谱信息获取训练数据,有效减少人工标注的工作量 Bootstrapping方法有点事关系抽取系统成本低,适合大规模关系抽取任务 | 远程监督的基本假设导致大量噪声被引入到训练数据中,从而引发语义漂移的现象 Bootstrapping方法对初始种子较为敏感,存在语义漂移问题,结果准确率较低 |
基于监督学习的关系抽取方法,根据计算特征的复杂性,将常用特征分为轻量级、中量级和重量级。轻量级特征主要是基于实体和词的特征,例如句子中实体前后的词、实体类型以及实体之间的距离。中量级特征主要基于句子中语块序列的特征。重量级特征一般包括实体间的依存关系路径、实体间依存树结构的距离以及其他特定的结构信息。
已有基于深度学习的关系抽取方法包括流水线方法和联合抽取方法两大类,各有优劣
流水线方法将识别实体和关系抽取作为两个分离的过程进行处理,两者不会相互影响;关系抽取在实体抽取结果的基础上进行,因此关系抽取的结果也依赖于实体抽取的结果。联合抽取方法将实体抽取和关系抽取相结合,在同一的模型中共同优化;联合抽取方法可以避免流水线方法存在的错误积累问题。
远程监督方法的基本假设是如果两实体在知识图谱中存在某种关系,则包含两个实体的句子均表达了这种关系,其一般步骤为:
- 从知识图谱中抽取存在目标关系的实体对
- 从非结构化文本中抽取含有实体对的句子作为训练样例
- 训练监督学习模型进行关系抽取
Bootstrapping方法利用少量的实例作为初始种子集合,然后在种子集合上学习获得关系抽取的模板,再利用模板抽取更多的实例,加入种子集合中,通过不断迭代,抽取关系
4.2.3事件抽取
事件抽取是指从自然语言文本中抽取出用户感兴趣的事件信息,并以结构化的形式呈现出来。
1.事件抽取的流水线方法
包括事件识别、元素抽取、属性分类和可报告性判别这四个子任务。
每个子任务阶段都可能存在误差,误差不断积累会使事件抽取性能急剧衰减。
2.事件的联合抽取方法
联合事件抽取方法可以采用联合推断或联合建模的方法
4.3面向结构化数据的知识抽取
4.3.1直接映射
直接映射将关系数据库表结构和数据直接转换为RDF图,关系数据库的数据结构直接反应在RDF图中
4.3.2R2RML
从关系数据库到RDF数据集的自定义映射语言,可以针对特定的数据库模式和目标词汇量身定制
R2RML映射是通过逻辑表从数据库中检索数据的,一个逻辑表可以是数据库中的一个表、视图或有效的SQL语句查询
4.3.3相关工具
系统 | 支持推理 | 支持映射 | 开放许可 | 开发时间 |
---|---|---|---|---|
D2RQ | 无 | D2RQ映射、R2RML | Apache 2 | 2004 |
Mastro | OWL 2QL | R2RML | Academic | 2006 |
Ultrawrap | RDFs-plus | R2RML | 商业 | 2012 |
Morph-RDB | 无 | R2RML | Apache 2 | 2013 |
Ontoop | OWL 2QL/SWRL | D2RQ映射、R2RML | Apache 2 | 2010 |
4.4面向半结构化数据的知识抽取
4.4.1面向百科类数据的知识抽取
DEpedia知识抽取的总体框架:
- 页面集合,包含本地及远程的维基百科文章数据
- 目标数据,存储或序列化提取的RDF三元组
- 将特定类型的维基标记转换为三元组的提取器
- 支持提取器的解析器,确定数据类型,在不同单元之间转换值并将标记分解成列表
- 提取作业,负责将页面集合、提取器和目标数据分组到一个工作流程中
- 知识提取管理器,负责管理将维基百科文章传递给提取器并将其输出传递到目标数据的过程
4.4.2面向Web网页的知识抽取
从网页中获取结构化信息一般通过包装器实现。包装器是能够将数据从HTML网页中抽取出来,并将它们还原为结构化数据的软件程序。
包装器生成方法有三大类:手工方法、包装器归纳方法和自动抽取方法
- 手工方法是通过人工分析构建包装器信息抽取的规则
- 包装器归纳方法基于有监督学习方法从已标注的训练样例集合中学习信息抽取的规则,然后对相同模板的其他网页进行数据抽取的方法。典型流程:网页清洗、网页标注、包装器空间生成、包装器评估
- 自动抽取方法:相似的网页通过聚类分成若干组,通过挖掘同一组中相似网页的重复模式,生成适用于该网页的包装器
信息抽取方法 | 优点 | 缺点 |
---|---|---|
手工方法 | 对任何网页都是通用的,简单快捷 能抽取到用户感兴趣的内容 | 需要对网页数据进行标注,耗费大量的人力 维护成本高 无法处理大量站点 |
包装器归纳方法 | 需要人工标注训练数据 能抽取到用户感兴趣的数据 可以运用到中小规模网站的信息抽取 | 可维护性较差 需要投入大量人力进行数据标注 |
自动抽取方法 | 无监督的方法,无需人工进行数据的标注 可以运用到大规模网站的信息抽取 | 需要相似的网页作为数据如 抽取的内容可能达不到预期,会抽取出一些无关信息 |
4.5知识挖掘
从已有的实体及实体关系出发挖掘新的知识
4.5.1知识内容挖掘:实体链接
实体链接是指将文本中的实体指称链向其在给定知识库中目标实体的过程。通过实体链接,文本中的实体指称与其在知识库中对应的实体建立了链接。
实体链接的基本流程包括:实体指称识别、候选实体生成和候选实体消歧
1.实体指称识别
通过命名实体识别技术或者词典匹配技术识别出文本中的实体指称。
2.候选实体生成
确定文本中的实体指称可能指向的实体集合。
- 表层名字扩展:从实体提及出现的相关文档中识别其他可能的扩展变体,利用这些扩展形式形成实体提及的候选实体集合
- 基于搜索引擎的方法:将实体提及和上下文文字提交至搜索引擎,可以根据检索结果生成候选实体
- 构建查询实体引用表:实体引用表可以看做是一个<键-值>映射,一个键可以对应一个或多个值
3.候选实体消歧
在确定文本中的实体指称和候选实体后,实体链接系统需要为每一个实体指称确定其指向的实体
- 基于图的方法:将实体指称、实体以及它们之间的关系通过图的形式表示出来,然后再图上对实体指称之间、候选实体之间、实体指称与候选实体之间的关联关系进行协同推理
- 基于概率生成模型的方法:基于概率生成模型对实体提及和实体的联合概率进行建模,可以通过模型的推理求解实体消歧问题
- 基于主题模型的方法:对实体在文本中的相容度、实体与话题的一致性进行联合建模,从而提升实体链接的结果
- 基于深度学习的方法
4.5.2知识结构挖掘:规则挖掘**看不太懂**
1.归纳逻辑程序设计ILP
以**一阶逻辑**归纳为理论基础,并以一阶逻辑为表达语言的符号规则学习算法
2.路径排序算法PRA
将关系路径作为特征的知识图谱链接预测算法,因为其获取的关系路径实际上对应一种霍恩子句,PRA计算的路径特征可以转换为逻辑规则,便于人们发现和理解知识图谱中隐藏的知识。
PRA基本思想是通过发现连接两个实体的一组关系路径预测实体间可能存在的某种特定关系
工作流程:特征选择、特征计算和关系分类
- 特征选择:对关系路径进行选择,仅保留对于预测目标关系潜在有用的关系路径
- 特征计算:为每个实体对计算特征值,通过计算实体对在每个特征关系路径上的可达概率,得到该实体对所有特征的值
- 关系分类:基于训练样例和特征,为每个关系目标训练一个分类模型,预测知识图谱中任意两个实体之间是否存在某种特定关系
第5章 知识图谱融合
5.1什么是知识图谱融合
知识图谱包含描述抽象层知识的本体层和描述具体事实的实例层。本体层用于描述特定领域中的抽象概念、属性、公理,实例层用于描述具体的实体对象、实体间的关系,包含大量的事实和数据。
本体描述的内容在语义上往往重叠或关联,但使用的本体在表示语言和表示模型上具有差异,这造成了本体异构。
另一方面,知识图谱中的大量实例也存在异构问题,同名实例可能指代不同的实体,不同命实例可能指代同一个实体,大量的共指问题会给知识图谱的应用造成负面影响。
知识融合是解决知识图谱异构的有效途径。知识融合建立异构本体或异构实例之间的联系,从而使异构的知识图谱能互相沟通,实现它们之间的互操作。知识融合的核心问题在于映射的生成。
5.2知识图谱中的异构问题
知识图谱异构的情况可以被分为两个层次:
- 语言层不匹配:用来描述知识的元语言是不匹配的,其中既包括描述知识语言的语法和所使用的语言原语上的不匹配,还包括定义类、关系和公理等知识成分机制上的不匹配
- 模型层不匹配:由于本体建模方式不同所造成的的不匹配,包括不同建模这对事物概念化抽象不匹配、对相同概念或关系的划分方式不匹配,以及对本体成分解释的不匹配
5.2.1语言层不匹配
- 语法不匹配:采用一个简单的重写机制就足以解决这类问题,但语法上的不匹配不会单独出现,而是与其他语言层上的差异同时出现,因此尽量将不同的语言转化为同样的语法给是能方便解决其他本体不匹配问题
- 逻辑表示不匹配:不同的语言可能采用不同的形式来表示逻辑意义上的等价结果
- 原语的语义不匹配:不同语言使用同样名称的原语进行本体构建时,语义是有差异的;两个本体看起来使用相同的语法,但语义仍有可能是有差异的
- 语言表达能力不匹配:不同本体语言表达能力上的差异,一些本体语言能够表达的事情在另一些语言中不能表达出来。为了方便解决本体之间的异构,需要将表达能力弱的语言向表达能力强的语言转换。但是如果表达能力强的语言不能完全兼容表达能力弱的语言,这样的转换可能造成信息的损失
5.2.2模型层不匹配
- 概念化不匹配
- 概念范围的不匹配:同样名称的概念在不同的领域内表示的含义有差异;不同的建模这出于对领域需求或主观认识上的不同,在建模过程中对概念的划分往往也有差异
- 模型覆盖的不匹配:不同本体对于描述的领域往往在覆盖的知识范围上有差异,而且对于所覆盖的范围,它们之间描述的详细程度也有差异
- 模型的广度,即本体模型描述的领域范围
- 模型的粒度,本体对所建模的领域进行描述的详细程度
- 本体建模的观点,决定本体从什么认识角度来描述领域内的知识
- 解释不匹配
- 模型风格不匹配
- 范例不匹配,不同的范例可用来表示相同的概念(时间间隔和时间点都可以表示时间)
- 概念描述不匹配
- 建模术语上的不匹配
- 同义术语
- 同形异义术语
- 编码格式
- 模型风格不匹配
5.3本体概念层的融合方法与技术
5.3.1本体映射与本体集成
本体集成直接将多个本体合并为一个大本体,本体映射则寻找本体间的映射规则,这两种方法最终都是为了消除本体异构,达到异构本体间的互操作。
本体映射和集成存在差别也存在联系
本体集成过程中,映射可以看作集成的子过程
通过本体映射在异构本体间建立联系规则后,本体就能根据映射规则进行交互
1.基于单本体的集成
直接将多个异构文本集成为一个统一的本体,该本体提供统一的语义规范和共享词汇。
在本体集成的过程中产生了新的本体,也有人将本体集成看作一种生成新本体的过程
本体集成包括:
- 决定本体集成的方式
- 识别本体模块
- 识别每个模块中应该被表示的知识
- 识别候选本体
- 执行集成过程
缺点:
- 使用这些异构本体的系统往往有不同的功能和侧重点
- 单个本体的方法容易收到其中某个系统变化的影响
- 缺乏灵活性
2.基于全局本体-局部本体的集成
首先抽取异构本体之间的共同知识,根据它建立一个全局本体,全局本体描述了不同系统之间一致认可的知识。同时,各个系统可以拥有自己的本体,称为局部本体。局部本体既可以在全局本体的基础上根据自己的需要进行扩充,也可以直接建立自己特有的本体。需要建立局部本体和全局本体之间的映射。
3.本体映射分类
-
映射的对象角度
通过这个角度的分类,明确映射应该建立在异构本体的哪些成分之间。
从映射的对象上来看,可将本体映射分为概念之间的映射和关系之间的映射,其中概念之间的映射是最基本的映射。除非由特殊的要求,一般不考虑针对实例或==公理==之间的映射。
-
映射的功能角度
通过这个角度的分类,进一步明确应该建立具有何种功能的本体映射。
Wang Peng 等人以概念间的映射和关系间的映射为基础,从功能上归纳出11种主要的本体映射,并称这些映射为异构本体之间的桥
表示概念间映射的桥包括等价、同形异义、上义、下义、重叠、部分、对立、连接
表示关系间映射的桥包括等价、包含、逆
-
映射的复杂程度
通过这个角度的分类,明确什么形式的映射是简单的,什么形式的映射是复杂的。
映射分类 原子概念 复杂概念 原子关系 复杂关系 等价 + + 同形异义 + 上义 + + 下义 + + 重叠 + + 部分 + + 对立 + + 连接 + + 等价 + + 包含 + + 逆 + + +表示映射存在,**+**表示是复杂映射
5.3.3本体映射方法和工具
本体映射生成的过程
- 导入待映射的本体。待映射本体不一定都要转化为统一本体语言格式,但要保证本体中需要进行映射的成分方便获取
- 发现映射。寻找异构本体之间的联系,根据这些联系建立异构本体间的映射规则
- 表示映射。映射的表示格式是事先手工制定的
发现本体映射的方法
- 基于术语的方法,借助自然语言处理技术,比较映射对象之间的相似度,以发现异构本体间的联系
- 基于结构的方法,分析异构本体之间结构上的相似,寻找可能的映射规则
- 基于实例的方法,借助本体中的实例,利用机器学习等技术寻找本体间的映射
- 综合方法
5.4实例层的融合与匹配
本章在分析现有几种大规模本体映射方法的基础上,提出一种新的大规模本体映射方法,该方法具有较好的时间复杂度和空间复杂度,并能保证映射结果的质量。
第6章 知识图谱推理
6.1推理概述
6.1.1什么是推理
推理分为逻辑推理和非逻辑推理
逻辑推理包含演绎推理和归纳推理,归纳推理包含溯因推理和类比推理
- 演绎推理是一种自上而下的逻辑推理,是指在给定的一个或多个前提的情况下,推断出一个必然成立的结论的过程。典型的演绎推理有肯定前件假言推理、否定后件假言推理以及三段论
- 归纳推理是一种自下而上的推理,是基于已有部分观察得出一般结论的过程。典型的归纳推理有归纳泛化、统计推理
- 溯因推理也是一种逻辑推理,是在给定一个或多个已有观察事实,并根据已有知识推断出已有观察最简单且最有可能的解释的过程
- 类比推理可以看作只基于对一个事物的观察而进行的对另一个事物的归纳推理,是通过寻找两者之间可以类比的信息,将已知事物上的结论迁移到新的事物上的过程,类比推理的结论相较于前面介绍的三种推理得到的结论错误率更高
- 不确定性推理
- 单调推理
- 非单调推理
6.1.2面向知识图谱的推理
面向知识图谱的推理主要围绕关系的推理展开,即基于图谱中已有的事实或关系推断出未知的事实或关系,一般着重考虑实体、关系和图谱结构三个方面的特征信息。知识图谱推理主要能够辅助推理出新的事实,新的关系,新的公理以及新的规则等。
从知识图谱的生命周期来看,不同的阶段都涉及不同的推理任务,包括知识图谱补全、不一致检测、查询扩展等。
6.2基于演绎的知识图谱推理
6.2.1本体推理
演绎推理的过程需要明确定义的先验信息,所以基于演绎的知识图谱推理多围绕本体展开
1.本体与描述逻辑概述
本体的一般定义为概念化的显示规约,它给不同的领域提供共享的词汇。
推理问题:
- 概念包含
- 概念互斥
- 概念可满足
- 全局一致
- TBox一致
- 实例测试
- 实例检索
2.基于Tableaux的本体推理方法
基于表运算(Tableaux)的本体推理方法是描述逻辑知识库一致性检测的最常用方法。基于表运算的推理方法通过一系列规则构建ABox,以检测可满足性,或者检测某一实例是否存在某概念,基本思量类似于一阶逻辑的归结反驳。
看不懂
3.常用本体推理工具简介
工具名称 | 支持本体语言 | 编程语言 | 算法 |
---|---|---|---|
TaCT++ | OWL DL | C++ | tableau-based |
Racer | OWL DL | CommonLisp | tableau-based |
Pellet | OWL DL | Java | tableau-based |
HermiT | OWL 2 Profiles | Java | hypertableau |
6.2.2基于逻辑编程的推理方法
1.逻辑编程与Datalog简介
逻辑编程是一族基于规则的知识表示语言。本体推理通常仅支持预定义的本体公理上的推理,而规则推理可以根据特定的场景定制规则,以实现用户自定义的推理过程。
2.Datalog语言
Datalog语言是一种面向知识库和数据库设计的逻辑语言,便于撰写规则,实现推理。
Datalog的基本符号有常量、变量和谓词。原子形如P(t1,……,tn),p是一个谓词,t1……tn为项,n被称为p的元数。当体部原子都为真时,头部原子也为真。
3.Datalog推理举例
4.Datalog与知识图谱
5.基于Datalog的推理工具介绍
6.2.3基于查询重写的方法
本节介绍查询重写的方法实现知识图谱的查询,考虑两种情况,第一种情况是知识图谱已经存在,第二种情况是数据并不以知识图谱的形式存在,而是存在外部的数据库中。
第一种情况直接在知识图谱之上的查询称为本体介导的查询回答OMQ
第二种情况称为基于本体的数据访问OBDA
???感觉写的好烂啊
6.2.4基于产生式规则的方法
产生式是一种前向推理系统,可以按照一定机制执行规则并达到某些目标。一个产生式系统由事实集合、产生式集合和推理引擎三部分组成。
6.3基于归纳的知识图谱推理
基于归纳的知识图谱推理主要是通过对知识图谱已有信息的分析和挖掘进行推理的,最常用的信息为已有的三元组
6.3.1基于图结构的推理
1.方法概述
有向图中丰富的图结构反映了知识图谱丰富的语义信息,在知识图谱中典型的图结构是两个实体之间的路径。在知识图谱推理的研究中,常考虑的是实体一跳和两跳范围内的节点和关系
2.常见算法简介
PRA(Path Ranking Algorithm)
基于知识图谱路径特征的PRA算法:针对的知识图谱主要是==自底向上自动化构建==的含有较多噪声的图谱
6.3.2基于规则学习的推理
1.方法概述
路径规则是霍恩规则的一个子集,霍恩规则是一般规则的一个子集,从规则的表达能力来看,一般规则的表达能力最强,包含各种不同的规则类型,霍恩规则次之,路径规则表达能力最弱,只能表达特定类型的规则
对于学习到的规则一般有三种评估方法,分别是支持度、置信度和规则头覆盖度
6.3.3基于表示学习的推理
基于表示学习的推理通过将知识图谱中包括实体和关系的元素映射到一个连续的向量空间中,为每个元素学习在向量空间中表示,向量空间中的表示可以是一个或多个向量或矩阵。表示学习让算法在学习向量表示的过程中自动捕捉、推理所需的特征,通过训练学习,将知识图谱中离散符号表示的信息编码在不同的向量空间表示中,使得知识图谱的推理能够通过预设的向量空间表示之间的计算自动实现,不需要显式的推理步骤
6.4知识图谱推理新进展
6.4.1时序预测推理
6.4.2基于强化学习的知识图谱推理
6.4.3基于元学习的少样本知识图谱推理
6.4.4图神经网络与知识图谱推理
第7章 语义搜索
7.1语义搜索简介
面向文档和面向数据两种模式之间的技术差异大致可以分为三个部分,即对用户需求的表示、对底层数据的表示和匹配技术。面向文档的信息检索主要通过轻量级的语法模型表示用户的检索需求和资源的内容,即目前占主导地位的关键词模型——词袋模型。基于数据库和基于知识的检索系统能够通过使用表达能力更强的模型来表示用户的需求,并且利用数据内在的结构和语义关联,允许更为复杂的查询,进而提供更加精确和具体的答案。
7.2结构化的查询语言
SPARQL查询的核心处理单元是类似RDF三元组形式的三元组模式,不同之处在于SPARQL的三元组模式中,主语、谓语或者宾语可以是变量。类似于RDF三元组可以组成RDF图的道理,由多个SPARQL三元组模式组成的集合称作基本图模式,基本图模式可以用来表示更为明确、复杂的查询需求。SPARQL查询还定义了多个基本图模式之间的运算操作,以及基本图模式与RDF图匹配完成后的结果过滤操作。还有联合查询操作。
7.3语义数据搜索
当前链接数据比较成熟的语义搜索主要包括:面向本体的搜索引擎,面向实体的搜索引擎,面向细粒度数据Web的搜索引擎。这些搜索引擎的基本组成都包括三元组存储、索引构建、查询处理及排序
7.3.1三元组存储
存储方式 | 描述 | 优点 | 缺点 |
---|---|---|---|
IR | 单一的数据结构和查询算法,针对文本数据进行排序检索来优化 | 高度可压缩、可访问,且排序是整个存储索引的组成部分 | 不能处理结构化查询中简单的选择、联结等操作 |
DB | 多种索引和查询算法,以适应各种结构化数据的复杂查询需求 | 能够完成复杂的选择、联结等操作,进而支持SPARQL结构化查询,并且能应对高动态场景 | 空间开销增大和访问有一定的局限性,并且无法集成对检索结果的排序 |
原生存储 | 直接以RDF图形式的存储方式 | 高度可压缩,可访问类似IR的检索排序,支持选择、联结等操作,可在亚秒级时间内在单台机器上完成对TB级数据的查询,以支持高动态场景 | 没有事务、恢复等功能 |
7.3.2索引构建
目前主要方式是重用IR索引来索引RDF语义数据。利用IR索引来索引RDF数据的核心思想是将RDF转换成具有field和terms的虚拟文档
7.3.3查询处理和排序
查询处理的核心步骤是给定查询输入,将其构建成复杂的结构化查询。查询效率和查询表达式的复杂程度之间总是有一个折中点。
对于查询结果的排序,通常需要考虑以下原则:
- 质量传播。一个元素的分数可以看成是其质量的度量,质量传播即通过更新这个分数,反映该元素的相邻元素质量
- 数量聚合。除质量外,还要考虑邻居的数量,有更多的邻居,元素排名会更高
针对多数据源的情况,前提是对分布在不同数据源的数据进行融合,进而查询及处理。
如何针对多数据源进行高质量的映射、理解用户的查询意图以及集成IR和DB排序以处理复杂查询,是未来设计语义数据搜索的关键
7.4语义搜索的交互范式
知识图谱的有效语义搜索需要一种简单高效的搜索范式,即允许用户以直观地、透明的、易用的方式对数据进行查询和浏览。常见的交互范式由:关键词查询、自然语言查询、分面查询、表单查询、可视化查询以及混合方式查询等。
7.4.1基于关键词的知识图谱语义搜索方法
包括两类:依据关键词直接在知识图谱上搜索答案;基于关键词生成结构化的查询,进而提交给查询引擎得到结果
1.基于关键词直接在知识图谱上搜索答案
核心思想:采用知识图谱子图定位策略
常见索引方式:
- 关键词倒排索引
- 摘要索引
- 路径索引
2.基于关键词生成结构化的查询
包括三个步骤:
- 关键词映射:用户输入的关键词和知识图谱上的实体关系往往存在语义鸿沟
- 候选结构化查询构建:映射关键词,生成对应实体和关系,生成局部的知识图谱子图,得到结构化查询需要的查询图结构
- 候选结构化查询排序:对生成的结构哈查询集合进行排序
基于关键词的语义搜索还需要考虑对查询结果进行排序,让用户通过观察排序结果进而更新关键词
7.4.2基于分面的知识图谱语义搜索
分面:用于表示图书文献的多维属性,在此基础上提出了第一种图书分面分类方法——冒号分类法。在该分面分类法中,每一个大类图书由五个基本的分面组成:主体、物质、动力、空间、时间
典型的定义将分面描述为属性或一组分类体系,或将分面定义为某个主题的维度或侧面。
高级的分面搜索系统还具备以下特征:
- 考虑特定领域的分面、分面值和计数,分面能根据它们的起点进行分组
- 支持全面的浏览,通过浏览可以到达每个分面的值
- 支持动态分面和值的聚类
7.4.3基于表示学习的知识图谱语义搜索
通过知识图谱表示学习计数,将其投射到低维连续的向量空间中,对于语义搜索领域有两个好处
- 连续向量空间中,可以直接进行数值型计算,对查询术语或者关键字进行扩展,效率极高
- 低维连续的知识图谱向量表示是通过机器学习技术学习到的,其学习过程既考虑了知识图谱的局部特征,又考虑全局特征,生成的实体和关系的向量在本质上是一种蕴涵语义更丰富的表示,可以进行高效率的简单查询推理
1.基于表示学习的结构化语义查询
2.基于表示学习的自然语言语义查询7
核心在于短语到知识图谱上实体或边的映射,进而生成结构化的查询。难点在于关系歧义的消除和查询图的构建
表示学习面临的三项挑战:
- 最近邻搜索效率问题
- 链接预测的合取问题
- 结果可解释性问题
第8章 知识问答
8.1知识问答概述
问答系统四大要素:
- 问题:问答系统的输入
- 答案:问答系统的输出
- 智能体:问答系统执行者
- 知识库:存储问答系统的知识
搜索与知识问答的明显差异:
- 搜索以文档承载答案,知识问答则直接将答案交付给用户
- 搜索更侧重于简单的用户体验,知识检索诉求主要通过关键词而不是完整的句子,这样需要用户掌握一定的搜索技巧;问答则尝试理解不同自然语言表达方式中固有的语义,然后形成知识查询
- 当用户问题比较复杂,需要通过多个页面的知识来回答时,搜索是无法完成的
对比项目 | 知识问答 | 信息检索 | 数据库查询 |
---|---|---|---|
典型交互形式 | 单轮对话或多轮对话 | 单轮查询 | 单轮查询 |
典型应用场景 | 回答问题 | 简单且可预期的文档关键词搜索,支持大规模非结构化相关信息匹配 | 数据完善且组织明确的数据库精准查询 |
问题表示 | 自然语言 | 关键词 | 结构化查询语言 |
知识组织 | 数据库、知识图谱、文本、知识库、问答对和分布式表示模型 | 文本文档 | 结构化且致密的数据表,有明确的组织 |
知识的可信度 | 通常经过领域专家审核,可信度高 | 搜索结果按重要性排序,通常不保障结果可信性 | 数据库通常都是可信的数据源 |
知识的体量 | 大,能比较完整覆盖特定领域,也可以有限覆盖常见的通用领域 | 超大 | 有限,单一数据库的数据量一般不大 |
智能体的要求 | 不但要理解字面含义,还可以利用领域常识、用户画像等上下文信息消解问题歧义;同时要求在理解用户意图之后,利用知识库解答问题,形成用户可读的答案 | 基于词袋向量模型的关键词匹配,支持关键词级别的关键词扩展、语义相似度匹配 | 处理结构化查询并返回结果 |
答案表示 | 自然语言 | 文本文档或文档中截取的一段文字 | 结构化数据 |
8.2知识问答的分类体系
8.2.1问题类型与答案类型
问题分类体系在很大程度上按照目标答案的差异而区分,所以这里将问题类型和答案类型合并,统一考虑为问题类型
在知识问答系统中,一个合理的分类体系能够体现出问题的类型分布,从而帮助开发者有针对性地设计问题解决方案,并形成良好的问答系统
从问答的功能出发,面向知识图谱的构建整理两种问题类型,事实客观问题和主观层次问题:
1.事实性客观问题
特点:
- 语法结构简单,拥有明确的主谓宾结构,不包括并列、否定等复杂结构
- 语义结构清晰,通常是关于某个事物或事件的简单描述性属性或关系型属性,可以通过简单的数据库查询解答
问题细分:
- 询问命名实体的基本定义
- 询问实体属性,包括描述性属性和关系性属性
- 复杂知识图谱查询
2.主观深层次问题
这一类问题本身语法结构并不复杂,但是这些问题需要一定的专业知识和主观的推理计算才能解答,而且这一类问题有时甚至不止一个答案,需要结合用户偏好和智能体的配置找到不同的最优解
问题细分:
- 问解释WHY
- 问方法HOW
- 问专家意见CONSULT
- 问推荐RECOMMENDATION
问题类型并非问题理解中的唯一语义要素。问题焦点指的是问句中出现的与答案实体或属性相关的元素。问题主体是反映问题是关于那些主题的。
8.2.2知识库类型
按照知识库的内容边界将知识问答分成两类
- 领域相关的问答系统,这类系统相对专注,需要领域专家的深入参与,虽然问题覆盖面小,但是答案的正确率高
- 领域无关的问答系统,基于开放的知识库回答任意问题。虽然覆盖面大,但是答案正确率有限
知识库的信息组织格式
- 文本类知识库利用纯文本承载知识,不但支持基于搜索的问答系统,也可以与基于知识图谱的结构化抽取技术结合,支持基于语义查询的解决方案
- 半结构化或结构化的知识库,侧重知识的细粒度组织,利用结构体现知识的语义
- 除文字外,知识也可以存储在图片、音频、视频等媒体中
- 知识库不限定于文本、符号系统或多媒体,也可以利用可计算的机器学习模型承载
8.2.3智能体类型
智能体利用知识库实现推理。根据知识库表示形式的不同,目前的知识问答可以分为传统问答方法以及基于深度学习的问答方法两种类型。基于分布式表示的知识库芬达利用深度神经网络模型,将问题与知识库中的信息转化为向量表示,通过相似度匹配的方式完成问题与答案的匹配
8.3知识问答系统
8.3.1NLIDB:早期问答系统
NLIDB系统大多采用模块包括:
- 实体识别,通过查询领域词典识别命名实体
- 语义理解,利用语法解析、动词分析以及语义映射规则等技术,将问题解析成语义查询语句
- 回答问题,通过简单查询和复杂查询操作获取答案
语义理解的几种套路:
- 基于模式匹配,可以理解为直接将问题映射到查询语句。这种语义理解技术简便灵活且不依赖过多的语法分析工具,后来发展为KBQA中基于模板的语义理解方案
- 基于语法解析,将自然语言的复杂语义转化为逻辑表达式。语法树分析为处理更为复杂的问题以及简单的问题的语法变形提供了便利,但是这也同时依赖语法分析工具的正确性。另外当词汇具有多重词性时,也存在潜在问题,还需要附加一些规则调整语法解析出来的查询
8.3.2IRQA:基于信息检索的问答系统
核心思想:根据用户输入的问题,结合自然语言处理以及信息检索技术,在给定文档集合或者互联网网页中筛选出相关的文档,从结果文档内容抽取关键文本作为候选答案,最后对候选答案进行排序返回最优答案
大致分为三个阶段:
- 问题处理。从不同角度理解问题的语义,明确知识检索的过滤条件和答案类型判定
- 段落检索与排序。基于提取出的关键词进行信息检索,对检索出的文档进行排序,把排序后的文档分割成合适的段落,并对新的段落进行再排序,找到最优答案
- 答案处理。根据排序后的段落,结合问题处理阶段定义的答案类型抽取答案,形成答案候选集,最终对答案候选集进行排序,返回最优解
8.3.3KBQA:基于知识库的问答系统
基于知识图谱,采用相对统一的基于RDF表示的知识图谱,并且把语义理解的结果映射到知识图谱的本体后生成SPARQL查询解答问题。通过本体可以将用户问题映射到基于概念拓扑图表示的查询表达式,对应知识图谱中的某种子图。
KBQA的核心问题Queation2Query是找到从用户问题到知识图谱子图的最合理映射,Question2Query的关键步骤:
- 问题分析,主要利用词典、词性分析、分词、实体识别、语法解析树分析、句法依存关系分析等传统NLP技术提取问题的结构特征,并且基于机器学习和规则提取分析句子的类型和答案类型
- 词汇关联,主要针对在问题分析阶段尚未形成实体链接的部分形成与知识库的链接,包括关系属性、描述属性、实体分类的链接
- 歧义消解,一方面是对候选的词汇、查询表达式排序选优,一方面通过语义的容斥关系去掉不可能的组合
- 构建查询,基于问题解析成果,可以通过自定义转化规则或者特征将问题转化为查询语言表达式,形成对知识库的查询
8.3.4CommunityQA/FAQ-QA:基于问答对匹配的问答系统
基于常见问答对和社区问答,都依赖于FAQ库来发现以前问过的类似问题,并将找到的问答对的答案返回给用户
基于FAQ-QA的核心是计算问题之间的语义相关性,面临两个挑战:泛化和歧义
8.3.5Hybrid QA Framework 混合问答系统框架
1.DeepQA:IRQA主导的混合框架
- 问题处理
- 候选答案生成
- 候选答案评分
- 答案融合及排序
2.QALD-Hybrid-QA:KBQA主导的混合框架
3.Frankenstein:问答系统的流水线架构
- 命名实体识别与消解歧义,从问题的文本中标记其中涉及的实体
- 实体关系映射,将问题文本提及的关系映射到知识库的实体属性或实体关系上
- 实体分类映射,将问题所需答案的类型映射到知识库的实体分类上
- 构建查询,基于上述语义理解的结果综合后形成SPAEQL查询
8.4知识问答的评价方法
8.4.1问答系统的评价指标
1.功能评价指标
正确性、精确度、完整性、可解释性、用户友好性、额外的评价维度
2.性能评价指标
问答系统的响应时间、问答系统的故障率
8.5KBQA前沿技术
现有的自然语言理解技术在处理自然语言的歧义性和复杂性方面显得比较薄弱,此类系统需要大量的领域知识来理解自然语言问题,而这些一般都需要人工输入。
8.5.1KBQA面临的挑战
1.多样的概念映射机制
映射到原子三元组、映射到限制条件、映射到属性链条、复杂概念映射到复合属性、映射到排序条件、映射到有歧义的概念
2.不完美的知识库
- 知识库未必全都是结构化的数据,还有大量的知识存在文本中,需要动态知识抽取解决方案
- 知识库的知识组织机制各不相同,同样的知识在不同的知识库中未必会采用相同的结构
- 用户使用的语言以及知识库采用的工作语言也会影响语义理解
- 知识库本身并不是完整的,用户的预期却是希望能找到答案,如何判定找不到答案从而避免答非所问也是很重要的
3.泛化语义理解的预期
- 词语层面的泛化匹配
- 命名实体的不同说法
- 生成实体的不同说法,生成实体的识别和解析可以通过常规的语法分析工具达成,但是中英文数字的混合、语音识别错误等现象会令解析难度提升
- 实体分类和属性或关系的不同说法
- 句子层面的泛化处理,主要是判断问题的语义相似度
8.5.2基于模板的方法
基于模板或模式的问答系统定义了一组带变量的模板,直接匹配问题文本形成查询表达式。这样简化了问题分析的步骤,并且通过预制的查询模板替代了本体映射
这样做的优势是:简单可控,适用于处理只有一个查询条件的简单问题,绕过了语法解析的脆弱性
缺点:成熟的应用需要生成大量的模板;模板由人工生成,不易复用,即一个问题可以用多个不同模板回答,且需要通过全局排序调优,容易发生冲突;即使生成模板遵循知识库的Schema,但由于知识库自身不完整性以及语义组合的多样性,这些模板未必能保证在知识库中找到答案
总的来说,基于模板的方法优点是模板查询响应速度、准确率较高,可以回答相对复杂的复合问题,而缺点是模板结构通常无法与真实用户问题相匹配。
8.5.3基于语义解析的方法
基于语义解析的方法是指通过对自然语言查询的语法分析,将查询转换成逻辑表达式,然后利用知识库的语义信息将逻辑表达式转换成知识库查询,最终通过查询知识库得到查询结果
逻辑表达式是语义解析方法与基于模板的方法的主要差异。逻辑表达式是面向知识库的结构化查询,用于查找知识库中的实体及实体关系等知识。逻辑表达式生成过程中存在四个问题,目前已有人提出解决方法:
- 资源映射,自然语言实体到知识库实体的映射相对比较简单,但自然语言关系短语到知识库关系的映射相对复杂
- 桥接操作,在完成资源映射后,轻动词在语法上使用相对自由,难以通过统计的方式直接映射到实体关系,部分知识库关系出现频率较低,也难以通过统计的方式找到准确映射方式,这样就需要补充一个额外的二元关系将这些词两端的逻辑表达式连接起来
- 组合操作,即逻辑表达式间的连接、求交集以及聚合三种操作
- 候选逻辑表达式评估
8.5.4基于深度学习的传统问答模块优化
基于深度学习的知识问答主要有两个方向,分别是利用深度学习对传统问答方法进行模块级改进和基于深度学习的端到端问答模型(将问题和知识库中的信息均转化为向量表示,通过向量间的相似度计算的方式完成用户问题与知识库答案的匹配
识组织机制各不相同,同样的知识在不同的知识库中未必会采用相同的结构
3. 用户使用的语言以及知识库采用的工作语言也会影响语义理解
4. 知识库本身并不是完整的,用户的预期却是希望能找到答案,如何判定找不到答案从而避免答非所问也是很重要的
3.泛化语义理解的预期
- 词语层面的泛化匹配
- 命名实体的不同说法
- 生成实体的不同说法,生成实体的识别和解析可以通过常规的语法分析工具达成,但是中英文数字的混合、语音识别错误等现象会令解析难度提升
- 实体分类和属性或关系的不同说法
- 句子层面的泛化处理,主要是判断问题的语义相似度
8.5.2基于模板的方法
基于模板或模式的问答系统定义了一组带变量的模板,直接匹配问题文本形成查询表达式。这样简化了问题分析的步骤,并且通过预制的查询模板替代了本体映射
这样做的优势是:简单可控,适用于处理只有一个查询条件的简单问题,绕过了语法解析的脆弱性
缺点:成熟的应用需要生成大量的模板;模板由人工生成,不易复用,即一个问题可以用多个不同模板回答,且需要通过全局排序调优,容易发生冲突;即使生成模板遵循知识库的Schema,但由于知识库自身不完整性以及语义组合的多样性,这些模板未必能保证在知识库中找到答案
总的来说,基于模板的方法优点是模板查询响应速度、准确率较高,可以回答相对复杂的复合问题,而缺点是模板结构通常无法与真实用户问题相匹配。
8.5.3基于语义解析的方法
基于语义解析的方法是指通过对自然语言查询的语法分析,将查询转换成逻辑表达式,然后利用知识库的语义信息将逻辑表达式转换成知识库查询,最终通过查询知识库得到查询结果
逻辑表达式是语义解析方法与基于模板的方法的主要差异。逻辑表达式是面向知识库的结构化查询,用于查找知识库中的实体及实体关系等知识。逻辑表达式生成过程中存在四个问题,目前已有人提出解决方法:
- 资源映射,自然语言实体到知识库实体的映射相对比较简单,但自然语言关系短语到知识库关系的映射相对复杂
- 桥接操作,在完成资源映射后,轻动词在语法上使用相对自由,难以通过统计的方式直接映射到实体关系,部分知识库关系出现频率较低,也难以通过统计的方式找到准确映射方式,这样就需要补充一个额外的二元关系将这些词两端的逻辑表达式连接起来
- 组合操作,即逻辑表达式间的连接、求交集以及聚合三种操作
- 候选逻辑表达式评估
8.5.4基于深度学习的传统问答模块优化
基于深度学习的知识问答主要有两个方向,分别是利用深度学习对传统问答方法进行模块级改进和基于深度学习的端到端问答模型(将问题和知识库中的信息均转化为向量表示,通过向量间的相似度计算的方式完成用户问题与知识库答案的匹配