Day1(2.14, 월)

TO-DO

  • 데이터 검증

  • 베이스라인 돌리기

  • 아이디어 수집

Today's Work

1. 데이터 검증

우선 EDA 과정을 하기에 앞서 기본적인 데이터의 생김새와 어떤 데이터 셋을 활용했는지 알아보자.

  • 이번 경진대회는 Natural Language Inference Dataset을 활용합니다. (출처: https://klue-benchmark.com/tasks/68/overview/description)

공고와 같이 학습데이터 셋은 KLUE의 NLI Task 데이터를 그대로 사용하였으며, 필요한 데이터인 premise와 hypothesis, label 값으로 구성되어있다. KLUE의 데이터 셋의 경우 라벨링 작업자 5명이 입력한 label 값이 있다.

추가로 사용가능한 데이터로는 KLUE 홈페이지의 dev 용 데이터셋도 활용이 가능한것으로 알게되었고,실제 test 데이터의 경우에는 데이콘 측에서 직접 hypothesis 를 작성하였다고 한다. 실제로 premise는 동일하게 있는것을 많이 확인할 수 있었다.

데이터를 육안으로 보건데 한글위주로 구성되어있었으며, 맞춤법 또한 꽤 잘 맞춰져 있는 것을 확인할 수 있었고, 단지 띄어쓰기가 잘 안되어있는 케이스가 있었다. -> 추후 코드로 전수 체크할 것.

  • label: entailment(참), contradiction(거짓), neutral(알수없음), answer(미입력상태)

로 총 3가지 class로 분류하는 classification 문제로 접근하면 된다.

2. Baseline 돌리기

주어진 Baseline의 코드를 이해하고, 1회 기본제출을 목표로 하였다.

  • SKTBrain에서 만든 PLM 모델 KoBERT를 활용

  • BERTSPTokenizer 사용

  • accuracy 0.686점 확인.

3. 아이디어 수집

1) Proro 모델로 추론해보기

  • 지난 대회에서도 사용했던 Proro의 NLI 모델로 추론해보기

2) SOTA모델 찾아보기(KLUE, Paperswithcode)

역시 Roberta-large 최고...!!

3) 맞춤법 교정 후 학습

  • 아무래도 학습시 tokenizing하는 과정이 맞춤법이 틀리면 달라지기 때문에 시도해 볼만할 것 같다.

4) premise랑 hypothesis 바꿔서 학습❌

  • 어차피 두문장의 관계이기 때문에 A[SEP]B -> B[SEP]A 로 해보는것도 괜찮을 듯

  • ❌ 관계가 아니라, A를 통해 알수있는 사실인지여서 의미가 없을듯..

5) 다른 언어로 변환해서 진행(Kor -> Eng)

  • 영어로 번역하여 추론하는 것도 좋은 방법이 될 것같다.

  • 단지, 번역모델의 성능이 얼마나 좋을지가 문제가 아닐지...

회고

부스트캠프에서 오래동안 했지만, 또 한동안 쉬다가 하게 된 대회여서 데이터를 보고 이런저런 생각을 하는 시간이 즐거웠다. 단지, 코드를 이렇게 짜야겠다가 바로 생각나질 않아서 기존 코드를 많이 참고하면서 구현해봐야겠다.

Last updated