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