使用fast-bert進行醫療文本分類——FlyAI競賽平臺

使用fast-bert進行醫療文本分類

一、賽題分析

醫療文本的分類能夠及時快速的對患者的病症和問題進行判斷分類,然後分配相應的科室和專家來進行答疑。這樣會極大的減少資源的浪費、更快更及時的病症判斷。  本次競賽需要根據患者的病症和問題來預測屬於240個類別中的哪一類,如:普通內科、肝病科、健身、急診科、手足外科等等。

通過使用pandas分析了下本地提供的3萬條數據,可以發現數據標籤分佈不均衡(主要的分類爲:婦產科,神經科,消化科,呼吸科,內科等。)(看評分標準用的是準確率,所以也就沒有對不平衡數據標籤進行處理)

image.png然後又簡單的分析了下文本(title+text)的長度

image.png二、 核心思路

(1)數據處理:train.csv文件中有三個字段,分別爲title,text和label。使用pandas將title和text字段進行拼接以生成新的字段作爲bert模型的輸入。(使用transformers的tokenizer的encode方法可以快速的將text轉化爲token id)

(2)本地實驗:(使用fastai庫進行快速的文本分類)

image.png

           本地結果:

image.png

bert-base模型:使用的是bert最後一層輸出的cls標籤進行分類。通過上表發現mean-max這種結果的效果好點,於是在線上使用了mean-max模型。

(3)線上實驗:(使用kaushaltrivedi/fast-bert庫來快速的進行文本分類)

參數設置如下表:(線上1個epoch需要花費1個半小時)

image.pngTensorboard輸出:

image.png

訓練集的損失曲線呈階梯下降趨勢。
image.png學習率衰減方面,分別使用了linear_cosine衰減和linear衰減。

線上結果:

image.pngimage.pngimage.pngimage.png三、比賽經驗總結 

  1. 學習了一下fastbert的使用,學會了使用fastbert快速的進行文本分類任務。 
  2. 學習了一下fastai的使用,學會在fastai中使用huggingface的transformers快速的進行文本分類。 
  3. 沒有使用其他模型,專注於使用bert-base-chinese,並在此基礎上進行改進模型。 
  4. 學會了使用學習率衰減策略,使用了linear_cosine和linear衰減。 
  5. 學會了使用pandas庫,對數據進行簡單的分析。

本文爲作者在FlyAI平臺發佈的原創內容,採用知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議進行許可,轉載請附上原文出處鏈接和本聲明。
本文鏈接地址:https://www.flyai.com/n/132699

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