知识图谱 第二章(上)

知识图谱表示与建模

一些需要知道的概念(学习概念真的好无聊,但是又不能不知道这些概念)

  • 什么知识表示?
    20世纪90年代,MIT AI实验室的R.Davis定义了知识表示第五大用途或特点(这些大佬都咋想的啊,或许是知识积累到达了一定的高度,就自然而然总结出来了)

    • 客观事物的机器标示:知识表示首先需要定义客观实体的机器指代或指称。
    • 一组本体约定和概念模型:知识表示需要定义用于描述客观事物的概念和类别体系。
    • 支持推理的表示基础:知识表示还需要提供机器推理的模型与方法。
    • 用于高效计算的数据结构:只是表示也是一种用于高效计算的结构数据。
    • 人可理解的机器语言:知识表示必须接近人的认知,是人可理解的机器语言。
      (举个栗子:今天我告诉别人我喜欢王一博,那么王一博到底是人还是物品?那么接下来我就要说王一博是一个帅哥,那么凭什么说他帅呢??因为他有高高的鼻梁,迷人的眼睛,笑起来眼睛弯弯的,又洁白的牙齿,五官立体等等,人们通过这些就可以推断出他是一个帅哥。那么之前的这些描述可以作为一个模型与方法,套进去。然后具体眼睛牙齿最薄鼻子需要占脸部的百分之几才可以说是好看呢,那么此时可以根据王一博的脸的五官进行计算一下(当然可以选取多样本)计算出来的数据结构,可以高效计算其他人。)(栗子不一定准确)
    • 无论是语义网络,还是框架语言和产生式规则,都缺少严格的语义理论模型和形式化的语义定义。为了解决这一问题,人们开始研究具有较好的理论模型基础和算法复杂度的知识表示框架。
    • 其中比较有代表性的是描述逻辑语言(Description Logic)
      描述逻辑主要用于刻画概念、属性、个体、关系、元语(即逻辑描述)等知识表达要素。
      举个栗子:
      知识图谱 第二章(上)_第1张图片
      描述逻辑比传统专家系统更关系知识表示能力和推理计算复杂性之间的关系。
      描述逻辑的优点:
      (1)结构性,能把事物的属性以及事物之间的各种语义联想显式的表示出来
      (2)严密性:有形式化的语法和语义,以及相关的推理规则。
      (3)多样性:具有大量可判定的扩展,以满足不同应用场景的需求
      (4)易实现性:可判定,可以转换为计算机内部的形式,以便用算法实现
      描述逻辑的缺点:
      (1)有限的表达能力:不支持显式使用变量,不能够任意使用量化
      (2)无法表示不确定知识
      描述逻辑是目前大多数本体语言(如OWL)的理论基础
  • OWL(Web Ontology Language)是W3C开发的一种网络本体语言,用于对本体进行语义描述。
    https://imonce.github.io/2019/03/18/owl%E6%9C%AC%E4%BD%93%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
    OWL本体的组成:
    1.个体(individual)
    个体代表领域中我们感兴趣的对象,OWL不使用唯一命名假设,即两个不同的名称可以对应一个 个体(例如:“伊丽莎白女王”和“伊丽莎白温莎”是指同一个人)。在OWL中,必须明确表示个体之间是否相同,否则它们的关系是不明确的。
    个体(individual)有时也被称作实例(Instance)。
    2.属性(Property)
    属性是个体之间的二元关系。在描述逻辑中,它们就是角色(Role)的概念。
    按照属性的表意及性质可以分为以下四类属性:
    函数属性(Functional Property)——通过这个属性只能连接一个个体,如hasBirthMother
    反函数属性(Inverse Functional Property)——即这个属性的反属性是函数属性,也就是对于一个 给定的个体,只有最多一个个体能通过该属性连接那个个体,如isBirthMotherOf
    传递属性(Transitive Property)——这个属性是可以传递的,如你的祖先的祖先也是你的祖先,hasAncestor
    对称属性(Symmetric Property)——即这个属性是对称的,一个属性是对称的那么它就不能是函数属性。如你是你的兄弟的兄弟,hasSibling
    3.类(class)
    表示一些个体的集合,它使用数学的方法描述出该类中成员必须具有的条件。概念(concept)这个词有时被用来代替类,实际上,类是概念的一个具体表现。
  • 人工智能早期的知识表示方法
    知识是智能的基础。人工智能系统需要获取并运用知识。这就牵扯出两个核心的问题:怎么表示知识?怎样在计算机中高效地存储与处理知识。在这里着重介绍怎么表示知识。
    • 一阶谓词逻辑(一阶逻辑)
      • 一阶谓词逻辑:个体,谓词,量词
        (图片来自:https://www.cnblogs.com/cy0628/p/13905458.html)
        知识图谱 第二章(上)_第2张图片
        知识图谱 第二章(上)_第3张图片
        知识图谱 第二章(上)_第4张图片

知识图谱 第二章(上)_第5张图片
+ 一阶谓词逻辑表示法的特点
1.优点
(1)结构性:能把事物的属性以及事物间的各种语义联想显式地表示出来。
(2)严密性:有形式化的语法和语义,以及相关的推理规则。
(3)可实现性:可以转换为计算机内部形式,以便用算法实现。
2.缺点
(1)有限的可用性:一阶逻辑的逻辑归结只是半可判定性的。
(2)无法表示不确定性知识
(3)效率低:推理过程太冗长,降低了系统效率。谓词表示越细,表达越清楚,推理越慢,效率越低
(4)组合爆炸:在其推理过程中,随着事实数目的增大及盲目地使用推理规则,有可能产生组合爆炸
* 霍恩子句和霍恩逻辑
- 霍恩子句:是带有最多一个肯定文字的字句,肯定文字是指没有否定符号的文字。
- 霍恩逻辑:是一阶逻辑的子集
- 霍恩公式
Horn原子有三:
P::= ┴ | T |p Horn原子 分别是底公式、顶公式和命题原子。
Horn原子合取后的蕴含称为Horn子句:
A::= P | PΛA C::= A → P Horn子句
继续合取就是Horn公式:
H::= C | CΛH Horn公式

  ```
     ﹁表示否定,复合命题“﹁Q”即“﹁Q”
    ∧表示合取,复合命题“P∧Q”表示“P与Q”
   ∨表示析取,复合命题“P∨Q”表示“P或Q”
   →表示条件(蕴含),复合命题“P→Q”表示“如果P,那么Q”
    ↔表示双条件(等价),复合命题“P↔Q”即表示“P当且仅当Q”
 ```

霍恩逻辑的优缺点可以随处百度到,我不是很理解霍恩逻辑,不再赘述

  • 语义网络
    语义网络是由Quillian于上世纪60年代提出的知识表达模式,其用相互连接的节点和边来表示知识。节点表示对象、概念,边表示节点之间的关系。
    知识图谱 第二章(上)_第6张图片
    语义网络的优点:
    (联想性,易用性,结构性)
  1. 容易理解和展示。
  2. 相关概念容易聚类。
    语义网络的缺点:
  3. 节点和边的值没有标准,完全是由用户自己定义。
  4. 多源数据融合比较困难,因为没有标准。
  5. 无法区分概念节点和对象节点。
  6. 无法对节点和边的标签进行定义。
  7. 无形式化语法语义
    简而言之,语义网络可以比较容易地让我们理解语义和语义关系。其表达形式简单直白,符合自然。然而,由于缺少标准,其比较难应用于实践。

对于初学者来讲,这个概念很容易和语义网(Semantic Web)相混淆。为了行文一致,除非特别说明,语义网络指Semantic Network,语义网指Semantic Web。
“Semantic”就是用更丰富的方式来表达数据背后的含义,让机器能够理解数据。“Web”则是希望这些数据相互链接,组成一个庞大的信息网络,正如互联网中相互链接的网页,只不过基本单位变为粒度更小的数据

  • 框架
    框架是一种描述对象(事物、事件或概念等)属性的数据结构。
    知识图谱 第二章(上)_第7张图片

其理论的基本思想就是认为人们对现实世界中各种事物的认识都以一种类似于框架的结构储存在记忆中。当面临一个新事物时就从记忆中找到一个合适的框架,并根据实际情况对其细节加以修改、补充,从而形成对当前事物的认识。
知识图谱 第二章(上)_第8张图片
以上图片来自https://blog.csdn.net/Solitarily/article/details/79705753

  • 框架的优点:
  1. 结构性:能把事物的属性以及事物间的各种语义联想显式地表示出来
  2. 框架对于知识的描述比较全面,支持默认值以及触发器
  • 框架的缺点:
  1. 框架的构建成本非常高,对知识库的质量要求非常高
  2. 默认值会增大推理的复杂度
  3. 无法表示不确定的知识
  • 描述逻辑(Description Logic)
    描述逻辑 DL 主要描述本体的概念和属性,对于本体知识库的构建提供便捷的表达形式,是一阶逻辑的一个可判断子集
    DL的重要特征是同时具有很强的表达能力和可判断性。DL近年来受到广泛的关注,被选为互联网本体语言(OWL)的理论基础。
    本文开头详细的介绍了,在此不再赘述。
  • 互联网时代的语义网络知识表示框架
    早期Web的标准语言HTML和XML无法适应语义网对知识表示的要求,所以W3C提出了新的标准语言RDF、RDFS和OWL。这两种语言的语法可以和XML兼容。下面详细介绍这几种语言。
    • RDF
      RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种方法和手段。RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识,如下图。
      知识图谱 第二章(上)_第9张图片
      RDF由节点和边组成,节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系
      在知识图谱中,我们用RDF形式化地表示这种三元关系。RDF(Resource Description Framework),即资源描述框架,是W3C制定的,用于描述实体/资源的标准数据模型。RDF图中一共有三种类型,International Resource Identifiers(IRIs),blank nodes 和 literals。下面是SPO每个部分的类型约束:
  1. Subject可以是IRI或blank node。
  2. Predicate是IRI。
  3. Object三种类型都可以。
    IRI我们可以看做是URI或者URL的泛化和推广,它在整个网络或者图中唯一定义了一个实体/资源,和我们的身份证号类似。
    literal是字面量,我们可以把它看做是带有数据类型的纯文本,比如王一博原名可以表示为"cool guy"^^xsd:string。
    blank node简单来说就是没有IRI和literal的资源,或者说匿名资源。关于其作用,有兴趣的读者可以参考W3C的文档,这里不再赘述。
    那么“罗纳尔多的中文名是罗纳尔多·路易斯·纳扎里奥·达·利马”这样一个三元组用RDF形式来表示就是:
    知识图谱 第二章(上)_第10张图片
    "www.kg.com/person/1"是一个IRI,用来唯一的表示“罗纳尔多”这个实体。"kg:chineseName"也是一个IRI,用来表示“中文名”这样一个属性。"kg:"是RDF文件中所定义的prefix,如下所示。

@prefix kg: http://www.kg.com/ontology/
即,kg:chineseName其实就是"http:// www.kg.com/ontology/chineseName"的缩写。

将上面的知识图用更正式的形式画出来:

知识图谱 第二章(上)_第11张图片
以上来自:https://zhuanlan.zhihu.com/p/31726910

  • RDF的“衣服”——RDFS/OWL
    之所以说RDFS/OWL是RDF的“衣服”,因为它们都是用来描述RDF数据的。为了不显得这么抽象,我们可以用关系数据库中的概念进行类比。用过Mysql的读者应该知道,其database也被称作schema。这个schema和我们这里提到的schema language十分类似。我们可以认为数据库中的每一张表都是一个类(Class),表中的每一行都是该类的一个实例或者对象(学过java等面向对象的编程语言的读者很容易理解)。表中的每一列就是这个类所包含的属性。如果我们是在数据库中来表示人和地点这两个类别,那么为他们分别建一张表就行了;再用另外一张表来表示人和地点之间的关系。RDFS/OWL本质上是一些预定义词汇(vocabulary)构成的集合,用于对RDF进行类似的类定义及其属性的定义。

Notice: RDFS/OWL序列化方式和RDF没什么不同,其实在表现形式上,它们就是RDF。其常用的方式主要是RDF/XML,Turtle。另外,通常我们用小写开头的单词或词组来表示属性,大写开头的表示类。数据属性(data property,实体和literal字面量的关系)通常由名词组成,而对象数据(object property,实体和实体之间的关系)通常由动词(has,is之类的)加名词组成。剩下的部分符合驼峰命名法。为了将它们表示得更清楚,避免读者混淆,之后我们都会默认这种命名方式。读者实践过程中命名方式没有强制要求,但最好保持一致。

  1. 轻量级的模式语言——RDFS
    RDFS,即“Resource Description Framework Schema”,是最基础的模式语言.
    我们这里只介绍RDFS几个比较重要,常用的词汇:
    (1) rdfs:Class. 用于定义类。
    (2) rdfs:domain. 用于表示该属性属于哪个类别。
    (3)rdfs:range. 用于描述该属性的取值类型。
    (4)rdfs:subClassOf. 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。
    (5)rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。

  2. 上面我们提到,RDFS本质上是RDF词汇的一个扩展。后来人们发现RDFS的表达能力还是相当有限,因此提出了OWL。我们也可以把OWL当做是RDFS的一个扩展,其添加了额外的预定义词汇。

OWL,即“Web Ontology Language”,语义网技术栈的核心之一。OWL有两个主要的功能:
(1)提供快速、灵活的数据建模能力。
(2)高效的自动推理。
描述属性特征的词汇

  1. owl:TransitiveProperty. 表示该属性具有传递性质。例如,我们定义“位于”是具有传递性的属性,若A位于B,B位于C,那么A肯定位于C。

  2. owl:SymmetricProperty. 表示该属性具有对称性。例如,我们定义“认识”是具有对称性的属性,若A认识B,那么B肯定认识A。

  3. owl:FunctionalProperty. 表示该属性取值的唯一性。 例如,我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人。

  4. owl:inverseOf. 定义某个属性的相反关系。例如,定义“父母”的相反关系是“子女”,若A是B的父母,那么B肯定是A的子女。

本体映射词汇(Ontology Mapping)

  1. owl:equivalentClass. 表示某个类和另一个类是相同的。

  2. owl:equivalentProperty. 表示某个属性和另一个属性是相同的。

  3. owl:sameAs. 表示两个实体是同一个实体。

你可能感兴趣的:(知识图谱学习笔记,人工智能)