3. 生物医学实体与关系类型体系
在生物医学文本中,实体与关系构成了知识的最小骨架。实体是文本里被命名的“东西”,关系则是这些“东西”之间被断言的联系。实体关系抽取工程的第一步,不是急着上模型,而是先把“我们要抽什么”定义清楚——也就是建立一套可操作的实体类型体系与关系类型体系。类型体系一旦含糊,标注就会漂移,模型学到的边界也会随之模糊。
实体类型:从命名实体到语义角色
生物医学实体类型通常围绕基因、蛋白、疾病、药物、变异这几类核心对象展开,但它们在文本中的表现形式差异很大。基因常以符号出现,如 TP53、BRCA1;蛋白既可能写成基因符号,也可能写成全称,如 p53 protein;疾病既有标准术语,也有缩写和俗称,如 non-small cell lung cancer 与 NSCLC;药物包括通用名、商品名和化学名;变异则更复杂,可能是 p.V600E 这样的氨基酸替换,也可能是 c.1799T>A 这样的核苷酸变化,甚至只是 exon 19 deletion 这样的描述。
因此,实体类型体系不能只列类别名,还要为每类给出边界说明和典型示例。一个实用的做法是采用“类型—子类型—示例”的三层描述。例如变异可以细分为点突变、插入、缺失、融合、拷贝数变异;药物可以细分为小分子、抗体、疫苗、基因治疗产品。子类型不是必须全部抽取,但它能帮助标注者判断一个提及到底属于哪一类,减少“基因还是蛋白”这类高频歧义。
关系类型:方向、语义与触发词
关系类型体系比实体类型更容易被低估。生物医学关系往往带有方向性和条件性,例如“A 导致 B”与“B 导致 A”完全不同,“A 治疗 B”和“A 与 B 相关”在临床证据强度上也有本质差异。常见关系包括:基因—疾病关联、蛋白—蛋白相互作用、药物—靶点结合、药物—疾病治疗、变异—疾病致病、变异—药物响应、基因—蛋白编码等。
定义关系时,至少要明确四件事:头实体类型、尾实体类型、关系方向、触发词或句法模式。以“治疗”关系为例,头实体通常是药物或治疗手段,尾实体是疾病,方向为“药物 → 疾病”,触发词包括 treats、is used for、effective in、therapy for 等。再如“相互作用”关系,头尾通常都是蛋白或基因,方向可以是对称的,触发词包括 interacts with、binds to、forms a complex with。
下面这张图展示了本节核心的实体类型与关系类型体系,以及它们之间的合法连接方式。图中用不同颜色区分实体类别,用带箭头的连线表示关系方向,箭头旁标注关系类型和典型触发词。
类型体系落地:从定义到标注规范
有了类型清单,下一步是把它变成可执行的标注规范。规范中至少应包含:类型名称、定义、正例、反例、边界规则。以“基因—疾病关联”为例,正例是“BRCA1 mutations are associated with breast cancer”,反例是“BRCA1 and breast cancer were both studied in this cohort”——后者只是共现,没有断言关联。边界规则要说明:如果句子只提到“研究”“检测”“表达量”而不含关联断言,就不应标注为关联关系。
另一个关键问题是嵌套与重叠。一个提及可能同时是基因和蛋白,例如 EGFR 在“EGFR mutation”中是基因,在“EGFR inhibitor”中可能指蛋白。此时不应强行二选一,而应允许同一提及在不同上下文中被赋予不同实体类型,或在标注中记录“歧义标记”,供后续模型学习上下文消歧。
| 关系类型 | 头实体 | 尾实体 | 方向 | 典型触发词 |
|---|---|---|---|---|
| 编码 | 基因 | 蛋白 | 基因 → 蛋白 | encodes, produces |
| 相互作用 | 蛋白/基因 | 蛋白/基因 | 对称 | interacts with, binds to |
| 关联 | 基因/蛋白 | 疾病 | 单向 | associated with, linked to |
| 治疗 | 药物 | 疾病 | 药物 → 疾病 | treats, effective in |
| 导致 | 变异 | 疾病 | 变异 → 疾病 | causes, leads to |
| 靶向 | 药物 | 蛋白 | 药物 → 蛋白 | targets, inhibits |
| 响应 | 变异 | 药物 | 变异 → 药物 | responds to, sensitivity |
常见陷阱与工程建议
第一,不要把“关系类型”和“触发词”混为一谈。同一个关系可以由多个触发词表达,同一个触发词也可能对应不同关系,例如 inhibits 既可能是药物靶向蛋白,也可能是蛋白抑制另一个蛋白。第二,方向性关系必须显式定义,不能依赖模型自行猜测。第三,实体类型体系不宜过细,初期建议控制在 5~8 类核心实体、8~12 类核心关系,待标注一致性稳定后再扩展子类型。
最后,类型体系不是一次成型的文档,而应随语料观察持续迭代。建议每完成一轮标注,就统计一次“其他”类占比和歧义提及频次,把高频歧义反哺到定义中。只有类型体系稳定、边界清晰,后续的模型训练和评估才有可靠的基础。