CoolFace
Datasetpublic

saidutta69/odia_pretrain_dataset

Odia Pre-training Dataset 10.32 million rows of Odia text. Zero access requests. Zero waiting. Zero gating nonsense. The Origin Story (a.k.a. How a Pending Access Request Created a Monster) It all started with a simple request: "Can I please access your Odia pretraining dataset?" That was months ago. The access request is still pending. So we did what any reasonable person would do when faced with institutional gatekeeping of a low-resource language's… See the full description on the dataset page: https://huggingface.co/datasets/saidutta69/odia_pretrain_dataset.

sourceHugging Facecc-by-4.0updated 13d agoView on Hugging Face
0likes38downloads
Dataset Card

Odia Pre-training Dataset

<div align="center"> <img src="https://photu.kashyalabanavli.site/racer-is-op.png" alt="RACER IS OP" width="100%"> </div>

<br>

10.32 million rows of Odia text. Zero access requests. Zero waiting. Zero gating nonsense.


The Origin Story (a.k.a. How a Pending Access Request Created a Monster)

It all started with a simple request: "Can I please access your Odia pretraining dataset?"

That was months ago. The access request is still pending.

So we did what any reasonable person would do when faced with institutional gatekeeping of a low-resource language's most important resource: we rebuilt the entire thing from scratch.

What began as a humble attempt to recreate a ~6M row dataset has now ballooned into a 10.32M rows (merged Odia-Web-Corpus-v5)er tabs, downloads every publicly available Odia corpus on the internet, writes deduplication scripts at 3 AM, spins up cloud VMs that keep getting preempted, fights with sandboxes that timeout, battles upload size limits, and emerges with a dataset that is 63% larger** than the one they were trying to access in the first place.

The original team wanted to gate access to protect their work. Instead, they inadvertently motivated the creation of a bigger, more diverse, and more openly accessible dataset. You're welcome.

Moral of the story: Gating your dataset doesn't protect it. It just makes someone build a better one out of spite.


What's In This Beast

MetricValue
Total Rows10,316,629
Unique Sources25+
LicenseCC-BY-4.0 (yes, commercially usable)
Access RequiredNone. Just download it.

Source Breakdown (all 25+ sources, because why stop at one)

SourceRowsWhat It Is
indicnlpcorp3,122,796IndicNLP Corpus - the backbone
odiawebcorpus_v53,340,338Our own web scraping (news, instructions, everything)
varta1,014,936DailyHunt Odia news articles
samanantar992,064Parallel Odia-English sentences
xp3486,529BigScience multilingual parallel data
culturax150,318Cleaned web crawl
odia_qa84,920Odia question-answering
oscar_odia50,092OSCAR Odia subset
alpaca_odia49,076Odia instruction data
engtoodia20,828Translation pairs
wikipedia17,210Odia Wikipedia
dolly_odia14,959Odia Dolly data
gpt_teacher18,184GPTeacher Odia
odia_news5,993Common Crawl news
odia_lyrics156Because music is culture
+ 10 more~100KVarious community contributions

What We Couldn't Get (Gated Datasets That Refused to Open)

DatasetRowsStatus
oscar-corpus/OSCAR-230148,780Applied. Waiting.
OdiaGenAIdata/pretrainodiadataprocessed5,980,000Applied. Still waiting.

If these ever get accepted, we'll merge them in too. Because apparently we can't stop.


Quality

We didn't just dump everything into a bucket. We actually cleaned it.

CheckResult
Empty text0
Odia content ratio80.6% mean
Rows with >50% Odia98.5%
Duplicate removal805,532 rows removed
HTML tag cleanupDone
Short text removal (<15 chars)Done
Quality score99.5/100

Data Schema

FieldTypeDescription
textstringOdia text content
sourcestringWhere it came from
typestringmonolingual, parallel, instruction, qa, etc.
en_alignedstringEnglish translation (for parallel data)

Quick Start

python
from datasets import load_dataset

# Just load it. No access form. No waiting. No emails.
dataset = load_dataset("saidutta69/odia_pretrain_dataset", split="train")

# Filter by source
news = dataset.filter(lambda x: x["source"] in ("varta", "odia_web_corpus_v5"))
instructions = dataset.filter(lambda x: x["type"] == "instruction")
parallel = dataset.filter(lambda x: x["source"] == "samanantar")

# Count by source
from collections import Counter
sources = Counter(x["source"] for x in dataset)
for src, count in sources.most_common():
    print(f"{src}: {count:,}")

License

CC-BY-4.0 - Use it commercially. Use it for research. Use it to train a model that competes with OdiaGenAI. We don't gate things here.


Acknowledgments

Special thanks to:

  • —OdiaGenAI for accidentally motivating this entire project through the power of a pending access request
  • —AI4Bharat for Samanantar and IndicNLP (openly accessible, unlike some)
  • —BigScience for xp3 and the multilingual parallel data
  • —DailyHunt/Varta for the news corpus
  • —Every Odia NLP researcher who contributed open datasets
  • —Coffee for keeping us awake during the 3 AM deduplication runs
  • —Cloud VMs for getting killed mid-push exactly when it hurt the most

Citation

If this dataset helped your research, cite it:

bibtex
@misc{odia_pretrain_dataset,
  author = {Saidutta Abhishek Dash},
  title = {Odia Pre-training Dataset: What Happens When You Gate a Low-Resource Language},
  year = {2025},
  publisher = {Hugging Face},
  note = {10.32M rows (merged Odia-Web-Corpus-v5) of Odia text, rebuilt from scratch because access requests went unanswered},
  howpublished = {\url{https://huggingface.co/datasets/saidutta69/odia_pretrain_dataset}},
}

"They gated the data. We un-gated the language."