Coder Social home page Coder Social logo

ccks-ee-subject's Introduction

CCKS 2020:面向金融领域的篇章级事件主体与要素抽取(一)事件主体抽取

https://www.biendata.xyz/competition/ccks_2020_4_1/leaderboard/199952/

排名:25/686

特点:

  1. 多标签实体识别
  2. 实体的类别不敏感(不管什么类型的实体都是公司)
  3. 实体类别多(29分类)
  4. 包含负样本(即标签为空的样本)

数据样例:

    "context": "而随着近日摩能国际因涉嫌传销被调查的消息被确认,也坐实了摩能国际近段时间以来的崩盘传闻",
    "type": [
    "涉嫌传销",
    "提现困难"
    ],
    "entity": [
    [
    摩能国际
    	],
    [
    摩能国际
    	]
    ]

方法一:CRF

注:抽取的实体只能有一个类别标签,数据预处理时shuffle类别(数据类别多折,结果融合)

模型:[BERT]+[Encoder]+CRF

BERT/MIDDLE Bi-LSTM IDCNN TENER R-Transformer
NEZHA ×

通过替换预训练模型下游结构Encoder提升模型的表现,问题在于不能cover多标签的特点。

最佳单模:

结构:NEZHA+Bi-LSTM+CRF

F1-score:0.76

方法二:MRC

复现论文:《A Unified MRC Framework for Named Entity Recognition》

利用MRC方法实现NER任务,通过先验问题的构造确定实体类别,可以解决多标签的问题。

该模型的不足在于存在无回答的样本,这使得模型无法完全分辨出不同问题之间的差异(Recall高,Precision低)。

最佳单模:

结构:RoBERTa+MRC

F1-score:0.70

多任务(Multi-task):

为了解决无法正确分辨类别的问题,尝试了一种多任务的方法。除了原始的主任务以外,加入了文本匹配任务,任务目标是判断样本中的问题与文本是否匹配,如不匹配则丢弃该样本中抽取到的实体。

但实验结果分数低于原始的MRC方法,即文本匹配任务反而伤害了模型。

方法三:Multi-Pointer

多层指针网络,将类别先验的表示为指针的层数,标签形状为(bs, seq_len, tag_size)。

可以解决多标签的问题,不足在于模型学习的目标会变得复杂,使得模型泛化性较差。

最佳单模:

结构:RoBERTa+Multi-Pointer

F1-score:0.77

方法四:PIPELINE

将任务视作事件抽取来做,分为两个阶段。

阶段一:事件类别

通过整段文本的表征做多标签分类任务,获得事件类别。由于事件类别的获取是独立的模型,在这个阶段可以引入负样本

阶段二:主体抽取

将得到的事件类别通过**MRC方法(方法二)**的**拼接到原样本上去,然后抽取实体。

这种方式有效的避免了方法二中的无回答样本问题,使得测试集样本更加准确。

但是pipline的方式也导致了两个问题:

  1. 第一阶段的误差累积到了第二阶段
  2. 事件类别和实体抽取之间的内在联系被割裂

最佳单模:

阶段一结构:RoBERTa+多标签分类

阶段二结构:RoBERTa+MRC

F1-score:0.75

方法五:Joint-pointer

两阶段抽取,先抽类别再抽对应实体

各方法对比

方法名 优点 缺点
CRF方法 有CRF转移矩阵约束,分词和分类信息更加准确 无法解决实体多标签和实体嵌套问题
MRC方法 先天可以解决多标签问题,通过span矩阵可以解决实体嵌套的问题 局限性太大,在多类别数据集和少样本数据集上效果欠佳
指针方法 可通过多层指针解决实体多标签问题 分词与分类信息无约束,结果较脏

Silver Bullet:

  1. 可解决多标签问题
  2. 可解决实体嵌套问题
  3. 分词和分类任务有约束

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.