/level2_nlp_mrc-nlp-04

level2_nlp_mrc-nlp-04 created by GitHub Classroom

Primary LanguageJupyter Notebook

πŸ—“οΈ 개발 κΈ°κ°„

23.06.07 - 23.06.22(총 16일)

πŸ“„ ν”„λ‘œμ νŠΈ μ†Œκ°œ

  • 지문이 주어지지 μ•Šκ³ , 사전에 κ΅¬μΆ•λ˜μ–΄ μžˆλŠ” λ¬Έμ„œ λ‚΄μ—μ„œ μ§ˆλ¬Έμ— λŒ€ν•œ μ •ν™•ν•œ 닡변을 ν•˜λŠ” λͺ¨λΈμ„ λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ ν•œλ‹€.
  • λ”°λΌμ„œ, μ§ˆλ¬Έμ— λŒ€ν•œ 정닡이 ν¬ν•¨λ˜μ–΄ μžˆλŠ” λ¬Έμ„œλ₯Ό μ°ΎκΈ° μœ„ν•œ Retrieval Modelκ³Ό 찾은 λ¬Έμ„œ λ‚΄μ—μ„œ μ§ˆλ¬Έμ— λŒ€ν•œ 닡변을 μ°ΎκΈ° μœ„ν•œ Reader Model둜 2-Stage둜 문제λ₯Ό ν•΄κ²°ν•œλ‹€.

πŸ’½ μ‚¬μš© 데이터셋

  • Train Data : 3,952개(train) / 240개(validation) Test Data : 240개(public) / 360개(private) 둜 데이터가 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • Train DataλŠ” id(질문의 고유 id), question(질문), context(닡변이 ν¬ν•¨λœ λ¬Έμ„œ), answers(닡변에 λŒ€ν•œ 정보), document_id(λ¬Έμ„œμ˜ 고유id), title(λ¬Έμ„œμ˜ 제λͺ©) 컬럼으둜 κ΅¬μ„±λ˜μ–΄ 있고, Test DataλŠ” id, question 만 κ³΅κ°œλ˜μ–΄ μžˆλ‹€.

πŸ“‹ν‰κ°€ μ§€ν‘œ

  • Exact Match(EM) : λͺ¨λΈμ˜ 예츑과 μ‹€μ œ 정닡이 μ •ν™•ν•˜κ²Œ μΌμΉ˜ν•˜λŠ” λΉ„μœ¨μ— λŒ€ν•œ μ μˆ˜μ΄λ‹€. 특수문자 등을 μ œμ™Έν•˜κ³  μ •ν™•ν•˜κ²Œ μΌμΉ˜ν•˜λ©΄ 1점, μ•„λ‹ˆλΌλ©΄ 0점을 λΆ€μ—¬ν•¨μœΌλ‘œμ¨ ν•΄λ‹Ή μ§€ν‘œλ₯Ό μΈ‘μ •ν•œλ‹€.
  • F1 Score : EMκ³ΌλŠ” λ‹€λ₯΄κ²Œ λΆ€λΆ„ 점수λ₯Ό μΈ‘μ •ν•œλ‹€. μ •ν™•νžˆ 같은 μœ„μΉ˜κ°€ μ•„λ‹ˆλ”λΌλ„ κ²ΉμΉ˜λŠ” 단어가 μžˆλ‹€λ©΄ λΆ€λΆ„ 점수λ₯Ό 받을 수 μžˆλ‹€.

πŸ‘¨β€πŸ‘¨β€πŸ‘§β€πŸ‘§ 멀버 ꡬ성 및 μ—­ν• 

곽민석 이인균 μž„ν•˜λ¦Ό 졜휘민 ν™©μœ€κΈ°
  • 곽민석
    • Reader λͺ¨λΈ 데이터 증강, Elastic Search κ΅¬ν˜„ 및 적용
  • 이인균
    • Retriever λͺ¨λΈ(DPR) κ΅¬ν˜„ 및 κ°œμ„ , Reader λͺ¨λΈ κ°œμ„ 
  • μž„ν•˜λ¦Ό
    • Retriever λͺ¨λΈ(BM25) κ΅¬ν˜„, Context μ „μ²˜λ¦¬
  • 졜휘민
    • Reader λͺ¨λΈ κ°œμ„ , Question Generation κ΅¬ν˜„,  Ensemble κ΅¬ν˜„
  • ν™©μœ€κΈ°
    • Retriever λͺ¨λΈ(DPR) κ΅¬ν˜„, Re-Rank κ΅¬ν˜„

βš’οΈ κΈ°λŠ₯ 및 μ‚¬μš© λͺ¨λΈ

Retrieval λͺ¨λΈ

  • 수 λ§Œκ°œμ— λ‹¬ν•˜λŠ” μœ„ν‚€ν”Όλ””μ•„ λ¬Έμ„œ μ€‘μ—μ„œ 주어진 μ§ˆλ¬Έμ— λŒ€ν•œ 정닡이 μ ν˜€μžˆλŠ” λ¬Έμ„œλ₯Ό νƒμƒ‰ν•œλ‹€.
  • κΈ€μ˜ μž„λ² λ”© 정보λ₯Ό ν™œμš©ν•˜λŠ” DPR λͺ¨λΈκ³Ό κΈ€μ˜ ν‘œλ©΄μ μΈ λ‹¨μ–΄μ˜ 일치 μ—¬λΆ€λ₯Ό ν™œμš©ν•˜λŠ” BM25 λͺ¨λΈμ„ μ΄μš©ν•œλ‹€. BM-25 둜 좔렀진 닡변을 DPR λͺ¨λΈμ„ μ΄μš©ν•΄ Re-Rank ν•œλ‹€.

Reader λͺ¨λΈ

  • Retrieval λͺ¨λΈμ„ 톡해 μ„ νƒλœ λ¬Έμ„œμ˜ λ‚΄μš© μ†μ—μ„œ μ§ˆλ¬Έμ— λŒ€ν•œ 닡변을 μ°ΎλŠ”λ‹€.
  • klue/roberta-large λͺ¨λΈμ„ ν•˜μ΄νΌνŒŒλΌλ―Έν„° νŠœλ‹ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

β”œβ”€β”€ Trainer_DPR_Example.ipynb
β”œβ”€β”€ arguments.py       
β”œβ”€β”€ dpr
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ cls_Encoder.py 
β”‚   └── trainer_DPR.py 
β”œβ”€β”€ dpr_retrieval.py   
β”œβ”€β”€ inference.py       
β”œβ”€β”€ main.py            
β”œβ”€β”€ preprocessing
β”‚   └── dataset_preprocessing.py
β”œβ”€β”€ reader.py
β”œβ”€β”€ retrieval.py
β”œβ”€β”€ train.py
β”œβ”€β”€ trainer_qa.py
β”œβ”€β”€ utils.py
β”œβ”€β”€ utils_qa.py
β”œβ”€β”€ Readme.md
└── github_utils
    └── markdown_to_notion.py

πŸ”— λ§ν¬