近幾年來,基於神經網絡的深度學習方法在計算機視覺、語音識別等領域取得了巨大成功,另外在天然語言處理領域也取得了很多進展。在NLP的關鍵性基礎任務—命名實體識別(Named Entity Recognition,NER)的研究中,深度學習也得到了不錯的效果。最近,筆者閱讀了一系列基於深度學習的NER研究的相關論文,並將其應用到達觀的NER基礎模塊中,在此進行一下總結,與你們一塊兒分享學習。git
NER又稱做專名識別,是天然語言處理中的一項基礎任務,應用範圍很是普遍。命名實體通常指的是文本中具備特定意義或者指代性強的實體,一般包括人名、地名、組織機構名、日期時間、專有名詞等。NER系統就是從非結構化的輸入文本中抽取出上述實體,而且能夠按照業務需求識別出更多類別的實體,好比產品名稱、型號、價格等。所以實體這個概念能夠很廣,只要是業務須要的特殊文本片斷均可以稱爲實體。算法
學術上NER所涉及的命名實體通常包括3大類(實體類,時間類,數字類)和7小類(人名、地名、組織機構名、時間、日期、貨幣、百分比)。
實際應用中,NER模型一般只要識別出人名、地名、組織機構名、日期時間便可,一些系統還會給出專有名詞結果(好比縮寫、會議名、產品名等)。貨幣、百分比等數字類實體可經過正則搞定。另外,在一些應用場景下會給出特定領域內的實體,如書名、歌曲名、期刊名等。網絡
NER是NLP中一項基礎性關鍵任務。從天然語言處理的流程來看,NER能夠看做詞法分析中未登陸詞識別的一種,是未登陸詞中數量最多、識別難度最大、對分詞效果影響最大問題。同時NER也是關係抽取、事件抽取、知識圖譜、機器翻譯、問答系統等諸多NLP任務的基礎。dom
NER當前並不算是一個大熱的研究課題,由於學術界部分學者認爲這是一個已經解決的問題。固然也有學者認爲這個問題尚未獲得很好地解決,緣由主要有:命名實體識別只是在有限的文本類型(主要是新聞語料中)和實體類別(主要是人名、地名、組織機構名)中取得了不錯的效果;與其餘信息檢索領域相比,實體命名評測預料較小,容易產生過擬合;命名實體識別更側重高召回率,但在信息檢索領域,高準確率更重要;通用的識別多種類型的命名實體的系統性能不好。機器學習
NER一直是NLP領域中的研究熱點,從早期基於詞典和規則的方法,到傳統機器學習的方法,到近年來基於深度學習的方法,NER研究進展的大概趨勢大體以下圖所示。分佈式
圖1:NER發展趨勢
在基於機器學習的方法中,NER被看成序列標註問題。利用大規模語料來學習出標註模型,從而對句子的各個位置進行標註。NER 任務中的經常使用模型包括生成式模型HMM、判別式模型CRF等。條件隨機場(ConditionalRandom Field,CRF)是NER目前的主流模型。它的目標函數不只考慮輸入的狀態特徵函數,並且還包含了標籤轉移特徵函數。在訓練時可使用SGD學習模型參數。在已知模型時,給輸入序列求預測輸出序列即求使目標函數最大化的最優序列,是一個動態規劃問題,可使用Viterbi算法解碼來獲得最優標籤序列。CRF的優勢在於其爲一個位置進行標註的過程當中能夠利用豐富的內部及上下文特徵信息。
函數
圖2:一種線性鏈條件隨機場
近年來,隨着硬件計算能力的發展以及詞的分佈式表示(word embedding)的提出,神經網絡能夠有效處理許多NLP任務。這類方法對於序列標註任務(如CWS、POS、NER)的處理方式是相似的:將token從離散one-hot表示映射到低維空間中成爲稠密的embedding,隨後將句子的embedding序列輸入到RNN中,用神經網絡自動提取特徵,Softmax來預測每一個token的標籤。性能
這種方法使得模型的訓練成爲一個端到端的過程,而非傳統的pipeline,不依賴於特徵工程,是一種數據驅動的方法,但網絡種類繁多、對參數設置依賴大,模型可解釋性差。此外,這種方法的一個缺點是對每一個token打標籤的過程是獨立的進行,不能直接利用上文已經預測的標籤(只能靠隱含狀態傳遞上文信息),進而致使預測出的標籤序列多是無效的,例如標籤I-PER後面是不可能緊跟着B-PER的,但Softmax不會利用到這個信息。學習
學界提出了DL-CRF模型作序列標註。在神經網絡的輸出層接入CRF層(重點是利用標籤轉移機率)來作句子級別的標籤預測,使得標註過程再也不是對各個token獨立分類。優化
LongShort Term Memory網絡通常叫作LSTM,是RNN的一種特殊類型,能夠學習長距離依賴信息。LSTM 由Hochreiter &Schmidhuber (1997)提出,並在近期被Alex Graves進行了改良和推廣。在不少問題上,LSTM 都取得了至關巨大的成功,並獲得了普遍的使用。LSTM 經過巧妙的設計來解決長距離依賴問題。
全部 RNN 都具備一種重複神經網絡單元的鏈式形式。在標準的RNN中,這個重複的單元只有一個很是簡單的結構,例如一個tanh層。
圖3:傳統RNN結構
LSTM 一樣是這樣的結構,可是重複的單元擁有一個不一樣的結構。不一樣於普通RNN單元,這裏是有四個,以一種很是特殊的方式進行交互。
圖4:LSTM結構
LSTM經過三個門結構(輸入門,遺忘門,輸出門),選擇性地遺忘部分歷史信息,加入部分當前輸入信息,最終整合到當前狀態併產生輸出狀態。
圖5:LSTM各個門控結構
應用於NER中的biLSTM-CRF模型主要由Embedding層(主要有詞向量,字向量以及一些額外特徵),雙向LSTM層,以及最後的CRF層構成。實驗結果代表biLSTM-CRF已經達到或者超過了基於豐富特徵的CRF模型,成爲目前基於深度學習的NER方法中的最主流模型。在特徵方面,該模型繼承了深度學習方法的優點,無需特徵工程,使用詞向量以及字符向量就能夠達到很好的效果,若是有高質量的詞典特徵,可以進一步得到提升。
圖6:biLSTM-CRF結構示意圖
對於序列標註來說,普通CNN有一個不足,就是卷積以後,末層神經元可能只是獲得了原始輸入數據中一小塊的信息。而對NER來說,整個輸入句子中每一個字都有可能對當前位置的標註產生影響,即所謂的長距離依賴問題。爲了覆蓋到所有的輸入信息就須要加入更多的卷積層,致使層數愈來愈深,參數愈來愈多。而爲了防止過擬合又要加入更多的Dropout之類的正則化,帶來更多的超參數,整個模型變得龐大且難以訓練。由於CNN這樣的劣勢,對於大部分序列標註問題人們仍是選擇biLSTM之類的網絡結構,儘量利用網絡的記憶力記住全句的信息來對當前字作標註。
但這又帶來另一個問題,biLSTM本質是一個序列模型,在對GPU並行計算的利用上不如CNN那麼強大。如何可以像CNN那樣給GPU提供一個火力全開的戰場,而又像LSTM這樣用簡單的結構記住儘量多的輸入信息呢?
Fisher Yu and Vladlen Koltun 2015 提出了dilated
CNN模型,意思是「膨脹的」CNN。其想法並不複雜:正常CNN的filter,都是做用在輸入矩陣一片連續的區域上,不斷sliding作卷積。dilated
CNN爲這個filter增長了一個dilation width,做用在輸入矩陣的時候,會skip全部dilation
width中間的輸入數據;而filter自己的大小保持不變,這樣filter獲取到了更廣闊的輸入矩陣上的數據,看上去就像是「膨脹」了通常。
具體使用時,dilated width會隨着層數的增長而指數增長。這樣隨着層數的增長,參數數量是線性增長的,而receptive field倒是指數增長的,能夠很快覆蓋到所有的輸入數據。
圖7:idcnn示意圖
圖7中可見感覺域是以指數速率擴大的。原始感覺域是位於中心點的1x1區域:
(a)圖中經由原始感覺域按步長爲1向外擴散,獲得8個1x1的區域構成新的感覺域,大小爲3x3;
(b)圖中通過步長爲2的擴散,上一步3x3的感覺域擴展爲爲7x7;
(c)圖中經步長爲4的擴散,原7x7的感覺域擴大爲15x15的感覺域。每一層的參數數量是相互獨立的。感覺域呈指數擴大,但參數數量呈線性增長。
對應在文本上,輸入是一個一維的向量,每一個元素是一個character embedding:
圖8:一個最大膨脹步長爲4的idcnn塊
IDCNN對輸入句子的每個字生成一個logits,這裏就和biLSTM模型輸出logits徹底同樣,加入CRF層,用Viterbi算法解碼出標註結果。
在biLSTM或者IDCNN這樣的網絡模型末端接上CRF層是序列標註的一個很常見的方法。biLSTM或者IDCNN計算出的是每一個詞的各標籤機率,而CRF層引入序列的轉移機率,最終計算出loss反饋回網絡。
Embedding:咱們選擇中文維基百科語料來訓練字向量和詞向量。
基礎語料:選擇人民日報1998年標註語料做爲基礎訓練語料。
附加語料:98語料做爲官方語料,其權威性與標註正確率是有保障的。但因爲其徹底取自人民日報,並且時間久遠,因此對實體類型覆蓋度比較低。好比新的公司名,外國人名,外國地名。爲了提高對新類型實體的識別能力,咱們收集了一批標註的新聞語料。主要包括財經、娛樂、體育,而這些正是98語料中比較缺乏的。因爲標註質量問題,額外語料不能加太多,約98語料的1/4。
對於深度學習方法,通常須要大量標註語料,不然極易出現過擬合,沒法達到預期的泛化能力。咱們在實驗中發現,經過數據加強能夠明顯提高模型性能。具體地,咱們對原語料進行分句,而後隨機地對各個句子進行bigram、trigram拼接,最後與原始句子一塊兒做爲訓練語料。
另外,咱們利用收集到的命名實體詞典,採用隨機替換的方式,用其替換語料中同類型的實體,獲得加強語料。
下圖給出了BiLSTM-CRF模型的訓練曲線,能夠看出收斂是很緩慢的。相對而言,IDCNN-CRF模型的收斂則快不少。
圖9:BiLSTM-CRF的訓練曲線
圖10:IDCNN-CRF的訓練曲線
如下是用BiLSTM-CRF模型的一個實例預測結果。
圖11:BiLSTM-CRF預測實例
最後進行一下總結,將神經網絡與CRF模型相結合的CNN/RNN-CRF成爲了目前NER的主流模型。對於CNN與RNN,並無誰佔據絕對優點,各有各的優勢。因爲RNN有自然的序列結構,因此RNN-CRF使用更爲普遍。基於神經網絡結構的NER方法,繼承了深度學習方法的優勢,無需大量人工特徵。只需詞向量和字向量就能達到主流水平,加入高質量的詞典特徵可以進一步提高效果。對於少許標註訓練集問題,遷移學習,半監督學習應該是將來研究的重點。
關於做者 朱耀邦:達觀數據NLP算法工程師,負責達觀數據NLP基礎模塊的研究、優化,以及NLP算法在文本挖掘系統中的具體應用。對深度學習、序列標註、實體及關係抽取有濃厚興趣。