Writing
Blog
Notes, essays, and tutorials on machine learning, NLP, and the digital humanities.
-
Eighteen Models, One Decision: Finding a Better Small Model for Linking Names to Wikidata
We fine-tuned eighteen open decision models on the same Europeana-to-Wikidata task, three times each, on Yale's cluster. A 4-billion-parameter model, kev-4b, agrees with the labels 97.1% of the time and links only one in twenty-five of the people who have no match, against 91.3% and one in five for the model we used before. Here is what we built, what we compared, and what the comparison taught us about size, architecture and prompts.
Read post -
Who Is “Boom BK”? Linking 7.2 Million Catalogued Names to Wikidata with a Small Model
How a 340-million-parameter model, trained on data labelled with the help of a larger one, decided which Wikidata person each of 7.2 million names in Europeana's records refers to, or that none of them does. Built step by step, with the decisions about caution, data, and scale explained along the way, and run end to end on Yale's cluster without a single API call.
Read post -
Where the Readings Disagree: Finding HTR Errors by Asking a Model Five Times
A small local app that runs a handwritten text recognition model several times over the same manuscript page and uses the disagreement between runs to show, word by word and letter by letter, where the errors are likely to be. Tested on Caroline minuscule, and on Old English, a language the model never saw.
Read post -
Reading the Cluster at a Glance with Yale SLURM Utils
A small command-line tool that turns dense SLURM output into a readable, live dashboard — and why that matters when you share a supercomputer to train and run large language models.
Read post -
Dissolving a 398-Node Geographic Cycle with Gemini Flash Lite
How we found, visualized, and automatically fixed a massive circular reference in the LUX places hierarchy — for about three cents.
Read post -
Whisper Achieves 85% Accuracy on Holocaust Testimonies in Yale's Fortunoff Archive
We evaluated Whisper on 1,847 Holocaust testimonies and found 85 percent accuracy, though the model routinely normalizes raw speech and heritage spellings.
Read post -
Parsing 3.6 Million Historical Names with Small Models
We moved from expensive frontier AI to fine-tuned Qwen 3.5 models to parse historical data, achieving 96% accuracy by switching from JSON to YAML.
Read post