知识图谱融合
Views: --
对应 PPT:第7讲 重点:异构、本体映射、字符串相似度(Dice/Jaccard)、实例匹配、消歧、实体对齐。
1. 知识图谱异构
1.1 背景
- 不同领域、不同方法、不同语言构建的 KG 大量出现
- 早期知识工程的理想:“构建一个统一的知识库”——失败
- 原因:知识体系复杂、主观性、动态演化、跨领域独立构建
结论:知识具有共享性 + 自治性 + 动态性,异构是自然现象,不能完全消除。
1.2 异构的 2 大类(必背)
| 异构类型 | 含义 | 4 小类 |
|---|---|---|
| 语言层异构 | 语法和表述方式异构 | ①语法 ②逻辑 ③元语 ④表达能力 |
| 模型层(本体层)异构 | 描述相交/相关领域时的不匹配 | ①概念化不匹配 ②解释不匹配 |
语言层 4 小类:
- 语法异构:采用不同描述语言(RDF vs OWL)
- 逻辑异构:逻辑表示不匹配(如不相交:
disjoint A BvsA subclass-of (NOT B)) - 元语异构:同一原语定义不同(如
rdfs:domain在两处定义不同) - 表达能力异构:不同语言表达能力差异
模型层 2 大类:
- 概念化不匹配:
- 概念范围不匹配:同名概念在不同领域含义不同
- 模型覆盖范围不匹配:建模主观性导致
- 解释不匹配:
- 范例不匹配:同一概念用不同范例表述
- 建模术语不匹配:同义术语、多义术语、编码格式不同
1.3 4 层概念辨析(必考)
| 层 | 作用 | 例子 |
|---|---|---|
| 本体层(模型层) | 抽象概念、属性、公理 | ”哺乳动物” Subclass “动物” |
| 实例层(实体层) | 具体实体、关系、事实 | ”姚明” 出生于 “上海” |
| 语言层 | 构建 KG 的语法/表述方式 | RDF、OWL、属性图 |
DBpedia 数据规模示例:685 概念、2795 属性、423 万实例。
2. 知识图谱融合
2.1 为什么需要融合
| 场景 | 原因 |
|---|---|
| 数据清洗 | 构建的 KG 可能存在异构 → 融合是预处理 |
| 数据集成 | 需要同时利用多个 KG |
| 重用现有知识 | 避免重复造轮子 |
2.2 融合的目标
合并多个知识图谱
├── 解决本体层匹配
│ ├── 等价类 / 子类
│ └── 等价属性 / 子属性
└── 解决实例层匹配
└── 等价实例
3. 本体层融合:本体映射
3.1 概念
- 本体集成:将多个本体合并成 1 个大本体(耗时长、可扩展性差)
- 本体映射:寻找本体间的映射规则(主流)
3.2 本体映射过程
① 导入本体:解析、数据清洗、构造基础数据
② 发现映射:相似度计算 + 寻找异构本体间的联系
③ 表示映射:根据应用需求组织映射
3.3 3 大类映射算法
| 类型 | 思路 | 适用 |
|---|---|---|
| 基于术语 | 比较名称、标签、注释的相似性 | 文本信息丰富 |
| 基于结构 | 利用图结构 + 邻居信息 | 文本信息少/不规范 |
| 基于实例 | 用实例数据辅助映射 | 有大量实例 |
4. 基于术语的映射方法
4.1 两子类
| 子类 | 思路 |
|---|---|
| 基于字符串 | 直接比较术语字符串 |
| 基于语言 | 借助 NLP(词干、词形、词典) |
4.2 4 个字符串相似度度量(必背公式)
① 最小编辑距离
- 把字符串 A 转成 B 所需的最少编辑操作次数
- 编辑操作:插入、删除、替换
- 变种 Wagner-Fisher distance:不同操作不同权重(del, ins, sub)
② 汉明距离
- 相同长度字符串,对应位置字符不同的个数
- 例:“1011101” vs “1001001” = 2
③ Dice 系数(必考公式)
计算步骤(用 bigram 二元分词):
例:Lvensshtain vs Levenshtein
- S = {Lv, ve, en, ns, ss, sh, ht, ta, ai, in}(10 个)
- T = {Le, ev, ve, en, ns, sh, ht, te, ei, in}(10 个)
- = {ve, en, ns, sh, ht, in}(6 个)
- Dice = 2×6 / (10+10) = 0.6
④ Jaccard 系数(必考公式)
- 例:上面例子中 = 14 个元素
- Jaccard = 6 / 14 = 0.429
速记:Dice 重视交集(×2),Jaccard 重视并集。
4.3 字符串匹配器
- Edit Distance、TF-IDF + Cosine、Jaro-Winkler、SoftTFIDF 等
4.4 基于语言的方法
| 子类 | 思路 | 工具 |
|---|---|---|
| 内部方法 | 利用词语形态和语法 | 词干提取(Stemming)、lemmatization |
| 外部方法 | 利用词典等外部资源 | WordNet、HowNet |
5. 基于结构的映射方法
5.1 核心思想
相似度传播模型:元素的邻居相似,则元素本身也相似。
5.2 Fixpoint Computation(期末爱考)
- 已知两个本体 A, B
- 假设 表示 和 中对应实体的相似度
- 步骤:
- 初始化:,其他为 0
- 迭代计算:根据邻居相似度更新
- 停止条件:n 轮迭代后,残差向量
5.3 适用场景
- 文本信息少、文本信息不规范、文本编码不一致、跨语言匹配
- 弱信息场景的有效方法
5.4 问题
- 相似度传播模型无法衡量边之间的相似性 → 改进:考虑边属性
6. 实例层的融合与匹配
6.1 核心术语(必背 5 个)
| 术语 | 定义 | 例子 |
|---|---|---|
| 指代(mention) | 对真实世界实例的某种描述方式 | ID、名字、URI |
| 匹配(match) | 判断两个指代是否描述同一实例 | e1 = e2 ? |
| 实例匹配 | 对 KG 中实例进行匹配的过程 | |
| 命名实体消歧 | 实体指称 → 真实世界实体 | ”苹果” → 公司/水果 |
| 命名实体链接(NEL) | 文本中实体提及 → KG 中无歧义实体 | m ∈ M → e ∈ E |
| 实体对齐(EA) | 两个 KG 中含义相同的实体 | 与 含义相同 |
关系:实体消歧 ⊂ 实体链接 ⊂ 实体对齐(范围从小到大)。
6.2 2 大挑战(必背)
| 现象 | 含义 | 例子 |
|---|---|---|
| 多义(polysemy) | 一个指代对应多个实体 | ”苹果” = 公司/水果 |
| 同义(synonym) | 一个实体有多个指代 | ”北航” = “北京航空航天大学” |
6.3 实例层融合方法(3 大类)
基于规则 → 人工写规则,置信度
基于分治 → 聚类/倒排索引先分块,再块内匹配
基于机器学习 → 表示学习 + 聚类
7. 基于规则的实例匹配
7.1 思路
- 从已知匹配种子学属性等价 → 推导实例等价
- 例(CIKM 2012):
- 属性等价:
rdfs:label ≈ gs:hasCommonName - 属性等价:
foaf:name ≈ gs:hsCanonicalName - 属性等价:
dbpedia:phylum ≈ gs:inPhylum
- 属性等价:
- 推导规则:
- 若 和 ,且 、 → (等价实例)
优点:可解释。缺点:依赖人工。
7.2 文本匹配器(TF-IDF + 余弦)
TF-IDF 算法 8 步(PPT 经典例题):
① 分词
② 列所有词
③ 计算每词词频(TF)
④ 计算每词逆文档频率(IDF)= log(总文档数 / 含该词的文档数)
⑤ 计算 TF-IDF = TF × IDF
⑥ 选 TF-IDF Top-N 作为关键词
⑦ 构建词频向量
⑧ 计算余弦相似度
TF 公式:
IDF 公式:
PPT 例题:“我喜欢看小说” vs “我不喜欢看电视,也不喜欢看电影”
- 关键词 A:{我、喜欢、小说};关键词 B:{电视、电影、不}
- 向量 A = [1 1 1 0 0 0],向量 B = [1 2 0 1 1 2]
- cos θ = 3/√33 ≈ 0.5222
8. 基于分治的实例匹配
8.1 核心思想
用分块减少匹配计算量。把”所有实例两两比”变成”块内实例两两比”。
8.2 两种分块方式
| 方式 | 思路 | 例子 |
|---|---|---|
| 基于属性规则 | 用某个属性值划分 | 用”姓的首字母”分块 |
| 基于倒排索引(VMI) | 清华提出,先建倒排索引再分块 | 见下 |
8.3 VMI 算法(清华)
3 个向量:
- 名称向量:分词 + 词频向量(基于
rdfs:label) - 邻居信息向量 NBI:互为邻居的实例(互为属性值)
- 本地描述向量 LD:描述性属性(性别、邮件)
分块规则:
- 规则 1:名称向量维数都 > 5,且至少 2 个关键词相同
- 规则 2:名称向量维数都 < 5,且至少 1 个关键词相同
- 规则 3:虚拟文档向量至少 1 个相同关键词
匹配:加权求和名称相似度 + 虚拟文档相似度 → 阈值过滤。
9. 基于机器学习的实例匹配
9.1 AMiner 作者消歧(KDD 2018)
任务:同名作者消歧
3 个步骤:
① 全局度量学习(Global Metric Learning):
- Word2vec 获得每篇文章每特征的嵌入
- 文章嵌入 ( = IDF 权重)
- 三元组损失:正对 靠近、负对 远离
② 局部链接图(Local Linkage Graph):
- 构建图
- 节点 = 文章,边 = 共享特征相似度 阈值
- 图自编码器 → 局部表示
③ 聚类:
- 聚类数目 h,每个聚类 = 1 个真实作者
9.2 实体对齐案例:OAG(清华 KDD 2019)
OAG(Open Academic Graph) = MAG(微软学术) + AMiner(清华) 合并,亿级。
挑战(3 个):
- 实体异构:作者名格式不同(“Quoc Le” vs “Le, Quoc”)、发表地点全称/缩写
- 实体歧义:AMiner 中 10000+ 个 “Jing Zhang”,MAG 中 7000+
- 大规模匹配:各自 ~2 亿篇论文
LinKG 框架(3 个匹配模块):
| 模块 | 方法 |
|---|---|
| 出版地点匹配 | 全名直接匹配 + LSTM 处理语序倒置和多前缀/后缀 |
| 论文匹配 | LSH(局部敏感哈希)快速匹配 + CNN 精确匹配(相似度矩阵 → 卷积 → MLP → softmax) |
| 作者匹配 | HGAT(异构图注意力网络)在子图上判断作者对是否匹配 |
9.3 重要概念:HGAT
HGAT = Heterogeneous Graph Attention Network 异构图注意力网络——在异构图(不同类型节点和边)上用注意力机制学节点表示。
10. 知识融合案例
10.1 学术知识图谱融合
- Schema 局部(学术活动、论文信息、学者族谱)
- 解决方案:基于半监督学习的大规模学术 KG 消解
- 候选匹配集合的确定:名字消解判定规则
- 对结构信息的利用:学术社群发现
- 基于学术社群的自学习消解
- KDD-CUP 2013 评测结果
10.2 OpenKG 百科知识融合
- OpenKG 收录 291 个中文数据集
- 已融合 Zhishi.me、CN-DBpedia、PKU-PIE、Belief Engine
- 链接结果:
http://openkg.cn/dataset/links-encyclopedia
11. 本章脑图
知识图谱融合
├── 异构(语言层+模型层)
│ ├── 语言层:语法/逻辑/元语/表达
│ └── 模型层:概念化/解释
├── 本体层融合
│ ├── 本体映射(导入→发现→表示)
│ └── 3 类算法
│ ├── 术语(字符串相似度)
│ │ ├── 最小编辑距离
│ │ ├── 汉明距离
│ │ ├── Dice 系数 = 2|S∩T|/(|S|+|T|)
│ │ └── Jaccard 系数 = |S∩T|/|S∪T|
│ ├── 结构(相似度传播 / Fixpoint)
│ └── 实例
│
└── 实例层融合
├── 术语:指代/匹配/消歧/链接/对齐
├── 3 类方法
│ ├── 规则(属性等价推导)
│ │ └── 文本匹配:TF-IDF + 余弦
│ ├── 分治(分块)
│ │ └── VMI:倒排索引+名称/虚拟文档向量
│ └── 机器学习
│ ├── AMiner 消歧:全局度量+局部链接图+聚类
│ └── OAG 实体对齐:LinKG 3 模块
│ ├── 出版地点:LSTM
│ ├── 论文:LSH+CNN
│ └── 作者:HGAT
└── 案例:学术 KG 融合、OpenKG 百科