引言

关于跨任务抽取,搜了圈没发现准确定义的,有介绍多任务的,有介绍prompt来做多任务的。

所以此处暂不纠结具体细节了,看下paddleNLP UIE怎么做的。

训练

关于数据标注,官方没有给具体的方式,那么就从推理的角度来看是怎么实现的。

推理

官方代码:

1
2
3
4
5
6
7
8
from paddlenlp import Taskflow


# 跨任务抽取
schema = ['法院', {'原告': '委托代理人'}, {'被告': '委托代理人'}]
ie = Taskflow('information_extraction', schema=schema)
ie.set_schema(schema)
print(ie("北京市海淀区人民法院\n民事判决书\n(199x)建初字第xxx号\n原告:张三。\n委托代理人李四,北京市 A律师事务所律师。\n被告:B公司,法定代表人王五,开发公司总经理。\n委托代理人赵六,北京市 C律师事务所律师。")) # Better print results using pprint

代码debug部分就不介绍了,直接说结论。

提取顺序 prompt构造方式 推理结果
1 法院 北京市海淀区人民法院
2 原告 张三
3 被告 B公司
4 张三的委托代理人 李四
5 B公司的委托代理人 王五

总结

看完百度paddleNLP UIE代码,就觉得优秀的代码就是优秀,这个优秀不是因为简单容易看懂这种,而是优秀的工程能力,优秀的建模能力,和简洁明了的实现方式。不像打比赛,啥子有的没的feature都往上堆。。。

不管怎样,建议下次不记得的时候,一定要先从UIE-事件提取看起。这种方式值得学习!