速成 · 知识图谱
我按期末串讲和十二讲课件重新组织了课程内容,目标是快速建立完整框架。这不是根据历年真题统计的押题表,也不代表某个知识点一定会考。
0. 先看课程主线
知识图谱要解决的事并不神秘:把分散的数据整理成带语义的图,再让机器可以查询和推理。整门课可以顺着一条数据流来理解:
原始数据
↓ 抽取
候选实体、关系与事件
↓ 融合
消歧、对齐后的统一知识
↓ 表示与存储
RDF 图或属性图
↓ 检索与推理
查询答案、补全缺失关系、发现新知识
↓ 应用
问答、推荐、视觉理解和行业系统
表示规定“知识长什么样”,抽取负责“从哪里拿到知识”,融合处理“不同来源是否说的是同一件事”,存储与查询让知识可用,推理则尝试得到图中没有直接写出的结论。后面的 KGE、KBQA 和推荐模型,都可以放回这条主线里定位。
1. 概述:知识图谱里装的是什么
1.1 从信号到知识
- 信号是传感器或通信系统得到的原始变化。
- 数据是按某种形式记录下来的符号和数值。
- 信息是经过解释、带有上下文的数据。
- 知识进一步表达实体、概念、关系和约束,可以支持判断与推理。
传统数据库擅长保存结构化记录,但通常不会主动表达“某个类是另一个类的子类”“两个名字指向同一个人”这类语义。知识图谱把这些语义也放进数据模型中,因此更适合异构数据关联、语义检索和推理。
1.2 三元组与两层结构
知识图谱最常见的基本单位是三元组:
其中 是头实体, 是关系, 是尾实体。例如:
一张图里通常同时有两层知识:
- 概念层描述类别、约束和类别之间的关系,例如“大学是教育机构的一种”。
- 实例层描述具体对象和事实,例如“北京航空航天大学是一所大学”。
概念层给出模式,实例层填入数据。只记三元组而忽略这两层的区别,后面很容易混淆本体、RDF 和普通属性图。
1.3 课程中的四个关键问题
课件把知识图谱技术归纳为四类问题:
- 知识表示:怎样让机器表示实体、关系、规则和约束。
- 知识抽取:怎样从结构化、半结构化和非结构化数据中得到知识。
- 知识融合:怎样消除异构、重复和歧义。
- 知识服务:怎样存储、查询、推理并支撑上层应用。
2. 知识表示:从规则到图
知识表示方法的发展,可以看成“表达能力、推理能力和工程成本”之间不断取舍。
| 方法 | 基本形式 | 适合表达 | 主要限制 |
|---|---|---|---|
| 一阶谓词逻辑 | 谓词、变量、量词 | 严格事实与规则 | 不擅长不确定知识,推理成本高 |
| 语义网络 | 节点和有向边 | 概念及其关系 | 早期形式缺少统一严格语义 |
| 产生式系统 | IF 条件 THEN 结论 | 专家规则 | 规则多后维护和冲突处理困难 |
| 框架 | 对象及其槽位 | 结构化对象、默认值与继承 | 通用推理能力有限 |
| 描述逻辑 | 概念、角色、个体 | 分类体系和约束 | 表达能力越强,推理通常越贵 |
| RDF / OWL | 三元组与本体公理 | Web 上可交换的语义数据 | 复杂属性表达较冗长 |
| 属性图 | 节点、边及键值属性 | 图数据库中的工程查询 | 跨系统语义标准化较弱 |
2.1 描述逻辑、本体与 RDF
描述逻辑把知识分成两部分:
- TBox 描述概念和角色之间的模式,例如 。
- ABox 描述具体个体,例如 。
在本课程的记号中,本体可以写成五元组:
、、、、 分别表示概念、关系、函数、公理和实例。本体不是“事实越多越好”,它主要规定一套领域共同使用的概念和约束。
RDF 把事实写成主语、谓词、宾语三元组。RDFS 在 RDF 之上补充类、子类、属性定义域和值域等词汇;OWL 再增加更强的本体表达和推理能力。课件重点涉及三种 OWL 2 profile:
- OWL 2 QL 面向大量实例和查询改写。
- OWL 2 EL 适合类和属性很多的大型本体。
- OWL 2 RL 适合基于规则的推理实现。
它们不是简单的“低、中、高”三个等级,而是针对不同应用场景裁剪出的子语言。
2.2 RDF 与属性图怎么选
RDF 的所有信息都以三元组表达,谓词必须用 IRI 标识;主语可以是 IRI 或空白节点,宾语还可以是字面量。它适合语义互操作、链接数据和本体推理。属性图允许节点和边直接携带键值属性,适合在 Neo4j 等图数据库里做遍历和工程查询。
例如“李雷从 2024 年起就读于北航”:
- 属性图可以把
since: 2024直接放在就读于这条边上。 - RDF 通常需要额外三元组或引入中间节点表达这条关系的属性。
选择数据模型时,先看任务更依赖标准语义与推理,还是更依赖灵活属性和高效遍历。
3. 知识抽取:把原始数据变成候选事实
3.1 三类数据源
| 数据源 | 例子 | 主要方法 |
|---|---|---|
| 结构化数据 | 关系数据库、表格 | 直接映射、R2RML |
| 半结构化数据 | HTML、百科页面、Web Table | 包装器、模板发现、表格阐释 |
| 非结构化数据 | 新闻、论文、社交文本 | 实体识别、关系抽取、事件抽取 |
无论数据源是什么,最后都要回答三个问题:文本或记录里有哪些实体,实体之间有什么关系,发生了什么事件。
3.2 结构化数据:D2R
关系数据库转成 RDF 时,可以先记住五组对应:
| 关系数据库 | 知识图谱 |
|---|---|
| 表 | 类 |
| 列 | 属性 |
| 行 | 实例 |
| 单元格 | 属性值 |
| 外键 | 实体之间的指代关系 |
W3C 的 RDB2RDF 路线包括两种方法:
- Direct Mapping 按固定规则直接生成 RDF,省配置但定制能力有限。
- R2RML 用映射文件定义逻辑表、主语映射和谓词—宾语映射,可以控制生成的类、IRI 和关系。
一条 R2RML Triples Map 的结构可以压缩为:
Logical Table
├── Subject Map
└── Predicate-Object Map
├── Predicate Map
└── Object Map / RefObjectMap
跨表关系通过 parentTriplesMap 指向父映射,再用 joinCondition 说明子表与父表怎样连接。D2RQ、Mastro、Ultrawrap 和 Ontop 都属于这条 D2R / OBDA 工具链中的代表。
3.3 半结构化数据:包装器、Web Table 与 PageRank
DBpedia 的典型思路是从 Wikipedia 的信息框、分类、页面链接等半结构化内容中抽取 RDF。一般网页则需要包装器根据 DOM 结构定位目标字段。包装器可以手工编写,也可以通过监督归纳或无监督模式发现生成。
Web Table 抽取不止是把 HTML 表格抄下来,还要完成:
- 判断表格是布局表还是关系表。
- 识别表头、数据区域和实体列。
- 把单元格链接到知识库实体,并确定列的语义。
实体消歧可以利用候选实体与单元格文本的相似度,也可以利用候选实体之间的图结构。PageRank 的稳态更新式为:
是阻尼系数, 是节点数, 是节点 的出链数。它表示随机游走长期达到稳态后落在节点 的概率,不是“走到该点后停止的概率”。
3.4 非结构化数据:NER、RE 与 EE
命名实体识别(NER)先在文本中找出人名、地点、组织等实体。BIO 标注用 B-X 表示某类实体开头,I-X 表示实体内部,O 表示非实体;BIOES 进一步区分单字实体和结尾。
CRF 对整个标签序列打分:
BiLSTM+CRF 中,BiLSTM 同时编码每个词的左、右上下文,CRF 再为整条标签序列选择全局得分最高的合法组合。两者分别解决“读懂上下文”和“约束标签转移”。
关系抽取(RE)判断实体对之间的语义关系。模板方法可解释但覆盖有限;深度模型能自动学习特征;远程监督用知识库已有实体关系自动标注文本,因此规模大但会引入噪声。它的经典假设是:若知识库中两个实体存在关系,包含这两个实体的句子就可能表达该关系。
事件抽取(EE)通常包括触发词识别和论元识别。流水线方法容易实现,但前序错误会传给后续步骤;联合抽取同时建模多个子任务,可以缓解这种传播,却不保证在所有数据和设置下都更好。
3.5 NER 扩展与大模型抽取
课件继续讨论了少样本/零样本、持续学习、嵌套实体、跨领域和多模态 NER。它们分别处理标注稀缺、新类型持续加入、实体边界嵌套、训练测试领域变化和图文联合输入。
LLM 抽取不必简单替代小模型。课件中的 Filter-then-Rerank 路线让小模型高召回地产生候选,再让 LLM 结合指令和上下文重排。这样能把稳定的批量抽取与较强的语义判断分开。
4. 知识融合:判断“是不是同一个东西”
多源知识图谱在语言、模式和实例层都会不一致,例如同一实体名称不同、两个本体类目划分不同、同一属性取值冲突。融合的目标不是简单合并文件,而是建立可信的对应关系。
4.1 本体映射
本体映射通常经历导入本体、发现候选对应、表示映射结果三个阶段。方法大致有三类:
- 基于术语:比较名称、标签、词形和语言学信息。
- 基于结构:利用父子概念、邻接关系和局部图结构传播相似度。
- 基于实例:比较概念下已有实例的重合和分布。
常见字符串集合相似度为:
编辑距离适合比较拼写差异,结构方法则适合名称不相似、但周围关系相近的概念。Lily 把多类匹配器组合成一条映射流程,而不是只依赖某一个相似度。
4.2 实例匹配与实体消歧
实例匹配的实际流程通常是:
- 分块或生成候选对,避免对两张大图做笛卡尔积。
- 提取名称、属性、文本上下文和邻域结构特征。
- 用规则、分类器、度量学习或图模型判断是否匹配。
- 聚类或合并相同实体,并处理冲突属性。
TF-IDF 与余弦相似度可把文本描述变成可比较的向量:
VMI 用倒排索引把可能匹配的实例放入同一候选块;AMiner 的同名作者消歧结合度量学习、图编码和聚类;OAG 的 LinKG 分阶段对齐出版地点、论文和作者。这些例子分别对应候选生成、单图消歧和跨图对齐。
5. 存储与检索:让图真正可查
5.1 SPARQL 与 Cypher
SPARQL 面向 RDF 图,通过三元组模式匹配变量。例如查询商品及其类别:
PREFIX ex: <http://example.org/>
SELECT ?product ?category
WHERE {
?product a ex:Product .
?product ex:category ?category .
}
常用结构是 PREFIX、SELECT、WHERE,再配合 FILTER 和 OPTIONAL。
Cypher 面向属性图,用近似画图的语法描述节点和边:
MATCH (person:Person)-[:STUDIES_AT]->(school:University)
WHERE school.name = '北京航空航天大学'
RETURN person.name
两种语言都在做图模式匹配,只是依赖的数据模型不同。
5.2 关系数据库中的四种 RDF 存储
| 方案 | 做法 | 典型取舍 |
|---|---|---|
| 三元组表 | 所有事实放入 (s,p,o) 一张表 | 简单通用,但自连接很多 |
| 水平表 | 一个资源占一行,不同谓词作列 | 查询直观,但大量空值且模式僵硬 |
| 属性表 | 经常一起出现的谓词放在同一张表 | 减少连接,但分组设计困难 |
| 垂直划分 | 每种谓词一张 (s,o) 表 | 单谓词扫描快,复杂查询仍需连接 |
RDF4J、AllegroGraph 是 RDF 存储与查询系统的代表;Neo4j 使用属性图和 Cypher。不要只背产品名,先判断它服务的是 RDF 语义网路线还是属性图数据库路线。
6. 推理:从已有事实得到新结论
6.1 四种基本推理
| 类型 | 方向 | 例子 |
|---|---|---|
| 演绎 | 一般规则到具体结论 | 人都会死,苏格拉底是人,所以苏格拉底会死 |
| 归纳 | 多个事实概括一般规律 | 观察大量样本后学习关系规律 |
| 溯因 | 从结果寻找最可能原因 | 看到症状后提出可能诊断 |
| 类比 | 根据相似结构迁移结论 | 用相似实体的关系帮助判断新实体 |
统计推理属于归纳路线,不是与这四类并列的第五类。
面向知识图谱,课件主要介绍三类方法:逻辑规则、图结构路径和表示学习。强化学习与 LLM 路径搜索则把“如何在图上选择下一步”做成策略决策。
6.2 规则学习:AMIE
规则可以写成:
AMIE 从数据中逐步扩展规则,主要操作包括增加悬挂原子、闭合原子和实例化原子,并用头覆盖度、置信度等指标剪枝。它是规则挖掘算法;算法最后产出的 Horn rules 才是规则。
规则推理容易解释,但依赖规则覆盖范围。路径排序算法 PRA 则对实体间的关系路径做随机游走,把不同路径出现的概率当作特征。强化学习方法进一步把实体视为状态、关系边视为动作、目标实体视为奖励,学习多跳搜索策略。ToG 让大模型参与候选关系和实体的选择,同时仍然需要知识图谱提供可验证的搜索空间。
7. KGE:把图放进向量空间
7.1 为什么需要嵌入
符号图容易解释,却难以直接用于梯度学习;大型知识图谱又普遍不完整。知识图谱嵌入(KGE)把实体和关系映射到低维空间,通过打分函数判断三元组是否合理,可用于链接预测、三元组分类和实体/关系预测。
模型可以按思路分成几类:
- 几何变换:TransE、TransH、TransR、RotatE。
- 张量分解:RESCAL、ComplEx、SimplE。
- 神经打分:NTN、ConvE。
- Transformer:KG-BERT。
- 图神经网络:R-GCN。
7.2 TransE:把关系看作平移
TransE 希望真实三元组满足:
常用能量函数为:
训练时让正样本得分低于破坏头实体或尾实体得到的负样本:
它简单高效,但同一个关系向量很难同时表示一对多、多对一和多对多关系;对称关系也可能使不同实体的表示退化到一起。
7.3 复杂关系怎样建模
后续模型分别针对 TransE 的不同局限做扩展:
- TransH 把实体投影到关系对应的超平面,再执行平移。
- TransR、TransD 和 STransE 为不同关系设计不同映射空间或映射方式。
- RESCAL 用关系矩阵做双线性打分;ComplEx 在复数空间建模反对称关系。
- PairRE 用成对关系向量分别缩放头、尾实体。
- RotatE 把关系建模为复数空间中的旋转,可以表达对称、反对称、逆关系和关系组合。
- KG2E 用概率分布表达实体与关系的不确定性。
- HAKE 用极坐标的模长表达层级、相位表达同层关系。
- Poincaré 嵌入利用双曲空间容纳树状层次。
路径、规则、文本、实体类型和多模态信息也能补充单个三元组看不到的上下文。PTransE 引入关系路径,RPJE 联合规则与路径,TKRL 利用类型层次,DKRL 利用实体描述,EngineKG 则在规则学习与嵌入学习之间迭代。
7.4 链接预测指标
测试时通常遮住头实体或尾实体,让模型给所有候选实体排序。Filtered 设置会删除图中已知为真的其他候选,避免把正确事实当成错误答案。
MR 越低越好,MRR 和 Hits@ 越高越好。MR 对极差名次较敏感,MRR 更强调前几名,Hits@ 只关心答案是否进入前 名。
7.5 图会变化,测试对象也可能没见过
静态闭世界的链接预测并不是全部场景。第十一讲还区分了几类扩展问题:
- 增量式 KGE:同一张图不断新增或删除事实,更新表示时还要避免遗忘已有知识。
- 时序知识图谱:事实带时间戳,需要建模关系何时成立以及事件怎样演化。
- 多模态推理:把图结构与文本、图像等信号一起使用。
- 少样本与零样本:目标关系只有少量样本,甚至训练时从未出现。
- 归纳式推理:测试时出现新实体或整张新图,不能只依赖训练阶段记住的实体向量。
区分它们时,先问变化发生在哪里:是事实随时间更新、模态变多、标注变少,还是测试对象根本没有出现在训练图里。
8. 应用:知识图谱怎样进入系统
8.1 KBQA
知识图谱问答要把自然语言问题变成图上的可执行查询,主要有三条路线:
| 路线 | 处理方式 | 特点 |
|---|---|---|
| 模板 | 匹配人工或自动生成的问句模板,再填充实体和关系 | 准确、可解释,但覆盖有限 |
| 语义解析 | 把问题转换为逻辑形式或查询语句 | 结构清楚,但依赖解析与标注 |
| 深度学习 | 学习问题与实体、关系或答案的表示 | 泛化较灵活,但解释和复杂约束仍需专门设计 |
一个完整系统通常还要处理实体链接、关系识别、查询构造、图上执行和答案排序。模板、语义解析和神经模型并非互斥,工程系统常把它们组合使用。
8.2 推荐、视觉与行业应用
知识图谱推荐利用用户、物品和属性之间的多跳路径补充协同过滤信号,也能用路径解释“为什么推荐”。KGCN 聚合知识图谱邻居,KGAT 使用图注意力,RippleNet 沿用户历史兴趣在图上传播,PGPR 则学习可解释的推荐路径。
在视觉问答和跨模态检索中,知识图谱补充图片里没有直接出现的常识和实体关系。医疗、商业和信息安全等领域应用也是同一套流程:先构建领域本体和实例,再做查询、推理或预测。领域系统的关键不只是换一份数据,还要处理领域术语、约束、数据质量和可解释性。
9. 三个计算口径
9.1 Dice 与 Jaccard
比较 Lvensshtain 与 Levenshtein 的 bigram:
S = {Lv, ve, en, ns, ss, sh, ht, ta, ai, in}
T = {Le, ev, ve, en, ns, sh, ht, te, ei, in}
交集是 {ve, en, ns, sh, ht, in},因此 ,,:
9.2 TF-IDF 与余弦
计算顺序是分词、统计 TF、根据文档集合计算 IDF、得到 TF-IDF 向量,最后算余弦相似度。需要特别注意:IDF 的 是文档总数,分母是包含该词的文档数,不是该词在所有文档中的总出现次数。
9.3 KGE 排名
若三个测试样本的真实实体名次分别是 :
排名从 1 开始,不能把数组下标 0 当作第一名。
10. 自测
先不翻上文,尝试回答下面的问题:
- 概念层和实例层分别描述什么?TBox 与 ABox 如何对应这一区分?
- RDF 和属性图表达“边的属性”时有什么差别?
- Direct Mapping 与 R2RML 的取舍是什么?R2RML 怎样表示跨表关系?
- BiLSTM 与 CRF 在 NER 中各自负责什么?
- 远程监督为什么能自动扩充训练数据,又为什么会带来噪声?
- 实体匹配为什么要先分块?名称相似、文本相似和结构相似各适合什么情况?
- SPARQL 和 Cypher 的共同点与数据模型差异是什么?
- AMIE、PRA、强化学习和 KGE 分别利用规则、路径或向量中的哪种信号?
- TransE 为什么难以处理一对多关系?RotatE 又能表达哪些关系模式?
- 模板、语义解析和深度学习 KBQA 各自在哪个环节获得灵活性,又在哪里付出代价?
检查答案时,不必逐字复述课件。按“输入是什么、方法做什么、输出是什么、局限在哪里”复述;停顿的部分再回到对应讲次。