- 뉴스 기사 제목 분류
- 모델 파트의 수정 없이 Data-Centric 방식으로 모델의 성능 향상 도모
- 기간: 2024.10.30 ~ 2024.11.07
- Wrap-Up Report
대회 종료 후 private score 비교 결과, 기존 baseline*(macro-f1 0.5980)*을 기준으로 23.41%p 향상
* Back Translation
** Prompt Engineering
*** Synonym Replacement
**** Masked Language Modeling
.
├─.github
├─assets
├─preprocess
│ ├─jeonghwi
│ ├─jeongin
│ ├─minji
│ ├─sangui
│ ├─shyun
│ └─taeyeong
├─src
│ ├─dataset.py
│ └─trainer.py
├─data_ensembel.py
├─main.py
├─README.md
└─requirements.txt
dataset.py
,main.py
,trainer.py
: 실험의 용이성을 위해 베이스라인 코드 모듈화data_ensemble.py
: 개별적으로 수행한 전처리, 증강 데이터에 대한 앙상블 코드preprocess
: 개별적으로 수행한 데이터 분석, 전처리, 증강 모듈이 포함된 디렉토리
과정 | 내용 |
---|---|
EDA | • ASCII 코드, 형태소 분석 기반으로 텍스트 데이터의 노이즈 파악 • 텍스트 노이즈와 라벨 노이즈는 겹치지 않는다는 정보를 활용하여 라벨 노이즈 파악 |
텍스트 전처리 | • 규칙 기반: re , hanja , spacy 사용 • 모델 기반: 프롬프팅* |
라벨 전처리 | • 재생성: 프롬프팅* • clustering: SBERT( sinjy1203/ko-sbert-navernews )를 사용하여 텍스트 임베딩 • CleanLab: baseline( klue/bert-base ) 모델 |
증강 | • Masked Language Modeling: baseline(klue/bert-base ), jian1114/jian_KoBART_title • Back Translation: DeepL, Google Translator, NLLB( facebook/nllb-200-distilled-600M , NHNDQ/nllb-finetuned-en2ko ) • Synonym Replacement: baseline( klue/bert-base )의 vocab, SBERT(snunlp/KR-SBERT-V40K-klueNLI-augSTS ) |
합성 데이터 | • 프롬프팅* |
앙상블 | • 개별적으로 적용한 기법으로 처리한 데이터셋 concat • 유사한 텍스트의 label이 다를 경우, baseline 모델로 추론하여 라벨 부여 |
*
LLaMA:Bllossom/llama-3.2-Korean-Bllossom-3B
,meta-llama/Llama-3.1-8B-Instruct
,sh2orc/Llama-3.1-Korean-8B-Instruct
,beomi/Llama-3-Open-Ko-8B
Gemma:rtzr/ko-gemma-2-9b-it
개별 데이터의 전처리, 증강 방식은 각각의 README.md 확인(line 62 참고)
개발 환경
Component | Specification |
---|---|
GPU | NVIDIA Tesla V100 |
RAM | 32 GB |
OS | Linux |
Python Version | 3.10 |
주요 라이브러리 | transformers |
설치 및 환경 설정
git clone https://github.com/boostcampaitech7/level2-nlp-datacentric-nlp-06.git
pip install -r requirements.txt
학습 및 추론
python main.py --data {data_path} --model {model_path} --mode {train/test}
--data
: train.csv, test.csv가 저장된 폴더 경로--model
:--mode train
일 시에는 학습한 모델을 저장할 경로,--mode test
일 시에는 학습된 모델이 저장된 경로
데이터 앙상블
python data_ensemble.py --data {data_path} --model {model_path} --model_name {checkpoint_path}
--data
: 개별적으로 처리한 학습 데이터를 하나의 폴더 내로 이동--model
: 데이터 앙상블에 사용할 모델 폴더 이름--model_name
: 모델 폴더 내 모델이 있는 checkpoint 이름