徐一鳴,易 黎
(1.武漢郵電科學研究院,湖北武漢 430074;2.南京烽火天地通信有限公司,江蘇南京 210019)
文本摘要任務的目標是獲得一段文字的簡要壓縮版本,這個任務一般被分成抽取式文本摘要和生成式文本摘要。在該文中主要關(guān)注抽取式摘要。
現(xiàn)在,已經(jīng)有很多神經(jīng)網(wǎng)絡模型應用在文本摘要任務上[1-6]。其中,BERT 預訓練模型的使用,進一步提升了抽取式摘要的效果。但是BERT 并不是具體針對某項下游任務,并且其中預訓練任務設計仍待商榷。于是人們根據(jù)不同任務對BERT 提出改進,針對中文數(shù)據(jù)集提出了ENRIE[7];MASS[8]提出了同時利用編碼器和解碼器進行長序列遮蓋,提高了模型理解語義的能力;UNILM[9]改變了self-attention的應用,將單向和雙向attention 相結(jié)合;SpanBERT[10]利用長序列遮蓋進行預測遮蓋內(nèi)容;RoBERT[11]取消了NSP 任務,并且采取隨機遮蓋策略。
該文針對BERT 預訓練模型進行改進,使其可以更適應中文文本摘要任務,提高了摘要效果。
BERT(Bidirectional Encoder Representation from Transformers)[12]是由谷歌研發(fā)團隊提出的,它以Transformer 模型為基礎框架,不再使用傳統(tǒng)深度學習任務中常用的RNN 和CNN,整個網(wǎng)絡結(jié)構(gòu)完全由注意力機制組成。
如果利用BERT 預訓練模型進行生成抽取式摘要[13-14],需要它輸出每一個句子的token。BERT預訓練模型是作為masked-language model來訓練的,輸出的向量是句子的token。同時,BERT 對于每一個獨立的句子有專門的segmentation embeddings,不過它只有兩種標簽來表示抽取式摘要中的句子。調(diào)整輸入和BERT的embedding進行抽取摘要,對于連續(xù)的句子用EA和EB進行區(qū)分。為每一個句子編碼時,在一個句子的開頭位置放置一個[CLS]token,在句子結(jié)尾位置放置一個[SEP]token,讓模型可以利用這兩個token 來判斷句子的獨立性,BERT中的三種Embedding如圖1所示。
在下游任務中,不再選擇簡單的sigmod 分類器,而是采用多層的Transformer 層來代替,從BERT 預訓練模型的輸出中提取側(cè)重于文本摘要任務的文檔級特征:
式中,h0=PosEmb(T),T是BERT 輸出的句子向量,PosEmb 是將Positional Embedding 加入T的函數(shù);LN是Layer Normalization 處理[15];MHAtt是multi-head attention 處理;上標l表示堆疊層數(shù)。最終的輸出層仍可以看作是一個sigmod 分類器:
式中,是句子i從l層Transformer 中輸出 的向量。在實驗中,分別設置Transformer 層數(shù)l=1,2,3,最后發(fā)現(xiàn)2 層Transformer 表現(xiàn)最佳。
在對原始文本進行預處理的過程中,利用中文分詞語料庫對原始的文本進行分詞分句處理。將切分出的中文詞語作為一個token 輸入或者進行Mask,分詞與輸入對比如表1 所示。
表1 分詞與輸入對比
Mask Language Model(MLM)是BERT 的預訓練任務之一,可以理解完形填空任務。在原始BERT中,隨機Mask 其中15%的詞(在一個滑動窗口里取一個詞,10%~15%的比例都可以)如圖2 所示,用其上下文來做預測。
改進的BERT 中,不再對15%的token 采取隨機Mask,而是選擇遮蓋連續(xù)的token 以達到遮蓋序列的效果。如圖3 所示,遮蓋序列的長度k則是變化的,k的范圍在切分出一句話的10%~50%。其中,當k=10%時可以把模型看作原始BERT 中的MLM,而文本摘要任務需要模型同時考慮語義與前后詞句之間的關(guān)系,所以遮蓋長度不能超過50%。同時,不同長度的k在整個訓練過程中是同時存在的,它們占整個訓練次數(shù)的比例不同。
在每次迭代時,都選擇一次k的長度,其中,k的長度更傾向于選擇短距離,整個訓練k的分布近乎幾何分布,k的比例與分布如圖4 所示。
在訓練過程中,這部分被Mask 的詞,80%的時間采用[mask]進行表示,10%的時間采用另一個隨機的詞代替,10%的時間保持原詞不變。但是,這種遮蓋不再是單個token 的,而是整個序列級別的,被遮蓋序列中每一個token 都用[mask]代替。
實驗選擇使用python3.6,pytorch1.8,CUDA11.1,bert_base_chinese 版本的BERT。在訓練過程中,前10 000 步設置學習率如式(4)所示,對模型進行預熱以加快擬合速度[16]。
整個模型在一塊RTX3070 顯卡上訓練,每次訓練100 000 步,每隔1 000 步在驗證集上設置一個模型檢查點進行保存和評估。根據(jù)驗證集上的評估損失選擇前三個檢查點,并反饋測試集上的平均結(jié)果。
該文選取的數(shù)據(jù)集是LCSTS。數(shù)據(jù)集主要分為三部分,如表2 所示。
表2 數(shù)據(jù)集分布
第一部分是數(shù)據(jù)集的主要部分,用來訓練生成摘要的模型;第二部分是從第一部分數(shù)據(jù)中隨機采樣出來的,用來分析第一部分數(shù)據(jù)的分布情況;第三部分作為測試集。
實驗中,不同模型生成的摘要如表3 所示。
表3 生成的文本摘要
通過表3 可以看出,該文改進的BERT 生成的摘要信息相比BERTsum 更加簡潔,反映的原文信息更加精準,更貼合人工摘要的效果。
當然,人工評價具有一定的差異性,該文采用針對文本摘要任務專用的評價指標Rouge,其中,Rouge_R 代表召回率,Rouge_P 代表準確率,在文本摘要任務中往往希望召回率和準確率都較高,但是實際情況是兩者一般呈反比例,所以主要利用F 值即Rouge_F 進行比較。實驗結(jié)果如表4-6 所示。
表4 四種模型的Rouge_R
表5 四種模型的Rouge_P
表6 四種模型的Rouge_F
實驗中,除了對比原始BERT,還選擇采用長序列遮蓋策略的MASS 模型和針對中文數(shù)據(jù)集的ERNIE 模型進行對比。由表中所示,改進的BERT模型對比其他三種模型,在召回率、準確率和F 值上都領(lǐng)先,其中對比原始BERT,F(xiàn) 值高出了10%~17%。
為了在中文數(shù)據(jù)集上生成文本摘要,對原始BERTsum 進行改進:1)在對數(shù)據(jù)預處理時,對中文文本進行分詞處理,是一個詞語生成一個token,再進行輸入或mask;2)在BERT 預訓練過程中,改變mask 策略,遮蓋長度動態(tài)的長序列。實驗結(jié)果表明,相較于BERTsum,改進的BERT 在文本摘要任務上評價指標Rouge-1_F 提高了17.18%,Rouge-2_F提高了10.01%,Rouge-L_F 提高了14.8%。對于BERT 模型,選擇遮蓋長序列能夠獲得比隨機遮蓋單一token 更好的預訓練結(jié)果。