wang9702 / Event_Extraction

序列标注方法进行事件抽取

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BD_event-extraction

百度2020语言与智能技术竞赛:事件抽取赛道方案代码

说明

这是首次参加事件抽取比赛,由于其他事情的繁忙,只参与了第一阶段的线上评测,F1值达到0.78, 这里把事件抽取当成两阶段任务,先做事件触发词检测,再做事件论元检测,每阶段都是当作一个序列标注任务 采用pipeline模型,网络的主体架构采用BERT+LSTM来分别进行触发词的识别和论元角色的分配。

使用

准备

1、

pip install pytorch pytorch_pretrained_bert numpy

2、下载pytorch版本的bert_base_chinese和bert-base-chinese-vocab.txt到主目录下

训练、测试

python train.py

总结

事件抽取在这次的任务中不需要识别出句子中的触发词,只需要识别出句子所对应的事件类型,所以不同于常见的事件抽取任务定义。

可将该问题看成论元-(事件类型-角色)的多分类任务,共65个事件类型,将<事件类型-论元>组合得到共217种类别,如<死亡-时间>、<死亡-地点>等,这样就可以做一个联合抽取的模型。

由于这些方法都没法解决论元角色覆盖问题,可以采用序列标注的混合多标签来解决这个问题,可参考论文 [Neural Architectures for Nested NER through Linearization]

Reference

  • Nlpcl-lab's bert_event_extraction repository [github]

About

序列标注方法进行事件抽取


Languages

Language:Python 80.3%Language:Jupyter Notebook 19.7%