Dataset: KorQuAD

국부은하군·2024년 10월 14일
0

Data-Centric & Dataset

목록 보기
9/9
post-thumbnail

KorQuAD 

KorQuAD(Korean Question Answering Dataset)는 한국어 자연어 처리(NLP) 연구에 중요한 역할을 하는 질문-응답 데이터셋이다. KorQuAD는 한국어로 된 질문과 답변 쌍을 포함하고 있으며, 이를 통해 기계가 한국어 문서를 이해하고 주어진 질문에 답변하는 능력을 평가하고 향상시킬 수 있다. 이 데이터셋은 특히 한국어 자연어 이해 및 기계 독해(Machine Reading Comprehension) 연구를 위해 설계되었다.

KorQuAD의 첫 번째 버전은 2018년에 LG CNS에 의해 공개되었으며, 이는 SQuAD(Stanford Question Answering Dataset)의 구조를 본떠 한국어로 개발되었다. 데이터셋은 수천 개의 질문과 그에 대한 답변을 포함하는 문서로 구성되어 있어, 기계 학습 모델이 한국어 텍스트의 맥락을 이해하고 해당 문서에서 관련된 정보를 찾아 답을 생성할 수 있도록 돕는다. 이로 인해 KorQuAD는 한국어 NLP 모델의 성능을 평가하는 데 중요한 벤치마크로 자리 잡았다.

최근에는 KorQuAD 2.0과 같은 확장된 데이터셋도 등장하여 더욱 복잡한 질문 유형에 대해 모델을 학습시키고 평가하는 데 도움을 주고 있다.

↓ 아래의 링크에서 자세히 확인할 수 있다.
KorQuAD: https://korquad.github.io/

KorQuAD의 구성

데이터 불러오기

from datasets import load_dataset
dataset = load_dataset("squad_kor_v1")

데이터셋 구성 확인하기

[Input]

print(dataset)

[output]

>> DatasetDict({
        train: Dataset({
            features: ['id', 'title', 'context', 'question', 'answers'],
            num_rows: 60407
        })
        validation: Dataset({
            features: ['id', 'title', 'context', 'question', 'answers'],
            num_rows: 5774
        })
    })

데이터는 train 데이터셋 60407개와 validation 데이터셋 5774개로 구성되어있으며, 하나의 샘플은 'id', 'title', 'context', 'question', 'answers' 를 feature로 한다.

train dataset 확인하기

[Input]

import random
pick = random.randint(0, len(dataset['train'])-1)
example = dataset['train'][pick]

print(example)

[output]

>> {'id': '6566495-0-0',
    'title': '파우스트_서곡',
    'context': '1839년 바그너는 괴테의 파우스트을 처음 읽고 그 내용에 마음이 끌려 이를 소재로 해서 하나의 교향곡을 쓰려는 뜻을 갖는다. 이 시기 바그너는 1838년에 빛 독촉으로 산전수전을 다 걲은 상황이라 좌절과 실망에 가득했으며 메피스토펠레스를 만나는 파우스트의 심경에 공감했다고 한다. 또한 파리에서 아브네크의 지휘로 파리 음악원 관현악단이 연주하는 베토벤의 교향곡 9번을 듣고 깊은 감명을 받았는데, 이것이 이듬해 1월에 파우스트의 서곡으로 쓰여진 이 작품에 조금이라도 영향을 끼쳤으리라는 것은 의심할 여지가 없다. 여기의 라단조 조성의 경우에도 그의 전기에 적혀 있는 것처럼 단순한 정신적 피로나 실의가 반영된 것이 아니라 베토벤의 합창교향곡 조성의 영향을 받은 것을 볼 수 있다. 그렇게 교향곡 작곡을 1839년부터 40년에 걸쳐 파리에서 착수했으나 1악장을 쓴 뒤에 중단했다. 또한 작품의 완성과 동시에 그는 이 서곡(1악장)을 파리 음악원의 연주회에서 연주할 파트보까지 준비하였으나, 실제로는 이루어지지는 않았다. 결국 초연은 4년 반이 지난 후에 드레스덴에서 연주되었고 재연도 이루어졌지만, 이후에 그대로 방치되고 말았다. 그 사이에 그는 리엔치와 방황하는 네덜란드인을 완성하고 탄호이저에도 착수하는 등 분주한 시간을 보냈는데, 그런 바쁜 생활이 이 곡을 잊게 한 것이 아닌가 하는 의견도 있다.',
    'question': '바그너는 괴테의 파우스트를 읽고 무엇을 쓰고자 했는가?',
    'answers': {'text': ['교향곡'], 'answer_start': [54]}}

answer_start는 context내에서 정답(answer.text)가 시작하는 부분(index)이다.

Tokenizing with KorQuAD

Tokenizer 불러오기

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("KLUE/roberta-large")

Only 토큰화

[Input]

example_text = dataset["train"][0]['question']
tokenized_txt = tokenizer.tokenize(example_text)
print(tokenized_txt)

[output]

>> ['바그너','##는', '괴테', '##의', '파우', '##스트', '##를', '읽', '##고', '무엇', '##을', '쓰', '##고', '##자', '했', '##는', '##가', '?']

'바그너는 괴테의 파우스트를 읽고 무엇을 쓰고자 했는가?' 라는 문장을 위와 같이 토크나이징하였다.

Tokenizing with KorQuAD 이어서 보기 ▶

profile
생각, 기술, 회고 등 다양한 분야를 기록합니다.

0개의 댓글