[docs]classParaRulesPlusDataset(AbstractQADataset):def__init__(self,dataset_name:str,split_set:str)->None:super().__init__()try:ifdataset_namenotinPARARULES_PLUS_SUB_DATASETS:raiseDatasetNameError()ifsplit_set=="val":split_set="dev"elifsplit_setnotinSPLIT_SETS:raiseSplitSetError(SPLIT_SETS)ifnotos.path.exists(PARARULES_PLUS_DATASET_FOLDER):download_dataset(PARARULES_PLUS_DATASET_ZIP_URL,PARARULES_PLUS_DATASET)self.dataset_name=dataset_nameself.split_set=split_setself.dataset_path=f"{PARARULES_PLUS_DATASET_FOLDER}/{self.dataset_name}/{self.split_set}.jsonl"self.contexts,self.questions,self.labels=self.__read_dataset("context","questions","text","label")exceptDatasetNameErroraserr:print(err.message)print(f"The ParaRules PLUS datasets are: {PARARULES_PLUS_SUB_DATASETS}")exceptSplitSetErroraserr:print(err.message)def__read_dataset(self,contexts_key:str,questions_key:str,questions_text_key:str,labels_key:str,)->Tuple[List[str],List[str],List[int]]:data=read_jsonl(self.dataset_path)contexts_list=[]questions_list=[]labels_list=[]foriindata:forqini[questions_key]:contexts_list.append(i[contexts_key])questions_list.append(q[questions_text_key])labels_list.append(PARARULES_PLUS_LABEL_TO_ID[str(q[str(labels_key)])])returncontexts_list,questions_list,labels_listdef__getitem__(self,index:int)->Tuple[str,str,int]:returnself.contexts[index],self.questions[index],self.labels[index]def__str__(self)->str:returnf"The {self.split_set} set of {self.dataset_name}'s ParaRules PLUS has {self.__len__()} instances"def__len__(self)->int:returnlen(self.contexts)