NeurIPS'20 | 通过文本压缩,让BERT支持长文本
作者 | wangThr
來源 | 知乎
這是今年清華大學及阿里巴巴發表在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.實驗
通過多維度地對比,證明了本文提出算法的有效性。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[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.
總結
以上是生活随笔為你收集整理的NeurIPS'20 | 通过文本压缩,让BERT支持长文本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DIN+DIEN,机器学习唯一指定涨点技
- 下一篇: 2022年薪百万赛道:高性能神经网络与A