朱曉亮 譙宇同
1(華中師范大學教育大數據應用技術國家工程實驗室 湖北 武漢 430079) 2(華中師范大學國家數字化學習工程技術研究中心 湖北 武漢 430079)
修辭是通過各種語言手段修飾言論,從而達到盡可能好的表達效果的一種語言活動,常用的修辭手法主要有排比、擬人、比喻三種。其中,排比修辭手法可以讓行文更加條理清晰且氣勢宏大,因此在各類文章中都被大量采用。通過計算機自動抽取文章中的排比句,可以在自動寫作推薦領域和作文評分領域得到較好的應用[1-2]。
對于排比句的自動抽取問題,早期的研究者的解決方法是根據排比句的語法特征,提出一系列規則對排比句進行識別。例如:鞏捷甫[1]根據排比句的結構和語法特征提出一系列規則對高考作文中的排比句進行自動識別,并在此基礎上實現了對高考作文的自動評閱;熊李艷等[2]提出對主題詞進行提取,并對標點符號、共現詞和工整性進行匹配,對演講稿中的排比句和工整句進行了自動抽??;梁社會等[3]通過求最長公共子序列及分句結構相似程度的方法對《孟子》和《論語》中的排比句進行了自動識別。然而,由于漢語的句法和章法并不一定具備嚴格的邏輯性結構[4],采用固定規則而不考慮語意信息對排比句進行自動抽取的效果并不理想。隨著深度學習在自然語言處理領域的發展,通過深度學習方法抽取文本的語意特征對排比句進行自動抽取的研究也逐步展開。比如:穆婉青等[5]將分句結構相似度計算方法與卷積神經網絡相結合,對文學作品以及高考題中的文學類閱讀材料進行了排比句自動抽取實驗;Dai等[6]采用循環神經網絡中的長短期記憶網絡對學生作文中的排比句進行了自動抽取。綜合上述研究,基于深度學習的抽取效果較大程度上取決于是否選取了合適的特征抽取器。同時,也需要綜合權衡算法復雜度與算法有效性之間的關系。
基于上述分析,本文對用深度學習方法對排比句進行自動抽取展開研究,提出了兩種自動識別方法,并將兩種方法結合作為預處理手段,在選擇出的特征抽取器的基礎上設計了排比句自動識別方法并在數據集上驗證方法的有效性。
自然語言處理任務的常見輸入形式往往是若干數量的句子或者段落,這使得自然語言處理的任務存在如下特征:其輸入是一個不定長的一維線性序列;句子中各成分之間的相對位置有重要意義;句子中存在的長距離特征對于理解語義也比較關鍵。在自然語言處理任務當中,對于語義特征信息的抽取是由特定的特征抽取器完成的,因此從模型角度來說,特征抽取器性能的好壞在很大限度上決定了整個模型的性能優劣。目前比較典型的特征抽取器有CNN、RNN,以及由谷歌在2017年提出的Transformer模型。
1) CNN。卷積神經網絡(CNN)是深度學習的代表算法之一,CNN最初在計算機視覺領域的應用較多,在自然語言處理領域的應用則是由Kim[7]提出的。在經典的CNN算法中,輸入的字符以Word Embedding的形式進行表達,對于特征的抽取是由包含了若干個卷積核的卷積層[8]來完成的,對于一個指定窗口大小的卷積核,不斷地將輸入中相應大小的輸入轉換為特征值,最終形成一個特征向量。在卷積層的每個卷積核都完成這樣的一個過程后,形成的不同特征序列,輸入到一個池化層中進行降維,進而輸入到全連接層中,形成對原始輸入的分類[9]。
傳統的CNN模型可以簡潔地完成某些自然語言處理任務,但也存在著一些缺陷:卷積核的窗口大小是固定的,對于超過窗口大小的長距離特征無法抽取;在池化層進行的池化操作,可能會導致文本的相對位置信息丟失。因此CNN的各種改進方法被提出,如Yu等[10]提出用空洞卷積的方法使得卷積核的計算區域大于卷積核的一維卷積長度。同時隨著計算機運算能力不斷提高,用池化層來降低運算規模已經不再重要,因此取消池化層,提高CNN的深度,也能提高CNN模型的性能。
2) RNN。循環神經網絡(RNN)是自然語言處理領域的經典模型之一,傳統RNN的模型結構如圖1所示。

圖1 標準RNN模型結構圖
在RNN網絡的每一層之間都有一個隱藏狀態h(t)從前向后傳播,每一層的h(t)都由當前層的輸入x(t)和由上一層傳入的h(t-1)計算得來[11]。傳統RNN模型在對隱藏狀態反向傳播的時候很容易發生梯度爆炸和梯度消失的問題,在RNN模型基礎上加以改進而提出的LSTM模型和GRU模型通過控制隱藏狀態的傳遞過程來緩解此問題,取得了很好的效果,成為了主流的RNN模型。但除此之外,RNN仍存在一個較大的問題:每一時刻的隱藏狀態h(t)的計算都需要依賴前一時刻的隱藏狀態h(t-1)的輸入,給RNN進行并行計算造成了困難。
3) Transformer。Transformer是由谷歌在2017年針對機器翻譯[12]提出的一種模型,其結構如圖2所示。
從宏觀上講,標準的Transformer模型是由編碼組件和解碼組件兩部分組成的,編碼組件部分由若干個編碼器組成,而解碼組件部分由相同數量的解碼器組成。每個編碼器都有著相同的結構,即由Multi-Head Attention和前饋神經網絡兩部分組成;每個解碼器的結構也相同,即由Masked Multi-Head Attention、Multi-Head Attention和前饋神經網絡三部分組成。
為了保存并利用輸入的文本序列中各成分的相對和絕對位置關系,Transformer模型在將輸入的文本進行Embedding操作過后,還會將文本的位置信息進行編碼并加入,這稱為Position Embedding,其計算公式如下:
PE(pos,2i)=sin(pos/10 0002i/dmodel)
(1)
PE(pos,2i+1)=cos(pos/10 0002i/dmodel)
(2)
式(1)-式(2)意為將id為pos的位置映射為一個dmodel維的位置向量,該向量的第i個元素對應的數值即為PE(pos,i)。將兩個公式的計算結果拼接起來,即得到每個成分的位置編碼。
Transformer模型對特征的抽取依賴于自注意力機制。在編碼器的Multi-Head Attention層,每個輸入的Embedding都會與查詢、鍵和值三個權重矩陣相乘,生成對應的查詢向量、鍵向量和值向量。然后將每個輸入的查詢向量與其他輸入的鍵向量求點積,得到一個得分。之后將計算出的得分進行處理后,通過Softmax歸一化,使得所有的得分都為正且和小于1,得到Softmax分數,該分數代表了每個輸入對于編碼當前輸入的貢獻。最后將Softmax分數分別與每個輸入的值向量相乘,再對其加權求和,即得到了某個輸入的自注意力輸出。在Transformer模型中,自注意力機制還被賦予了Multi-Head機制,即定義多組不同的權重矩陣,令每個輸入重復多次上述計算過程,每一個計算過程被稱為一個自注意力頭,以此可以提升Multi-Head Attention層的性能。
在解碼器中,除了Multi-Head Attention層之外,還有一層Masked Multi-Head Attention層。因為解碼器需要完成將編碼轉換成單詞輸出的操作,因此在該生成過程中,對于某一時刻i,只有小于i時刻的輸入有效,大于i時刻的就會被屏蔽掉。解碼器其余兩層的結構與編碼器相同,最終會輸出一個實數向量。該實數向量會經過線性變換層,轉換為一個分數值,投射到一個被稱為對數概率的向量中。對數幾率向量中的分數再經過一個Softmax層,轉換為概率,最終最高的概率被轉換成對應的單詞,形成最終的輸出。
4) 分類器比較。與CNN和RNN模型相比,Transformer模型在對語義特征進行提取的能力上有非常顯著的優勢,且對于不同自然語言處理任務都有較好的特征抽取能力。同時,Transformer模型在抽取長距離語義特征的能力上與RNN接近,且明顯優于CNN,在執行并行計算的性能上與CNN接近,且明顯優于RNN。
李勝梅[13]在對排比句的篇章特點進行研究后認為,排比句最重要的結構特征是在句子中包含三項或者三項以上的結構相同或相近的言語片段。排比句的結構中包含了首項與復現項,其中首項為復現項提供了結構與定勢,為讀者的閱讀過程給予引導;復現項與首項的結構相同,僅在部分成分上加以變化,使讀者的注意力能夠集中在變化的部分,接受到新的語意信息,舉例如下。
例1友誼是“桃花潭水深千尺,不及汪倫送我情”的那份真誠;友誼是“祝你每一天都有一個燦爛的笑容”的那聲祝福;友誼是“如果你正心情不好,我可以借個肩膀你靠一靠”的那種安慰;友誼是成功時朋友臉上的微笑和鼓勵;友誼是失敗時朋友臉上呈現的那份焦急和肯定、支持的眼神!
例2勇氣是冬天里炎熱的火把,讓我重燃斗志,繼續向前;勇氣是干渴時甘甜的河水,讓我心花重綻,干勁萬分;勇氣是迷茫時明亮的燈塔,給我指明方向,勇往直前。
例3父愛如山,深沉而又博大;父愛如海,深沉而又寬厚;父愛如火,熾熱燃燒;父愛如酒,令人回味無窮;父愛如傘,為你遮風擋雨。
顯然,排比句具有顯著的結構特征,因此可用于實現對排比句的自動抽取。
實驗數據集為從作文中人工抽取出的1 022條排比句及相應數量的非排比句。這些作文來源于研究團隊從某小學收集到的考試、日常作文及從網絡上收集到的作文。
本次實驗的環境如表1所示。

表1 實驗環境
為了確定哪種特征抽取器的效果最優,本文使用不同的特征抽取器在數據集上進行排比句的自動抽取。本文選取相關研究中介紹的CNN模型、RNN模型及BERT模型作為對比特征抽取器。其中,BERT模型[14]是谷歌于2018年10月提出的語言表示模型,即來自Transformer的雙向編碼器表示。BERT是一個基于雙向Transformer的預訓練模型,即其本身是在一個大規模語料庫上進行訓練生成的雙向Transformer模型,可以通用于各種自然語言處理任務。在對具體的任務進行處理時,只需要在預訓練模型的基礎上增加一個額外的輸出層,對模型進行微調而不是進行大量的結構修改。BERT模型在序列級別的分類任務上的表現最好,而排比句的自動識別實際上是一個對輸入進行排比/非排比的二分類任務,因此可以用于排比句自動識別。在中文預訓練BERT模型中,包含了12個Transformer層,768個隱藏單元,12個自注意力頭,總參數量達到了1.1億。
實驗使用標準的CNN模型、改進的RNN模型(GRU模型和LSTM模型)和谷歌的中文預訓練BERT模型來進行排比句的自動識別。使用不同分類器對排比句進行自動識別的結果如表2所示。

表2 不同分類器的排比句自動識別效果
可見,BERT模型對排比句進行自動識別的效果相比于其他模型有明顯提升,因此采用BERT模型來對排比句進行自動識別較傳統模型相比獲得了較好的結果。同時,運用BERT模型的結果與相關研究者的排比句自動識別結果對比如表3所示,非排比句的識別結果對比如表4所示。可見,采用BERT模型對排比句和非排比句進行自動識別的準確度較以往的方法有較大提升。

表3 排比句自動識別結果

表4 非排比句自動識別結果
由于BERT模型自身的復雜性,對大量的語料進行自動識別時,其運行速度有待提升,見圖3。其中CPU時間的測試環境見表1。

圖3 BERT模型處理不同數據集所需的CPU時間
為了降低識別時間,考慮到對于作文這一類別的語料而言,排比句在所有句子中只占有較少的一部分。因此,在對大規模語料進行自動識別之前,如采用一些預處理手段縮小待識別語料的規模,將在不降低識別準確度的前提下提升識別的速度。
根據上述排比句的語法特征,以及對于例句的分析,可以將對排比句的自動抽取分為兩種情況:① 句子中的部分分句包含相同的詞語,且重復的次數大于2次;② 句子中的分句不包含相同的詞語,或相同詞語重復出現的次數小于等于2次。
對于情況①,可以認為該句為排比句。對于輸入的語句T,將T按照句中的標點符號(逗號或分號)分為若干個分句Si,若兩個分句包含相同的詞語則記為Si≈Sj,那么整個句子中含有相同詞語的分句數D可以用如下遞歸函數進行計算:
(3)
為判斷各個分句間是否包含相同的詞語,將分句Si分別通過分詞工具進行分詞,并將Si的分詞結果與Si-1的分詞結果逐個進行比對。最終判斷分句數D是否大于2,若大于2,則將語句T判別為排比句。本文使用這種方法在包含400個語句的數據集上進行測試,得到的結果如表5所示。

表5 基于重復詞匯的方法測試結果 %
可見,本文方法識別排比句的準確率極高,因此可以通過該方法快速地抽取數據集中結構特征明顯的排比句。
對于情況②,則無法準確判斷該句是否為排比句。對于這種情況,可以對句子進行依存句法分析,判斷整句結構各成分之間包含的語義依賴關系。由于在排比修辭當中,各排比項之間往往存在著相互并列的關系,這與依存句法當中的并列(Coordination)關系相對應,因此可以作為判斷排比句的另一特征。對于輸入的語句T,本文將T通過哈爾濱工業大學的語言技術平臺中的依存句法分析工具進行分析,得到T中各成分之間包含的語義依賴關系,對這些依賴關系中存在的并列關系進行計數,若并列關系數小于2,則將該句判別為非排比句。本文在基于重復詞匯的方法基礎上,使用這種方法在包含400個語句的數據集上進行測試,得到的結果如表6所示。

表6 基于并列關系的方法測試結果 %
可見,本文方法識別排比句的召回率極高,因此基本可以保證識別的結果中不會丟失正確的結果。需要注意的是,依存句法當中的并列關系并不僅僅存在于排比句當中,而是在語言使用當中廣泛存在的,因此通過這種方法無法準確判斷輸入的語句是否為排比句,本文僅通過這種方法對輸入語句中的非排比句進行識別。
基于BERT模型,結合以上兩種方法,本文設計出如下的排比句自動識別流程:通過基于重復詞匯的方法識別輸入中的排比句,并將其余語句通過基于并列關系的方法識別其中的非排比句。對于剩下的包含并列關系數大于等于2的語句,本文將其標記為疑似排比句,交由BERT模型進行進一步的判斷,將BERT模型的識別結果與前兩種方法的結果進行結合,得到最終的輸出。方法流程如圖4所示。

圖4 排比句自動提取方法流程
對于包含了400條語句的數據集,在經過本文提出的預處理方法進行縮小規模過后,僅保留103條語句需要BERT模型進一步識別,規模縮小了74%,可見該方法縮小數據規模的效果明顯。由上文可知,在本文實驗環境下,BERT模型對每一條語句識別的CPU時間需要12 s左右,而基于重復詞匯的方法識別出一條排比句最多僅需要低于0.001 s,基于并列關系的方法識別出一條非排比句最多僅需要低于0.9 s,對于這兩種方法的結合使用使得整個自動提取的流程速度大幅提升。在不同數據集下,本文方法的識別所需CPU時間如圖5所示。

圖5 本文方法處理不同數據集所需CPU時間
同時,由于對部分結構特征明顯的排比句和句法特征明顯的非排比句進行了直接快速地判別,避免了BERT處理過程中可能出現的誤判,使得識別的準確率也有所提升,如表7所示。

表7 本文方法測試結果
此外,本文流程也可以在計算能力更強的GPU上運行,使得所需時間進一步降低。
本文針對作文文本中的排比句,提出了使用BERT模型進行識別的方法。同時根據排比句結構相似、成分存在并列關系的特點,提出了一種預處理手段,縮小了輸入數據的規模,在大幅提升模型整體運行速度的同時,對準確率也有所提升,驗證了本文方法的有效性。但本文僅在作文文本上進行了實驗,未在政論、新聞等其他文體上進行實驗,數據量較小。后續工作中,將考慮把本文的方法推廣到更廣泛的語料上開展實驗,驗證算法的可靠性。