boostcampaitech3 / final-project-level3-nlp-09

네이버 부스트캠프 | 회의록을 활용한 Closed-Domain Question Answering(CDQA)
8 stars 5 forks source link

데이터) 후처리 #55

Closed wogkr810 closed 2 years ago

wogkr810 commented 2 years ago

Task 수행 이유 : 데이터셋 구축이 완료되고, Train후에 Inference 를 했을 때, 송지 , 이은, . 2008년 2월 9일 등의 완전하지 않은 문장 또는 공백과 특수기호가 포함된 답변을 확인할 수 있다. 실제 서비스에 적용한다는 점을 고려할 때, 예측 답안의 확률과 no_answer을 고려한 답변이 출력되어야 하므로 후처리를 진행했다.

목표 : 서비스단에서 답변을 예측할 때 낮은 확률로 예측하는 답변은 다른 답변을 추천하며, 특수기호가 포함된 답변은 정제하여 올바른 답변을 출력한다.

wogkr810 commented 2 years ago

후처리 함수 이용


Test.csv와의 prediction.json을 비교하여 EM과 F1 score를 측정하는것은 SQuAD의 evaluate.py를 이용하며, 후처리는 우리의 데이터셋에 맞게 KorQuAD의 evaluate.py를 적용했다.

실험결과

유형 EM F1
SOTA 63.64 78.12
KorQuAD 61.69 77.50
KorQuAD(괄호 보존) 63.64 78.12
wogkr810 commented 2 years ago

완전하지 않은 답변


현재 SOTA 데이터셋 및 모델 기준으로, 완전하지 않은 답변은 크게 두가지로 나뉜다.

등의 답변이 육안으로 확인 가능하고, 밑의 방법으로 후처리를 시도할 수 있다.


룰 베이스

구축한 데이터셋을 기준으로 구성원을 잘 맞추지 못하는 경우는 숫자를 포함하지 않으며 길이가 2 이하인 답변이므로 룰베이스로 처리해줄 수 있다. 하지만, 실제 서비스를 고려할 경우에는 적합하지 않다.

확률 기반

Top-k 파라미터를 3으로 정했지만, 3가지 답변의 확률이 특정 임계값을 넘지 않는 경우, no_answer 답변으로 처리한다.

Korquad 평가 방법

현재 submission.py를 통한 성능 측정은 어절 단위로 구분되어 있지만, 한국어 특성을 고려한다면 밑의 이미지와 같이 KorQuAD의 기준을 따라 음절 단위로 구분하여 새롭게 평가할 수 있다.

korquad metric


결론 : 서비스를 고려하여 후처리를 진행해야 하지만, 구축한 데이터셋과 실제로 서비스에 적용할 데이터의 차이를 극복해야 하기에 추후 해결 방안으로 두었고, 위의 3가지 방법을 적용할 수 있을 것이다.