非结构化知识抽取

Views: --

对应 PPT:第5讲 重点:NER/RE/EE 的方法演进,特别是序列标注、CRF、BiLSTM+CRF、远程监督。


1. 概述

1.1 非结构化数据回顾

  • 数据结构不规则、不完整,没有预定义模型
  • 包括:所有格式的办公文档、文本、图片、音频、视频
  • 挑战:是当前知识图谱构建的技术瓶颈

1.2 三大子任务

  1. 实体识别(NER)
  2. 关系抽取(RE)
  3. 事件抽取(EE)

2. NER 方法演进(必背时间线)

早期(1950s~1990s)    统计学习(1990s~2010s)    深度学习(2010s~)    当前热点(2020s~)
   ↓                         ↓                       ↓                    ↓
基于规则                HMM / CRF / MEMM          RNN-CRF / CNN-CRF     注意力/迁移学习/大模型
基于词典                                       BiLSTM-CRF              LLM-based

速记:规则 → 词典 → 统计 → 深度学习 → 大模型


3. 早期方法:基于词典与规则

思路

  • 由领域专家手工编写规则构造实体词典
  • 将规则/词典与文本字符串匹配,识别命名实体

优缺点

优点缺点
小数据集上准确率/召回率高需大量专家 + 领域知识
跨领域难以移植
数据集增大,规则构建周期变长

4. 统计学习方法:HMM / CRF

4.1 核心思想

将实体识别转化为序列标注问题:当前标签的预测既与当前输入特征相关,也与上下文的预测标签相关。

4.2 标注体系(必背 3 套)

体系标记含义
BIOB-X / I-X / OB=实体首词,I=实体内部,O=外部
IOI-X / O简化版(不区分 B/I)
BIOESB-X / I-X / E-X / S-X / OB=开始、I=内部、E=结束、S=单字实体、O=外部

B-ORG = Begin-Organization(组织名首词),I-ORG = Inside-Organization(组织名内部)。

4.3 特征抽取

特征类型内容
单词级别特征是否首字母大写、是否包含数字、词性(POS)
词典特征依赖外部词典(地名列表、组织名列表、姓氏等)

没有统一原则,大多靠专家经验 + 实验调优。

4.4 特征抽取示例

文本:“谈到亚洲金融,董建华说”

词性边界姓氏人名指示词标签
VBNYO
VINYO
nsBNNB-location
nsINNI-location
NBYNO
NINNO
XWNNO
NrBYNB-Person
NrINNI-Person
NrINNI-Person
VWNYO

4.5 CRF(条件随机场)

条件随机场定义

P(YvX,Yw,wv)=P(YvX,Yw,wv)P(Y_v | X, Y_w, w \neq v) = P(Y_v | X, Y_w, w \sim v)

节点 vv 的标签只依赖输入序列 XXvv 相邻的节点 ww

线性 CRF(NER 用):假设标签序列是链式结构

P(YiX,Y1,...,Yi1,Yi+1,...,Yn)=P(YiX,Yi1,Yi+1)P(Y_i | X, Y_1, ..., Y_{i-1}, Y_{i+1}, ..., Y_n) = P(Y_i | X, Y_{i-1}, Y_{i+1})

P(Yi)P(Y_i) 取决于输入 XX相邻的标签 Yi1,Yi+1Y_{i-1}, Y_{i+1}

CRF 公式

P(YX)=exp(jiwjfj(yi1,yi,X,i))Yexp(jiwjfj(yi1,yi,X,i))P(Y | X) = \frac{\exp\left(\sum_j \sum_i w_j f_j(y_{i-1}, y_i, X, i)\right)}{\sum_{Y'} \exp\left(\sum_j \sum_i w_j f_j(y_{i-1}, y'_i, X, i)\right)}
  • fjf_j = 特征函数
  • wjw_j = 特征函数权值(训练学习)
  • YY' = 任意可能的标签序列(分母是归一化项)

预测:找 argmax P(YX,wj)P(Y | X, w_j)

4.6 HMM vs CRF 关键差异

维度HMMCRF
模型类型生成式判别式
独立性假设强(观测独立)无(全局特征)
特征工程灵活
NER 效果一般更优

5. 深度学习方法:BiLSTM + CRF

5.1 总体框架(必背 3 步)

① 分布式表示(Embedding): 词 → 低维稠密实值向量
② 上下文编码(BiLSTM):   双向捕获上下文
③ 标签解码(CRF):         加入标签转移约束

    输出最优标签序列

5.2 第 1 步:分布式表示(Word2Vec)

Word2Vec(Google, 2013) = 词向量模型,2 个变体:

  • CBOW(Continuous Bag-of-Words):用上下文预测中心词
  • Skip-gram:用中心词预测上下文

CBOW 示例

“The quick brown fox jumps over the lazy dog” 输入 [quick, brown, jumps, over] → 预测 fox

CBOW 流程:

① one-hot 编码每个上下文词(V 维,V = 词表大小)
② × 共享的输入权重矩阵 W(V×N)→ 词向量(N 维)
③ 求平均 → 隐层向量(1×N)
④ × 输出权重矩阵 W'(N×V)→ 向量(1×V)
⑤ softmax → 概率分布
⑥ 与真实 one-hot 比较 → 交叉熵损失 → 反向传播更新 W 和 W'

训练完成后,任意词的 one-hot × 矩阵 W = 它的词向量

5.3 第 2 步:上下文编码(BiLSTM)

LSTM(长短期记忆网络)

  • 解决 RNN 的长程依赖 + 梯度消失问题
  • 3 个门控:遗忘门、输入门、输出门
  • 核心:细胞状态 CtC_t 沿时间线性传递

BiLSTM(双向 LSTM)

Pierre → Forward LSTM → h1
loves  → Forward LSTM → h2   →  h1+h2(按位求和)= Pierre 表示
Paris  → Forward LSTM → h3

Pierre ← Backward LSTM ← h1'
loves  ← Backward LSTM ← h2' →  h1'+h2' = Pierre 表示
Paris  ← Backward LSTM ← h3'

双向 → 每个词既有左上下文也有右上下文信息。

5.4 第 3 步:标签解码(CRF)

为什么 BiLSTM 后还要加 CRF?

  • BiLSTM 独立预测每个标签,不考虑标签之间的关系
  • 预测可能不合理(如 B-Person I-Person B-Location,PER 后面直接接 LOC,无 O 间隔)
  • CRF 加约束:学习标签转移矩阵,让无效序列得分变低
Pierre   loves   Paris
B-PER    O       B-LOC

路径 "PER-O-LOC" 得分:31(合法)
路径 "PER-PER-LOC" 得分:26(非法,CRF 压低)

5.5 BiLSTM+CRF 优势

方法优势劣势
只 CRF学习标签依赖需手工定义大量特征模板
只 BiLSTM自动学特征忽略标签依赖,输出可能非法
BiLSTM+CRF自动学特征 + 学习标签依赖较慢

金标准组合:NER 任务的首选基线就是 BiLSTM+CRF。


6. 关系抽取(RE)方法

6.1 任务定义

从文本中抽取两个/多个实体之间的语义关系。通常在 NER 之后做。

例:[王思聪] 是万达集团董事长 [王健林] 的独子王思聪 -父子关系→ 王健林

6.2 方法分类(3 大类)

方法思路优点缺点
基于模板专家写规则/模板小规模快难扩展、难移植
基于深度学习NER + RE 模型主流需大量标注
基于弱监督远程监督减少标注有噪声

6.3 基于模板的方法

模板构造思路

  • 例:抽取”夫妻”关系
  • 观察例句:
    • [姚明] 与妻子 [叶莉] 还有女儿 ... → 模板1:[X] 与妻子 [Y] ...
    • [徐峥] 老婆 [陶虹] 晒新写真 → 模板2:[X] 老婆 [Y] ...
  • 用模板匹配新句子

6.4 基于深度学习的方法(2 大路线)

① 流水线方法(Pipelined):NER 和 RE 分离,RE 在 NER 结果上做。

模型年份特点
CR-CNN20154 层:输入/卷积/池化/全连接,CNN + Ranking
Attention BiLSTM2016 ACLBiLSTM + Attention,5 层:输入/Embedding/BiLSTM/Attention/Softmax

② 联合抽取方法(Joint):NER 和 RE 在统一模型中共同优化。

经典工作:Miwa & Bansal 2016 ACL:词嵌入 + 序列层 BiLSTM + 依存层 BiLSTM(基于依赖子树)。

优势:避免错误积累——流水线方法的 NER 错误会传到 RE,联合抽取则没有这个问题。

流水线 vs 联合

维度流水线联合
错误积累(NER 错 → RE 错)
复杂度
效果一般更优

6.5 基于弱监督的方法:远程监督

核心假设最常考):

若两个实体在 KG 中存在某种关系,则包含这两个实体的句子均表达了这种关系

例子

  • KG 里有 (乔布斯, 创始人, 苹果公司)
  • 句子”乔布斯是苹果公司的联合创始人和 CEO” → 自动标注为”创始人”关系训练正例

步骤

① 从 KG 抽取存在目标关系的实体对
② 从非结构化文本中抽取含实体对的句子作为训练样例
③ 训练监督学习模型进行关系抽取
优点缺点
减少人工标注工作量引入大量噪声(句子可能不真表达该关系)

降噪方法(APCNNs, AAAI 2017)

  • PCNNs:分段最大池化(Piecewise max-pooling),按实体位置分 3 段池化
    • 输入:词向量(Word2Vec)+ 位置向量(当前词到目标实体的相对距离)
    • 操作:卷积 + 分段最大池化 → 句子特征向量
  • 句子级注意力:用注意力机制加权聚合多个样例句子的特征
    • 多示例学习(Multi-Instance Learning):同一关系的样例句子组成”样例包”,关系分类在样例包特征上做

核心思想:用注意力让”表达关系的句子”权重高,让”噪声句子”权重低。


7. 事件抽取(EE)

7.1 任务定义

识别文本中关于事件的信息,结构化呈现(时间、地点、原因、参与者等)。

7.2 2 个子任务

① 识别事件触发词并判断事件类型
② 抽取事件元素并判断角色

7.3 流水线方法

DMCNN(Yubo Chen, ACL 2015):

第一阶段:触发词分类
  - DMCNN 判每个词是否触发词
  - 若是触发词 → 第二阶段

第二阶段:论元分类
  - 类似 DMCNN,识别该触发词对应的论元 + 角色

DMCNN 关键设计:

  • Dynamic Multi-pooling:卷积后按触发词和候选论元位置切分成 3 部分,每部分 max pooling
    • 为什么?避免”句子级最大池化”丢失触发词-论元之间的局部信息

MOGANED(EMNLP-IJCNLP 2019,触发词检测):

  • 多阶图注意力网络:把句法图分成 3 个子图(along/rev/loop)
  • Attention Aggregation:聚合各阶图表示

Implicit Event Argument Detection(ACL 2020):

  • 解决”事件元素与触发词不在同一句子”的问题(隐式论元)
  • 3 模块:BERT Encoder + Biaffine Role Scorer + Head-to-Span Expander
  • 两步:先 head-word detection,再 head-to-span expansion

7.4 联合抽取方法

基于图信息聚合的联合事件抽取(EMNLP 2018):

  • GCN 层:基于句法分析树,把句子变成有向图
  • Joint Extraction 层
    • 触发词分类:self-attention + softmax
    • 论元分类:对触发词和实体的表示拼接 + softmax
    • 输出 yijay_{ij}^a = 第 j 个实体在第 i 个触发词事件中的角色

7.5 流水线 vs 联合

维度流水线联合
模型数多个分类器单一模型
误差传播
性能一般更优

8. 本章脑图

非结构化知识抽取
├── NER 方法演进
│   ├── 早期:规则/词典
│   ├── 统计:HMM / CRF(BIO/BIOES 标注)
│   │   ├── BIO:B-X(首词)、I-X(内部)、O(外部)
│   │   ├── BIOES:+ E-X(结束)、S-X(单字)
│   │   └── CRF:判别式 + 标签转移约束
│   └── 深度:BiLSTM+CRF
│       ├── ① Embedding(Word2Vec CBOW/Skip-gram)
│       ├── ② 上下文编码(BiLSTM 双向)
│       └── ③ 标签解码(CRF 加约束)

├── 关系抽取 RE
│   ├── 3 大方法
│   │   ├── 模板(小规模快,难扩展)
│   │   ├── 深度学习(流水线/联合)
│   │   └── 弱监督(远程监督)
│   ├── 流水线:CR-CNN / Attention BiLSTM
│   ├── 联合:Miwa 2016(避免错误积累)
│   └── 远程监督
│       ├── 假设:KG 中有 R,句子都表达 R
│       ├── 优点:减少标注
│       └── 降噪:APCNNs(PCNNs + 注意力)

└── 事件抽取 EE
    ├── 2 子任务:触发词分类 + 论元角色分类
    ├── 流水线:DMCNN / MOGANED / Implicit Argument
    │   └── DMCNN 关键:Dynamic Multi-pooling
    └── 联合:GCN + Attention + Softmax