[docs]classFOLIODataset(AbstractQADataset):def__init__(self,split_set:str)->None:super().__init__()try:ifsplit_setnotinSPLIT_SETS_TRAIN_VAL:raiseSplitSetError(SPLIT_SETS_TRAIN_VAL)ifnotos.path.exists(FOLIO_DATASET_FOLDER):download_dataset(FOLIO_DATASET_ZIP_URL,FOLIO_DATASET)self.split_set=split_setself.dataset_path=f"{FOLIO_DATASET_FOLDER}/{self.split_set}.jsonl"(self.contexts,self.questions,self.labels,self.contexts_fol,)=self.__read_dataset("premises","conclusion","label","premises-FOL")exceptSplitSetErroraserr:print(err.message)def__read_dataset(self,contexts_key:str,questions_key:str,labels_key:str,contexts_fol_key:str,)->Tuple[List[List[str]],List[str],List[int],List[List[str]]]:data=read_jsonl(self.dataset_path)contexts_list=[]questions_list=[]labels_list=[]contexts_fol_list=[]foriindata:contexts_list.append(i[contexts_key])questions_list.append(i[questions_key])labels_list.append(FOLIO_LABEL_TO_ID[str(i[str(labels_key)])])contexts_fol_list.append(i[contexts_fol_key])returncontexts_list,questions_list,labels_list,contexts_fol_listdef__getitem__(self,index:int)->Tuple[List[str],str,int,List[str]]:return(self.contexts[index],self.questions[index],self.labels[index],self.contexts_fol[index],)def__str__(self)->str:returnf"The {self.split_set} set of FOLIO has {self.__len__()} instances"def__len__(self)->int:returnlen(self.contexts)