makemore
An autoregressive character-level language model for making more things
Makemore Explained
Makemore is a tool that learns patterns from a list of text and then generates new, similar items that don't already exist. Feed it a file of baby names, and it'll create plausible-sounding names you've never heard before. Feed it company names, and it'll invent new company names. Feed it dictionary words, and it'll generate gibberish that sounds vaguely English. The core idea is simple: the tool reads character by character, learns what typically comes next, and uses that knowledge to dream up new combinations.
The way it works is through something called a language model. Imagine you're playing a guessing game where you see part of a word and have to predict the next letter. With enough practice on real examples, you get good at it. Makemore does exactly that, but under the hood it uses several different "brains" of increasing sophistication—starting with simple lookup tables (bigrams), moving through basic neural networks, and ending with a Transformer (the same type of brain that powers GPT). You can pick which model to use depending on how much training time and complexity you want.
This is a project built for learning. It's intentionally lightweight—just one hackable Python file—rather than a heavy production tool with endless settings. It only needs PyTorch (a popular machine learning library) to run, and it works on regular computers like a MacBook without needing specialized hardware, though it runs faster on GPUs if you have one. The included example trains on a dataset of 32,000 real baby names, and you can see it generate creative, name-like inventions that follow English naming patterns but are entirely new.
The project is useful for anyone curious about how AI models learn to generate text, or anyone wanting to experiment with creative generation for their own datasets. A founder might use it to brainstorm product names; a researcher might use it to understand how language models work; a hobbyist might feed it Pokémon names or Minecraft blocks. It's deliberately simple enough to read and modify, making it a great educational tool.