Skip to main content

Generate made-up words following the patterns used by real English words.

Project description

Generate made-up words following the patterns used by real English words.

Using Fictionary

Fictionary doesn’t have any sort of installer at the moment. If you have python installed, just clone this repository, and run fictionary.py --help. This should print out something like the following:

usage: fictionary.py [-h] [-v] [-c COUNT] [-m LENGTH] [-x LENGTH] [--refresh]
                     [-d DICTIONARY]

A made-up word factory, following standard English word rules.

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Be verbose.
  -c COUNT, --count COUNT
                        The number of words to generate.
  -m LENGTH, --min-length LENGTH
                        Only generate words of LENGTH chars or longer.
  -x LENGTH, --max-length LENGTH
                        Only generate words of LENGTH chars or shorter.
  --refresh             Re-create the data file from the word-lists.
  -d DICTIONARY, --dictionary DICTIONARY
                        The dictionary rules to follow: american,british, or
                        all

Why???

Why not? It is particularly good for generating memorable yet reasonable length passwords, although I’m not sure how secure those passwords would be given that they follow well-defined patterns. One day I might sit down and work it out.

What Should I Expect To See

The results are random, but you should see something like the following:

$ fictionary.py -c 20 -m 5
prodybating
awbalemisfrewhic
billars
rotous
fratorgater
incens
cradpantle
gatinspon
intneshemblary
clumake
pladrachoppedally
fuledi
pheable
frilita
sederels
hippostaligarupyrrelised
haridisuppechooge
turefurnic
butermel
amblier

How it Works

The first time it runs, fictionary loads a word database into a data structure called a Markov chain, which represents the patterns of letters found in the words (e.g. The most common first-letter is ‘s’. The most common letter following ‘s’ at the start of a word is ‘t’ etc.)

Once fictionary understands the patterns of letters used in words in the English language, it can use these rules to generate new, nonsense words that look like English words, but (probably) aren’t.

Releasing

These are notes for me, as is probably obvious:

  • Check the README

  • bumpversion

  • python setup.py sdist bdist_wheel

  • twine upload dist/*.*

To Do

The following is my to-do list for this project:

Allow Valid Words

Add a flag to turn off ‘real-word’ validation.

Word Generation Rollback

Rejecting words that are too long or short is reasonably expensive. I may refactor this to rollback and remake choices until a valid ‘word’ is reached. Or I may find something better to do with my time.

Auto-Refresh

Automatically recreate the data file if the source files change.

Data-File Optimisation

Generate the markov chains in parallel, so files don’t have to be re-read.

Optimize Long Words

Make word-generator bail out as soon as max-length is encountered.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fictionary-0.0.3.tar.gz (458.0 kB view hashes)

Uploaded Source

Built Distribution

fictionary-0.0.3-py2.py3-none-any.whl (457.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page