2. 知识图谱基础概念:实体、关系、属性与三元组

好,咱们正式开始干活之前,得先把地基打牢。

你想想看,知识图谱听起来很高大上,什么图数据库、语义网络、推理引擎... 但其实它的核心零件特别简单。说白了,就是几个基本概念拼起来的乐高积木。我刚开始接触知识图谱的时候,也觉得这东西玄乎,后来亲手搭了几个项目才发现,万变不离其宗。

今天这一章,我们就把这几个核心概念掰开揉碎了讲清楚。掌握了它们,你再看后面 COVID-19 药物图谱的搭建,就会觉得特别顺。

2.1 实体:图谱里的“主角”

实体,就是世界上的具体事物。一个人、一家公司、一种药、一个基因,只要是你想描述的对象,都可以叫实体。

在 COVID-19 这个场景里,实体很容易找。比如:

  • 药物:瑞德西韦、帕昔洛韦、法匹拉韦
  • 疾病:COVID-19、普通感冒
  • 靶点:3CL蛋白酶、RNA聚合酶
  • 基因:ACE2、TMPRSS2

每个实体在知识图谱里都有一个唯一ID。就像每个人都有身份证号,你不能重复。我在项目中遇到过不少初学者,直接用中文名称当ID,结果「新冠」和「新型冠状病毒肺炎」指代同一个东西,但在系统里被当成了两个实体。这可是个坑。

实际操练:构建图谱前,最好先列一个「实体类型清单」。比如药物、疾病、基因、临床试验... 给每个类型定一个编号前缀(如 DRUG_001, DISEASE_001),能省很多去重麻烦。

2.2 关系:实体之间的“纽带”

实体孤零零地放着没意义。它们必须通过关系连接起来,才能形成知识。

关系是有方向的。比如:

  • 「瑞德西韦」治疗 「COVID-19」
  • 「SARS-CoV-2」导致 「COVID-19」
  • 「瑞德西韦」靶向 「RNA聚合酶」

我建议你一开始就把关系类型定义清楚。不要贪多,常用的就那几种:治疗、导致、靶向、属于、参与。我以前犯过一个错,把「靶向」和「抑制」混在一起用,结果后面做推理查询时,逻辑全乱了。

还一个容易忽略的点:关系可以带属性。比如「瑞德西韦 治疗 COVID-19」,这个关系可以加一个「证据等级」属性,值是「临床试验 III 期」。这样图谱就不只是一个结构,而是一张带权重的信息网。

2.3 属性:实体的“特征”

属性是用来描述实体的。实体是“谁”,属性就是“它有什么特点”。

拿「瑞德西韦」举例:

实体ID: DRUG_001
名称: 瑞德西韦
化学式: C27H35N6O8P
分子量: 602.58 g/mol
作用机制: RNA聚合酶抑制剂
获批状态: 已批准

看到没?这些特征都是属性。注意,属性没方向,它只是贴在实体上的键值对。

注意区分:属性 vs 关系

  • 属性:描述实体本身特征,比如颜色、重量、批准日期
  • 关系:连接两个不同实体,比如A治疗B、A靶向B

这个界限有时会模糊。我的经验是:如果这个信息指向另一个实体,它就是关系;如果只是实体自身的描述,就是属性。

2.4 三元组:知识的最小单元

好了,前三个概念合在一起,就构成了知识图谱最核心的构成单元——三元组。

三元组的结构特别简单:

(头实体, 关系, 尾实体)

比如:

(瑞德西韦, 治疗, COVID-19)
(COVID-19, 由引起, SARS-CoV-2)
(SARS-CoV-2, 入侵, ACE2受体)

一批三元组连在一起,就变成了一张网。每个实体是节点,关系是连线。就这么简单。

我遇到过一个真实案例:一个药物图谱项目,从文献里抽了 200 多万个三元组。但质量很差,因为很多三元组里的实体名称不一致。后来我们花了两周做实体对齐,把「COVID-19」「2019-nCoV」「新冠病毒」统一成一个ID。这个活儿特别脏,但是绕不开。

2.5 小结与对比表格

我觉得一个表格可以帮你把这几个概念一眼看透:

概念 定义 示例 是否带方向
实体 世界上的具体事物 瑞德西韦、COVID-19、ACE2 无方向
关系 实体之间的语义连接 治疗、靶向、导致 有方向
属性 实体的特征描述 分子量、获批状态、颜色 无方向,附属
三元组 头实体→关系→尾实体 (瑞德西韦, 治疗, COVID-19) 复合结构

2.6 知识图谱的核心结构图

下面这张图,我把核心概念和它们的关系画出来了。你重点关注实体怎么通过关系连成网,属性怎么附着在实体上。

知识图谱三元组与核心概念结构图 知识图谱核心概念结构图 头实体 瑞德西韦 关系 治疗 尾实体 COVID-19 三元组 = (头实体, 关系, 尾实体) (瑞德西韦, 治疗, COVID-19) 属性 分子量: 602.58 附属 更多实体 SARS-CoV-2 网状扩展 图谱 = 三元组 + 三元组 + ... 形成知识网络

这张图里,蓝色的「头实体」通过红色的「关系」连接到绿色的「尾实体」,形成一个三元组。紫色的「属性」用虚线挂接到实体上。橙色的「更多实体」表示这个结构可以不断延伸,最终形成一张复杂的知识网络。

一句话总结:知识图谱就是把「张三认识李四」「李四住北京」这种咱们平时说话的方式,翻译成计算机能读懂的 (实体, 关系, 实体) 格式。你平时泡的微博、知乎,底层也是这么存的。