1. 程式人生 > >乾貨 | 深度學習在NLP的命名實體識別中(NER)的應用

乾貨 | 深度學習在NLP的命名實體識別中(NER)的應用

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文

640?wx_fmt=png&wxfrom=5&wx_lazy=1

什麼是命名實體識別(NER)?

命名實體識別(NER)是自然語言處理(NLP)中的基本任務之一。NLP的一般流程如下:
          

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&retryload=1

句法分析是NLP任務的核心,NER是句法分析的基礎。
NER任務用於識別文字中的人名(PER)、地名(LOC)等具有特定意義的實體。非實體用O來表示。我們以人名來舉例:

  1.  B-PER

  2.  I-PER

  3.  O

  4.  B-PER

  5.  I-PER

  6.  O

  7.  O

  8. 了。 O

  9. IOB是塊標記的一種表示。B-表示開始,I-表示內部,O-表示外部)

首先明確的是NER是個分類任務,具體稱為序列標註任務,即文字中不同的實體對應不同的標籤,人名-PER,地名-LOC,等等,相似的序列標註任務還有詞性標註、語義角色標註。
傳統的解決此類問題的方法,包括:
(1) 基於規則的方法。根據語言學上預定義的規則。但是由於語言結構本身的不確定性,規則的制定上難度較大。
(2) 基於統計學的方法。利用統計學找出文字中存在的規律。主要有隱馬爾可夫(HMM)、條件隨機場(CRF)模型和Viterbi演算法。文末會簡要介紹比較流行的CRF模型。
(3) 神經網路。深度學習(多層神經網路)這麼流行,當然不會放過nlp,之前我的一篇帖子(《深度學習在機器翻譯中的應用》)裡提到過迴圈神經網路(RNN)及其變種LSTM。因為文字的上下文依賴性,LSTM這種能夠儲存上下文資訊的序列模型是較好的選擇(本文側重於CRF,LSTM的基本知識可參考《深度學習在機器翻譯中的應用》)。

LSTM+CRF模型

語言文字的特殊之處在於其具有一定的結構,主謂賓定狀補,狀語後置,非限制性定語從句等等。這些結構的存在代表著每個單詞的前後是有著一定的詞性限制的。比如:

  1. 我現在回家//這是常見的(主+狀+謂+賓)結構的句子

  2. 我今天家//這樣的文字就不能稱為一個句子,少了必要的語法結構

LSTM網路是整體思路同樣是先對給定的訓練樣本進行學習,確定模型中的引數,再利用該模型對測試樣本進行預測得到最後的輸出。由於測試輸出的準確性現階段達不到100%,這就意味著,肯定存在一部分錯誤的輸出,這些輸出裡很可能就包含類似於上述第二句話這種不符合語法規則的文字。
因此,這就是為什麼要將CRF模型引入進來的原因。
條件隨機場(CRF)是一種統計方法。其用於文字序列標註的優點就是上文所說的對於輸出變數可以進行約束,使其符合一定的語法規則。
常見的神經網路對訓練樣本的學習,只考慮訓練樣本的輸入,並不考慮訓練樣本的輸出之間的關係。


           

640?wx_fmt=png

  LSTM+CRF 網路

LSTM 網路可以看作是一個多分類問題,給定B、I、O等標籤作為訓練輸出,”john goes to school”等句子作為輸入,根據網路模型計算的概率大小確定句子中的每個單詞屬於哪個標籤(類別),概率最大的即為該單詞最後所屬的標籤(類別),標籤與標籤之間是獨立的。
LSTM+CRF則是在分類問題的基礎上,加上輸出之間的約束關係。比如”B”標籤之後還是”B”,這種不符合語法規則的情況,通過CRF機制是可以排除的。
目前,tensorflow 已支援LSTM+CRF的配置。
(LSTM+CRF是深度學習中比較經典的模型,當前還有LSTM+cnn+CRF等其他的經過優化的模型)。

附:條件隨機場(CRF)原理

要完全搞懂CRF的原理,可以參考李航的《統計學習方法》的第11章。這裡作簡要說明。
CRF的基礎是馬爾可夫隨機場,或者稱為概率無向圖。

延伸

概率無向圖:用無向圖表示隨機變數的概率分佈。
 

640?wx_fmt=png


上圖就是滿足區域性馬爾可夫性的概率無向圖。每個結點都代表著一個隨機變數,邊代表著隨機變數之間的關係。

區域性馬爾可夫性: P(Yu|Yv)=P(Yu|Yv,Yw)
簡單理解,因為Yu和Yw之間沒有邊連線,則在給定隨機變數Yv條件下的Yu的概率,跟多加了一個Yw無關。

CRF的理解

CRF可以理解為在給定隨機變數X的條件下,隨機變數Y的馬爾可夫隨機場。其中,線性鏈CRF(一種特殊的CRF)可以用於序列標註問題。CRF模型在訓練時,給定訓練序列樣本集(X,Y),通過極大似然估計、梯度下降等方法確定CRF模型的引數;預測時,給定輸入序列X,根據模型,求出P(Y|X)最大的序列y(這裡注意,LSTM輸出的是一個個獨立的類別,CRF輸出的是最優的類別序列,也就是CRF全域性的優化要更好一些)。
            

640?wx_fmt=png

   線性鏈條件隨機場(可以比較一下與上面LSTM+CRF網路圖的區別與聯絡)

為何CRF可以表示輸出序列內各元素(Y1,Y2,…,Yi,Yi+1)之間的聯絡?這裡就是要聯絡到馬爾可夫性。這也就是為什麼CRF的基礎是馬爾可夫隨機場。
CRF如何求解P(Y|X),有具體的數學公式,這裡就不詳細列出了。

拓展閱讀

640?wx_fmt=png