KorQuAD 데이터셋에 대한 개요

1. introduction

 

영어 MRC의 대표적인 dataset은 SQuAD가 있는데 KorQuAD는 LG CNS에서 개발한 데이터셋으로 이와 비슷하게 구성함

 

그래서 영어에서 쓰이는 모델을 그대로 가져와서 한국어에도 쓸 수 있게 도와준 데이터셋

 

LG CNS가 AI 언어지능 연구를 위해 공개한 질의응답/기계독해 한국어 데이터셋으로

 

인공지능이 한국어 질문에 대한 답변을 하도록 필요한 학습 데이터셋

 

1550개 위키피디아 문서에 대해 하위 10649건 문서들과 크라우드 소싱으로 만든 63952개의 질의응답 쌍으로 구성

 

train 60407, val 5774, test 3898 3등분으로 나뉨

 

라이센스가 자유로워 누구나 데이터를 내려받고, 학습한 모델을 제출하고 공개된 리더보드에 평가를 받을 수 있음

 

객관적인 기준을 가진 연구 결과를 공유할 수 있음

 

 

 

 

KorQuAD는 1.0과 2.0버전이 있는데 2.0버전은 복잡하면서도 긴 데이터로 구성되어 있고

 

단순 자연어 뿐만아니라 표나 리스트같은 것도 구성되어 HTML형태로 표현되어 있음

 

문서 전체 구조에 대한 이해를 필요로하는 상당히 까다로운 문제임

 

 

2. 데이터 수집 방법

 

SQuAD 수집방법을 벤치마킹하여 표준성을 확보함

 

 

 

 

대상 위키피디아 문서에서 적절한 전처리로 문서를 수집하고

 

크라우드소싱(기업활동을 대중에게 참여할수있도록 일부를 개방하는 일)을 통해 문서에 대한 질문을 생성하게 함

 

다른 사람들에게는 이 문서를 보고 질문에 대한 답을 생성하게 함

 

질문을 생성한 사람이 이 답을 보고 자기가 생각했던 것과 잘 맞는지 확인하는 과정을 거침

 

이 과정에서 양질의 질의응답 쌍을 생성하기 위한 적절한 가이드라인을 따랐다.

 

이렇게 생성한 질의응답쌍을 통해 참여하지 않은 다른 사람들에게 사용하여 인간의 성능을 측정하는 과정도 거쳤음

 

 

3. 사용하는 방법?

 

https://korquad.github.io/

 

KorQuAD

What is KorQuAD 2.0? KorQuAD 2.0은 KorQuAD 1.0에서 질문답변 20,000+ 쌍을 포함하여 총 100,000+ 쌍으로 구성된 한국어 Machine Reading Comprehension 데이터셋 입니다. KorQuAD 1.0과는 다르게 1~2 문단이 아닌 Wikipedia artic

korquad.github.io

 

 

보통은 huggingface라는 라이브러리에서 정제시켜놓은 데이터셋을 활용함

 

다운받기도 쉽고 사용하는 방법도 쉬워

 

from datasets import load_dataset
dataset = load_dataset('squad_kor_v1',split = 'train')

 

 

load_dataset으로부터(아마 huggingface에서 제공하는것일듯?) ‘squad_kor_v1’해서 KorQuAD 1.0가져오고

 

split=’train’하면 아까 3등분한 데이터셋중 train set만 가져오는 것이겠죠?

 

심지어 다른 데이터셋들과 비슷하게 구성해놓은 덕분에 KorQuAD를 위해 모델을 만들어도 아주 쉽게 다른 데이터셋에도 적용이 가능함?

 

numpy, pandas, pytorch, tensorflow2 등에서도 쉽게 호환

 

데이터 로드시 비효율적 메모리 공간 부족이나 전처리 과정 반복의 번거로움을 피할 수 있다

 

 

4. 실제 생긴 모습

 

제목과 지문, question-answer pairs로 구성

 

 

 

여기서 재밌는 부분은 question-answer pairs에서 answer_start인데

 

KorQuAD는 지문내에 명시적으로 정답이 존재해서 어디 chr부터 시작하는 것인지 표시해주는 값

 

이것이 중요한 이유는 사실 지문 내에 정답과 동일한 (예를 들어 ‘국무장관’은 보이는 것만 해도 2개임) 단어들이 여러개 나올 수 있는데

 

심지어 여러개 나온다고 하더라도 어떤 문맥을 통해 정답으로 유추할 수 있는지를 아는것도 중요하다.

 

어떤 문맥에서는 해당 단어가 있지만 이 문맥으로 질문의 정답이라고 판단하기 어려울 수 있음

 

이러한 answer_start도 학습에 중요한 영향을 미칠 수 있음.

 

답으로 유추되는 supervision을 제대로 주기 위해 answer_start가 주어진 것임

 

이러한 supervision을 strong supervision이라하고 사실 없어도 가능한데 distant supervision이라고 부름?

 

 

 

 

데이터를 출력해보면 위와 같은 JSON 형태로 출력됨

 

재밌는 부분은 answer의 text와 answer_start가 하나인데도 리스트로 되어있는데

 

매우 드물지만 만들 때 사람이 생각하기에 실제 정답이 2개 이상일 수 있어서 그렇다

 

많은 경우 답은 1개이고 학습에서도 보통 하나만 씀..

 

validation이나 test에서 ‘교향곡’만이 답이 아니라고 한다면 다른것도 학습과정에서 답으로 인정해줘야하므로 답이 여러개일 수 있다고?

 

 

5. KorQuAD의 질문유형

 

구문 변형이 제일 많다.

 

여러 문장 근거활용같은 경우는

 

여러 문장을 근거로 답을 찾아내길 바라지만 사실 많은 경우 모델은 생각외로 한문장만 보고 답을 찾아내는 경우가 많다

 

 

 

 

6. KorQuAD 답변 예시

 

대부분 답변이 정의하기 쉽고 구체화하기 쉬운 category에 속하는 경우가 많다.

 

 

 

원인이나 방법같은 경우 답변하기 상당히 까다로운 문제인데 구성 비율이 적다

TAGS.

Comments