這篇論文是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模型。
——後續慢慢更新