Skip to content

boostcampaitech7/level1-semantictextsimilarity-nlp-15

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏆 LV.1 NLP 기초 프로젝트 : 문맥적 유사도 측정 (STS)

✏️ 대회 소개

특징 설명
대회 주제 네이버 부스트캠프 AI-Tech 7기 NLP트랙의 level 1 도메인 기초 대회
대회 설명 두 문장이 주어졌을 때 두 문장에 대한 STS(Semantic Text Simliarity)를 추론하는 대회로 Kaggle과 Dacon과 같이 competition 형태
데이터 구성 데이터는 slack 대화, 네이버 영화 후기, 국민 청원 문장으로 구성. Train(9324개), Dev(550개), Test(1100개)
평가 지표 모델의 평가지표는 피어슨 상관계수(Pearson correlation coefficient)로 측정

🎖️ Leader Board

🥈 Public Leader Board (2위)

🥉 Private Leader Board (3위)

👨‍💻 15조가십오조 멤버

김진재 박규태 윤선웅 이정민 임한택

👼 역할 분담

팀원 역할
김진재 EDA, 방법론 제안, 협업 환경 및 베이스라인 관리, 모델 탐색, 증강 기법 및 전처리 실험, 앙상블 코드 작성 및 실험
박규태 EDA, 모델 탐색, 데이터 증강 및 앙상블 기법에 대한 실험, Bagging 기법 코드 작성 및 실험
윤선웅 EDA, 협업 환경 및 베이스라인 관리, 데이터 분포 및 재분할 총괄, 모델 탐색, 데이터 증강 실험, 앙상블 코드 작성 및 실험
이정민 EDA, 모델 탐색, 모델에 대한 증강 기법 및 전처리 실험, KoEDA 증강 실험, K-Fold Validation 실험
임한택 EDA, 모델 탐색, 모델에 대한 증강 기법 및 전처리 실험, 앙상블 코드 작성 및 실험, Stacking 모델 실험

🏃 프로젝트

🖥️ 프로젝트 개요

개요 설명
주제 STS(Semantic Text Similarity) : 두 문장의 유사도 정도를 수치로 추론하는 Task
목표 두 문장(sentence1, sentence2)이 주어졌을 때, 이 두 문장의 유사도를 0~5사이의 점수로 추론한는 AI 모델 제작
평가 지표 실제 값과 예측값의 피어슨 상관 계수(Pearson Correlation Coefficient)
개발 환경 GPU : Tesla V100 Server 4대, IDE : Vscode, Jupyter Notebook
협업 환경 Notion(진행 상황 공유), Github(코드 및 데이터 공유), Slack(실시간 소통)

📅 프로젝트 타임라인

  • 프로젝트는 2024-09-11 ~ 2024-09-27까지 진행되었습니다.

🕵️ 프로젝트 진행

  • 프로젝트를 진행하며 단계별로 실험하여 적용한 내용들을 아래와 같습니다.
프로세스 설명
EDA 데이터 분포 분석, Baseline 모델 예측과 실제값 차이 분석
전처리 동의어 교체, 단어 순서 변경, 랜덤 삭제
증강 label 0 - undersampling, label 5 - copied sentence, swapping sentence
모델 선정 upskyy/kf-deberta-multitask, team-lucid/deberta-v3-xlarge-korean, snunlp/KR-ELECTRA-discriminator, kykim/electra-kor-base, monologg/ko-electra-base-v3-discriminator, jhgan/ko-sroberta-multitask, FacebookAI/roberta-large-rtt, deliciouscat/kf-deberta-base-cross-sts, sorryhyun-sentence-embedding-klue-large
앙상블 soft voting, Nested Ensemble, Bagging

📊 Dataset

  • 데이터 증강 과정에서 라벨 분포를 균형있게 맞추고자 라벨별 증강비율을 조정하였습니다.
버전 설명 크기
original_train_V1 원본 데이터 9324
augmentation_train_V2 SWAP, label 0 언더샘플링 + label 5 오버샘플링 28722

🤖 Ensemble Model

  • 최종적으로 16개의 모델을 앙상블에 사용했습니다.
Model val_pearson learning_rate batch_size 사용 데이터
upskyy/kf-deberta-multitask 0.9289 1e-5 16 augmentation_train_V2
team-lucid/deberta-v3-xlarge-korean 0.9378 1e-5 16 augmentation_train_V2
team-lucid/deberta-v3-xlarge-korean 0.9377 1e-5 16 original_train_V1
snunlp/KR-ELECTRA-discriminator 0.9325 1e-5 16 original_train_V1
snunlp/KR-ELECTRA-discriminator 0.9313 1e-5 32 original_train_V1
kykim/electra-kor-base 0.9255 1e-5 16 original_train_V1
monologg/ko-electra-base-v3-discriminator 0.9252 1e-5 16 original_train_V1
kykim/electra-kor-base 0.9252 1e-5 16 augmentation_train_V2
jhgan/ko-sroberta-multitask 0.9249 1e-5 16 original_train_V1
FacebookAI/roberta-large-rtt 0.9249 1e-5 16 original_train_V1
snunlp/KR-ELECTRA-discriminator 0.9223 1e-5 16 augmentation_train_V2
sorryhyun-sentence-embedding-klue-large 0.9301 1e-5 16 augmentation_train_V2
FacebookAI/xlm-roberta-large 0.9287 1e-5 16 augmentation_train_V2
deliciouscat/kf-deberta-base-cross-sts 0.929 1e-5 16 augmentation_train_V2
team-lucid-deberta-v3-xlarge-korean 0.9399 1e-5 16 augmentation_train_V2
snunlp-KR-ELECTRA-discriminator 0.9336 1e-5 16 augmentation_train_V2

📁 프로젝트 구조

📁 level1-semantictextsimilarity-nlp-15
├── README.md
├── requirements.txt
└── src
    ├── config.yaml
    ├── csv_ensemble
    ├── checkpoint
    ├── data
    ├── model
    │   └── model.py
    ├── output
    ├── run.py
    ├── train.py
    ├── inference.py
    ├── bagging.py
    ├── ensemble.py
    └── util
        ├── data_augmentation.py
        └── util.py

📦 src 폴더 구조 설명

  • checkpoint : 체크포인트 파일(ckpt) 저장 폴더
  • csv_ensemble : 앙상블이 된 csv 결과물 저장 폴더
  • config : 모델 설정 관련 yaml 파일
  • data : 학습 및 추론을 진행할 데이터 폴더 (여기에 train, dev, test 파일을 넣어야 합니다)
  • model : 모델 클래스가 존재하는 코드 + 모델 .pt 파일
  • output : 모델 학습 결과 csv 파일
  • util : 기타 유틸리티(dataset, dataloader, tokenizer) 코드
  • run.py : 학습 및 추론을 실행하는 코드
  • train.py : 학습을 실행하는 코드
  • inference.py : 추론을 실행하는 코드
  • ensemble.py : 앙상블을 실행하는 코드

📁 보충 설명

  1. path, 하이퍼파라미터 값과 같은 것은 전부 config.yaml에서 관리합니다.
  2. config.yaml에 존재하는 모델 목록이 전부 run.py에서 for문을 돌려서 학습을 진행합니다.
    따라서 모델을 변경할 때 yaml에 주석을 이용해주세요
  3. 앙상블은 config.yaml의 ensemble_weight을 잘 조절해 주세요. 길이가 다르면 자동으로 Soft Voting을 진행합니다.
  4. 오류나 질문은 git issue를 통해 남겨주세요

📦 Installation

  1. pip install -r requirements.txt
  2. Put train, dev, test csv files at /src/data directory
  3. Put sample_submission.csv at /src/output directory
  4. Set models and augmentation methods on config.yaml
  5. Execute run.py

About

level1-semantictextsimilarity-nlp-15 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages