「NLP-NER」命名實體識別中最常用的兩種深度學習模型
命名實體識別(Named Entity Recognition,NER)是NLP中一項非常基礎的任務。NER是資訊提取、問答系統、句法分析、機器翻譯等眾多NLP任務的重要基礎工具。
上一期我們介紹了NER的基本概念,大致介紹了NER常用的模型。本期我們詳細介紹目前NER最常用的兩種深度學習模型,LSTM+CRF和Dilated-CNN。
作者 | 小Dream哥
編輯 | 小Dream哥
1 LSTM+CRF
在NLP領域,有那麼一段時間,LSTM是“最紅”的特徵抽取器,自然,NER中也開始引入LSTM來進行特徵抽取。
LSTM我就不再做過多的介紹,其原理在我的一篇文章中有詳細的介紹,讀者可以點選如下的連結回顧:
如上圖所示,是用雙向LSTM+CRF進行命名實體識別的模型結構圖。
我們來好好分析一下這個模型,看資料的流轉和各層的作用。
1.embedding layer 將中文轉化為字向量,獲得輸入embedding
2.將embedding輸入到BiLSTM層,進行特徵提取(編碼),得到序列的特徵表徵,logits。
3.logits需要解碼,得到標註序列。將其輸入到解碼CRF層,獲得每個字的序列。
總結一下,該模型的重點其實有兩個:
1. 引入雙向LSTM層作為特徵提取工具,LSTM擁有較強的長序列特徵提取能力,是個不錯的選擇。雙向LSTM,在提取某個時刻特徵時,能夠利用該時刻之後的序列的資訊,無疑能夠提高模型的特徵提取能力。
2. 引入CRF作為解碼工具。中文輸入經過雙向LSTM層的編碼之後,需要能夠利用編碼到的豐富的資訊,將其轉化成NER標註序列。透過觀察序列,預測隱藏狀態序列,CRF無疑是首選。
2 ID-CNN+CRF
膨脹卷積可能有很多朋友還不是很熟悉,這裡先做一個簡單的介紹。
Dilated/Atrous Convolution(中文叫做空洞卷積或者膨脹卷積))或者是Convolution with holes。從字面上就很好理解,就是在標準的卷積裡注入空洞,以此來增加 感受野。
如上圖所示,相比原來的正常卷積,膨脹卷積多了一個超引數,稱之為膨脹率(dilation rate),指的是kernel的間隔數量(例如,正常的卷積是膨脹率是1)。
“膨脹”的好處是,不做池化,不損失資訊的情況下,增大了感受野,讓每個卷積輸出都包含較大範圍的資訊。
《Fast and Accurate Entity Recognition with Iterated Dilated Convolutions》一文中提出在NER任務中,引入膨脹卷積,一方面可以引入CNN平行計算的優勢,提高訓練和預測時的速度;另一方面,可以減輕CNN在長序列輸入上特徵提取能力弱的劣勢。
具體使用時,dilated width會隨著層數的增加而指數增加。這樣隨著層數的增加,引數數量是線性增加的,而感受野卻是指數增加的,這樣就可以很快覆蓋到全部的輸入資料。
如上圖所示,模型是4個大的相同結構的Dilated CNN block拼在一起,每個block裡面是dilation width為1, 1, 2的三層Dilated卷積層,所以叫做 Iterated Dilated CNN。
IDCNN對輸入句子的每一個字生成一個logits,這裡就和BiLSTM模型輸出logits之後完全一樣,再放入CRF Layer解碼出標註結果。
總結
LSTM+CRF和ID-CNN+CRF兩種模型其實都是同一個架構:深度學習特徵提取+CRF解碼。現在絕大部分的NER任務都是採用這樣的一套框架。本文詳細的介紹了上述兩種方法的模型結構和本質,具體的實現和程式碼, 包括資料預處理,模型搭建,訓練,部署等在我們的知識星球裡都有詳細的介紹,感興趣的同學可以掃描下面的二維碼加入。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2658423/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 「NLP-NER」如何使用BERT來做命名實體識別
- 一文詳解深度學習在命名實體識別(NER)中的應用深度學習
- 【NLP學習其一】什麼是命名實體識別NER?
- 實戰 | 基於深度學習模型VGG的影象識別(附程式碼)深度學習模型
- 使用DeepKE訓練命名實體識別模型DEMO(官方DEMO)模型
- 微調大型語言模型進行命名實體識別模型
- 深度學習——性別識別深度學習
- 深度學習-行人重識別實戰(2020)深度學習
- HanLP-命名實體識別總結HanLP
- keras框架下的深度學習(一)手寫體識別Keras框架深度學習
- python呼叫hanlp進行命名實體識別PythonHanLP
- 條件隨機場實現命名實體識別條件隨機場
- 知識蒸餾、輕量化模型架構、剪枝…幾種深度學習模型壓縮方法模型架構深度學習
- 深度學習實驗:Softmax實現手寫數字識別深度學習
- 【Keras篇】---Keras初始,兩種模型構造方法,利用keras實現手寫數字體識別Keras模型構造方法
- BERT微調進行命名實體識別並將模型儲存為pb形式模型
- 深度學習模型深度學習模型
- 用飛槳做命名實體識別,手把手教你實現經典模型 BiGRU + CRF模型CRF
- 手把手教你運用深度學習構建影片人臉識別模型(Python實現)深度學習模型Python
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 手把手教你運用深度學習構建視訊人臉識別模型(Python實現)深度學習模型Python
- 深度學習-TF、keras兩種padding方式:vaild和sam深度學習KeraspaddingAI
- 深度學習中的Normalization模型深度學習ORM模型
- 三大深度學習生成模型:VAE、GAN及其變種深度學習模型
- 深度學習武器庫-timm-非常好用的pytorch CV模型庫 - 常用模型操作深度學習PyTorch模型
- 利用OpenCV和深度學習來實現人類活動識別OpenCV深度學習
- 【Get】用深度學習識別手寫數字深度學習
- 對深度學習的認識深度學習
- [OpenCV實戰]1 基於深度學習識別人臉性別和年齡OpenCV深度學習
- Docker部署深度學習模型Docker深度學習模型
- 中文電子病歷命名實體識別(CNER)研究進展
- 深度學習——使用卷積神經網路改進識別鳥與飛機模型深度學習卷積神經網路模型
- mnist手寫數字識別——深度學習入門專案(tensorflow+keras+Sequential模型)深度學習Keras模型
- TensorFlow 實戰Google深度學習框架(第2版)第6章之LeNet-5模型實現MNIST數字識別Go深度學習框架模型
- 利用docker部署深度學習模型的一個最佳實踐Docker深度學習模型
- Action Recognition——基於深度學習的動作識別綜述深度學習
- 軟體有兩種型別的值型別
- 需掌握的深度學習知識深度學習