知识表示
指用什么语言对知识图谱进行建模,可以方便知识计算。
知识表示的用途和特点:
- 客观事物的知识表示,即知识表示首先要定义客观实体的机器指代或指称。
- 一组本体约定和概念模型,需要定义用于描述客观事物的概念和类别体系。
- 支持推理的表示基础,需要提供机器推理的模型与方法。
- 用于高效计算的数据结构
- 人可理解机器语言,知识表示必须接近人的认知
一阶谓词逻辑
用谓词和变量表示关系。可以把事物的属性及事物间的各种语义关系联想现实表示、有形式化的语法和语义及相关推理规则,可以转换为计算机内部形式便于算法实现。但无法表示不确定性知识。
霍恩子句和霍恩逻辑
霍恩子句是带有最多一个肯定的文字的子句,肯定文字指没有否定符号的文字。
霍恩逻辑是一阶逻辑的子集。基于霍恩逻辑的知识库是一个霍恩规则的集合。一个霍恩规则由原子公式构成:
B
1
∧
⋅
⋅
⋅
∧
B
n
→
H
B_1 \wedge ··· \wedge B_n \to H
B1∧⋅⋅⋅∧Bn→H
其中H是头原子公式,B_1,…,B_n是体原子公式。事实是霍恩规则的特例,它们是没有体原子公式且没有变量的霍恩规则。
语义网络
又称联想网络,在形式上是一个带标识的有向图。图中节点表示各种事物、概念、情况、状态等,每个节点可以带若干属性。节点间的“连接弧”(联想弧)用来表示各种语义联系、动作。
语义网络的单元是三元组:(节点1,联想弧,节点2),所有节点通过联想弧彼此相连,语义网络可以通过图上的操作进行知识推理。
框架
框架是更好理解视觉推理和自然语言技术。思想是当面临一个新事物时,就从记忆中找出一个合适的框架,与实际情况对细节进行修改、补充,从而形成对当时事物的认知。
框架描述一种对象(事物、事件或概念等)属性的数据结构,类是知识表示的基本单位。每个类有一些槽,每个槽又分为若干“侧面”。一个槽用于表示描述对象的一个属性,而一个侧面用语表示槽属性的一个方面,槽和侧面都可以有属性值,分别称为槽值和侧面值。此外,框架允许给属性设默认值,以及设立触发器维护框架。
逻辑描述
是一阶逻辑的一个可判定子集。描述逻辑可以被看成是利用一阶逻辑对语义网络和框架进行形式化后的产物。描述逻辑一般支持一元谓词和二元谓词。一元谓词为类,二元谓词称为关系。描述逻辑的重要特征是同时具有很强的表达能力和可判定性。
RDF
RDF中的主语是一个个体,个体是类的实例。RDF中的谓语是一个属性,属性可以连接两个个体 或者 连接一个个体和一个数据类型的实例。如果把三元组的主语和宾语看成图的节点,谓语看成边,那么RDF知识库可以被看成一个图或一个知识图谱。
RDF允许没有全局标识的空白节点(空白节点前缀为“_”)。开放世界假设,RDF图谱里知识有可能是不完备的,采用开放世界假设意味着RDF图谱可以被分布式存储。
RDF用到了类以及属性描述个体之间的关系,这些类和属性由模式(schema)定义。RDF Schema提供了对类和属性的简单描述,从而给RDF数据提供词汇建模的语言。
RDFS提供最基本的对类和属性的描述元语:
- rdf:type 用于指定个体的类
- rdfs:subClassOf 用于指定类的父类
- rdfs:subPropertyOf 用于指定属性的父属性
- rdfs:domain 用于指定属性的定义域
- rdfs:range 用于指定属性的值域
OWL
声价性声明
声明两个类、属性和实例是等价的。
- exp:运动员 owl:equivalentClass exp:体育选手
- exp:获得 owl:equivalentProperty exp:取得
- exp:运动员 owl:sameIndividualAs exp:小明
exp是命名空间的别称,命名空间是唯一识别的一套名字,用来避免名字冲突,在OWL中可以是一个URL
属性传递性声明
声明一个属性是传递关系。
exp:ancestor ref:type owl:TransitiveProperty
指的是 exp:ancestor 是一个传递关系。
属性互逆声明
声明两个属性有互逆的关系。
exp:ancestor owl:inverseOf exp:descendant
指的是 exp:ancestor 和 exp:descendant 是互逆的。
属性函数式声明
exp:hasMother rdf:type owl:FunctionProperty
指 exp:hasMother是一个函数。即一个生物只有一个母亲
属性对称式声明
exp:friend rdf:type owl:SymmetricProperty
指 exp:friend 是一个具有对称性的属性。
属性的全称限定声明
- exp:Person owl:allValuesFrom exp:Women
- exp:Person owl:onProperty exp:hasMother
上述例子说明:exp:hasMother 在主语属于exp:Person类条件下,宾语取值只能来自exp:Women类。
属性的存在限定声明
exp:SemanticWebPaper owl:someValuesFrom exp:AAAI
exp:SemanticWebPaper owl:onProperty exp:publishedIn
说明 exp:publishedIn 在主语属于 exp:SemanticWebPaper 的条件下,宾语取值部分来自 exp:AAAI 类。
属性的基数限定声明
exp:Person owl:cardinality "1" ^^xsd:integer
exp:Person owl:onProperty exp:hasMother
指的是 exp:hasMother 在主语属于 exp:Person 类的条件下,宾语的取值只能取一个,“1”的数据类型被声明为xsd:integer,这是基数约束,本质上属于属性的局部约束。
相交的类声明
exp:Mother owl:intersectionOf _tmp
_tmp rdf:type rdfs:Collection
_tmp rdfs:member exp:Person
_tmp rdfs:member exp:HasChildren
_tmp为临时资源,是 rdfs:Collection 类型,是一个容器,它的两个成员是 exp:Person 和 exp:HasChildren。上述三元组说明 exp:Mother 是 exp:Person 和 exp:HasChildren 两个类的交集。
SPARQL
查询RDF数据的标准语法、处理SPARQL查询的规则以及结果返回形式。
基本构成
- 变量:RDF 中的资源,以“ ? ”或者“ $ ”指示
- 三元组模版:在where子句中列出关联的三元组模版
- SELECT子句中指示要查询的目标变量
例子
PREFIX exp: http://www.example.org/
select ?student
where {
?student exp:studies exp:CS328
}
/* 指查询所有选修CS328课程的学生,PREFIX 部分进行命名空间的声明 */
常见的 SPARQL 查询算子
- OPTIONAL:可选算子,指这个算子覆盖范围的查询语句是可选的。
select ?student ?email
where {
?student exp:stdies exp:CS328 .
optional{
?student foaf:mbox ?email .
}
}
/* 指的是查询所有选修CS328课程的学生姓名,以及他们的邮箱。OPTIONAL 关键字指示如果没有邮箱,则依然返回学生姓名,邮箱处空缺。 */
- FILTER:过滤算子,指这个算子覆盖范围的查询语句可以用来过滤查询结果。
select ?module ?name ?age
where {
?student exp:studies ?module .
?student foaf:name ?name .
optional{
?student exp:age ?age .
FILTER(?age > 25) }
}
/* 查询学生姓名、选修课程以及他们的年龄;如果有年龄,年龄必须大于 25 岁 */
- UNION:并算子,将两个查询的结果合并起来。
select ?student ?email
where {
?student foaf:mbox ?email .
{?student exp:studies exp:CS328}
UNION {?student exp:studies exp:CS909}
}
/* 查询选修课程CS328或CS909的学生姓名及邮件,如果无邮件值则不返回该记录 */
知识图谱嵌入模型
依靠知识图谱中可以直接观察到的信息对模型进行训练,根据所有已知的三元组训练模型,只需训练出来的实体表示和矩阵表示满足被用来训练的三元组即可。由于训练结果的不理想,很多研究者开始关注除了知识图谱之外的额外信息(实体类型、关系路径等)训练知识图谱嵌入。
转移距离模型
将三元组合理性问题转化为头实体和尾实体的距离性问题,重点是如何设计得分函数(利用关系把头实体转移到尾实体的合理性的函数)。
语义匹配模型
挖掘向量化后的实体和关系的潜在语义。
RESCAL模型核心思想是将这个知识图谱编码为一个三维张量,这个张量分解除一个核心张量和一个因子矩阵,核心张量的每个二维切片代表一种关系,因子矩阵中每一行代表一个实体。由核心张量和因子矩阵还原的结果被看作对应三元组成立的概率。如果概率大于某个阈值,对应三元组正确;否则不正确。
得分函数为:
f
r
(
h
,
t
)
=
h
T
M
r
t
=
∑
i
=
0
d
−
1
∑
j
=
0
d
−
1
[
M
r
]
i
j
⋅
[
h
]
i
⋅
[
r
]
j
f_r(h,t) = h^TM_rt= \sum_{i=0}^{d-1} \sum_{j=0}^{d-1}[M_r]_{ij}·[h]_i·[r]_j
fr(h,t)=hTMrt=i=0∑d−1j=0∑d−1[Mr]ij⋅[h]i⋅[r]j
通过限制M_r对角矩阵简化RESCAL模型,即限制M_r = diag®。所以存在
h
T
⋅
d
i
a
g
(
r
)
⋅
t
=
t
T
⋅
d
i
a
g
(
r
)
⋅
h
h^T·diag(r)·t = t^T ·diag(r)·h
hT⋅diag(r)⋅t=tT⋅diag(r)⋅h
考虑附加信息的模型
实体类型
是一种容易考虑的额外信息。通过在知识图谱中设立类似于IsA这样的可以表示实体属性的关系,如:
(Rome,IsA,city)
(Italy,IsA,Country)
通过三元组将属性信息考虑到向量中。
文本描述
在一些知识图谱中,对实体有一些简要文本描述。描述本身具有一定语义信息,对提高嵌入的质量有一定提升。
文本信息联合模型:分为知识模型、文本模型和对齐模型。
- 知识模型对知识图谱中的实体和关系做嵌入,是TransE的变种。
- 文本模型对语料库中的词语进行向量化,是一个Skip-gram模型变种。
- 对齐模型用来保证知识图谱中的实体和关系与单词的嵌入在同一个空间中。
- 联合模型在训练时降低来自三个子模型的损失之和。
逻辑规则
主要是霍恩子句。简单规则举例:
∀
x
,
y
:
I
s
D
i
r
e
c
t
o
r
O
f
(
x
,
y
)
→
B
e
D
i
r
e
c
t
e
d
B
y
(
y
,
x
)
\forall x,y:IsDirectorOf(x,y) \rightarrow BeDirectedBy(y,x)
∀x,y:IsDirectorOf(x,y)→BeDirectedBy(y,x)
该规则说明了两个不同的关系之间的关系。提出了一种以规则为指导的知识图谱嵌入方法,其中提出的软规则指用AMLE+规则学习方法在知识图谱中挖掘的带有置信度的规则,该方法的整体框架是一个迭代的过程,包括软标签预测阶段和嵌入修正阶段。
< < 论文研读 > >
知识图谱嵌入的应用
-
预测链接
- 指通过一个已知的实体和关系预测另一个实体。当知识图谱嵌入被学习完成后,知识图谱嵌入就可以通过排序完成。在进行链接预测时候,可以将知识图谱中的每个实体都放在尾实体的位置上,放入相应知识图谱嵌入模型的得分函数中,计算不同实体得分,也就是三元组的合理性。
-
三元组分类
- 把三元组各个部分向量表达带入相应的知识图谱嵌入的得分函数,三元组得分越高,合理性真实性越高。
-
实体对齐
- 验证两个实体是否只带或者引用同一个事物或对象。
- 如果需要确定x,y两个实体指代同一个对象的可能性,则使用知识图谱嵌入得分函数对三元组(x , EqualTo , y)打分。
-
问答系统
-
对某一个具体的自然语言表达的问题,使用知识图谱的三元组对其进行回答。
-
设计的得分函数为:
-
S ( q , a ) = ( W ϕ ( q ) ) T ( W φ ( a ) ) S(q,a)=(W \phi(q))^T(W \varphi(a)) S(q,a)=(Wϕ(q))T(Wφ(a))
-
W 为包含词语、实体、关系的向量表示矩阵 ,\phi q 为词语出现的稀疏向量。
-
-