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)도 함께 만들어집니다.