Day5 (10.1, 금)

  • 데이터 EDA 진행

  • 오피스아워 토대로 어떤걸 진행해볼지 고민해보기

작업 결과물

1. 오피스아워에서 테스트 해보고 싶은 방법론 고르기

오피스아워 (9.30, 목)

1.1. Using Special Token

  1. Typed entity marker: [ent]가 아닌 entity type으로 token 표현하기

  2. Typed entity marker(punct): special token이 아니라 문장부호를 사용해서 해보기

위 과정을 진행하기 앞서 EDA를 진행하여 데이터분포 및 상태를 체크해보았다. Day4와 달리 pandas를 활용하여 전체적인 분포를 체크

1.2. Data Augmentation

  • AEDA: An Easier Data Augmentation Technique for Text Classification

    • 단어가 아닌 무작위로 문장부호를 넣고 이를 학습데이터로 한다.

    • 추가하는 문장은 [0, 전체단어의 갯수의 1/3] 내에서 무작위로 추출

2. EDA

저작권 문제로 직접적인 데이터는 표시 못함.

2.1. Label Class 분포 불균형

보다 시피 no_relation이 타 class에 배해 양이 많은것을 확인 할 수 있다. 데이터 불균형 문제를 해소 하기 위해 적은 class의 데이터를 증강하고 no_relation 은 줄여주는 방법을 고민해봐야 할 것 같다. 실제로 test dataset에도 분포가 이와 같다면 사실 데이터 불균형을 해소하는 것이 좋은 추론을 하는지 알 수 없기에 train / validation을 나누고 train에서 증강과 축소 작업을 진행해서 검증하는 단계를 거쳐야 할 것으로 보인다.

2.2. Entity Type 정의 및 분포 확인

이 데이터를 보고 들었던 생각은 label class를 정의내릴때 이 Entity Type의 종류로 정의를 내릴 수 있겠다는 생각이 들었다. 예를 들어 per:date_of_birth 클래스는 (PER, DAT) 로 구성되어있을 것이다 라는 것이다. 하지만 이를 검증하는 과정에서 type이 제대로 만들어지지 않았음을 확인할 수 있었다.

per:children class의 경우는 (PER, PER)로 구성되야 할 것이다. 하지만 전혀 연관이 없는 LOC나 NOH, DAT, ORG, POH등이 있었고, 만약 Typed entity marker을 하게 된다면 이런 type을 가진 데이터는 제외하고 진행해야할 것이다.

또 특이한 점으로는 AI-Stage의 타 캠퍼분이 올려주신 내용중 entity가 한글, 영어, 숫자 이외의 data가 들어있음을 확인할 수 있었다. tokenizer 방식에 이런 일어나 한문에 대한 값이 없다면 이들도 제외하는게 맞을 수도 있겠다는 생각이 들었다.

데이터 증강에 대한 아이디어

피어세션을 통해 나온 아이디어로 부족한 class에 대해서 그에 해당하는 단어를 임의의 문장에 붙여넣거나 subject, object entity 위치에 대체하는 방식으로 증강을 시도해 볼 수 있도록 한다.

3. Training Idea

  • 2(n)-Step 학습

    • relation check -> (PER, ORG 체크) -> (type별 체크) -> class 분류

    • 이미지 분류 대회에서와 같이 분류를 세분화하여 나누면 성능향상에 도움이 되지않을까 싶다.

    • 단, submission 시에 확률값으로 추출하여야 하므로 계산식 구현이 필요하다.

  • 여러 pre-trained 모델을 통한 학습

    • "훈민정음 요약 대회"를 통해 느낀바로 pre-trained 모델을 선정하는 것이 큰 영향을 준다고 생각이 되었다. 다양한 모델을 테스트하며 주어진 dataset에 잘 맞는 모델을 찾아본다.

Summary

오늘은 연휴간 진행할 내용들에 대해 정리하는 시간을 가졌고, 주말동안 위에서 나온 아이디어들을 바탕으로 다양한 테스트를 진행하고자 한다.

Last updated