CogLTX: Applying BERT to Long Texts

链接:http://keg.cs.tsinghua.edu.cn/jietang/publications/NIPS20-Ding-et-al-CogLTX.pdf

github:https://github.com/Sleepychord/CogLTX

Abstract

由于bert内存呈现二次增长和时间消耗,使得不能很好的处理长文本;一种自然的方式是对transformer进行操作,如对文本进行滑窗,attention的稀疏化处理(随机,固定窗口,二者结合)等。从人类理解长文本的角度出发,主要分为两部分,首先是关键句子的判断,然后基于关键句进行推理。

Introduction

BERT在问答,文本分类已经有很好的表现,但是bert一般是只能处理512的长度,一个明显的解决方式是sliding window,但是这种方法牺牲了长距离依赖,而transformer的变体很少在bert上获得成功。借鉴人类的做法,本文提出了CogLTX。

Framework

  1. 数据的处理

CogLTX 的这个基本假设是“对于大多数 NLP 任务,文本中的几个关键句子存储足够和必要的信息来完成任务”。假设长文本x 中存在短文本z  使得:reasoner(^{​{_{x}}^{+}})\approx reasoner(^{​{_{z}}^{+}})

不同任务的x,z形式:

 x 的分割:代码中的buff.py中的split_document_into_blocks是进行切割的操作。

长文本x被划分为\left \{ x^{_{0}},...,x^{_{T}} \right \},,每个块的最大是B=63,当bert的长度是512的时候。z是由一些块来组成的。

2. MemRecall

此模块的目标是抽取关键的z。我们从图1可以看到对于QA,POS来说,question或者子序列作为query来检索关键的块,而对于分类任务是没有query的,这个相关性是隐含在训练数据中的,具体的实现就是删除某个块,看他的loss移除是否大于某一个阈值t  :

3. Training

具体的算法步骤:

  1. 分块之后的数据首先是进行judge模块,对应4-9行
  2. reasoner模块,对应9-21行

17-21行会在self._intervention实现。 

Experiment

修改代码中的迭代次数,最高的结果是85%

Text classification

Multi-label classification

 利用Reuters数据进行了实验,修改了model.py中的ClassificationReasoner,一种是作者写的回归,另外一种是多标签分类:

Conclusion

CogLTX是将bert应用到长文本中,主要包含judge和reasoner两个模块。在阅读理解和文本分类中进行了实验,实验结果显示了此方法的有效性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值