王 臻,常寶寶,穗志方
(北京大學 計算語言學教育部重點實驗室,北京 100871;北京大學 計算語言學研究所,北京 100871)
語義分析就是根據句子的句法結構和句中每個實詞的詞義,推導出能夠反映句子意義的某種形式化表示。對句子進行正確的語義分析,一直是從事自然語言處理的人們追求的目標。隨著自然語言處理基礎技術,如: 中文分詞、詞性標注、句法分析、機器學習等的逐步成熟,以及語義分析在問答系統(tǒng)、信息抽取、機器翻譯等領域的廣泛應用,這一方向越來越受到人們的重視。
目前深層語義分析很難做到,人們更關注于淺層語義分析。淺層語義分析是深層語義分析的一種簡化,它只標注與句子中謂詞有關的成分的語義角色,如施事、受事、時間和地點等。
語義角色標注是淺層語義分析的一種實現方式。該方法并不對整個句子進行詳細的語義分析,而只是根據特定的謂詞去標注句子中的一些語義角色(論元),這些語義角色本身被賦予一定的語義含義。
目前大多數的語義角色標注任務基于的語料資源是提供完整句法樹的賓州樹庫[1],以及完成人工語義角色標注的Proposition Bank[2]。兩者都有英文版和中文版,本文的工作是在上述的中文語料環(huán)境下完成的。
前人的工作大多需要產生完整的句法分析樹作為預處理,例如Sun and Jurafsky[3]、Xue[4],再通過在樹中抽取出很多人工設定的特征,結合傳統(tǒng)的統(tǒng)計機器學習算法對語義角色進行分類標注。也有使用淺層句法分析的,例如Sun and Sui[5-6],但是實驗效果同樣依賴于很多人工特征的使用。
近些年來,隨著深度學習的興起,人們越來越關注對特征表示的自動學習,即把特征的學習任務交由機器經過計算得到,而不是由領域專家事先人工確定,這在很大程度上減少了對任務的人為干預,也大大減輕了人們的工作量。Collobert[7]的工作正是在這種環(huán)境下完成的,他使用深度神經網絡的框架完成語義角色標注,擺脫了傳統(tǒng)上對人工設定特征的依賴,但是原文工作是在英文環(huán)境下完成的,同樣的方法是否適合于中文環(huán)境迄今為止還沒有過完整論述。
本文嘗試使用深度神經網絡實現中文語義角色標注。章節(jié)安排具體如下: 第2節(jié)介紹了語義角色標注的相關工作;第3節(jié)介紹了基于深度學習的語義角色標注網絡框架;第4節(jié)介紹了深層學習網絡的訓練方式;第5節(jié)為實驗結果及分析;最后對本文工作進行總結,并指出將來工作的方向。
中文語義角色標注起步較晚,早期的工作側重于使用在英文語義角色標注中取得成效的方法,比如Sun and Jurafsky[3]使用Collins parser得到完整的句法樹后移植了大部分在英文工作中用到的特征,繼而使用SVM算法,但受制于當時的語料規(guī)模,其實驗結果與后續(xù)工作并沒有可比性。
在大規(guī)模語料CPB(Chinese Proposition Bank)建成之后,Xue[8]、Xue[4]在工作中加入了一些有助于性能提升的特征,并對中文語義角色標注做了系統(tǒng)性的研究。Ding and Chang[9]側重于語義角色分類,采用層次結構,將這一過程分為三個子任務。Chen[10]把直推式SVM算法運用到中文語義角色標注工作中。上述工作中無一例外地使用了語句的完整句法結構信息,這些信息對語義角色邊界的識別以及分類都是很有用的,所以語義角色標注的效果受制于自動句法分析器的性能。Sun and Sui[6]引入淺層句法分析處理語義角色標注,避免了使用自動句法分析器所帶來的性能損失,在語義組塊一級進行語義角色識別和分類標注。Sun[11-12]對這一方法進行了改進,加入了幾種新的路徑特征以及擴大了語義組塊,使得總的F1值達到了76.46%,這也是迄今為止獲知的在中文語義角色標注上最好的性能結果。
上述所有方法的特點是使用了很多人工設定的特征,這有賴于對特征工程的研究,是比較費時費力的。在英文中,Collobert[7]的工作打破了這一傳統(tǒng),文章使用深度學習框架自動學習特征的向量表示,使得與任務相關的信息更容易被捕獲,避免了過多的人為介入。實驗結果也是達到了74%之多,比較接近英文語義角色標注的最好水平。
本文受上述英文工作的啟發(fā),嘗試使用深度學習方法進行中文語義角色標注,通過自動特征學習避免了繁復的人工特征設定,在中文環(huán)境下獲得了不錯的實驗效果。
中文語義角色標注可以視為對輸入句子中的每個詞指定一個標簽。傳統(tǒng)機器學習方法的性能很大程度上受制于所選的特征,正是由于這個原因,對該問題的研究很多都偏向于特征工程,而這些工作需要大量的人工介入,費時費力。
為了使得語義角色標注脫離特征選擇的繁復工作,本文使用了深度神經網絡的方法。該神經網絡以每個待標注的句子作為輸入,在多層隱層中獲取輸入的抽象表示,最后通過輸出層得到可能性最高的標簽序列,完成整個標注工作。網絡的框架如圖1所示,Lookup Table層提取出每個詞的特征向量,固定窗口內的特征向量進行拼接作為下方神經網絡的輸入。對于最后的結果,我們可以使用Viterbi算法進行解碼得到最后的標注序列。
圖1 網絡框架
本次工作對模型的主要改進集中于對網絡輸出層的改進。傳統(tǒng)的深度學習方法使用的都是單層輸出層進行分類標記,Collobert[7]一文正是這樣做的。然而語義角色標注不同于一般的標注問題,因為它有牽扯到非語義角色和語義角色,語義角色細分又可以分為多種不同的語義角色標記。通過上面的分析,我們可以構造兩個層次對語義角色標注問題加以描述: 角色識別和角色分類,由此引入了兩個網絡輸出層,一層用來進行角色識別,一層用來表示角色分類,兩層結合以給出輸入語句的標注序列,這也是本文工作的重心。我們在3.2節(jié)中會重點對這一部分進行解釋說明。
語義角色標注是淺層語義分析的一種實現方式。該方法并不對整個句子進行詳細的語義分析,而只是根據特定的謂詞去標注句子中的一些語義角色(論元),這些語義角色本身被賦予一定的語義含義。
目前大多數的語義角色標注任務基于的語料資源是提供完整句法樹的賓州樹庫[1],以及完成人工語義角色標注的Proposition Bank[2]。在Proposition Bank中,核心的語義角色有Arg0~5共六種,前綴ArgM表示非核心論元角色,后面跟一些附加標記表示具體的語義類別,如ArgM_LOC表示地點,ArgM_TMP表示時間等。
圖2對一個標注實例具體進行說明: 民眾/已經/充分/掌握/事情/真相。其中,“掌握”為謂詞,用Rel表示;“民眾”為施事,用Arg0表示;“事情真相”為受事,用Arg1表示;“已經”和“充分”分別表示發(fā)生的時間和程度,用ArgM_TMP和ArgM_MNR表示。下面的語法樹分析了句子的結構,并標記出了關于謂詞的各個語義角色。
圖2 語義角色標注示例
所以對于在Chinese Proposition Bank標注體系下進行的語義角色標注任務,我們的目標是給定一個輸入語句和相關謂詞,使得系統(tǒng)能夠自動地為每個詞語標注語義角色(如上例中的Arg0、Arg1、ArgM_TMP、ArgM_MNR),并力求達到好的標注效果。
圖3 傳統(tǒng)輸出層
針對序列標注問題構造神經網絡,傳統(tǒng)上的做法是將網絡的輸出層表示為單層結構[7],將所有的標記一起進行考慮。對于語義角色標注問題而言,即將各類語義角色與非語義角色合并考慮,最后的輸出層有語義角色個數+1個節(jié)點,分別表示每一類標注的得分,這樣的結構如圖3所示。
這種方法對于處理某些簡單問題是比較合適的,將輸出表示為單層網絡也意味著所有的標記之間是平等的關系。然而,對于中文語義角色標注問題來說,將所有標記同等考慮是不恰當的,因為非語義角色和各類語義角色是兩個層級的概念。如果順序考察這一任務,我們先得確定一個詞語是語義角色,然后再對它是什么語義角色進行判斷,而單層神經網絡是不能捕捉到這樣的兩層語義關系的。
圖4 改進輸出層
基于上面的原因,對于本次工作塑造的神經網絡的輸出層,我們采用圖4的結構表示網絡輸出。針對最后一層隱藏層,通過兩個不同的線性變換得到兩個不同的輸出層,其中一個輸出層有兩個節(jié)點,表示這個詞是語義角色或是非語義角色的得分,另一個輸出層m(m為本文涉及的語義角色總數)個節(jié)點,表示這個詞是每種語義角色的得分。這兩個部分是獨立存在的,也就是說兩者的線性變換之間沒有嚴格的關聯(lián),不過在訓練中需要將兩層的輸出合并進行考慮,這在第4部分會有詳細的說明。
本文的做法很好地模擬了中文語義角色標注實施過程中的兩個步驟,將角色識別和角色分類分開進行考慮。我們也在實驗結果中發(fā)現,這種分層輸出的方法比傳統(tǒng)處理序列標注任務的單層輸出效果要好,這也證明了我們設計神經網絡的合理性。
本文工作中使用的特征是詞、詞到標注詞的距離、詞到特定謂詞的距離,針對這三個特征分別維護了Lookup Table,從中可以得到每個特征的向量表示。假設特征的集合是D,則特征的向量表示存儲在一個M∈Rd×|D|矩陣之中,d是特征向量的維數,|D| 是特征集合的大小。
下面我們以詞特征為例,具體闡述這個過程。假設給定了一個中文句子c[1∶n],每個詞設為ci,1≤i≤n。對于每個ci∈D,有它在D中的索引ki,用lki表示只在第ki位為1,其余位皆為0的|D|維向量,則關于ci可以得到它的特征向量Wci∈Rd:
Wci=Mlki
(1)
值得說明的是,如果一個詞沒有出現在D的集合內,可以將其標記為UNKNOWN,將UNKNOWN加入到集合D中作為所有未出現的詞特征,這也意味著它們將共享同一特征向量。
工作中引入窗口的概念,對每個詞特定窗口內所有詞的特征向量進行拼接作為該詞的最終的特征向量輸入下層神經網絡。如此,每個詞在網絡中不再是孤立的存在,語義上的相關性在某種程度上可以通過這個方式捕捉到。
具體地,如果每個詞通過第一步得到的特征向量是Wci,那么經過窗口拼接的特征向量就被轉化為:
(2)
其中dwin表示窗口的大小。
因為每個句子的長度都是不確定的,所以在網絡中引入一個卷積變換層對輸入特征向量進行歸一化變換。具體地,設變換矩陣為M1,卷積變換之后的輸出為:
(3)
其中,1≤t≤n,n表示待標注語句的長度;1≤i≤h,h1表示第一層隱層的節(jié)點個數。
后續(xù)的神經網絡計算,使用如下公式進行線性變換:
zl=Ml-1zl-1+bl-1
(4)
其中Ml-1表示l-1層到l層的權值矩陣,bl-1表示l-1層到l層的閾值向量。
工作中隱層使用的激活函數是hardtanh,其定義如下所示:
(5)
雖然我們的工作目標是給每個詞進行Arg0~5或是ArgM-X的標記,但是單純使用這樣的標記,我們并不能得到語義角色的邊界信息,因為每個語義角色的開頭和結尾都應該是有據可循的,單純使用語義角色的標注顯然會忽略掉這一點。
所以,針對上面情況的分析,我們在實驗中采用IOBES的標注策略,I-ARGX表示一個語義角色的內層部分,B-ARGX表示語義角色的開始部分,E-ARGX表示語義角色的結尾,S-ARGX表示單個詞形成的語義角色,O表示不屬于語義角色的部分。而在預測階段,我們會將該標注策略轉換為僅表示語義角色的標注結果。
本次工作采用了基于詞標簽的訓練方式對深層學習網絡進行訓練,具體地,我們是通過最大化似然函數進行參數求解的,隨機梯度下降能夠很好地運用在問題的求解中。用θ表示網絡中的所有參數,x表示一個特定的待標記的詞,y表示對應的正確標記,實際上,我們試圖最大化的是下面這個式子:
(6)
其中,T是所有的訓練數據。
在這種訓練方法中,我們單獨考慮句子中每個詞的標簽。對于每個詞x,網絡的第一個輸出層輸出f1(x,i1,θ),其中i1為0或1,分別表示x是語義角色和非語義角色的得分,運用softmax操作進行歸一化,我們可以得到當前詞x是語義角色或是非語義角色的概率:
(7)
網絡的第二個輸出層輸出f2(x,i2,θ),其中i2為對應的每一種語義角色類型,分別表示x是每種語義角色的得分,運用softmax操作進行歸一化,我們可以得到當前詞x是每種語義角色的概率:
(8)
我們通過簡單的概率公式可以計算得到x屬于每種類別的概率:
(9)
之后再運用上面提到的最大似然方法進行訓練就可以得到整個網絡模型的各個參數。
我們采用中文Proposition Bank的數據集,同前人的工作一樣,使用Proposition Bank中的02-21分塊作為訓練數據,第24分塊作為開發(fā)集數據,第23塊用于測試集。本次實驗用到的語義角色有Arg0~5,以及其余的十三種修飾角色ArgM-X,如ArgM-LOC修飾地點,ArgM-TMP修飾時間等。
對于深層網絡中超參數的選擇,我們使用經驗知識和前人工作進行判斷,Yoshua Bengio(2012)對深層網絡常用的參數設置給出了經驗上的指導,本文的工作受上文和之前工作的啟發(fā),對網絡架構中的超參數進行了人為設定。
工作中訓練網絡的學習率設為0.001,窗口拼接時的窗口大小設為5,詞表大小設置為10 000(使用最頻繁出現的前10 000個詞),特征向量的長度分別為50、20、20,兩層隱藏層的節(jié)點數目分別是200和100。
對于待標記詞到給定謂詞距離以及當前詞到待標記詞距離這兩個特征,我們都是使用隨機初始化的方式對它們的特征向量進行初始化,因為對于它們而言我們沒有很多先驗知識去得到有意義的特征向量。對于詞特征,我們當然也可以通過隨機初始化的方式對它進行賦值,這樣造成的代價是網絡的訓練時間會更長。由于目前大規(guī)模中文語料的存在,對詞向量的初始化我們有了更好的選擇。
word2vec是google的一個基于上下文共現信息學習詞向量的一個實用的工具,借助它在giga語料上學習得到的詞向量,我們可以對網絡中用到的詞的特征表示進行有意義的初始化,因為實驗表明該工具生成的詞向量在一定程度上是能夠把握詞語之間的語義信息的。使用這種詞的特征表示也使得網絡的訓練時間大幅度降低。
上文提到,我們在標記時使用的是IOBES的標注策略,該標注策略實際上給標注結果添加了一種可能性限制。比如說,對于B-ARG0之后只能出現I-ARG0或是E-ARG0,其余的標注結果都是非法的,對于I-ARG0,其后僅有I-ARG0和E-ARG0合法,我們可以對每種情況進行列舉,得出關于標記序列的一些限制,使用這些限制,我們才能得到合法的標記序列。
具體地,我們在預測階段可以得到每個詞關于所有標記的得分(在IOBES標注體系之下),我們再根據上述提到的限制生成一個限制矩陣Am×m,m表示在IOBES標注體系下的標記個數;矩陣元素αij表示從標記i到標記j的可能性,我們這里對其賦值0表示可能的轉移,賦值-∞表示不可能的轉移?;谏鲜龅梅忠约稗D移矩陣,我們可以使用Viterbi算法進行解碼,得到最大值的序列就是我們在預測中給定的標記序列,上述的賦值保證了該標記序列的合法性。之后,再對IOBES標記序列進行轉化,變?yōu)閮H使用語義角色的序列,使用此序列與標準答案進行比較,得到我們關心的準確率、召回率和F值。
表1給出了本文工作得到的實驗結果, 其中的baseline是僅使用一層輸出層進行標記的結果,我們可以看到本文工作對輸出層的改進使得實驗結果有了明顯的提升。
表1 實驗結果
通過表1我們可以發(fā)現,改進的框架模型不管是在準確率還是召回率上,相對于單層輸出的模型都有比較明顯的提升,而對于F值,改進后的框架在原有的基礎上提升了0.02之多,這也證明了我們分離角色識別和角色分類的改進是有效的。
雖然如此,我們不得不承認該實驗結果離目前基于傳統(tǒng)機器學習方法的中文語義角色標注的最好水平還有一段距離,這也是需要我們進行總結和反思的地方。
本次實驗的另一個發(fā)現是,經過深層學習網絡的訓練,我們得到了更好的詞向量表示,以中國為例,表2列出了分別在訓練前后與中國一詞最近的十個詞語。
表2 詞語相關度
通過表2我們可以發(fā)現,經過針對語義角色標注的深層神經網絡的訓練,我們得到的詞向量能更好地反映出詞語的語義關聯(lián)。表2中訓練前得到的結果還比較雜亂無章,雖然大多表示的都是地點,但是都無法與中國保持在一個層級之上。而在訓練之后,這一現象有了很大的改觀,得到的詞語基本都是國家名稱,這是一個很大的改進,說明了我們的網絡在得到詞向量方面具備很強的能力,這雖然不是本次工作的重心,但是對以后的工作方向也是很有啟發(fā)的。
本文嘗試使用深層神經網絡模型進行中文語義角色標注的探索,首次將角色識別和角色分類兩個步驟以網絡層的形式引入深度學習模型。在測試語料上的實驗結果表明,該方法在一定程度上可以對語義角色進行標注,引入的兩層輸出模型性能上也超越了單層輸出的模型。該方法有效地規(guī)避了人工設定特征的步驟,一定程度上減少了工作量,同時也對詞向量產生了不錯的補充與改進。然而,我們不能忽略的是,本文對中文語義角色標注任務的處理效果并不理想,與主流方法的差距還是比較明顯的。
下一步,我們將參考前人工作試圖在網絡中引入人工設計的語義特征信息,并適當擴充網絡的規(guī)模和復雜性,嘗試從更深層次的語義層面入手,挖掘出更多的語義信息,幫助進行中文語義角色標注任務,從而提升整個工作的性能。
[1] Nianwen Xue. Building a Large-Scale Annotated Chinese Corpus[C]//Proceedings of the 19th international conference on Computational linguistics.2002: 1-8.
[2] Nianwen Xue, Martha Palmer. Annotating the propositions in the Penn Chinese Treebank[C]//Proceedings of the second SIGHAN workshop on Chinese language processing.2003: 47-54.
[3] Honglin Sun, Daniel Jurafsky. Shallow semantic parsing of Chinese[C]//Proceedings of NAACL-HLT.2004.
[4] Nianwen Xue. Labeling Chinese predicates with semantic roles[J]. Computational Linguistics, 2008, 34(2): 225-255.
[5] Weiwei Sun, Zhifang Sui. Chinese function tag labeling[C]//Proceedings of the 23rdPacific Asia Conference on Language, Information and Computation.2009.
[6] Weiwei Sun, Zhifang Sui, Meng Wang and Xin Wang. Chinese semantic role labeling with shallow parsing[C]//Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing.2009: 1475-1483.
[7] Collobert Ronan, Weston Jason. A unified architecture for natural language processing: Deep neural networks with multitask learning[C]//Proceedings of the 25thinternational conference on machine learning.2008: 160-167.
[8] Nianwen Xue, Martha Palmer. Automatic semantic role labeling for Chinese verbs[C]//Proceedings of the 19thInternational Joint Conference on Artificial Intelligence.2005.
[9] Weiwei Ding, Baobao Chang. Improving Chinese semantic role classification with hierarchical feature selection strategy[C]//Proceedings of the 2008 Conference on Empirical Methods in Natural Language Processing.2008.
[10] Yaodong Chen, Ting Wang, Huowang Chen, and Xishan Xu. Semantic role labeling of Chinese using transductive svm and semantic heuristics[C]//Proceedings of the Third International Joint Conference on Natural Language Processing.2008.
[11] Weiwei Sun. Improving Chinese semantic role labeling with rich syntactic features[C]//Proceedings of the ACL 2010 Conference Short Papers.2010: 168-172.
[12] Weiwei Sun. Semantics-driven shallow parsing for Chinese semantic role labeling[C]//Association for Computational Linguistics (ACL).2010.
[13] Bengio, Y. Practical recommendations for gradient-based training of deep architectures. In NN: Tricks of the Trade[M]. 2012: 437-478.
[14] Weiwei Ding, Baobao Chang. Fast semantic role labeling for Chinese based on semantic chunking[C]//Proceedings for of the 22ndInternational Conference on Computer Processing of Oriental Languages.2009: 79-90.