中藥說明書實體識別抽取top1

向AI轉(zhuǎn)型的程序員都關(guān)注了這個號??????
機器學習AI算法工程 公眾號:datayx
人工智能加速了中醫(yī)藥領(lǐng)域的傳承創(chuàng)新發(fā)展,其中中醫(yī)藥文本的信息抽取部分是構(gòu)建中醫(yī)藥知識圖譜的核心部分,為上層應(yīng)用如臨床輔助診療系統(tǒng)的構(gòu)建(CDSS)等奠定了基礎(chǔ)。本次NER任務(wù)需要抽取中藥藥品說明書中的關(guān)鍵信息,包括藥品、藥物成分、疾病、癥狀、證候等13類實體,構(gòu)建中醫(yī)藥藥品知識庫。
數(shù)據(jù)探索分析
本次競賽訓練數(shù)據(jù)有三個特點:
中藥藥品說明書以長文本居多

- 醫(yī)療場景下的標注樣本不足

- 標簽分布不平衡

項目 代碼 獲取方式:
分享本文到朋友圈
關(guān)注微信公眾號 datayx 然后回復(fù) 中藥 即可獲取。
AI項目體驗地址 https://loveai.tech
店鋪地址:
https://shop585613237.taobao.com
核心思路
數(shù)據(jù)預(yù)處理
首先對說明書文本進行預(yù)清洗與長文本切分。預(yù)清洗部分對無效字符進行過濾。針對長文本問題,采用兩級文本切分的策略。切分后的句子可能過短,將短文本歸并,使得歸并后的文本長度不超過設(shè)置的最大長度。此外,利用全部標注數(shù)據(jù)構(gòu)造實體知識庫,作為領(lǐng)域先驗詞典。


Baseline 細節(jié)
預(yù)訓練模型:選用 UER-large-24 layer[1],UER在RoBerta-wwm 框架下采用大規(guī)模優(yōu)質(zhì)中文語料繼續(xù)訓練,CLUE 任務(wù)中單模第一
差分學習率:BERT層學習率2e-5;其他層學習率2e-3
參數(shù)初始化:模型其他模塊與BERT采用相同的初始化方式
滑動參數(shù)平均:加權(quán)平均最后幾個epoch模型的權(quán)重,得到更加平滑和表現(xiàn)更優(yōu)的模型
Baseline bad-case分析

優(yōu)化1:對抗訓練
動機:采用對抗訓練緩解模型魯棒性差的問題,提升模型泛化能力
對抗訓練是一種引入噪聲的訓練方式,可以對參數(shù)進行正則化,提升模型魯棒性和泛化能力
Fast Gradient Method (FGM):對embedding層在梯度方向添加擾動
Projected Gradient Descent (PGD) [2]:迭代擾動,每次擾動被投影到規(guī)定范圍內(nèi)
優(yōu)化2:混合精度訓練(FP16)
動機:對抗訓練降低了計算效率,使用混合精度訓練優(yōu)化訓練耗時
混合精度訓練
在內(nèi)存中用FP16做存儲和乘法來加速
用FP32做累加避免舍入誤差
損失放大
反向傳播前擴大2^k倍loss,防止loss下溢出
反向傳播后將權(quán)重梯度還原
優(yōu)化3:多模型融合
動機:baseline 錯誤集中于歧義性錯誤,采用多級醫(yī)學命名實體識別系統(tǒng)以消除歧義性
方法:差異化多級模型融合系統(tǒng)
模型框架差異化:BERT-CRF & BERT-SPAN & BERT-MRC
訓練數(shù)據(jù)差異化:更換隨機種子、更換句子切分長度(256、512)
多級模型融合策略
融合模型1——BERT-SPAN
采用SPAN指針的形式替代CRF模塊,加快訓練速度
以半指針-半標注的結(jié)構(gòu)預(yù)測實體的起始位置,同時標注過程中給出實體類別
采用嚴格解碼形式,重疊實體選取logits最大的一個,保證準確率
使用label smooth緩解過擬合問題

融合模型2——BERT-MRC
query:實體類型的描述來作為query
doc:分句后的原始文本作為doc
基于閱讀理解的方式處理NER任務(wù)
針對每一種類型構(gòu)造一個樣本,訓練時有大量負樣本,可以隨機選取30%加入訓練,其余丟棄,保證效率
預(yù)測時對每一類都需構(gòu)造一次樣本,對解碼輸出不做限制,保證召回率
使用label smooth緩解過擬合問題
MRC在本次數(shù)據(jù)集上精度表現(xiàn)不佳,且訓練和推理效率較低,僅作為提升召回率的方案,提供代碼僅供學習,不推薦日常使用

多級融合策略
CRF/SPAN/MRC 5折交叉驗證得到的模型進行第一級概率融合,將 logits 平均后解碼實體
CRF/SPAN/MRC 概率融合后的模型進行第二級投票融合,獲取最終結(jié)果

優(yōu)化4:半監(jiān)督學習
動機:為了緩解醫(yī)療場景下的標注語料稀缺的問題, 我們使用半監(jiān)督學習(偽標簽)充分利用未標注的500條初賽測試集
策略:動態(tài)偽標簽
首先使用原始標注數(shù)據(jù)訓練一個基準模型M
使用基準模型M對初賽測試集進行預(yù)測得到偽標簽
將偽標簽加入訓練集,賦予偽標簽一個動態(tài)可學習權(quán)重(圖中alpha),加入真實標簽數(shù)據(jù)中共同訓練得到模型M’


- tips:使用多模融合的基準模型減少偽標簽的噪音;權(quán)重也可以固定,選取需多嘗試哪個效果好,本質(zhì)上是降低偽標簽的loss權(quán)重,是緩解偽標簽噪音的一種方法。
其他無明顯提升的嘗試方案
取BERT后四層動態(tài)加權(quán)輸出,無明顯提升
BERT 輸出后加上BiLSTM / IDCNN 模塊,過擬合嚴重,訓練速度大大降低
數(shù)據(jù)增強,對同類實體詞進行隨機替換,以擴充訓練數(shù)據(jù)
BERT-SPAN / MRC 模型采用focal loss / dice loss 等緩解標簽不平衡
利用構(gòu)造的領(lǐng)域詞典修正模型輸出
最終線上成績72.90%,復(fù)賽Rank 1,決賽Rank 1
Ref
[1] Zhao et al., UER: An Open-Source Toolkit for Pre-training Models, EMNLP-IJCNLP, 2019. [2] Madry et al., Towards Deep Learning Models Resistant to Adversarial Attacks, ICLR, 2018.
機器學習算法AI大數(shù)據(jù)技術(shù)
搜索公眾號添加: datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《深度學習入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼
python就業(yè)班學習視頻,從入門到實戰(zhàn)項目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項目玩轉(zhuǎn)深度學習:基于TensorFlow的實踐詳解》完整版PDF+附書代碼
PyTorch深度學習快速實戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機器學習實戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)
李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學習方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學習》最新2018版中英PDF+源碼
重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別
【Keras】完整實現(xiàn)‘交通標志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學習圖像分類
VGG16遷移學習,實現(xiàn)醫(yī)學圖像識別分類工程項目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特征工程
不斷更新資源
深度學習、機器學習、數(shù)據(jù)分析、python
搜索公眾號添加: datayx
