CBLUE 中文醫療信息處理基准 NLP (論文復現流程)


本次小組課程設計主要完成的分析是對於CMeEE中文醫學實體命名,下面是課程設計的流程

查閱官方文件

CBLUE論文

CBLUE官方簡介

天池打榜(截至2022年4月30日)

jupyter官網

前人的經驗

GlobalPointer對CMeEE的處理
GlobalPointer對CMeEE的處理GitHub

實體命名識別之嵌套實體識別

基於bert4keras的CLUE基准代碼
GlobalPointer NER實體提取

GlobalPointer:用統一的方式處理嵌套和非嵌套NER

【代碼復現】NER之GlobalPointer解析

Efficient GlobalPointer:少點參數,多點效果
NER實體抽取_GlobalPointer_torch
Efficient GlobalPointer:少點參數,多點效果

中文預訓練RoBERTa模型

任務解讀

任務簡介

jupyter實現

jupyter規格選擇

使用的jupyter是華為雲modelarts系統,基礎環境選擇如下:

服務器選擇北京四:
image

鏡像源選擇如圖:
image

類型與規格如圖:
image

其他選項不用改變,28元/小時。

環境配置

  1. 上傳文件夾:
    文件夾下載

image

打開pytorch編輯器

image

解壓文件夾

import zipfile
import os

files = zipfile.ZipFile('cblue.zip', 'r')
files.extractall(os.getcwd())
files.close()

解壓后結果
image

  1. 配置訓練環境

編輯器配置相應環境:

pip install --upgrade pip

pip install transformers==4.5.1

pip install jieba

pip install gensim

在編輯器中依次運行各語句。

image

開始訓練

在jupyter下打開腳本文件

CBLUE_CMeEE/examples/run_ee.sh

如圖:
image

全選復制。

打開Terminal,
image

將剛剛復制的腳本程序粘貼到運行框中

image

image

開始訓練:
image
訓練時間大約為30-60分鍾

提交結果

等待運行完成后,在目錄下找到結果文件,下載。

CBLUE_CMeEE/data/result_output/CMeEE_test.json

image

壓縮后提交到天池平台,結果為62分。
image

參數解讀以及調參方法

  1. 文件夾解釋

此文件夾只是對CBLUE原作者的baseline文件夾的簡單修改,按照原作者的說明方式,本文件夾是如下構成的:


├── cblue                 ##使用的庫函數文件,在jupyter里,自己添加的庫文件需要放在最底層,所以將它從原CBLUE文件夾的分出
├── CBLUE_CMeEE         
|  └── baselines
|     └── run_classifier.py        ##‘main’函數文件
|     └── ...
|  └── CBLUEDatasets
|     └── CMeEE
|        └── CMeEE_test.json        ##測試集, 需要為每條記錄填充"entities"字段,類型為列表。每個識別出來的實體必須包含"start_idx", "end_idx", "type"3個字段。
|        └── CMeEE_train.json       ##訓練集
|        └── CMeEE_dev.json         ##驗證集
|  └── data
|     └── output                    ##保存運行日志,相應的參數
|     └── model_data                
|     └── result_output
|        └── CMeEE_test.json        ##運行結束后輸出結果文件的位置
|  └── examples
|     └── run_ee.sh                 ##腳本程序

  1. 參數說明以及修改方式

參數的修改主要在腳本文件處,目前發現的修改參數的方法如下:

#!/usr/bin/env bash
DATA_DIR="CBLUE_CMeEE/CBLUEDatasets"                  ##載入數據集目錄,不需要修改

TASK_NAME="ee"                                        ##任務名稱為‘CMeEE’不需要修改
MODEL_TYPE="bert"                                     ##根據選擇的模型修改
MODEL_DIR="hfl"                                       ##huggingface文件夾目錄
MODEL_NAME="chinese-bert-wwm"                         ##huggingface模型名稱
OUTPUT_DIR="CBLUE_CMeEE/data/output"                  ##運行日志保存目錄
RESULT_OUTPUT_DIR="CBLUE_CMeEE/data/result_output"    ##結果輸出目錄

MAX_LENGTH=128                                        ##以下參數根據CBLUE給出的標准參數表來更改。
EPOCH=5
BATCH_SIZE=32
LEARNING_RATE=4e-5
WARMUP_PROPORTION=0.1
MAX_GRAD_NORM=1.0

if [ $# == 0 ]; then
    python CBLUE_CMeEE/baselines/run_classifier.py \
        --data_dir=${DATA_DIR} \
        --model_type=${MODEL_TYPE} \
        --model_dir=${MODEL_DIR} \
        --model_name=${MODEL_NAME} \
        --task_name=${TASK_NAME} \
        --output_dir=${OUTPUT_DIR} \
        --result_output_dir=${RESULT_OUTPUT_DIR} \
        --do_train \
        --max_length=${MAX_LENGTH} \
        --train_batch_size=${BATCH_SIZE} \
        --eval_batch_size=${BATCH_SIZE} \
        --learning_rate=${LEARNING_RATE} \
        --epochs=${EPOCH} \
        --warmup_proportion=${WARMUP_PROPORTION} \
        --earlystop_patience=100 \
        --max_grad_norm=${MAX_GRAD_NORM} \
        --logging_steps=200 \
        --save_steps=200 \
        --seed=2021
    python CBLUE_CMeEE/baselines/run_classifier.py \
        --data_dir=${DATA_DIR} \
        --model_type=${MODEL_TYPE} \
        --model_name=${MODEL_NAME} \
        --model_dir=${MODEL_DIR} \
        --task_name=${TASK_NAME} \
        --output_dir=${OUTPUT_DIR} \
        --result_output_dir=${RESULT_OUTPUT_DIR} \
        --do_predict \
        --max_length=${MAX_LENGTH} \
        --eval_batch_size=${BATCH_SIZE} \
        --seed=2021
fi

調參流程

首先在官網查找相應的模型HFL模型庫

本次實驗使用的主要是HFL(哈工大訊飛聯合實驗室提供的模型)

image

可以看到一共有42個模型。

下面舉一個例子。比如我想要換用一個模型來訓練。

首先在CBLUE的GITHUB里面找到參數修改列表:
image
這里比如選擇 macbert-base模型訓練。

在HFL模型庫中找到該模型。我們用的是中文所以帶有Chinese前綴。

image

然后再在腳本文件中將庫文件語句修改一下:

MODEL_NAME="chinese-macbert-base"

同樣的將需要修改的參數修改成CBLUE對應的參數:
image

MAX_LENGTH=128
EPOCH=5
BATCH_SIZE=32
LEARNING_RATE=4e-5

修改完成后將其全選復制到腳本運行框中就可以運行了。
同理,按照這種修改方式可以更換成其他模型。

Q&A


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM