Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

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

Project Description
Fictionary
==========

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.
Release History

Release History

This version
History Node

0.0.3

History Node

0.0.2

History Node

0.0.1

History Node

0.0.0

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
fictionary-0.0.3-py2.py3-none-any.whl (457.6 kB) Copy SHA256 Checksum SHA256 3.5 Wheel Jan 7, 2016
fictionary-0.0.3.tar.gz (458.0 kB) Copy SHA256 Checksum SHA256 Source Jan 7, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting