-
Notifications
You must be signed in to change notification settings - Fork 2
AI_hub_data_preprocessing
KwonTaeYang edited this page May 24, 2021
·
3 revisions
- 대회에서 제공받은 train data로만 학습할 경우 데이터의 수가 약 4000개로 overfitting 될 가능성이 있다고 판단
- Squad dataset으로 pretrain한 결과 대회에서 제공받은 문제보다 쉬워 모델이 대회에서 제공받은 어려운 문제에 대해서는 학습이 잘 되지 않음
- 기계독해 개발에 활용될 수 있는 뉴스 본문 기반 학습 데이터셋 45만 건 중 질문과 답이 존재하는 25만 건의 데이터만 사용
- 참고
import json
# json file load
# 경로 확인 필요
with open("ko_nia_normal_squad_all.json", encoding="utf-8") as json_file:
json_data = json.load(json_file)
#########################################################################################
# json to datasets class
class ToDatasets:
def __init__(self):
self.data = {}
def __call__(self, data, index_num):
# title
self.data["title"] = data["title"]
# context
self.data["context"] = data["paragraphs"][0]["context"]
# MRC에서만 적용한다면 필요없는 data
self.data["document_id"] = 70000 + index_num
result = []
# question 갯수 만큼 iteration
for temp_question in data["paragraphs"][0]["qas"]:
temp_data = self.data.copy() # dictionary(mutable)이므로 copy
temp_data["id"] = temp_question["id"]
temp_data["question"] = temp_question["question"]
temp_answer = {}
for k, v in temp_question["answers"][0].items():
temp_answer[k] = [v]
temp_data["answer"] = temp_answer
result.append(temp_data)
return result
#########################################################################################
# Dataset에 필요한 value를 list에 저장
title_list = []
context_list = []
id_list = []
question_list = []
answer_list = []
document_id_list = []
for i in range(len(json_data["data"])):
temp_dataset = ToDatasets()
for temp_data in temp_dataset(json_data["data"][i], i):
id_list.append(temp_data["id"])
title_list.append(temp_data["title"])
context_list.append(temp_data["context"])
question_list.append(temp_data["question"])
answer_list.append(temp_data["answer"])
document_id_list.append(temp_data["document_id"])
# 모두 동일한 크기인지 check
print(len(id_list), len(title_list), len(context_list), len(question_list), len(answer_list), len(document_id_list))
#########################################################################################
# 필요 library import
from datasets import Dataset
# dictionary to Dataset
team_ikyo_dataset = Dataset.from_dict({"id" : id_list,
"title": title_list,
"context": context_list,
"question": question_list,
"answer": answer_list,
"document_id": document_id_list})
# check data load
team_ikyo_dataset
"""
Dataset({
features: ['id', 'title', 'context', 'question', 'answer', 'document_id'],
num_rows: 243425
})
"""