巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

近期,由中国中文信息学会、中国计算机学会和百度公司联合举办“2020语言与智能技术竞赛”正在如火如荼地进行。高质量的数据、热门的任务、丰厚的奖金,吸引了许多参赛者打榜。作为中文领域的顶级赛事,已经吸引了超过4000多支队伍报名,可谓竞争非常激烈。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

特别是,今年新增了事件抽取任务,该任务是通用领域上第一个中文数据集,该数据集数据量充足(65个类型,1.7万句子),数据标注质量高,相比于ACE05更加适合深度学习模型。此外,该赛事还拥有70,000元的奖金池和高含金量的荣誉证书,因此该任务一出随即吸引了众多参赛者的关注,目前报名人数已经超过800多人。报名链接:

https://aistudio.baidu.com/aistudio/competition/detail/32?isFromCcf=true

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

什么,你还没有报名?感觉与大奖擦肩而过没机会了?

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

来来来,别光哭了,飞桨预训练模型应用工具PaddleHub帮你坐上火箭,一步快速赶上进度!

使用PaddleHub提供的10多种不同的预训练模型,在事件抽取任务中,只需要更换参数就能实现在不同预训练模型上进行训练,极大降低了迁移成本。提供的Baseline取得了F1超过80的效果,一步进入排行榜Top50,按照800多人的报名,妥妥的10%,已经赢在起跑线上。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

一步教程传送门:

https://aistudio.baidu.com/aistudio/projectdetail/381711

别着急点链接,下面还有技术干货,看完再走不迟,文末还有资深专家的神秘tips!

核心技术详细解读

01

事件抽取任务

事件抽取(Event Extraction, EE)是指从自然语言文本中抽取事件并识别事件类型和事件元素的技术。事件抽取是智能风控、智能投研、舆情监控等人工智能应用的重要技术基础,受到学术界和工业界的广泛关注,目标是通过给定目标事件类型和角色类型集合及句子,识别句子中所有目标事件类型的事件,并根据论元角色集合抽取事件所对应的论元。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

 

02

事件抽取Baseline模型

事件抽取任务组织方也发布了针对该数据集的Baseline模型,该模型是双序列标注模型,基于ERNIE源码开发,代码复杂,适合细节研究和模型调试,不适合入门,因此,使用PaddleHub(

https://www.paddlepaddle.org.cn/hub)对Baseline模型进行了极大的简化,代码更加简单清晰,方便初学者学习和理解任务。同时,在PaddleHub中集成了10多种不同的预训练模型,只需要更换参数就能实现在不同预训练模型上进行训练,极大降低了迁移成本。

03

Baseline模型详解

首先,先回顾一下事件抽取Baseline模型结构,该模型是一个双序列标注模型。

3.1 基于序列标注的触发词抽取模型

基于序列标注的触发词抽取模型是给定事件类型,识别句子中出现的事件触发词对应的位置以及对应的事件类别,该模型是基于ERNIE开发序列标注模型,采用ERNIE+CRF实现。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

 

3.2 基于序列标注的论元抽取模型

基于序列标注的论元抽取模型是识别出事件中的论元以及对应论元角色,该模型同样是基于ERNIE开发序列标注模型,采用ERNIE+CRF实现。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

 

3.3 抽取结果处理策略

根据触发词抽取模型识别到的事件类型对应的所有论元角色关联论元抽取模型的结果,得到最终模型的输出结果。

04

基于PaddleHub对Baseline重写

PaddleHub已经对基础的方法做了高度封装,极大减少了代码量。Baseline是两个序列标注模型,那么模型代码部分可以共用,输入数据处理部分需要做适配即可。具体代码查看:

https://github.com/PaddlePaddle/Research/tree/master/KG/DuEE_baseline/DuEE-PaddleHub。

 

4.1 输入数据处理

输入的是带标注结果的事件数据或者是仅预测数据,并且还需要根据不同的模型生成数据,触发词抽取模型需要利用标注的触发词和事件类型生成训练样本,论元抽取模型需要利用论元和论元角色生成训练样本。最终统一成如下处理方式。

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

 

4.2 模型训练代码

这是核心代码,仅需要简单的模块堆砌就可以搭建好整个模型。

  1. 加载预训练模型

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

只需要根据:

https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=SemanticModel 

的提示下载模型,并在代码里引入即可,就可以轻松的加载不同的预训练模型,非常方便。

    2. 先构造dataset

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    3. 构造数据处理的reader

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    4. 设置Fine-tune策略

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    5. 模型配置

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    6. 定义序列标注任务

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

该接口已经集成了CRF,只需要通过参数适配CRF,非常方便。

    7. 训练和评估模型

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    8. 预测和预测结果处理

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

    9. 两个模型训练完之后结果合并处理成预测格式

通过事件schema将两个模型关联起来,得到事件预测结果文件(只需要调用data_process.py中相应的方法即可完成最后的预测结果输出啦 ),然后直接提交到比赛官网查看成绩。

整体上看,模型训练部分还是非常简洁的,也不需要对模型有较大的改动即可完成相应的任务,尤其是PaddleHub已经集成了大量的预训练模型,仅需要通过参数就能实现使用不同预训练模型上,这个还是非常赞的。

神秘Tips

 

01

优选模型

 

在PaddleHub中集成了10多种不同的预训练模型(包括bert_chinese_L-12_H-768_A-12,chinese-bert-wwm,chinese-bert-wwm-ext,chinese-roberta-wwm-ext-large,chinese-electra-base,chinese-electra-large等),只需要更换参数就能实现在不同预训练模型上进行训练。

基于ERNIE源码的Baseline使用ERNIE 1.0模型训练取得了F1 71.2的效果,而基于PaddleHub重写的版本在ernie-tiny上取得了F1 70.2,使用chinese-roberta-wwm-ext-large取得了F1超过80的效果,还有更多模型,欢迎参赛选手尝试,也许有意外惊喜等着你。

 

02

调参经验

 

不同的预训练模型对学习率敏感,换不同的预训练模型,可以尝试先调几个学习率分别训练下,可能会意外收获哈。

03

AutoDL超参优化

PaddleHub不仅为开发者提供了Baseline,还提供了自动调参AutoDL等高级特性,可以供开发者尽情自由发挥:

https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/autofinetune.md

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”

相关链接地址汇总

2020语言与智能技术竞赛:事件抽取任务比赛报名:

https://aistudio.baidu.com/aistudio/competition/detail/32

Baseline基线GitHub项目:

https://github.com/PaddlePaddle/Research/tree/master/KG/DuEE_baseline/DuEE-PaddleHub

PaddleHub Baseline教程:

https://aistudio.baidu.com/aistudio/projectdetail/381711

PaddleHub官网模型列表:

https://www.paddlepaddle.org.cn/hublist

PaddleHub项目地址:

GitHub: https://github.com/PaddlePaddle/PaddleHub

Gitee:  https://gitee.com/paddlepaddle/PaddleHub

飞桨开源框架项目:

GitHub: https://github.com/PaddlePaddle/PaddleHub

Gitee:  https://gitee.com/PaddlePaddle/PaddleHub

加入飞桨官方技术答疑QQ群,结识更多志同道合的深度学习开发者。飞桨官方技术答疑群:703252161

END

巧用飞桨隐藏秘籍,勇闯AI大赛10%“王者区”