boostcampaitech2 / mrc-level2-nlp-02

mrc-level2-nlp-02 created by GitHub Classroom
0 stars 6 forks source link

Pstage_02_MRC

Solution for MRC Competitions in 2nd BoostCamp AI Tech 2기 by 메타몽팀 (2조)

Content

Competition Abstract

Result

EM F1 RANK
Public 74.580 83.100 3
Private 70.280 79.530 5

Hardware

Operating System

Archive Contents

mrc-level2-nlp-02/
├── utils
│   ├── crawling_papago_rtt.ipynb
│   ├── nbest_ensemble.ipynb
│   ├── Question type Tagging.ipynb
│   ├── question_generation.ipynb
│   └── use_ner.ipynb
├── data
│   ├── papago_ner.csv
│   ├── question_generation.csv
│   ├── question_tag_rtt_papago_ner.csv
│   ├── question_tag_testset.csv
│   ├── question_tag_trainset.csv
│   ├── question_tag_validset.csv
│   ├── trainset_rtt_papago.csv
│   └── trainset_rtt_pororo.csv
├── arguments.py
├── custom_tokenizer.py
├── inference.py
├── inference_k_fold.py
├── preprocessor.py
├── rt_bm25.py
├── train.py
├── train_k_fold.py
├── trainer_qa.py
└── utils_qa.py

Getting Started

Dependencies

Install Requirements

sh requirement_install.sh

Arguments

Model Arguments

argument description default
model_name_or_path 사용할 모델 선택 klue/roberta-large
rt_model_name 사용할 모델 선택 klue/bert-base
config_name Pretrained된 model config 경로 klue/roberta-large
tokenizer_name customized tokenizer 경로 선택 None
customized_tokenizer_flag customized roberta tokenizer 로드하기 False
k_fold K-fold validation의 k 선택 5

DataTrainingArguments

argument description default
dataset_name 사용할 데이터셋 이름 지정 /opt/ml/data/train_dataset
overwrite_cache 캐시된 training과 evaluation set을 overwrite하기 False
preprocessing_num_workers 전처리동안 사용할 prcoess 수 지정 2
max_seq_length Sequence 길이 지정 384
pad_to_max_length max_seq_length에 모든 샘플 패딩할지 결정 True
doc_stride 얼마나 stride할지 결정 128
max_answer_length answer text 생성 최대 길이 설정 30
eval_retrieval 원하는 retrieval 선택 sparse
num_clusters faiss 사용 시, cluster 갯수 지정 64
top_k_retrieval retrieve 시, 유사도 top k만큼의 passage 정의 50
score_ratio score ratio 정의 0
train_retrieval sparse/dense embedding을 train에 사용 유무 결정 False
data_selected context or answers or question 중, 추가할 Unknown token 설정 ""
rtt_dataset_name RTT data path 설정 None
preprocessing_pattern 원하는 전처리 선택 None
add_special_tokens_flag special token 추가 False
add_special_tokens_query_flag Question type에 관한 speical token 추가 False
retrieve_pickle pickle file 넣기 ''
another_scheduler_flag 다른 scheduler 사용 False
num_cycles cosine schedule with warmup cycle 설정 1

LoggingArguments

argument description default
wandb_name wandb에 기록될 모델의 이름 model/roberta
dotenv_path wandb key값을 등록하는 파일의 경로 ./wandb.env
project_name wandb에 기록될 project name False

Running Command

Train

$ python train.py --output_dir ./models --do_train --preprocessing_pattern 0 --add_special_tokens_query_flag True

Reader evaluation

$ python train.py --output_dir ./outputs --do_eval --model_name_or_path ./models --preprocessing_pattern 0 --add_special_tokens_query_flag True

ODQA evaluation

$ python inference.py --output_dir ./outputs --do_eval --model_name_or_path ./models --preprocessing_pattern 0 --add_special_tokens_query_flag True --top_k_retrieval 100 --score_ratio 0.85

Inference prediction

$ python inference.py --output_dir ./outputs --do_predict --model_name_or_path ./models --preprocessing_pattern 0 --add_special_tokens_query_flag True  --dataset_name ../data/test_dataset/ --top_k_retrieval 100 --score_ratio 0.85

Soft-voting Ensemble

단일 모델의 결과 nbest_predictions.json 파일들에서 probability 기반 soft-voting 하여 최종 ensemble 결과 json을 생성합니다.

Hard-voting Ensemble

단일 모델의 결과 predictions.json 파일들에서 빈도 기반 hard-voting 하여 최종 ensemble 결과 json을 생성합니다.

utils/nbest_ensemble.ipynb

Reference

  1. Dense Passage Retrieval for Open-Domain Question Answering

    https://arxiv.org/abs/2004.04906

  2. Passage Re-Ranking With BERT

    https://arxiv.org/pdf/1901.04085.pdf

  3. Latent Retrieval for Weekly Supervised Open Domain Question Answering

    https://arxiv.org/pdf/1906.00300.pdf

  4. Cheap and Good? : Simple and Effective Data Augmentation for Low Source Machine Reading

    https://arxiv.org/abs/2106.04134

  5. How NLP Can Improve Question Answering

    https://core.ac.uk/download/pdf/31832115.pdf