这是今年清华大学及阿里巴巴发表在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
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.实验
通过多维度地对比,证明了本文提出算法的有效性。
参考文献
[1]https://zhuanlan.zhihu.com/p/88944564
[2]https://www.datafountain.cn/competitions/471
[3]z. wang, p. ng, x. ma, r. nallapati, and b. xiang. multi-passage bert: a globally normalized bert model for open-domain question answering. arxiv preprint arxiv:1908.08167, 2019.
原文标题:【nips 2020】通过文本压缩,让bert支持长文本
文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。
基于STC12C5A60S的小功率逆变器的设计
功率循环测试助力车用IGBT性能提升
如何让iPhone8可以充电的同时使用耳机
IP多媒体子系统的组成及功能有哪些?
网件RAX80让你的WiFi6终端发挥最大功效
如何优雅地使用bert处理长文本
k型热电偶补偿导线颜色区分
数模转换器和模数转换器的区别
使用Kotlin构建Android应用的基础知识
开放原子开源基金会与 9 个开源项目举行捐赠签约仪式
延崇高速明年开跑自动驾驶汽车 小鹏汽车获美国加州自动驾驶路测
DSO5034A示波器的特性
小米9疑似获得3C认证 充电规格为27W可能支持无线充电
小米6最新消息,米6亮白版震撼来袭,售价2499,这样子的米,米粉们可喜欢?
去年赚的钱,今年已经亏光?动力电池上游材料价格雪崩之后
互联网与医疗热潮将起,互联网医院规模不断扩大
又一家CPU企业进军科创板
SM7035P驱动电源管理ic是一款可代替CYT驱动电源系列的方案
人工智能赛道上 这些AI“国货之光”代表了中国的未来
3项有关机器人技术的国家推荐标准将于7月1日正式实施