๋ณธ ํ๋ก์ ํธ๋ Topic Classification ๋ฌธ์ ๋ฅผ Data-Centricํ ์ ๊ทผ์ ํตํด ํด๊ฒฐํ๋ ๊ฒ์ ์ฃผ์ ๋ก ํ๊ณ ์์ต๋๋ค.
ํ์ ์์ ๋ฐ์ดํฐ์ ์ค์๋๋ ๋งค์ฐ ๋์ต๋๋ค. ํ์ง๋ง, ML/DL ๋ชจ๋ธ์ ๋นํด ๋ฐ์ดํฐ์ ๊ดํ ์ฐ๊ตฌ๋ ํ๋ฐํ ์ด๋ฃจ์ด์ง์ง ์๊ณ ์์ต๋๋ค. ๋ณธ ํ๋ก์ ํธ๋ ์ด๋ฌํ ํ๋ฆ์์ ๋ฒ์ด๋ ๋ชจ๋ธ์ ๋ํ ์์ ์์ด Data-Centricํ ์ ๊ทผ ๋ง์ผ๋ก ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๊ทน๋ํ์ํค๊ณ , ํด๋น ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ํ์ง์ ๊ฐ์ ํ ์ ์๋ ๋ค์ํ ๋ฐฉ์์ ๋ํด ํ๊ตฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํ์ ์์์ ๋ณต์กํ๊ณ ์ ์ ์ ๋์ง ์์ ๋ฐ์ดํฐ๋ค์ ์ ์ ํ ์ฒ๋ฆฌํ๋ ์ผ์ ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- Text denoise ๋จ๊ณ ๋ณ ์ธ์ธํ instruction์ prompt๋ก ์ ๋ ฅํ์ฌ LM ๊ธฐ๋ฐ์ denoising ์ํ
- Labeling error๋ฅผ ๊ต์ ํ๊ธฐ ์ํด, text embedding๊ณผ ํจ๊ป ๊ฐ์ข ML model ํ์ฉ
- Back translation, Mix-up, C-BERT, Word Random Shuffle ๋ฑ ๋ถ์กฑํ train data size๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๊ฐ์ข augmentation method ์๋
๊ฐ๊ฒฝ์ค | ๊น์ฌ๊ฒธ | ์ํธ์ | ์ ์ ์ฐ |
---|---|---|---|
ํ์ | ์ญํ |
---|---|
๊ฐ๊ฒฝ์ค | noisy text detection, text denoising, c-bert, code ๊ด๋ฆฌ |
๊น์ฌ๊ฒธ | text denoising, noisy text detection, data relabeling, mix-up |
์ํธ์ | augmentation, text denoising, back translation, word random shuffle |
์ ์ ์ฐ | EDA, analysis for noise pattern, text denoising |
- ๋ฐ์ดํฐ ์ค๋ช
- Train / Test (2,800 / 30,000)
- ๊ตฌ์ฑ
- ID : ๊ฐ ๋ฐ์ดํฐ ์ํ ID
- text : ๊ธฐ์ฌ ์ ๋ชฉ
- target : ๊ธฐ์ฌ ๋ถ๋ฅ / ์ ์ํ ์ธ์ฝ๋ฉ
- ์ํ๋ฌธํ, ์คํฌ์ธ , ์ธ๊ณ, ์ ์น, ๊ฒฝ์ , IT๊ณผํ, ์ฌํ์ 7๊ฐ์ง ์ฃผ์ ์ค ํ๋
- ํน์ง
- text, target์ noise ํฌํจ
- text ์ค ์ผ๋ถ๋ฅผ ๋ค๋ฅธ ascii ์ฝ๋๋ก ๋ณ๊ฒฝ
- target ์ค ์ผ๋ถ ์์๋ก ๋ณ๊ฒฝ
. level2-datacentric-nlp-16
โโ .github
โโ data
โ โโ train.csv
โ โโ test.csv
โโ dataloader
โ โโ datasets.py
โโ augmentation
โ โโ C-BERT.py
โ โโ PororoBT.py
โ โโ shuffle.py
โ โโ synonym_replacement.py
โโ prompts
โ โโ prompt_gemma.py
โ โโ prompt_llama.py
โโ utils
โ โโ clean_text.py
โ โโ util.py
โโ .flake8
โโ .gitignore
โโ .gitmessage.txt
โโ .pre-commit-config.yaml
โโ README.md
โโ requirements.txt
โโ baseline_code.ipynb
โโ clean.py
โโ label_corrector.py
# text denoising
## -s : seed number setting
## -m : huggingface model id
## -ku : korean ratio upper bound
## -kl : korean ratio lower bound
python3 clean.py -s 456 -m aifeifei798/Meta-Llama-3.1-8B-Instruct -ku 0.75 -kl 0.5
# label denoising
## -s : seed number setting
## -m : huggingface model id
## -mi : max iteration for logistic regression
## -k : number of folds for cross validataion
python3 label_corrector.py -s 456 -m klue/roberta-base -mi 400 -k 5
# C-BERT augmentation
## -s : random seed number
## -m : huggingface model id
## -n : the number of labels to predict
## -k : the number of candidates for synonym replacements
## -e : epoch size
## -b : batch size
## -lr : learning rate for training C-BERT
## -w : weight decay for learning rate scheduler
python3 C-BERT.py -s 456 -m FacebookAI/xlm-roberta-large -n 7 -k 3 -e 10 -b 16 -lr 0.001 -w 0.0001
# synonym replacement augmentation
## -s : random seed number
## -m : huggingface model id
## -n : the number of labels to predict
## -k : the number of candidates for synonym replacements
python3 synonym_replacement.py -s 456 -m FacebookAI/xlm-roberta-large -n 7 -k 3
# back translation augmentation
## -i : "input.csv" name
## -o : "output.csv" name
python3 PororoBT.py -i train.csv -o ouput.csv
# Random word shuffle augmentation
## -i : "input.csv" name
## -o : "output.csv" name
python3 Shuffle.py -i train.csv -o ouput.csv
-
Text Noise Detection
- ๋ชฉ์
- data ์์๋ ์์ ํ์ง ์์๋ ๋ ๋งํผ ๊น๋ํ text์ ์ด๋ ์ ๋ ์์ ์ด ๊ฐ๋ฅํ text, ์์ ํ ์ ์๋ ์ ๋๋ก ์์๋ text ๋ฑ ์ฌ๋ฌ ์ ํ์ text๊ฐ ์กด์ฌ
- text์ ๋ํ ์์ ์ ๋๋ฅผ ์ ์ํ์ฌ, ์์ ํ text๋ฅผ ์ ๋ณํ๋ ๊ณผ์ ํ์
- ํ๊ตญ์ด ๋น์จ
- ํ๊ธ ๋ฌธ์๊ฐ ์์ด, ํน์ ๋ฌธ์, ๊ณต๋ฐฑ ๋ฐ ์ซ์ ๋ฑ์ผ๋ก ๋์ฒด๋๋ ๋ฐฉ์์ noise
- ์์์ด ํฐ text๋ text ๋ด ํ๊ธ ๋น์จ์ด ๋ฎ์ ๊ฒ์ผ๋ก ์์๋จ
- ๋ฐ๋ผ์, ํ๊ธ ๋น์จ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๊ฐ์ ๋๋์ด
normal data
,cleanable data
,not-cleanable data
๋ถ๋ฅ - normal data
- ์ ํ ์์๋์ง ์์๊ฑฐ๋, ์์ ํ์ง ์์๋ ๊ด์ฐฎ์ ์์ค
- ์์ (ํ๊ธ ๋ฐ ๊ณต๋ฐฑ ๋น์จ 0.8 ์ด์ ๊ธฐ์ค)
- ํ์ด์ค๋ถ ์ธํฐ๋ท ๋๋ก ์ํผ๋ผ ์ค๋ฌผ ์ฒซ ์ํ๋นํ ์ฑ๊ณต
- ํด์ธ๋ก๋ฐ m๊ธํญํ n๋์ฐจ๋จ ๋ ๋นจ$์ง๋ค
- ๋ ํ= ์ฝl๋ ๊ฒฉ๋ฆฌ์์ค ํ์ถํ ์ธ๊ตญ์ธ ์ฒญ_์ VS
- cleanable data
- ์ฝ๊ฐ ์์๋์ง๋ง, ์ํ์ ์ด๋์ ๋ ์ถ์ ๊ฐ๋ฅํ ์์ค
- ์์ (ํ๊ธ ๋ฐ ๊ณต๋ฐฑ ๋น์จ 0.8 ๋ฏธ๋ง 0.6 ์ด์ ๊ธฐ์ค)
- m ๊น์ ) ์์ฃผํต์ผ ์,?r์ด1๋๊ฐ์ผ1๋ณด
- ์ฝ๋ก๋ r๋^๋ฑ๊ต)๋ชจ์ต
- ๋ฌธ๋ํต๋ น ๊น์ *mํธ/ํ7 YTD ์กฐ์ํH๋๋ด๊ณ A๋ค๊ณ !,p2ํฉ
- not-cleanable data
- ์์์ด ๋๋ฌด ์ปค, ์ํ์ ์ถ์ ํ ์ ์๋ ์์ค
- ์์ (ํ๊ธ ๋ฐ ๊ณต๋ฐฑ ๋น์จ 0.6 ๋ฏธ๋ง ๊ธฐ์ค)
- E๋ฌA](j์ZwQ์ ์ผ*77์-๋๋ฐโฆ nfDํธ
- .๋ฌ CES %๊ตด#N๋ฐ@์^์a|๋oํฐI์ค์ oํฐO rb
- ์ฌํ^์eํ$8์&mT30,_Y๊ธฐ! ์ฌ์ง# ์ด๋ง์ง ํ<์ค
- ๋ชฉ์
-
Text Denoising
- ๋ชฉ์
- text์ ์ ์ฉ๋ noise ๊ท์น์ ๋ถ์ํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ์ ๋ณต๊ตฌํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํจ
- text์ ์ํ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ํ์ต์ ์งํํ ์ ์์ผ๋ฏ๋ก, LLM์ prompt engineering์ ์ ์ฉํ๋ ๋ฐฉ์ ํ์ฉ
- ๋ชจ๋ธ ์ ์
- ์ ์ ๊ธฐ์ค
- noise๊ฐ ์์ธ ๋ฌธ์ฅ์ ๋ณต์ํ๋ ์์ ์๋ ๋์ ์์ค์ ์ถ๋ก ๋ฅ๋ ฅ ์๊ตฌ๋จ
- ํ์ง๋ง, ์ ํ๋ ์ปดํจํ ๋ฆฌ์์ค ๋ด์์ ๊ธฐ๋ํ ์ ์๋ ๋ชจ๋ธ์ ์ถ๋ก ๋ฅ๋ ฅ์๋ ํ๊ณ๊ฐ ์์
- ๋ฐ๋ผ์, ์์ ํฌ๊ธฐ๋ก ์ต๋ํ์ ํจ์ฉ์ ๋ผ ์ ์๋ ๋ชจ๋ธ์ ๊ธฐ์ค์ผ๋ก ์ ์
- Llama
- scaling law ๊ธฐ๋ฐ์ผ๋ก model size์ ์ ํฉํ dataset size๋ฅผ ํตํด, ์ ํ๋ ๋ชจ๋ธ ํฌ๊ธฐ ๋ด์์ ์ต๊ณ ์ ํจ์จ์ฑ ๋ฌ์ฑ
Llama - 8B
๋ชจ๋ธ ํ์ฉ
- Gemma
- scaling law ๊ธฐ๋ฐ์ ์ ์ ํ dataset size์ ๋๋ถ์ด, ์์ ๋ชจ๋ธ์ ํฐ ๋ชจ๋ธ์ ์ง์์ ์ ๋ฌํ๋ ์ง์ ์ฆ๋ฅ ํ์ต ๊ธฐ์ ์ ํตํด ์์ ํฌ๊ธฐ์ ๋ชจ๋ธ์์๋ ์ข์ ์ฑ๋ฅ์ ๋ฌ์ฑ
Gemma - 9B
๋ชจ๋ธ ํ์ฉ
- ์ ์ ๊ธฐ์ค
- Prompt Engineering
- Few shot
Llama - 8B
๋ชจ๋ธ ํ์ฉ- ๋ฌธ์ฅ ๋ณต์์ ๋ํ ์์ ๊ธฐ๋ฐ์ ์ง๋ฌธ๊ณผ ๋ต๋ณ ์์ผ๋ก๋ง prompt๋ฅผ ๊ตฌ์ฑ
- ๊ฒฐ๊ณผ
- Llama model ํ์ฉ
- Accuracy : 0.7205 / F1-score : 0.7041
- CoT ๊ธฐ๋ฐ์ prompt์ ๋นํด ๋ถ์กฑํ ์ฑ๋ฅ
- ์์์ ์ผ๋ก ์์ ํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ
- ์์์ด ๋ํ ํ ์คํธ์ ์คํ๋ ค ์์์ ์ฃผ๋ ๊ฒฝ์ฐ๋ ๋ฐ์
- Chain of Thoughts
- ๋ฌธ์ฅ์ ๋ณต์ ๋จ๊ณ ๋ฐ ๊ท์น์ ์ธ๋ถ์ ์ผ๋ก ๋๋์ด ์ง์
- Llama model base
Llama - 8B
๋ชจ๋ธ ํ์ฉ- ๋ ธ์ด์ฆ ํจํด ์ค๋ช โ ๋ณต์ ๊ท์น ์ ์โ ์์โ ๋ณต์ ์์ฒญ๋ฌธ์ 4๋จ๊ณ๋ก ๊ตฌ์ฑ
- ๊ฒฐ๊ณผ
- ๋ฌธ์ฅ์ ์๊ฒฐ์ฑ ๋์
- ๋ค์ ์์์ ์ธ ์์ ์ ํ๋ ๊ฒฝ์ฐ ์ฌ์ ํ ์กด์ฌ
- Accuracy : 0.8277 / F1-score : 0.8247
- Gemma model base
Gemma - 9B
๋ชจ๋ธ ํ์ฉ- ๋ณต์ ์กฐ๊ฑดโ ๋ณต์ ๋จ๊ณโ ๋ณต์ ์์โ ๋ณต์ ์์ฒญ๋ฌธ์ 4๋จ๊ณ๋ก ๊ตฌ์ฑ
- ๊ฒฐ๊ณผ
- ์กฐ๊ฑด, ์์, ์์ฒญ์ 3๋จ๊ณ ๊ตฌ์ฑ ๋ณด๋ค, ๋ณต์ ๋จ๊ณ๋ฅผ ์ถ๊ฐ์ ๋ ๋ณต์ ์กฐ๊ฑด ๋ฐ์ ๋ฅ๋ ฅ ํฅ์
- ํ๋์ ์์๋ง ์ฃผ์์ ๋ ๋ณด๋ค ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ์ฃผ์์ ๋ ๋ค์ํ ์ผ์ด์ค์ ๋ํ ์ผ๊ด๋ ๋ณต์ ๋ฅ๋ ฅ ํฅ์์ ๋์ ๋จ
- Accuracy : 0.8293 / F1-score : 0.8257
- ๊ฒฐ๋ก
- ๋จ์ํ ์์๋ฅผ ์ฐ์์ ์ผ๋ก ์ ์ํ๋ ๊ฒ ๋ณด๋ค, ์ธ๋ถ์ ์ผ๋ก ๊ณผ์ ์ ์ค๋ช ํ๋ ๊ฒ์ด ๋ชจ๋ธ์๊ฒ๋ ๋์์ด ๋จ
- ๋ค๋ง, ๊ท์น์ ์ค์ ํด๋ ๊ท์น์ด ์๋ฒฝํ๊ฒ ์ง์ผ์ง์ง๋ ์์ผ๋ฏ๋ก, ๊ท์น์ ๋ํ ์ ์ ํ ์์๋ ํจ๊ป ์ ์ํ๋ ๊ฒ ์ข์
- Few shot
- ๋ชฉ์
-
Label Denoising
- Denoising Tool
- CleanLab
- DL๊ธฐ๋ฐ์ text embedding ๋ชจ๋ธ์ linear layer๋ฅผ ์ถ๊ฐํ๊ณ ํด๋น layer์ ๋ํ ํ์ต์ ํตํด, classification task ์ํ
- ํ์ต ์ฝ๋์ ์ฉ์ดํจ๊ณผ CleanLab๊ณผ์ ํธํ์ฑ์ ๊ณ ๋ คํ์ฌ, logistic regression์ ์ ์ฉํ๋ ๋ฐฉ์์ผ๋ก linear layer ๋์ฒด
- logistic regression์์ ๋์ฑ ํ์ฅํ์ฌ, SVMโ Random Forest ๋ฑ ๋ค์ํ ML ๋ชจ๋ธ ์ ์ฉ ๋ฐ ์์๋ธ
- ๊ฐ label ๋ณ predicted probability์ ๋ํด threshold๋ฅผ ์ค์ ํ๊ณ , ํด๋น threshold ์ดํ์ผ ๊ฒฝ์ฐ labeling error๋ก ํ๋จ
- ์ผ๋ฐ์ ์ผ๋ก threshold๋ ๊ฐ label๋ก ์์ธก๋ ๋ฐ์ดํฐ์ ๋ํด predicted probability์ ํ๊ท ๊ฐ ํ์ฉ
- Over-correcting์ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ, Mis-labeling data์ ๊ฐ์์ ๋ง์ถฐ threshold ์กฐ์ ์๋
- DL๊ธฐ๋ฐ์ text embedding ๋ชจ๋ธ์ linear layer๋ฅผ ์ถ๊ฐํ๊ณ ํด๋น layer์ ๋ํ ํ์ต์ ํตํด, classification task ์ํ
- ๊ฒฐ๊ณผ
- logistic regression
- Accuracy : 0.8237 / F1-score : 0.8218
- ensemble
- ๋ชจ๋ธ ๊ตฌ์ฑ : logistic regression, randomforestclassifier, SVM
- Accuracy : 0.8266 / F1-score : 0.8241
- logistic regression
- CleanLab
- Denoising Tool
-
Augmentation
- C-BERT
- BERT ๊ธฐ๋ฐ์ Masked LM์ ํ์ฉํ ์ ์ฌ์ด ๋์ฒด ์ฆ๊ฐ ๊ธฐ๋ฒ
- BERT ๋ชจ๋ธ์ input์ label embedding์ ์ถ๊ฐํ์ฌ, label ์ ๋ณด๋ฅผ ๋ฐ์ํ ์ฆ๊ฐ ๊ตฌํ
- ๊ฒฐ๊ณผ
- train data ์์ noise๋ก ์ธํด, label embedding์ ๋ํ ์ ์ ํ ํ์ต์ด ์ด๋ ค์
- ํ ํฐ์ ๊ฐ์ข ํน์๋ฌธ์๋ก ์์ธกํ๋ ๊ฒฝ์ฐ ๋ฐ์
- ์ ์์ด ๋์ฒด
- Masked LM์ ํ์ฉํ ์ ์ฌ์ด ๋์ฒด ์ฆ๊ฐ ๊ธฐ๋ฒ
- ๊ฒฐ๊ณผ
Accuracy F1-Score ์ฆ๊ฐ ์ 0.8275 0.8246 ์ฆ๊ฐ ํ 0.8297 0.8269
- Back Translation
- ํ๊ตญ์ด๋ฅผ ์์ด๋ก ๋ฒ์ญํ ๋ค ๋ค์ ํ๊ตญ์ด๋ก ๋ฒ์ญํ์ฌ, ๋ฒ์ญ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ธ์ด ํํ์ ๋ค์์ฑ ํ์ฉ
- ๋ฒ์ญ ๋ชจ๋ธ์ ํ์ฉ์ ์์ด์ ๋ฒ์ญ ์์ฒด์ ํ์ง์ ๋งค์ฐ ์ค์
- ํ๊ตญ์ด ์์ฐ์ด ์ฒ๋ฆฌ์ ํนํ๋์ด, ํ๊ตญ์ด ๋ฒ์ญ ๊ด๋ จํด์๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ Kakao brain/Pororo ์์ฐ์ด ์ฒ๋ฆฌ ํ๋ ์์ํฌ์ ๋ฒ์ญ ๋ชจ๋ธ ํ์ฉ
- ๊ฒฐ๊ณผ
Accuracy F1-Score ์ฆ๊ฐ ์ 0.7584 0.7546 ์ฆ๊ฐ ํ 0.7917 0.7836 - ๋ฒ์ญ ๊ณผ์ ์์, ๊ธฐ์ฌ ์ ๋ชฉ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฌธ์ฒด ํํผ
- Random word Shuffle
- Text์ ๋ํด ์กฐ์ฌ๋ฅผ ์ ์ธํ ๋จ์ด ์์ ์์๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ ์ฆ๊ฐ
- ๊ฒฐ๊ณผ
Accuracy F1-Score ์ฆ๊ฐ ์ 0.8110 0.8050 ์ฆ๊ฐ ํ 0.8084 0.8021 - ์์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด, ๋ฌธ์ฅ์ ์๊ฒฐ์ฑ ๋ณด์กด์ ํ๊ณ
- ๊ธฐ์กด ํํ๊ณผ ๋น๊ตํด, ๋ค์์ฑ ํ๋ณด์ ํฌ๊ฒ ๋์์ด ๋์ง๋ ์์
- Mix-Up
- Text embedding ๊ธฐ์ค์ผ๋ก ์ ํ ๋ณด๊ฐ ๋ฐ์ดํฐ ์์ฑ์ ํตํด ์ฆ๊ฐ
- ์ฌ๋ฌ label์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ต์ฐจ๋ก mixํ ๊ฒฝ์ฐ label ๋ฐฐ์ ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก, ๊ฐ label ๋ณ๋ก ์ ์ฉ
- ๊ฒฐ๊ณผ
Accuracy F1-Score ์ฆ๊ฐ ์ 0.8266 0.8241 ์ฆ๊ฐ ํ 0.8185 0.8173
- C-BERT
-
์ต์ข ์ ์ถ ๋ชจ๋ธ
- Text denoising ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์๋ณธ ํผ์์ ๋๋นํ์ฌ, denoising ํ ์๋ณธ ํ ์คํธ์ ์ฆ๊ฐํ๋ ๋ฐฉ์ ํ์ฉ
- Llama, Gemma model ๊ฐ๊ฐ denoising ๊ฒฐ๊ณผ์ ์ฐจ์ด๊ฐ ์์ผ๋ฏ๋ก, ๊ฐ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ํ์ฉ
- ๊ธฐํ ์ฑ๋ฅ ํฅ์์ ํ์ธํ ์ ์์๋ back translation, ์ ์์ด ๋์ฒด ํ์ฉ
- ๊ฒฐ๊ณผ
- Accuracy : 0.8401 / F1-score : 0.8365