AllenNLP DatasetReader — 데이터를 Instance로 읽기

AllenNLP DatasetReader

모델에 데이터를 넣기 전에, 다양한 형식의 원본 데이터를 AllenNLP가 쓰는 Instance로 바꿔야 해요. 이 역할을 하는 추상 클래스가 DatasetReader예요. 각 태스크(시퀀스 태깅, 텍스트 분류 등)는 이 클래스를 상속해 _read()를 구현해 데이터를 읽어 들여요.

DatasetReader의 역할

DatasetReader는 데이터셋(파일·디렉터리)을 받아 Instance 리스트로 변환해요. Instance는 Field들의 컨테이너로, 문장을 토큰 인덱스로 바꾸는 TextField, 정답 라벨을 담는 LabelField, 스팬/시퀀스/다중 라벨 같은 다양한 Field를 조합해 만들어요. 이 Field들은 이후 모델 입력 텐서로 변환돼요.

포함된 리더들

allennlp.data.dataset_readers에 여러 기본 리더가 있어요.

  • sequence_tagging — 품사 태깅·NER용
  • text_classification_json — JSON 텍스트 분류
  • conll2003 — CoNLL-2003 NER 포맷
  • sharded_dataset_reader — 분산 학습용 샤드 읽기
  • multitask, interleaving_dataset_reader — 멀티태스크/인터리빙

DatasetReader는 등록(registration) 구조라서 설정 파일에서 클래스 이름으로 바로 참조할 수 있어요.

쓰임

훈련·검증·테스트 데이터를 읽을 때 각각 DatasetReader를 지정해요. train_model_from_file의 설정 파일에서 dataset_reader 키로 선택하고, train_data_path에 데이터 경로를 줘요. 이 데이터로 어휘(Vocabulary)도 함께 만들어집니다.

더 알아보기