Markov Text
A simple procedural text generator implementing Markov chains
Installation
npm install markov-text
Usage
var Markov = ; const trainingText = 'Lorem ipsum dolor sit ammet' options = ... const loremGenerator = options // Setup generator loremGenerator // Seed chain with "training" text const generatedText = loremGenerator // Set length of the generated output.
Method | Arguments | Returns | Description |
---|---|---|---|
seed | trainingText | - | Seeds the generator with the training text. The generator splits the text into nGrams (pieces of n-characters or n-words length, depending on the mode)analog to chainlinks. |
generate | outputLength | output | Returns the generated text of the specified length. (Length is in ngrams not in charcters/words) |
Options
You can pass in an options object when instancing the generator that accepts the following options:
Property | Type | Options | Default | Description |
---|---|---|---|---|
order | integer | 1-n | no | Specifies the length of the ngrams (chainlinks). Longer chainlinks will produce more coherent text but less 'creativity' |
mode | string | 'single' | 'multiple' | 'multiple' |
Debuggin
You can view the chain building step by setting up the enviroment variable DEBUG_CHAIN to true
DEBUG_CHAIN=true node myTextGenerator
Examples
Provided are two examples you can run using:
Metamorphosis
Uses a excerpt of Franz Kafka's Metamorphosis to generate sentences of the desired length.
npm run example:metamorphosis
Lotr
Uses all the names from characters of LOTR to generate a new one
npm run example:lotr
Copyright for training texts is owned by their respetive authors and is not protected by the license of this library
Tests
npm test
Credit
This is mainly my best shot at implementating in Javascript what is explained in this great series by starbeamrainbowlabs