当前位置: 首页 > 科技观察

知识图谱并不复杂,我来帮你整理一下!

时间:2023-03-18 13:25:53 科技观察

【.com原稿】随着互联网业务的发展,产生了大量的数据,对数据的分析将推动业务的发展。知识图谱是通过将数据中包含的知识以图结构表达出来而形成的。图片来自Pexels知识图谱可应用于智能搜索、自动文档、推荐、决策支持等领域。例如:WordNet、Freebase、Wikidata。今天就和大家一起了解知识图谱构建的方法和基本原理。知识图谱泛化知识图谱是一个很大的话题。从发展、特点、分类、生命周期等不同方面讲很多东西。知识域示意图这里我们主要从知识图谱的生命周期出发,讲讲其形成和使用的原理和方法。①知识体系建设。按照分类,知识图谱可以分为通用型和领域型。不管是什么类型的知识图谱,都需要对其服务的领域进行知识建模。也就是说,用什么样的方法来表达知识。②知识整合。知识库可以与其他知识库融合。在整合不同领域的知识库时,会发现来自不同领域、不同语言、甚至不同结构的知识需要“补充、更新、去重”。这就是知识融合,一般分为:知识系统融合和实例融合。这部分操作在构建知识体系时也可以作为一个整体来考虑。③知识获取。知识获取的目的是从海量信息(文本)中提取知识。本文所说的“获取信息”多为文本信息,所以这里的“获取信息”也就是从文本中获取信息的过程。获取的信息结构分为三类,即结构化信息、半结构化信息和非结构化信息。从获取信息的内容来看,分为实体识别、实体消歧、关系抽取和事件抽取。知识存储知识抽取和融合完成后,需要对知识进行存储。有两种方式:RDF(ResourceDescriptionFramework,资源描述框架)格式和图数据库。由于图数据库是查询友好的,因此被广泛使用,例如:Neo4j。④知识推理。在识别和提取知识并存储知识之后,我们将尝试挖掘实体(知识)之间隐藏的语义关系。这个过程就是知识推理。例如:已知A是B的儿子,已知B是C的儿子,则可推导出A是C的孙子。⑤知识应用。识别、提取、存储和推理的最终目的还是为了应用。知识图谱广泛应用于搜索、问答、推荐和决策等领域。上面的过程将在后面解释。由于知识图谱的内容比较丰富,我们将重点介绍前几部分的内容,关于知识推理和知识应用的部分将在以后的文章中介绍。知识体系构建我们常说,知识是人类对现实世界的认识。如何将这种理解转化为标准形式?因此,需要一个模型来描述它,以便它可以存储在计算机中。知识表示知识图谱的表示方式有很多种,包括语义网络、框架和脚本。语义网络模型用得比较多。它是由语义关系连接的概念网络,将知识表示为相互连接的节点和边。其中,节点代表实体、时间、值等信息;边表示实体之间的关系。例如:马是一种动物,可以表示如下:这里马和动物表示为实体,“是一种”表示它们之间的关系。这也是我们常说的三元组的表现。使用RDF(ResourceDescriptionFramework,资源描述框架)可以表示为:(node1,relationship,node1)(horse,isakind,animal)关系的定义有很多种:实例关系:"isA”。表示一个事物是另一个事物的实例。例如:小明是一个人。分类关系:“是一种”。表示一个事物是另一种事物。例子:篮球是一个球。成员资格:“个人和集体”。表示一个事物是另一个事物的成员。例如:小王是三年级一班的学生。属性关系:“一个节点具有另一个节点表示的属性”。例子:猴子会爬树。聚合关系:“部分与整体”。示例:手是身体的一部分。位置关系:事物的位置关系。示例:苹果在桌子上。接近性:事物在形状、内容等方面相似。例如:狮子和老虎都称霸森林。如果通过上面的描述把实体用三元组的形式表达出来,就形成了一个类图的知识结构。我们称这种结构的表示为知识表示。知识图谱知识体系构建的表达形式上面提到了知识表示,现实世界的知识用三元组表示。由于知识领域的不同,对事物的概念和定义也会有所不同。例如:术语“运维”是指软件领域的软件运维;在基础设施领域,指的是供配电和空调的运维。因此,知识图谱是针对特定知识领域的。需要根据具体的知识领域进行“知识体系建设”。知识体系主要包括三个方面的核心内容:概念的分类、概念属性的描述和概念间关系的定义。知识域示意图知识域(知识架构)就像知识图谱的框架,定义了知识的概念、概念的属性以及概念之间的关系。只有先定义,才能构建知识图谱。如果把知识领域(知识架构)理解为一个Class,那么知识图谱就是一个Object;如果将知识领域(知识架构)理解为骨架,那么知识图谱就是主体。本体定义知识(Concept),并根据定义生成实体(Instance)骨架和主体。解释完知识域(知识架构)的概??念,我们再来看看人工构建需要的步骤。①确定领域和任务。这里有几个问题需要澄清。为什么我们需要这个领域的知识图谱?这里面包含了什么样的知识?它为谁服务?谁来维护它?②知识体系的整合。由于知识图谱需要包含大量的知识数据,从0开始构建的成本非常高。因此,需要使用通用知识图谱、领域词典、语言资源和开源知识图谱资源。基于它们,成本大大降低。③列出元素。对于要建立的知识图谱,列出领域知识的概念、属性和关系。例如:创建人物知识图谱,需要列出科学家、演员、教师、运动员等类别。为每个类别定义姓名、年龄、国籍、出生地等属性以及父母、子女、朋友等关系。④确定分类系统。它是概念之间的层级关系,类似于树状结构。比如体育的分类,它包括体育组织、体育赛事、体育学校等等。它可以从上到下或从下到上构建。分类系统示意图⑤定义属性和关系。这里的属性和关系的定义是继承的。例如:艺人有“年龄”、“毕业院校”、“经纪公司”等属性。在艺人类别下,包括歌手和演员。那么歌手和演员的属性可能包括除了“年龄”、“毕业院校”、“经纪公司”等其他属性。例如:歌手包括“低/中/高音”;演员包括:“国家/国际电影明星”。⑥定义约束。约束关系为上述属性关系。例如:年龄是一个正整数。每个人只有一个母亲(从生理上讲)。知识融合涉及各个领域的知识图谱的构建,从而导致各个垂直领域的知识库的存在。为了扩展自身的广度和深度,每个知识库都需要与其他知识库进行整合。知识融合实例图知识库的融合有两种模式:垂直知识融合,将通用知识库和专业知识库融合在一起。专业知识库中需要通用知识库中的一些通用知识定义,如:名人、地名、公理等。水平方向的知识融合是对同一领域的知识库进行整合。让两个知识库相辅相成。知识系统可以在认知和语义层面对领域知识进行建模和表达,确定领域内公认的词汇,通过概念间的关系描述概念的语义,提供对领域知识的共同理解。多个知识体系在融合过程中会发生重叠,从而产生许多不同的知识体系。这些不同的知识体系会让不同的知识图谱难以联合使用。因此,下面介绍几种融合方法:元素级匹配,将词表示为语义向量空间中的一个点。如果词之间的相似度高,那么两点之间的距离就近。表示两个词可以融合。结构级匹配,通过判断元素属性的定义域和取值范围的匹配程度,推断出属性的匹配程度。实体对齐,通过判断相同或不同知识库中的两个实体是否表示相同的物理对象的过程。知识获取定义知识领域和领域的整合,然后构建知识图谱的框架,然后填充内容。根据三元论,知识图谱由(实体1,关系,实体2)组成。因此,下一步要引入知识获取,包括实体识别、实体消歧、关系抽取和事件抽取。知识获取实体示意图识别实体(Entity)是知识图谱的基本单元,也是本文承载信息的重要语言单元。实体识别是提取文本中的命名引用。例如:人名、地名、机构名、产品名。一般来说分为三类:实体类、时间类和数字类;七个小类:人名、地名、组织名称、时间、日期、货币和百分比。例如:弘历小学篮球教练员张平出席了会议,他在会上分享了自己的执教心得。实体“张萍”有3个引用项,“宏力小学篮球教练”为名义引用项;“张平”为名义指代项目;“他”是代词指称项。实体识别抽取有以下几种方法:①基于规则的方法,通过建立命名实体字典的方法,每次抽取从文本中搜索字典的内容。中文姓名识别:<姓氏><姓名>。例如:张平。中文组织名称识别:<人名><组织名称><地名><核心名称>。例如:中国软件信息协会。汉语地名识别:<地名部分><指示词>。例如:武汉市。②基于特征的方法,通过机器学习的方法使用预标记的语料库训练模型,使模型学习到某个词或词作为命名实体的组成部分的概率,计算出一个候选字段的概率值作为命名实体。如果它大于设定的阈值,则提取命名实体。③基于神经网络的方法:特征表示:利用神经网络模型将字符和符号特征表示为分布式特征信息。模型训练:使用标注数据优化网络参数,训练网络模型。模型分类:使用训练好的模型对新样本进行分类,完成识别。实体消歧实体识别完成后,我们遇到了一些问题。两个实体的名称完全一样,但在不同的语境中,所表达的内容却完全不同。例如:entityreferent,MichaelJordan在不同的文本中可能是篮球明星,也可能是机器学习研究员。实体消歧示例图在介绍实体消歧之前,先介绍几个相关的概念。以上图为例:实体名称:MichaelJordan(迈克尔乔丹)目标实体列表:MichaelJordan(研究员),MichaelJordan(运动员)EntityReferent:“MichaelJordan”为“MichaelJordan(研究员)”的实体Referent”。同样,“MichaelJordan”也是“MichaelJordan(运动员)”的实体所指。那么如何消除这种歧义呢?这里有两个推荐的消歧系统。聚类消歧系统:将相同的实体指代分配给相同的类别,聚类结果中的每个类别对应一个目标实体。聚类图中实体链接的消歧系统:将实体指示对象与目标实体列表中的相应实体连接起来,以实现消歧。实体链接关系抽取示意图可以抽取文本中的实体,消除它们之间的歧义。接下来,要知道实体之间的关系,就需要使用关系抽取。关系抽取是识别实体之间的语义关系。它可以分为二元关系抽取(两个实体)和多元关系抽取(三个或更多实体)。通常表示为(entity1,relation,entity2)三元组。根据处理数据源的不同,关系抽取可分为以下三种:面向结构化文本的关系抽取:包括表格文档、XML文档、数据库数据等。面向非结构化文本的关系抽取:纯文本。半结构化文本的关系提取:介于结构化和非结构化之间。根据抽取文本的范围,关系抽取可以分为以下两种类型:句子级关系抽取:从一个句子中区分两个实体之间的语义关系。语料级关系抽取:不限制两个目标实体出现的上下文。根据抽取域的划分,关系抽取可以分为以下两种类型:文本分类任务。开放域关系提取:不受限制的关系类别。限于篇幅,具体关系抽取的方法这里不再赘述。有兴趣的可以自己找,每个算法都可以单独成一篇文章。这里我们只需要对关系抽取的分类和方法有一个基本的了解即可。事件抽取类似于关系抽取。事件提取从文本中提取事件并以结构化形式呈现。首先确定事件及其类型,其次确定事件中涉及的实体,最后确定实体在事件中扮演的角色。通过一个例子,来介绍几个概念。例如:“小明和小红于2019年12月30日在北京举行婚礼。”事件参考:对特定事件的自然语言描述,通常是一个句子或一组句子。就是上面这句话的描述。事件触发词:表示事件发生的词,是决定事件类别的特征,通常是动词或名词。例如:“举行婚礼”。事件元素:事件的参与者,主要由实体、时间和属性值组成。例如:“小明”、“小红”、“2019年12月30日”。事件元素类型元素角色:事件元素在事件中扮演的角色。例如:“小明”和“小红”扮演“夫妻”角色。事件类别:事件元素和触发词决定了事件的类别,每个类别下都有子类别。例如:生活、婚姻。事件类型示意图事件抽取的方法有很多种,基本上分为两类:有限域事件抽取和开放域事件抽取。这两个类别又分为几个子类别。这里简单介绍一下有限域模式匹配的方法。有限域事件抽取:在抽取之前,预先定义目标事件的类型和每种类型的具体结构(包括哪些具体的事件元素),通常会给出一定量的标注数据。事件的提取由这些注释数据指导。比较有代表性的方法是基于模式匹配。首先对语料库进行人工标注,然后通过学习模型提取模式。最后将“待抽取文档”与模式库中的模式进行匹配,生成抽取结果。事件抽取、匹配流程图另外,事件抽取的方法和关系有很多,这里就不一一赘述了,放一张思维导图供大家参考。EventExtractionMindMapKnowledgeStorageandRetrieval如前所述,知识图谱的架构和知识的抽取接下来需要进行存储。并且可以检索存储的数据。知识存储示意图说到存储,就需要回到前面提到的三元组。知识图谱中的知识由RDF(ResourceDescriptionFramework,资源描述框架)构成。每个事实用(主语,谓语,宾语)形式的三元组表示:主语:主语(也叫主语),其取值通常是一个实体或一个事件。predicate:谓词(也称为术语),其值通常是关系或属性。object:对象(也叫对象),它的值可以是实体、事件、概念,也可以是普通值(如数字、字符串等)。基于表数据的介绍知识图谱中表的存储方式有两种,即三元表和类型表。我们先看一下前两种存储方式。例如:有下图中的关系。知识图谱存储示例图存储在三元组中:存储在类型表中:图数据库简介图数据库是基于有向图的,其理论基础是图论。节点、边和属性是图数据库的核心概念。节点用于表示实体和事件等对象,可以类比为关系数据库中的记录。例如,人物、位置、电影等都可以用作图中的节点。边是指连接图中节点的有向线,用来表示不同节点之间的关系。例如:夫妻关系、同事关系等。属性,用来描述节点或边的特征。比如:姓名,夫妻关系起止时间等。我们来看一个例子:用节点表示实体:刘德华,刘青云,电影:暗战。用边表示实体之间的关系:刘德华和安战的参与关系,刘德华和刘青云的友情关系等。节点可以定义属性:刘德华性别男,身高174cm,出生地香港,ETC。侧面也可以定义属性:刘德华1999年参加暗战,参演角色为张彼得等人。无向关系需要转化为两个对称的有向关系:刘德华和刘青云互为好友。知识图谱的检索上面提到了按照表法和图法存储,接下来我们看看存储后如何检索知识信息。可以通过SQL和SPARQL搜索获取知识图谱信息。这里我们将重点介绍SPARQL,它是SimpleProtocolandRDFQueryLanguage的缩写。它是W3C针对RDF数据开发的一种查询语言和数据获取协议,得到图数据库的广泛支持。与SQL类似,SPARQL也是一种用于数据获取和管理的结构化查询语言。①数据插入INSERTDATA{}包含三元组,不同的三元组用“.”隔开,连续的三元组用“;”隔开。②数据删除DELETEDATA{}包含三元组,不同的三元组之间用“.”隔开。删除刘德华参演电影的关系。如果要删除刘德华对应节??点的所有关系,使用如下语句。这里s、p、o分别对应主语、谓语、宾语。这样一来,刘德华节点的相关信息就被删除了。但柳青云和暗战对应的节点和关系依然存在。删除刘德华节点及对应关系③查询语句与上述两条语句类似,例如查询身高为174cm的演员。结果是“s:刘德华”。总结如果说知识图谱本身是一个知识数据库,那么知识域(知识架构)就是数据库的框架。在构建知识图谱之前,我们需要先构建知识体系,解决知识融合问题。借助知识体系结构,可以进行知识获取,包括实体识别、实体消歧、关系抽取和事件抽取。实体识别有基于规则、特征和神经网络的识别方法。实体消歧可以通过聚类和实体连接方法来完成。关系抽取和事件抽取根据数据来源、文本范围和领域划分各有优缺点。知识抽取之后,还需要做知识存储,包括表存储和图存储。目前最流行的方法是图存储法。并且基于图的存储方式,还提供了SPARQL查询语言来管理数据。PS:知识图谱的内容比较广泛,本文只介绍最基本的概念。很多想法来自于赵军老师的《知识图谱》一书。如果您需要深入了解,推荐阅读。作者:崔浩简介:十六年开发架构经验。曾在惠普武汉交付中心担任技术专家、需求分析师、项目经理,后在一家初创公司担任技术/产品经理。善于学习,乐于分享。目前专注于技术架构和研发管理。【原创稿件,合作网站转载请注明原作者和出处为.com】