近幾年來(lái),基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別等領(lǐng)域取得了巨大成功,另外在自然語(yǔ)言處理領(lǐng)域也取得了不少進(jìn)展。在NLP的關(guān)鍵性基礎(chǔ)任務(wù)—命名實(shí)體識(shí)別(Named Entity Recognition,NER)的研究中,深度學(xué)習(xí)也獲得了不錯(cuò)的效果。最近,筆者閱讀了一系列基于深度學(xué)習(xí)的NER研究的相關(guān)論文,并將其應(yīng)用到達(dá)觀數(shù)據(jù)的NER基礎(chǔ)模塊中,在此進(jìn)行一下總結(jié),與大家一起分享學(xué)習(xí)。
NER又稱作專名識(shí)別,是自然語(yǔ)言處理中的一項(xiàng)基礎(chǔ)任務(wù),應(yīng)用范圍非常廣泛。命名實(shí)體一般指的是文本中具有特定意義或者指代性強(qiáng)的實(shí)體,通常包括人名、地名、組織機(jī)構(gòu)名、日期時(shí)間、專有名詞等。NER系統(tǒng)就是從非結(jié)構(gòu)化的輸入文本中抽取出上述實(shí)體,并且可以按照業(yè)務(wù)需求識(shí)別出更多類別的實(shí)體,比如產(chǎn)品名稱、型號(hào)、價(jià)格等。因此實(shí)體這個(gè)概念可以很廣,只要是業(yè)務(wù)需要的特殊文本片段都可以稱為實(shí)體。
實(shí)際應(yīng)用中,NER模型通常只要識(shí)別出人名、地名、組織機(jī)構(gòu)名、日期時(shí)間即可,一些系統(tǒng)還會(huì)給出專有名詞結(jié)果(比如縮寫(xiě)、會(huì)議名、產(chǎn)品名等)。貨幣、百分比等數(shù)字類實(shí)體可通過(guò)正則搞定。另外,在一些應(yīng)用場(chǎng)景下會(huì)給出特定領(lǐng)域內(nèi)的實(shí)體,如書(shū)名、歌曲名、期刊名等。
NER是NLP中一項(xiàng)基礎(chǔ)性關(guān)鍵任務(wù)。從自然語(yǔ)言處理的流程來(lái)看,NER可以看作詞法分析中未登錄詞識(shí)別的一種,是未登錄詞中數(shù)量最多、識(shí)別難度最大、對(duì)分詞效果影響最大問(wèn)題。同時(shí)NER也是關(guān)系抽取、事件抽取、知識(shí)圖譜、機(jī)器翻譯、問(wèn)答系統(tǒng)等諸多NLP任務(wù)的基礎(chǔ)。
NER當(dāng)前并不算是一個(gè)大熱的研究課題,因?yàn)閷W(xué)術(shù)界部分學(xué)者認(rèn)為這是一個(gè)已經(jīng)解決的問(wèn)題。當(dāng)然也有學(xué)者認(rèn)為這個(gè)問(wèn)題還沒(méi)有得到很好地解決,原因主要有:命名實(shí)體識(shí)別只是在有限的文本類型(主要是新聞?wù)Z料中)和實(shí)體類別(主要是人名、地名、組織機(jī)構(gòu)名)中取得了不錯(cuò)的效果;與其他信息檢索領(lǐng)域相比,實(shí)體命名評(píng)測(cè)預(yù)料較小,容易產(chǎn)生過(guò)擬合;命名實(shí)體識(shí)別更側(cè)重高召回率,但在信息檢索領(lǐng)域,高準(zhǔn)確率更重要;通用的識(shí)別多種類型的命名實(shí)體的系統(tǒng)性能很差。
NER一直是NLP領(lǐng)域中的研究熱點(diǎn),從早期基于詞典和規(guī)則的方法,到傳統(tǒng)機(jī)器學(xué)習(xí)的方法,到近年來(lái)基于深度學(xué)習(xí)的方法,NER研究進(jìn)展的大概趨勢(shì)大致如下圖所示。
圖1:NER發(fā)展趨勢(shì)
在基于機(jī)器學(xué)習(xí)的方法中,NER被當(dāng)作序列標(biāo)注問(wèn)題。利用大規(guī)模語(yǔ)料來(lái)學(xué)習(xí)出標(biāo)注模型,從而對(duì)句子的各個(gè)位置進(jìn)行標(biāo)注。NER 任務(wù)中的常用模型包括生成式模型HMM、判別式模型CRF等。條件隨機(jī)場(chǎng)(ConditionalRandom Field,CRF)是NER目前的主流模型。它的目標(biāo)函數(shù)不僅考慮輸入的狀態(tài)特征函數(shù),而且還包含了標(biāo)簽轉(zhuǎn)移特征函數(shù)。在訓(xùn)練時(shí)可以使用SGD學(xué)習(xí)模型參數(shù)。在已知模型時(shí),給輸入序列求預(yù)測(cè)輸出序列即求使目標(biāo)函數(shù)最大化的最優(yōu)序列,是一個(gè)動(dòng)態(tài)規(guī)劃問(wèn)題,可以使用Viterbi算法解碼來(lái)得到最優(yōu)標(biāo)簽序列。CRF的優(yōu)點(diǎn)在于其為一個(gè)位置進(jìn)行標(biāo)注的過(guò)程中可以利用豐富的內(nèi)部及上下文特征信息。
圖2:一種線性鏈條件隨機(jī)場(chǎng)
近年來(lái),隨著硬件計(jì)算能力的發(fā)展以及詞的分布式表示(word embedding)的提出,神經(jīng)網(wǎng)絡(luò)可以有效處理許多NLP任務(wù)。這類方法對(duì)于序列標(biāo)注任務(wù)(如CWS、POS、NER)的處理方式是類似的:將token從離散one-hot表示映射到低維空間中成為稠密的embedding,隨后將句子的embedding序列輸入到RNN中,用神經(jīng)網(wǎng)絡(luò)自動(dòng)提取特征,Softmax來(lái)預(yù)測(cè)每個(gè)token的標(biāo)簽。
這種方法使得模型的訓(xùn)練成為一個(gè)端到端的過(guò)程,而非傳統(tǒng)的pipeline,不依賴于特征工程,是一種數(shù)據(jù)驅(qū)動(dòng)的方法,但網(wǎng)絡(luò)種類繁多、對(duì)參數(shù)設(shè)置依賴大,模型可解釋性差。此外,這種方法的一個(gè)缺點(diǎn)是對(duì)每個(gè)token打標(biāo)簽的過(guò)程是獨(dú)立的進(jìn)行,不能直接利用上文已經(jīng)預(yù)測(cè)的標(biāo)簽(只能靠隱含狀態(tài)傳遞上文信息),進(jìn)而導(dǎo)致預(yù)測(cè)出的標(biāo)簽序列可能是無(wú)效的,例如標(biāo)簽I-PER后面是不可能緊跟著B(niǎo)-PER的,但Softmax不會(huì)利用到這個(gè)信息。
學(xué)界提出了DL-CRF模型做序列標(biāo)注。在神經(jīng)網(wǎng)絡(luò)的輸出層接入CRF層(重點(diǎn)是利用標(biāo)簽轉(zhuǎn)移概率)來(lái)做句子級(jí)別的標(biāo)簽預(yù)測(cè),使得標(biāo)注過(guò)程不再是對(duì)各個(gè)token獨(dú)立分類。
BiLSTM-CRF
?
LongShort Term Memory網(wǎng)絡(luò)一般叫做LSTM,是RNN的一種特殊類型,可以學(xué)習(xí)長(zhǎng)距離依賴信息。LSTM 由Hochreiter &Schmidhuber (1997)提出,并在近期被Alex Graves進(jìn)行了改良和推廣。在很多問(wèn)題上,LSTM 都取得了相當(dāng)巨大的成功,并得到了廣泛的使用。LSTM 通過(guò)巧妙的設(shè)計(jì)來(lái)解決長(zhǎng)距離依賴問(wèn)題。
所有 RNN 都具有一種重復(fù)神經(jīng)網(wǎng)絡(luò)單元的鏈?zhǔn)叫问?。在?biāo)準(zhǔn)的RNN中,這個(gè)重復(fù)的單元只有一個(gè)非常簡(jiǎn)單的結(jié)構(gòu),例如一個(gè)tanh層。
圖3:傳統(tǒng)RNN結(jié)構(gòu)
LSTM 同樣是這樣的結(jié)構(gòu),但是重復(fù)的單元擁有一個(gè)不同的結(jié)構(gòu)。不同于普通RNN單元,這里是有四個(gè),以一種非常特殊的方式進(jìn)行交互。
圖4:LSTM結(jié)構(gòu)
LSTM通過(guò)三個(gè)門結(jié)構(gòu)(輸入門,遺忘門,輸出門),選擇性地遺忘部分歷史信息,加入部分當(dāng)前輸入信息,最終整合到當(dāng)前狀態(tài)并產(chǎn)生輸出狀態(tài)。
圖5:LSTM各個(gè)門控結(jié)構(gòu)
應(yīng)用于NER中的biLSTM-CRF模型主要由Embedding層(主要有詞向量,字向量以及一些額外特征),雙向LSTM層,以及最后的CRF層構(gòu)成。實(shí)驗(yàn)結(jié)果表明biLSTM-CRF已經(jīng)達(dá)到或者超過(guò)了基于豐富特征的CRF模型,成為目前基于深度學(xué)習(xí)的NER方法中的最主流模型。在特征方面,該模型繼承了深度學(xué)習(xí)方法的優(yōu)勢(shì),無(wú)需特征工程,使用詞向量以及字符向量就可以達(dá)到很好的效果,如果有高質(zhì)量的詞典特征,能夠進(jìn)一步獲得提高。
?
圖6:biLSTM-CRF結(jié)構(gòu)示意圖
IDCNN-CRF
對(duì)于序列標(biāo)注來(lái)講,普通CNN有一個(gè)不足,就是卷積之后,末層神經(jīng)元可能只是得到了原始輸入數(shù)據(jù)中一小塊的信息。而對(duì)NER來(lái)講,整個(gè)輸入句子中每個(gè)字都有可能對(duì)當(dāng)前位置的標(biāo)注產(chǎn)生影響,即所謂的長(zhǎng)距離依賴問(wèn)題。為了覆蓋到全部的輸入信息就需要加入更多的卷積層,導(dǎo)致層數(shù)越來(lái)越深,參數(shù)越來(lái)越多。而為了防止過(guò)擬合又要加入更多的Dropout之類的正則化,帶來(lái)更多的超參數(shù),整個(gè)模型變得龐大且難以訓(xùn)練。因?yàn)镃NN這樣的劣勢(shì),對(duì)于大部分序列標(biāo)注問(wèn)題人們還是選擇biLSTM之類的網(wǎng)絡(luò)結(jié)構(gòu),盡可能利用網(wǎng)絡(luò)的記憶力記住全句的信息來(lái)對(duì)當(dāng)前字做標(biāo)注。
但這又帶來(lái)另外一個(gè)問(wèn)題,biLSTM本質(zhì)是一個(gè)序列模型,在對(duì)GPU并行計(jì)算的利用上不如CNN那么強(qiáng)大。如何能夠像CNN那樣給GPU提供一個(gè)火力全開(kāi)的戰(zhàn)場(chǎng),而又像LSTM這樣用簡(jiǎn)單的結(jié)構(gòu)記住盡可能多的輸入信息呢?
具體使用時(shí),dilated width會(huì)隨著層數(shù)的增加而指數(shù)增加。這樣隨著層數(shù)的增加,參數(shù)數(shù)量是線性增加的,而receptive field卻是指數(shù)增加的,可以很快覆蓋到全部的輸入數(shù)據(jù)。
圖7:idcnn示意圖
圖7中可見(jiàn)感受域是以指數(shù)速率擴(kuò)大的。原始感受域是位于中心點(diǎn)的1×1區(qū)域:
(a)圖中經(jīng)由原始感受域按步長(zhǎng)為1向外擴(kuò)散,得到8個(gè)1×1的區(qū)域構(gòu)成新的感受域,大小為3×3;
(b)圖中經(jīng)過(guò)步長(zhǎng)為2的擴(kuò)散,上一步3×3的感受域擴(kuò)展為為7×7;
(c)圖中經(jīng)步長(zhǎng)為4的擴(kuò)散,原7×7的感受域擴(kuò)大為15×15的感受域。每一層的參數(shù)數(shù)量是相互獨(dú)立的。感受域呈指數(shù)擴(kuò)大,但參數(shù)數(shù)量呈線性增加。
對(duì)應(yīng)在文本上,輸入是一個(gè)一維的向量,每個(gè)元素是一個(gè)character embedding:
圖8:一個(gè)最大膨脹步長(zhǎng)為4的idcnn塊
IDCNN對(duì)輸入句子的每一個(gè)字生成一個(gè)logits,這里就和biLSTM模型輸出logits完全一樣,加入CRF層,用Viterbi算法解碼出標(biāo)注結(jié)果。
在biLSTM或者IDCNN這樣的網(wǎng)絡(luò)模型末端接上CRF層是序列標(biāo)注的一個(gè)很常見(jiàn)的方法。biLSTM或者IDCNN計(jì)算出的是每個(gè)詞的各標(biāo)簽概率,而CRF層引入序列的轉(zhuǎn)移概率,最終計(jì)算出loss反饋回網(wǎng)絡(luò)。
?
語(yǔ)料準(zhǔn)備
Embedding:我們選擇中文維基百科語(yǔ)料來(lái)訓(xùn)練字向量和詞向量。
基礎(chǔ)語(yǔ)料:選擇人民日?qǐng)?bào)1998年標(biāo)注語(yǔ)料作為基礎(chǔ)訓(xùn)練語(yǔ)料。
附加語(yǔ)料:98語(yǔ)料作為官方語(yǔ)料,其權(quán)威性與標(biāo)注正確率是有保障的。但由于其完全取自人民日?qǐng)?bào),而且時(shí)間久遠(yuǎn),所以對(duì)實(shí)體類型覆蓋度比較低。比如新的公司名,外國(guó)人名,外國(guó)地名。為了提升對(duì)新類型實(shí)體的識(shí)別能力,我們收集了一批標(biāo)注的新聞?wù)Z料。主要包括財(cái)經(jīng)、娛樂(lè)、體育,而這些正是98語(yǔ)料中比較缺少的。由于標(biāo)注質(zhì)量問(wèn)題,額外語(yǔ)料不能加太多,約98語(yǔ)料的1/4。
數(shù)據(jù)增強(qiáng)
?
對(duì)于深度學(xué)習(xí)方法,一般需要大量標(biāo)注語(yǔ)料,否則極易出現(xiàn)過(guò)擬合,無(wú)法達(dá)到預(yù)期的泛化能力。我們?cè)趯?shí)驗(yàn)中發(fā)現(xiàn),通過(guò)數(shù)據(jù)增強(qiáng)可以明顯提升模型性能。具體地,我們對(duì)原語(yǔ)料進(jìn)行分句,然后隨機(jī)地對(duì)各個(gè)句子進(jìn)行bigram、trigram拼接,最后與原始句子一起作為訓(xùn)練語(yǔ)料。
?
另外,我們利用收集到的命名實(shí)體詞典,采用隨機(jī)替換的方式,用其替換語(yǔ)料中同類型的實(shí)體,得到增強(qiáng)語(yǔ)料。
?
下圖給出了BiLSTM-CRF模型的訓(xùn)練曲線,可以看出收斂是很緩慢的。相對(duì)而言,IDCNN-CRF模型的收斂則快很多。
圖9:BiLSTM-CRF的訓(xùn)練曲線
圖10:IDCNN-CRF的訓(xùn)練曲線
實(shí)例
?
以下是用BiLSTM-CRF模型的一個(gè)實(shí)例預(yù)測(cè)結(jié)果。
?
圖11:BiLSTM-CRF預(yù)測(cè)實(shí)例
?
最后進(jìn)行一下總結(jié),將神經(jīng)網(wǎng)絡(luò)與CRF模型相結(jié)合的CNN/RNN-CRF成為了目前NER的主流模型。對(duì)于CNN與RNN,并沒(méi)有誰(shuí)占據(jù)絕對(duì)優(yōu)勢(shì),各有各的優(yōu)點(diǎn)。由于RNN有天然的序列結(jié)構(gòu),所以RNN-CRF使用更為廣泛?;谏窠?jīng)網(wǎng)絡(luò)結(jié)構(gòu)的NER方法,繼承了深度學(xué)習(xí)方法的優(yōu)點(diǎn),無(wú)需大量人工特征。只需詞向量和字向量就能達(dá)到主流水平,加入高質(zhì)量的詞典特征能夠進(jìn)一步提升效果。對(duì)于少量標(biāo)注訓(xùn)練集問(wèn)題,遷移學(xué)習(xí),半監(jiān)督學(xué)習(xí)應(yīng)該是未來(lái)研究的重點(diǎn)。
?
BOUT
關(guān)于作者
朱耀邦:達(dá)觀數(shù)據(jù)NLP算法工程師,負(fù)責(zé)達(dá)觀數(shù)據(jù)NLP基礎(chǔ)模塊的研究、優(yōu)化,以及NLP算法在文本挖掘系統(tǒng)中的具體應(yīng)用。對(duì)深度學(xué)習(xí)、序列標(biāo)注、實(shí)體及關(guān)系抽取有濃厚興趣。