孫 浩 雒偉群 趙爾平 王 偉 崔志遠(yuǎn)
(西藏民族大學(xué)信息工程學(xué)院 咸陽 712082)
命名實體識別(Named Entity Recognition,NER)任務(wù)是自然語言處理(Nature Language Processing,NLP)領(lǐng)域的一個重要分支[1]。由于中文語言不像英文結(jié)構(gòu)簡單,中文句式中間沒有空格符分割,增加了中文實體識別的難度。NER任務(wù)早期采用的經(jīng)典算法有基于規(guī)則和詞典的方法以及條件隨機場等機器學(xué)習(xí)算法。
近年隨著深度學(xué)習(xí)發(fā)展,基于神經(jīng)網(wǎng)絡(luò)識別方法取得很好的識別效果,其中RNN循環(huán)神經(jīng)網(wǎng)絡(luò)和CNN卷積神經(jīng)網(wǎng)絡(luò)在序列標(biāo)注任務(wù)中應(yīng)用最為普遍。伴隨著研究的推進,在RNN的基礎(chǔ)上改進后提出了長短時記憶(LSTM)神經(jīng)網(wǎng)絡(luò)以及門控循環(huán)單元(GRU),傳統(tǒng)機器學(xué)習(xí)算法與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合是當(dāng)下主流的模型。Hammerton等[2]將LSTM第一次應(yīng)用在NER任務(wù)中并取得了不錯的效果;Dong等[3]把雙向的LSTM與CRF
相結(jié)合到一起并應(yīng)用在NER任務(wù)上;Ma等[4]將雙向LSTM、CNN和CRF三者相融合起來應(yīng)用在NLP序列標(biāo)注任務(wù)中。目前在通用領(lǐng)域語料開展NER研究文獻(xiàn)較多,而在專業(yè)領(lǐng)域方面研究較少,由于受限于收集的領(lǐng)域方面的語料不充足、訓(xùn)練的句子單一、特殊實體定義的文本較長等問題導(dǎo)致實體識別難度大精度不高。文獻(xiàn)[5]采用單向LSTM與CRF相結(jié)合應(yīng)用在醫(yī)療領(lǐng)域文本的實體識別上F1值達(dá)到了78%;文獻(xiàn)[6~7]采用雙向LSTM結(jié)合CRF分別針對軍事專業(yè)領(lǐng)域和商情領(lǐng)域文本進行實體識別達(dá)到良好的實驗效果;文獻(xiàn)[8]采用CNN結(jié)合BILSTM與CRF在生物領(lǐng)域上實現(xiàn)文本實體識別最佳F1值達(dá)到89.09%。
Google于2018年提出BERT預(yù)訓(xùn)練語言模型[9]將句子的語義信息與位置信息和字符信息三者相融合使得同一個詞在不同語句中所表示的向量是不一樣的,其在多種NLP任務(wù)取得了不錯的效果,比如在通用領(lǐng)域上的NER識別任務(wù)已經(jīng)超過大多數(shù)的經(jīng)典模型。文獻(xiàn)[10~11]將BERT與神經(jīng)網(wǎng)絡(luò)相結(jié)合分別在人民日報數(shù)據(jù)集上和MSRA微軟數(shù)據(jù)集等公開數(shù)據(jù)集上進行實驗,取得了不錯的識別效果。在西藏畜牧業(yè)命名實體識別方面,本文將BERT預(yù)訓(xùn)練語言模型融入BiLSTM-CRF神經(jīng)網(wǎng)絡(luò)模型中,在一定程度上解決了西藏畜牧業(yè)領(lǐng)域語料中潛在語義特征表示不充分等問題。并通過多組實驗對比分析,發(fā)現(xiàn)Large比Base版本更適用于長語句中未訓(xùn)練詞的實體識別任務(wù)。本文自建了西藏畜牧業(yè)領(lǐng)域的語料庫,通過自主網(wǎng)上搜集語句,篩選清理出有代表性的句子,并設(shè)計不同類型實體的命名規(guī)范。
模型由以下由三個部分構(gòu)成,首先將輸入的待訓(xùn)練的文本序列經(jīng)過BERT語言模型中預(yù)處理輸出包含句子語義以及位置信息特征的字向量序列,然后將處理后的字向量序列放入到雙向的LSTM網(wǎng)絡(luò)層中訓(xùn)練得到更加抽象的上下文的特征信息,最后經(jīng)過CRF預(yù)測每個字的類別標(biāo)簽概率并輸出最大概率的類別標(biāo)簽,模型整體結(jié)構(gòu)如圖1所示。
圖1以“牦、牛、吃、苜、?!弊鳛榇幚淼淖址蛄校ㄟ^BERT處理后放入BLISTM中訓(xùn)練后輸出得到h1,…,h5序列,再經(jīng)過CRF聯(lián)合解碼預(yù)測出實體類別,即牦牛對應(yīng)為動物類,苜蓿對應(yīng)為牧草類,吃不屬于任何的實體類別,被劃分為其他類(O)。
圖1 基于BERT-BiLSTM-CRF的西藏畜牧業(yè)領(lǐng)域?qū)嶓w識別模型
Word2vec[12]等傳統(tǒng)詞嵌入語言模型生成的詞向量存在著語義表示單一,不能充分考慮上下文之間的語義特征等問題。比較有代表性的預(yù)訓(xùn)練語言模型有Peters等[13]提出采用雙層雙向LSTM結(jié)構(gòu)的EMLO(Embeddings from language Models)語言模型以及Radford等[14]提出的采用單向Tansfromer編碼器的GPT(Generative Pre-Training)。而本文使用的BERT采用雙向Transformer編碼器結(jié)構(gòu),旨在構(gòu)建出能夠充分考慮上下文和句子間的關(guān)系特征的字向量。
BERT中最重要的部分是由多層雙向的Transformer編碼單元組成的,它的結(jié)構(gòu)圖如圖2所示,Transformer是目前比較流行的網(wǎng)絡(luò)結(jié)構(gòu),每個編碼單元主要部分包括自注意力機制和前饋神經(jīng)網(wǎng)絡(luò)。
圖2 Transfromer模型結(jié)構(gòu)圖
Transformer中最重要的部分是用自注意力機制代替RNN神經(jīng)網(wǎng)絡(luò),其原理就是利用attention計算輸入句子中的每一個詞和句中所有詞,獲得每個詞之間的相互關(guān)系并反映出每個詞在句中的重要性程度,計算原理如式(1)所示。
例如輸入向量為X,dk代表向量X的維度,QKT代表X的Q、K兩個分向量矩陣相乘,V表示X的字向量矩陣,Softmax函數(shù)將相除結(jié)果映射在0~1的區(qū)間上,最后再與V相乘得到注意力值Z。
2.1.1 輸入輸出表示
將句子“牦牛吃苜?!陛斎氲紹ERT進行預(yù)處理,輸入序列的開頭需填充一個CLS分類標(biāo)識符,不同句子序列之間使用SEP分隔標(biāo)識符進行分割,然后將每個字的嵌入向量與相對應(yīng)的句子嵌入向量和位置嵌入三種向量共同疊加后輸出,其中字嵌入表示輸入序列中每一個字符的對應(yīng)的向量,同一句話“牦牛吃苜?!敝忻總€字符對應(yīng)的句子向量都是一樣的,而位置嵌入為每一個輸入字符在句子中對應(yīng)的位置向量信息,其每個位置向量是不同的,輸入輸出結(jié)構(gòu)如圖3所示。
圖3 BERT的輸入輸出向量表示圖
2.1.2 預(yù)訓(xùn)練任務(wù)
BERT訓(xùn)練任務(wù)包括Masked語言模型和下一句預(yù)測,目的是分別獲取詞語級和句子級的特征表示。
Masked語言模型訓(xùn)練流程:首先將輸入的西藏畜牧業(yè)訓(xùn)練語料中隨機選擇15%部分將其掩蓋,然后使用masked token標(biāo)記隨機替換掉掩蓋后的輸入部分中80%部分,其次再將掩蓋后的10%部分使用隨機生成的詞替換掉,最后保持被遮蓋詞的剩下10%部分不變。
下一句預(yù)測任務(wù)其實就是訓(xùn)練一個二分類學(xué)習(xí)模型,用這個模型來判斷給定的兩個句子之間的關(guān)系是否為上下文相鄰位置的關(guān)系。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[15]由于具有時序性的特點所以經(jīng)常被用作處理序列標(biāo)注問題,但隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,容易出現(xiàn)梯度消失問題。長短LSTM神經(jīng)網(wǎng)絡(luò)相較于RNN有了很大的改進,LSTM引入了復(fù)雜的門限和機制和記憶單元有效地解決了梯度消失問題,能夠提高收斂速度,更好地捕捉到了長距離的時序特征信息。LSTM中最重要的結(jié)構(gòu)包括輸入門(it)、遺忘門(ft)和輸出門(ot),這三種門具體計算更新方式如式(2~7)所示。
上述公式中各個參數(shù)代表的含義為:W和b分別表示兩個相鄰網(wǎng)絡(luò)層對應(yīng)的權(quán)重矩陣和偏置矩陣,t時刻的輸入向量和輸出向量分別用xt、ht符號代表,三個門使用的激活函數(shù)為sigmoid用σ符號表示,t時刻輸入與上一時刻隱含層輸出一起計算得到的當(dāng)前記憶單元臨時狀態(tài)用~Ct表示,其使用激活函數(shù)是雙曲正切函數(shù)用tanh表示,最后會將當(dāng)前時刻的隱含層輸出ht和計算更新后的記憶單元狀態(tài)ct傳入到下一個時刻。
傳統(tǒng)的單向的LSTM無法學(xué)習(xí)左右兩邊的上下文信息,所以本文模型采用兩層雙向長短時記憶神經(jīng)網(wǎng)絡(luò)(BILSTM)將輸入的字符向量序列分別順向和逆向輸入到LSTM中訓(xùn)練,以獲得能夠表征上文相關(guān)的語義信息。
CRF(Conventional random filed)全稱叫做條件隨機場,它經(jīng)常被用于序列標(biāo)注任務(wù),是自然語言處理中輸出層常用的算法。本文使用條件隨機場是線性鏈條件隨機場,通過傳入輸入序列來預(yù)測輸出序列。評估的分?jǐn)?shù)計算如式(8)所示,其中x=(x1,x2,…,xn)是輸入序列;y=(y1,y2,…,yn)為標(biāo)簽序列。
公式中各個符號的含義如下:n表示輸入序列的長度,Wyi-1,yi對應(yīng)轉(zhuǎn)移矩陣中標(biāo)簽yi-1到標(biāo)簽yi的轉(zhuǎn)移分?jǐn)?shù),Pi,yi為第i個字符在第yi個標(biāo)簽下的得分。Pi定義如式(9)所示:
其中,h(t)表示上一層的輸入數(shù)據(jù)在t時刻的輸出;Ws和bs分別為權(quán)重矩陣和偏置矩陣。
對標(biāo)簽序列使用Softmax函數(shù)歸一化處理,得到輸出序列y的最大概率如式(10)所示:
其中Yx為所有可能標(biāo)簽的集合。計算正確標(biāo)簽序列的似然概率如式(11)所示:
在預(yù)測階段采用Viterbi算法計算出總得分最高的序列y*作為最優(yōu)序列輸出,如式(12)所示:
本文實驗環(huán)境為操作系統(tǒng)采用Win10專業(yè)版、GPU為NVIDIA GeForce RTX 2070、內(nèi)存32G、編程語言為Python 3.7、Tensorflow 1.13.1。
本文自建西藏畜牧業(yè)領(lǐng)域相關(guān)文本作為實驗數(shù)據(jù)集,主要是通過Python爬蟲對網(wǎng)站上內(nèi)容進行爬取下來后,再通過人工清洗篩選,最終精選后得到4300條語料共計95039個字?jǐn)?shù),將語料按照8∶1∶1劃分為訓(xùn)練集、測試集和驗證集。
本文定義了牧草、動物、病蟲害、藏藥、動物疾病、藏藥、人的疾病共計7種類型的實體,其類型定義的具體解釋如表1所示,各種類型的實體數(shù)量統(tǒng)計如表2所示。
表1 西藏畜牧業(yè)領(lǐng)域?qū)嶓w識別類型
表2 西藏畜牧業(yè)領(lǐng)域標(biāo)注實體統(tǒng)計
對于西藏畜牧業(yè)領(lǐng)域文本采用BIO標(biāo)注規(guī)則,將實體中第一個字符標(biāo)記為“B-(實體類別)”,后續(xù)字符標(biāo)記為“I-(實體類別)”,和本領(lǐng)域無關(guān)的其他字符則統(tǒng)一標(biāo)記為O。
本文所標(biāo)記的標(biāo)簽共有15種,分別為B-PA、I-PA、B-AN、I-AN、B-G、I-G、B-DP、I-DP、B-AD、I-AD、B-TM、I-TM、B-PD、I-PD、O。
BERT預(yù)訓(xùn)練語言模型有兩個版本,包括Base和Large版本,區(qū)別在于層數(shù)(L)、隱含層單元數(shù)(H)、注意力頭數(shù)(A)以及參數(shù)大小的不同,如表3所示。
表3 Bert預(yù)訓(xùn)練模型對比
本模型采用批次batch的大小為128,迭代完整訓(xùn)練epoch次數(shù)為100,優(yōu)化器采用adam,詞向量維度設(shè)置為128,隱含層單元數(shù)為200,bath_size大小設(shè)置為128,Dropout設(shè)為0.4,初始化學(xué)習(xí)率為0.001。
對于西藏畜牧業(yè)中每一個實體類別都采用下面三個指標(biāo)進行評價,分別為精確率(Prescision)P和召回率(Recall)R以及調(diào)和平均數(shù)(F-Score)F1值,具體計算過程如式(13~15)所示:
例如:P代表預(yù)測為動物,N代表預(yù)測為牧草,T表示這個預(yù)測是正確的,F(xiàn)表示這個預(yù)測是錯誤的。當(dāng)來一個實體放入模型預(yù)測時,TP代表預(yù)測為動物,并且這個預(yù)測是正確的,即實際就是動物的個數(shù),F(xiàn)P代表預(yù)測為是動物,而這個預(yù)測是錯誤的,即實際為牧草的個數(shù),F(xiàn)N代表預(yù)測為牧草,而這個預(yù)測是錯誤的,即實際上是動物的個數(shù)。
本文所采用的BERT-BILSTM-CRF模型在整體模型框架不改動的前提下,嘗試在字符預(yù)處理部分更換兩種BERT預(yù)訓(xùn)練模型版本進行測試,使用自建西藏畜牧業(yè)標(biāo)注好的語料庫在模型上完整訓(xùn)練100次的F1值變化如圖4所示。
圖4 不同BERT版本隨著epoch增加的變化曲線
通過圖4的變化曲線可以看出,在15次完整訓(xùn)練之后兩個版本的F1值均大于90%,最后的F1值都趨近于92%,如果僅看最優(yōu)實驗測試數(shù)據(jù)的話,BERT的Base版本在92次達(dá)到最高點92.37%,Large版本最終F1值為92.78%比Base版本高0.41%。這是因為BERT的模型架構(gòu)是一個多層雙向Transformer編碼器,它通過所有層的左、右語境不僅能從前文中尋找線索,也能從后文中尋找線索,這樣就充分表示了句子中詞之間潛在語義關(guān)系,通過上下文猜測單詞時,就能夠比較準(zhǔn)確地預(yù)測所有詞匯的概率。
本實驗也列出了BERT的Base版與Large版的最后一次epoch訓(xùn)練時,在不同Bert版本下通過模型算法跑出的各個實體類別的F1值,詳細(xì)數(shù)據(jù)如表4所示,其中同一類別實體在兩個版本中相比得到的F1值更高會被加粗顯示。在自定義的動物、動物疾病以及病蟲害三個類別上未訓(xùn)練詞的識別方面,Large版的F1值比Base版分別高1.46%、13.57%、3.73%,平均高6.25%。這是因為BERT中的自注意力機制計算句子中的每一個詞和句中所有詞,獲得詞之間的相互關(guān)系并反映出詞在句中的重要性程度。large比base版本擁有較多的層數(shù)和注意力機制頭數(shù),層數(shù)越多獲取詞在句子中的相互關(guān)系越多,頭數(shù)越多越能更準(zhǔn)確抓住詞在句子中的重要程度,從而提高了實體識別準(zhǔn)確率。但在牧草、草原、藏藥等三個類別上未訓(xùn)練詞的識別方面,Large版的F1值比Base版要低一些,原因是由于這三個類別的實體描述一般都處在一句話的開頭,其三類在訓(xùn)練語料中的句式比較固定簡單,句子長度較短,如藏藥能治療什么疾病,草原上有什么動物,牧草有什么病蟲害等簡單句式,Base的層數(shù)少以及注意力頭數(shù)少對于抓取簡單句式以及開頭部分的實體重要性程度越高,Large訓(xùn)練過于冗余以至于簡單句式學(xué)習(xí)過度從而使得在一些情況下識別短語句中實體效果略低于Base版本。
表4 不同BERT版本的實驗結(jié)果對比
本文將BERT的Base與large版的預(yù)訓(xùn)練模型與BILSTM-CRF模型結(jié)合進行對比實驗,并將模型訓(xùn)練的最終總體指標(biāo)數(shù)據(jù)羅列出來。
從表5可以看出,使用了BERT比未使用BERT的模型在F1值上提升了2.33%,而在精確率上提升了6.68%,這是由于使用BERT作為文本的預(yù)處理相較于普通的Word2vec詞向量更具有潛在的上下文語義特征,從而提升模型識別的準(zhǔn)確率。
表5 不同模型實體識別結(jié)果對比
雖然使用BERT預(yù)處理后F1值已經(jīng)達(dá)到很高,但是實際測試中,還是有一些識別錯誤的例子,主要是因為語料庫的不充足,語句的句式不夠多樣性,會導(dǎo)致一句話換了個復(fù)雜的說法就有點可能識別出錯等問題,如表6列舉了一些具體的輸出例子。
表6 兩個BERT版本的輸出示例
從表6中Input 1和Input 2可以看出來,Large經(jīng)過輸入在兩個預(yù)訓(xùn)練模型上對比顯示出,BERT-Base值識別出苜蓿的首字母,沒有完整預(yù)測出來存在識別邊界問題,Input 2中Base版本出現(xiàn)小幾率的漏識錯誤,當(dāng)語序大幅度改變時全局預(yù)測可能會有些偏差,而Large版本可以很好的對長語句進行識別。
Input 3是針對未訓(xùn)練詞的識別,呼倫貝爾大草原是在內(nèi)蒙的,不屬于西藏領(lǐng)域,語料庫中也未標(biāo)注出來,但是末尾的草原兩個詞非常具有明顯的特征,即使沒有預(yù)先訓(xùn)練過也能很好的識別出來,Base版識別出草原的名稱的一部分,而Large可以識別出全稱,這也說明Large版本模型的層數(shù)增加,注意力頭數(shù)增大對識別未訓(xùn)練詞是有一些優(yōu)勢的。對于Input 4來說,冬蟲夏草具有止咳嗽、益虛損等功效,其中咳嗽是訓(xùn)練過的詞,Base和Large都可以識別出這是一個疾病類(PD),而虛損是屬于未訓(xùn)練的詞在語料庫中沒有這個實體類別,Base版本識別不出來但Large版本可以很好地識別出這個未訓(xùn)練詞,說明了Large對于未訓(xùn)練詞的識別相對于Base版本更有優(yōu)勢。
本文針對解決特定領(lǐng)域NER識別難度高等問題,提出基于BERT-BiLSTM-CRF的西藏畜牧業(yè)領(lǐng)域?qū)嶓w識別模型,該模型在自建的西藏畜牧業(yè)小規(guī)模語料庫上進行實驗,結(jié)果發(fā)現(xiàn):BERT-Base和BERT-Large對7類自定義的實體識別整體來說F1值均高于92%;對于長語句中未訓(xùn)練詞的識別,BERT-Large版本比BERT-Base版具有潛在的優(yōu)勢,尤其是在動物、動物疾病、病蟲害等命名實體識別方面Large具有更明顯的優(yōu)勢。本文所提模型對于構(gòu)建領(lǐng)域知識圖譜具有一定的參考價值。