CoolFace
Datasetpublic

jbduran/bartholomew-dataset-v3

BART Dataset v3 The final version of the BART pretraining corpus, focused on removing anything that betrays a post-1930 origin. This is our best vintage dataset yet. Documents 146,031 (97.52% of v2) Characters 102,798,688,961 (96.73% of v2) Tokens ~23B (estimated) Shards 473 (one per v2 shard, same basename) Source BART Dataset v2 Cutoff 1930 Schema single string column text Lineage — three cumulative filtering stages over the same corpus:… See the full description on the dataset page: https://huggingface.co/datasets/jbduran/bartholomew-dataset-v3.

sourceHugging Facemitupdated 1mo agoView on Hugging Face
1likes2.8kdownloads
Dataset Card

BART Dataset v3

The final version of the BART pretraining corpus, focused on removing anything that betrays a post-1930 origin. This is our best vintage dataset yet.

Documents146,031 (97.52% of v2)
Characters102,798,688,961 (96.73% of v2)
Tokens~23B (estimated)
Shards473 (one per v2 shard, same basename)
SourceBART Dataset v2
Cutoff1930
Schemasingle string column text

Lineage — three cumulative filtering stages over the same corpus:

Institutional Books 1.0v1v2v3

How it was made

For our final phase, we decided to focus on the time period. Although we filtered by date at v1, leaks and bad labeling inevitably brought modern documents in to contaminate the vintage corpus — publication metadata says nothing about a 1990s reprint's front matter, or an OCR pass that swept in a modern colophon.

So we filtered through document boilerplate once more, focusing on footers missed by earlier passes. But the biggest part of this phase was the regex anachronism filter: a tiered banned words list that flags documents and removes them on too many hits.

Rather than trimming, we removed entire documents when the conditions were met. A single Tier 1 hit was enough to discard a document, while Tier 2 words required two occurrences. Tier 3 words never triggered removal on their own — they only counted when accompanied by at least one Tier 2 hit.

We used this same strategy later in midtraining, to keep all of our data as vintage as possible.

The tiered anachronism filter

A document is dropped only on strong evidence of post-1930 content. The tiering exists to avoid polysemy false positives — "compiler of this volume", a bee "drone", birdsong "twitter", the Black Hole of Calcutta.

TierTermsBehaviour
Tier 1141Coined well after 1930 — one hit drops the document
Tier 2262Real anachronisms — need ≥2 distinct tier-2/3 hits, with ≥1 tier-2
Tier 343Polysemous, has a pre-1931 sense — never drops alone, only corroborates
Strip-only17Reproduction/boilerplate tells — never drops, only logged

Drop rule: 1× tier1 OR (≥2 distinct tier2/tier3 with ≥1 tier2)

The list was built from a 500-term seed, then curated: a 165-entry allow-list removed 55 seed terms, 18 were added by hand, leaving 463 final terms plus 10 format-tell patterns.

Documents
Input149,745
Kept146,031 (97.52%)
Removed3,714 (2.48%)
Characters kept96.73%

Stage 0.5 — footer and boilerplate stripping

Runs before the anachronism filter. A line-level pass removes reprint and OCR footer lines — URLs, "printed in the United States of America", "all rights reserved", photocopy and print-on-demand colophons, ISBN lines, bare page numbers, library stamps — writing the stripped corpus to stripped/. Whole books are kept; only footer lines are removed. Documents that would lose more than 30% of their lines are kept unstripped and flagged.

Shards stripped473
Documents changed20,671 / 149,745
Documents flagged (kept unstripped)0
Footer lines removed31,761
Characters removed0.0008%

<details> <summary><b>Footer patterns by frequency</b></summary>

PatternLines removed
page_num_bare18,433
modern_year_reserved7,324
printed_usa_modern1,977
pod_preservation_photocopy1,237
url_http716
pod_ansi_paper619
pod_laser474
pod_acid_free_archival265
lib_ex_libris263
copyright_post_1930174
url_www145
url_dotcom88
isbn29
repro_this_was_produced16
pod_lightning1

</details>

<details> <summary><b>Top firing anachronism terms</b></summary>

Terms that most often flagged a document. Note how many are polysemous — which is exactly why the tiering and allow-list exist.

TermHitsTermHits
compiler515mcdonalds115
hardware461css105
nagasaki442black hole104
gaming413hiroshima102
mcdonald's375blog101
cia342united nations98
drone238dark matter98
nato204php86
satellite203fax83
rna172great depression71
twitter159nasa71
new deal150maser66
dna145iron curtain65
dvd1459/1163
c#128
holocaust117

</details>

Schema and usage

Single string column named text.

python
from datasets import load_dataset

ds = load_dataset("jbduran/bart-dataset-v3", split="train", streaming=True)
print(next(iter(ds))["text"][:500])

Artifacts:

  • _banned/ — the tiered lists, allow-list, format tells, and build audit
  • stripped/ — the footer-stripped corpus
  • strip_stats/, strip_samples/ — footer-strip audit
  • stats/ — per-shard filter counts
  • hits/ — per-shard hit log (which terms fired on which documents)
  • scripts/ — the pipeline
  • cleaning_report_1930s.json — full run report

Citation

Ultimately derived from Institutional Books 1.0:

bibtex
@misc{institutionalbooks2025,
  title  = {Institutional Books 1.0: A 242B Token Dataset from Harvard Library's
            Collections, Refined for Accuracy and Usability},
  year   = {2025},
  eprint = {2506.08300},
  archivePrefix = {arXiv}
}