中葯說明書命名實體識別方案總結
參考鏈接:https://github.com/positivepeng/2020-tianchi-ChMedNER
閱讀上面搜羅的幾個方案,對每個方案進行概述,並寫一個 CheckList 方便自己回憶思考,每個點都可以嘗試一下,不保證有效,煉丹。
冠軍方案
鏈接:https://github.com/z814081807/DeepNER
概述:模型采用 BERT + CRF,使用 UER 預訓練模型,差分學習率,采用和 BERT 一樣的參數初始化,滑動參數平均。在這個基礎上,引入幾個優化。第一,對抗訓練,FGM 和 PGD。第二,使用混合精度訓練,提高速度。第三,模型融合,不同數據划分、隨機數種子和句子長度,不同模型(BERT + SPAN,BERT + MRC)。第四,半監督學習,充分利用初賽的測試集。
CheckList
- 使用不同的預訓練模型,UER
- 差分學習率
- 參數初始化
- 滑動參數平均
- 對抗訓練,FGM 和 PGD 等
- 混合精度加快速度
- 模型融合,不同模型、不同數據
- 半監督學習
- BERT 最后四層動態加權
- BERT 后面再接一個模塊,BiLSTM、DGCNN 等
- 數據增強,對同類實體詞進行隨機替換
- 使用 focal loss、dice loss 緩解標簽不平衡
- 構造領域詞典,修正模型輸出
- 預處理,清洗無效字符,長句切分,切分出來過短的句子合並
亞軍方案
鏈接:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586969.1002.6.25a33e5b7SqxIw&postId=154948
概述:暴力十折 BERT + CRF,模型融合。第一階段,先用十折 BERT base + CRF + FGM 融合模型,用這個模型去清洗數據,然后將原始數據和清洗數據混合。第二階段,用上面的數據,十折 BERT large + CRF,模型融合。很暴力。
CheckList
- 數據清洗,用模型去預測訓練集,解決漏標、錯標、手滑
- 嘗試考慮詞匯的模型 Lattice LSTM、Soft-Lexicon、FLAT
- 模型融合策略:保留召回率高的模型,設置投票的閾值盡可能提高准確率。十折,要 7 票才保留,閾值越高,越准確,但是召回越低。反之,閾值越低,准確率越低,召回率越高。
亞軍方案
鏈接:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586969.1002.12.25a33e5b7SqxIw&postId=154826
概述:關注數據集特點!模型架構,BERT + BiLSTM + CRF + FGM。在這個基礎上,根據數據集特點進行優化。第一,實體補全。相同的句子,在不同位置上標注不同。第二,增加長度特征。這隊觀察到漏標和樣本長度有關系,要讓模型學習到這個特征,所以引入了長度特征。模型融合策略,和上個方案中類似。
CheckList
這個方案更多地關注數據集特點,他們的方案不一定能用到別處。不過看到他們關注數據集特點並給出解決方法,特別佩服。
- 實體補全。
- 增加長度特征。
季軍方案
鏈接:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586969.1002.3.25a33e5b7SqxIw&postId=155024
概述:BERT + BiLSTM + CRF / SPAN + FGM。
CheckList
- 針對錯標,標簽矯正。選擇標簽最多的類別作為真實標記。
- 數據增強。初賽數據做偽標簽。
- BERT 不同層動態權重融合。
- 標簽平滑。
- 預熱學習率,任務層一開始是隨機的,可能對 BERT 產生影響,所以剛開始小一些,后面就按照原來的學習率進行。
- 對抗訓練,FGM。
- 參數滑動平均,SWA。
- 模型融合,不同閾值策略。訓練集出現過的實體和沒出現過的實體采用不同的閾值。
其他方案
鏈接:https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586969.1002.9.25a33e5bTKPiNR&postId=154762
概述:各種模型融合。
CheckList
- 領域語料庫上進行微調。
- 模型融合策略:每一折的每一個模型,去投票。