Markov Namegen is a Markov chain-based procedural name generator written in Haxe. Run it in your browser.
- Hundreds of customizable/combinable training data presets.
- Configurable corpus, order and prior model parameter settings.
- Filter results by length, start, end, content and regex match.
- Sort by Damerau-Levenshtein distance to list results by similarity.
- Save and share custom data, settings and results with one click.
Run the demo to generate your own words. For example, use these settings:
Training Dataset: English Towns Order: 5 Prior: 0.01 Words To Generate: 100 Max Processing Time: 500ms Length: 8-12 Starts with: b Ends with: Include: ham Exclude: Similarity To: birmingham Matches Regex:
Click the "Generate" button and the results will be displayed. Here are the first 10 results with the settings above:
Barkingham Basingham Birkenham Bebingham Bollingham Bridlingham Billenham Berwickham Botteringham Bradnincham
Here is the demo in action. Using a single data set:
Combining multiple preset datasets:
How It Works
Using a set of words as training data, the library calculates the conditional probability of a letter coming up after a sequence of letters chosen so far. It looks back up to "n" characters, where "n" is the order of the model.
The generator can use several orders of models, each with memory n. Starting with the highest order models (models with bigger memories), it tries to get a new character, falling back to lower order models if necessary - an approach known as Katz's back-off model.
A Dirichlet prior is used to add a constant probability that any letter may be picked as the next letter. This acts as an additive smoothing factor and adds a bit more "randomness" to the generated output.
Countless words are generated, and are then filtered and sorted according to several tweakable criteria like length, start and end characters, similarity to a target word, and so on.
Include it in your
Or add it to your
<haxelib name="markov-namegen" />
- Many of the concepts used for the generator were suggested in this article by Jeffrey Lund.
- If you have any questions or suggestions then get in touch or open an issue.
- Read the documentation.
The website and demo code are licensed under CC BY-NC. The haxelib itself is provided under the MIT license. The noUiSlider settings sliders are WTFPL. Most of the training data is compiled from sites like Wikipedia and census data sources.