한국어 대화 요약 데이터셋 정리 - Slime0519/Training_LM GitHub Wiki

한국어 대화 요약 데이터셋

  • 출처 : AIHub(상세 설명)
  • 이용 목적 : KoGPT2를 이용한 대화 모델 Training

구조

파일

  • 원래는 모두 한국어로 되어 있는 폴더명을 import를 위해 영어로 바꿈.
└─korean_dialog_summary
    ├─Training
    │  ├─label_kodialog_summary_train
    │  └─origin_kodialog_summary_train
    │      ├─개인및관계
    │      ├─미용과건강
    │      ├─상거래(쇼핑)
    │      ├─시사교육
    │      ├─식음료
    │      ├─여가생활
    │      ├─일과직업
    │      ├─주거와생활
    │      └─행사
    └─Validation
  • 총 용량 : 224MB(압축 파일로 다운로드 시)
  • 라벨/원천 데이터 간 차이가 뭔지 모르겠음.(큰 차이는 없는 것으로 보임)

JSON 구조

예제 이미지

  • 주제별로, 위와 같은 구조의 JSON 파일이 제공됨.
  • 실제 대화 데이터에 접근하려면, 여러 단계를 거쳐야 함.
# 라벨 데이터 - 개인 및 관계
jsondata['data'][0]['body']['dialogue'][0]['utterance']
# output : 양치하고 올께

가공

Masking

  • 개인정보나 Place등이 masking되어 있어 나중에 이 부분을 handling하는 것을 고민해봐야 할 것 같음.
  • Masking되어 있는 데이터들을 챗봇의 정체성에 맞게 임시로 바꿔주었음.(코드 링크 추가)

Input data 생성

short-dialog 생성

  • 위의 전처리를 끝내고, 전체 데이터셋을 Two-turn short dialog로 분할하여 분포를 그려보았다.
  • 생성 조건
1. QnA형식의 2-turn dialog형식으로 샘플링할 것.
2. 같은 dialogue에서 중복되는 utterance가 없이 샘플링할 것.(ex.이전 data의 answer != 다음 data의 question)
3. tokenizer로 인코딩 시, 인덱스 기준 길이 100이하인 샘플만 채택할 것

Input length 히스토그램

histogram_dialogclips

  • 데이터는 left-skew된 분포를 보이며, 추정하기로는 gamma distribution을 따르는 것으로 보인다.(Twitter Utterance data에 기반한 연구)
    • length가 100을 넘는 data는 모두 outlier로 간주하고 reject하였다.
    • Reference의 연구는 물론 Twitter dataset에 대해 수행한 것으로 보이지만 언어 도메인/짧은 일상 발화라는 특징을 공유하고 있기 때문에, 충분히 같은 방식의 접근법을 사용할 수 있을 것으로 보인다.