翟社平 段宏宇 李兆兆
1(西安郵電大學(xué)計(jì)算機(jī)學(xué)院 陜西 西安 710121)2(陜西省網(wǎng)絡(luò)數(shù)據(jù)分析與智能處理重點(diǎn)實(shí)驗(yàn)室 陜西 西安 710121)
知識(shí)圖譜是一種包括眾多實(shí)體及其關(guān)系的語義網(wǎng)絡(luò),實(shí)現(xiàn)了語義表述和智能連接,是人工智能領(lǐng)域的重要構(gòu)成技術(shù)。目前,知識(shí)圖譜已經(jīng)在電商搜索、知識(shí)庫問答以及知識(shí)管理等領(lǐng)域得到深層應(yīng)用[1]。實(shí)體抽取,也稱命名實(shí)體學(xué)習(xí)或命名實(shí)體識(shí)別,是知識(shí)圖譜構(gòu)建中最為重要和關(guān)鍵的部分,實(shí)現(xiàn)了從文本數(shù)據(jù)中抽取出實(shí)體信息[2]。高精準(zhǔn)度的實(shí)體抽取很大程度上保障了所構(gòu)建知識(shí)圖譜的高適用性。
早期使用基于規(guī)則的方法實(shí)現(xiàn)實(shí)體抽取,通過領(lǐng)域?qū)<液驼Z言學(xué)者手工制定有效規(guī)則,將文本與規(guī)則進(jìn)行匹配識(shí)別出實(shí)體[3]。比如,在中文系統(tǒng)中,人名的下文用詞可以是“吃”、“同學(xué)”等,而單位組織名的尾部可以是“集團(tuán)”、“學(xué)校”等,利用這些規(guī)則,可以將人名、地點(diǎn)名、組織名等實(shí)體抽取出來。傳統(tǒng)采用制定規(guī)則的實(shí)體識(shí)別方法有:Grishman開發(fā)的Proteus系統(tǒng)[4]、Black開發(fā)的FACILE系統(tǒng)[5]等。然而,基于規(guī)則的方法構(gòu)建過程中往往需要大量的語言學(xué)知識(shí),而且費(fèi)時(shí)費(fèi)力、可移植性不好。之后,知識(shí)圖譜實(shí)體抽取任務(wù)被部分機(jī)器學(xué)習(xí)算法解決。機(jī)器學(xué)習(xí)使用大量的實(shí)驗(yàn)語料訓(xùn)練學(xué)習(xí),得到最終的標(biāo)注模型,完成對(duì)實(shí)體的詞性標(biāo)注識(shí)別。常應(yīng)用到實(shí)體識(shí)別任務(wù)中的模型包括隱馬爾科夫模型HMM[6]、支持向量機(jī)模型SVM[7]、條件隨機(jī)場(chǎng)模型CRF[8]等。目前比較流行的是條件隨機(jī)場(chǎng)模型,通過人工定義特征模板,利用上下文標(biāo)注信息發(fā)掘命名實(shí)體。這種利用人工特征的方法取得了很好的識(shí)別效果,但人工制定特征代價(jià)較昂貴,不同領(lǐng)域的特征不盡相同,導(dǎo)致識(shí)別方法不通用,工作量大。伴隨著計(jì)算機(jī)硬件能力的提高、文本單詞向量化表示的廣泛應(yīng)用,神經(jīng)網(wǎng)絡(luò)模型在處理實(shí)體抽取任務(wù)方面表現(xiàn)出更高的效率,例如循環(huán)神經(jīng)網(wǎng)絡(luò)[9]、卷積神經(jīng)網(wǎng)絡(luò)[10]以及長短時(shí)記憶網(wǎng)絡(luò)[11]。使用神經(jīng)網(wǎng)絡(luò)提取文本特征不再依賴人工特征和領(lǐng)域知識(shí),減少了人工特征提取所需代價(jià),有效地提高了系統(tǒng)效率。
本文對(duì)中文領(lǐng)域的命名實(shí)體進(jìn)行識(shí)別,結(jié)合雙向長短時(shí)記憶網(wǎng)絡(luò)以及條件隨機(jī)場(chǎng)模型,自動(dòng)提取句子特征,提高實(shí)體抽取效率。
在傳統(tǒng)的實(shí)體抽取方法中,單詞采用0和1組成的稀疏向量表示,向量中某一分量的值為1,其余分量的值為0、1的位置表示該詞在詞典中的編號(hào)[12]。這種方法可以完成一部分實(shí)體抽取任務(wù),但存在缺點(diǎn),一是詞典規(guī)模通常比較大,維度高,容易造成維度災(zāi)難和數(shù)據(jù)稀疏問題;二是采用稀疏向量,導(dǎo)致前后單詞彼此獨(dú)立,無法得到兩個(gè)詞的關(guān)聯(lián)信息。
為了計(jì)算詞本身之間的語義相似度,深度學(xué)習(xí)利用低維、稠密的實(shí)值向量標(biāo)識(shí)單詞,稱詞向量。詞向量包含了文本的語義信息,采用歐式距離或余弦夾角等方法來衡量兩個(gè)向量詞之間的距離,發(fā)掘兩個(gè)詞的關(guān)系。Bengio[13]在2003年提出了一種基于深度學(xué)習(xí)的語言模型,如圖1所示。
圖1 神經(jīng)網(wǎng)絡(luò)語言模型
該方法引入詞向量來構(gòu)建概率模型,公式表示如下:
p(s)=p(w)=p(w1,w2,…,wT)=
(1)
context為單詞wt的上下文,通過深度學(xué)習(xí)方法來實(shí)現(xiàn)概率語言模型。類似于傳統(tǒng)n-gram概率模型,利用前n-1個(gè)詞wt-n+1、…、wt-2、wt-1來推測(cè)下一個(gè)詞wt出現(xiàn)的概率。輸入向量x由前n-1個(gè)詞wt-n+1、…、wt-2、wt-1的詞向量連接組成,中間隱藏層引入tanh函數(shù)去線性化,輸出層獲得隱藏層的結(jié)果后利用Softmax函數(shù)歸一化處理,得到概率值P(wtcontext),最后應(yīng)用極大似然估計(jì)進(jìn)行訓(xùn)練,得到單詞wt的詞向量C(wt)。
除了上述用于訓(xùn)練詞向量的模型方法外,目前常用Google開源的詞向量訓(xùn)練框架Word2vec生成詞向量[14]。Word2vec采用向量相似度表示某種隱含的語義關(guān)系,使用向量空間的向量運(yùn)算簡(jiǎn)化文本內(nèi)容處理。
實(shí)體抽取是典型的文本序列標(biāo)注問題,RNN網(wǎng)絡(luò)能夠有效地利用數(shù)據(jù)的序列信息,并具有一定的記憶功能,是一種有效地解決序列標(biāo)注任務(wù)的神經(jīng)網(wǎng)絡(luò),但其無法很好地處理長距離依賴問題,LSTM引入門限制機(jī)制對(duì)歷史信息進(jìn)行過濾,有效地解決了這個(gè)問題。由于LSTM只是利用當(dāng)前詞的上文信息,而在實(shí)體抽取處理中,對(duì)當(dāng)前詞的識(shí)別同樣需要下文信息,雙向長短時(shí)記憶網(wǎng)絡(luò)模型BILSTM結(jié)構(gòu)能同時(shí)包含文本上下文信息[15],原理如圖2所示。在BILSTM模型中,包含前向和后向兩個(gè)LSTM層,連接著同一個(gè)輸出層。由于訓(xùn)練序列的前向和后向LSTM層組成了BILSTM網(wǎng)絡(luò)結(jié)構(gòu),所以在實(shí)體抽取中,BILSTM模型能兼顧上下文信息,自動(dòng)提取句子特征,獲得更好的結(jié)果。
圖2 雙向長短時(shí)記憶網(wǎng)絡(luò)
傳統(tǒng)實(shí)體抽取方法CRF模型需要大量的人工特征,現(xiàn)有的BLSTM神經(jīng)網(wǎng)絡(luò)模型對(duì)每個(gè)單詞標(biāo)注的過程是獨(dú)立的分類,不能直接利用上文標(biāo)簽信息,導(dǎo)致預(yù)測(cè)出的標(biāo)簽序列可能是錯(cuò)誤的,影響實(shí)體抽取效果。本文用BILSTM_CRF模型完成實(shí)體抽取任務(wù),通過BILSTM網(wǎng)絡(luò)學(xué)習(xí)特征,避免人工提取特征的復(fù)雜性,利用CRF層考慮前后句子的標(biāo)簽信息,使實(shí)體標(biāo)注抽取不再是對(duì)每個(gè)單詞獨(dú)立的分類,實(shí)體抽取更為準(zhǔn)確、高效。
本文提出的實(shí)體抽取BILSTM_CRF模型分為三層,首先是輸入層,其次是隱含層,最后是標(biāo)注層,模型架構(gòu)如圖3所示。
圖3 BILSTM_CRF模型架構(gòu)
look-up是輸入層,主要負(fù)責(zé)將窗口的詞進(jìn)行向量化映射,使用訓(xùn)練好的詞向量矩陣將輸入窗口的每個(gè)詞xi映射為分布式向量xi,xi∈Rd,d是向量的維度。為防止出現(xiàn)過擬合狀況,設(shè)置dropout參數(shù)。
2.2.1前向神經(jīng)網(wǎng)絡(luò)
模型通過前向神經(jīng)網(wǎng)絡(luò)將輸入的特征向量經(jīng)過層層推導(dǎo)得到最后的輸出,并通過這些輸出解決實(shí)體抽取任務(wù)。本實(shí)驗(yàn)實(shí)體抽取模型的輸入層是大小為n·V的窗口詞向量,n代表窗口的規(guī)模,V指詞向量的維度。向量化的字符作為隱含層的輸入數(shù)據(jù),隱含層得到的結(jié)果則是標(biāo)注層的特征。標(biāo)注層表示的是輸入層的字符為每個(gè)分類的可能性。網(wǎng)絡(luò)架構(gòu)的前向神經(jīng)網(wǎng)絡(luò)函數(shù)如下:
h=W(x1,x2)+b1
(2)
a=f(h)
(3)
z=g(UT+b2)
(4)
2.2.2損失函數(shù)
在前向神經(jīng)網(wǎng)絡(luò)的邏輯回歸層,常使用Softmax函數(shù)計(jì)算一種狀態(tài)序列y∈YX的概率。針對(duì)單個(gè)樣本的損失函數(shù),應(yīng)用極大似然估計(jì)來定義:
l(x,y)=-log(p(y|x))
(5)
模型進(jìn)行訓(xùn)練時(shí),這種基于單樣本梯度參數(shù)更新方法不僅造成模型訓(xùn)練速度慢的問題,還容易帶來優(yōu)化波動(dòng)現(xiàn)象,本文引入批量樣本的梯度進(jìn)行參數(shù)更新,定義模型的損失函數(shù)為:
(6)
式中:X、Y為批量訓(xùn)練樣本,大小為batch。
2.2.3參數(shù)優(yōu)化
參數(shù)優(yōu)化是神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的核心任務(wù),利用反向傳播算法可以計(jì)算損失函數(shù)對(duì)每個(gè)參數(shù)的梯度,并結(jié)合學(xué)習(xí)率更新參數(shù),從而提高訓(xùn)練模型的質(zhì)量。傳統(tǒng)梯度下降法每次都采用相同的學(xué)習(xí)速率η來更新所有的參數(shù)θi,即:
gt,i=▽iL(θ)
(7)
θt+1,i=θt,i-η·gt,i
(8)
這種采用固定學(xué)習(xí)速率的方法難以適用于稀疏梯度,而Adagrad方法可以實(shí)現(xiàn)為各個(gè)參數(shù)動(dòng)態(tài)地分配不同的學(xué)習(xí)率。在利用Adagrad方法進(jìn)行模型參數(shù)的更新時(shí),對(duì)樣本較少的特征進(jìn)行較大幅度的參數(shù)調(diào)整,對(duì)頻繁的特征進(jìn)行微調(diào),通過這種方式實(shí)現(xiàn)對(duì)學(xué)習(xí)率進(jìn)行一定的約束,其形式化定義公式如下:
(9)
式中:φ用來防止分母為零項(xiàng),Gt∈Rnn是一個(gè)對(duì)角矩陣,矩陣中的元素Gt,ii表示每個(gè)參數(shù)θi從最初狀態(tài)到t時(shí)刻所有梯度平方的求和。在t時(shí)刻,學(xué)習(xí)速率在對(duì)應(yīng)參數(shù)θi的前一時(shí)刻梯度基礎(chǔ)上被更改,觀察式(9)發(fā)現(xiàn),當(dāng)θi的梯度gi持續(xù)較小時(shí),對(duì)參數(shù)進(jìn)行大幅度調(diào)動(dòng),而參數(shù)已經(jīng)接近最優(yōu),僅僅需要微調(diào)。
2.2.4訓(xùn)練算法
圖4展示了利用反向傳播算法優(yōu)化網(wǎng)絡(luò)模型的過程。反向傳播是一個(gè)重復(fù)反饋的過程。首先采用較小單位訓(xùn)練數(shù)據(jù),通過前向傳播算法得到神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果,然后利用損失函數(shù)計(jì)算預(yù)測(cè)值和真實(shí)值之間的差距,最后用反向傳播更新模型參數(shù)的取值,模型訓(xùn)練算法如算法1所示。
圖4 神經(jīng)網(wǎng)絡(luò)反向優(yōu)化流程
算法1BILSTM_CRF模型訓(xùn)練
輸入:模型參數(shù)θ,損失函數(shù)L(X,Y),訓(xùn)練樣本X,訓(xùn)練樣本Y
輸出:
1. 對(duì)于每個(gè)epoch循環(huán)
2. 對(duì)于每個(gè)batch循環(huán)
3. Function forward(θ,L(X,Y),X,Y)
4. BILSTM前向訓(xùn)練
5. CRF前向訓(xùn)練
Calculate theL(X,Y) and
gt,i=▽iL(θ)
/*計(jì)算損失函數(shù)*/
6. End function
7. Function backward(θ,gt,i)
/*參數(shù)更新*/
9. CRF反向傳播及更新參數(shù)
10. BILSTM反向傳播及更新參數(shù)
11.End function
12.結(jié)束batch循環(huán)
13. 結(jié)束epoch循環(huán)
14. Returnθ
3.1.1環(huán)境準(zhǔn)備
為了解決CPU訓(xùn)練模型需要消耗較長時(shí)間的問題,本實(shí)驗(yàn)用NVIDIA GeForce GTX 1060顯卡對(duì)模型進(jìn)行訓(xùn)練,使用該型號(hào)GPU訓(xùn)練時(shí)間縮短為小時(shí)級(jí)別,實(shí)驗(yàn)需要配置的軟硬件如表1所示。
表1 軟硬件配置表
3.1.2語料準(zhǔn)備
實(shí)驗(yàn)使用2014年1月人民日?qǐng)?bào)語料庫樣本,其中訓(xùn)練語料占實(shí)驗(yàn)樣本的80%,剩余作為實(shí)驗(yàn)測(cè)試語料,分別對(duì)樣本中的人物姓名(PER)、地點(diǎn)名(LOC)和組織機(jī)構(gòu)名(ORG)進(jìn)行識(shí)別,具體的數(shù)據(jù)統(tǒng)計(jì)如表2所示。
表2 語料數(shù)據(jù)統(tǒng)計(jì)表
監(jiān)督訓(xùn)練方式主要標(biāo)注模型包括BIO、BIEO、BIESO等,本文利用的模式是BIO,B代表命名實(shí)體首字,I代表實(shí)體中間,O代表非實(shí)體。因此,B-PER、I-PER分別表示人名首字、人名非首字,B-LOC、I-LOC表示地點(diǎn)名首字、地點(diǎn)名非首字,B-ORG、I-ORG指組織名首字、組織名非首字,O代表非命名實(shí)體。
3.1.3詞向量
實(shí)體標(biāo)注抽取實(shí)驗(yàn)需要一個(gè)初始詞向量,相對(duì)于直接隨機(jī)初始化詞向量,使用大量非標(biāo)注樣本語料訓(xùn)練詞向量效率更高。本實(shí)驗(yàn)詞向量訓(xùn)練工具用谷歌開源word2vec語言模型CBOW。設(shè)置CBOW模型參數(shù):詞向量的維度大小為100、200和300維;滑動(dòng)窗口大小為5;訓(xùn)練迭代次數(shù)100;設(shè)置學(xué)習(xí)速率0.05等。
3.1.4神經(jīng)網(wǎng)絡(luò)
谷歌開源的TensorFlow計(jì)算框架能夠很好地支持深度學(xué)習(xí)的各種算法,本文利用TensorFlow框架來訓(xùn)練BILSTM_CRF實(shí)體抽取模型,具體的參數(shù)設(shè)置為:神經(jīng)網(wǎng)絡(luò)層數(shù)2;隱含層節(jié)點(diǎn)數(shù)300;最大梯度值5;學(xué)習(xí)速率0.02;過擬合參數(shù)0.6;批量樣本大小128等。
本實(shí)驗(yàn)使用準(zhǔn)確率P(Precision)、召回率又叫查全率R(Recall)以及F1值對(duì)模型的性能進(jìn)行評(píng)價(jià)[16]。3個(gè)評(píng)價(jià)指標(biāo)的公式定義如下:
(10)
(11)
(12)
(1) 實(shí)驗(yàn)采用傳統(tǒng)條件隨機(jī)場(chǎng)CRF模型、雙向長短時(shí)記憶網(wǎng)絡(luò)BILSTM模型,混合方法LSTM_CRF模型作為對(duì)比實(shí)驗(yàn)。傳統(tǒng)的CRF方法利用實(shí)驗(yàn)語料人工設(shè)計(jì)特征模板,而不是用詞向量表示字符,模板設(shè)計(jì)如圖5所示。
圖5 CRF特征模板
表3 不同模型對(duì)比表
BILSTM在所有測(cè)試模型中F1值最低,神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)較為復(fù)雜,需要大量的訓(xùn)練語料,而本實(shí)驗(yàn)語料庫較小,模型得不到充分訓(xùn)練,性能受到影響;其次,BILSTM對(duì)建模的狀態(tài)是相互獨(dú)立的,不能有效利用上下已經(jīng)標(biāo)注過的序列信息,影響抽取效率。
混合模型LSTM_CRF比其中兩種單一模型F1值高,識(shí)別效果較好,但因LSTM網(wǎng)絡(luò)只能提取序列標(biāo)注模型的上文信息特征,無法利用下文信息特征,抽取模型未達(dá)到最好效果。
觀察表3可以發(fā)現(xiàn),相比于其他三種模型方法,基于BILSTM_CRF模型的實(shí)體抽取方法有更高的準(zhǔn)確性和查全率,其中F1值相比傳統(tǒng)CRF模型提高約8%,表明基于BILSTM_CRF的方法較其他方法具有較大優(yōu)勢(shì)。BILSTM_CRF結(jié)合預(yù)訓(xùn)練向量,使用BILSTM選取最優(yōu)特征工程,利用CRF句子級(jí)別的標(biāo)簽信息優(yōu)化BILSTM結(jié)構(gòu),結(jié)合兩者獲得更佳的識(shí)別效果。
(2) 通過word2vec工具生成不同維度的向量對(duì)BILSTM_CRF模型的實(shí)體抽取效率也有影響,實(shí)驗(yàn)訓(xùn)練100、200以及300維度的向量分別進(jìn)行對(duì)比,對(duì)于每一組實(shí)驗(yàn),均循環(huán)5次并求平均值,結(jié)果如圖6所示。
圖6 不同維度詞向量實(shí)驗(yàn)對(duì)比
由圖6可以發(fā)現(xiàn),實(shí)體抽取實(shí)驗(yàn)所得的準(zhǔn)確率、召回率以及F1值在詞嵌入向量維度為200最高,模型獲得最佳性能。維度過低,獲取的特征不完整,出現(xiàn)欠擬合情況;維度太高,語料中的噪聲容易被捕獲,產(chǎn)生過擬合狀況。
(3) 在BILSTM_CRF模型中,網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度和模型誤差大小受隱含層節(jié)點(diǎn)數(shù)目量的影響。實(shí)驗(yàn)訓(xùn)練包含不同隱含層節(jié)點(diǎn)數(shù)量的模型作對(duì)比,每種參數(shù)設(shè)置都執(zhí)行5次,計(jì)算求得F1值平均值。圖7說明了F1均值隨著隱含層節(jié)點(diǎn)數(shù)目的變化。
圖7 F1值均值隨隱含層節(jié)點(diǎn)數(shù)目變化
由圖7可知,F(xiàn)1值均值隨著節(jié)點(diǎn)數(shù)量的增加而提高,在節(jié)點(diǎn)數(shù)量為300時(shí)達(dá)到一個(gè)最高值,隨后又呈現(xiàn)出遞減趨勢(shì)。在隱含層節(jié)點(diǎn)數(shù)目是300時(shí),模型獲得最好實(shí)體抽取效果。分析原因是隱含層節(jié)點(diǎn)太少時(shí),模型得不到充分訓(xùn)練,性能較差;節(jié)點(diǎn)數(shù)過多,又容易造成模型過度擬合和浪費(fèi)訓(xùn)練時(shí)間等問題,影響實(shí)驗(yàn)效率。
針對(duì)目前知識(shí)圖譜實(shí)體抽取方法依賴大量人工特征和領(lǐng)域?qū)<业膯栴},提出了一種結(jié)合雙向長短時(shí)記憶網(wǎng)絡(luò)和條件隨機(jī)場(chǎng)模型的實(shí)體抽取方法。該方法融入了詞語的上下文信息,把詞的分布式表示引入到特征提取,充分利用詞語標(biāo)簽的前后聯(lián)系,識(shí)別效果得到進(jìn)一步提高。實(shí)驗(yàn)結(jié)果表明,基于BILSTM_CRF模型的實(shí)體抽取方法與傳統(tǒng)方法相比,F(xiàn)1測(cè)度值更高,有更好的實(shí)體識(shí)別效果。
本文實(shí)體抽取模型訓(xùn)練需要大量標(biāo)注語料,但在一些領(lǐng)域并沒有海量的標(biāo)注數(shù)據(jù),所以基于所提方法引入遷移學(xué)習(xí),使用少量的標(biāo)注數(shù)據(jù)進(jìn)行實(shí)體抽取將是以后研究的重點(diǎn)。