知识库构建:Freebase、Wikidata简介、如何构建领域知识库、知识库对齐技术
大家好,我是你们的老朋友。今天我们来聊聊关系抽取里一个绕不开的话题——知识库构建。
说实话,我刚入行那会儿,总觉得关系抽取就是调模型、刷榜单。后来在工业界做项目才发现,没有高质量的知识库,再牛的模型也是空中楼阁。你想想看,远程监督的核心假设是什么?就是利用已有知识库去自动标注文本。知识库要是歪了,标注出来的数据能靠谱吗?
一、通用知识库:Freebase 与 Wikidata
先说说两个最出名的通用知识库。我当年做实体链接时,跟它们打过不少交道。
1. Freebase
Freebase 曾经是知识图谱界的扛把子。它由 Metaweb 公司创建,后来被 Google 收购,最终在 2016 年正式关闭,数据迁移到了 Wikidata。
它的核心特点:
- 三元组结构:(实体, 属性, 值) 或 (实体, 关系, 实体)
- 类型系统:每个实体都有一个 /type/object/type 属性
- 唯一标识:每个实体用 MID(Machine ID)标识,比如 /m/0c6m
我记得有一次做远程监督数据生成,直接拿 Freebase 的 dump 文件来用。结果发现一个问题——Freebase 的关系定义太细了。比如“出生地”这个关系,它分成了 /people/person/place_of_birth、/people/deceased_person/place_of_birth 等好几种。这导致标注时很多文本匹配不上。
2. Wikidata
Wikidata 是 Freebase 的继承者,由 Wikimedia 基金会维护。它现在是最大的开放知识库之一。
它的核心特点:
- Q 编号:实体用 Q 编号,比如 Q42 是 Douglas Adams
- P 编号:属性用 P 编号,比如 P569 是出生日期
- 多语言支持:天然支持多语言标签和描述
- 版本控制:每次修改都有记录,可回溯
我个人更喜欢用 Wikidata。为什么?因为它有丰富的属性约束。比如“出生地”这个属性,它规定了值必须是“地点”类型的实体。这在做远程监督时能帮我们过滤掉很多噪声。
二、如何构建领域知识库
通用知识库虽好,但很多场景下我们需要构建领域知识库。比如金融领域的公司关系、医疗领域的药物相互作用等。
构建领域知识库,我一般分三步走:
- 数据采集:从结构化数据源(数据库、Excel)和非结构化数据源(文档、网页)中提取
- 实体识别:用命名实体识别(NER)技术抽取出领域实体
- 关系抽取:用规则或模型抽取实体间的关系
这里我重点说说数据采集这一步。很多人一上来就爬网页,结果数据质量很差。我的习惯是:
- 优先找结构化数据:比如行业数据库、政府公开数据、企业年报
- 次选半结构化数据:比如维基百科的信息框(Infobox)、JSON 格式的 API 返回
- 最后才考虑纯文本:需要做大量的清洗和标注
举个例子,我之前做金融知识库时,直接从证监会官网下载上市公司年报。年报里有结构化的“关联交易”表格,直接解析就能拿到“子公司-母公司”关系。这比从文本里抽要靠谱得多。
三、知识库对齐技术
知识库对齐,说白了就是把不同来源的知识库合并成一个。比如你有一个中文的金融知识库,还有一个英文的 Wikidata,怎么把它们对齐?
对齐的核心任务有两个:
- 实体对齐:判断两个实体是否指向同一个真实世界对象
- 关系对齐:判断两个关系是否语义等价
1. 实体对齐
实体对齐的方法,我总结为三代:
| 代际 | 方法 | 特点 |
|---|---|---|
| 第一代 | 基于字符串匹配 | 简单快速,但无法处理别名、缩写 |
| 第二代 | 基于属性相似度 | 利用属性值(如出生日期、国籍)做匹配 |
| 第三代 | 基于图嵌入 | 利用知识图谱的结构信息做匹配 |
我个人最常用的是混合方法。先用字符串匹配快速过滤,再用图嵌入做精细匹配。这样既保证了速度,又保证了准确率。
2. 关系对齐
关系对齐比实体对齐更难。为什么?因为同一个关系在不同知识库里可能有不同的名字。比如“出生地”在 Freebase 里叫 /people/person/place_of_birth,在 Wikidata 里叫 P19。
我的做法是:
- 基于标签匹配:利用关系的标签(如“出生地”、“place of birth”)做字符串匹配
- 基于属性约束:比较关系的定义域和值域。如果两个关系的定义域和值域都相似,那它们很可能等价
- 基于实例验证:随机抽取一些实体对,看两个关系是否同时成立
嗯,这里要注意一点:关系对齐不是一次性的工作。随着知识库的更新,之前对齐的关系可能不再成立。我建议定期做重新对齐,比如每季度一次。
四、知识库构建的整体流程
说了这么多,我画了一张图来总结知识库构建的整体流程。这张图是我做项目时常用的框架,希望能帮你理清思路。
这张图展示了我做知识库构建时的标准流程。从数据采集开始,到实体识别、关系抽取,再到知识库对齐和存储,最后应用到远程监督等任务中。每一步都有坑,每一步也都有技巧。
好了,关于知识库构建的内容就聊到这里。记住一句话:知识库是远程监督的基石。花时间把知识库做好,后面的工作会轻松很多。