1、KG定义
1.1 背景知识
人工智能分为三个层次,分别是运算智能,感知智能和认知智能。运算智能是让机器能存会算;感知智能是让机器能听会说、能看会认;认知智能是解决机器能理解会思考的问题。由于知识图谱的数据组织方式是计算机能理解的,认知智能需要知识图谱。
1.2 知识图谱概念
KG(Knowledge Graph/Vault),又称科学知识图谱,用各种不同的图形等可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。
下面提供两条相对准确的定义以供参考。
定义1(Ehrlinger et al.):A knowledge graph acquires and integrates information into an ontology and applies a reasoner to derive new knowledge. 知识图谱获取信息并将其集成到本体中,并应用推理器来获取新知识。
定义2(Wang et al.):A knowledge graph is a multi-relational graph composed of entities and relations which are regarded as nodes and different types of edges, respectively. 知识图谱是由实体和关系组成的多关系图,实体和关系分别被视为节点和不同类型的边。
KG可以看作图,图由节点和边组成。节点表示 抽象的概念(如人工智能、知识图谱等)或是实体(如一个人、一本书等)。边可以是实体的属性(如姓名、书名)或是实体之间的关系(如朋友、配偶)。
KG的发展经理了从逻辑知识--> 词典--> 知识图的历程,其本质是海量信息无序-->有序-->有用。
典型应用: 维基百科、DBpedia、Yago、清华大学XLORE。
1.3 相关术语
概念:具有同等性质的实体构成的集合,用来表示集合、类别、对象类型、事务的种类等。
与WordNet等早起本体知识构建不同,现有方法多在传统分类法中结合大众分类和机器学习来构建语义网络分类体系。
实体:具有可区分且独立存在的某种事物,实体是KG中的最基本元素。
属性:是对概念和实体外延或者内涵的描述。
属性值:对象、属性的值。
关系:把图中节点映射到布尔值的函数。
内容:作为实体和语义类的解释,用文本或音视频来表达。
从DBpedia可以看出,概念的增长缓慢,但是属性增长很快。
2、KG的表示
KG中的每两个节点和节点之间的连线构成了三元组,三元组是KG的一种通用表示方法。
主要包括两种形式:
1. “实体-关系-实体”,比如 中国-首都-北京
2.“实体-属性-属性值”,比如 北京-人口-2069万人
还包括“is-a ” 和 “subclass-of”两类。
KG由一条条知识组成,每条知识表示为一个SPO(Subject-Predicate-Object,主谓宾三元组)即: 资源-属性-属性值
知识图谱分为模式层和数据层。模式层是数据的模式,是对数据层的提炼。数据层是具体的数据。
举个例子
3、KG的存储与查询
3.1基于RDF结构
RDF(Resource Description FrameWork,资源描述框架),RDF是使用XML语法来表示的数据模型。RDF的功能是用以三元组的形式于描述资源的特性以及资源之间的关系,一种以文本的形式逐行存储三元组数据。
可以利用关系型数据库对知识图谱进行存储。我们可以将图数据用三元组表示,将每一个三元组作为表中的一行记录。
下面是查询生于1850年,死于1934年,创建过公司的人。
采用关系型数据库存储,多跳查询会产生自连接(self-join)操作。
比如A->B为一跳,A->B->C为两跳。 也可以采用水平表的方式进行存储,每一行存储一个主语对应的所有的谓语和宾语。这种存储方式适合于谓词较少的知识图谱。
主语一般只在极少的列上有值,导致存储空间浪费。
并且这种存储方式很难存储多值属性或者一对多关系。
比如函数的三要素是定义域、值域和对应法则,用水平表存储这种多值属性,需要对值拼接后才能存储。
也可以按照实体的类型对知识图谱进行划分,这种方式适合于实体类别较少的情况。
同样地,存储多值属性或一对多关系需要对值进行拼接。
也可以根据谓词对知识图谱进行划分。对每一个谓词创建一张表。这种方式解决了数据存储稀疏性问题,也可以存储多值属性。但是涉及多个谓词的查询会导致多表连接操作。
3.2 基于图数据库
免费开源的图数据库例如Neo4j、JanusGraph、Nebula Graph等。
3.2.1 数据存储
图数据库是以图的方式来保存的,图数据库的优点在于查询和搜索的速度比较快 ,并且在图数据库中实体节点可以保留属性,这就意味着实体可以保留更多的信息,此外图数据库像其他的关系数据库一样有完整的查询语句,支持大多数的图挖掘算法。
目前使用范围最广的图数据库为Neo4j。
属性图(property graph)是图数据库中最常用的数据模型,由节点和边构成。
比如下面这幅图,有三个节点,每个节点表示一个对象。
第一个节点的标签是Employee,这个节点的属性用键值对存储,比如姓名为Amy peters, 出生日期为1984年3月1日,ID为1。
Company 和 Employee之间有边HAS_CEO,边上也可以有属性,比如Company has CEO 开始日期为2008年。
3.2.2 数据查询
下面是一个图数据库查询1号节点认识的节点中,年龄大于30的节点参加过的项目。
其中Gremlin和Cypher是图数据库两种查询语言。Gremlin是过程式(procedural)语言;用户需指明具体的导航步骤,也就是在图上怎么走;它是业界标准查询语言,除了Neo4j外,几乎所有图数据库均支持。Cypher是Neo4j专用语言,它是声明式(declarative)语言;用户只需声明“查什么”, 无需关心“怎么查”。
3.3 两种方式的特性对比
4、KG的构建
4.1 构建概述![](https://i-blog.csdnimg.cn/blog_migrate/168db84b9c8751d4af6abcd28aafee64.png)
从数据来源来说,包括从结构化,半结构化和非结构化的海量数据中抽取知识,构建图谱。
按构建者分,可以分为众包构建和自动化构建。众包构建,就是利用许多人进行编辑,构建知识图谱,维基百科,百度百科都是众包构建的。自动化构建,就是利用机器进行自动构建。
按构建方式分,可以分为自上而下的构建和自下而上的构建。
斯坦福大学医学院开发的七步法,用于领域本体构建。七步骤为:
1.确定领域本体的范畴;
2.复用现有的本体;
3.列出领域内的术语;
4.定义类和类的等级关系;
5.定义类的属性;
6.定义属性的限制;属性的限制包括:属性的基数,属性值的类型,以及属性的定义域和值域。
7.填充实例。
知识图谱的构建分为众包构建和自动化构建。由于众包构建涉及技术较少。我们这里主要介绍自动化构建。
这是知识图谱自动化构建的流程。
首先从数据库,百科网站,垂直网站等数据来源获取结构化,半结构化,和非结构化数据。
对非结构化数据和半结构化数据进行实体抽取,关系抽取,属性抽取,并与结构化数据进行整合,形成初步的三元组知识。
然后通过实体消歧得到标准知识表示。
对标准知识构建本体,形成数据模型。
对知识进行推理,发现新的知识。
对知识进行质量评估,从而进行质量控制。
对知识图谱添加新的实体,或者修改旧的实体,对知识图谱进行更新。
对构建好的知识图谱进行存储,方便下游应用。
对知识图谱进行表示学习,将知识图谱离散的符号转化为连续的数值。
对知识图谱进行应用,主要包括内容理解,搜索,推荐,问答等应用。
框图来源: 如何从零构建知识图谱?三分钟带你快速了解知识图谱的架构与逻辑!_哔哩哔哩_bilibili
4.2 KG的数据源
包括结构化数据、半结构化数据及非结构化数据三大种类。
4.3 知识抽取
知识抽取方法包括:实体识别(命名实体识别 NER)、关系抽取(RE)、属性抽取
非结构化的数据包括文本、视频、音频、图片等,需要对其进行知识抽取,才能进一步建立KG。
半结构化数据是介于结构化和非结构化数据之间的一种数据,也需要进行知识抽取。如 互动百科。
结构化数据,KG通常可以直接利用和转换,形成基础数据集,再利用KG补全技术,进一步扩展KG。如 Freebase。
其中属性抽取可以使用python爬虫爬取百度百科、维基百科等网站,操作较为简单,因此命名实体识别(NER)和实体关系抽取(RE)是知识抽取中非常重要的部分,命名实体识别与关系抽取是两个独立的任务,命名实体识别任务是在一个句子中找出具有可描述意义的实体,而关系抽取则是对两个实体的关系进行抽取。命名实体识别是关系抽取的前提,关系抽取是建立在实体识别之后。
4.3.1 实体识别方法
对于非结构化数据,先经过预处理,比如全角转半角等,然后进行分词,词性标注,语法解析,依存分析等NLP工具对文本进行解析,进一步进行实体识别,然后关系抽取,实体消歧,事件抽取等构成三元组知识。
4.3.1.1 使用CRF完成命名实体识别
CRF(Conditional random field,条件随机场)是一种判别式模型 (HMM是生成式模型)。是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场。
实体识别一般建模成序列标注任务。输入一个序列,经过词嵌入,和双向LSTM编码,然后用CRF进行解码。其中函数预测的标签是B-Noun, E-Noun, B和E分别表示mention的开始和结束,Noun表示类型。f(x)预测为表达式,其中I-Expr, I表示Inside, Expr表示表达式。
BIOES标签: B-begin,I-inside,O-outside,E-end,S-single
BIO体系:标签采用“BIO”体系,即实体的第一个字为 B_,其余字为 I_,非实体字统一标记为 O。大部分情况下,标签体系越复杂,准确度也越高。
当BERT出现后,由于BERT效果好,常采用BERT来对句子进行编码。
当识别出了文本中的实体,还需要对文本中的实体,两两进行关系分类。一般我们会收集并标注一个关系分类的训练集,来训练一个模型,然后用模型对测试数据进行预测。
比如我们训练好模型后,对测试数据,集合中的元素有多种特性,包括确定性,互异性,无序性进行预测。我们需要预测元素与确定性之间的关系,预测结果为特性。也就是集合有一个特性是确定性。
由于BERT的兴起,常用BERT来做关系分类。
技术实现方法:使用pycrfsuite和hanlp完成基于CRF的命名实体识别
1) 获取语料库:nltk、人民日报、其他公开标注语料
2)特征函数:定义特征函数,这里其实更像是定义特征函数的模板,因为真正的特征函数会根据这个定义的模板去生成,而且一般生成的特征函数数量是相当大的,然后通过训练确定每个特征函数对应的权重。
3)训练模型:接着可以开始创建 Trainer 进行训练,将语料的每个句子转成特征及标签列表,然后设置好 Trainer 的相关参数,并将样本添加到 Trainer 中开始训练。最终会将模型保存到model_path中。
4)预测:创建 Tagger 并加载模型,即可在测试集中选择一个的句子打标签。
5)评估:最后是评估我们的模型总体效果,将测试集中所有句子输入到训练出来的模型,将得到的预测结果与测试集句子对应的标签对比,输出各项指标。
4.3.1.2 基于Bilstm+CRF的命名实体识别
BiLSTM指的是双向LSTM;CRF指的是条件随机场。
1)数据预处理:字向量处理:依据字典与标签字典,将文字与标签分别转成数字。第一行是文本,第二行是标签。
2)模型构建:采用双向LSTM对序列进行处理,将输出结果进行拼接。
3)模型训练与测试。
4)模型验证
4.3.1.3 基于关键词技术的实体抽取
基于TextRank的关键词提取技术:
算法原理:如果一个单词出现在很多单词后面的话,那么说明这个单词比较重要。一个TextRank值很高的单词后面跟着的一个单词,那么这个单词的TextRank值会相应地因此而提高。
4.3.2 实体关系抽取
实体和实体之间存在着语义关系, 当两个实体出现在同一个句子里时, 上下文环境就决定了两个实体间的语义关系。
完整的实体关系包括两方面:关系类型和关系的参数,关系类型说明了该关系是什么关系, 如雇佣关系、 类属关系等; 关系的参数也就是发生关系的实体,如雇佣关系中的雇员和公司。
实体关系抽取问题可以看做一个分类问题。使用有监督(标记学习)、半监督(统计分析)或无监督(聚类方法)等方法进行。实体关系抽取往往关注一个句子内的上下文。
实现技术:基于依存句法分析的开放式中文实体关系抽取方法实现:
Hanlp分词HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
Hanlp提供的功能包括:
a.中文分词
b.词性标注(pos)
c.命名实体识别(ner)
d.关键词提取
e.自动摘要
f.短语提取
g.拼音转换
h.简繁转换
i.依存句法分析
j.word2vec
hanlp提供了两种依存句法分析的器,默认采用的是基于神经网络的依存句法分析器,另一种为基于最大熵的依存句法分析器。
4.4 知识融合
主要任务是实体消歧和指代消解。
4.4.1 实体消歧的本质在于一个词有很多可能的意思,也就是在不同的上下文中所表达的含义不太一样。实体消歧专门用于解决同名实体产生歧义的问题。
4.4.1.1 基于词典的词义消歧
基于词典的词义消歧方法研究的早期代表工作是Lesk 于1986 的工作。给定某个待消解词及其上下文,该工作的思想是计算语义词典中各个词义的定义与上下文之间的覆盖度,选择覆盖度最大的作为待消解词在其上下文下的正确词义。但由于词典中词义的定义通常比较简洁,这使得与待消解词的上下文得到的覆盖度为0,造成消歧性能不高。
4.4.1.2 有监督词义消歧
有监督的消歧方法使用词义标注语料来建立消歧模型,研究的重点在于特征的表示。常见的上下文特征可以归纳为三个类型:
(1)词汇特征通常指待消解词上下窗口内出现的词及其词性;
(2)句法特征利用待消解词在上下文中的句法关系特征,如动-宾关系、是否带主/宾语、主/宾语组块类型、主/宾语中心词等;
(3)语义特征在句法关系的基础上添加了语义类信息,如主/宾语中心词的语义类,甚至还可以是语义角色标注类信息。
4.4.1.3 无监督和半监督词义消歧
虽然有监督的消歧方法能够取得较好的消歧性能,但需要大量的人工标注语料,费时费力。为了克服对大规模语料的需要,半监督或无监督方法仅需要少量或不需要人工标注语料。一般说来,虽然半监督或无监督方法不需要大量的人工标注数据,但依赖于一个大规模的未标注语料,以及在该语料上的句法分析结果。
目前消歧通常涉及聚类法、空间向量模型、语义模型等
4.4.2 指代消解是为了避免代词指代不清的情况。
4.5 知识推理
基于KG的知识推理旨在识别错误并从现有的数据中推断新结论。通过知识推理,可以导出实体间的新关系并反馈以丰富KG,从而支持高级应用。知识推理的方法包括:
(1)基于符号逻辑的推理——本体推理
(2)基于表运算(Tableaux)及改进的⽅法: FaCT++、 Racer、 Pellet Hermit等
(3)基于Datalog转换的⽅法如KAON、 RDFox等
(4)基于产⽣式规则的算法(如rete): Jena 、 Sesame、 OWLIM等
(5)基于图结构和统计规则挖掘的推理
(6)基于路径排序学习⽅法(PRA, Path ranking Algorithm)
(7)基于关联规则挖掘⽅法(AMIE)
(8)基于知识图谱表示学习的关系推理:
将实体和关系都表示为向量,通过向量之间的计算代替图的遍历和搜索来预测三元组的存在,由于向量的表示已经包含了实体原有的语义信息,计算含有⼀定的推理能⼒。可应⽤于链接预测,基于路径的多度查询等。
(9)基于概率逻辑的方法
概率逻辑学习有时也叫Relational Machine Learning (RML),关注关系的不确定性和复杂性。
通常使用贝叶斯网络或者马尔科夫网络。
4.5 KG的评估
构建好了知识图谱后,我们需要对构建好的知识图谱进行规模和质量的评估。规模一般用知识图谱中有多少个实体,有多少个关系来描述。
质量一般可以用准确率来衡量。由于知识图谱三元组数量多,我们一般抽取若干个三元组,比如500个,对每一个三元组进行真假判断,然后统计准确率。
右表展示了抽取8个三元组,计算准确率的过程。
一般来讲,众包构建的准确率较高,自动化构建的准确率相对较低;领域知识图谱准确率较高,通用知识图谱准确率相对较低。
5. 相关赛事
- 消息理解会议(MUC)
- MUC是由美国DARPA发起,目的在于鼓励和开发信息抽取系统,主要以召回率和精确率来评价信息抽取系统性能的重要指标,一般是基于召回率和精确率来计算法F1值
- 自动内容抽取(ACE)
- 由美国国家标准技术研究所(NIST)组织的评测会议,主要包括实体检测与跟踪、关系检测与表征、事件检测与跟踪,与MUC解决的问题类似,只是对MUC的任务进行融合。
- 知识库填充(KBP)
- 由文本分析会议主办,其目的是开发和评估从非结构化文本中获取知识填充知识库的技术,主要任务包括实体发现与链接、槽填充、事件跟踪和信念与情感分析。始办于 2009 年,是国际上影响力最大、水平最高的知识图谱领域赛事。
- 语义评测(SemEval)
- 由ACL-SIGLEX组织发起,是比较早进行实体消歧的评测任务的机构,目的是增进人们对词义与语义现象的理解,主要包括语义角色标注、情感分析、跨语言语义分析等
6. 开源库
学术研究推动了开源运动,下表列出了常见的几个开源库。
其中,AmpliGraph:用于知识表征学习。
Grakn:用于集成知识图谱与机器学习技术。
Akutan:用于知识图谱存储和查询。
研究界还发布了代码以促进进一步的研究。值得注意的是,有三个有用的工具包,即用于知识图嵌入的scikit-kge和OpenKE,以及用于关系提取的OpenNRE。
--------------------------
参考链接1:https://blog.csdn.net/xs1997/article/details/125061428
参考链接2:知识图谱概述、构建、存储与应用 - 知乎 (zhihu.com)
参考链接3:知乎 - 安全中心https://link.zhihu.com/?target=https%3A//shaoxiongji.github.io/knowledge-graphs/