打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
NeurIPS'20 | 通过文本压缩,让BERT支持长文本

这是今年清华大学及阿里巴巴发表在NIPS 2020上的一篇论文《CogLTX: Applying BERT to Long Texts》,介绍了如何优雅地使用bert处理长文本。作者同时开源了不同NLP任务下使用COGLTX的代码:

论文题目

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

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【1216】 下载论文PDF~

bert在长文本处理一般分为三种方法[1]

  • 截断法;

  • Pooling法;

  • 压缩法。

该论文就是压缩法的一种,是三种方法中最好的。我们在科研和工作中都会遇到该问题,例如我最近关注的一个文本分类比赛:

面向数据安全治理的数据内容智能发现与分级分类 竞赛 - DataFountain[2].

其文本数据长度就都在3000左右,无法将其完整输入bert,使用COGLTX就可以很好地处理该问题,那么就一起来看看该论文具体是怎么做的吧。

1.背景

基于以下情形:

  • bert作为目前最优秀的PLM,不用是不可能的;

  • 长文本数据普遍存在,且文本中包含的信息非常分散,难以使用滑动窗口[3]截断。

而由于bert消耗计算资源和时间随着token的长度是平方级别增长的,所以其无法处理太长的token,目前最长只支持512个token,token过长也很容易会内存溢出,所以在使用bert处理长文本时需要设计巧妙的方法来解决这个问题。

2.提出模型

COGLTX模型在三类NLP任务中的结构如下:

首先假设:存在短文本 可以完全表达原长文本 的语义:

那么令 代替 输入原来的模型即可,那么怎么找到这个

1、使用动态规划算法将长文本 划分为文本块集合

2、使用MemRecall对原长句中的子句进行打分,MemRecall结构如图,而表现如下式:

从而选择出分数最高的子句组成 再进行训练,这样一来的话,COGLTX相当于使用了了两个bert,MemRecall中bert就是负责打分,另一个bert执行原本的NLP任务。

可以发现刚才找到 例子将问题Q放在了初始化 的开头,但是并不是每个NLP任务都可以这么做,分类的时候就没有类似Q的监督,这时候COGLTX采用的策略是将每个子句从原句中移除判断其是否是必不可少的(t是一个阈值):

作者通过设计不同任务下的MemRecall实现了在长文本中使用bert并通过实验证明了方法的有效性。

3.实验

通过多维度地对比,证明了本文提出算法的有效性。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
文本 视觉,多篇 Visual/Video BERT 论文介绍
Bert时代的创新:Bert在NLP各领域的应用进展 | 技术头条
万字长文解读:ChatGPT的前世今生
从BERT到ChatGPT,百页综述梳理预训练大模型演变史
【信息抽取】如何使用BERT进行关系抽取
20项任务横扫BERT!CMU谷歌发布XLNet,NLP再迎屠榜时刻
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服