通用信息抽取(IE)与序列标注
概念
信息抽取 lnformation Extraction
分类
信息抽取:非结构化文本到结构化知识的桥梁,是nlp里的任务
任务包括:
- 命名实体识别(NER):文本中识别出来实体,分类出类型
- 关系抽取(RE):在实体识别后,找出它们之间的关系类型和关系结构
- 事件抽取(EE):事件抽取依赖实体抽取和关系抽取
挑战
- 实体嵌套
- 非连续实体
- Schema依赖与零样本:依赖于预先定义的标签集
序列标注协议
标注范式:将抽取任务转化为对序列中每个Token的分类任务
- BIO:Begin, Inside, Outside
- BILOU:Begin, Inside, Last, Outside, Unit
应用于:中文分词、词性标注、NER、词法分析、文本加标点
实现技术
- 深度学习
- 条件随机场(CRF)
- 发射矩阵:每个词对应什么标签的得分表
- 转移矩阵:从一个标签转移到另一个标签的得分
解码方法
模型已经给出了每个Token的标签得分(发射矩阵)和标签间的转移规则(转移矩阵),解码算法要做的就是 筛选,找到总得分最高的最优序列
- 穷举
- 维特比解码:“局部最优累积”实现“全局最优”
- 束搜索:贪心策略,每一步仅保留“得分最高的B个候选序列”,B为束宽,减少计算量

范式转移
从判别式标注到生成式抽取
- 判别式:受限于预定义标签集
- 生成式:直接生成结构化文本,跨领域泛化,Schema-free
代码
所用库函数
1 | import random |
IE数据构造
我们用“合同/公告/票据”风格文本,实体类型包括:
ORG机构DATE日期MONEY金额INVOICE_NO票据号DOC_TYPE文档类型
1 | # 每条样本 token(已分词)+实体跨度(start,end,label) |
BIO/BILOU标签体系
1 | # bio |
组装Dataset和标签映射
1 | """ |
Tokenization+Label对齐
切分子词后,非首+特殊:-100,避免参与损失
对齐:把原来的标签对应到更小单位上
原词序列: 张三 在 北京 工作
1 | │ |
1 | from transformers import BertTokenizer |

训练轻量NER模型
1 | from transformers import BertForTokenClassification |
基于NER的关系抽取(RE)
1 | # NER推理与结果可视化 |
文档字段抽取(票据/发票)
演示“规则抽取”作为基线,真实项目可升级为 LLM 结构化抽取。
1 | invoice = 'Invoice No: INV-2025-2331; Buyer: NanoVision; Amount: 268000 CNY; Date: 2025-04-19' |
详细报告
1 | preds=trainer.predict(val_tok) |