孫 成,孔 芳
(蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
篇章是句子層級之上的自然語言單位。篇章分析技術旨在研究篇章內部的語義關系,從整體上理解篇章[1]。篇章分析技術由底向上可以分為: 篇章理論的建立、篇章解析器的自動構建和篇章分析技術的上層應用。其中,篇章解析器的自動構建研究是篇章分析技術的核心。近年來,隨著中文篇章理論的不斷完善和篇章資源構建工作的進展[2-5],數據驅動的中文篇章解析器的自動構建成為可能。
本文使用漢語連接依存樹篇章結構語料(Chinese connective-driven discourse treebank, CDTB)[5](以下簡稱漢語篇章結構語料),其結合了RST[6]的樹形層次結構、PDTB[7]的連接詞以及漢語復句理論[8]的單復句的理論優點,自底向上地將子句(即篇章基本單元,以下簡稱子句)在連接詞的驅動下組合為一棵篇章結構樹,用連接詞表征篇章關系的類型,并在內部節點中標出篇章關系和核心位置。針對該語料構建自動篇章解析器可以大致劃分為三個子任務: ①子句的自動分割,也就是篇章基本單元(EDU)的識別;②篇章樹形結構的解析,即以段落為基本單元,迭代地將EDU構建成上層節點,并最終組織成一棵獨立的篇章樹;③篇章關系識別與分類,即判別聯接形成上層節點的EDU間表達的邏輯語義關系。其中,中文篇章關系識別的相關研究和工作較多,方法也更為完善[9-11],本文并不關注這一任務。相對而言,篇章結構對于篇章級別的上層應用非常有幫助[12-13],本文研究的重點是中文篇章樹形結構自動生成。此外,我們認為篇章樹形結構對于篇章關系類型的判斷也起著至關重要的約束作用。
本文的主要工作包括: 詳細分析了中文篇章結構語料的統計特征;提出了一個完整的從篇章純文本到篇章樹形層次結構的解析框架,及可供參考的性能評價標準;對比使用不同方式對子句進行特征表示對最終性能的影響表明,淺層詞法特征仍然在篇章結構解析中發揮主要作用;最后,本文分析了結構解析中誤差傳播對于最后性能的影響。文章的組織如下: 第1節首先介紹實驗使用的中文篇章語料以及相關的統計結果;第2節介紹相關工作,并詳述本文使用的篇章結構解析框架;第3節給出實驗配置、實驗結果以及對實驗結果的分析;最后一節是對當前工作的總結和展望。
圖1給出了CDTB語料中文件名為chtb_0083.xml文檔中編號401的篇章結構樹。其中葉子節點用于表示子句。連接依存理論[14]中,子句定義為復句理論中的單句或者復句的分句,其至少包含一個謂語結構和表示一個完整主題。篇章結構樹的中間節點為篇章關系節點,關系節點將下一級的篇章子結構組合為上一級的篇章結構,最終形成一棵完整的篇章樹。篇章子結構的組合可由連接詞驅動,形成的篇章關系稱為顯式關系;而缺乏顯式連接詞指導,由語義關系的組合則稱為隱式篇章關系。和修辭結構理論相似,連接依存理論中,篇章關系也有主次之分,核心部分表達文章主體意圖,次要部分起對核心部分修飾和補充的功能。
漢語篇章結構語料以段落為單位,在賓州中文樹庫6.0版本(CTB 6.0)的基礎上標注了500篇文檔,包含段落數2 342個,每個段落獨立標注為篇章結構樹。共包含10 638個子句, 平均每個篇章結構樹包含4.54個子句。篇章結構樹的平均高度為2.43,平均包含3.12個關系節點。語料中,篇章關系按核心位置分為三個類別: 核心在左、核心在右和多個核心(所有子節點都為核心)。表1給出了篇章關系中,各個核心位置的數量和占比。

a. 據盧仁法介紹,經過全國稅務系統八十萬干部的努力,今年全國工商稅收收入任務已提前十一天超額完成,b. 總體情況比較好。c. 但企業欠繳稅款的情況比較嚴重,d. 尤其是企業欠繳增值稅和消費稅這“兩稅”的問題突出,e. 嚴重影響了今年“兩稅”任務的完成。f. 到十一月底,全國企業欠繳的工商稅款累計達到了四百一十九億元,g. 其中欠繳國內增值稅和消費稅就達三百零七億元。圖1 CDTB語料中文件名為chtb_0083.xml文檔編號401的連接依存篇章結構樹圖示下劃線表示連接詞,圖例中“-”表示缺省連接詞

表1 篇章關系核心位置數量和占比
不同于RST-DT將整個篇章標注為一棵篇章結構樹的策略,漢語篇章結構語料以段落為單位,包含子句更少,樹的高度也更低,而且子句邊界都有標點符號作為標識,給篇章結構解析中的樹形結構的建立帶來幫助。然而,中文篇章結構語料中隱式篇章關系占比達75.2%。另外,核心位置分布不平衡,多個核心的關系占比達51.3%,使得篇章核心位置的自動判定成為挑戰。
篇章結構解析是一類結構預測(structured prediction)任務。對于給定的子句序列,模型需要預測出組織這些子句的最合適的篇章結構。目前的篇章解析工作大多參照句法解析的方法,可以分為基于圖(如Cocke-Younger-Kasami,CYK算法)的解析方法和基于轉移系統的解析方法。其中,基于轉移系統的方法將篇章樹的構建過程看成是一個狀態轉移路徑的搜索過程。一個確定的狀態轉移序列對應一棵確定的篇章樹形結構,從而將結構預測問題轉換成為對每個狀態正確預測下一個局部轉移動作的分類問題。基于轉移的解析策略因其具有線性的時間復雜度并取得了與CYK等基于圖的解析方法相當的性能,因而被廣泛應用。
相較于中文,英文篇章解析研究工作開展較早,其中關于篇章結構解析任務主要圍繞RST-DT展開。其中具有代表性的有: Hernault等開發的基于線性SVM、采用自底向上貪婪策略的HILDA篇章解析器[15];Feng和Hirst提出了一種兩步解析的方法,分別使用兩個線性鏈條件隨機場模型依次構建句內和句間的篇章結構[16];Ji和Eisenstein等嘗試通過線性變換,將稀疏的子句特征轉換為低維度的向量表示,并通過線性SVM預測轉移系統的動作[17];Jiwei Li等基于遞歸神經網絡對篇章子結構進行建模,使用表解析的方法完成自動篇章分析[18]。中文方面,由于篇章理論不夠完善,篇章自動分析技術發展緩慢。可供參考的工作有: 孔芳等基于CDTB語料采用流水線的方式構建的端到端的中文篇章解析器[19];吳永芃等為簡化篇章分析難度,提出了篇章依存樹的篇章結構體系[20]。
本文使用的Shift-Reduce轉移系統可以由式(1)所示的五元組定義:
SR=C,T,Cs,Ct,o
(1)
C:所有可行的狀態,每個狀態包含一個棧和一個隊列結構。隊列中存放待處理的子句,棧中存放正在處理的篇章子結構(包含子句和篇章樹的子樹)。
T: 每個狀態對應的可行動作,在表2中給出。Shift動作執行是會從隊列中彈出頂部子句,壓入棧中;Reduce動作將棧頂的頭兩個樹節點組合成一個節點,并將合并的兩個節點作為新節點的子節點。
Cs: 初始狀態集合,棧為空,隊列中依次存放篇章所有的子句。
Ct: 終止狀態集合,隊列為空,棧中之包含篇章結構樹的根節點,終止狀態不能執行任何轉移動作。
o:Oracle函數,給定狀態,始終返回該狀態生成正確篇章結構的下一個轉移動作。從初始狀態,不斷執行Oracle函數返回的動作,最后到達終止狀態的狀態轉移序列對應一棵正確的篇章結構樹。

表2 Shift-Reduce狀態轉移動作
圖1的篇章樹形結構可以由初始狀態在Oracle函數的指導下執行多次狀態轉移確定。表3給出了該正確的狀態轉移序列。可以看出,Shift-Reduce轉移系統自底向上地構建出篇章結構樹。給定一棵二元的篇章樹,Oracle函數的輸出動作序列可通過從標準二元篇章結構樹的根節點開始后序遍歷變形實現,遍歷中遇到葉子節點則輸出Shift動作,遇到關系節點則輸出Reduce動作。由于Shift-Reduce生成的樹結構為二叉樹,所以狀態轉移次數為2n-1,其中n為篇章中包含的子句數目。

表3 狀態轉移序列示例

續表
由2.1節可知,基于轉移的篇章結構解析的關鍵在于構建模型模仿Oracle函數,因此可以看成對給定狀態進行分類的問題。為了在確定結構的同時確定篇章關系的核心位置,我們將Reduce動作擴展為Reduce-左核心、Reduce-右核心和Reduce-全核心。總的分類標簽數變成4個,是一個結構生成和核心關系判定的聯合模型。
神經網絡和文本分布式表示的應用使得在自然語言處理領域取得了突破性的進展。本文使用SPINN(Stack-augmented Parser-Interpreter Neural Network)模型[21],對歷史轉移狀態序列、篇章子結構進行分布式表示,得到當前狀態的表示,用于預測下一個轉移動作。
2.3.1 SPINN模型

圖2 SPINN模型示例
圖2給出了SPINN模型在表3中時刻4的模型圖示。SPINN用一個tracking LSTM網絡維護整個解析過程的歷史轉移狀態。每個時刻tracking LSTM輸入棧的頭兩個元素和隊列的頭一個元素,其中如果棧的頭兩個元素結合緊密則應該執行Reduce操作,而棧的頭元素與隊列的頭元素決定是否將隊列的頭元素移入棧內。時刻t的解析狀態trackingt用于預測時刻t下一個動作的概率分布,并且作為下一個時刻的輸入表示解析狀態的歷史信息。在一個解析過程中,模型的狀態隨著狀態轉移不斷推進。我們使用動態計算圖而不是每次轉移后重新生成計算圖,以保留模型的狀態。

2
2.3.2 子句的特征表示
棧和隊列中每個元素,對應部分解析的篇章結構樹的某個葉子節點(子句節點)或者內部節點(關系節點)。每個元素分別表示為一個狀態向量c和一個輸出向量h。我們首先介紹如何使用不同的方法對子句進行特征表示,不同表示方法的性能差異在第3節中以最后性能評價的方式給出。
首先我們使用規則的方法從子句中提取啟發式的特征作為子句表示的性能基準,包括第一個詞和最后一個詞的Embedding,其中Word Embedding在GigaWords上預訓練,并在訓練中不斷優化;另外還有第一個詞的詞性的向量表示,詞性由Berkeley Parser解析獲得。詞向量的維度為50,詞性的Embedding維度為15。
將上述特征向量拼接之后通過一個線性變換得到子句的c和h的表示,如式(4)所示。
除基本特征外,Average BOW Embedding的子句表示方法對子句中所有詞對應的詞向量w1,w2,…,wk求和取平均,用上文同樣的線性映射方法取得子句的h和c,如式(5)、式(6)所示。
我們首先使用一個雙向LSTM對子句的詞序列進行正向和反向序列編碼,將正反向LSTM的輸出拼接后作為子句中詞w1,w2,…,wk編碼為包含上下文序列信息的序列表示hw1,hw2,…,hwk。使用自注意力機制取得編碼后的信息的權重,按權重將hwi相加作為子句的特征表示。
其中,向量q是注意力機制中的Query,可以被解釋為哪些LSTM序列編碼輸出對于篇章結構解析比較重要。q在訓練開始時隨機初始化并隨著訓練學習合適的參數。
卷積神經網絡廣泛用于提取句子的詞匯特征。首先,對于子句中的每一個詞分別用50維、15維、15維的向量分布式表示詞、詞性和位置信息。詞向量同上使用在GigaWords上預訓練的詞向量,詞性和位置的Embedding隨機初始化。拼接后的每個詞的向量表示維度為dw。如圖3所示,我們使用60個1×dw、30個2×dw和10個3×dw窗口大小的卷積核從子句中提取一元、二元和三元的詞匯特征。然后使用最大池化方法挑選每個卷積核的最顯著的詞卷積特征,最后將池化后的特征與基礎特征拼接起來,經過線性變換得到子句的c和h的表示。
2.3.3 關系節點的特征表示
受邏輯語義學的組合原則啟發,我們相信篇章關系節點的語義與其組成部分的語義及其部分的組合方式密切相關。Tree-LSTM已經被證明在組合語義的表示方面十分有效[22],我們引入Tree-LSTM作為轉移狀態棧中的部分篇章子樹的組合語義表示方法。如表3中時刻2,我們需要執行Reduce動作,并將a和b兩個葉子節點組合為其父關系節點r1,設此時根據上一節介紹的策略將a和b表示為ca,ha,(cb,hb)。根據Tree-LSTM做如下推導,得到其a、b父節點r1的特征表示,如式(10)~式(12)所示。

圖3 用于子句特征提取的CNN網絡圖示
中文篇章語料(CDTB)[5]包含500篇文檔,每個文檔包含不等的若干以段落為單位的篇章樹形結構。在分割之前為了方便處理,我們去掉了組織不良的編號為150、193、208、287、300、644的文檔,其他的文檔按表4劃分為訓練集、開發集和測試集。由于Shift-Reduce框架只能生成二叉樹,而中文篇章結構語料中的多核心節點可能包含多個孩子節點,所以我們在訓練和評測之前會將所有的篇章樹結構中多元節點通過不斷歸并,最后到兩個孩子轉換為二叉樹。

表4 語料劃分
相對于RST在整個篇章上標注篇章結構,中文篇章結構語料以段落為單位,樹的高度和節點數都少得多。但RST的評價方法是將核心位置和篇章關系放在子節點上,如果子節點的邊界位置和核心標注正確,則視為一個正確的節點。為了更好地反映篇章結構解析的性能,本次實驗采用更為嚴格的性能評價方法。評價包括兩方面:
① 節點結構正確的評價: 對于一棵自動解析篇章結構樹的內部節點,與其標準篇章結構樹比對時,只有其子節點的邊界位置全部正確,才能算作是一個結構正確的節點。
② 關系核心正確的評價: 只有在結構正確的前提下,節點的核心位置判定正確,才能算作是一個核心位置正確的內部節點。
依據上述評價準則,我們得到了如下計算每棵樹的準確率P和召回率R,如式(13)、式(14)所示。
在求出測試集每棵樹的準確率和召回率后,取平均求得平均準確率Pavg和平均召回率Ravg,使用式(15)求得整個系統F1性能指標:
模型的訓練以單棵篇章樹為單位。首先將篇章樹的子句節點按照2.2節的方法編碼為cb,hb,然后在Oracle函數的引導下不斷執行狀態轉移,并保存每一步的預測狀態轉移動作概率分布pi和正確的轉移動作o(ct)。對于每個轉移狀態,棧中的編碼和元素cs,hs和隊列中的編碼后元素cb,hb以及tracking LSTM的隱藏狀態(ctracking,htracking)的維度均為128。假設一個篇章包含n個子句,則除終止狀態外,構建對應篇章解析樹有狀態序列c0,c1…c2n-2,每個狀態由SPINN模型輸出下一個動作的預測概率分布p1,p2…p2n-1,損失函數定義為式(6)所示。
L2正則化項系數λ設置為0.000 01,使用 Adam 優化器訓練優化模型參數,學習速率設置為0.001并隨著訓練次數線性下降。
模型在訓練集上迭代訓練優化參數,保存每次訓練過程中開發集上表現最好的模型用于最后性能評價的模型。
標準子句分割是指,對于測試集中的標準篇章結構樹,我們保留其子句的劃分,去掉篇章樹的內部關系節點,用上述模型重新構建篇章結構,最后使用3.2節介紹的性能評價方法給出最終的模型在結構構建和核心判定方面的性能。
表5給出了在標準子句分割下使用不同子句特征表示,最終取得的解析性能。值得指出的是,由于在標準分割的子句上構建關系,二叉樹的內部節點數比關系節點數少1,所以自動生成篇章結構樹的內部數與標準篇章結構樹的內部節點相等,所以準確率、召回率和F1值在同一個指標下相等。由實驗結果可知,在標準子句分割下,average BOW Embedding、BiLSTM with Attention和CNN的子句表示的方法相對于只使用基本特征,都會帶來性能提升。使用卷積神經網絡對子句進行表示在結構和核心位置的判別上都取得了最好的性能,說明詞匯短語特征對于啟發式的篇章結構分析仍然起主要作用,應該放到結構生成的首選位置。

表5 標準子句分割下的結構解析性能
中文篇章結構語料中,子句都有標點作為邊界標識,但不是所有的標點都可以作為邊界標識。比如圖1中的f子句:
f. 到十一月底,全國企業欠繳的工商稅款累計達到了四百一十九億元,
“到十一月底”單獨并不能表達一個主題,所以其后面的逗號不能作為邊界的標識。我們參照文獻[23]中的方法,對是否為邊界標識包含歧義的標點分類。先使用文本中出現的“。!?”標點作為分割標識,將篇章文本切割為句子。然后依照文獻[23]從逗號和分號的上下文中抽取詞法、句法等特征,使用SVM分類器將句子中的逗號和分號分類為“是邊界標識”和“不是邊界標識”兩個類別。逗號和分號的分類性能在表6中給出。

表6 逗號、分號是否為子句邊界分類性能
將分割后的子句作為輸入,使用上述篇章結構解析框架構建篇章結構,最后測試集上的性能在表7 中給出。

表7 自動子句分割下的結構解析性能
從性能中可以看出,雖然逗號、分號的分類性能達到0.93的F1值,但是由于我們采用嚴格的結構評價方法,邊界分割的錯誤直接或間接影響篇章樹上層結構,子句分割的錯誤會對最后結果造成較大影響。另外,在標準子句分割下,采用基本特征+BOW和基本特征+BiLSTM with Attention在核心位置檢測上取得了相當的性能,而在自動子句分割下,采用基本特征+BiLSTM with Attention的核心位置檢測性能相比基本特征+BOW配置有較大差距。我們的解釋為: 由于LSTM擅長捕獲序列上長短距離的語義依賴關系,因而自動子句分割的錯誤更容易影響到LSTM的序列模型。
表8給出了自動子句分割、子句表示使用基本特征+CNN的配置下,核心位置判別的性能。再次強調,文本給出的評價機制中,只有在節點結構正確的前提下才能保證評價核心位置判別的正確性。自動子句分割和節點結構的性能都對核心位置性能的判斷產生影響,因此表8中給出的核心位置判別的準確率和召回率都偏低。此外,最終的性能印證了1.2節對于核心位置統計結果的推斷。篇章關系核心位置的分布不平衡和隱式篇章關系的高占比,使得核心位置的自動判定需要在數量不多的篇章語言資源的上學習篇章單元之間的深層語義信息,因而很難取得理想的判定效果。

表8 整個結構解析框架的核心位置判定性能
本文在中文篇章結構語料上,基于轉移系統和神經網絡的方法,構建了面向中文的篇章結構解析框架。其能夠從純篇章純文本構建篇章樹形結構,并具有線性的時間復雜度,有望為下游如篇章摘要生成、篇章級的情感分析等任務提供幫助。
相較于句子,篇章中遠距離的語義依賴關系更多,中文在行文時句子的組織更為松散。自底向上的結構解析方式只從局部特征考慮篇章結構的組織,缺乏全局信息如篇章主題的指引。我們未來的工作將考慮篇章整體信息,嘗試用自頂向下的方法依次分解篇章組成成分,完成篇章結構的構建。