Skip to content

boostcampaitech7/level2-mrc-nlp-15

Repository files navigation

πŸ† LV.2 NLP ν”„λ‘œμ νŠΈ : Open-Domain Question Answering

✏️ λŒ€νšŒ μ†Œκ°œ

νŠΉμ§• μ„€λͺ…
λŒ€νšŒ 주제 넀이버 λΆ€μŠ€νŠΈμΊ ν”„ AI Tech 7κΈ° NLP Track의 Level 2 도메인 기초 λŒ€νšŒ 'Open-Domain Question Answering (Machine Reading Comprehension)'μž…λ‹ˆλ‹€.
λŒ€νšŒ μ„€λͺ… μ£Όμ–΄μ§€λŠ” Documents의 λ‚΄μš©μ„ 기반으둜 질문이 주어지면, κ·Έ μ§ˆλ¬Έμ— λŒ€ν•œ μ •ν™•ν•œ 닡변을 λ¬Έμ„œμ—μ„œ μ°Ύμ•„λ‚΄λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.
데이터 ꡬ성 λ°μ΄ν„°λŠ” μœ„ν‚€ν”Όλ””μ•„μ˜ λ‚΄μš©μœΌλ‘œ λŒ€λΆ€λΆ„ 이루어진 λ¬Έμ„œ 데이터, 그리고 Questionκ³Ό Answer둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
평가 μ§€ν‘œ 닡변을 μ •ν™•νžˆ μΆ”μΆœν•˜λŠ”μ§€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ EM(Exact Match) μ§€ν‘œκ°€ μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

πŸŽ–οΈ Leader Board

ν”„λ‘œμ νŠΈ κ²°κ³Ό Public λ¦¬λ”λ³΄λ“œ 2λ“±, Private λ¦¬λ”λ³΄λ“œ 2등을 κΈ°λ‘ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ₯ˆ Public Leader Board (2μœ„)

leaderboard_mid

πŸ₯ˆ Private Leader Board (2μœ„)

leaderboard_final

πŸ‘¨β€πŸ’» 15μ‘°κ°€μ‹­μ˜€μ‘° 멀버

κΉ€μ§„μž¬ λ°•κ·œνƒœ μœ€μ„ μ›… 이정민 μž„ν•œνƒ
κΉ€μ§„μž¬ λ°•κ·œνƒœ μœ€μ„ μ›… 이정민 μž„ν•œνƒ

πŸ‘Ό μ—­ν•  λΆ„λ‹΄

νŒ€μ› μ—­ν• 
κΉ€μ§„μž¬ (νŒ€μž₯) 베이슀라인 μ½”λ“œ μž‘μ„± 및 κ°œμ„ , ν”„λ‘œμ νŠΈ λ§€λ‹ˆμ§• 및 ν™˜κ²½ 관리, 쑰사 μ „μ²˜λ¦¬ μ•Œκ³ λ¦¬μ¦˜ 개발, μƒˆλ‘œμš΄ μ ‘κ·Ό 방법둠 μ œμ•ˆ, 앙상블
λ°•κ·œνƒœ 데이터 νŠΉμ„± 뢄석, EDA, Retrieval κ΅¬ν˜„, 비ꡐ μ‹€ν—˜ 및 κ°œμ„ (ν•˜μ΄λΈŒλ¦¬λ“œ μ„œμΉ˜. Re-ranking, Dense, SPLADE λ“±λ“±), Reader λͺ¨λΈ νŒŒμΈνŠœλ‹
μœ€μ„ μ›… KorQuAD 1.0 데이터 증강, λͺ¨λΈ νŒŒμΈνŠœλ‹, Reader λͺ¨λΈ κ°œμ„ (CNN layer μΆ”κ°€), Retrieval λͺ¨λΈ κ΅¬ν˜„(BM25), 앙상블
이정민 데이터 증강 (AEDA, Truncation λ“±), Question 데이터셋 νŠœλ‹, Korquad 데이터셋 νŠœλ‹
μž„ν•œνƒ EDA, Retrieval λͺ¨λΈ κ°œμ„ (BM25Plus, Re-ranking ν•˜μ΄νΌνŒŒλΌλ―Έν„° μ΅œμ ν™”), Reader λͺ¨λΈ κ°œμ„ (PLM μ„ μ • 및 Trainer νŒŒλΌλ―Έν„° μ΅œμ ν™”)

πŸƒ ν”„λ‘œμ νŠΈ

πŸ–₯️ ν”„λ‘œμ νŠΈ κ°œμš”

κ°œμš” μ„€λͺ…
주제 기계 독해 MRC (Machine Reading Comprehension) 쀑 β€˜Open-Domain Question Answering’ λ₯Ό 주제둜, 주어진 μ§ˆμ˜μ™€ κ΄€λ ¨λœ λ¬Έμ„œλ₯Ό νƒμƒ‰ν•˜κ³ , ν•΄λ‹Ή λ¬Έμ„œμ—μ„œ μ μ ˆν•œ 닡변을 μ°Ύκ±°λ‚˜ μƒμ„±ν•˜λŠ” taskλ₯Ό μˆ˜ν–‰
ꡬ쑰 Retrieval 단계와 Reader λ‹¨κ³„μ˜ two-stage ꡬ쑰 μ‚¬μš©
평가 μ§€ν‘œ 평가 μ§€ν‘œλ‘œλŠ” EM Score(Exact Match Score)이 μ‚¬μš©λ˜μ—ˆκ³ , λͺ¨λΈμ΄ μ˜ˆμΈ‘ν•œ text와 μ •λ‹΅ textκ°€ κΈ€μž λ‹¨μœ„λ‘œ μ™„μ „νžˆ λ˜‘κ°™μ€ κ²½μš°μ—λ§Œ 점수 λΆ€μ—¬
개발 ν™˜κ²½ GPU : Tesla V100 Server 4λŒ€, IDE : Vscode, Jupyter Notebook
ν˜‘μ—… ν™˜κ²½ Notion(진행 상황 곡유), Github(μ½”λ“œ 및 데이터 곡유), Slack(μ‹€μ‹œκ°„ μ†Œν†΅), W&B(μ‹œκ°ν™”, ν•˜μ΄νΌνŒŒλΌλ―Έν„° νŠœλ‹)

πŸ“… ν”„λ‘œμ νŠΈ νƒ€μž„λΌμΈ

  • ν”„λ‘œμ νŠΈλŠ” 2024-09-30 ~ 2024-10-25κΉŒμ§€ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. νƒ€μž„λΌμΈ

πŸ•΅οΈ ν”„λ‘œμ νŠΈ 진행

  • ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° λ‹¨κ³„λ³„λ‘œ μ‹€ν—˜ν•˜μ—¬ μ μš©ν•œ λ‚΄μš©λ“€μ„ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.
ν”„λ‘œμ„ΈμŠ€ μ„€λͺ…
데이터 처리 AEDA, Swap Sentence, Truncation, Mecab을 ν™œμš©ν•œ Question κ°•μ‘°, LLM기반 μ‘°μ‚¬μ œκ±°
λͺ¨λΈ Finetuning Korquad dataset μΆ”κ°€, Korquad1 PLM에 Korquad2 데이터셋 fine-tuning
Retriever λͺ¨λΈ κ°œμ„  BM25Plus, DPR, Hybrid Search, Re-rank(2-stage)
Reader λͺ¨λΈ κ°œμ„  CNN Layer μΆ”κ°€, Head Customizing, Dropout, Learning rate νŠœλ‹
앙상블 방법 Soft Voting: nbest_predictions.jsonμ—μ„œ μ œκ³΅ν•˜λŠ” 단어별 ν™•λ₯ κ°’을 ν™œμš©ν•΄μ„œ, 각 νŒŒμΌμ—μ„œ λ‹¨μ–΄μ˜ ν™•λ₯ κ°’을 평균낸 ν›„ κ°€μž₯ 높은 값을 μ„ νƒν•˜λŠ” 방식

πŸ€– Ensemble

번호 λͺ¨λΈ+기법 EM(Public)
1 uomnf97+BM25+CNN 66.67
7 Curtis+CNN+dropout(only_FC_0.05)+BM25Plus 66.25
8 Curtis+Truncation 66.25
9 HANTAEK_hybrid_optuna_topk20(k1=1.84) 63.15
10 HANTAEK_hybrid_optuna_topk20(k1=0.73) 63.75
11 HANTAEK_hybrid_optuna_topk10(k1=0.73) 63.75
12 uomnf97+BM25 67.08
13 uomnf97+CNN+Re_rank500_20+Cosine 67.08
14 curtis+CNN+Re_rank_500_20 65.42
15 nlp04_finetuned+CNN+BM25Plus+epoch1_predictions 67.5

πŸ“ƒ Results

μ΅œμ’…μ œμΆœ Ensemble EM(Public) EM(Private)
O λͺ¨λΈ 7,8,9,10,11,12,13 1:1:1:1:1:2:3 앙상블 + 쑰사 LLM 77.08 71.11
O λͺ¨λΈ 14,8,15,10,11,12,13 1:1:1:1:2:3 앙상블 + 쑰사 LLM 77.08 71.67
λͺ¨λΈ 1,7,8,9,10,11,12 평균앙상블 + 쑰사 LLM 76.67 71.67
λͺ¨λΈ 7,8,9,10,11,12,13 1:1:1:2:2:2 앙상블 + 쑰사 LLM 76.67 70.83
1st SOTA λͺ¨λΈ 15,9,10,11,12,13 1:1:1:1:3:3 앙상블 + 쑰사 LLM 75.42 74.17
λͺ¨λΈ 7,8,9,10,11,12,13 1:1:1:1:2:3 앙상블 + 쑰사 LLM(n=5) 75.42 71.67
λͺ¨λΈ 7,8,9,10,11,12,13,14 1:1:1:1:2:2 앙상블 + 쑰사 LLM 74.58 71.11
2nd SOTA λͺ¨λΈ 14,8,9,10,11,12,13 1:1:1:1:2:3 앙상블 + 쑰사 LLM 74.58 72.22

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

ν”„λ‘œμ νŠΈ 폴더 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

level2-mrc-nlp-15
β”œβ”€β”€ data
β”‚   β”œβ”€β”€ test_dataset
β”‚   β”œβ”€β”€ train_dataset
β”‚   └── wikipedia_documents.json
β”œβ”€β”€ docs
β”‚   β”œβ”€β”€ github_official_logo.png
β”‚   β”œβ”€β”€ leaderboard_final.png
β”‚   └── leaderboard_mid.png
β”œβ”€β”€ models
β”œβ”€β”€ output
β”œβ”€β”€ README.md
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ run.py
└── src
    β”œβ”€β”€ arguments.py
    β”œβ”€β”€ CNN_layer_model.py
    β”œβ”€β”€ data_analysis.py
    β”œβ”€β”€ ensemble
    β”‚   β”œβ”€β”€ probs_voting_ensemble_n.py
    β”‚   β”œβ”€β”€ probs_voting_ensemble.py
    β”‚   └── scores_voting_ensemble.py
    β”œβ”€β”€ korquad_finetuning_v2.ipynb
    β”œβ”€β”€ main.py
    β”œβ”€β”€ optimize_retriever.py
    β”œβ”€β”€ preprocess_answer.ipynb
    β”œβ”€β”€ qa_trainer.py
    β”œβ”€β”€ retrieval_2s_rerank.py
    β”œβ”€β”€ retrieval_BM25.py
    β”œβ”€β”€ retrieval_Dense.py
    β”œβ”€β”€ retrieval_hybridsearch.py
    β”œβ”€β”€ retrieval.py
    β”œβ”€β”€ retrieval_SPLADE.py
    β”œβ”€β”€ retrieval_tfidf.py
    β”œβ”€β”€ utils.py
    └── wandb

πŸ“¦ src 폴더 ꡬ쑰 μ„€λͺ…

  • arguments.py : 데이터 증강을 ν•˜λŠ” 파일
  • CNN_layer_model.py : PLM에 CNN Layerλ₯Ό μΆ”κ°€ν•œ 클래슀 파일
  • data_analysis.py : 데이터셋을 λΆ„μ„ν•˜λŠ” 파일
  • ensemble : λͺ¨λΈ 앙상블을 ν•˜λŠ” 폴더 (Soft, Hard 지원)
  • main.py : λͺ¨λΈ train, eval, prediction 을 μˆ˜ν–‰ν•˜λŠ” 파일
  • optimize_retriever.py : λ¦¬νŠΈλ¦¬λ²„μ˜ ν•˜μ΄νΌνŒŒλΌλ―Έν„°λ₯Ό μ΅œμ ν™” ν•˜λŠ” 파일
  • qa_trainer.py : MRC Task에 λŒ€ν•œ μ»€μŠ€ν…€ Trainer 클래슀 파일
  • retrieval_2s_rerank.py : rerank λ¦¬νŠΈλ¦¬λ²„ 파일
  • retrieval_BM25.py : bm25 λ¦¬νŠΈλ¦¬λ²„ 파일
  • retrieval_Dense.py : DPR λ¦¬νŠΈλ¦¬λ²„ 파일
  • retrieval_hybridsearch.py : hybrid-search λ¦¬νŠΈλ¦¬λ²„ 파일
  • retrieval_SPLADE.py : SPLADE λ¦¬νŠΈλ¦¬λ²„ 파일
  • retrieval_tfidf.py : TF-IDF λ¦¬νŠΈλ¦¬λ²„ 파일

πŸ’Ύ Installation

  • python=3.10 ν™˜κ²½μ—μ„œ requirements.txtλ₯Ό pip둜 install ν•©λ‹ˆλ‹€. (pip install -r requirements.txt)
  • python run.pyλ₯Ό μž…λ ₯ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

About

level2-mrc-nlp-15 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published