sensecatch / src /training /benchmark_datasets.py
berkinksk's picture
Add the SenseCatch app, models, and Docker setup
33acf50 verified
Raw
History Blame Contribute Delete
1.12 kB
"""Benchmark dataset loaders for sentiment evaluation.
SST-2: glue/sst2, validation split (the test split has hidden labels).
Yelp polarity: yelp_polarity, test split.
Labels are 0 for negative and 1 for positive.
"""
import random
from datasets import load_dataset
def load_sst2():
"""Return (texts, labels) from the SST-2 validation split."""
ds = load_dataset("glue", "sst2")["validation"]
texts = [r["sentence"] for r in ds]
labels = [int(r["label"]) for r in ds]
return texts, labels
def load_yelp(n=2000, seed=42):
"""Return a seeded, class-balanced subset of the Yelp test split.
Picks n/2 positive and n/2 negative reviews, then shuffles.
"""
ds = load_dataset("yelp_polarity")["test"]
per_class = n // 2
pos, neg = [], []
for r in ds:
(pos if int(r["label"]) == 1 else neg).append(r["text"])
rng = random.Random(seed)
texts = rng.sample(pos, per_class) + rng.sample(neg, per_class)
labels = [1] * per_class + [0] * per_class
order = list(range(n))
rng.shuffle(order)
return [texts[i] for i in order], [labels[i] for i in order]