張 洋,江銘虎
(清華大學人文學院,北京 100084)
互聯網時代,海量數據涌現,人們在享受信息服務的同時也飽受信息泛濫的困擾。作者識別技術可以準確而及時地識別不良信息,追蹤垃圾信息的源頭并阻止其傳播,對于維護互聯網生態健康具有重要的意義。作者識別,又稱為作者身份識別(authorship identification)或者作者身份歸屬(authorship attribution),是自然語言處理(Natural Language Processing,NLP)領域里的一個重要分支。顧名思義,作者識別是識別文本作者的一類研究,它最初源自人們深入閱讀的傳統。作者識別的主要思路是將文本中隱含的作者無意識的寫作習慣通過某些可以量化的特征表現出來,進而凸顯作品的文體學特征或寫作風格,以此確定匿名文本的作者[1]。從其發展歷程來看,最初的研究是確定散軼文獻的來源或作者,后面又逐漸發展至確定某一文學作品、法律文檔或者電子文本的作者。根據是否使用數學方法量化文本風格,可以將作者識別分為傳統作者識別和現代作者識別[2]。傳統作者識別多基于文學和語言學的相關知識,依靠專家的經驗進行判斷;而現代作者識別則基于數學建模,依靠模型的結果確定作者歸屬。
本文主要研究基于中文文本的現代作者識別,通常可以分為提取文本特征和建立預測作者的數學模型兩個步驟。這兩個步驟分別被研究者稱為作者風格分析(authorship style analysis)和作者身份建模(authorship modeling)。具體來說,作者風格分析是提取能夠量化作者寫作風格的文本特征的過程,比如字符特征、詞匯特征、句法特征、語義特征等。通常需要設計一個特征提取器,生成相應的特征向量,以便于在接下來的步驟中進行建模。而作者身份建模則是根據提取的這些文本特征或者已生成的特征向量建立相應的模型,進而預測文本作者的過程。有時,作者身份建模也指由文本建立預測作者歸屬模型的過程。通過構建特征集進行作者識別的研究都可以用以上這兩個步驟來描述。相比之下,極少數不需要借助特征集識別作者的研究則缺少第一個步驟。此類研究通常直接利用原始文檔進行建模,而無需額外的特征提取,比如基于壓縮方法的作者識別[3]等。
從大的層面來分,作者身份建模主要分為基于輪廓的建模(profile-based modeling)和基于實例的建模(instance-based modeling)[4]。二者都是由訓練文本構建作者歸屬模型的過程,它們的主要區別在于:在基于輪廓的建模中,每個作者的所有文本都會被累計處理。換句話說,特定作者的所有文本會被整合成一個大文檔,根據這個大文檔提取相應表示,構建該作者的輪廓。這樣,每個測試文本只需跟特定作者的輪廓比較一次就能確定與該作者的相似程度。而在基于實例的建模中,每位作者的所有文本都會被單獨處理。換句話說,每個文本都有自己的表示。在這種情況下,每個測試文本需要跟特定作者的所有文本進行比較才能確定與該作者的相似程度。因此,當語料相對比較充足,每個作者都有足夠數量的訓練文本時,通常采用基于實例的建模;反之,當僅能獲得有限數量的訓練文本時,常常采用基于輪廓的建模[5]。基于實例的建模通常會與機器學習算法搭配使用,因此研究者一般認為其準確率要高于基于輪廓的建模方法[6]。
作者識別領域里常見的建模主要有基于概率的建模、基于向量空間的建模和基于相似度的建模等,下面簡要敘述這幾類建模以及它們通常搭配的分類方法。
基于概率的建模通過引入概率模型來描述不同隨機變量之間的數學關系。作者識別領域最早的基于概率的建模是Mosteller 等[7]利用貝葉斯方法研究聯邦黨人文集的作者歸屬問題。貝葉斯方法是一種建立在條件概率基礎上的概率模型。具體來說,貝葉斯方法是在類條件概率密度和先驗概率已知的情況下,通過貝葉斯公式比較樣本屬于兩類的后驗概率,將類別決策為后驗概率大的一類,這樣可以使總體錯誤率最小[8]。
有些研究者利用貝葉斯方法進行相關的研究。Zhao等[9]選擇功能詞和詞性(Part-of-Speech,POS)標簽作為特征,使用樸素貝葉斯方法識別作者;Raghavan 等[10]為每個作者構建概率上下文無關文法,并使用該文法作為分類的語言模型進行作者歸屬;Boutwell[11]使用樸素貝葉斯分類器,選擇基于字符的n元組合(n-gram)的特征構建作者集統計模型識別短信的作 者;Savoy[12]利用隱含狄利克雷分布(Latent Dirichlet Allocation,LDA)把每個文檔建模為主題分布的混合,每個主題指定單詞的分布,根據文本距離確定相應的作者歸屬。
基于向量空間的建模把對文本內容的處理簡化為向量空間中的向量運算,同時以向量空間中向量的相似度衡量文本中語義的相似度,簡潔直觀。作者識別領域的向量空間模型通常搭配支持向量機(Support Vector Machine,SVM)和神經網絡等機器學習方法,本部分著重介紹這兩種方法。
1.2.1 支持向量機
SVM 是作者識別領域常見的一種方法,它的基本原理是找到一個最優的分類面,使得兩類中距離這個分類面最近的點和分類面之間的距離最大[13]。SVM 的復雜度與樣本維數無關,學習效率和準確率較高,適合應用于高維文體特征數據集,因此受到很多研究者的青睞。Diederich 等[14]利用SVM 研究德國報紙文本的作者識別;Schwartz 等[15]利用SVM 研究微小信息在推特語料上的作者識別;Mikros 等[16]結合多級ngram,利用多類SVM 研究希臘推文中的作者識別;Posadas-Duran 等[17]選擇句法關系標簽、POS 標簽以及詞根的句法ngram等特征刻畫文本風格,并利用SVM識別相關作者。
1.2.2 神經網絡
神經網絡是簡單處理元件、單元或節點的互連系統,網絡的處理能力體現在通過適應或學習一組訓練模式的過程中獲得的單元間連接強度或權重上[18]。因此,從本質上來說,神經網絡是模擬動物腦中神經元網絡的簡化模型。從理論上來說,神經網絡算法能夠逼近任意函數,具有很強的非線性映射,以及分布存儲、并行處理、自學習、自組織等優點[19]。所以,針對一些實際情況復雜、背景知識不清楚、規則不明確的問題,神經網絡算法具有很強的處理能力。
有些研究者利用神經網絡研究作者身份識別。Bagnall[20]使用循環神經網絡(Recurrent Neural Network,RNN)同時對幾個作者的語言進行建模;Ruder 等[21]利用卷積神經網絡(Convolutional Neural Network,CNN)處理特征級別信號,并對大規模文本進行快速預測;Shrestha 等[22]選擇字符n-gram 作為特征,利用CNN 對推文進行作者識別;Jafariakinabad 等[23]使用句法循環神經網絡從詞性標簽序列中學習句子的句法表示,同時利用CNN 和長短期記憶(Long Short-Term Memory,LSTM)網絡研究句中詞性標簽的短期和長期依賴性。
基于相似度的建模的主要思想是計算未知文本和所有文本之間的相似性度量,然后根據相似程度估計最可能的作者[24]。這是分類任務中最直觀的一種思路,該思路的代表算法是K-最近鄰(K-Nearest Neighbor,KNN)算法。KNN 的基本原理為:根據某個距離度量找出訓練樣本中與測試樣本最接近的k個樣本,再根據它們中的大多數樣本標簽進行預測。因此,衡量樣本相似程度的距離度量是KNN 或者其他基于相似度的分類方法的關鍵。KNN 不需要使用訓練數據來執行分類,可以在測試階段使用訓練數據[25]。
有些研究者利用基于相似度的模型研究作者識別。Jankowska 等[26]選擇通用n-gram 相異性度量作為距離度量參與網絡測評競賽,獲得了較優的結果;Burrows[27]提出了Delta方法,該方法通過計算未知文本與語料庫的Z 分數和Delta值,把文本分配給具有最低Delta 值的作者;Eder[28]使用基于KNN的Delta方法研究文本尺寸對作者歸屬的影響。
近年來,注意力機制(attention mechanism)被廣泛應用在圖像識別、機器翻譯、語音識別等各種深度學習任務中。顧名思義,注意力機制是模仿人識別物體時的注意力焦點的數學模型。人在識別物體時,先通過視覺系統獲得物體的圖像信息,而后由大腦對這些信息進行加工和整理,最終分辨物體的類別。大腦在對這些信息進行分析時,會格外關注一些局部信息,而忽略或者部分忽略其他信息。這種機制就被稱為注意力機制。深度學習中的注意力機制利用Encoder和Decoder模型有效地賦予不同模塊不同的權重,從而使得整個模型具有更強的分辨能力。
本文采用基于注意力機制的深度神經網絡進行作者識別,整個作者識別流程如圖1 所示。原始文本經過降噪、分詞、詞性標注后提取其詞性標簽n元組合(POSn-gram)得到特征序列,特征序列經過Embedding 層轉化成相應的向量,然后在池化層取平均,再經過Attention 層被賦予不同的權重,最后經過輸出層得到分類結果。其中,Embedding 層、池化層、Attention層和輸出層構成了深度神經網絡。

圖1 作者識別流程Fig.1 Flowchart of authorship identification
神經網絡的第一層是Embedding 層,也叫輸入層。它的輸入是batch_size個POSn-gram 序列,這些序列以數字編號(索引)的形式呈現,并且每個序列含有seq_length個索引。Embedding層將每個索引映射成emb_dim維的向量,以便于刻畫不同特征之間的相互關系。
神經網絡的第二層是池化層,主要用來對樣本特征進行疊加平均。由于一篇文檔被轉化為seq_length個索引,每個索引又被映射成emb_dim維的向量,較多的特征數量會不可避免地引入很多噪聲。鑒于此,可以利用池化操作對樣本特征進行分組平均,通過設置pool_size的值可以控制分組大小。假設一個句子平均有N個詞,設置pool_size的值為N,意味著每N個詞進行一次疊加平均。這樣,池化操作在降低噪聲的同時賦予神經網絡快速閱讀的能力——從逐詞閱讀變為逐句閱讀。
神經網絡的第三層是Attention 層。池化層進行了特征的平均,這樣能在很大程度上減小噪聲的影響,避免過擬合,從而提高神經網絡的準確率;然而處于不同位置的向量組合對分類的貢獻不同,池化操作對此無能為力。因此本文引入注意力機制來給不同位置的向量組合分配不同的權重。注意力機制的示意圖如圖2所示。

圖2 注意力機制示意圖Fig.2 Schematic diagram of attention mechanism


Score 函數用于計算每個輸入向量和查詢向量之間的相關性。常見的Score函數有以下幾種形式:


根據注意力權重可以計算原序列狀態的權重均值,它等于注意力權重αts與隱藏層狀態點乘后求和。原序列狀態的權重均值也被稱為上下文向量(context vector),計算公式為:

最終的注意力向量(attention vector)需要將上下文向量ct和目標序列的隱藏層狀態ht連接后生成。Dense2是激活函數為tanh 的全連接神經網絡,用來對拼接后的向量進行tanh 變換。注意力向量的計算公式為:

神經網絡的第四層是輸出層,用于最終的分類。本文直接采用激活函數為softmax 的全連接神經網絡完成分類。輸出層的輸出是樣本屬于不同類別的概率:

本文沒有采用快速文本分類(fastText)[29]中的層次softmax,因為對于具有10 位候選作者的作者識別任務,普通的softmax 即可完成快速而高效的分類。此外,式(5)也可以寫成:

其中:N表示樣本的個數;xn表示第n個樣本歸一化后的特征向量,或者也可以理解為第n個樣本的特征序列經過Embedding 層生成的向量;yn為第n個樣本對應的類別標簽;權重矩陣A、B和C分別表示池化層對應的分組平均的權重矩陣、Attention 層對應的分配權重的權重矩陣以及輸出層對應的使用已學習的表示正確預測標簽的權重矩陣。
本文選取莫言、路遙、賈平凹等10 位作家的多部小說作品(共48.7 MB)作為語料進行研究。不同作者的語料規模如表1所示。

表1 作者語料規模表Tab.1 Scale table of author corpus
首先把同一位作家的多部作品進行合并,然后按照每個文檔1 000字的長度進行分割。每位作家抽取1 000個文本進行實驗,其中實驗集、驗證集和測試集的比例分別為:54%、6%和40%。作者的寫作風格主要反映在其遣詞造句的方式上,換句話說,作者排列詞語、組織句子的方式在很大程度上決定了其寫作風格。因此,本文選擇POSn-gram 來進行作者識別。POSn-gram 在很大程度上反映了作者詞語選用和搭配的方式,進而體現作者的寫作風格。之前關于n-gram 的研究大多基于離散的特征,采用統計和機器學習模型相結合的分類方法,這些方法沒有考慮特征之間的相互關系。本文采用連續n-gram特征,構建示例:
1)POS標簽序列:pnvnfxdvrnux。
2)連續2-gram特征:pn、nv、vn、nf、fx、xd、dv、vr、rn、nu、ux。
3)連續3-gram 特征:pnv、nvn、vnf、nfx、fxd、xdv、dvr、vrn、rnu、nux。
每一篇文檔都會被轉換成這樣一串POSn-gram 序列,然后又被轉換成相應的數字序列,從而得到特征序列。特征序列會通過Embedding 層轉化成相應的向量,然后參與訓練和分類過程。由于POSn-gram 被轉化成向量后,向量之間的距離可以反映這些POS 組合的相近程度,因此這樣的n-gram 特征被稱為連續特征[30]。普通n-gram特征可以表征作者詞性搭配的頻繁程度,但卻無法表征語序信息;而連續n-gram不僅可以充分表征語序信息,還能通過向量之間的距離體現不同詞性搭配之間的關系。換句話說,本文所采用的連續n-gram 特征同時結合了n-gram 特征和連續表示的優點,它既可以反映作者遣詞造句的方式,又能夠捕捉到不同詞性搭配的差別。
本文實驗以文檔為單位進行訓練,文檔中的詞匯和標點符號均用POS 標簽的形式進行呈現。為了更好地訓練模型,使用網格搜索來確定初始化向量維度、小批量大小、周期數、學習率等參數的最優組合。最終設置初始化向量維度為100,小批量大小為30,周期數為20,學習率為0.001。為了確定何種POSn-gram 更能體現作者的寫作風格,令n取1~5。特別地,當n=1時,意味著以單獨的詞性標簽作為分類特征。分別使用文本卷積神經網絡(Text Convolutional Neural Network,TextCNN)、文本循環神經網絡(Text Recurrent Neural Network,TextRNN)、LSTM、fastText 和本文模型對連續的POSn-gram 特征進行訓練和分類。表2 展示了5 種分類模型在不同n值下的實驗結果,使用準確率進行評估。

表2 不同模型的準確率對 單位:%Tab.2 Comparison of accuracy of different models unit:%
從表2 中可以看出,不同模型的預測準確率從低到高排序依次為:LSTM、TextRNN、TextCNN、fastText和本文模型。換句話說,針對不同的POSn-gram特征,本文提出的基于注意力機制的識別模型均獲得了最高的準確率。對于同一模型,不同n值對應的準確率差別不大,這說明對于采用連續POSn-gram特征進行中文小說作者識別的研究而言,n值的貢獻遠小于分類器對作者風格的捕捉。可以換一個角度進行理解,連續POSn-gram特征已經涵蓋了文檔的全部序列信息和詞語搭配信息,此時n在1~5 變化,并沒有帶來信息結構的變化。在這種情況下,分類器捕捉特征關聯的能力主要取決于模型的訓練,而并非初始特征組合的建構。
本文的基于注意力機制的神經網絡分為輸入層、池化層、Attention 層和輸出層四層結構。如果進行消融實驗,去掉Attention 層,則模型只剩下輸入層、池化層和輸出層三層結構。這是一個類似fastText的網絡結構,區別在于該網絡的輸出層使用了普通的softmax,而fastText的輸出層采用的是層次softmax。這個差異僅會對程序的運行時間產生影響,而不會影響作者識別的準確率,因此可以直接借用fastText的實驗數據進行對比分析。與fastText的結果進行對比可以發現,加入Attention 層后,不同POSn-gram 特征對應的準確率平均提高了2.14 個百分點。這是由于Attention 機制給處于不同位置的向量組合分配了不同的權重,進而使得整個網絡能夠捕捉文檔不同部分所反映出的作者風格,從而提高了準確率。因此可以得出這樣的結論:注意力機制能夠有效提高中文小說作者識別的準確率。
本文提出一種基于注意力機制的神經網絡,該網絡通過在fastText 的池化層和輸出層之間添加Attention 層得到。借助注意力機制,該網絡能夠捕捉文檔不同部分所體現的作者風格,同時又保留了fastText快速而高效的特點。在結合連續POSn-gram 特征進行的10 位作者識別實驗中,本文模型的準確率超過了TextCNN、TextRNN、LSTM 和fastText 這四種常見模型,比不添加注意力機制的fastText 平均高出2.14 個百分點。實驗結果表明,神經網絡中引入注意力機制能夠有效提高中文小說作者識別的準確率。以后可以在以下幾個方面繼續改進原有工作:
1)嘗試利用其他文本特征搭配注意力機制神經網絡進行研究;
2)分析影響注意力網絡的因素,例如文檔長度、嵌入維度等;
3)改進注意力網絡模型,比如由基于詞語的Attention 改為基于句子的Attention。