用IDCNN和CRF作端到端的中文實體識別

實體識別和關係抽取是例如構建知識圖譜等上層天然語言處理應用的基礎。實體識別能夠簡單理解爲一個序列標註問題:給定一個句子,爲句子序列中的每個字作標註。由於同是序列標註問題,除去實體識別以外,相同的技術也能夠去解決諸如分詞、詞性標註等不一樣的天然語言處理問題。git

說到序列標註直覺是會想到RNN的結構。如今大部分表現最好的實體識別或者詞性標註算法基本都是biLSTM的套路。就像Ruder在他的博客 Deep Learning for NLP Best Practices 裏面說的,There has been a running joke in the NLP community that an LSTM with attention will yield state-of-the-art performance on any task.算法

對於序列標註來說,普通CNN有一個劣勢,就是卷積以後,末層神經元可能只是獲得了原始輸入數據中一小塊的信息。而對NER來說,整個句子的每一個字都有可能都會對當前須要標註的字作出影響。爲了覆蓋到輸入的所有信息就須要加入更多的卷積層, 致使層數愈來愈深,參數愈來愈多,而爲了防止過擬合又要加入更多的Dropout之類的正則化,帶來更多的超參數,整個模型變得龐大和難以訓練。由於CNN這樣的劣勢,大部分序列標註問題人們仍是使用biLSTM之類的網絡結構,儘量使用網絡的記憶力記住全句的信息來對單個字作標註。網絡

Fisher Yu and Vladlen Koltun 2015 提出了一個dilated CNN的模型,意思是「膨脹的」CNN。想法其實很簡單:正常CNN的filter,都是做用在輸入矩陣一片連續的位置上,不斷sliding作卷積。dilated CNN爲這片filter增長了一個dilation width,做用在輸入矩陣的時候,會skip掉全部dilation width中間的輸入數據;而filter矩陣自己的大小仍然不變,這樣filter獲取到了更廣闊的輸入矩陣上的數據,看上去就像是「膨脹」了通常。orm

具體使用時,dilated width會隨着層數的增長而指數增長。這樣隨着層數的增長,參數數量是線性增長的,而receptive field倒是指數增長的,能夠很快覆蓋到所有的輸入數據。ip

咱們的模型是4個大的相同結構的Dilated CNN block拼在一塊兒,每一個block裏面是dilation width爲1, 1, 2的三層Dilated卷積層,因此叫作 Iterated Dilated CNN。get

IDCNN對輸入句子的每個字生成一個logits,這裏就和biLSTM模型輸出logits以後徹底同樣,放入CRF Layer,用Viterbi算法解碼出標註結果。博客

在biLSTM或者IDCNN這樣的深度網絡模型後面接上CRF層是一個序列標註很常見的方法。biLSTM或者IDCNN計算出的是每一個詞分類的機率,而CRF層引入序列的轉移機率,最終計算出loss反饋回網絡。網上有很多相關帖子,如這裏it

相關文章
相關標籤/搜索