BERT模型—4.BERT模型在关系分类任务上的微调

本文介绍了BERT模型如何应用于关系分类任务,包括四种不同的实现方式,并详细阐述了ENTITY MARKERS与CLS相结合的实现方法。在实验中,文章使用了特定的数据集,并对比了不同方法(如Focal loss)的测试结果,探讨了在数据集均衡性良好时,Focal loss的效果。
摘要由CSDN通过智能技术生成


数据代码见:https://gitee.com/lj857335332/bert_finetune_re


引言

  关系分类任务在信息抽取中处于核心地位。关系分类任务就是从非结构化文本中抽取出结构化知识;具体为:区分出头实体与尾实体之间的语义关系,比如:
在这里插入图片描述
通过模型将头实体与尾实体的语义关系分类分出来。那么BERT模型如何应用在关系分类任务当中呢?关系分类模型的架构有多种选择:

  • 第一种实现方式:将BERT模型应用于句子的向量表征,不管实体位于句子当中的哪个位置,仍然将句子分词,首尾加上[CLS]与[SEP],将[CLS]的向量表征拿出来,输入到分类器中,这个分类器输出关系预测类型上的打分。
    在这里插入图片描述
  • 第二种实现方式:不是直接拿到句子的向量表征,而是将句子中的向量表征拿出来,这两个向量表征进行拼接后输入到分类器中,这里就要涉及到MENTION POOLING操作。因为实体可能是单个token,也可能是多个token。如果是多个token的话,多个token的向量表征要转化成整个实体的固定大小的向量表征。
    在这里插入图片描述
  • 第三种方式:通过外部的信息告诉模型头实体与尾实体的位置,这就是所谓的POSITIONAL EMBEDDING。这种信息在传统的关系分类任务当中被验证是非常有帮助的,模型更容易表征两个实体的语义关系
    在这里插入图片描述
  • 第四种方式:通过在句子中添加特殊符号来标识两个实体的位置,这种实现方法对句子有一定的改变在这里插入图片描述
      研究者们已经将这7种架构在基准数据集上进行了对比,
    在这里插入图片描述
    下面就ENTITY MARKERS与CLS相结合予以实现。

一、项目环境配置

  • torch==1.6.0
  • transformers==3.0.2
  • seqeval==0.0.12
  • pytorch-crf==0.7.2

二、数据集介绍

Train Dev Test Slot Labels
SemEval10 6507 1493 2717 19
  • 关系分类标签的数量由数据集决定

  我们这一节使用semeval10数据,数据集由训练集、验证集、测试集组成
在这里插入图片描述
  semeval.txt文件是semeval10数据,是一个在学术论文中广泛使用的数据集。这个数据集每一行是一个JSON文件,形式如下:

{
   "token": ["the", "original", "play", "was", "filled", "with", "very", "topical", "humor", ",", "so", "the", "director",
 "felt", "free", "to", "add", "current", "topical", "humor", "to", "the", "script", "."], "h": {
   "name": "play",
  "pos": [2, 3]}, "t": {
   "name": "humor", "pos": [8, 9]}, "relation": "Component-Whole(e2,e1)"}

  semeval_rel2id.json文件是给定的关系分类标签映射,一共19个关系分类标签
在这里插入图片描述

三、代码介绍

  • data_loader.py文件:这个文件的功能是将文本文件转化成InputExample类数据,并将输入样本转化为bert能够读取的InputFeatures类数据,最后保存至cache文件中,方便下次快速加载。
  • utils.py文件:封装了很多实用程序,方便统一调用
  • trainer.py文件:定义了任务的训练与评估以及保存模型与加载模型
  • main.py文件:用于模型的训练与评估
  • predict.py文件:用于模型的预测
  • modeling_bert.py文件:自定义关系分类BERT模型
1.Focal loss损失函数

F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-\alpha_t(1-p_t)^{\gamma}log(p_t) FL(pt)=αt(1

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值