一、实体关系抽取概述

什么是实体关系抽取

实体关系抽取,说白了就是让机器看懂文本里「谁和谁是什么关系」。

举个例子,给你一句话:

「马云创立了阿里巴巴」

人一眼就能看出来——「马云」和「阿里巴巴」之间是「创始人」的关系。但机器不行,它看到的只是一堆字符。实体关系抽取要做的,就是教会机器:

  • 实体识别:找出「马云」(人)和「阿里巴巴」(公司)
  • 关系分类:判断两者之间是「创立」关系

我习惯把这件事拆成两个子任务:命名实体识别(NER)关系分类(RC)。前者负责「谁在哪」,后者负责「他们怎么了」。两个任务串起来,才算完整的抽取流程。

核心定义:实体关系抽取 = 从非结构化文本中,自动识别出实体对,并判定它们之间的语义关系。

应用场景

你可能会问:这东西到底能干嘛?我挑三个最典型的场景说说。

知识图谱

知识图谱本质上就是一张巨大的「实体-关系-实体」网络。没有关系抽取,图谱就只剩下一堆孤立的节点,连不起来。

我记得有一次帮客户构建金融知识图谱,光「公司」和「高管」这两个实体类型,就涉及「董事长」「CEO」「监事」「独立董事」等十几种关系。手动标注?不现实。最后还是靠关系抽取模型自动搞定。

信息检索

传统搜索引擎靠关键词匹配,你搜「马云的公司」,它可能返回一堆包含「马云」和「公司」的页面。但如果你做了关系抽取,就能直接回答:「阿里巴巴」。这就是从「文档检索」到「知识问答」的跃迁。

问答系统

现在的智能问答,很多都依赖关系抽取。用户问「《三体》的作者是谁?」,系统先抽取出「《三体》」这个实体,再找到「作者」这个关系,最后返回「刘慈欣」。整个过程,关系抽取是中间的关键一环。

场景 典型应用 关系抽取的作用
知识图谱 企业知识库、百科图谱 构建实体间的语义连接
信息检索 智能搜索、文档理解 从关键词匹配升级为语义匹配
问答系统 智能客服、知识问答 定位问题中的实体与关系

技术发展脉络

关系抽取这条路,走了快二十年。我把它分成三个阶段来讲。

第一阶段:规则驱动时代

早期做关系抽取,全靠人工写规则。比如:

如果文本匹配模式:「[人物] 创立了 [组织]」
则关系 = 「创始人」

这种方法的优点是精准,缺点是累死人。我曾经接手过一个项目,前辈写了3000多条规则,覆盖了50多种关系。但换一个领域(比如从新闻换到医疗),规则基本全废,得重写。

避坑指南:规则方法适合小规模、领域固定的场景。如果你只有几百条数据,写规则反而比训练模型快。但一旦数据量上来,规则维护成本会指数级增长。

第二阶段:统计机器学习时代

后来大家发现,与其手写规则,不如让模型从数据里学。这个阶段的主流方法包括:

  • 基于特征的方法:提取词性、句法路径、距离等特征,喂给SVM或最大熵模型
  • 基于核函数的方法:利用树核、图核来捕捉结构信息

我记得2015年左右做中文关系抽取,特征工程占了80%的工作量。词性标注、依存句法分析、实体位置编码……每加一个特征,模型效果可能提升0.5个点,但代码复杂度翻倍。嗯,那时候的痛,现在想想还挺怀念的。

第三阶段:深度学习时代

2015年以后,深度学习彻底改变了关系抽取的玩法。核心变化是:不再需要手工设计特征,模型自己学。

几个关键里程碑:

  • CNN + 位置嵌入:最早把卷积网络用在关系抽取上,效果碾压传统方法
  • PCNN + 远程监督:利用远程监督自动生成训练数据,解决了标注数据不足的问题
  • BERT 时代:预训练模型一统天下,关系抽取变成了「BERT + 分类头」的简单结构

现在的主流做法,基本就是拿预训练模型做编码,再加一个关系分类器。你想想看,以前要花几周做特征工程,现在几行代码就能跑出不错的效果。技术迭代就是这么残酷又迷人。

注意:深度学习虽然省去了特征工程,但对数据量和计算资源的要求更高。我见过不少团队,模型选得花里胡哨,结果训练数据只有几百条,过拟合得一塌糊涂。选方法之前,先看看自己手里有什么牌。

本章知识体系

下面这张图,是我梳理的实体关系抽取整体知识框架。你可以把它当作整个课程的地图。

实体关系抽取知识体系 实体关系抽取 命名实体识别 (NER) 关系分类 (RC) 技术发展脉络 规则驱动 人工编写模式 统计机器学习 特征工程 + SVM 深度学习 CNN / BERT / 预训练 应用场景 知识图谱 信息检索 问答系统

这张图把整个知识体系串起来了。从上到下看:先理解任务定义,再拆解成两个子任务,然后沿着技术演进路线走,最后落到具体应用场景。后面的章节,我会按照这个框架一步步展开。

一句话总结:实体关系抽取,就是从文本中抽「实体」和「关系」,技术从规则走到深度学习,应用覆盖知识图谱、搜索和问答。这条路我走了快十年,越走越觉得有意思。


专注资料整理