# src/load_data.py import sys import os # Ensure the project root (parent of src/) is in Python path PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) # insert at the beginning # Now we can safely import config import config from datasets import load_dataset, DatasetDict, Dataset import pandas as pd def load_babe_dataset(): """ Load the BABE dataset from local parquet files if available, otherwise from Hugging Face. Returns: dataset: DatasetDict with 'train' and 'test' splits """ local_train = os.path.join(PROJECT_ROOT, "bias_module", "data", "cache", "data", "train-00000-of-00001.parquet") local_test = os.path.join(PROJECT_ROOT, "bias_module", "data", "cache", "data", "test-00000-of-00001.parquet") if os.path.exists(local_train) and os.path.exists(local_test): print("Loading BABE dataset from local parquet files...") train_df = pd.read_parquet(local_train) test_df = pd.read_parquet(local_test) dataset = DatasetDict({ "train": Dataset.from_pandas(train_df), "test": Dataset.from_pandas(test_df) }) return dataset print(f"Loading BABE dataset from Hugging Face ({config.DATASET_NAME})...") # Load the full dataset dataset = load_dataset(config.DATASET_NAME) # BABE dataset doesn't have a default validation split # Split the training data into train (80%) and test (20%) dataset = dataset["train"].train_test_split(test_size=0.2) return dataset # Optional: test loading if __name__ == "__main__": dataset = load_babe_dataset() print(dataset) print(dataset["train"][0])