使用fast-bert進行醫療文本分類
一、賽題分析
醫療文本的分類能夠及時快速的對患者的病症和問題進行判斷分類,然後分配相應的科室和專家來進行答疑。這樣會極大的減少資源的浪費、更快更及時的病症判斷。 本次競賽需要根據患者的病症和問題來預測屬於240個類別中的哪一類,如:普通內科、肝病科、健身、急診科、手足外科等等。
通過使用pandas分析了下本地提供的3萬條數據,可以發現數據標籤分佈不均衡(主要的分類爲:婦產科,神經科,消化科,呼吸科,內科等。)(看評分標準用的是準確率,所以也就沒有對不平衡數據標籤進行處理)
然後又簡單的分析了下文本(title+text)的長度
二、 核心思路
(1)數據處理:train.csv文件中有三個字段,分別爲title,text和label。使用pandas將title和text字段進行拼接以生成新的字段作爲bert模型的輸入。(使用transformers的tokenizer的encode方法可以快速的將text轉化爲token id)
(2)本地實驗:(使用fastai庫進行快速的文本分類)
本地結果:
bert-base模型:使用的是bert最後一層輸出的cls標籤進行分類。通過上表發現mean-max這種結果的效果好點,於是在線上使用了mean-max模型。
(3)線上實驗:(使用kaushaltrivedi/fast-bert庫來快速的進行文本分類)
參數設置如下表:(線上1個epoch需要花費1個半小時)
Tensorboard輸出:
訓練集的損失曲線呈階梯下降趨勢。
學習率衰減方面,分別使用了linear_cosine衰減和linear衰減。
線上結果:
三、比賽經驗總結
- 學習了一下fastbert的使用,學會了使用fastbert快速的進行文本分類任務。
- 學習了一下fastai的使用,學會在fastai中使用huggingface的transformers快速的進行文本分類。
- 沒有使用其他模型,專注於使用bert-base-chinese,並在此基礎上進行改進模型。
- 學會了使用學習率衰減策略,使用了linear_cosine和linear衰減。
- 學會了使用pandas庫,對數據進行簡單的分析。
本文爲作者在FlyAI平臺發佈的原創內容,採用知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議進行許可,轉載請附上原文出處鏈接和本聲明。
本文鏈接地址:https://www.flyai.com/n/132699