๋ฌธ์ฅ์ ๋จ์ด(Entity)์ ๋ํ ์์ฑ๊ณผ ๊ด๊ณ๋ฅผ ์์ธกํ๋ ์ธ๊ณต์ง๋ฅ ๋ง๋ค๊ธฐ.
- Public Leader Board
- Private Leader Board
Team name : ์ค์ฌ [ NLP 08์กฐ ]
๊ฐ๋ฏผ์ฌ | ๊น์ฃผ์ | ๊นํ๋ฏผ | ์ ํ์ค | ์ค์์ |
---|---|---|---|---|
- ๋ชจ๋๋ ์ดํฐ ์ธ์๋ Github ๊ด๋ฆฌ์๋ฅผ ๋์ด ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํํ๊ฒ ํ๊ณ , ๊ฐ์ ๋ถ์ผ๋ผ๋ ๋ค๋ฅธ ์์ ์ ์งํํ ์ ์๋๋ก ๋ถ์ ์ ํ์ฌ ํ์ ์ ์งํํ์๋ค.
์ด๋ฆ | ์ญํ |
---|---|
๊ฐ๋ฏผ์ฌ |
EDA(๊ธธ์ด,๋ ์ด๋ธ,ํ ํฐ, entity ํธํฅ ํ์ธ ),ErrorAnalysis,๋ฐ์ดํฐ์ฆ๊ฐ(๋จ์ ๋ณต์ , classinverse ๊ด๊ณ ๊ต์ฒด ์ฆ๊ฐ ),๋ฐ์ดํฐ์ ์ฒ๋ฆฌ(subject,objectentity์คํ์
ํ ํฐ ์ฒ๋ฆฌ ) |
๊นํ๋ฏผ |
๋ชจ๋ธ ์คํ(Attention layer ์ถ๊ฐ ์คํ, Linear/LSTM layer ์ถ๊ฐ ์คํ, Loss, Optimizer ์คํ ), ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(Entity Representation โ ENTITY, Typed Entity ) |
๊น์ฃผ์ |
๋ชจ๋ธ ํ๋, ํ๋ก์ ํธ ๋งค๋์ (๋
ธ์
๊ด๋ฆฌ, ํ์ ์งํ ), EDA, ๋ชจ๋ธ ์์๋ธ(Hard Voting, Soft Voting, Weighted Voting ), Error Analysis(Error Analysis ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ) |
์ค์์ |
Github ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๊ด๋ฆฌ(์ฝ๋ ๋ฆฌํฉํ ๋ง, ๋ฒ๊ทธ ํฝ์ค, ์ฝ๋ ๋ฒ์ ์ปจํธ๋กค ), ๋ชจ๋ธ ์คํ(TAPT ์ ์ฉ ), ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(Entity Representation โ ENTITY, Typed Entity ), EDA(UNK ๊ด๋ จ EDA ), ๋ชจ๋ธ ํ๋ |
์ ํ์ค ย ย ย ย ย ย ย ย ย |
EDA(๋ฐ์ดํฐ heuristic ์ฒดํฌ, Label ๋ณ ๊ด๊ณ ํธํฅ ์กฐ์ฌ ), ๋ฐ์ดํฐ ์ฆ๊ฐ (๋์ผ entity start_idx, end_idx ๊ต์ฒด, Easy Data Augmentation โ SR ๊ธฐ๋ฐ ์ฆ๊ฐ, ํด๋์ค Down Sampling ) |
ํ๋ก์ ํธ ์ฃผ์ | ๋ฌธ์ฅ ๋ด ๊ฐ์ฒด๊ฐ ๊ด๊ณ ์ถ์ถ(KLUE RE): ๋ฌธ์ฅ์ ๋จ์ด(Entity)์ ๋ํ ์์ฑ๊ณผ ๊ด๊ณ๋ฅผ ์์ธกํ๋NLP Task |
---|---|
ํ๋ก์ ํธ ๊ตฌํ๋ด์ฉ | 1. Hugging Face์ Pretrained ๋ชจ๋ธ๊ณผKLUE RE ๋ฐ์ดํฐ์
์ ํ์ฉํด ์ฃผ์ด์ง subject, object entity๊ฐ์ 30๊ฐ ์ค ํ๋์ relation ์์ธกํ๋ AI ๋ชจ๋ธ ๊ตฌ์ถ 2. ๋ฆฌ๋๋ณด๋ ํ๊ฐ์งํ์ธ Micro F1-Score์AUPRC ๋์ ์ ์์ ๋๋ฌํ ์ ์๋๋ก ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ(Entity Representation), ๋ฐ์ดํฐ ์ฆ๊ฐ, ๋ชจ๋ธ๋ง ๋ฐ ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋์ ์งํ |
๊ฐ๋ฐ ํ๊ฒฝ | โข GPU : Tesla V100 ์๋ฒ 4๊ฐ (RAM32G) /Tesla V4 (RAM52G) /GeForce RTX 4090 ๋ก์ปฌ (RAM 24GB) โข ๊ฐ๋ฐ Tool : PyCharm, Jupyter notebook, VS Code [์๋ฒ SSH์ฐ๊ฒฐ], Colab Pro +, wandb |
ํ์ ํ๊ฒฝ | โข Github Repository : Baseline ์ฝ๋ ๊ณต์ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ โข Notion : KLUE ํ๋ก์ ํธ ํ์ด์ง๋ฅผ ํตํ ์ญํ ๋ถ๋ด, ๋ํ ํ์
๊ด๋ จGround Rule ์ค์ , ์์ด๋์ด ๋ธ๋ ์ธ ์คํ ๋ฐ, ๋ํ๊ด๋ จ ํ์ ๋ด์ฉ ๊ธฐ๋ก โข SLACK, Zoom : ์ค์๊ฐ ๋๋ฉด/๋น๋๋ฉด ํ์ |
*์๋๋ ์ ํฌ ํ๋ก์ ํธ ์งํ๊ณผ์ ์ ๋ด์ Gantt์ฐจํธ ์ ๋๋ค.
ํ์ต ์งํํ๊ธฐ ์ ์ฆ๊ฐ ๋ฐ์ดํฐ ํ์ฉ์ Augmentation์ ํ์ต ์ ์ ์งํ
TAPT ์ ์ฉ์ TAPT ์ฝ๋๋ฅผ ์ฌ์ ์ ๋จผ์ ํ์ต์์ผ ๋ชจ๋ธ์ ํ์ฉ
- Augmentation : ๋ฐ์ดํฐ ์ฆ๊ฐ ๋๋ ํ ๋ฆฌ
augment_train.py
: ๋ฐ์ดํฐ ์ฆ๊ฐ ๋ชจ๋ธ ํ์ตaugment_dataloader.py
: ๋ฐ์ดํฐ ์ฆ๊ฐ ๋ชจ๋ธ ํ์ต์ ์ฌ์ฉํ๋ dataloaderaugment.py
: ๋ฐ์ดํฐ ์ฆ๊ฐ ์ฝ๋
- dataset : ํ์ต/ํ
์คํธ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ
train/train.csv
: ํ์ต ๋ฐ์ดํฐtest/test_data.csv
: ํ ์คํธ ๋ฐ์ดํฐ
- config : ๋ชจ๋ธ ํ์ต, ์ถ๋ก , ์ฆ๊ฐ์ ๊ด๋ จ๋ ์ค์ ์ ๋ด๊ณ ์๋ ํ์ผ
augment.yaml
: ์ฆ๊ฐ ๊ด๋ จ ์ค์ ํ์ผ.default.yaml
: ๋ชจ๋ธ ํ์ต, ์ถ๋ก ๊ด๋ จ ์ค์ ํ์ผ. ๋ค์ํ ๋ชจ๋ธ, ํ์ดํผ ํ๋ผ๋ฏธํฐ ์ธํensemble.yaml
: ์์๋ธ ์ค์ ํ์ผ (Hard Voting, Soft Voting, F1-score Weighted Voting)tapt.yaml
: TAPT ๊ด๋ จ ์ค์ ํ์ผ
- model_ensemble : ์์๋ธ ์คํ ํ์ผ
ensemble.py
: ์์๋ธ ์คํ ์ฝ๋ensemble_model.py
: ์์๋ธ ๊ธฐ๋ฒ ์ ์(Hard Voting, Soft Voting, F1-score Weighted Voting)utils.py
: ์์๋ธ์ ํ์ํ argmax, softmax ํจ์ ์ ์
- models :
RBERT.py
: R-BERT ๋ชจ๋ธ ์ ์ ์ฝ๋TAEMIN_CUSTOM_RBERT.py
: R-BERT ๋จ์ํ ๋ชจ๋ธ ์ ์ ์ฝ๋TAEMIN_R_RoBERTa.py
: R-Roberta ๋ชจ๋ธ ํ์ผTAEMIN_RoBERTa_LSTM.py
: Roberta-LSTM ๋ชจ๋ธ ์ ์ ์ฝ๋TAEMIN_TOKEN_ATTENTION_BERT.py
: BERT + CLS Token Attention ๋ชจ๋ธ ์ ์ ์ฝ๋TAEMIN_TOKEN_ATTENTION_RoBERTa.py
: Roberta + CLS Token Attention ๋ชจ๋ธ ์ ์ ์ฝ๋model_base.py
: base ๋ชจ๋ธ ์ ์ ์ฝ๋(FC Layer, RobertaClassificationHead, RobertaPooler)utils.py
:
- modules : ๋ชจ๋ธ์ ์ฐ์ด๋ dataset, loss ๋ฑ ์ธ๋ถ์ ์ธ ๋ชจ๋ ์ ์ ๋๋ ํ ๋ฆฌ
datasets.py
: ๋ชจ๋ธ ๋ณ dataset ์์ฑ ์ฝ๋losses.py
: Focal loss ์ฝ๋optimizers.py
: AdamW, Adam, SGD, Adabelief ๋ฑ Optimizer ์ ์ ์ฝ๋preprocess.py
: ๋ฐ์ดํฐ ํ์ฑ ๋ฐ ์ ์ฒ๋ฆฌ ์ฝ๋schedulers.py
: StepLR, CosinLR ์ ์ ์ฝ๋tokenize.py
: ํ ํฌ๋์ด์ง ๋ฐ Entity Representation ์ฝ๋utils.py
: micro_f1, config_parser, confusion_matrix ์ฝ๋
- pickle : ์ซ์ label - ์คํธ๋ง label ๋ณํ ํผํด ํ์ผ
dict_label_to_num.pkl
: ์ซ์ label์ ์คํธ๋ง label๋ก ๋ณํํ๋ ํผํด ํ์ผdict_num_to_label.pkl
: ์คํธ๋ง label์ ์ซ์ label๋ก ๋ณํํ๋ ํผํด ํ์ผ
- prediction : ๋ชจ๋ธ ์ถ๋ก ์ ์ฅ ๋๋ ํ ๋ฆฌ
- tapt :
dataset.py
: TAPT ๋ฐ์ดํฐ ๋ก๋ ์ฝ๋tapt.py
: TAPT ํ์ต ์ฝ๋
- .gitignore : gitignore
dataloader.py
: ๋ชจ๋ธ data loader ์ฝ๋inference.py
: ๋ชจ๋ธ ์ถ๋ก ์ฝ๋model.py
: pytorch-lightning์ ์ด์ฉํ ๊ธฐ๋ณธ ๋ชจ๋ธ ์ ์ ์ฝ๋requirements.txt
: ํ๊ฒฝ ์ค์ ๊ด๋ จ textํ์ผtrain.py
: ๋ชจ๋ธ ํ์ต ์ฝ๋wandb_tuning.py
: ์ฌ๋ฌ๊ฐ์ ํ์ดํผ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ์ฌ wandb๋ก ํ๋
๐ฆlevel2_klue-nlp-08
โฃ augmentation
โ โฃ augment.py
โ โฃ augment_dataloader.py
โ โฃ augment_train.py
โ โ utils.py
โฃ config
โ โฃ augment.yaml
โ โฃ default.yaml
โ โฃ ensemble.yaml
โ โ tapt.yaml
โฃ dataset
โ โฃ test
โ โ โ test_data.csv
โ โฃ train
โ โ โ train.csv
โฃ model_ensemble
โ โฃ ensemble.py
โ โฃ ensemble_model.py
โ โ utils.py
โฃ models
โ โฃ RBERT.py
โ โฃ TAEMIN_CUSTOM_RBERT.py
โ โฃ TAEMIN_R_RoBERTa.py
โ โฃ TAEMIN_RoBERTa_LSTM.py
โ โฃ TAEMIN_TOKEN_ATTENTION_BERT.py
โ โฃ TAEMIN_TOKEN_ATTENTION_RoBERTa.py
โ โฃ model_base.py
โ โ utils.py
โฃ modules
โ โฃ datasets.py
โ โฃ losses.py
โ โฃ optimizers.py
โ โฃ preprocess.py
โ โฃ schedulers.py
โ โฃ tokenize.py
โ โ utils.py
โฃ pickle
โ โฃ dict_label_to_num.pkl
โ โ dict_num_to_label.pkl
โฃ prediction
โฃ tapt
โ โฃ dataset.py
โ โ tapt.py
โฃ wandb
โฃ .gitignore
โฃ README.md
โฃ dataloader.py
โฃ inference.py
โฃ model.py
โฃ requirements.txt
โฃ train.py
โ wandb_tuning.py
๋ถ๋ฅ | ๋ด์ฉ |
---|---|
๋ชจ๋ธ | klue/bert-base , klue/roberta-large , ainize/klue-bert-base-re HuggingFace Transformer Model +Pytorch Lightning ํ์ฉ + Attention Layer or FC Layer |
์ ์ฒ๋ฆฌ | โข Entity Representation : Entity marker / Typed entity marker / SUB,OBJ marker / punct(ํ๊ธ) ๋ฑ ๋ค์ํ entity representation์ ์ ์ฉํ์ฌ ์ต์ ์ ์ฑ๋ฅ์ ๋ด๋ entity representation ์ ์ฉ |
๋ฐ์ดํฐ | โข raw data : ๊ธฐ๋ณธ train ๋ฐ์ดํฐ 32470๊ฐ โข ์ฆ๊ฐ๋ฐ์ดํฐ : MLM kue/roberta-large ๋ชจ๋ธ์ ํ์ฉํ์ฌ ์ฆ๊ฐ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ uniform ๋ถํฌ๋ฅผ ๋ง๋ค์ด ์ด 53873๊ฐ |
๊ฒ์ฆ ์ ๋ต | โข ๋ง๋ค์๋ ๋ชจ๋ธ์ Validation ๋ฐ์ดํฐ๋ฅผ inference์ Micro F1-Score์ AUPRC Score ๋น๊ต โข ์ต์ข ์ ์ผ๋ก ๋ฆฌ๋๋ณด๋์ ์ ์ถํ์ฌ ๋ชจ๋ธ ์ฑ๋ฅ ๊ฒ์ฆ |
์์๋ธ ๋ฐฉ๋ฒ | โข Entity Represenatation๊ณผ ๋ชจ๋ธ๊ธฐ๋ฒ, ์ฆ๊ฐ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข์ ๋ชจ๋ธ 3๊ฐ๋ฅผ ์ ์ ํ์ฌ soft voting ์์๋ธ์ ์งํ |
๋ชจ๋ธ ํ๊ฐ ๋ฐ ๊ฐ์ ย ย ย ย ย ย ย ย ย ย | . MLM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฆ๊ฐ์ ์ค์ํ์ฌ label imbalance ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๋ํ, Entity Representation์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ๊ณ HuggingFace ๋ชจ๋ธ์ Attention layer์ FC Layer๋ฑ์ ์ถ๊ฐํ๋ ๋ฑ ๋ค์ํ ๊ธฐ๋ฒ์ ํ์ฉํ์ฌ ๋ชจ๋ธ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค. |
#ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
pip install -r requirements.txt
# ๋ฐ์ดํฐ ์ฆ๊ฐ [optional]
python3 augmentation/augment.py --config=config/augment.yaml
python3 augmentation/augment_train.py --config=config/augment.yaml
# TAPT ํ์ต ๋ชจ๋ธ ์์ฑ [optional]
python3 tapt/tapt.py --config=config/tapt.yaml
# train.py ์ฝ๋ ์คํ : ๋ชจ๋ธ ํ์ต ์งํ
python3 train.py --config=config/default.yaml
# ๋ชจ๋ธ ์์ธก ์งํ
python3 inference.py --config=config/default.yaml
# ์์๋ธ ์งํ [config๋ฅผ ํตํด์ option ์ ํ]
python3 model_ensemble/ensemble.py --config=config/ensemble.yaml