這是今年清華大學(xué)及阿里巴巴發(fā)表在NIPS 2020上的一篇論文《CogLTX: Applying BERT to Long Texts》,介紹了如何優(yōu)雅地使用bert處理長文本。作者同時開源了不同NLP任務(wù)下使用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法;
壓縮法。
該論文就是壓縮法的一種,是三種方法中最好的。我們在科研和工作中都會遇到該問題,例如我最近關(guān)注的一個文本分類比賽:
面向數(shù)據(jù)安全治理的數(shù)據(jù)內(nèi)容智能發(fā)現(xiàn)與分級分類 競賽 - DataFountain[2].
其文本數(shù)據(jù)長度就都在3000左右,無法將其完整輸入bert,使用COGLTX就可以很好地處理該問題,那么就一起來看看該論文具體是怎么做的吧。
1.背景
基于以下情形:
bert作為目前最優(yōu)秀的PLM,不用是不可能的;
長文本數(shù)據(jù)普遍存在,且文本中包含的信息非常分散,難以使用滑動窗口[3]截斷。
而由于bert消耗計算資源和時間隨著token的長度是平方級別增長的,所以其無法處理太長的token,目前最長只支持512個token,token過長也很容易會內(nèi)存溢出,所以在使用bert處理長文本時需要設(shè)計巧妙的方法來解決這個問題。
2.提出模型
COGLTX模型在三類NLP任務(wù)中的結(jié)構(gòu)如下:
首先假設(shè):存在短文本 可以完全表達原長文本 的語義:
那么令 代替 輸入原來的模型即可,那么怎么找到這個 呢
1、使用動態(tài)規(guī)劃算法將長文本 劃分為文本塊集合 ;
2、使用MemRecall對原長句中的子句進行打分,MemRecall結(jié)構(gòu)如圖,而表現(xiàn)如下式:
從而選擇出分?jǐn)?shù)最高的子句組成 再進行訓(xùn)練,這樣一來的話,COGLTX相當(dāng)于使用了了兩個bert,MemRecall中bert就是負(fù)責(zé)打分,另一個bert執(zhí)行原本的NLP任務(wù)。
可以發(fā)現(xiàn)剛才找到 例子將問題Q放在了初始化 的開頭,但是并不是每個NLP任務(wù)都可以這么做,分類的時候就沒有類似Q的監(jiān)督,這時候COGLTX采用的策略是將每個子句從原句中移除判斷其是否是必不可少的(t是一個閾值):
作者通過設(shè)計不同任務(wù)下的MemRecall實現(xiàn)了在長文本中使用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.
責(zé)任編輯:xj
原文標(biāo)題:【NIPS 2020】通過文本壓縮,讓BERT支持長文本
文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
文本
+關(guān)注
關(guān)注
0文章
118瀏覽量
17086 -
nlp
+關(guān)注
關(guān)注
1文章
488瀏覽量
22038
原文標(biāo)題:【NIPS 2020】通過文本壓縮,讓BERT支持長文本
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論