All Projects → Tw1ddle → Markovnamegenerator

Tw1ddle / Markovnamegenerator

Licence: other
✒️ Markov process-based procedural name and word generator

Programming Languages

haxe
709 projects

Projects that are alternatives of or similar to Markovnamegenerator

Random compat
PHP 5.x support for random_bytes() and random_int()
Stars: ✭ 7,950 (+2550%)
Mutual labels:  random-generation, random
Randomkit
Random data generation in Swift
Stars: ✭ 1,458 (+386%)
Mutual labels:  random-generation, random
Mir Random
Advanced Random Number Generators
Stars: ✭ 30 (-90%)
Mutual labels:  random-generation, random
Rando.js
The world's easiest, most powerful random function.
Stars: ✭ 659 (+119.67%)
Mutual labels:  random-generation, random
jRand
A Java library to generate random data for all sorts of things. Java random data faker
Stars: ✭ 27 (-91%)
Mutual labels:  random, random-generation
Generatedata
A powerful, feature-rich, random test data generator.
Stars: ✭ 1,883 (+527.67%)
Mutual labels:  random-generation, random
Easy Random
The simple, stupid random Java beans/records generator
Stars: ✭ 1,095 (+265%)
Mutual labels:  random-generation, random
strgen
A Python module for a template language that generates randomized data
Stars: ✭ 34 (-88.67%)
Mutual labels:  random, random-generation
RandomGenKt
Kotlin port of RandomGen
Stars: ✭ 28 (-90.67%)
Mutual labels:  random, random-generation
Eigengrau S Essential Establishment Generator
A town generator that is suitable for out of the box play in any fantasy TTRPG setting.
Stars: ✭ 523 (+74.33%)
Mutual labels:  procedural-generation, random-generation
datagen
Java lib that generates random data (numbers, strings, dates) - mostly to facilitate Randomized Testing.
Stars: ✭ 56 (-81.33%)
Mutual labels:  random, random-generation
relude-random
Composable random generators based on the PCG paper
Stars: ✭ 15 (-95%)
Mutual labels:  random, random-generation
FallingSandSurvival
2D survival game inspired by Noita and slightly Terraria
Stars: ✭ 66 (-78%)
Mutual labels:  procedural-generation
VulkanRenderer
Personal repo for learning the vulkan graphics api
Stars: ✭ 42 (-86%)
Mutual labels:  procedural-generation
fastrand
10x faster than crypto/rand
Stars: ✭ 76 (-74.67%)
Mutual labels:  random
Procedural-Generation
An Overview of Procedural Generation Techniques and Applications
Stars: ✭ 23 (-92.33%)
Mutual labels:  procedural-generation
Wavefunctioncollapse
Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics
Stars: ✭ 17,156 (+5618.67%)
Mutual labels:  procedural-generation
ChessPositionRanking
Software suite for ranking chess positions and accurately estimating the number of legal chess positions
Stars: ✭ 78 (-74%)
Mutual labels:  random
Worlds
World History Simulator
Stars: ✭ 47 (-84.33%)
Mutual labels:  procedural-generation
fixture-monkey
Let Fixture Monkey generate test instances including edge cases automatically
Stars: ✭ 177 (-41%)
Mutual labels:  random-generation

Markov Namegen logo

Travis Build Status License Badge

Markov Namegen is a Markov chain-based procedural name generator written in Haxe. Run it in your browser.

Demonstrates the markov-namegen haxelib. Read the docs here.

Features

  • 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.

Usage

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

Screenshots

Here is the demo in action. Using a single data set:

Screenshot

Combining multiple preset datasets:

Screenshot

How It Works

The markov-namegen haxelib uses Markov chains to procedurally generate original words.

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.

Library Install

Get the Markov Namegen library from GitHub or through haxelib.

Include it in your .hxml

-lib markov-namegen

Or add it to your Project.xml:

<haxelib name="markov-namegen" />

Notes

  • 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.

License

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].