Skip to content

Latest commit

 

History

History
122 lines (93 loc) · 5.55 KB

README.md

File metadata and controls

122 lines (93 loc) · 5.55 KB

📰 Data-Centric 주제 분류 프로젝트

🌈 개요

  • 뉴스 기사 제목 분류
  • 모델 파트의 수정 없이 Data-Centric 방식으로 모델의 성능 향상 도모
  • 기간: 2024.10.30 ~ 2024.11.07
  • Wrap-Up Report


⭐ 결과

대회 종료 후 private score 비교 결과, 기존 baseline*(macro-f1 0.5980)*을 기준으로 23.41%p 향상


🤗 팀원과 역할

팀원 역할
서태영 텍스트 전처리(BT*), 라벨 전처리(PE**), 데이터 앙상블(CleanLab)
오수현 베이스라인 코드 모듈화, 텍스트 전처리(정규 표현식 규칙 기반, 프롬프팅**), 라벨 전처리(PE**, CleanLab), 증강(BT*, SR***), 합성 데이터 생성(PE**)
이상의 텍스트 전처리(ASCII 코드 규칙 기반), 라벨 전처리(Cleanlab), 증강(BT*, MLM****)
이정인 텍스트 전처리(형태소 분석 규칙 기반), 라벨 추출(PE**)
이정휘 텍스트 전처리(ASCII 코드 규칙 기반, MLM***, PE**), 증강(BT*), 합성 데이터 생성(Gemma**), 레이블 전처리(Clustering)
정민지 텍스트 전처리(형태소 분석 규칙 기반, PE**), 라벨 전처리(PE**, SBERT, Clustering), 증강(BT*), 합성 데이터 생성(PE**)

* 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 이름