王嘉文,王傳棟,楊雁瑩
(1.南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210023;2.南京森林警察學(xué)院,江蘇 南京 210023)
當(dāng)前大數(shù)據(jù)環(huán)境下,海量化數(shù)據(jù)的結(jié)構(gòu)日趨呈現(xiàn)多樣化和異構(gòu)化。然而在許多問題中,數(shù)據(jù)事實(shí)因應(yīng)用需求的不同,其數(shù)據(jù)結(jié)構(gòu)的組織形式存在多方差異。為了滿足不同數(shù)據(jù)挖掘任務(wù)對(duì)數(shù)據(jù)事實(shí)的統(tǒng)一理解,需要建立一種數(shù)據(jù)的統(tǒng)一內(nèi)部表示。
在自然語言處理(natural language processing,NLP)[1]任務(wù)中,許多高度工程化的NLP系統(tǒng)應(yīng)用,大都采取基于特定任務(wù)特征的線性統(tǒng)計(jì)模型,這些模型由應(yīng)用背景激發(fā)、受領(lǐng)域知識(shí)的限制,通過面向工程的專用特征發(fā)現(xiàn)數(shù)據(jù)表示。這些特征通常由一些特征提取的輔助工具預(yù)處理而得到,是一種監(jiān)督學(xué)習(xí)的訓(xùn)練方法。但是這種方法不僅會(huì)導(dǎo)致復(fù)雜的運(yùn)行時(shí)依賴關(guān)系,而且要求研發(fā)人員必須擁有大量的語言學(xué)知識(shí)。
為了減少這種依賴,必須捕捉關(guān)于自然語言的更多的一般性,分析語言的元信息,如詞性、實(shí)體、語法、句法等,以期獲取一種更一般的描述方法,減少甚至忽略先驗(yàn)領(lǐng)域知識(shí)對(duì)模型的影響,用無監(jiān)督學(xué)習(xí)的方式,盡量避免工程化特征,在大規(guī)模未標(biāo)記數(shù)據(jù)上學(xué)習(xí)產(chǎn)生模型。
文中描述了一種基于深度神經(jīng)網(wǎng)絡(luò)的字詞訓(xùn)練模型,通過發(fā)現(xiàn)其內(nèi)部表示,盡量避免了工程特征對(duì)于模型的限制,采取一種無監(jiān)督學(xué)習(xí)方式對(duì)中文人名識(shí)別進(jìn)行了研究,最后通過實(shí)驗(yàn)驗(yàn)證該模型的合理性。
20世紀(jì)90年代初,國外就已經(jīng)開始了對(duì)命名實(shí)體識(shí)別的研究。最早采用的大多是基于規(guī)則的方法,專家和學(xué)者在某些特定領(lǐng)域?qū)τ谙嚓P(guān)文本進(jìn)行總結(jié)和歸納,提取一種易于理解和表達(dá)的規(guī)則進(jìn)行命名實(shí)體識(shí)別,如GATE項(xiàng)目中的ANNIE系統(tǒng)和曾經(jīng)參加過MUC評(píng)測的FACILE系統(tǒng)等,并在小規(guī)模文本上取得了較好的效果。但是這種方法需要極富經(jīng)驗(yàn)的領(lǐng)域?qū)<疫M(jìn)行人工干預(yù),會(huì)耗費(fèi)大量的人工成本,在面對(duì)大數(shù)據(jù)量的命名實(shí)體識(shí)別任務(wù)時(shí)效率較為低下。
隨著機(jī)器學(xué)習(xí)理論的發(fā)展以及計(jì)算機(jī)性能的提升,基于統(tǒng)計(jì)的方法開始不再受限于計(jì)算量不足而導(dǎo)致的識(shí)別率低的問題,逐漸被廣大的專家和學(xué)者所接受和青睞。自1997年開始,國外的專家依次將隱馬爾可夫[2]、支持向量機(jī)[3]、條件隨機(jī)場[4]等模型應(yīng)用到英文命名實(shí)體識(shí)別任務(wù)中,都取得了較好的效果。
因?yàn)橹形牡奶厥庑?,中文命名?shí)體識(shí)別擁有比英文更高的難度,國內(nèi)專家和學(xué)者在借鑒國外研究成果的基礎(chǔ)上進(jìn)行了長期的研究。張華平等引入隱馬爾可夫模型[5],根據(jù)人工制定的角色編碼使用Viterbi算法在分詞結(jié)果上標(biāo)注人名構(gòu)成角色,根據(jù)標(biāo)注的角色序列進(jìn)行最長模式串匹配,對(duì)中文人名識(shí)別進(jìn)行了研究,在開放性測試集中的F1值達(dá)到95%左右。張素香等使用專家知識(shí)對(duì)各類特征進(jìn)行定義,利用條件隨機(jī)場建立了相應(yīng)的語言模型[6],在人民日?qǐng)?bào)語料上進(jìn)行實(shí)驗(yàn),也獲得了超過95%的F1值。這些方法都可以看作是從句中提取一組依靠純語言學(xué)經(jīng)驗(yàn)的人工設(shè)計(jì)的特征,再經(jīng)過不斷地修正將其饋送到經(jīng)典的淺分類算法中。特征選擇因應(yīng)用背景的不同,對(duì)每種NLP應(yīng)用都需要進(jìn)行額外的研究,任務(wù)較為復(fù)雜時(shí)(比如SRL語義角色標(biāo)注[7])就需要進(jìn)行大量關(guān)于特征的人工提取。由于受研究人員語言學(xué)知識(shí)的限制,這些模型隨著語料規(guī)模的擴(kuò)大,工作效率會(huì)出現(xiàn)顯著下降。
命名實(shí)體識(shí)別應(yīng)用為了規(guī)避這種限制,目前的研究多采用詞的向量化[8]對(duì)自然語言進(jìn)行數(shù)字化表示,以期刻畫詞的更一般性。1986年Hinton提出了Distributed Representation[9],將語料中每個(gè)詞用一個(gè)N維向量表示,N個(gè)維度代表詞的N個(gè)不同特征,有效地避免One-hot所造成的維度災(zāi)難、數(shù)據(jù)稀疏等問題,并且能用向量的距離來計(jì)算詞與詞之間意思的遠(yuǎn)近,刻畫了詞與詞之間所隱藏的關(guān)聯(lián)性,避免了兩個(gè)詞之間的孤立。但是要從大量未標(biāo)記文本中無監(jiān)督地提取詞向量,還必須借助語言模型。2003年,Bengio等在n元模型的基礎(chǔ)上,提出神經(jīng)概率語言模型-NNLM[10],用一種三層前饋神經(jīng)網(wǎng)絡(luò)建模詞的上下文關(guān)系。后人將詞向量和神經(jīng)網(wǎng)絡(luò)引入到命名實(shí)體識(shí)別工作中,極大地減少了維度災(zāi)難對(duì)模型性能的影響。2007年,為了提高效率,降低算法時(shí)間復(fù)雜度,Mnih等又提出Log雙線性語言模型-LBL[11]。2010年Mikolov等使用循環(huán)神經(jīng)網(wǎng)絡(luò)模型[12],通過迭代多個(gè)隱藏層保存更豐富的上下文信息,提高了命名實(shí)體識(shí)別的潛力。
2011年Collobert等提出一種靈活的層疊式神經(jīng)網(wǎng)絡(luò)架構(gòu)[13],將訓(xùn)練好的詞向量應(yīng)用于各種NLP任務(wù),避開過多的面向特定任務(wù)的特征工程,在降低計(jì)算資源的同時(shí)保持了優(yōu)秀的性能。Mikolov在2013年提出CBOW和Skip-gram兩個(gè)模型[14],以過渡的投影層代替隱藏層,減少了矩陣運(yùn)算的次數(shù),提高了訓(xùn)練速度,而且用上下文各詞的詞向量的平均值來刻畫目標(biāo)詞,排除了詞序?qū)τ?xùn)練的影響。近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNM)[15]、Glove模型[16]、時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(LSTM)等模型相繼被應(yīng)用到命名實(shí)體識(shí)別中,在提高識(shí)別效果的同時(shí)也不斷降低識(shí)別過程對(duì)語言學(xué)知識(shí)的依賴,使用無監(jiān)督學(xué)習(xí)進(jìn)行命名實(shí)體識(shí)別已經(jīng)成為國外命名實(shí)體識(shí)別技術(shù)研究的新方向。但是由于中文的復(fù)雜性,中文命名實(shí)體識(shí)別在無監(jiān)督學(xué)習(xí)方向上的研究目前仍然存在不足。
文中提出一種基于深度神經(jīng)網(wǎng)絡(luò)的中文人名訓(xùn)練架構(gòu),如圖1所示,圖中使用的訓(xùn)練語料和測試數(shù)據(jù)集均進(jìn)行了分詞預(yù)處理。訓(xùn)練可概述為4個(gè)模塊:
(1)基本詞面的向量化訓(xùn)練。僅基于訓(xùn)練語料統(tǒng)計(jì)詞頻,以詞頻為依據(jù)利用連續(xù)詞袋CBOW模型迭代訓(xùn)練得到基本詞面向量。
(2)特征提取及其特征項(xiàng)向量表示。獲取包含每個(gè)人名特征項(xiàng)的目標(biāo)詞上下文的基本詞面向量,構(gòu)建共現(xiàn)矩陣,提取特征向量作為特征項(xiàng)向量。
(3)中文人名識(shí)別的模型參數(shù)訓(xùn)練。以目標(biāo)詞的基本詞面向量與各特征向量的拼接作為輸入,構(gòu)建前向全連接的深度神經(jīng)網(wǎng)絡(luò),使用梯度下降法迭代更新訓(xùn)練參數(shù),并用Viterbi算法返回最佳路徑,最終獲得穩(wěn)定的模型參數(shù)。
(4)使用測試語料進(jìn)行模型測試。測試模塊使用訓(xùn)練好的穩(wěn)定參數(shù)構(gòu)建中文人名識(shí)別模型,根據(jù)Viterbi算法返回的最優(yōu)路徑,設(shè)定閾值提取標(biāo)簽結(jié)果并進(jìn)行分析。
圖1 中文人名識(shí)別的訓(xùn)練框架
訓(xùn)練以句子為單位迭代進(jìn)行,訓(xùn)練的前期工作是遍歷語料統(tǒng)計(jì)詞頻信息,以詞頻對(duì)所有詞降序排序,并建立詞典的hash索引以應(yīng)對(duì)訓(xùn)練中的頻繁查詢。
對(duì)目標(biāo)詞w來說,Context(w)表示其由m個(gè)詞組成的上下文,訓(xùn)練中去除上下文中的詞序信息,使用上下文中各個(gè)詞向量的均值作為輸入,具體表示為:
(1)
模型為了提高訓(xùn)練速度,擯棄傳統(tǒng)隱含層以減少矩陣運(yùn)算,直接從神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)轉(zhuǎn)化為與Logistic回歸一致的Log線性結(jié)構(gòu),用二分類的思想以式2所示的目標(biāo)函數(shù)為優(yōu)化目標(biāo):
(2)
輸出層是對(duì)于特征函數(shù)值進(jìn)行一個(gè)二分類的處理以得出其發(fā)生的條件概率。在實(shí)際訓(xùn)練中,將任意一個(gè)目標(biāo)詞作為葉子節(jié)點(diǎn),取其詞頻作為權(quán)值來構(gòu)造Huffman樹。從根節(jié)點(diǎn)到該目標(biāo)詞的葉子節(jié)點(diǎn)路徑上的每個(gè)分支節(jié)點(diǎn),都是一個(gè)影響目標(biāo)詞最終語義的隱式二分類器。訓(xùn)練中構(gòu)造與每一個(gè)分支節(jié)點(diǎn)對(duì)應(yīng)的權(quán)值向量,組成權(quán)值矩陣作為訓(xùn)練參數(shù),這個(gè)參數(shù)矩陣在迭代訓(xùn)練中得到更新。為此,在模型構(gòu)造中引入Sigmoid函數(shù):
(3)
對(duì)于某一個(gè)目標(biāo)詞w,其Huffman樹路徑中的每一個(gè)分支節(jié)點(diǎn),通過權(quán)值向量θ計(jì)算其與上下文環(huán)境向量x語義距離xTθ,依據(jù)Sigmoid函數(shù),可將分支節(jié)點(diǎn)對(duì)目標(biāo)節(jié)點(diǎn)的概率貢獻(xiàn)歸結(jié)為正類概率p(L=1|x,θ)=g(xTθ)或負(fù)類概率p(L=0|x,θ)=1-g(xTθ)。其中L可視為最終的標(biāo)簽輸出,取值為1表示正類,取值為0表示為負(fù)類,二式可統(tǒng)一寫為:
p(L|x,θ)=g(xTθ)L·[1-g(xTθ)]1-L
(4)
由此,可得到目標(biāo)詞w受上下文的語義影響產(chǎn)生的隱含條件概率為:
(5)
其中,n為目標(biāo)詞Huffman編碼的長度,也就是從根節(jié)點(diǎn)到目標(biāo)詞節(jié)點(diǎn)路徑中的父節(jié)點(diǎn)個(gè)數(shù),由式2、4與5可推出目標(biāo)函數(shù):
g(xTθ)])}
(6)
接下來使用隨機(jī)梯度下降法對(duì)E更新,函數(shù)E關(guān)于參數(shù)θ的梯度計(jì)算為:?E/?θ=[L-g(xTθ)]x,由此得到參數(shù)θ的更新公式為:θ←θ+η[L-g(xTθ)]x。同理得到參數(shù)x的更新公式為:x←x+η[L-g(xTθ)]θ。訓(xùn)練目標(biāo)是使得目標(biāo)詞受上下文環(huán)境影響的編碼概率最大,向量x與θ的更新僅用于訓(xùn)練迭代計(jì)算,因?yàn)閤是目標(biāo)詞w的上下文向量的累加的均值,因此目標(biāo)詞的向量v(w)的更新是一次迭代訓(xùn)練完成后,將梯度的累加更新到向量的每一個(gè)分量中,如式7所示:
(7)
其中,η表示學(xué)習(xí)率。訓(xùn)練中η隨著模型處理而動(dòng)態(tài)調(diào)整,直到達(dá)到閾值ηmin為止,目的在于緩解梯度更新中的波動(dòng),使更新過程更加平穩(wěn)。根據(jù)上述的迭代算法依次對(duì)所有的目標(biāo)詞和它們的詞頻進(jìn)行訓(xùn)練,通過神經(jīng)網(wǎng)絡(luò)的反復(fù)迭代,網(wǎng)絡(luò)對(duì)于輸入的響應(yīng)達(dá)到預(yù)定的目標(biāo)范圍后,w(v)就是訓(xùn)練好的最后的詞向量。
在中文人名識(shí)別領(lǐng)域,特征的提取主要考慮人名的姓氏特征、稱謂修飾特征與特殊人名特征,通過構(gòu)建特征知識(shí)庫,以特征的每一個(gè)特征項(xiàng)為單位,從訓(xùn)練語料中匹配其窗口上下文,從前一個(gè)模塊的訓(xùn)練結(jié)果中提取擁有該特征項(xiàng)的目標(biāo)詞向量,構(gòu)建特征項(xiàng)的共現(xiàn)矩陣R。對(duì)于特征項(xiàng)共現(xiàn)矩陣R,求其協(xié)方差矩陣CR=1/n*RRT。
利用公式CRμ=λμ求得協(xié)方差矩陣的所有特征值與所有特征向量μ,對(duì)所有非0的特征值所對(duì)應(yīng)的特征向量取均值,即為所求的特征項(xiàng)向量。
訓(xùn)練以句子為單位,使用統(tǒng)一的模型架構(gòu),分三種方案組織輸入向量St(t∈(1,n))訓(xùn)練三組模型參數(shù),以評(píng)估人名識(shí)別的特征提取對(duì)于標(biāo)簽結(jié)果的影響。方案一,僅以詞頻訓(xùn)練的基本詞面向量作為輸入。方案二,在基本詞面向量的基礎(chǔ)上,融入姓氏特征和稱謂修飾特征等人名的基本特征,攜帶更多的上下文信息。方案三,在方案二的基礎(chǔ)上再引入特殊人名知識(shí)庫,結(jié)合特殊人名特征進(jìn)行強(qiáng)化學(xué)習(xí),以期得到更佳的模型參數(shù)。特別需要指出的是,在訓(xùn)練中使用UNKNOWN關(guān)鍵詞作為未識(shí)詞和未識(shí)特征項(xiàng)的初始向量。將這個(gè)目標(biāo)詞組合向量作為訓(xùn)練模型輸入,在后續(xù)的神經(jīng)網(wǎng)絡(luò)層中進(jìn)行運(yùn)算。
圖2是中文人名識(shí)別的模型參數(shù)訓(xùn)練架構(gòu)。
圖2 中文人名識(shí)別的模型參數(shù)訓(xùn)練架構(gòu)
對(duì)于輸入目標(biāo)詞向量St,在架構(gòu)的一個(gè)或多個(gè)神經(jīng)網(wǎng)絡(luò)的隱藏層中做如下的映射變換進(jìn)行降維操作,如圖中的步驟①所示:
(8)
其中,K和b分別表示權(quán)值矩陣和偏置向量;τ表示堆疊的隱藏層的層數(shù)。
將這多個(gè)隱藏層進(jìn)行堆疊,對(duì)輸入向量St進(jìn)行降維,將其轉(zhuǎn)化成一個(gè)向量z以獲取非線性特征。這里要添加一個(gè)硬性的雙曲正切函數(shù)h(z)作為激活函數(shù),用以保證模型的非線性,最終得到隱藏層向量y,如圖中的步驟②所示。
(9)
激活函數(shù)的優(yōu)點(diǎn)在于能夠在不增加過多的計(jì)算量的同時(shí)保證泛化性能基本不變。
類似輸入層到隱藏層的處理,對(duì)于隱藏層向量y,同樣對(duì)它在后續(xù)的一個(gè)或多個(gè)神經(jīng)網(wǎng)絡(luò)的隱藏層中做映射變換,從而進(jìn)行降維,最終獲得輸出層向量o,如圖中的步驟③所示。這里的權(quán)值矩陣和偏置向量為K'和b'。
根據(jù)邏輯回歸的二分類可以得到條件概率p(L|St,φ)。
p(L|St,φ)=[g(St·φ)]L·[1-g(St·φ)]1-L
(10)
以輸出向量o為觀察序列,用隨機(jī)梯度下降法對(duì)所有的參數(shù)φ進(jìn)行梯度更新,在更新的同時(shí)用一個(gè)反向指針保存更新的路徑:
(11)
其中,φ是參數(shù)更新過程中所有參數(shù)組成的集合;L是二分類的標(biāo)簽。與前面一樣,引入一個(gè)學(xué)習(xí)率λ來減少梯度更新中的波動(dòng)。
Viterbi算法是解決分類標(biāo)簽標(biāo)注問題的理想選擇。使用式11每進(jìn)行一次更新,都能通過反向指針,對(duì)Viterbi算法的初始概率矩陣和狀態(tài)轉(zhuǎn)移概率矩陣進(jìn)行更新,參數(shù)更新終止條件是Viterbi算法中最終局部概率達(dá)到最大,即人名識(shí)別的條件概率達(dá)到局部最優(yōu)。達(dá)到局部最優(yōu)時(shí)的參數(shù)集就是模型最佳時(shí)的穩(wěn)定參數(shù)集φ*,φ*={K,b,K',b',π,A},通過φ確定最佳的中文人名識(shí)別模型,根據(jù)輸入向量St的三種不同組織方案最終獲得三種最佳模型。
確定最佳的中文人名識(shí)別模型后,引入測試數(shù)據(jù)集,以句子為單位進(jìn)行人名識(shí)別測試。首先將測試句進(jìn)行分詞等預(yù)處理操作,隨后獲取句子中每個(gè)詞的基本詞面向量,根據(jù)2.3節(jié)提到的三種方案訓(xùn)練得到的三種最佳模型分別獲得句子中每個(gè)詞的輸出向量。
對(duì)于每一種方案,將所有詞的輸出向量序列作為Viterbi算法的觀察序列進(jìn)行輸入,根據(jù)φ*中最優(yōu)模型的初始概率矩陣和狀態(tài)轉(zhuǎn)移概率矩陣,得到一條最優(yōu)路徑,最優(yōu)路徑上的每個(gè)概率值都是對(duì)應(yīng)目標(biāo)詞是人名的最優(yōu)概率,隨后人工設(shè)置一個(gè)閾值對(duì)其進(jìn)行判斷。對(duì)每個(gè)詞來說,是人名的概率大于這個(gè)閾值即判斷其為人名,否則判斷其不是人名。
最后根據(jù)每種方案的不同結(jié)果對(duì)三種模型的效果分別進(jìn)行一個(gè)評(píng)價(jià)。
使用的訓(xùn)練語料是來自2008年的搜狐新聞總計(jì)超過1.2 GB的中文文本,總計(jì)文本的句子數(shù)目共計(jì)26 964條,使用20 223條進(jìn)行訓(xùn)練,6 741條用于測試,采用中科院ICTCLAS分詞系統(tǒng)進(jìn)行分詞操作,分詞后統(tǒng)計(jì)獲得的詞面數(shù)共有89 464個(gè)。
對(duì)于實(shí)驗(yàn)結(jié)果,采用識(shí)別率P、召回率R和它們的調(diào)和平均值F1值作為評(píng)價(jià)標(biāo)準(zhǔn)。識(shí)別率表示正確識(shí)別出的人名占總計(jì)識(shí)別出的人名的百分比,衡量模型排除非相關(guān)信息干擾的能力;召回率表示正確識(shí)別出的人名占語料中所有人名的百分比,衡量模型獲得相關(guān)信息的能力;F1值作為識(shí)別率和召回率的調(diào)和平均值,是對(duì)模型性能的綜合考量。
記正確識(shí)別出的人名的個(gè)數(shù)為α,總計(jì)識(shí)別出的人名的個(gè)數(shù)為β,語料中所有人名的個(gè)數(shù)為γ,則具體公式如下:
(12)
(13)
(14)
根據(jù)2.3節(jié)中提到的三種方案訓(xùn)練得到的三種最佳模型進(jìn)行人名識(shí)別,共獲得三個(gè)實(shí)驗(yàn)結(jié)果。使用文獻(xiàn)[9]的隱馬爾可夫模型和文獻(xiàn)[10]的條件隨機(jī)場,在文中所使用的訓(xùn)練語料中進(jìn)行實(shí)驗(yàn)所得到的結(jié)果作為對(duì)照,進(jìn)行對(duì)比分析。具體實(shí)驗(yàn)結(jié)果如表1所示。
表1 各模型的人名識(shí)別結(jié)果 %
通過表1不難得出,方案1在只考慮詞頻特征時(shí),識(shí)別率、召回率、F1值都十分低下,甚至劣于隱馬爾可夫模型和條件隨機(jī)場的識(shí)別效果。但方案2在添加了人名的基本特征后,識(shí)別效果得到很大的提升,優(yōu)于傳統(tǒng)的識(shí)別方法。而方案3在引入了人工離散特征之后,識(shí)別效果獲得了進(jìn)一步的提升,其F1值甚至能達(dá)到89.07%。說明文中提出的模型在中文人名識(shí)別中,能夠在盡量避免工程化特征影響的同時(shí)保持較好的識(shí)別效果,并能夠在添加少量人工特征時(shí)獲得更好的性能,在高度工程化的實(shí)際應(yīng)用中也非常有效。
以詞向量為媒介,設(shè)計(jì)深度神經(jīng)網(wǎng)絡(luò)架構(gòu),將復(fù)雜的命名實(shí)體識(shí)別工作轉(zhuǎn)移到多層的前向全連接的神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn),盡可能避免工程化特征的影響,有效提高了識(shí)別效率。但隨著計(jì)算機(jī)技術(shù)的發(fā)展,遞歸神經(jīng)網(wǎng)絡(luò)等更先進(jìn)的技術(shù)也開始逐漸應(yīng)用到命名實(shí)體識(shí)別任務(wù)之中,筆者在對(duì)這些先進(jìn)技術(shù)的調(diào)研中發(fā)現(xiàn)這些新技術(shù)在命名實(shí)體識(shí)別領(lǐng)域的應(yīng)用尚處在開始階段,效果并不能達(dá)到預(yù)期的要求。下一步的工作中,將對(duì)遞歸神經(jīng)網(wǎng)絡(luò)做進(jìn)一步的研究,用其對(duì)現(xiàn)在的前向全連接網(wǎng)絡(luò)進(jìn)行改造,以期望獲得更好的識(shí)別效果。