喻 航,李紅蓮,呂學(xué)強(qiáng)
(1.北京信息科技大學(xué) 信息與通信工程學(xué)院,北京 100101;2.北京信息科技大學(xué) 網(wǎng)絡(luò)文化與數(shù)字傳播北京市重點(diǎn)實(shí)驗(yàn)室,北京 100101)
隨著信息技術(shù)快速發(fā)展,政府機(jī)關(guān)對信息化建設(shè)日益重視,各級人民代表大會(以下簡稱“人大”)開始逐步打造“智慧人大”[1]網(wǎng)絡(luò)應(yīng)用平臺,通過充分運(yùn)用網(wǎng)絡(luò)信息技術(shù),強(qiáng)化履職能力,推動人大工作的發(fā)展與創(chuàng)新。構(gòu)建人大報(bào)告輔助生成系統(tǒng),能夠?yàn)槿舜蠊ぷ魅藛T撰寫報(bào)告提供參考,提高工作效率。
區(qū)級人大報(bào)告的框架相對固定,往往分為當(dāng)年工作總結(jié)和來年工作計(jì)劃2大部分,每部分又分為監(jiān)督工作、代表工作、自身建設(shè)和總結(jié)4個(gè)小部分。保留固定的內(nèi)容,對報(bào)告中變化的實(shí)體進(jìn)行標(biāo)注,即可獲得報(bào)告的模板框架。工作人員將變化內(nèi)容輸入模版內(nèi)標(biāo)注好的相應(yīng)位置,即可生成參考報(bào)告。
通過對大量報(bào)告的分析可知,報(bào)告中出現(xiàn)最多的變化實(shí)體是地名,其他實(shí)體較少且具有很強(qiáng)的規(guī)律性。所以,對報(bào)告中出現(xiàn)較多且規(guī)律性不強(qiáng)的地名進(jìn)行自動標(biāo)注,就可以減少人工標(biāo)注的工作量。
命名實(shí)體識別(named entity recognition,NER)是信息抽取和信息檢索中一項(xiàng)至關(guān)重要的任務(wù),其目的是將文本的命名實(shí)體識別出來,再進(jìn)行分類,因此有時(shí)也稱為命名實(shí)體識別與分類(named entity recognition and classification,NERC)[2]。
命名實(shí)體識別主要的方式有3種[3]:基于規(guī)則的方法、基于統(tǒng)計(jì)的方法以及基于深度學(xué)習(xí)的方法。譚紅葉等[4]使用基于規(guī)則的動態(tài)規(guī)劃方法對中國地名進(jìn)行識別,提高了搜索最佳路徑的效率,經(jīng)過對真實(shí)語料的測試,地名的正確率和召回率分別達(dá)到92.3%和76.6%。但在大多數(shù)情況下,規(guī)則過于依賴于具體語言的領(lǐng)域和文本風(fēng)格,其編制過程耗時(shí)長且不能包含全部的語言現(xiàn)象,存在可移植性差、更新維護(hù)困難等問題。而基于統(tǒng)計(jì)的命名實(shí)體識別,可將其視為序列標(biāo)注問題,方法有隱馬爾可夫模型[5]、最大熵模型[6]、條件隨機(jī)場[7]等?;诮y(tǒng)計(jì)的方法處理命名實(shí)體識別要對特征模板進(jìn)行設(shè)計(jì)?;谏疃葘W(xué)習(xí)的方法則不需要人工來設(shè)計(jì)特征模板,而是可以自己學(xué)習(xí)特征,從而減少了人對數(shù)據(jù)的干擾導(dǎo)致的誤差。柏兵等[8]針對傳統(tǒng)命名實(shí)體識別需要大量人工及規(guī)則信息的問題,提出一種基于條件隨機(jī)場和雙向長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)的命名實(shí)體識別方法。谷歌研究員Jacob Devlin等[9]推出了一套新的語言表達(dá)模型BERT(bidirectional encoder representations from transformers),BERT不僅關(guān)注一個(gè)詞的前后文信息,同時(shí)模型的所有層都會關(guān)注整體上下文的語境信息。
本文提出一種基于BERT預(yù)訓(xùn)練語言模型、CRF(conditional random field,條件隨機(jī)場)和改進(jìn)雙向LSTM(long-short term memory,長短時(shí)記憶網(wǎng)絡(luò))相混合的方法,能夠有效提升區(qū)級人大報(bào)告中地名自動標(biāo)注的準(zhǔn)確率,實(shí)驗(yàn)效果令人滿意。
常用的Word2Vec模型[10]在歧義詞上識別效果較差。如“余杭”、“吳興”等區(qū)縣名,可能會與人名產(chǎn)生歧義。又如“朝陽”,它既是一個(gè)區(qū)名,也可能被理解為“初升的太陽”,這些詞在Word2Vec模型里均被表示為同一個(gè)向量。而BERT使用預(yù)訓(xùn)練語言表示的新方法,將Transformers[11]雙向訓(xùn)練作為一種注意力機(jī)制應(yīng)用到語言模型當(dāng)中:將輸入中15%的單字隨機(jī)用[MASK]代替,通過一個(gè)深度雙向Transformer編碼器運(yùn)行整個(gè)序列,然后僅預(yù)測被屏蔽的單字。例如,在 “做好市人大朝陽團(tuán)代表工作”一句中,BERT同時(shí)使用左側(cè)和右側(cè)上下文來表示“朝陽”:“做好市人大[MASK][MASK]團(tuán)代表工作”,因?yàn)榫幋a是從神經(jīng)網(wǎng)絡(luò)的最底層開始,所以它是深度雙向的。
BERT可以學(xué)習(xí)句子之間的關(guān)系:B句是A句后面的一句話,或是語料庫里的一個(gè)隨機(jī)句。這一任務(wù)是借助A/B句最前面的特殊符[CLS]實(shí)現(xiàn),該特殊符可以視為匯集整個(gè)輸入序列的表征。如圖1所示,有A句[強(qiáng)化監(jiān)督]和B句[提高公信力],首先需要將這兩句話進(jìn)行分割,特殊符[SEP]是用于分割兩個(gè)句子的符號,前半句會加上分割碼A,后半句會加上分割碼B,以及預(yù)測句子關(guān)系。
綜上,BERT模型可以增加模型泛化能力,充分描述字符級、詞級、句子級甚至句子之間的關(guān)系特征。
利用CRF計(jì)算每個(gè)字的轉(zhuǎn)移概率。設(shè)X=(X1,X2,…,Xn)和Y=(Y1,Y2,…,Ym)是聯(lián)合隨機(jī)變量,若隨機(jī)變量Y構(gòu)成一個(gè)無向圖G=(V,E)表示的馬爾可夫模型,則其條件概率分布P(Y|X)稱為CRF(條件隨機(jī)場),即
P(Yv|X,Yw,w≠v)=P(Yv|X,Yw,w~v)
(1)
式中:w~v表示圖G=(V,E)中與節(jié)點(diǎn)v有邊連接的所有節(jié)點(diǎn),w≠v表示節(jié)點(diǎn)v以外的所有節(jié)點(diǎn)。
在CRF中有兩種特征函數(shù),分別為轉(zhuǎn)移函數(shù)T(yi-1,yi,i)和狀態(tài)函數(shù)S(yi,X,i)。T(yi-1,yi,i)依賴于當(dāng)前和前一個(gè)位置,表示從標(biāo)注序列中位置i-1的標(biāo)記yi-1轉(zhuǎn)移到位置i上的標(biāo)記yi的概率。S(yi,X,i)依賴當(dāng)前位置,表示標(biāo)記序列在位置i上為標(biāo)記yi的概率。CRF的參數(shù)化形式為
(2)
式中:
Z(x)=∑yexp(∑j∑iwjfj(yi-1,yi,x,i))
(3)
1.3.1 LSTM單元
在LSTM單元內(nèi),首先一個(gè)向量會從左到右進(jìn)行傳輸,從單元的左側(cè)進(jìn)入稱作Ct-1,從右側(cè)輸出稱作CT。左側(cè)的Ct-1進(jìn)入單元后,先被一個(gè)乘法器乘以一個(gè)系數(shù)后,再線性疊加一個(gè)數(shù)值后從右側(cè)輸出。其中,系數(shù)的來源為:左側(cè)的ht-1和下面輸入的xT經(jīng)過連接操作,再通過一個(gè)線性單元,和一個(gè)σ(Sigmoid函數(shù))之后,生成一個(gè)0~1之間的數(shù)字作為系數(shù)。忘記門為
ft=σ(Wf·[ht-1,xt]+bf)
(4)
所謂“忘記”就是指這一相乘的過程。如果Sigmoid函數(shù)輸出為1,意味著全部記住,如果輸出為0則為全部忘記,中間的值表示一個(gè)記憶或忘記的比例。Wf和bf作為待定系數(shù)是需要進(jìn)行訓(xùn)練學(xué)習(xí)的。輸入門為
it=σ(Wi·[ht-1,xt]+bi)
(5)
1.3.2 改進(jìn)函數(shù)
在LSTM中,tanh是一種不可或缺的激勵(lì)函數(shù),但是此函數(shù)在兩端的梯度幾乎為零,優(yōu)化算法更新網(wǎng)絡(luò)參數(shù)的速度就會變得特別緩慢。
tanh的導(dǎo)數(shù)小于1。當(dāng)神經(jīng)網(wǎng)絡(luò)的隱含層增多的情況下,在求解loss函數(shù)關(guān)于參數(shù)的導(dǎo)數(shù)時(shí),上一層函數(shù)關(guān)于下一層導(dǎo)數(shù)的求導(dǎo)小于1,多個(gè)求導(dǎo)的連乘會發(fā)生梯度消失。tanh函數(shù)為
(6)
softsign函數(shù)也是中心對稱,并返回-1和1之間的值。其更平坦的曲線與更慢的下降導(dǎo)數(shù)表明它可以更快速地訓(xùn)練模型,與tanh相比可以更好地規(guī)避梯度消失的問題。兩者曲線對比如圖2所示。因而本文改為使用softsign函數(shù)來訓(xùn)練模型。
改進(jìn)LSTM的候選記憶單元為
(7)
(8)
最后的輸出有兩個(gè)部分:一個(gè)輸出到同層下一個(gè)單元,一個(gè)輸出到下一層的單元上。輸出門為
Ot=σ(Wo·[ht-1,xt]+bo)
(9)
式中
ht=Ot?softsign(Ct)
(10)
CT向量與OT輸出門共同決定隱層狀態(tài)hT。
單向LSTM存在局限性,如“上?!边@個(gè)地名,當(dāng)讀入“?!弊謺r(shí),單向LSTM無法得到其上下文信息,有可能把“上”和“海”拆分成2個(gè)詞。
1.3.3 改進(jìn)BI-LSTM網(wǎng)絡(luò)
為了規(guī)避單向LSTM的局限性,本文使用改進(jìn)雙向LSTM模型。BI-LSTM(BI-directional long short-term memory)同時(shí)考慮了過去的特征(通過正向過程提取)和未來的特征(通過反向過程提取)。通過上述改進(jìn)LSTM函數(shù)的方法,得到由正反兩個(gè)方向LSTM組成的改進(jìn)BI-LSTM:
(11)
(12)
本文采用BERT+改進(jìn)BI-LSTM+CRF的模型對人大報(bào)告中的地名進(jìn)行識別并自動標(biāo)注??蚣芙Y(jié)構(gòu)如圖3所示。首先把每個(gè)字的初始化向量輸入BERT預(yù)訓(xùn)練語言模型訓(xùn)練,得到每個(gè)字包含位置信息的特征向量表示;接下來輸入改進(jìn)BI-LSTM網(wǎng)絡(luò)模型(包括隱藏層、輸出層)進(jìn)行訓(xùn)練,獲得每個(gè)字的類別概率;之后通過CRF標(biāo)注層得到轉(zhuǎn)移概率,通過每個(gè)字的轉(zhuǎn)移概率與改進(jìn)BI-LSTM輸出概率累加得到每個(gè)字對應(yīng)的最優(yōu)標(biāo)簽。將識別出來的地名輸入到列表中。最后借鑒了敏感詞過濾算法的思想,把每篇識別到的地名替換為標(biāo)記。
BERT的訓(xùn)練數(shù)據(jù)有一定的格式要求,一般每行一個(gè)token,一句話由多行token構(gòu)成,多個(gè)句子之間用空行分開。其中每行又分成2列,每行的第一列是字,后一列是標(biāo)注符號,使用空格分隔。對訓(xùn)練數(shù)據(jù)采用 “B-LOC”、“I-LOC”和“O”標(biāo)注。標(biāo)注符號及含義如表1所示。
表1 標(biāo)注符號及含義
由于神經(jīng)網(wǎng)絡(luò)只能進(jìn)行數(shù)值計(jì)算,需要將每個(gè)字及特殊符號都轉(zhuǎn)化為詞嵌入向量。每個(gè)字有3個(gè)向量:一是位置信息的向量,在自然語言處理中字順序是非常重要的特征,需要對位置信息進(jìn)行編碼;二是字向量本身;三是句子向量,即字在句子中的向量。把字對應(yīng)的以上這3個(gè)向量疊加,可以得出每個(gè)詞的字向量表示。
P=σ(Vh+c)
(13)
式中:
h=(h1,h2,…,hn)
(14)
V為加權(quán)參數(shù),代表了隱藏層到輸出層之間的參數(shù);c為偏置參數(shù);σ(·)為激活函數(shù)。把P輸入CRF標(biāo)注層,根據(jù)輸出序列,計(jì)算每個(gè)字符的標(biāo)簽分?jǐn)?shù):
(15)
將分?jǐn)?shù)歸一化得到概率:
(16)
因?yàn)檎`差是預(yù)測標(biāo)簽與正確標(biāo)簽的對比,所以,模型的訓(xùn)練目標(biāo)就是最大化似然概率,對概率作對數(shù)似然,使用-logP(y|x)作為損失函數(shù):
s(x,y)
(17)
本次實(shí)驗(yàn)采用NVIDIA GeForce MX 150顯卡來訓(xùn)練。編程語言為Python3.7,開發(fā)平臺采用 tensorflow1.13版本。
實(shí)驗(yàn)以準(zhǔn)確率、召回率、F值作為評價(jià)指標(biāo)[12]。用C記錄正確的地名位置標(biāo)記數(shù),D記錄識別出來的地名位置標(biāo)記數(shù),L記錄全部的地名位置標(biāo)記數(shù)。則準(zhǔn)確率、召回率、F值分別為:
(18)
(19)
(20)
本次實(shí)驗(yàn)采用的訓(xùn)練語料數(shù)據(jù)為1998年人民日報(bào)分詞數(shù)據(jù)集,包含2 976 480字,部分?jǐn)?shù)據(jù)集格式如圖4所示。
把其中標(biāo)注為“ns”的部分作為地名識別對象。如“[香港/ns 特別/a 行政區(qū)/n]ns”,就可提取出“香港特別行政區(qū)”(中括號以內(nèi)的“ns”不單獨(dú)作為一個(gè)地名)。
實(shí)驗(yàn)的測試集是近10年各個(gè)區(qū)縣的區(qū)級人大報(bào)告,共收集230篇報(bào)告,包含1 372 243字,通過jieba分詞并自動標(biāo)注詞性。
為保證實(shí)驗(yàn)標(biāo)注的準(zhǔn)確性,首先對訓(xùn)練集中的語料進(jìn)行處理。通過人工校正對地理位置的標(biāo)記。比如:“三B-LOC中I-LOC四B-LOC中I-LOC全O會O”句中,“三中”不是一個(gè)地名,所以在人工處理時(shí),把“三中”這類的改為“三O中O”。用人工校正的語料訓(xùn)練,模型就學(xué)習(xí)到了特征。
要使深度學(xué)習(xí)模型取得較為理想的效果,需要選出一組合適的參數(shù)。對神經(jīng)網(wǎng)絡(luò)模型有較大影響的參數(shù)有:學(xué)習(xí)率、隱藏層單元數(shù)、丟棄率、批量訓(xùn)練數(shù)據(jù)大小等。經(jīng)過幾次實(shí)驗(yàn)結(jié)果對比,使用如表2所示參數(shù)時(shí)模型表現(xiàn)最好。
表2 參數(shù)選擇
為了與本文方法進(jìn)行對比,另外還使用CRF、BI-LSTM+CRF和BERT+BILSTM+CRF這3種方法分別實(shí)驗(yàn)。在4個(gè)實(shí)驗(yàn)中,使用的數(shù)據(jù)集相同。
為解決在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型過程中可能出現(xiàn)的過擬合問題,本文在訓(xùn)練時(shí)加入Dropout[13],隨機(jī)對一部分激活單元進(jìn)行抑制,每一次訓(xùn)練的單元均不同,而在測試時(shí)保留所有神經(jīng)元,從而避免過擬合現(xiàn)象的發(fā)生。
本文用了4種方法進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3所示。
表3 不同模型結(jié)果對比 %
4個(gè)實(shí)驗(yàn)中,第一個(gè)是僅使用CRF方法識別,第二個(gè)是基于雙向LSTM加CRF方法的實(shí)驗(yàn),其中訓(xùn)練詞向量[14]使用的是谷歌開源工具Word2Vec方法展開預(yù)訓(xùn)練,設(shè)詞向量的維度為300。在后面兩個(gè)實(shí)驗(yàn)中,都基于BERT來預(yù)訓(xùn)練字向量。
從表3可知,本文方法與CRF相比,F(xiàn)值提高了6.26個(gè)百分點(diǎn)。CRF中有大量標(biāo)注過的語料,識別準(zhǔn)確率取決于標(biāo)注語料的準(zhǔn)確度和數(shù)量,當(dāng)訓(xùn)練集的語料較少時(shí),CRF在訓(xùn)練時(shí)就無法學(xué)習(xí)到語料的全部特點(diǎn),抽取時(shí)對于部分地名就無法識別或識別不準(zhǔn)確。而使用改進(jìn)BI-LSTM提取特征,比CRF提取特征的準(zhǔn)確度高。
本文方法與BI-LSTM+CRF的方法相比,在F值上提高了4.25個(gè)百分點(diǎn)。對于本文中的方法,在使用改進(jìn)BI-LSTM+CRF的模型識別之前,使用基于BERT的方法來預(yù)訓(xùn)練字向量,來替換原來網(wǎng)絡(luò)的Word2Vec部分,從而避免了Word2Vec在歧義詞上效果較差的問題。
在本文方法中BI-LSTM的激勵(lì)函數(shù)由傳統(tǒng)的tanh改為softsign,與BERT+BI-LSTM+CRF相比學(xué)習(xí)效率更高。記錄了不同時(shí)間兩種模型的F值,對比如圖5所示。
由圖可見,BERT+改進(jìn)BI-LSTM+CRF在訓(xùn)練的初期F值就有了一定提升,并可以在更少的時(shí)間取得更高的F值。BERT+BI-LSTM+CRF在訓(xùn)練680 min時(shí)達(dá)到最大F值,而改進(jìn)后在507 min即可達(dá)到最大F值。
在完成地名識別的基礎(chǔ)上,借鑒敏感詞過濾算法的思想,把地名都替換成標(biāo)記,即可完成人大報(bào)告中地名的自動標(biāo)注。
本文針對區(qū)級人大報(bào)告中地名自動標(biāo)注的任務(wù),提出了使用基于BERT預(yù)訓(xùn)練語言模型加改進(jìn)BI-LSTM和CRF的方法對地名進(jìn)行識別。該方法避免了條件隨機(jī)場因語料受限識別不準(zhǔn)確的問題,賦予了模型一定的糾錯(cuò)能力,可以更好更全面地捕獲上下文信息。改進(jìn)BI-LSTM通過減少梯度消失問題,加快了模型的訓(xùn)練速度,提升了模型的性能。后續(xù)的研究工作可在進(jìn)一步細(xì)化識別效果等方面展開,例如可以按照地域來分級識別、分別標(biāo)注:分為省級、市級、區(qū)級、街道級等。