楊陳菊,邵玉斌,2,孫 俊,2,龍 華,2,皮乾東
1(昆明理工大學 信息工程與自動化學院,昆明 650500) 2(昆明理工大學 云南省計算機國家重點實驗室,昆明 650500)
句法分析是自然語言處理的基本任務,這個任務是使機器能夠自動的識別出句子的句法單位和這些單位的塊標記信息,而本文研究的重點內(nèi)容是識別出句子的句法單位而不包括塊的類型標記.漢語對于詞性要求不像英文那么嚴謹,在漢語中,動詞可以作名詞,名詞可以作動詞、形容詞等現(xiàn)象隨處可見,因此,獲取句法邊界才是關鍵.由此對于句法邊界的識別研究也有著重要的意義,同時句法分析也變得簡單高效.
句法分析發(fā)展分為3個階段,分別是基于規(guī)則、統(tǒng)計、機器學習.早期常見的句法分析算法有:自頂向下和自底向上分析算法、線圖分析法、CYK(Cocke-Younger-Kasami)算法等.對傳統(tǒng)方法進行改進的研究,如皮乾東等[1]采用逆向掃描的方式改進LR算法,該方法存在規(guī)則不完整,魯棒性低的問題.近年來大多研究者使用機器學習方法并取得了可觀成果,HMM(Hidden Markov Model)[2]、CRF[3]、神經(jīng)網(wǎng)絡[4]被用于句法分析,這些方法是對句子的所有可能的句法樹都計算一個得分,然后選擇得分最大的對應的句法樹為最終的分析結(jié)果.對于外語而言,目前比較好的是Shen Y等[5,6]提出的一種無監(jiān)督句法結(jié)構歸納的神經(jīng)語言模型(Parsing-Reading-Predict Networks,PRPN),可同時從未加注釋的英文句子中歸納出句法結(jié)構,并能夠利用推理結(jié)構來學習更好的語言模型.Eliyahu等[7]把LSTM應用到依存分析中,很好地獲取了無限長度地上下文信息,得到了比FNN(Factorisation-machine supported Neural Networks)更好的效果.王衡軍等[8]則用LSTM和CNN(Convolutional Neural Network)分別提取詞向量特征和全局向量特征,取得了不錯的效果.諶志群等[9]創(chuàng)新性地結(jié)合樹形概率和BiLSTM對中文句法進行分析.谷波等[10]基于循環(huán)神經(jīng)網(wǎng)絡自底向上地使用中文二分結(jié)構的特點進行句法分析,在句子級別上正確率達43%.
詞塊識別作為層次句法分析中的關鍵一步,在研究歷程中分為基于規(guī)則、統(tǒng)計、規(guī)則和統(tǒng)計結(jié)合、機器學習4個階段.其中基于規(guī)則的方法通常是根據(jù)語言的詞法、語法等語言學特點人工提取簡要規(guī)則,例如總結(jié)詞性的組合規(guī)則,或者通過統(tǒng)計手段獲得短語的構建規(guī)則和大量短語識別模板,再利用這些規(guī)則和模板進行詞塊識別.基于統(tǒng)計的方法通過對文本進行統(tǒng)計獲得各種統(tǒng)計量,例如詞頻、幾個詞語的詞語共現(xiàn)次數(shù)、互信息、信息量、C-value等,然后利用這些統(tǒng)計量進行短語的識別.基于規(guī)則和統(tǒng)計結(jié)合的方法往往能夠獲得比前面二者更高的準確率,但仍然需要人工總結(jié).隨著機器學習的發(fā)展,HMM[11]、CRF[12]、神經(jīng)網(wǎng)絡[13]等方法被用于詞塊識別中.Huang等[14]在LSTM模型的基礎上加入CRF模型提出了一種序列標記模型,能有效的利用將來和過去的輸入數(shù)據(jù)特性.袁源[15]等先用CNN獲取字向量,然后BiLSTM獲取隱含特征,最后利用CRF輸出預測序列標簽.Zhang等[16]運用多層堆疊神經(jīng)網(wǎng)絡(stacked neural network)與CRF結(jié)合,F(xiàn)1值相較于傳統(tǒng)CRF提高了3.75%的.以上結(jié)果表明了CRF對預測序列前后連貫性的修護作用.機器學習的方法避免了繁雜的特征工程,效果有顯著提高.
核心詞提取是層次句法分析的重要步驟,目前國內(nèi)外對短語的核心詞提取研究較少,而文檔關鍵詞的提取相對較多.關鍵詞的提取分為有監(jiān)督和無監(jiān)督兩類.有監(jiān)督方法一般是把關鍵詞提取的問題轉(zhuǎn)化為二分類的問題.其中分類器利用決策樹[17],神經(jīng)網(wǎng)絡[18],BiLSTM-CRF[19]等得到了較好的效果.無監(jiān)督方法通過文本自身的詞匯信息進行提取.比較經(jīng)典的方法有TF-IDF(Term Frequency-Inverse Document Frequency)、TextRank、LDA(Latent Dirichlet Allocation).
上述的句法分析文獻都沒有考慮漢語句法結(jié)構的層次性,雖然取得了很高的塊F1值,但從整句來看,正確率依然很低.短語結(jié)構句法樹是自底向上按層遞歸結(jié)合構成的.本文結(jié)合句法結(jié)構的層次性提出了一種把核心詞作為詞塊的形式替換的句法樹結(jié)構.在漢語層次句法邊界分析中,將詞塊識別和核心詞提取分開進行,通過結(jié)合BiLSTM網(wǎng)絡及CRF進行層次詞塊識別,通過改進TextRank方法來提取詞塊的核心詞,構建了簡單且易擴展的句法分析器.
短語結(jié)構句法樹如圖1(a)所示,句中的詞語自底向上按層構成詞塊,體現(xiàn)了句法分析的層次性.其中NP、VP、IP代表詞塊的類型,詞塊類型根據(jù)詞語詞性等特征在不斷的發(fā)生變化.為了更好的句法分析,本文提出一種把核心詞作為詞塊的形式替換的句法樹結(jié)構,如圖1(b)所示.在層次分析中,“金融 工作”合成詞塊后用其核心詞“工作”來形式上表示這個詞塊,同樣“顯著 成績”用其核心詞“成績”來替換,在第2層分析中重復以上步驟,直到最后只剩一個詞語.
圖1 短語結(jié)構句法樹和引入核心詞的結(jié)構句法樹Fig.1 Phrase structure syntax tree and structure syntax tree of introduces the core word
在層次句法邊界分析中,只需要識別出句子的句法單位而不包括塊的類型標記.每一層分析采用詞塊識別的方式識別出該層的語塊,然后把該層識別出來的詞塊送入核心詞提取模型中進行核心詞的提取,再把提取結(jié)果輸入下一層,進行下一層的詞塊識別,識別后又進行核心詞識別,再把提取結(jié)果輸入下一層,在下一層中循環(huán)以上步驟,直到最后剩下為一個詞.分析流程如圖2所示.開始時先判斷句長(詞語個數(shù)),句長為1,分析結(jié)束;句長為2,不用進行詞塊的識別,默認兩個詞語為一個整體,即默認為一個詞語塊,直接融入核心詞提取模型中;句長大于2,首先進行詞塊識別,識別結(jié)果再送入核心詞識別模型中.識別結(jié)果又進行句長判斷,直到句長為1結(jié)束.
圖2 層次句法分析流程圖Fig.2 Flow chart of hierarchical syntactic analysis
本文與傳統(tǒng)句法分析不同的地方在于將詞塊識別和核心詞提取分開進行,識別出句子的句法單位.在詞塊識別模塊,使用BiLSTM+CRF網(wǎng)絡提取上下文特征,識別出詞塊;在核心詞提取模塊,通過加入詞語的相似度信息、位置信息、詞性信息改進TextRank方法,提高核心詞識別準確率.關鍵詞提取是指在文檔中提取出關鍵詞,本文的核心詞識別是在詞塊搜索范圍內(nèi)提取一個核心詞,以便把一個詞塊規(guī)約為一個詞.因此重新定義了詞語的重要性指標.
本文將層次詞塊識別問題轉(zhuǎn)換為一個序列標記的問題,采用BiLSTM+CRF模型進行詞塊序列標記的識別.如圖3所示(方框表示向量,圓圈表示LSTM網(wǎng)絡),將一個句長為n的句子S={w1,w2,w3,…,wi,…,wn},i=1,2,…,n作為細粒度詞塊識別的輸入,其中w為句子中的詞語,i表示詞語在句子中的位置,n為句子中詞語的個數(shù).分布式詞向量內(nèi)部包含詞與詞之間的相似度信息,對相鄰詞塊的識別有較好的作用,因此通過詞嵌入層把詞語映射為詞向量.然后將詞向量輸入到BiLSTM模型中,獲取該句子的上下文詞特征.接下來把BiLSTM的輸出輸入到CRF模型中,經(jīng)過一個線性層,最后輸出最高分數(shù)對應的標記序列作為預測結(jié)果.其中詞塊標記方法采用BIO標記法,“B”表示詞塊的開始,“I”表示詞塊的中間及結(jié)尾,“O”表示單獨一個詞構成一個詞塊.
圖3中xi=[xi1,xi2,…,xin],(n=dw+dp),包含了詞向量xwi∈Rdw和詞性向量xpi∈Rdp信息,xi由兩個向量拼接后經(jīng)過線性和非線性變換后獲得,如公式(1)所示,dw表示分布式詞向量的維度,dp表示分布式詞性向量的維度,wx表示權重矩陣,bx表示偏移向量,激活函數(shù)g為sigmoid函數(shù).最后可以得到大小為(dw+dp)×n的輸入矩陣x.xwi和xpi分別從訓練好的詞向量矩陣和詞性向量矩陣中索引獲取.
xi=g(wx[xwi;xpi]+bx)
(1)
圖3 BiLSTM+CRF詞塊識別模型Fig.3 Chunk recognition model of BiLSTM+CRF
BiLSTM層如圖4所示,BiLSTM同時從前向和后向獲取蘊含上下文信息的詞向量和詞性向量特征.LSTM網(wǎng)絡在每一時刻引入輸入門it、遺忘門ft、輸出門ot和記憶單元機制ct,當前時刻的輸出不僅僅取決于當前的輸入xt,還取決于前一時刻的記憶向量ct和隱層向量ht,前向LSTM各個機制的獲取如公式(2):
圖4 雙向LSTM網(wǎng)絡模型Fig.4 BiLSTM neural network model
(2)
(3)
BiLSTM通過前向和后向傳遞歷史信息,從而可以全面學習有效的在不同語境中的詞向量和詞性向量特征.BiLSTM層的輸出經(jīng)過線性層和log-softmax層獲得概率矩陣,softmax函數(shù)如公式(4),其中zi表示線性層的輸出.
(4)
(5)
log-softmax目的是縮小值的范圍,可以避免上下溢出,如公式(5)所示,其中M=max(zi),i=1,2,…,n,這樣處理加快了運算速度,并保持數(shù)值的穩(wěn)定.
BiLSTM層以及經(jīng)過線性層和log-softmax層的輸出結(jié)果是給單獨的標簽解碼,并沒有考慮到預測標簽信息的前后連貫性,假設能夠利用相鄰的輸出預測標簽信息,對預測結(jié)果會有很大的提升.CRF能夠?qū)W習輸出結(jié)果序列的轉(zhuǎn)移特征,能很好的解決這個問題,起到聯(lián)合解碼的作用.
句子的詞塊識別可以看成是句子的詞塊劃分標記的優(yōu)化問題,如公式(6)所示.其中y表示句子S的任意一種詞塊劃分方式,Y表示句子S的所有可能的詞塊劃分方式(所有可能的標記序列),θ包括模型中的所有參數(shù),y*為句子S的預測結(jié)果,預測結(jié)果為使得該句子詞塊的標簽序列得分Score(S,y;θ)最高的詞塊標記方式.
(6)
某個詞塊標記序列y的得分Score(S,y;θ)的得分計算式如公式(7)所示:
(7)
其中P表示狀態(tài)輸出矩陣,即log-softmax層輸出的向量序列,維度為n×l,n為句長,l為標記的種類個數(shù),本文中使用的是BIO標記法,即l=3;Pi,j表示第i個單元輸出的得分向量.A表示標記序列的轉(zhuǎn)移矩陣,Ayi-1,yi則表示標記yi-1轉(zhuǎn)移到標記yi的得分.該標記序列的最后得分如公式(8)所示:
(8)
訓練目標函數(shù)如公式(9)所示:
(9)
在句法分析中,詞塊的核心詞作為該詞塊的形式代表,本節(jié)研究的問題是如何提取詞塊的核心詞.通過改進TextRank算法進行詞塊核心詞的提取.TextRank是一種用于文本的基于圖的排序算法,其思想是一個詞塊中,若有一個詞語的權值很高,那么與他關聯(lián)的詞語的重要度也會根據(jù)這個詞的重要性提升,越重要的詞對應節(jié)點的權值越高,所以我們把詞塊核心詞識別的問題轉(zhuǎn)換成詞塊中的詞匯的重要程度的排序問題,然后提取節(jié)點權值最大所對應的詞語.
首先構造一個有向圖G=(W,E),其中W表示詞語節(jié)點,E表示邊,節(jié)點wi的權重計算式如公式(10):
(10)
(11)
其中simji為詞語wj與wi的余弦相似度,x為Word2vce詞向量.
節(jié)點wi的權重的初始值設如公式(12)所示,然后進行迭代計算直到收斂:
(12)
Word2vce本身含有語義相似度信息[20],現(xiàn)有方法中詞語的重要度權值只考慮了詞語的語義相似度.但詞塊中詞語的重要度不止這一個因素.漢語短語的基本類型分為五類:偏正、動賓、補充、主謂和并列.其中偏正結(jié)構前偏后正,核心詞在后,主要因素為詞語的位置;動賓和主謂是支配關系,核心詞主要為動詞,補充的核心詞為前面的動詞或形容詞,主要因素為詞語的詞性.綜上所述詞塊中詞語的重要程度還取決于詞語的位置和詞性信息.因此本文在此基礎上添加了詞匯的位置信息和詞性信息.對于位置信息遵循“前修飾后”的原則[21],越后出現(xiàn)的詞其權值越高,反之越小,如公式(13)所示:
(13)
其中M為詞wi在詞塊中出現(xiàn)的次數(shù),N為詞塊的長度,Lk(wi)為wi在詞塊中的位置.在位置信息矩陣中,wi和wj的詞性信息值為0.5×(IL(wi)+IL(wj)).
詞性對詞語的重要度影響因素的構造函數(shù)如公式(14)所示:
(14)
其中pos為詞性分類集合,本文把詞性分為以下4類:動詞、名詞、形容詞和其他,則|pos|=4,Pk(wi)表示詞性標記,動詞類標記為4,名詞類標記為3,形容詞類標記為2,其他標記為1,遵循“動詞>名詞>形容詞>其他”的原則,詞性的具體分類見表1.在詞性信息矩陣中,wi和wj的詞性信息值為0.5×(IP(wi)+IP(wj)).另設wi的語義相似度信息如公式(15)所示:
(15)
IS表示若一個詞的重要度很高,與他越相似的詞也會根據(jù)它的重要度做相應的提升.
在迭代計算前先獲取概率轉(zhuǎn)移矩陣如公式(16)所示:
(16)
其中Tji表示節(jié)點詞匯wj的影響因素轉(zhuǎn)移到節(jié)點詞匯wi的概率,即有向圖G=(W,E)中節(jié)點連接的邊權,計算式如公式(17)所示:
(17)
其中α、β、γ分別為語義相似度信息、節(jié)點位置信息、節(jié)點詞性信息的權值,且α+β+γ=1.
最后按公式(18)優(yōu)化權重迭代計算過程,迭代計算直至收斂為止.迭代計算方法是逐步逼近最優(yōu)近似解的過程,當滿足終止迭代的條件時,能獲得一個足夠精度的近似極小值,我們認為此時達到了收斂條件,這一條件就是迭代計算的終止準則.迭代計算的終止準則一般有3種方法:點距準則、函數(shù)下降量準則、梯度準則.本研究采用函數(shù)下降量準則:當相鄰迭代時刻的目標函數(shù)值的下降量達到一個充分小值時,迭代終止,閾值設為0.0001.
(18)
其中,概率轉(zhuǎn)移矩陣T維度大小為N×N;R=[w1,w2,…,wN]維度大小為N×1,其元素分別對應詞塊中第一個詞至最后一個詞的重要度;e表示維度大小為N的單位向量.
表1 詞性分類表Table 1 Part of speech classification table
實驗數(shù)據(jù)集來自賓州中文樹庫(CTB8.0),首先對數(shù)據(jù)進行了以下處理:
1)去除短語標記,只保留邊界信息.
2)去除空節(jié)點和一元短語邊界.
3)去除含未知符號的句子,例如英文單詞、“-------”、“.....”、“#”號等無明確意義的符號;去除重復的句子;去除無意義的句子,例如人物姓名列表等.
4)替換類型詞:用“number”替換數(shù)字,“time”替換日期,“name”替換人名,“percent”替換百分數(shù),“ordinal”替換序數(shù).
5)詞塊采用BIO標記方法.
最后選出包含10000個句子,將其中9000個句子作為訓練集,驗證集和測試集各1000句.
為驗證模型性能,設置了12組模型實驗.其中,詞塊識別模塊設置了3組實驗,分別采用了CRF、BiLSTM、BiLSTM+CRF模型進行對比,其中的CRF詞塊識別特征模板和BiL-STM網(wǎng)絡詞塊識別的超參數(shù)設置見表2和表3;核心詞識別模塊設置了4組實驗,分別單獨驗證相似度信息、位置信息、詞性信息的核心詞識別方法對句法邊界分析的影響,以及驗證將3種信息聯(lián)合作用對句法邊界分析的影響.實驗還給出不同句長下的分析結(jié)果,按句長分為4類:1
表2 CRF詞塊識別特征模板Table 2 CRF word block recognition feature template
表3 BiLSTM詞塊識別超參數(shù)設置Table 3 LSTM block recognition hyperparameter setting
表4 核心詞識別參數(shù)設置Table 4 Key word identification parameter setting
句法邊界的識別模型評價指標有P、R和F1值,其中P表示正確率,其值為分析結(jié)果中正確的短語個數(shù)占分析結(jié)果中的短語個數(shù)的百分比;R表示召回率,其值為分析結(jié)果中正確的短語個數(shù)占測試集中總的短語個數(shù)的百分比;F1表示短語級別的綜合指標:F1=2×P×R/(P+R).本文統(tǒng)計了整句的正確率(Overall Accuracy,OA)作為指標,整句正確率指的是句法分析中從第1層至最后1層的句法邊界識別正確的句子個數(shù)與所測試句子個數(shù)的百分比.
實驗結(jié)果如表5所示.本實驗結(jié)果可以看出核心詞提取部分同等條件下,詞塊識別階段使用BiLSTM相對于CRF在句法邊界分析結(jié)果上稍有優(yōu)勢,但BiLSTM+CRF較前兩者有一定的提高:F1值分別提高了2.1和1.4個百分點,OA值分別提高了1.7和1.1個百分點.原因是長短期記憶模型能充分學習到上下文信息,并能一定程度上解決長依賴問題;CRF層在其后充分利用相鄰的輸出預測標簽信息,學習輸出結(jié)果序列的轉(zhuǎn)移特征,起到聯(lián)合解碼的作用.
表5 實驗結(jié)果Table 5 Experimental result
詞塊識別模塊同等條件下,核心詞識別階段的3種信息中,相似度信息與詞性信息的重要程度比較接近,且比位置信息稍重要;但把3個信息按重要程度賦予權值合并起來進行識別對句法邊界分析的效果最好.其中詞塊識別為BiLSTM+CRF模型時,合并3個信息的TextRank算法的句法邊界識別的F1值相較于單獨的相似度信息、位置信息、詞性信息分別提高了4.1、6.3、4.0個百分點,OA值分別提高了3.0、4.6、2.5個百分點.原因有:1)相似度信息對核心詞識別的準確度取決于相似度矩陣,間接取決于詞向量訓練的規(guī)模;因此擴大詞向量訓練規(guī)??捎兄诰浞ㄟ吔绲恼w識別正確率;2)位置信息對核心詞識別的準確度取決于位置信息矩陣的參數(shù)的大小,間接取決于的詞塊長度.長度越短,位置信息矩陣的參數(shù)越大,最終的轉(zhuǎn)移概率矩陣中的位置信息占比就越大,從而使得另外兩個信息占比越小,甚至起到很小的作用.由此,位置信息的權重相對較小才能起到較好的作用;3)同理詞性信息對核心詞識別的準確度取決于詞性信息矩陣參數(shù)的大小,間接取決于詞性的分類數(shù)目以及詞性劃分方式,擴大詞性劃分數(shù)目以及規(guī)范劃分細則可有助于句法邊界的整體識別正確率.
再者,由表5可以看出,整句的正確率效果并不理想,主要原因是漢語使用的多樣化,例如同一個詞有多種用法等.輸出分析錯誤的句子后發(fā)現(xiàn),它們的大部分中含有并列結(jié)構,并列結(jié)構的核心詞不穩(wěn)定導致句法邊界的識別錯誤;另外數(shù)據(jù)集中標點符號的多樣化也是一重要原因.
在不同句長條件下,分別測試了下12種模型的F1值及OA值分布情況.通過圖5的曲線可以看出隨著句長的增長,F(xiàn)1值及OA呈下降的趨勢.
圖5(a)和圖5(b)曲線顯示,句長為(20,30]的IS+IL+IP的OA值相對單獨使用各信息的情況稍小,而圖5(c)的BiLSTM+CRF模型的OA值明顯提升了.說明BiLSTM+CRF詞塊識別模型對TextRank_(IS+IL+IP)的相互促進作用,聯(lián)合提升了句法邊界識別的準確率.整體來看,IS+IL+IP的方法相比于單獨使用IS、IL、IP各句長范圍下都具有明顯的優(yōu)勢.圖5(d)曲線顯示,BiLSTM+CRF+TextRank_(IS+IL+IP)模型在各句長下的F1值和OA值最高.說明該模型性能的優(yōu)越性及穩(wěn)定性.
圖5 不同句長下各模型組合的F1值及OA值分布情況Fig.5 F1 and sentence accuracy of each model under different sentence lengths
為了驗證本文方法相較于傳統(tǒng)方法性能上的提升,對所有標簽數(shù)據(jù)進行了文獻[1]方法的實驗;以及目前的先進方法進行了實驗,表6列出了部分F1值和OA值較高的方法與本文方法進行對比,其中文獻[22]為統(tǒng)計方法,文獻[5]、文獻[6]、文獻[8]、文獻[10]利用了神經(jīng)網(wǎng)絡方法.
從表6可以看出,本文提出的方法較傳統(tǒng)規(guī)則方法和統(tǒng)計方法F1值和OA值都有明顯的提升:與傳統(tǒng)LR算法相比F1值提升了6.58個百分點,OA值提升了3.68個百分點,與統(tǒng)計方法相比,F(xiàn)1值提升了5.82個百分點,OA值提升了3.31個百分點.與使用BiLSTM+CNN的文獻[8]以及使用RNN-INT的文獻[10]相比,本文方法也是明顯提升的.與使用PRPN的文獻[5]相比,本文方法略有優(yōu)勢,F(xiàn)1值和OA值比較接近使用PRPN-LM的文獻[6],但仍存在差距,并且從所有方法的OA值上看,有待進一步提高.
表6 句法邊界測試結(jié)果及對比Table 6 Syntactic boundary test results and comparison
本文通過分析短語結(jié)構類型層次句法分析的層次性和漢語結(jié)構特點,提出一種把核心詞作為詞塊的形式替換的句法樹,通過BiLSTM+CRF與改進的TextRank結(jié)合使用進行句法邊界的識別.首先利用BiLSTM獲取上下文特征,加上CRF層分析預測標簽序列的前后連貫信息,從而進行詞塊分析;利用相似度信息、位置信息和詞性信息對TextRank算法的改進,解決了從文本關鍵詞提取到詞塊核心詞提取算法移用的難題,擺脫了傳統(tǒng)的基于大量規(guī)則的繁瑣步驟,也不用頻繁地計算詞語移進和規(guī)約動作的概率,同時提升了句法邊界分析的效果.但存在的不足是層次分析的累積錯誤問題:若低層次分析錯誤,導致高層次也出現(xiàn)錯誤,從而導致整句的正確率下降.詞塊分析和核心詞提取過程是相輔相成、相互影響的.因此另外一個問題是詞塊分析的失誤可能導致核心詞提取結(jié)果不正確,同樣核心詞的識別不理想也會影響到詞塊識別效果,核心詞識別對句法分析中的非第一層詞塊識別的效果起決定性作用.