原文:A Survey on Deep Learning for Named Entity Recognition

1.介紹

命名實體識別(NER)旨在從文本中識別出特殊對象,這些對象的語義類別通常在識別前被預定義好,預定義類別如人、地址、組織等。命名實體識別不僅僅是獨立的信息抽取任務,它在許多大型自然語言處理應用系統如信息檢索、自動文本概要、問答任務、機器翻譯以及知識建庫(知識圖譜)中也扮演了關鍵的角色。

1.1命名實體分類:

  1. 廣義命名實體(人,地址等)
  2. 領域命名實體(以生物領域為例:蛋白質,酶,基因等)

1.2方法分類:

  1. 基於規則的方法
  2. 無監督方法
  3. 基於特徵的監督學習方法
  4. 深度學習方法

上述分類法並非涇渭分明的,比如某些深度學習方法也結合了一些研究者設計的特徵來提高識別的準確率。

1.3形式化定義

給定標識符集合 s = langle w_1,w_2,...w_N
angle ,NER 輸出一個三元組 langle I_s,I_e,t
angle 的列表,列表中的每個三元組代表 s 中的一個命名實體。此處 I_s in[1, N]I_e in[1, N] ,分別為命名實體的起始索引以及結束索引;t 指代從預定義類別中選擇的實體類型。例子如下:

1.4NER任務分類

  1. 粗粒度的NER(實體種類少,每個命名實體對應一個實體類型)
  2. 細粒度的NER(實體種類多,每個命名實體可能存在多個對應的實體類型)

值得一提的是,NER任務從粗到細的變化與標註數據集從小到大的發展密切相關

2.背景

2.1數據集

有監督方法的NER任務依賴標註數據集。2005 年之前,數據集主要通過標註新聞文章得到並且預定義的實體種類少,這些數據集適合用於粗粒度的NER任務; 2005 年之後,數據集來源越來越多,包括但不限於維基百科文章、對話、用戶生成語料(如推特等社區的用戶留言)等,並且預定義的實體類別也多了許多,以數據集 OneNotes 為例,其預定義的實體類別達到了89種之多。

所有數據集中,最常見的數據集為 CoNLL03 和 OneNotes,分別常見於粗粒度的NER任務和細粒度的NER任務。

常見的數據集列舉如下:

2.2工具

現成的NER工具來源於學界、工業界以及開源項目。列舉如下:

3.評估標準

通常通過與人類標註水平進行比較判斷NER系統的優劣。評估分兩種:

  1. 精確匹配評估
  2. 寬鬆匹配評估

3.1精確匹配評估

NER任務需要同時確定實體邊界以及實體類別。在精確匹配評估中,只有當實體邊界以及實體類別同時被精確標出時,實體識別任務才能被認定為成功。基於數據的 true positives(TP),false positives(FP),以及false negatives(FN),可以計算NER任務的精確率,召回率以及 F-score 用於評估任務優劣。對NER中的 true positives(TP),false positives(FP)與false negatives(FN)有如下解釋:

  • true positives(TP):NER能正確識別實體
  • false positives(FP):NER能識別出實體但類別或邊界判定出現錯誤
  • false negatives(FN):應該但沒有被NER所識別的實體

精確率Precision=frac{TP}{TP+FP}

召回率Recall = frac{TP}{TP+FN}

F-score:F-score 是精確率和召回率的調和平均,最常用的 F-score 是: 2	imesfrac{Precision	imes Recall}{Precision+Recall}

絕大多數的NER任務需要識別多種實體類別,需要對所有的實體類別評估NER的效果。基於這個思路,有兩類評估指標:

  1. 宏平均 F-score(macro-averaged F-score):分別對每種實體類別分別計算對應類別的 F-score,再求整體的平均值(將所有的實體類別都視為平等的)
  2. 微平均 F-score(micro-averaged F-score):對整體數據求 F-score(將每個實體個體視為平等的)

3.2寬鬆匹配評估

MUC-6 定義了一種寬鬆匹配評估標準:只要實體的邊界與實體真正所在的位置有重合(overlap)且實體類別識別無誤,就可以認定實體類別識別正確;對實體邊界的識別也不用考慮實體類別識別的正確與否。與精確匹配評估相比,寬鬆匹配評估的應用較少。

4.傳統的NER方法

簡單地介紹幾類傳統的NER方法。

4.1基於規則的方法

基於規則的NER系統依賴於人工制定的規則。規則的設計一般基於句法、語法、辭彙的模式以及特定領域的知識等。當字典大小有限時,基於規則的NER系統可以達到很好的效果。由於特定領域的規則以及不完全的字典,這種NER系統的特點是高精確率與低召回率,並且類似的系統難以遷移應用到別的領域中去:基於領域的規則往往不通用,對新的領域而言,需要重新制定規則且不同領域字典不同。

4.2無監督學習方法

典型的無監督方法如聚類可以利用語義相似性,從聚集的組中抽取命名實體。其核心思路在於利用基於巨大語料得到的辭彙資源、辭彙模型、統計數據來推斷命名實體的類別。

4.3基於特徵的有監督學習方法

利用監督學習,NER任務可以被轉化為多分類任務或者序列標註任務。根據標註好的數據,研究者應用領域知識與工程技巧設計複雜的特徵來表徵每個訓練樣本,然後應用機器學習演算法,訓練模型使其對數據的模式進行學習。

5.深度學習方法

5.1為什麼使用深度學習方法

三個主要的優勢:

  1. NER可以利用深度學習非線性的特點,從輸入到輸出建立非線性的映射。相比於線性模型(如線性鏈式CRF、log-linear隱馬爾可夫模型),深度學習模型可以利用巨量數據通過非線性激活函數學習得到更加複雜精緻的特徵。
  2. 深度學習不需要過於複雜的特徵工程。傳統的基於特徵的方法需要大量的工程技巧與領域知識;而深度學習方法可以從輸入中自動發掘信息以及學習信息的表示,而且通常這種自動學習並不意味著更差的結果。
  3. 深度NER模型是端到端的;端到端模型的一個好處在於可以避免流水線(pipeline)類模型中模塊之間的誤差傳播;另一點是端到端的模型可以承載更加複雜的內部設計,最終產出更好的結果。

5.2模型分類法

文章針對現有的深度NER模型提出了一種新的歸納方法。這種歸納法將深度NER系統概括性的分為了三個階段:

  1. 輸入的分散式表示(distributed representation)
  2. 語境語義編碼(context encoder)
  3. 標籤解碼(tag decoder)

一個深度NER系統的結構示例如下:

6.輸入的分散式表示

分散式語義表示:一個單詞的含義是由這個單詞常出現的語境(上下文)所決定的

一種直接粗暴的單詞表示方法為 one-hot 向量表示。這種方法通常向量的維度太大,極度稀疏,且任何兩個向量都是正交的,無法用於計算單詞相似度(見 CS224N lecture1筆記)。分散式表示使用低維度稠密實值向量表示單詞,其中每個維度表示一個隱特徵(此類特徵由模型自動學習得到,而非人為明確指定,研究者往往不知道這些維度到底代表的是什麼具體的特徵)。這些分散式表示可以自動地從輸入文本中學習得到重要的信息。深度NER模型主要用到了三類分散式表示:

  1. 單詞級別表示
  2. 字元級別表示
  3. 混合表示

6.1單詞級別的分散式表示

通常經過訓練,每個單詞可以用一個低維度的實值向量表示。

常見的詞嵌入如下:

  1. 谷歌 word2vec
  2. 斯坦福 GloVe
  3. Facebook fastText
  4. SENNA

作為後續階段的輸入,這些詞嵌入向量既可以在預訓練之後就固定,也可以根據具體應用場景進行調整。

典型的應用

  • Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme 利用word2vec 為端到端的聯合抽取模型學習得到單詞表示作為模型輸入
  • Fast and accurate entity recognition with iterated dilated convolutions 中整個系統的初始化部分中利用了 skip-n-gram 方法在 SENNA 語料上訓練得到維度為 100 的詞嵌入向量

6.2字元級別的表示

字元級別的表示能更有效地利用次詞級別信息如前綴、後綴等。其另一個好處在於它可以很好地處理 out-of-vocabulary 問題。字元級別的表示可以對沒有見過的(訓練語料中未曾出現的)單詞進行合理推斷並給出相應的表示,並在語素層面上共享、處理信息(語素:最小的的音義結合體)。主流的抽取字元級別表示的結構分為:

  1. 基於 CNN 的結構
  2. 基於 RNN 的結構

結構示例如下:

典型例子如下

  • 基於 CNN 的方法:Deep contextualized word representations(ELMo)
  • 基於 RNN 的方法:CharNER

6.3混合表示

某些單詞表示研究還結合了一些其他信息,例如句法信息、詞法信息、領域信息等。這些研究將這些附加的信息與單詞表示或字元級別的表示相結合作為最終的單詞表示,之後再作為輸入輸入到後續的語義編碼結構當中。換而言之,這種方法的本質是將基於深度學習的單詞表示與基於特徵的方法相結合。這些額外的信息可能可以提升NER系統的性能,但是代價是可能會降低系統的通用性與可遷移性。

典型例子如下:

  1. BERT

7.語義編碼結構

基於深度學習的NER系統的第二步時利用輸入表示學習語義編碼。常見的語義編碼結構有:

  1. 卷積神經網路(convolutional neural network)
  2. 循環神經網路(recurrent neural network)
  3. 遞歸神經網路(recursive neural network)
  4. 神經語言模型
  5. transformer

如無特殊說明,文中的 RNN 一般指循環(recurrent)神經網路。

7.1卷積神經網路

如圖是一個經典的基於 CNN 的句子處理方法:

輸入表示階段,輸入序列中的每一個詞都被嵌入一個 N 維的向量。在這之後,系統利用卷積神經網路來產生詞間的局部特徵,並且此時卷積神經網路的輸出大小還與輸入句子的大小有關。隨後,通過對該局部特徵施加極大池化(max pooling)或者平均池化(average pooling)操作,我們能得到大小固定且與輸入相互獨立的全局特徵向量。這些長度大小固定的全局特徵向量之後將會被導入標籤解碼結構中,分別對所有可能的標籤計算相應的置信分數,完成對標籤的預測。

7.2循環神經網路

循環神經網路在處理序列輸入時效果優秀,它有兩個最常見的變種:

  1. GRU(gated recurrent unit)
  2. LSTM(long-short term memory)

特別的,雙向循環神經網路(bidirectional RNNs)能同時有效地利用過去的信息和未來的信息,即可以有效利用全局信息。因此,雙向循環神經網路逐漸成為解決 NER 這類序列標註任務的標準解法。

典型例子如下

  • Bidirectional lstm-crf models for sequence tagging 這篇文章是第一個提出用雙向 LSTM-CRF 結構來處理序列標註任務的,其結構如下:

7.3遞歸神經網路

遞歸神經網路是一種非線性自適應的模型,它可以學習得到輸入的深度結構化信息。命名實體與某些語言成分聯繫十分緊密,如名詞片語。傳統的序列標註方法幾乎忽略了句子的結構信息(成分間的結構),而遞歸神經網路能有效的利用這樣的結構信息,從而得出更好的預測結果。

典型例子如下

  • Leveraging linguistic structures for named entity recognition with bidirectional recursive neural networks

7.4神經語言模型

語言模型是一類描述序列生成的模型。給定符號序列 (t_1,t_2,...,t_N) ,且已知符號 t_k 之前的符號為 (t_1,...,t_{k-1}) ,前向語言模型通過對符號 t_k 的概率進行建模來計算整個序列的概率:

p(t_1,...,t_N)=prod_{k=1}^{N}p(t_k mid t_1,t_2,...,t_k-1)

類似的,反向語言模型對整個序列的計算如下:

p(t_1,...,t_N)=prod_{k=1}^{N}p(t_k mid t_{k+1},t_{k+2},...,t_N)

而雙向語言模型(結合了前向和反向語言模型)同時利用了過去和未來的詞的信息來計算當前符號的概率,因而可以很好的利用語境的語義與句法信息

典型例子:

  • Semisupervised sequence tagging with bidirectional language models 文章認為,利用單詞級別表示作為輸入來產生上下文表示的循環神經網路往往是在相對較小的標註數據集上訓練的。而神經語言模型可以在大型的無標註數據集上訓練。文中模型同時使用詞嵌入模型與神經語言模型對無監督的語料進行訓練,得到兩種單詞表示;之後模型中省去了將輸入向量轉化為上下文相關向量的操作,直接結合前面得到的兩類單詞表示並用於有監督的序列標註任務,簡化了模型的結構。示例圖如下:

7.5深度Transformer

例子如下

  • Attention is all you need
  • Bert: Pretraining of deep bidirectional transformers for language understanding

8.標籤解碼結構

標籤解碼是NER模型中的最後一個階段。在得到了單詞的向量表示並將它們轉化為上下文相關的表示之後,標籤解碼模塊以它們作為輸入並對整個模型的輸入預測相應的標籤序列。主流的標籤解碼結構分為四類:

  1. 多層感知器+Softmax
  2. 條件隨機場
  3. 循環神經網路
  4. pointer networks

8.1多層感知器+Softmax

利用這個結構可以將NER這類序列標註模型視為多類型分類問題。基於該階段輸入的上下文語義表示,每個單詞的標籤被獨立地預測,與其鄰居無關。

例子如下

  • Fast and accurate entity recognition with iterated dilated convolutions
  • Leveraging linguistic structures for named entity recognition with bidirectional recursive neural networks

8.2條件隨機場

條件隨機場(conditional random fields)是一類概率圖模型,在基於特徵的有監督方法中應用廣泛,近來的許多深度學習方法也使用條件隨機場作為最後的標籤標註結構。原文對其缺點描述如下:

Cannot make full use of segment-level information because the inner properties of segments cannot be fully encoded with word-level representations.

例子如下

  • Bidirectional lstm-crf models for sequence tagging

8.3循環神經網路

一些研究使用 RNN 來預測標籤。例子如下:

  • Deep active learning for named entity recognition 這篇文章中提到,RNN 模型作為預測標籤的解碼器性能優於 CRF,並且當實體類型很多的時候訓練速度更快

8.4Pointer Networks

  • Pointer Networks 首次提出此種結構
  • Neural Models for Sequence Chunking 第一篇將pointer networks結構應用到生成序列標籤任務中的文章

推薦閱讀:

相关文章