石元兵,周 俊,魏 忠
(衛(wèi)士通信息產(chǎn)業(yè)股份有限公司,四川 成都 610041)
隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)安全越來越受到人們的重視。對非結(jié)構(gòu)化的文本數(shù)據(jù)進行自動摘要,形成能夠高度概括原文主題的摘要短文,便于快速掌握原文關(guān)鍵內(nèi)容,從而采取相應(yīng)的數(shù)據(jù)安全防護措施。因此,自動摘要技術(shù)成為數(shù)據(jù)安全領(lǐng)域的一項關(guān)鍵的基礎(chǔ)技術(shù)。
自動摘要技術(shù)是自然語言處理(NLP)領(lǐng)域中最具挑戰(zhàn)性和最有趣的問題之一,通過對多種文本資源(如書籍、文章、報告、論文以及電子郵件等)進行分析和運算生成簡潔而有意義的文本摘要。自動摘要技術(shù)分為生成式自動摘要和抽取式自動摘要[1]。生成式自動摘要是讓計算機對文檔內(nèi)容進行充分理解后再生成語法正確且能夠概括原文主題的摘要句。因為生成式自動摘要依賴于復(fù)雜的自然語言理解和生成技術(shù),目前的應(yīng)用領(lǐng)域受限。抽取式自動摘要是通過計算文檔中的句子提取關(guān)鍵信息較多的原文句子形成摘要[2]。目前,抽取式自動摘要技術(shù)是自動摘要技術(shù)方面的主流。
抽取式的主要方法如下。
(1)基于統(tǒng)計:統(tǒng)計詞頻、位置等信息[3]計算句子權(quán)值,選取權(quán)值高的句子作為文摘。特點是簡單易用,但對詞句的使用大多僅停留在表面信息。
(2)基于圖模型:構(gòu)建拓撲結(jié)構(gòu)圖,對詞句進行排序,如TextRank/LexRank[4]。
(3)基于潛在語義:使用主題模型挖掘詞句隱藏信息,如采用LDA、HMM[5]。
(4)基于線路規(guī)劃:將摘要問題轉(zhuǎn)為線路規(guī)劃,求全局最優(yōu)解[6]。
在抽取式自動摘要技術(shù)中,基于統(tǒng)計的摘要技術(shù)通用性較差,基于潛在語義和路線規(guī)劃的摘要技術(shù)依賴于準確的標注樣本數(shù)據(jù),而基于圖模型的摘要技術(shù)充分考慮了文本的全局信息,不依賴標注樣本數(shù)據(jù)且計算快速,得到了廣泛使用。TextRank算法是一種用于文本的圖模型算法,通過把文本分割成若干基本單元(句子)構(gòu)建節(jié)點連接圖,用句子之間的相似度作為邊的權(quán)重,通過循環(huán)迭代計算句子的累加權(quán)重,最后抽取排名高的句子組合成文本摘要。
本文提出了一種融合的自動摘要技術(shù)Summ Rank,在傳統(tǒng)的TextRank摘要算法基礎(chǔ)上,對TextRank算法中的句子相似度、句子權(quán)重計算等不足部分進行改進和增強,使用BERT預(yù)訓(xùn)練模型作為句向量表征,考慮句子位置、關(guān)鍵詞等特征信息進行累加權(quán)重修正,并使用最大邊緣相關(guān)MMR算法去除冗余來保證結(jié)果中的準確性和多樣性。實驗表明,SummRank算法能夠有效提取文本數(shù)據(jù)中的摘要句,給數(shù)據(jù)安全防護提供敏感內(nèi)容的識別決策。
TextRank自動摘要算法源于Google公司提出的PageRank算法,主要思想是把文檔劃分為由若干文本單元(詞語或者句子)構(gòu)成的節(jié)點,文本單元間的相似度構(gòu)成節(jié)點間的邊形成圖模型,利用PageRank算法對圖模型進行迭代計算,直到節(jié)點的累加權(quán)重收斂,然后根據(jù)累加權(quán)重值對所有節(jié)點進行排序,輸出關(guān)鍵句[7],算法流程如圖1所示。
圖1 TextRank摘要算法流程
主要步驟如下。
(1)預(yù)處理:對原文進行分句操作,一般根據(jù)句子結(jié)尾的標點符號是句號、問號、感嘆號或省略號等進行句子分割,然后對句子進行分詞和過濾操作。因為有些類型的詞語對句子的關(guān)鍵信息沒有貢獻,所以需要進行去停用詞和詞性過濾操作,過濾掉代詞、指示詞以及量詞等詞語,保留名詞、動詞等攜帶關(guān)鍵信息的詞語。預(yù)處理完后得到句子集合D={s1,s2,…,si,…,sn-1,sn},1
(2)構(gòu)建無向有權(quán)網(wǎng)絡(luò)圖模型,如圖2所示。根據(jù)預(yù)處理結(jié)果,可以構(gòu)建一個無向有權(quán)網(wǎng)絡(luò)圖G={V,E,W}。V是節(jié)點集合V={v1,v2,…,vi,…,vn-1,vn},對應(yīng)句子集合D中的每個句子。E是節(jié)點之間的連接 邊 集 合E={(v1,v2),(v1,v3),…,(vi,vj),…,(vn,vn-2),(vn,vn-1)},(vi,vj)表示節(jié)點vi和節(jié)點vj之間存在一條連接邊。對于單文檔自動摘要任務(wù)來講,任意兩個節(jié)點之間都有連接邊,W表示連接邊集合中每條邊的權(quán)重值集合W={w12,w13,…,wij,…,wn(n-2),wn(n-1)},wij表示連接邊(vi,vj)的權(quán)重值,即節(jié)點vi和節(jié)點vj所代表的兩個句子之間的相似度,通過計算兩個句子的相同詞語個數(shù)得到。
圖2 TextRank網(wǎng)絡(luò)圖模型
(3)迭代計算累加權(quán)重WS每個節(jié)點的累加權(quán)重WS的計算公式為:
其中,wij表示節(jié)點vi與節(jié)點vj之間邊的連接權(quán)重,即節(jié)點vi與節(jié)點vj所代表的兩個句子的相似度,每個節(jié)點的權(quán)重初始值WS(vi)都設(shè)置為1。In(vi)表示與待計算節(jié)點vi有連接的所有節(jié)點集合,Out(vj)表示與待分享節(jié)點vj有連接的所有節(jié)點集合,d是阻尼系數(shù),表示圖模型中某一節(jié)點跳轉(zhuǎn)到其他任意節(jié)點的概率,一般取0.85。式(1)的含義是遍歷所有節(jié)點,根據(jù)節(jié)點之間相似度的比例把節(jié)點自身的權(quán)重分享給所有與該節(jié)點有連接關(guān)系的其他節(jié)點,節(jié)點最終的累加權(quán)重不僅取決于節(jié)點自身的屬性,還取決于其他節(jié)點的分享權(quán)重。因為在迭代計算時考慮了原文的全局信息,所以如果一個節(jié)點的累加權(quán)重值越高,表明該節(jié)點代表的句子越能反映原文的主題。
TextRank算法根據(jù)式(1)迭代計算每個節(jié)點的累加權(quán)重(Weight Sum),直到任意一個節(jié)點的前后兩次計算所得WS值相差小于一個閾值如0.000 1,則認為計算已經(jīng)收斂,停止迭代計算。
(4)根據(jù)迭代收斂時的累加權(quán)重WS值對句子進行排序,這時累加權(quán)重WS值越高的節(jié)點表示該節(jié)點對應(yīng)的句子包含越多的原文主題信息。
(5)根據(jù)累加權(quán)重WS值從大到小的順序選取前N個句子作為摘要句。
雖然使用TextRank摘要算法具有不依賴標注數(shù)據(jù)、計算快速等優(yōu)點,但是迭代計算時沒有考慮句子的語義相似度,沒有考慮典型的摘要句特征信息,生成的摘要句可能會出現(xiàn)冗余而導(dǎo)致文摘不夠全面。針對這些不足,本文提出了SummRank摘要算法,在TextRank摘要算法的基礎(chǔ)上進行了針對性的增強。
SummRank摘要算法在TextRank摘要算法的基礎(chǔ)上,分析TextRank摘要算法的不足并提出相應(yīng)的優(yōu)化方案,如圖3所示。
圖3 SummRank摘要算法流程
(1)句子相似度度量問題。TextRank摘要算法使用相同詞語個數(shù)度量兩個句子的相似距離,沒有使用語義信息,導(dǎo)致后續(xù)的迭代計算不夠準確,如“美國總統(tǒng)”和“奧巴馬”語義關(guān)系非常緊密,但是相同詞個數(shù)為0。Google推出的基于Transformer的雙向編碼表示自然語言預(yù)訓(xùn)練模型BERT使用了Mask語言模型和自注意力機制,通過BERT得到的句向量編碼能夠在向量空間上較好地反映兩個句子之間的語義關(guān)系,從而可以使用更準確的相似性度量方法,如余弦距離、三角面積等。
(2)連接邊權(quán)重優(yōu)化問題。TextRank摘要算法中的句子節(jié)點的累加權(quán)重取決于該句子與其他句子的相似度,相似度越高,則該節(jié)點得到的其他節(jié)點的分享權(quán)重越大,但是沒有考慮句子自身的位置、長度、轉(zhuǎn)折詞等特征,在對長句進行摘要計算時會引入干擾。經(jīng)過對大量業(yè)務(wù)數(shù)據(jù)的統(tǒng)計分析,很多摘要句在句子位置、長度以及轉(zhuǎn)折詞等方面有比較明顯的特征。本文綜合考慮多種典型摘要句特征,并對累加權(quán)重進行修正,提高了最終摘要結(jié)果的準確性。
(3)摘要冗余問題。因為TextRank摘要算法根據(jù)句子相似度分享權(quán)重,當按照節(jié)點的累加權(quán)重值從高到低的順序選取前N個句子形成摘要時可能會有冗余,即提取的摘要中包含多個意思比較相近或相似的句子。為了兼顧摘要的準確性和多樣性,SummRank算法在提取摘要句時使用了最大邊緣相關(guān)MMR算法來保證摘要相關(guān)性的同時去除冗余。
在使用TextRank摘要算法創(chuàng)建圖模型時,如果圖模型的節(jié)點和連接權(quán)重能夠充分體現(xiàn)句子的語義,迭代計算的結(jié)果無疑更準確。為了達到這個目的,多種句向量表征技術(shù)被研究并運用于TextRank算法,如Word2vec詞向量加權(quán)平均[8]、doc2vec[9]等。
基于Transformer的雙向編碼表示BERT(Bidirectional Encoder Representations from Transformers) 是Google公司于2018年推出的開源自然語言預(yù)訓(xùn)練模型,使用了雙向Transformer、Mask語言模型等自然語言處理方面的最新研究成果,已經(jīng)在多個自然語言處理數(shù)據(jù)集如SQuAD、CoQA、QuAC等上取得了當前業(yè)界的最佳水平。雙向Transformer技術(shù)在模型學(xué)習(xí)時會對句子的兩個方向進行學(xué)習(xí),即會同時學(xué)習(xí)到詞語的上下文,能夠反映出不同的語境對同一個詞的不同影響。同時,BERT使用注意力機制計算一個句子中每個詞對這個句子中所有其他詞的相互關(guān)系,這些相互關(guān)系反映了詞之間的關(guān)聯(lián)、重要度等信息。
相較目前的Word2vec加權(quán)平均、doc2vec等句向量表征技術(shù),BERT句向量標準能夠更好地體現(xiàn)句子語義的空間相互關(guān)系。一方面意思相近的句子在空間中的距離相近,另一方面句子之間的向量操作與人腦的理解大致相同,可以使用余弦夾角、三角面積等多種距離度量方式。
舉例如下:
句子A=“要充分重視數(shù)據(jù)安全防護”
句子B=“隱私保護是等級保護的重要內(nèi)容”
句子C=“今天天氣真好,風(fēng)和日麗”
使用官方發(fā)布的中文BERT預(yù)訓(xùn)練模型(https://storage.googleapis.com/hfl-rc/chinese-bert/chinese_wwm_L-12_H-768_A-12.zip)對句子A、B、C進行句向量編碼,分別得到長度為768維的句向量表示:
兩種句子相似度結(jié)果,如表1所示。
表1 兩種句子相似度結(jié)果
從例子可以看出,句子A和句子B在語義上比句子A和句子C更相似,但是相同詞語個數(shù)相似度結(jié)果都為0,沒有體現(xiàn)出這3個句子相互的語義相似程度,而使用BERT進行句向量編碼后的余弦夾角相似度結(jié)果很好地體現(xiàn)了語義上的差異。可見,當使用余弦夾角相似度替換相似詞語個數(shù)進行迭代計算時,最終得到的摘要結(jié)果更準確,更能反映原文的主題內(nèi)容。
TextRank摘要算法把句子節(jié)點權(quán)重全部初始化為1,邊的連接權(quán)重只考慮了句子之間的相似度,沒有考慮摘要句的位置、長度以及線索詞等典型特征。這些特征在某些類型的業(yè)務(wù)數(shù)據(jù)上體現(xiàn)得非常明顯,如電子政務(wù)、軍工設(shè)計等。因此,為了得到更準確的摘要,避免長文本中的干擾,需要在計算累加權(quán)重時考慮這些摘要句的典型特征。
經(jīng)過對業(yè)務(wù)數(shù)據(jù)的統(tǒng)計分析,定義如下4種基于句子特征的權(quán)重調(diào)節(jié)系數(shù)。
(1)句子的位置。美國的P.E.Baxendale的調(diào)查結(jié)果顯示:段落的論題是段落首句的概率為85%,是段落末句的概率為7%[10],因此有必要提高處于特定位置的句子的權(quán)值。基于位置的權(quán)重調(diào)整系數(shù)Sposition的定義當句子位于段落首句時,Sposition定義為2;當句子位于段落末句時,Sposition定義為1.3;當句子是其他位置時,Sposition定義為1。
(2)包含標題關(guān)鍵詞。在很多業(yè)務(wù)中,規(guī)范的標題是作者給出的高度概括原文內(nèi)容或者主題的短語,在對標題進行分詞和過濾操作后,剩下的關(guān)鍵詞與原文主題內(nèi)容有緊密聯(lián)系,因此需要提高包含標題關(guān)鍵詞語的句子的權(quán)重值?;跇祟}關(guān)鍵詞的權(quán)重調(diào)整系數(shù)Stitle的定義當句子包含標題關(guān)鍵詞時,Stitle定義為1.5;否則,Stitle定義為1。
(3)線索詞。句子中如果包含線索詞通常會有很強的摘要提示信息,如在電子政務(wù)數(shù)據(jù)中,如果一個句子包含“指示”“總而言之”“綜上所述”等詞語,則該句子成為摘要句的可能性較大?;诰€索詞的權(quán)重調(diào)整系數(shù)ScueWords的定義:當句子包含線索詞時,ScueWords定義為1.4;否則,ScueWords定義為1。
(4)包含專有名詞。有些行業(yè),業(yè)務(wù)數(shù)據(jù)中會包含一些特定的專有名詞,如“xxx項目”“xxx部門”。含有這些特定專有名詞的句子和原文的主題關(guān)系非常緊密,因此需要提高包含這些特定專有名詞的句子的權(quán)重值?;谔囟▽S忻~的權(quán)重調(diào)整系數(shù)SNER的定義:當句子包含特定專有名詞時,SNER定義為1.6;否則,SNER定義為1。
在SummRank摘要算法中,對TextRank迭代計算得到的累加權(quán)重WS進行修正,即將迭代計算得到的累加權(quán)重WS乘以上面的4個權(quán)重調(diào)整系數(shù)得到最終的累加權(quán)重WS′,即:
這樣即可重點突出典型的摘要句特征,盡量減少迭代計算過程中其他句子帶來的干擾。
摘要的相關(guān)性越高,越能體現(xiàn)原文主題思想。摘要的多樣性越高,摘要內(nèi)容越全面。而高質(zhì)量的摘要要求相關(guān)性和多樣性能夠達到一個平衡,摘要才便于用戶更好地把握原文內(nèi)容。原文作者可能會在原文的不同位置使用不同形式的句子重復(fù)原文的主題內(nèi)容,以便對重要信息進行強調(diào)。使用TextRank摘要算法進行自動摘要時,因為TextRank算法是根據(jù)句子相似度進行權(quán)重分享,則相似句子的累加權(quán)重和必然較高,從而被同時選中為摘要句形成冗余。為了平衡摘要的相關(guān)性和多樣性,SummRank算法引入最大邊緣相關(guān)(Maximal Marginal Relevance,MMR)算法。MMR的思想是使入選摘要句既與原文主題的相關(guān)度較高來保證摘要的相關(guān)性,又使該句與已選中摘要句的差異盡可能大來保證摘要的多樣性,從而實現(xiàn)提取相關(guān)性和多樣性平衡的高質(zhì)量摘要。
MMR算法如式(3):
其中,vi表示候選句子;WS(vi)表示候選句子的累加權(quán)重,即在前一階段TextRank迭代計算并使用式(2)進行修正后的累加權(quán)重WS′,vj表示已經(jīng)被選中的摘要句;Sim(vi,vj)表示候選句vi與已選中摘要句的相似度。式(3)可以分為兩部分,a*WS(vi)表示候選句vi的主題相關(guān)度,越大表示該句子與原文主題相關(guān)程度越緊密;表示候選句vi與已選中摘要句的差異性,越大表示該句子與已有摘要差異越大。通過調(diào)整a的不同權(quán)重,可以滿足不同應(yīng)用場景下對相似內(nèi)容和不同內(nèi)容的不同要求,從而實現(xiàn)相關(guān)性和多樣性的平衡。
本文的SummRank摘要算法使用前一階段TextRank迭代計算并修正后得到的累加權(quán)重,根據(jù)式(3)對所有句子計算MMR值并選取每輪MMR值最高的句子加入摘要集。第一輪計算選取的摘要句是原文中累加權(quán)重WS值最高的句子,后續(xù)的計算會對剩余句子和已選取的摘要句進行多樣性計算,選取出多樣性和相關(guān)性達到要求的句子加入到摘要集。重復(fù)這個步驟,直到提取出指定數(shù)目的摘要句為止。
由于目前沒有權(quán)威的中文摘要評測材料,為了驗證SummRank摘要算法的效果,本文使用若干電子政務(wù)相關(guān)數(shù)據(jù)(報告、政策、規(guī)定、通知)分別使用SummRank算法和TextRank算法提取摘要,再根據(jù)電子政務(wù)數(shù)據(jù)保密業(yè)務(wù)要求對提取的摘要進行人工評估檢查。實驗結(jié)果證明,SummRank摘要算法保證了準確性和多樣性的平衡,能準確反映原文的主題思想和主體內(nèi)容,更適合用在數(shù)據(jù)安全業(yè)務(wù)中,舉例如表2所示。
使用TextRank和SummRank算法提取3種不同數(shù)目的摘要句,結(jié)果如表3所示。
從表3的結(jié)果來看,TextRank摘要算法和SummRank摘要算法都能夠提取到反映原文主題思想的摘要句,但是隨著摘要句數(shù)目的增加,TextRank算法提取的摘要結(jié)果中的冗余開始增加,而SummRank算法在摘要結(jié)果中引入了更多多樣性方面的內(nèi)容,且SummRank算法的摘要結(jié)果在相關(guān)性方面也更好。
表2 測試數(shù)據(jù)例子
表3 TextRank和SummRank摘要結(jié)果
準確而全面的自動摘要對數(shù)據(jù)安全業(yè)務(wù)非常重要,可以給人為研判提供準確的決策輔助,也可以對摘要結(jié)果進行關(guān)鍵詞提取、句法分析、短文本相似度比較以及文本分類等操作,從而實現(xiàn)摘要維度的內(nèi)容準確識別
本文在傳統(tǒng)TextRank摘要算法的基礎(chǔ)上,通過融合BERT句向量編碼、多種摘要句特征權(quán)重修正和最大邊緣相關(guān)算法,實現(xiàn)了一種增強的中文自動摘要提取技術(shù)。實驗結(jié)果表明,提取的摘要更加準確和全面,能夠很好地反映原文的主題思想和主要內(nèi)容,從而為數(shù)據(jù)安全防護應(yīng)用提供更好的輔助決策和更全面的業(yè)務(wù)分析手段。