CoolFace
Datasetpublic

RealTimeData/bbc_alltime

This dataset contains BBC News articles from 2017 to 2022. The articles are arraged by month. Access the specific month by using the format "YYYY-MM" as config. Such as load_dataset("RealTimeData/bbc_alltime", "2021-1").

sourceHugging Facecc-by-2.0updated 3y agoView on Hugging Face
0likes329downloads
bbc_alltime.py115 linesDownload Raw Back to root
1import datasets2import json3import os4import sys5 6dl = datasets.DownloadManager()7configs_file = dl.download('https://huggingface.co/datasets/RealTimeData/bbc_alltime/raw/main/configs.txt')8 9with open(configs_file, encoding="utf-8") as f:10    _TIMES = f.read().splitlines()11 12_TIMES += ['all']13 14_CITATION = """\15@misc{li2023estimating,16      title={Estimating Contamination via Perplexity: Quantifying Memorisation in Language Model Evaluation}, 17      author={Yucheng Li},18      year={2023},19      eprint={2309.10677},20      archivePrefix={arXiv},21      primaryClass={cs.CL}22}23"""24 25_DESCRIPTION = """\26This dataset contains BBC News articles from 2017 to 2022. The articles are arraged by month. Access the specific month by using the format "YYYY-MM" as config. Such as load_dataset("RealTimeData/bbc_alltime", "2021-1").27"""28 29_HOMEPAGE = "https://github.com/liyucheng09/Contamination_Detector"30 31class Bbc_alltimes(datasets.GeneratorBasedBuilder):32 33    BUILDER_CONFIGS = [34        datasets.BuilderConfig(35            name=time, version=datasets.Version("1.0.0"), description=f"BBC News articles published in the priod of {time}"36        )37        for time in _TIMES38    ]39 40    def _info(self):41        features = datasets.Features(42            {43                "title": datasets.Value("string"),44                "published_date": datasets.Value("string"),45                "authors": datasets.Value("string"),46                "description": datasets.Value("string"),47                "section": datasets.Value("string"),48                "content": datasets.Value("string"),49                "link": datasets.Value("string"),50            }51        )52        return datasets.DatasetInfo(53            description=_DESCRIPTION,54            features=features,55            homepage=_HOMEPAGE,56            citation=_CITATION,57        )58 59    def _split_generators(self, dl_manager):60        """Returns SplitGenerators."""61        if self.config.name == "all":62            times = _TIMES[:-1]63            files = dl_manager.download([f"articles/{time}.json" for time in _TIMES ])64            return [65                datasets.SplitGenerator(66                    name=datasets.Split.TRAIN,67                    gen_kwargs={"files": files},68                )69            ]70        else:71            time = self.config.name72            _URL = f"articles/{time}.json"73            file = dl_manager.download(_URL)74            return [75                datasets.SplitGenerator(76                    name=datasets.Split.TRAIN,77                    gen_kwargs={"files": file},78                )79            ]80 81    def _generate_examples(self, files):82        """Yields examples."""83        if self.config.name == "all":84            assert isinstance(files, list)85            for file in files:86                time = file.strip('.json')87                with open(file, encoding="utf-8") as f:88                    data = json.load(f)89                length = len(data['title'])90                for i in range(length):91                    yield f'{time}-{i}', {92                        "title": data['title'][i],93                        "published_date": data['published_date'][i],94                        "authors": data['authors'][i],95                        "description": data['description'][i],96                        "section": data['section'][i],97                        "content": data['content'][i],98                        "link": data['link'][i],99                    }100        else:101            assert isinstance(files, str)102            time = self.config.name103            with open(files, encoding="utf-8") as f:104                data = json.load(f)105            length = len(data['title'])106            for i in range(length):107                yield f'{time}-{i}', {108                    "title": data['title'][i],109                    "published_date": data['published_date'][i],110                    "authors": data['authors'][i],111                    "description": data['description'][i],112                    "section": data['section'][i],113                    "content": data['content'][i],114                    "link": data['link'][i],115                }