Day3 (9.30, 목)

  • 추론으로 나온 데이터를 정제해서 저장하기

  • min size, max size 조정해보기

결론부터 말하자면 SOTA 모델을 찾아서 상위권(안전권)에 주차하였다. 동현님이 시도한 pororo의 Text summarization 이 상위권 점수를 얻을 수 있었다.

from pororo import Pororo
import pandas as pd
from tqdm import tqdm

if __name__ == "__main__":
    model = Pororo(task = "summarization", model = "abstractive", lang="ko")

    data = pd.read_csv("../dataset/test_data.csv")
    texts = data['text'].to_list()

    summ = []
    for text in tqdm(texts):
        summ.append(model(text))

    submission = pd.DataFrame()
    submission['id'] = data['id']
    submission['summary'] = summ

    submission.to_csv("abstractive.csv",index=False)
  • torch version 1.9

조금 의문이 들었던 점은 함께 하고 있는 팀원들 중에 pororo와 마찬가지로 Kobart 기반에 Dacon summarization corpus + ai hub summerization corpus 를 사용한 여러 모델 (gogamza) 들은 저만큼의 성능이 나오지 않았다는 점이다.

pre-trained 모델별로 차이를 가지는 가장 큰 요인은

  • 학습 데이터의 차이

  • data representation (전처리기법, corruption 방식)

  • 모델 구조 - capacity 를 결정하는부분

  • optm, loss, epoch ...

  • auto regressive 한 모델은 decoder 알고리즘

    • 빔서치, 그리디서치 etc

라고 한다. 이런부분에서 차이가 있었지 않을까 싶다.

추가로 Usurper 님의 EDA를 공유해주셔서 그 내용과 우리가 고민한 부분이 상당부분 일치하였고, 관련하여 정리해 보았다.

  • text 보다 summary가 큰 경우가 반정도이다.

    • extractive summarization(ext) 이 될 수 없다.

  • train set 보다 test set text의 길이가 대체로 길게 형성되어 있다.

  • train 데이터의 summary가 오타, 추가정보, 맞지않은 내용 등이 다수 포함되어있다.

우리는 그래도 train 데이터를 포함시켜야 하지않을까 고민을 했는데, 과감히 이 데이터를 포기하는 것이 오히려 좋다는 결론에 다다르게 되었다. Pre-trained 모델의 성능을 저하 시킬 뿐이다.

결국 주어진 시간동안 다양한 Pre-trained summarization 모델을 사용해서 추론과정만 진행해보는 것이 높은 점수를 얻을 수 있는 방법이라고 생각하게 되었다.

시도한 것 중에 특이한 것 하나는 이메일이나 불필요하다고 생각된 특수기호등을 전처리하고 추론한것보다 아무런 작업을 하지 않고 추론한것이 더 높은 점수를 얻었다는 것이다....

이 테스트는 다양한 모델을 얼마나 잘 가져다가 추론할 수 있는지를 보고자 한 것이었을까....

아래 모델은 Usurper 님의 글에 추천해주신 모델리스트이다. ✔우리 팀이 시도한 것

  1. ✔단순 발췌 모델: 앞 문장부터 ~ 개의 단어를 그대로 가져오기

  2. xlm-robarta-large 계열 ext 모델

제출

3차 제출

  • kobart-news 를 활용

  • 출력값 수정 실시

    • 데이터에 불필요한 개행문자가 더러 들어간 것을 확인 -> 이를 제거하기로 함

첫번째 평가지표는 상승했지만 2번째, 3번째는 오히려 떨어진것을 확인할 수 있었다. 미미한 차이로 크게 의미없는 후처리임을 깨달을 수 있었다.

Last updated