一句话定义:语义角色标注(Semantic Role Labeling, SRL)是让机器回答"这句话里谁对谁做了什么、在何时何地、用什么工具"的任务——它绕开句子的语法外壳,直接给每个成分贴上它在"事件"中扮演的角色。
打个比方:给一场戏排演员表
看这句:"昨天张三在食堂用饭卡买了一份炒饭。"
谓语"买"是这场戏的核心事件,SRL 要产出的是一张演员表:
- 张三 → 施事(Agent),谁做的
- 一份炒饭 → 受事(Patient / Theme),被处置的对象
- 饭卡 → 工具(Instrument)
- 食堂 → 地点(Location)
- 昨天 → 时间(Time)
这些标签统称语义角色,也叫论元角色(semantic roles / arguments)。工程上通常分两步:先找出谓词(识别事件),再给每个论元打角色标签,形式上可当作序列标注或"问答式抽取"来做。
关键点在于:主语不等于施事。被动句"炒饭被张三买了"里,主语换成了炒饭,但施事仍是张三。正因如此,SRL 的标签跨句式相对稳定,抓的是含义层面的结构。另一个坑是谓词义项:"买"和"卖"的施事与受事恰好对调,所以同一批角色清单要绑定义项来看;FrameNet、PropBank 这类框架提供了角色体系,具体定义以官方页面为准。
和相邻概念的区别
| 概念 | 关心什么 | 对"张三买炒饭"的输出 |
|---|---|---|
| 分词 / 词性标注 | 每个词的词类 | "买"是动词 |
| 依存句法分析 | 词与词的语法关系 | "张三"是"买"的主语 |
| 命名实体识别(NER) | 出现了哪些实体 | "张三"是人名,"食堂"是地点 |
| 语义角色标注 | 成分在事件中的角色 | "张三"是"买"的施事 |
| 关系抽取 | 实体之间是什么关系 | 张三—购买—炒饭 |
一句话:句法分析告诉你"句子怎么搭起来的",SRL 告诉你"事情是怎么发生的"。
对从业者和普通人的意义
对从业者,SRL 是信息抽取的骨架:搜索里判断"谁收购了谁"、舆情里分辨"谁批评了谁"、合同里抽出"谁在多少天内付多少钱给谁",都依赖这套角色划分;它也为知识图谱和问答系统提供结构化的事件表示。对普通人,它意味着机器从"字面匹配关键词"升级到"读懂谁干了啥",减少张冠李戴式的误判。
值得一提的是,在大模型时代,SRL 常被当作提示词里的中间结构或评测维度,而不一定单独训一个模型;但"谁对谁做了什么"这个提问方式,依然是检验机器是否真读懂了句子的好尺子。
