知识应用难点在于知识推理,知识推理的难点在于知识表示。
一、经典知识表示理论
1、逻辑
根据复杂性从弱到强:命题逻辑(propositional logic)、一阶谓词逻辑、高阶逻辑。
(1)命题逻辑
定义了具有真假值的原子命题,并可通过与( ⋀ \bigwedge ⋀)、或( ⋁ \bigvee ⋁)、非(﹁)、蕴含( ⇒ \Rightarrow ⇒)、当且仅当( ⇔ \Leftrightarrow ⇔)等,将多个原子命题组合成复合命题,而推理过程则根据逻辑连接词的真值表进行推导。
a、命题逻辑真值表
X | Y | ﹁X | X ⋀ \bigwedge ⋀Y | X ⋁ \bigvee ⋁Y | X ⇒ \Rightarrow ⇒Y | X ⇔ \Leftrightarrow ⇔Y |
---|---|---|---|---|---|---|
true | true | false | true | true | true | true |
false | true | true | false | true | true | false |
true | false | false | false | true | false | false |
false | false | true | false | false | true | true |
只要推论是真,命题就一定为真;推论为假的时候,看假设是否与推论的真值一致,一致的话,命题为真,不一致的话,命题为假。
b、一阶谓词逻辑 vs 高阶谓词逻辑
谓词逻辑分为一阶谓词逻辑和高阶谓词逻辑,主要区别:是否可以量化谓词或集合。
一阶谓词逻辑(一阶逻辑):
- 在命题逻辑基础上引入了全称量词( ∀ \forall ∀ ,表示集合全部)和存在量词( ∃ \exists ∃,表示在论域中存在至少一个对象),使得一阶逻辑可以量化实体和概念
高阶逻辑:
- 量化谓词或集合
- 二阶量化集合
- 三阶量化集合的集合
(2)语义网络(Semantic Network)
该模型认为人类的记忆是由概念间的联系(语义关系)实现的,其最基本的语义单元为语义基元,用三元组形式表示:<节点1,关系,节点2>
。
a、关系的类型
- 实例关系(ISA):体现“具体与抽象”的概念,含义为“是一个”,表示一个事物是另一个事物的一个实例。
- 分类关系(泛化关系)(AKO,a kind of):体现“子类与超类”的概念,含义为“是一种”,表示一个事物是另一个事物的一种类型。
- 成员关系(A-Member-of):体现“个体与集体”的关系,含义为“是一员”,表示一个事物是另一个事物的一个成员。
- 属性关系:指事物和其属性之间的关系。常用的属性关系:Have、Can
- 聚合(聚类、包含)关系:有组织或结构特征的“部分与整体”之间的关系。
- 时间关系:不同事件在其发生时间方面的先后次序关系。常用的时间关系:在前、在后
- 位置关系:不同事物在位置方面的关系。常用的位置关系:在、在上、在下、在内、在外
- 相近关系:不同事物在形状、内容等方面相似或相近
b、根据论元个数把关系分为:一元关系、二元关系和多元关系
- 一元关系:用一元谓词 P ( x ) P(x) P(x) 表示, P P P 表示实体/概念的性质、属性等, x x x 表示实体。eg:有翅膀(鸟)
- 二元关系:用二元谓词 P ( x , y ) P(x,y) P(x,y) 表示, x , y x,y x,y 表示实体, P P P 表示实体之间的关系。eg:首都(中国,北京)
- 多元关系:语义网将多元关系转化为多个二元关系,然后利用合取把这个多元关系表示出来。
(3)框架
框架是一种描述所讨论对象(事物、事件、概念等)属性和行为的数据结构。
a、框架的组成
- 框架名:每个框架都有一个框架名,唯一标识一个框架。
- 槽(Slot):包括 槽名、槽值
- 一个框架由若干个槽构成,每个槽都有槽名;
- 一个槽用于说明框架某一方面的属性;
- 属性的值即为槽值。
- 侧面(Facet):包括 侧面名、侧面值
- 一个槽有可能划分为若干个侧面,具有相应的侧面名;
- 一个槽可能含有若干细分属性,一个侧面用来说明其中的一个属性;
- 属性的值即为侧面值。
- 约束条件:用来约束、限制槽值、侧面值的填写。一般不单独列出,而包含在值的填写约束中。
b、示例
框架1:<灾难>
槽1:<时间>
槽2:<地点>
槽3:<伤亡>
侧面3.1:<死亡人数>
侧面3.2:<失踪人数>
槽4:<损失>
侧面4.1:<直接经济损失>
侧面4.2:<间接经济损失>
槽5:<救援>
侧面5.1:<救援部门>
侧面5.2:<救援时间>
侧面5.3:<捐赠情况>
(4)脚本
脚本通过一系列的原子动作来表示事物的基本行为,按照时间顺序描述事物的发生,描述动态的过程。脚本表示的知识有确定的时间或因果顺序,必须是前一个动作完成后才会触发下一个动作的开始。
特点:表示方法能力有限,因其能够描述有一定时序关系的槽信息,在AI和NLP中得以应用,eg:智能对话系统,如酒店预订、机票预订等。
a、脚本的组成
- 进入条件:事件发生的前提条件。
- 角色:事件中可能出现的人物。
- 道具:事件中可能出现
- 舞台:脚本中事件发生的空间。
- 场景:时间发生的序列,是脚本的主体部分。缺陷:需要对所有可能发生动作序列进行枚举。
- 结局:给出在脚本所描述的事件发生之后通常所产生的结果,对应着进入后续脚本的先决条件。
二、语义网中的知识表示方法
1、语义网表示方法
在拓扑结构上可看作一个图或网络。
<!-- xml格式文档 -->
<影星>
<中文名>甄子丹</中文名>
<外文名>Donnie Yen</外文名>
<国籍>中国</国籍>
<民族>汉</民族>
<身高>175cm</身高>
<出生>
<出生地>广州市</出生地>
<出生日期>1963年7月27日</出生日期>
</出生>
<毕业院校>西安赵长军武术学院 </毕业院校>
</影星>
与框架相比:不需要对具有多个侧面的属性定义另一个框架,而是直接定义属性和属性关系建立它们之间的联系(eg:定义属性“出生”和属性“出生地”并建立一个“部分-整体”的关系链接“出生”和“出生地”)。
2、语义网知识描述体系
常用:XML(可扩展标记语言,eXtensible Markup Language)、RDF(资源描述框架,Resource Description Framework)和OWL(网络本体语言,Web Ontology Language)
(1)XML
提出:为了解决动态信息的显示问题,以及HTML在数据表示和描述方面混乱的问题而提出的技术标准。但其通用性受到限制(不同时期或属于不同组织的语义知识需要相互兼容)。
一个标准的XML文档需包含一个 序言和若干具体内容,也可包含一个尾注。
- 序言:对XML的声明以及外部文档的引用。
- 内容:通过元素来记录,元素的标签必须是字母、下划线、冒号,标签含有的内容可以是文本、数值、时间甚至为空。元素可以嵌套,深度不受限制。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html SYSTEM "url.dtd">
<!-- xml文档的内容 -->
<人物>
<名字>马克斯·普朗克</名字>
<国籍>德国</国籍>
<专业>物理学家</专业>
...
</人物>
- 第一行:定义所使用的XML版本和字符编码。
- 第二行:
<!DOCTYPE>
标签是标准通用标记语言的文档类型声明,表示引用外部文件来定义本地文档中出现的名字,url.dtd
标记了要引用文档的路径。
(2)RDF
RDF假设任何复杂的语义都可以通过若干个三元组的组合来表达,并定义这种三元组的形式为“对象 — 属性 — 值”
或“主语 — 谓语 — 宾语”
,其中需要公开或者通用的资源,都会绑定一个可识别的通用资源标识符(universal resource identifier, URI)
示例:
<http://dbpedia.org/resource/Max_Planck> <http://xmlns.com/foaf/0.1/name> "Max Planck"@en
<马克斯·普朗克,国籍,德国>
当需要表示的参数超过两个,常通过RDF定义的一组二元谓词来表示,但增加了复杂性,也加大了后续处理的难度。示例如下:
马克斯·普朗克1919年获得诺贝尔奖。
转换为 ==》
<获奖信息87,人物,马克斯·普朗克>
<获奖信息87,时间,1919年>
<获奖信息87,名称,诺贝尔奖>
查询语言:SPARQL
RDF Schema(RDFs)是一种用于描述RDF的轻量级语言,主要关注类别和属性的层次结构以及继承关系等,可限制子类和属性层次及其属性的定义域、值域,便于不同知识内容的交互和融合。
(3)OWL
OWL建立在RDF和RDFs上,主要包括头部和主体两部分。
a、头部
使用命名空间中预定义的标签来形成本体的头部,其中预定义命名空间包括 xmlns:owl
、xmlns:rdf
、xmlns:rdfs
、xmlns:xsd
等等。示例:物理学家
本体可用如下头部表示
<owl:Ontology rdf:about="">
<rdfs:comment>一个本体的例子</rdfs:comment>
<rdfs:label>物理学家本体</rdfs:label>
</owl:Ontology>
<owl:Ontology rdf:about="">
表示本模块描述当前本体
b、主体(核心)
用于描述本体的类别、实例、属性之间相互关联的部分。示例如下,包括但不限于此。
- 类别关系描述本体的类别所属,只需记录父亲(subClassOf)
owl:ObjectProperty
表示对象类型属性,rdfs:domain
和rdfs:range
表示该属性的定义域和值域。owl:subProperty
表示记录属性间的从属关系。
<owl:Class rdf:ID="物理学家">
<rdfs:subClassOf rdf:resource="科学家"/>
<rdfs:label xml:lang="en">physicist</rdfs:label>
<rdfs:label xml:lang="zh">物理学家</rdfs:label>
...
</owl:Class>
<owl:ObjectProperty rdf:ID="国籍">
<rdfs:domain rdf:resource="人物"/>
<rdfs:range rdf:resource="xsd:string"/>
...
</owl:ObjectProperty>
c、功能性标签
- 传递性:
owl:TransitiveProperty
- 对称性:
owl:SymmetricProperty
- 函数性:
owl:FunctionalProperty
- 可逆性:
owl:inverseOf
- 约束性:
owl:Restriction
- 映射:
owl:equivalentClass
和owl:equivalentProperty
示例:只有获得过诺贝尔奖的物理学家才被称为诺贝尔物理学家
<owl:Class rdf:about="诺贝尔物理学家">
<rdfs:subClassOf rdf:resource="物理学家"/>
<owl:Restriction>
<owl:onProperty rdf:resource="获奖名称"/>
<owl:allValuesFrom rdf:resource="诺贝尔奖"/>
</owl:Restriction>
</owl:Class>
d、语义网 vs 语义网络
在语义网络中,对节点和边的描述没有标准,用户按需自行定义,会导致:
- 不同用户定义方式不同,不便于知识的分享;
- 无法区分知识描述和知识实例。
语义网基于W3C制定的标准,利用统一的形式对知识进行描述和关联,利于知识的共享和利用。
语义网通过语义具化(Semantic Grounding),让每个概念(实体、类别、关系、事件等)都有一个唯一的标识符。
三、知识图谱中的知识表示方法
1、表示框架
(1)本体
- 一个知识本体主要涵盖以下内容:事物、概念、属性、关系、函数、约束、规则、公理。
- 目前大部分知识谱图主要是对前四部分内容(事物、概念、属性、关系)进行建模,只有很少的知识图谱建模了简单的规则结构,也反映不同层次知识在表示上的复杂程度是不同的。
- 知识用统一的三元组形式表示,不论是对人类操作的便捷性还是对计算机计算的高效性,都有很大优势。
- 知识图谱的知识表示不仅体现在RDF为基础的三元组之上,还体现在实体、类别、属性、关系等多颗粒度、多层次语义单元的关联之上。
(2)组合值类型(CVT)
待补充
四、知识图谱的数值化表示方法
1、符号的数值化表示
语义计算
特征工程
2、文本的数值化表示
1957年,Firth对分布假说进行进一步阐述和明确:词的语义由上下文决定。
词空间模型(Word Space Model)==》词的分布表示(Distributional Representation)
3、知识图谱的数值化表示
基于张量分解
基于能量函数