DL4NLP —— 序列標註:BiLSTM-CRF模型做基於字的中文命名實體識別

原文地址 Z:
三個月之前 NLP 課程結課,我們做的是命名實體識別的實驗。在MSRA的簡體中文NER語料(我是從這裏下載的,非官方出品,可能不是SIGHAN 2006 Bakeoff-3評測所使用的原版語料)上訓練NER模型,識別人名、地名和組織機構名。嘗試了兩種模型:一種是手工定義特徵模板後再用CRF++開源包訓練CRF模型;另一種是最近兩年學術界比較流行的 BiLSTM-CRF 模型。
小白一枚,簡單介紹一下模型和實驗結果,BiLSTM-CRF 模型的數據和代碼在GitHub上。

命名實體識別(Named Entity Recognition)

命名實體識別(Named Entity Recognition, NER)是 NLP 裏的一項很基礎的任務,就是指從文本中識別出命名性指稱項,爲關係抽取等任務做鋪墊。狹義上,是識別出人名、地名和組織機構名這三類命名實體(時間、貨幣名稱等構成規律明顯的實體類型可以用正則等方式識別)。當然,在特定領域中,會相應地定義領域內的各種實體類型。
在這裏插入圖片描述

漢語作爲象形文字,相比於英文等拼音文字來說,針對中文的NER任務來說往往要更有挑戰性,下面列舉幾點:

(1) 中文文本里不像英文那樣有空格作爲詞語的界限標誌,而且“詞”在中文裏本來就是一個很模糊的概念,中文也不具備英文中的字母大小寫等形態指示

(2) 中文的用字靈活多變,有些詞語在脫離上下文語境的情況下無法判斷是否是命名實體,而且就算是命名實體,當其處在不同的上下文語境下也可能是不同的實體類型

(3) 命名實體存在嵌套現象,如“北京大學第三醫院”這一組織機構名中還嵌套着同樣可以作爲組織機構名的“北京大學”,而且這種現象在組織機構名中尤其嚴重

(4) 中文裏廣泛存在簡化表達現象,如“北醫三院”、“國科大”,乃至簡化表達構成的命名實體,如“國科大橋”。

專著 [1] 裏比較詳細地介紹了 NER 的各種方法(由於出版年限較早,未涵蓋神經網絡方法),這裏籠統地摘取三類方法:

1. 基於規則的方法:

利用手工編寫的規則,將文本與規則進行匹配來識別出命名實體。例如,對於中文來說,“說”、“老師”等詞語可作爲人名的下文,“大學”、“醫院”等詞語可作爲組織機構名的結尾,還可以利用到詞性、句法信息。在構建規則的過程中往往需要大量的語言學知識,不同語言的識別規則不盡相同,而且需要謹慎處理規則之間的衝突問題;此外,構建規則的過程費時費力、可移植性不好。

2. 基於特徵模板的方法:

統計機器學習方法將 NER 視作序列標註任務,利用大規模語料來學習出標註模型,從而對句子的各個位置進行標註。常用的應用到 NER 任務中的模型包括生成式模型HMM、判別式模型CRF等。比較流行的方法是特徵模板 + CRF的方案:特徵模板通常是人工定義的一些二值特徵函數,試圖挖掘命名實體內部以及上下文的構成特點。對於句子中的給定位置來說,提特徵的位置是一個窗口,即上下文位置。而且,不同的特徵模板之間可以進行組合來形成一個新的特徵模板。CRF的優點在於其爲一個位置進行標註的過程中可以利用到此前已經標註的信息,利用Viterbi解碼來得到最優序列。對句子中的各個位置提取特徵時,滿足條件的特徵取值爲1,不滿足條件的特徵取值爲0;然後把特徵餵給CRF,training階段建模標籤的轉移,進而在inference階段爲測試句子的各個位置做標註。關於這種方法可以參閱文獻 [2] 和 [3]。

3. 基於神經網絡的方法:

近年來,隨着硬件能力的發展以及詞的分佈式表示(word embedding)的出現,神經網絡成爲可以有效處理許多NLP任務的模型。這類方法對於序列標註任務(如CWS、POS、NER)的處理方式是類似的,將token從離散one-hot表示映射到低維空間中成爲稠密的embedding,隨後將句子的embedding序列輸入到RNN中,用神經網絡自動提取特徵,Softmax來預測每個token的標籤。這種方法使得模型的訓練成爲一個端到端的整體過程,而非傳統的pipeline,不依賴特徵工程,是一種數據驅動的方法;但網絡變種多、對參數設置依賴大,模型可解釋性差。此外,這種方法的一個缺點是對每個token打標籤的過程中是獨立的分類,不能直接利用上文已經預測的標籤(只能靠隱狀態傳遞上文信息),進而導致預測出的標籤序列可能是非法的,例如標籤B-PER後面是不可能緊跟着I-LOC的,但Softmax不會利用到這個信息。

學界提出了 LSTM-CRF 模型做序列標註。文獻[4][5]在LSTM層後接入CRF層來做句子級別的標籤預測,使得標註過程不再是對各個token獨立分類。引入CRF這個idea最早其實可以追溯到文獻[6]中。文獻[5]還提出在英文NER任務中先使用LSTM來爲每個單詞由字母構造詞並拼接到詞向量後再輸入到LSTM中,以捕捉單詞的前後綴等字母形態特徵。文獻[8]將這個套路用在了中文NER任務中,用偏旁部首來構造漢字。關於神經網絡方法做NER,可以看博客[9] ,介紹的非常詳細~

基於字的BiLSTM-CRF模型

這段講得比較囉嗦,大概看看就好。
使用基於字的BiLSTM-CRF,主要參考的是文獻[4][5]。使用Bakeoff-3評測中所採用的的BIO標註集,即B-PER、I-PER代表人名首字、人名非首字,B-LOC、I-LOC代表地名首字、地名非首字,B-ORG、I-ORG代表組織機構名首字、組織機構名非首字,O代表該字不屬於命名實體的一部分。如:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
整個模型的結構如下圖所示:
在這裏插入圖片描述

實驗結果

  關於CRF模型的特徵模板就不細講了,是參考 [3] 來做的。提好特徵之後用CRF++工具包即可,這部分是小夥伴做的~

  實驗結果如下表:

在這裏插入圖片描述

感悟

下面開始一本正經地胡說八道:

  1. 總的來說,經過仔細選擇特徵模板的CRF模型在人名上的識別效果要優於BiLSTM-CRF,但後者在地名、組織機構名上展現了更好的性能。究其原因,可能是因爲:
    (1) 人名用字較靈活且長度比較短,用特徵模板在窗口內所提取的特徵要比神經網絡自動學習的特徵更有效、干擾更少
    (2) 地名、組織機構名的構成複雜、長度較長,使用雙向LSTM能夠更好地利用句子級的語義特徵,而特徵模板只能在窗口內進行提取,無法利用整句話的語義。

  2. 對於CRF模型來說,使用 {字符,詞性,詞邊界,實體列表} 這一組合模板的效果在CRF模型系列中表現最好(各個單一模板以及其他組合模板的結果未列出)。

  3. 對於BiLSTM-CRF模型來說,這裏在每一層的處理都是比較簡單的,還有可以提高的空間。例如字向量embedding的初始化方式,這裏只是用了最簡單的隨機初始化,然而由於語料規模比較小,所以不太合適。可以考慮對句子做分詞,然後將字向量初始化爲該字所在詞的詞向量(可以用在別的大型語料上的預訓練值)。此外,還可以嘗試文獻[5][7][8]的思路,將low-level的特徵經過一個RNN或CNN,進而通過“組合”的方式來得到字級別的embedding(英文是用字母構造單詞,中文是用偏旁部首構造漢字),將其與隨機初始化的字向量拼接在一起。

另外要提的一點是BiLSTM-CRF在這應該是過擬合了,迭代輪數(120輪)給大了,測試集指標在大約60輪之後已經開始下降。應該劃個驗證集做early stopping。

BiLSTM-CRF模型的代碼在GitHub上,README.md裏介紹瞭如何訓練、測試。我是用筆記本的顯卡訓練的,batch_size 取64,Adam優化器訓練120個epoch,大概用了4個多小時。如果機器條件允許,不妨試試 batch_size 直接取1,優化器用 SGD+Momentum 。

參考文獻

[1] 《統計自然語言處理》

[2] 向曉雯. 基於條件隨機場的中文命名實體識別[D]. , 2006.

[3] 張祝玉, 任飛亮, 朱靖波. 基於條件隨機場的中文命名實體識別特徵比較研究[C]//第 4 屆全國信息檢索與內容安全學術會議論文集. 2008.

[4] Huang Z, Xu W, Yu K. Bidirectional LSTM-CRF models for sequence tagging[J]. arXiv preprint arXiv:1508.01991, 2015.

[5] Lample G, Ballesteros M, Subramanian S, et al. Neural Architectures for Named Entity Recognition[C]//Proceedings of NAACL-HLT. 2016: 260-270.

[6] Collobert R, Weston J, Bottou L, et al. Natural language processing (almost) from scratch[J]. Journal of Machine Learning Research, 2011, 12(Aug): 2493-2537.

[7] Ma X, Hovy E. End-to-end sequence labeling via bi-directional lstm-cnns-crf[J]. arXiv preprint arXiv:1603.01354, 2016.

[8] Dong C, Zhang J, Zong C, et al. Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition[C]//International Conference on Computer Processing of Oriental Languages. Springer International Publishing, 2016: 239-250.

[9] http://www.cnblogs.com/robert-dlut/p/6847401.html

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