谷 波,王瑞波,李濟洪,李國臣
(1.山西大學 計算機與信息技術學院,山西 太原030006;2.山西大學 軟件學院,山西 太原030006;3.太原工業(yè)學院,山西 太原030008)
句法分析是自然語言處理中常用的核心技術之一,許多自然語言處理任務都依賴于它。通常來說,句法分析的任務是將詞的線性序列表示為一個句子,分析成一棵樹結構的形式。
句法分析的理論大致上可以分為兩類,一類是基于喬姆斯基提出的短語結構文法[1-3]的上下文無關文法(CFG),以及之后擴展的概率上下文無關文法(PCFG)[4-5],一般將這種分析方法稱之為成分(constituency)句法分析,分析的結果是一棵短語結構樹,葉子節(jié)點是詞,樹的所有的中間節(jié)點都是短語(成分);另一類是基于L Tesniere提出的依存語法理論,這種分析一般稱之為依存(dependency)分析[2],依存分析的結果是一棵依存樹,依存樹描述的是句子中詞語之間非對稱的二元關系。本文所指的層次句法分析是前一種,即成分句法分析。
早期的成分句法分析大多是基于給定的文法(也稱為產生式或規(guī)則)進行的。這種方法需要事先人工構建句法規(guī)則,容易實施。但缺點是不能解決句法多義性問題,且人工構建的句法規(guī)則通常不能覆蓋全部的句子或短語的形式。為此,Briscoe[6]等提出了一個基于概率的自底向上的LR分析器,而Collins[7]則是在自頂向下的句法分析過程中使用概率來進行剪枝。近年來,主流的一些句法分析方法則轉向于基于無規(guī)則的自底向上的移進歸約的分析[8-10],這類方法使用分類器根據(jù)當前分析棧和輸入隊列的特征,對移進和歸約的動作進行概率判斷,選擇當前特征下最有可能的動作執(zhí)行,從而自底向上地構建出句法樹。Liu[11]等則在移進歸約分析中通過BiLSTM抽取Lookahead特征來提高分析器的性能,該系統(tǒng)在賓州英文樹庫上的F1值達到了91.7%,在賓州中文樹庫CTB 5.1上的F1值達到了85.5 %。Cross[12]等也利用了LSTM基于句子成分的跨度(span)提出了一個移進歸約的系統(tǒng),在英文賓州樹庫上的實驗結果F1值為91.30%,法語上F1值為83.31%。Socher[13]等則直接使用一個結構遞歸的神經網絡(recursive neural network,RecNN)學習句法樹的遞歸結構,進行了英文的句法分析。另外,也有研究者融合多個句法分析器進行句法分析,通過重排候選樹集合提高了句法分析的性能[14],當使用人工正確的分詞和詞性標注時,該分析器在中文賓州樹庫CTB2上的F1值為89.8%,在中文賓州樹庫CTB 5上的F1值為86.8%。朱慕華[15]等則是使用向上學習策略,提高了系統(tǒng)的速度,最終的系統(tǒng)在中文賓州樹庫CTB 5.1的F1值達到了82.4%。目前這些方法中都用到詞性標注,而且詞性標注正確率對于系統(tǒng)的最終性能影響非常大。
然而賓州樹庫的詞性標注體系與國內主流的中文詞性標注體系還是有較大差別的。在國內主流的詞性標注體系中,中文里的詞無論在句子中主語還是謂語位置,其詞性基本上是確定的,也就是說,動詞可以做主語、賓語是常態(tài)。在中文里,連續(xù)多個詞標注為動詞也是常見之事,因此,按照英文以詞性為基礎的句法分析方法似乎不太合適。
對中文句法分析的研究,文獻中大多是借鑒英語的句法分析方法,少有從中文的句法分析理論出發(fā)來研發(fā)相應的技術。許多語言學家認為,中文是意合語言,形式標記不明顯,相比較英文而言,中文句法分析較難。特別是完全中文句法分析(既有樹結構又有樹節(jié)點成分的短語類型)技術更難。朱德熙[16]和陸儉明[17]先生的現(xiàn)代漢語語法理論認為中文的短語和句子是屬于同一個層面的范疇,中文句子結構與短語結構是同構的。中文句子并不像英文那樣詞構成短語,短語構成句子,句子主要是SVO結構。中文的詞構成短語,詞也可直接構成句子,短語與句子之間是實現(xiàn)關系,不是構成關系。句子與短語的結構都可以二分結構來分析,中文的層次分析法就是二分結構的句法分析。依照這個理論體系,自動句法分析只需要每次對各成分一分為二。本文探索基于循環(huán)神經網絡(RNN)機器學習模型,來實現(xiàn)二分結構的句法分析。相較于傳統(tǒng)的成分句法分析,本文方法主要有以下幾個特點:
第一,對句子只做二分的結構分析,不做短語類型識別。依據(jù)層次分析理論,中文句子的結構是層次二分結構,結構類型與短語結構類型相同。在中文里,相比較而言句子的層次結構是理解句意的關鍵,因此我們只做層次結構分析。這樣可以使得中文的短語以及整個句子的分析統(tǒng)一在一個二分結構的框架內,使得句法分析的問題從形式上得以簡化,也使得算法實現(xiàn)起來比較簡潔、高效。
第二,基于哈夫曼編碼來表示句法樹。由于采用二分的結構,我們語料庫中標注的句子都是一個滿二叉樹。把中間節(jié)點按照哈夫曼編碼的方式進行標記,使得語料庫中的句子標注形式非常簡單(沒有像傳統(tǒng)的樹庫那樣使用多重括號對的形式),方便閱讀、存儲以及后期的分析處理。
第三,使用RNN模型,只用詞特征。該方法沒有使用基于轉移的移進歸約的方法,也不是基于chart的自頂向下的方法,而是通過遞歸地使用序列標注器進行句法分析。相對于基于CFG的句法分析方法,這種方法的優(yōu)點是不需要詞性信息,也不需要中心詞信息或者分析棧和輸入隊列等的特征。本文的方法直接以詞序列為輸入,通過同時學習詞表示向量(word-embedding)和模型參數(shù),訓練得到一個序列標注器,遞歸地使用序列標注器來進行句法分析。
第四,使用hinge-loss的詞間隔標注策略。我們把句法分析看成是一個將序列逐層二分的問題,其任務就是每次尋找一個可以將序列一分為二的最優(yōu)的間隔標記位置,即尋找使得分割序列的間隔最大的得分位置,并以hinge-loss作為損失函數(shù)。這樣在使用RNN時可以有效地利用間隔左右兩邊所有詞的信息來共同確定詞間隔的標注。
第五,用m×2交叉驗證序貫檢驗比較模型的性能。傳統(tǒng)模型比較方法是在驗證集上直接對比大小,從統(tǒng)計意義上來說是不可靠的。本文采用了m×2交叉驗證(以下簡寫為m×2 CV)序貫t-檢驗。m×2 CV是將語料進行m次兩等份切分,從而得到指標估計的方差估計,逐步增加m構建相應的序貫t-檢驗,使得對算法模型的性能的對比更加準確、可靠。
除了本文提出的在hinge-loss損失下,對詞間隔進行標注的RNN模型(簡稱RNN-INT)外,還對比了RNN[18-19]模型(recurrent neural network,RNN)和LSTM[20-21]模型,以及條件隨機場(CRF)[22]模型各自在不同窗口下的性能。結果表明本文提出的RNN-INT模型在窗口為1時取得最好的結果,并且在m×2 交叉驗證的序貫t-檢驗中是顯著優(yōu)于其他模型的。在測試集上,以PARSE-VAL[23]的評測體系,短語的塊F1值達到了71.25%,整句的正確率達到了約43%。
論文內容安排如下,第1節(jié)介紹中文二分結構樹庫的標注方案,第2節(jié)介紹把二分結構句法分析轉換為序列分割問題以及采用的標記方案,第3節(jié)介紹RNN-INT模型,第4節(jié)是實驗設置方案以及m×2 CV序貫t-檢驗方法,第5節(jié)是結果與分析,第6節(jié)是總結以及下一步計劃進行的工作。
根據(jù)中文層次分析法的理論,中文的每個句法成分都可以看成是由左、右兩個子成分構成,給定的中文句子均可分析成一棵滿二叉樹(full binary tree)。從朱德熙先生的觀點來看,除了少數(shù)外來詞,中文的絕大多數(shù)多字詞內部也是二分結構的,詞的內部結構關系、短語的內部結構以及句子的內部結構關系是一致的。因此,如果將字作為最終葉節(jié)點的話,這種二分結構甚至可以將中文的分詞一并納入到一個句子的二分句法結構中。
中文的二分句法結構中的句法成分有6種內部結構[16-17],包括偏正結構、述賓結構、述補結構、主謂結構、聯(lián)合結構和連謂結構。除了聯(lián)合和連謂結構可能出現(xiàn)三個或三個以上的并列的成分,其他4種都是自然的二分結構。對于三個或三個以上的成分構成的聯(lián)合或連謂結構,采用從左到右的順序將其依次進行二分處理。
依據(jù)以上分析原則,我們標注了一個中文樹庫,每棵標注的句法樹是滿二叉樹,即樹中任何一個非葉子節(jié)點的句法成分,都由左、右兩個子樹(子成分)組成。目前樹庫中有30 034個簡單句(無標點),都是從北大新聞語料(有人工分詞和詞性標注,但我們沒有使用詞性)標注中選取的,沒有標注成分的內部結構。
一個句子的二分結構句法形式是一個滿二叉樹,可以采用哈夫曼編碼進行標記,這種表示方式可以以一種非遞歸的線性的形式描述出遞歸的二分的層次結構的句法樹的全部信息。這樣要比括號對的表示形式更加簡潔、直觀,方便標注人員閱讀和標記,也便于存儲。因此我們在語料庫中對詞的間隔使用了哈夫曼編碼進行標記(huff-labels)。給定一個有n個詞的句子,對其n-1個間隔(或稱為句法成分的切分位置)進行標記,將一個二叉的句法樹的結構,表示成n-1個數(shù)字。具體的標記方法如下:
(1) 句法樹的根節(jié)點的編碼標記為1;
(2) 對于句法樹中的非根中間節(jié)點,假定其父節(jié)點的編碼為h,按照如下方式確定其對應的哈夫曼的編碼:
a) 如果該節(jié)點是其父節(jié)點的左子節(jié)點,則其編碼為父節(jié)點的哈夫曼編碼乘以2,即h*2。
b) 如果該節(jié)點是其父節(jié)點的右子節(jié)點,則其編碼為父節(jié)點的哈夫曼編碼乘以2,然后再加1,即h*2+1。
例如,“我們 班 有 許多 外國 學生”,對應的句法樹形式如圖1所示。
圖1 二分結構句法樹的哈夫曼編碼標記
圖1中,矩形表示句法樹的葉子節(jié)點(詞),圓形表示句法樹中非葉子節(jié)點(短語),圓形中間的數(shù)字表示該間隔位置對應的哈夫曼編碼(圖中顯示的是其二進制形式)。通過實線連接的葉子和非葉子節(jié)點構成了一棵二分結構的成分句法樹(滿二叉樹)。圖中用虛線鏈接的兩個圓形節(jié)點,是為了清楚地顯示非葉子節(jié)點和它對應的詞間隔的位置而增加的。我們以文本格式保存二分結構句法樹,并且使用分號“;”將句子和它的對應的哈夫曼編碼十進制序列分開,并列放在一行中,編碼之間也用空格分隔。這樣就把一個句子和它的二分結構的句法樹的編碼描述放在一行中,表示成一個線性形式。最終的表示示例如下:
我們 班有 許多 外國 學生;2 1 3 7 15。
本文采用自頂向下的分析方法,將句法分析看作把一個序列逐層向下分割為兩個子序列的遞歸過程。每次都把一個長序列分割成兩個短的子序列,然后再分別對兩個短的序列進行遞歸分割,直到分隔至每個詞。這樣句法分析就轉換為一個逐層的序列標注問題,從而可以把機器學習中序列標注技術應用到二分結構的句法分析上。
如果對句子的所有可能句法樹都計算其得分,然后選擇得分最大句法樹為最終分析結果,這樣的計算量是非常巨大的。Socher[13]等使用RecNN對英文進行句法分析時使用了貪心算法,他們在實驗中發(fā)現(xiàn),在每步保存k個最好的子樹,最終的句法分析結果并不比僅保存一個最好的子樹的結果好。本文采用了貪心算法,每一次二分的時候,只保留當前序列劃分為左右兩個子序列的最大得分的結果,即只考慮當前最優(yōu),而不考慮最終得到的樹的全局最優(yōu)。
序列標記策略有多種[24-25],不同的序列標記方案在不同的機器學習模型下的性能是有明顯差異的。我們針對二分結構句法分析任務提出了一種對詞間隔進行標記的方案,下面以例句“我們 班 有 許多 外國 學生”進行說明。對于切分后的左右兩個成分,都按照從左到右深度優(yōu)先的順序進行描述。
(1) BI標記:每次切分都是劃分成兩整塊,沒有組塊分析任務中的塊外詞,所以把傳統(tǒng)的BIO標記中的O去掉,B表示當前詞是一個成分的開始,I表示當前詞是一個成分的內部;若成分由一個詞構成,把這個詞標為B。這種標記關注的是第二個成分的B標記(右邊成分的第一個詞)的識別,示例見表1。
表1 BI標記示例
(2) LR標記:每次切分出的左右兩個子成分,可以通過左右兩種標記分別標出對應的詞,把左邊成分的詞都標為L,把右邊成分的詞都標為R。從L到R的轉換的位置,決定了切分的位置,示例見表2。
表2 LR標記示例
(3) BEO標記:把緊鄰分割位置的左右兩個詞作為重點考慮,分割位置左邊的詞標為B,分割位置右邊的詞標為E,其他的詞標為O。這種標記方式重點關注緊鄰切分位置的左右兩個詞,示例見表3。
表3 BEO標記示例
(4) INT標記(間隔標記):這種標記方式不是標記詞,而是標記詞與詞之間的間隔。n個詞的句子序列,有n-1個間隔,把分割位置的間隔標記為1,其他間隔標記為0。這種方式直接對間隔進行標記,從而避免了前面其他幾種標記方案中把對詞標記轉成對間隔的劃分時所產生的不一致現(xiàn)象,示例見表4。
表4 間隔標記(INT)示例
假設給定了一個訓練好的序列標注器M,當給定一個由詞序列“w1w2…wi…wn”組成句子S作為輸入,序列的二分結構的遞歸分割處理算法如下:
1. 把句子S: w1 w2…wi… wn,看成詞序列作為輸入,每個詞的索引固定。2. 調用序列分割程序,S為其參數(shù)(1) 如果S長度為1,返回。(2) 如果S長度為2,將兩個詞分成兩個左右子序列,并把第一個詞的索引,記為此次分割的位置,返回。(3) 如果S長度大于2,調用M對序列w1 w2 …wi… wn進行分割。假設得到的兩個子序列分別為w1…wi和wi+1 … wn,將左邊序列最后一個詞的索引i記為此次分割的位置。然后分別把w1…wi和wi+1… wn分別作為新的參數(shù)S,遞歸調用序列分割程序(轉2)。3. 根據(jù)序列分割程序每次保存的分割的索引信息,生成一棵滿二叉樹作為分析結果。
第2節(jié)將二分結構句法分析轉換為遞歸的序列分割(標注)問題,對序列標注任務,目前性能比較好的是條件隨機場模型(CRF)和神經網絡模型(RNN,LSTM)。在最初的實驗中(數(shù)據(jù)分為訓練集,驗證集,測試集,沒有使用交叉驗證),對RNN和CRF中都使用了除間隔標記(INT)之外的多種標記策略進行了實驗,發(fā)現(xiàn)RNN使用BI標記要好很多,而CRF中使用BEO和LR的結果也優(yōu)于其他標記。因此后續(xù)的交叉驗證實驗中,對CRF選擇了LR和BEO兩種標記,對RNN和LSTM則只選擇了BI。針對詞間隔標記策略,我們基于RNN結構提出了RNN-INT模型,采用hinge-loss為損失函數(shù),在每個詞間隔上計算得分并進行標記。
本文的RNN-INT模型,基于Elman[19]提出的RNN結構,所以我們先簡單介紹RNN結構。三層的RNN網絡,分為輸入層、隱層和輸出層。
輸入層:可以采用Collobert[26]等的方法,將詞庫中的每個詞都表示成一個向量(word-embedding),并對當前詞采用開窗口的方式。假設每個詞對應的word-embedding維數(shù)大小為d,窗口(對稱)大小為s,拼接后可以得到一個大小為d*s的輸入向量x。
隱層:對于句子中的詞按照從左向右的順序依次傳遞給網絡,假設當前時刻t的輸入向量為xt,輸入層連接到隱層的權重矩陣為Wh x,隱層連接到隱層的權重矩陣是Wh h,隱層的偏置向量為bh,隱層的激活函數(shù)為σ,t時刻隱層的計算如式(1)所示。
ht=σ(Wh xxt+Wh hht -1+bh)
(1)
輸出層:是一個softmax層。有幾個類別標記,最終的輸出層就有幾個輸出單元,假定當前時刻t,隱層連接到輸出層的權重矩陣是Who,輸出層的偏置向量是bo輸出層的公式如式(2)所示。
yt=softmax(Wh oht+bo)
(2)
Socher[13]等在用RecNN來做句法分析,也用了hinge-loss損失函數(shù),通過計算相鄰成分的得分,遞歸地對相鄰成分進行合并。本文與其不同之處是,首先,我們是自頂向下的分析,從整句出發(fā),遞歸對句子進行二分,直到不能分割為止;Socher等則使用自底向上的方案,遞歸地對兩個成分進行融合直至形成一個節(jié)點。其次,Socher等對兩個相鄰節(jié)點計算融合得分的時候,只使用這兩個節(jié)點的信息,而我們則是采用了RNN的方式,考慮了間隔左、右兩邊的整個成分的信息。第三,Socher的方法為了遞歸應用RecNN,要保證每個節(jié)點的向量等長,需要對兩個子節(jié)點連接后得到的兩倍長的向量進行線性變換,從而使父節(jié)點的向量和子節(jié)點的向量等長,而我們在序列二分后,對兩個子序列獨立再分,所以不涉及節(jié)點的融合。
從中文的特點知道,句法中短語的識別不僅由構成短語的詞決定,還需要由短語前后的所有詞共同決定,而傳統(tǒng)的組塊分析方法主要依賴相鄰的詞??紤]到這種二分結構句法的形式,采用直接對詞之間的間隔進行標記的方法,并且把能分割的位置標記為1,不能分割的標記為0。采用貪心策略進行逐層二分結構的句法分析,每一次分析都是把一個成分切分成左、右兩個子成分,即只能有一個詞間的間隔位置被標記為1,其他的間隔位置都是0。
RNN-INT模型可以看作在輸入層和隱層有兩個獨立的子網絡,分別對應正向詞序列(來自于間隔左邊的詞)和反向詞序列(來自于間隔右邊的詞)。正向隱層和反向隱層的兩個輸出向量,在同一個輸出層進行了合并。我們需要使得真實切分的間隔的得分大于其他間隔的得分,所以輸出層沒有進行softmax,而是對正反兩個隱層的輸出,和對應的權重向量進行內積運算,然后再把這兩個值求和作為該間隔上的得分。網絡結構如圖2所示。
圖2 RNN-INT網絡結構
輸入的中文句子sen=“w1w2…wn”,wi對應句子中的從左向右看的第i個詞。
輸入層:與前面所述相似,對每個間隔,有兩個輸入向量(分別由間隔左、右兩邊的詞得到)。所以對于每個間隔,可以看作有兩個輸入層,一個正向輸入層從左向右依次接收詞序列(w1w2…wi);另一個為反向輸入層,從右向左依次接收詞序列(wn,wn-1…wi+1)。
輸出層:兩個隱層的輸出在同一個輸出層進行合并。因為輸出層最終的輸出是一個得分,score所以輸出層只有一個輸出單元,也不需要softmax運算。Wof和ho b分別表示正向隱層、反向隱層與輸出層之間的權重矩陣;ho表示輸出層的偏置向量。在t時刻輸出層輸出的scoret計算如式(5)所示。
(5)
損失函數(shù):對序列進行一次切分時,只有一個詞間隔可以是實際的切分點,因此需要使得這個間隔點的得分大于其他詞的間隔點的得分。假設有n個間隔位置,每個間隔位置的真實切分標記為yi(需要把前面的0轉成-1表示不在此處切分,1表示在此處切分),則對序列的一次分割的hinge-loss損失函數(shù)如式(6)所示。
(6)
訓練采用隨機梯度下降算法,損失進行反向傳播,更新詞表示向量和神經網絡的權重。測試時,對一個詞序列,把得分最大的間隔作為切分的位置。
目前我們的樹庫共有30 034個簡體中文單句,句子只使用分詞信息,沒有標點,也沒有使用詞性。先從整個語料庫中隨機抽出6 000個句子作為測試集,剩下的24 034個句子作為建模的數(shù)據(jù)(以下記為D),然后將D使用m×2交叉驗證(簡記為m×2CV),Wang[27-28]等從理論和模擬實驗上證明,m×2CV 方法是較好的模型比較方法,并且更適用于文本數(shù)據(jù)。
除了將句子包括在訓練集中外,同時將句子的二叉樹的每個成分都抽取出來,也獨立看作一個句子,并加入訓練集中作為訓練樣本(只含兩個詞的成分除外,在之前實驗中發(fā)現(xiàn),如果在訓練集中加入這兩個詞的成分,會對序列標注器產生干擾,訓練序列標注器去掉這些會輕微提高句法分析的性能,所以在最終的訓練集合中把這兩個詞的成分都刪除了)。例如,前面圖1中的句子,“我們 班 有 許多 外國 學生”,經過抽取成分,可抽取出三個樣例:我們 班 | 有 許多 外國 學生,有 | 許多 外國 學生,許多 | 外國 學生。
在CRF[注]https://github.com/taku910/crfpp模型的實驗中,對于LR、BEO標記方案,分別記為CRF-LR和CRF-BEO;RNN和LSTM模型基于Theano[29]進行了實現(xiàn),這兩個模型下都用BI標記,所以模型后面不再加BI后綴。并且在這兩個模型下對是否采用雙向(bi),以及是否在最后一層使用了viterbi算法(vtb)的方式(即CRF方式)都進行了實驗。本文提出的在詞的間隔上進行標記的方案,稱為RNN-INT。在每種模型下,都使用了對稱窗口,窗口大小從0(只取當前詞自己)到7。因為語料中的句子都是簡單句,而且平均長度在10個詞左右,所以沒有再取更大的窗口。在RNN和LSTM的實驗中,均采用sigmoid激活函數(shù)。
完全句法分析中,多數(shù)文獻中采用了塊準確率,或者塊召回率,或者塊F1值作為評價指標[23]。本文以塊F1值作為評價指標,由于語料基本都是單句,我們把整句正確率作為考察指標。
Wang[27-28]分析了常用的模型性能對比的t-檢驗存在的問題,提出模型性能比較的正則化m×2交叉驗證序貫t-檢驗方法。理論和模擬驗證該檢驗是相對保守的檢驗,可以得到更為可信的結論。Wang[27]等所給的3×2 CV t-檢驗自然可以擴展為相應的兩模型性能比較的m×2 CV序貫t-檢驗,描述如下:
給定兩個機器學習模型A、B及模型評價指標MA、MB,記M=MA-MB為兩個模型性能之差,不妨假設MB為Baseline模型的性能。
原假設:H0:M≤0備擇假設:H1:M>0。
∽Cm·t(2m-1)
(7)
本文m先取3。表5是模型的塊F1和整句正確率在3×2交叉驗證下的平均值。無論塊F1值還是整句正確率,RNN-INT模型取窗口1的結果最好,達到68.93和39.88。圖3和圖4顯示了模型的塊F1值和整句正確率隨著窗口大小的變化趨勢,不同模型各自在不同的窗口下取得其最好性能。但趨勢都是隨著窗口增大,結果變好,隨后趨于平穩(wěn)或者略有下降。窗口增大模型的性能逐漸趨于接近。我們認為可能當窗口增大時對于之前性能低的模型會增加信息,性能也提升;對于性能已經很高的模型,反而增加了噪聲使其性能下降。和之前預想不同,RNN和LSTM在該任務下性能相差不大,這可能和句子長度相對較短有關,使得LSTM沒有發(fā)揮其長時記憶的優(yōu)勢,且由于其參數(shù)明顯比RNN多,所以性能不高,甚至當窗口為0的時候,由于參數(shù)個數(shù)較多,但輸入數(shù)據(jù)較少,性能反而是所有模型下最低的。雙向模型和使用viterbi算法對性能都有明顯的提升,但窗口小于3時,雙向模型性能提高得多,當窗口大于等于3時,viterbi算法對性能提升得多,同時使用雙向且結合viterbi算法都取得各自最好的結果。
我們在m×2CV下對RNN-INT和其他模型進行差異的顯著性t-檢驗。在各模型各個窗口下,塊F1和整句正確率的相關性非常大,整體相關系數(shù)為0.98,說明這兩個指標有高度的正相關。這也符合我們的直觀認識,句法塊識別對的越多,對應的整句識別正確的也越多。我們取模型的塊F1值最高的窗口,為該模型的窗口大小配置,都與RNN-INT在1窗口下進行t檢驗。表6是模型比較的m×2CV t-檢驗的結果。從表6中的結果看,RNN-INT與其他模型的性能之差都大于零,最少也高出近1個百分點,且大部分檢驗在m=3時t-檢驗就顯著,少部分在m=6下才顯著。RNN-INT與RNN_bi_vtb和LSTM_bi_vtb的整句正確率,即使在m=6時也不顯著,且差異值及方差的估計在m=4,5,6時已經基本穩(wěn)定,說明再增加m已無明顯效果,故停止序貫實驗。
圖3 模型在不同窗口下的模型塊F1值
圖4 模型在不同窗口下的模型整句正確率
塊F1整句正確率窗口大小0123456701234567CRF_LR51.1255.7358.1562.1364.0164.6564.6564.6013.9318.1527.3733.8836.2537.0436.8336.79CRF_BEO54.5165.0366.8766.7066.3866.1566.0765.9818.9833.1536.0335.8435.4935.1635.2635.10RNN54.5959.0264.5766.2366.7066.6666.4566.3921.6227.8534.9036.0836.4536.1935.7435.56RNN_bi62.9666.6066.7366.3866.0665.9565.8665.8032.6137.5337.1736.7936.2236.0636.0835.77RNN_vtb56.1359.4065.2967.1067.3467.4567.2767.0224.8129.1236.5738.0437.9737.7837.6337.22RNN_bi_vtb64.4166.5967.8467.6968.0267.4766.9866.8334.6137.6338.5538.3838.5937.9537.4237.17LSTM41.7559.4464.6466.1066.0466.0866.2165.643.7228.5735.3036.4436.2036.1836.2035.59LSTM_bi63.0766.5066.5866.6866.1766.0865.7465.6532.7137.5337.1237.2836.4536.2135.7935.71LSTM_vtb57.3259.5865.5167.0767.3067.3066.9966.5626.1229.2936.6637.9937.8737.7237.1736.96LSTM_bi_vtb64.5867.5368.1467.5367.7767.3067.2767.0034.8538.7438.9838.3538.3637.8037.6937.31RNN_INT66.0368.9367.9467.4067.2267.0266.8266.7235.7839.8837.8736.8836.5936.2135.8235.56
表6 RNN-INT與其他模型對照的t-檢驗p-值表
注:**表示顯著水平為0.01下顯著,*表示顯著水平為0.05下顯著。
根據(jù)以上分析,以數(shù)據(jù)集D進行模型選擇的最終結果為詞特征在1窗口下的RNN-INT模型,以此模型將全部數(shù)據(jù)D(即交叉驗證的訓練、驗證集合并)為最終的訓練集,重新訓練RNN-INT模型。在最終的RNN-INT模型上,用6組不同的隨機數(shù)初始化權重和詞表示向量,得到在測試集的結果,如表7所示。最終在測試集(6 000句)上得到平均塊F1值為71.252%,平均整句正確率的結果為42.998%。
表7 RNN-INT模型不同初始值在測試集的結果
表5顯示基于神經網絡的方法優(yōu)于CRF方法,一個可能的原因是這類方法在域外詞的處理上有優(yōu)勢。不同于CRF模型直接使用詞本身作為離散特征,在神經網絡模型中將詞轉換成了詞的向量表示形式,是一種連續(xù)的特征,當遇到域外詞時,通過其周圍的域內詞的向量也可以反映出一部分域外詞的信息,從而降低了域外詞的影響。
在3×2交叉驗證實驗中,我們以驗證集中的句子中是否出現(xiàn)了訓練集中沒有見過的詞為準,把驗證集分成含有域外詞和不含域外詞兩個子集,簡記為OOD(out of domain),IND(in domain),分別在兩個子集上計算指標值。經統(tǒng)計6組交叉驗證的驗證集中OOD的句子占比均大致在一半左右,占比平均為51.5%。我們對比了RNN-INT與CRF-LR模型。下面是在OOD和IND上分開統(tǒng)計的結果。
表8 OOD上的結果
表9 IND上的結果
從表8可以看出,在域外詞集OOD上,RNN-INT比CRF-LR的塊F1高出2.3%,整句正確率高出4.4%; 而在域內詞集IND表9上卻只高出1.7%,整句正確率指標上高出3.4%。因此,在處理域外詞上,RNN-INT與CRF-LR相比還是有一定的優(yōu)勢的。
對我們的實驗結果進行分析總結,可以得出以下結論。
(1) RNN-INT性能最優(yōu)。在所有的實驗中,本文所提出的RNN-INT模型性能最好,對比其他模型,在性能上有顯著的提高。該結果可能有以下幾種原因。
詞的間隔是中文成分之間分割的重要信息。我們認為不論是組塊分析還是完全句法分析,成分的形成本質上是由兩個成分兩邊的所有詞共同決定的,不僅僅是兩成分間隔相鄰的少數(shù)詞。特別是在二分結構的句法分析中,采用RNN對詞之間的間隔進行標記,是利用了間隔左、右的所有詞,抓住了成分整體的信息,從而提高標記的正確率。
在RNN-INT中使用hinge-loss損失函數(shù),并使用正向、反向RNN計算詞的間隔的得分,這在一定程度上考慮了一個序列的全局信息,從而使得訓練得到的網絡更可靠。另外,實驗中發(fā)現(xiàn)RNN-INT模型相對于普通的RNN模型訓練和預測的速度都快一些,我們認為這是由于該模型下不需要像傳統(tǒng)的分類任務那樣需要在最后一層進行softmax,RNN-INT只需要計算一個得分即可,并且hinge-loss損失函數(shù)也相對于交叉熵損失計算簡單,這使得模型在訓練和預測時速度得以變快。
在域外詞的處理上RNN模型相對CRF模型有優(yōu)勢。這可能歸功于RNN中使用了詞的向量表示,這種表示方式本身會將詞和它周圍的詞之間的信息進行融合,并包含在循環(huán)的隱層向量中,這使得即使在預測時沒有見過的詞,也可以通過相鄰見過的詞的表示向量,間接地獲得了該詞的一些信息,從而使得RNN比CRF對域外詞處理上有優(yōu)勢。
在RNN-INT中采用詞特征的1窗口有利于RNN。不同于CRF模型中使用的是離散特征,隨著窗口增大,特征越來越稀疏,提供給模型的信息會越來越少,模型性能不再提升。而從RNN-INT的結果可以看出,在窗口為1時要好于其他窗口的情形,這說明在中文中使用當前詞語與左、右兩個詞的拼接向量,做雙向的循環(huán)迭代,構建兩個成分的隱含表示(隱層向量)是最好的,并不是拼接的向量越長越好。
(2) m×2交叉驗證進行模型選擇和評估,結論更為可靠。采用m×2交叉驗證,通過對語料數(shù)據(jù)集進行多次劃分,進行多次實驗,可以得到重復實驗結果,并可以獲得估計的方差,以及相應的統(tǒng)計顯著性檢驗,從而對模型的性能評價更加準確。這樣可以克服傳統(tǒng)的簡單地將語料切分為訓練、驗證、測試集,只能有一個實驗結果,難以從統(tǒng)計的顯著性來評價好壞。
完全句法分析是中文信息處理里的一個難題。為了構建一個簡單的中文句法分析,我們以朱德熙和陸儉明先生的層次分析理論為基礎,將中文句子的結構表示為逐層二分結構的形式,簡化中文句子的分析過程,使得句法分析任務變得相對簡單。
我們將二分結構的句法分析問題轉換為逐層的序列標注問題,在已經構建的大約3萬句規(guī)模的中文語料庫上,使用了RNN、LSTM和CRF模型,在多種標注策略和不同的詞特征窗口設置下,進行了模型對比的實驗,最終在我們的測試集上的結果表明,本文提出的RNN-INT模型效果是最好的,最終的塊F1值達到71.25%,整句的正確率達到了約43%。
目前我們的語料庫規(guī)模還比較小,且都是單句,句子也沒有標注成分的內部結構和短語類別。下一步,一方面我們計劃繼續(xù)擴充語料庫,研究復雜句的二分結構標注方案,并且不斷完善相應的標注規(guī)范,特別是針對一些中文特殊結構的句子提出其合理的標注方案(比如把字句、被子句等);另一方面我們計劃將每個成分的內部的短語結構也進行標注。在算法方面,我們計劃探索結合自底向上的方法,即同時利用詞及短語的合并的信息,與詞的間隔上的分割的信息進行二分句法分析,以期提高分析器的性能。