知识图谱中的知识表示

机器无法理解文本本身。那么如何让机器理解呢?

知识表示是对现实世界的一种抽象表达。评价知识表示的两个重要因素是表达能力与计算效率。一个知识表示应该具有足够强的表达能力,才能充分、完整地表达特定领域或者问题所需的知识。同时,基于这一知识表示的计算求解过程也应有足够高的执行效率。

在实际应用中,根据不同的学科背景,人们发展了基于图论、逻辑学、概率论的各种知识表示。图通过点和边的关系对现实世界进行表示,具有形象、直观的特点,是传统知识表示最常采用的一种方式。语义网络、知识图谱、RDF、实体关系图等均是基于图的知识表示。逻辑学领域产生了包括一阶谓词逻辑以及产生式规则在内的知识表示。现实世界的语义关联以及推理过程往往存在不确定性,因此人们将概率论引入基于图论和逻辑学的知识表示,发展出了概率图模型及概率软逻辑等表示方式,以及在图论、概率论与逻辑学的交叉领域又进一步发展出了马尔可夫逻辑网

知识图谱较为常见的表示是基于的表示方式。图模型是知识图谱的逻辑表达模型,是人们最容易理解的一种表示。为了方便知识图谱数据的管理和共享,语义网络领域制定了相应的规范与标注,即按照RDF进行表示。为了能让计算机有效地处理和利用知识图谱,还需要有知识图谱的数值化表示。当以深度学习为代表的机器学习模型成为解决问题的主流方式时,这种需求日益迫切。知识图谱在领域的具体应用过程中还需要根据具体要求发展出更多细化表示。

知识图谱的图表示

基于图的表示就不在此细说,比较简单。这里着重讨论知识图谱基于三元组的表示

RDF(Resource Description Framework),即资源描述框架,用于描述实体/资源的标准数据模型,是一个通用框架。现实中任何实体都可以表示成RDF模型中的资源。

在知识图谱中,我们用RDF形式化地表示这种三元关系。

1.png

一个三元组包括三个元素:主体(Subject)、谓词(Predicate)及客体(Object)。一个RDF语句可以表示两个资源之间的关系。主语宾语表示这两个位置的资源是相关的,谓语表示两者之间的关系。关系以定向的方式表达(从主语到宾语),在RDF中称为属性

下面是一些例子:

<Bob> <is a> <person>.
<Bob> <is a friend of> <Alice>.
<Bob> <is born on> <the 4th of July 1990>. 
<Bob> <is interested in> <the Mona Lisa>.
<the Mona Lisa> <was created by> <Leonardo da Vinci>.
<the video 'La Joconde à Washington'> <is about> <the Mona Lisa>

相同的资源通常被多个三元组引用。在上面的例子中,Bob是四个三元组的主语,Mona Lisa是一个三元组的主语和两个三元组的宾语。相同资源位于一个三元组的主语并且位于另一个三元组的宾语,可以找到两个三元组之间的关系,这是RDF的重要部分。

RDF一共有三种类型的节点:International Resource Identifiers(IRIs)Blank nodesliteralsIRI可以看作是URI或者URL的泛化和推广,它在整个网络或者图中全局并唯一定义了一个实体/资源,和我们的身份证号类似,IRIs可以出现在三元组的所有三个位置中;literal是字面量,我们可以把它看做是带有数据类型的纯文本;blank node简单来说就是没有IRI和literal的资源,或者说匿名资源。

SPO每个部分的类型约束总结如下:

  • Subject可以是IRI或blank node;
  • Predicate是IRI
  • Object三种类型都可以。

RDF的最大意义在于它不仅是字符串构成的符号,它还包含了语义信息。计算机现在也可以为世界上的每一个实体定义唯一的锚(IRI),所有与这个实体相关的信息(文字、图像等等),都会被这个锚钩住。这样,计算机就能通过RDF信息做出和人类类似的联想和推理。

整个过程就好像你在新闻里看到“任正非”这三个字时,就会将这些符号和你脑海中的一个对象或者影像联系,再综合过往收集到的和这个对象相关的信息,从而理解符号背后的含义。

RDF是以一种建模的方式来描述数据语义,不受具体语法表示的限制。所以为了存储和传输RDF数据,我们还需将其序列化(将对象转化成特定的格式,使其可在网络中传输,或者存储在文件中)。方式有很多种:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD。

  • RDF/XML,顾名思义,就是用XML的格式来表示RDF数据。之所以提出这个方法,是因为XML的技术比较成熟,有许多现成的工具来存储和解析XML。然而,对于RDF来说,XML的格式太冗长,也不便于阅读,通常我们不会使用这种方式来处理RDF数据;

  • N-Triples,即用多个三元组来表示RDF数据集,是最直观的表示方法。在文件中,每一行表示一个三元组,方便机器解析和处理。开放领域知识图谱DBpedia通常是用这种格式来发布数据的;

  • Turtle, 应该是使用得最多的一种RDF序列化方式了。它比RDF/XML紧凑,且可读性比N-Triples好;

  • RDFa, 即“The Resource Description Framework in Attributes”,是HTML5的一个扩展,在不改变任何显示效果的情况下,让网站构建者能够在页面中标记实体,像人物、地点、时间、评论等等。也就是说,将RDF数据嵌入到网页中,搜索引擎能够更好的解析非结构化页面,获取一些有用的结构化信息。读者可以去这个页面感受一下RDFa,其直观展示了普通用户看到的页面,浏览器看到的页面和搜索引擎解析出来的结构化信息;

  • JSON-LD,即“JSON for Linking Data”,用键值对的方式来存储RDF数据。

其中Turtle是使用最广泛的RDF序列化方式,格式紧凑,易于阅读。

例子如下:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

rdf:type    a   rdf:Property ;
            rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
            rdfs:label      "type" ;
            rdfs:comment    "The subject is an instance of a class." ;
            rdfs:range      rdfs:Class ;
            rdfs:domain     rdfs:Resource.

上述片段是对RDF中的rdf:type这个词汇的描述。因为IRI很长,一般都会使用缩写。Turtle使用@prefix对RDF的IRI前缀进行缩写。像下面这句:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

rdf:表示IRI前缀http://www.w3.org/1999/02/22-rdf-syntax-ns#。因此**rdf:type**就是http://www.w3.org/1999/02/22-rdf-syntax-ns#type的简写。

后面出现的谓词ardf:type的简写,这是Turtle语法中的一种常用简写,用于说明实体的类型。

再举一个例子,“罗纳尔多的中文名是罗纳尔多·路易斯·纳扎里奥·达·利马”这样一个三元组用RDF形式来表示就是:

2.png

“www.w3.org/ns/1”是一个IRI,用来唯一表示“罗纳尔多”这个实体。“w3:ChineseName”也是一个IRI,用来表示“中文名”这样一个属性。”w3:”是RDF文件中所定义的prefix:

@prefix w3: <http://www.w3.org/data/>

即,“w3:ChineseName”就是“http://www.w3.org/data/ChineseName”的缩写。

其实可以认为知识图谱就包含两种节点类型:资源和字面量。借用数据结构中树的概念,字面量类似叶子节点,出度为0。

实际上,RDF的表达能力是很有限的,无法区分类和对象,也无法定义和描述类的关系/属性。RDF是对具体事物的描述缺乏抽象能力,无法对同一个类别的事物进行定义和描述。比如我们想定义罗纳尔多是人,里约热内卢是地点,并且人具有哪些属性,地点具有哪些属性,人和地点之间存在哪些关系,这个时候RDF就表示无能为力了。不论是在智能的概念上,还是在现实的应用当中,这种泛化抽象能力都是相当重要的;同时,这也是知识图谱本身十分强调的。RDFSOWL这两种技术或者说模式语言/本体语言(schema/ontology language)解决了RDF表达能力有限的困境。

关于RDFS/OWL详细内容参考知识图谱基础之RDF,RDFS与OWL

利用这些属性和关系,大量资源就能被连接起来,形成一个大规模RDF知识图谱数据集。一个知识图谱可以视作三元组的集合。

知识图谱的数值表示

随着深度学习模型的应用日益广泛,如何将知识图谱作为背景知识融合进深度学习模型成为一个关键技术问题。基本的思路是将知识图谱中的点与边表示成数值化的向量。不同的向量表示在实际应用中有着不同的效果,如何为知识图谱中的实体与关系求得最优的向量化表示,是当前知识图谱表示学习所关注的核心问题。知识图谱的表示学习旨在将知识图谱中的元素(包括实体、属性、概念等)表示为低维稠密实值向量。知识图谱的向量化表示是面向机器处理的,而符号化表示是面向人的理解的。相对于向量化表示,符号化表示易于理解,可以实现符号推理。两种表示各有其适用场景。

学习实体和关系的向量化表示的关键是,合理定义知识图谱中关于事实(三元组<h,r,t>)的损失函数。满足如下关系。

\[当事实<h,r,t>成立时,f_r(\hat h,\hat t)期望最小 \\其中\hat h和\hat t是两个实体h和t的向量化表示\]

考虑到整个知识图谱的事实,则可以通过下面的方式来学习实体以及关系的向量化表示:

\[{\sum}_{(h,r,t)\in O} f_r(\hat h,\hat t)\ \ \ \ 其中O表示所有事实的集合\]

不同的表示学习使用不同的原则和方法定义相应的损失函数。在建立相应的优化目标之后,通常使用SGD(Stochastic Gradient Descent,随机梯度下降)等算法学习模型中的相关参数。

目前有基于距离和翻译的模型,代表知识图谱表示的基本思路。

基于距离的模型

其代表性模型是SE。基本思想是当两个实体属于同一个三元组<h,r,t>时,它们的向量表示在投影后的空间中也应该彼此靠近。因此,定义损失函数为向量投影后的距离。

基于翻译的模型

TransE模型

TransE模型是基于翻译思想的模型。TransE认为在知识库中,三元组<h,r,t>可以看成头实体h到尾实体t利用关系r所进行的翻译。比如,对于三元组<柏拉图,老师,苏格拉底>来说,头实体“柏拉图”的向量加上关系“老师”的向量,应该尽可能和尾实体“苏格拉底”的向量接近,也就是:

\[\hat h+ \hat r \approx \hat t\]

TransH模型

TransR模型

TransD模型

等用到再说吧hhh。