論文詳讀:Chinese NER Using Lattice LSTM

這篇論文是18年發表在ACL上的論文,18年基於字符的中文命名體識別的最好的模型。(19年IJCAI發表的CNN-Based Chinese NER with Lexicon Rethinking,是在這篇論文上做的改進,也可以看看)

1.論文背景    

1.1 NER

首先介紹一下什麼是NER 命名體識別,命名體識別指的是將一段文本序列中包含的我們感興趣的實體(有特定意義的實體)識別出來,例如人名,地名和機構名等。命名體識別也屬於序列標註問題,是給定一個序列,對序列中的每一個元素做一個標記,或者說給每一個元素打一個標籤

例如今年海釣比賽在廈門市與金門之間的海域舉行。

我們對這句話進行序列標註之後的結果:

今(O)年(O)海(O)釣(O)比(O)賽(O)在(O)廈(B-LOC)門(I-LOC)市(E-LOC)與(O)金(B-LOC)門(E-LOC)之(O)間(O)的(O)海(O)域(O)舉(O)行(O)。

這段標註採用的是BIEO標註方式,即Begin, Intermediate, End, Other,針對不同的標註任務標註方式也各不相同。通過標註之後的結果,我們可以識別出原來句子中的存在的兩個地點實體“廈門市”和“金門”。在上面的中文命名實體識別的例子中,我們感興趣的是文本序列中的實體。在其他任務中會針對任務的不同打上不同的標籤。

 1.2 NER的應用 

NER是關係抽取、信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中佔有重要地位。命名實體識別(NER)和實體關係抽取(RE)是知識抽取中非常重要的部分,同時其作爲自然語言處理(NLP)中最遇到的問題一直以來是科研的研究方向之一。

 

1.3 BiLSTM-CRF

傳統的方法有CRF(Conditional Random Field)。近年來隨着深度學習的興起,包括命名實體識別在內的序列標註模型從CRF遷移到了BILSTM-CRF等深度模型。當前在英文命名實體識別上,最好的模型是加上Character Embedding和ELMo (Embeddings from Language Models)或者最近google新提出的BERT (Bidirectional Encoder Representations from Transformers) 的BILSTM-CRF。

這篇論文實際上也是基於BILSTM-CRF的,所以先介紹一下這個模型。

                                

 

這裏用的標註集是BIO(B-LOC表示地點首字,I-LOC表示地點非首字,O表示非實體)

對於輸入的序列“中國很大”,首先獲得單個字符的one-hot編碼,然後利用預訓練或者隨機初始化embedding矩陣將句子中的每個字 xi 由one-hot向量映射爲低維稠密的字向量(character embedding)xi∈Rd ,d 是embedding的維度。在輸入下一層之前,設置dropout以緩解過擬合。

在設置dropout後,接入一個線性層,將隱狀態向量從 m 維映射到 k 維,k 是標註集的標籤數,從而得到自動提取的句子特徵,記作矩陣 P∈Rn×k 。可以把 pi∈Rk 的每一維 pij 都視作將字 xi 分類到第 j 個標籤的打分值,

這裏,如果對 P 進行Softmax的話(就相當於對各個位置獨立進行 k 類分類)其實就可以進行標籤預測了。那問題就來了爲什麼還需要加個CRF層。簡單說就是條件隨機場可以把label的上下文學出來。lstm加softmax分類的時候只能把特徵的上下文關係學出來,label的沒學出來。

假設有這樣一個序列:

中國隊獲勝

我們只是用雙向LSTM進行預測,結果可能是

中(B-ORG )國(B-ORG)隊(I-ORG)獲(O)勝(O)

這樣會存在一個明顯的錯誤,實際上B-ORG後面不可能再接B-ORG。因爲使用雙向LSTM這樣對各個位置進行標註時無法利用已經標註過的信息,所以接下來將接入一個CRF層來進行標註。

具體怎麼實現的,看底下這個圖。

                    

底下wi這裏是輸入序列(詞表示或者字表示) 然後經過雙向LSTM得到一個隱含狀態(可以認爲是一個分數值)假設這裏共有5個標籤,輸入序列長度也是5,所以得到的是5個5*1的向量。然後構造一個CRF的轉移矩陣。

                   

比如這個圖,轉移矩陣加了起始狀態和終止狀態,所以是大小7*7的。轉移矩陣指的是這個狀態轉移到另一個狀態的得分。比如這個0.0006 是人名首字轉移到機構名尾字的得分,非常低。說明這個狀態轉移是不合理的。

最後把這兩部分的分值相加,求分數值最大的那個標籤序列。

比如這裏y是一個標籤序列,score(x,y)指的是模型對於輸入序列x的標籤等於y的打分。Pi,yi指的是將第i個標籤預測稱yi的分值。Ay-1,yi指的是y-1轉移到yi的轉移分值。

最後可以用動態規劃維特比算法來求解分數最大值對應的標籤

 

2.現有模型

2.1基於字符的模型

      前面說的命名體識別模型是基於字符的,直接對每個字符進行序列標註。比如這個圖就是基於字符的一個模型。這裏的xi指的是字符embedding向量

      基於字符的模型存在一個缺點就是丟失了詞的信息,embedding向量所含的信息太少。由於沒有進行分詞,所以基於字符的方法無法利用句子中的單詞信息,這也會使得識別效果有瑕疵。舉個例子,比如一句話“南京市長江大橋”,如果沒有單詞信息,識別結果很可能爲:“南京“,”市長”,“江大橋”

      在這個基礎上也有很多人做了改進。比如這個字符+二元詞指的是這個字符的embedding和這個字符和它的下一個字符組成的二元詞的embedding拼接起來(這裏Cj和圖裏的Cj不是一個東西,圖裏指的是LSTM的結構 細胞狀態)

      還有就是字符+softword,就是把字符embedding和訓練得到的分詞的標記信息一起作爲輸入特徵(增強字符表示形式)

 

2.2基於字的模型

      另外一種模型就是基於詞的模型,就是首先對句子進行分詞,然後再進行標籤預測。這樣也存在一些問題,就是錯誤傳播,也就是說如果分詞的時候出現錯誤,那麼這個錯誤可能會一直傳播下去,直接導致識別錯誤。分詞的時候還容易出現OOV現象

       在自然語言處理或者文本處理的時候,我們通常會有一個字詞庫(vocabulary)。這個vocabulary要麼是提前加載的,或者是自己定義的,或者是從當前數據集提取的。

        假設之後你有了另一個的數據集,這個數據集中有一些詞並不在你現有的vocabulary,我們就說這些詞彙是Out-of-vocabulary,簡稱OOV。

       也有人對基於詞的模型進行了調整。比如這個詞+字的LSTM模型。

——後續慢慢更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章