定义
定义1:
1 | Semantic Role Labeling (SRL) is defined as the task to recognize arguments for a given predicate and assign semantic role labels to them. |
定义2(ltp):
1 | 语义角色标注 (Semantic Role Labeling, SRL) 是一种浅层的语义分析技术,标注句子中某些短语为给定谓词的论元 (语义角色) ,如施事、受事、时间和地点等。其能够对问答系统、信息抽取和机器翻译等应用产生推动作用。 仍然是上面的例子,语义角色标注的结果为: |
实现
https://github.com/geasyheart/srl-parser
欢迎Star!
示例1:
看黄色那部分:
- 他叫汤姆,他作为
施事者
,叫为谓语
,汤姆为受事者
- 去拿外衣(为一个完整语义)
- 汤姆拿外衣,汤姆为
施事者
,拿为谓语
,外衣为受事者
示例2:
‘各位/PN 好/VA ,/PU 欢迎/VV 您/PN 收看/VV 国际/NN 频道/NN 的/DEG 今日/NT 关注/NN 。/PU’
此图自己画的,如有需要可参考
- 欢迎您,欢迎为
谓语
,您为受事者
,收看国际频道的今日关注为语义角色
- 其余忽略…
数据集
数据集来自ontonotes5.0,但是此为收费数据集,或者需要大学帐号注册,找到一个开源的https://github.com/GuocaiL/Coref_Resolution/archive/master.zip#data/,处理后的数据集以 jsonlines后缀存储,放到此处。
具体的处理逻辑可参考这里。
实现
目前常见的有span-based,bio-based,treecrf,treecrf是yzhangcs的实现方式。bio-based是用序列标注的方式来做(hanlp和ltp均以此实现),故是本文的重点。
数据处理
看这个文件,其中预测的label处理后是这个样子,解释如下:
- 各位 好,好是第二个字,和第一个词有关系,关系为3。
- 欢迎 您收看国际频道的今日关注, 对应关系为1, 13, 23, 23, 23, 23, 23。
1 | tensor([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
看到这里是否知道其模型结构了,biaffine
+crf
哇,biaffine
转换成临接矩阵,用于预测谓词
和论元
的关系,论元
用crf序列标注的方式来进行预测。
模型结构
1 | SpanBIOSemanticRoleLabelingModel( |
步骤
1. loss计算和解码
到biaffine
这一层没什么需要特别注意的,bert获取词向量的方式从以前的求平均改成了以首字代表词向量。后面接两个mlp以及biaffine。重点在于如何和crf融合到一起?
- biaffine输出后维度为(batch_size,seq_length,seq_length,hidden_size),crf是用在第二个seq_length那一维。
- crf的输入为发射概率,此维度为(batch_size,seq_length,hidden_size)。
基于上述两个前提,将batch_size
和第一个seq_length
进行flatten,因为第一个seq_length为谓语,不影响论元的预测,转换后输入到crf中,就可以计算loss了,解码一样。
2. 评估指标
预测出来的结果示例如下:
1 | # pred |
pred类型为List[List[int]]
,他的长度等于batch_tokens中每个词的长度,即:
1 | len(pred) == sum([len(i) for i in batch["batch_tokens"]]) |
** 其中每一行表示的是当前词和整句每个词所呈现出来的关系。 **
基于上面结论,就不难写评估代码了,将其转成(token_index, start, end, label)
,然后set取交集,最终计算f1值,可看这里。
3. 解码预测
基本如上,具体可看。
性能
从这里也可以看出,语义角色标注任务任重道远。
ltp关系类型
关系类型 | Tag | Description | Example |
---|---|---|---|
ARG0 | causers or experiencers | 施事者、主体、触发者 | [政府 ARG0]鼓励个人投资服务业。 |
ARG1 | patient | 受事者 | 政府鼓励[个人 ARG1]投资服务业。 |
ARG2 | range | 语义角色2 | 政府鼓励个人[投资服务业 ARG2]。 |
ARG3 | starting point | 语义角色3 | 巴基斯坦[对谈判前景 ARG3]表示悲观。 |
ARG4 | end point | 语义角色4 | 产检部门将产检时间缩短到[一至三天 ARG4]。 |
ADV | adverbial | 状语 | 我们[即将 ADV]迎来新年。 |
BNF | beneficiary | 受益人 | 义务[为学童及老师 BNF]做超音波检查 。 |
CND | condition | 条件 | [如果早期发现 CND],便能提醒当事人注意血压的变化。 |
CRD | coordinated arguments | 并列 | 跟南韩、[跟美国 CRD]谋求和平关系的举动也更加积极。 |
DGR | degree | 程度 | 贫铀弹含有放射性比铀强[20万倍 DGR]。 |
DIR | direction | 方向 | [从此处 DIR] 我们可以发现寇克斯报告的精髓。 |
DIS | discourse marker | 会话标记 | 警方上午针对目击者做笔录,[而 DIS]李士东仍然不见踪影。 |
EXT | extent
语义依存分析
基于树形条件随机场的高阶句法分析
缺失模块。 jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true
探索世界美好的存在。
|