Project Demo

Try it yourself, online:

Rhymatron on

Project Overview

What is Rhymatron?

Rhymatron began as an automated script that would take inputted text files, find rhyming words, and output a rhyming poem based on a pre-determined template. It has evolved into an interactive website where users can collaborate with the site to develop their own rhyme templates and write amazing poetry and raps.

How does it work?

Rhymatron has been pre-fed with a giant dictionary of common English words. Each time it runs, the program builds long lists of rhyming words and applies them to the selected rhyme template. The user sees individual words from these lists, but acts as an editor and can shuffle to other similar words as they assemble a poetic creation. Additionally, a user can input their own rhyme template that will determine the rhyme, meter, and style of their next creation.

Video Demonstration

Sample Outputted Poems

“Farm Yard Fencing”

nevertheless raphael upset hens
microscopic floundering gnawing tends
naturally circular against fence

submitted by: Farmer Joe, Branford, Connecticut, 2010-05-27


witchcraft dispatched baths
addressed insects risking trap
amen shadow hats

submitted by: Digital Noah, Brooklyn, New York, 2010-06-07

Technical Details of Rhymatron

Behind the scenes with Python

Within the core of Rhymatron are several Python scripts. First a dictionary is built from all the words found in “Huckleberry Finn,” by Mark Twain. Next each word is broken down into its phonetic sounds by being cross-referenced to Carnegie Mellon’s phonetic dictionary. Finally, a custom dictionary of words is assembled and “pickled” into a quick-loading file for future use. When a user clicks on the “create a rhyme” link, the dictionary gets unpickled and loaded into a second script which then builds lists of words. The script goes through every word in the custom dictionary looking for words that match a group of phonetic keys, placing each matching word into its related list. All of these lists of words get passed from Python into PHP.

Behind the scenes with PHP

Once PHP receives the word lists from Python, it looks up the current rhyme key from its $_POST variable, and figures out which handful of word lists are needed for this particular poem. It then passes just those word lists into a Javascript array.

What the user sees via Javascript

The user then sees a poem on the screen, which is really just a single word showing from each word list. Above and below each word is an arrow that, when clicked, cycles the array forward and backwards to display other words from the same word list. After shuffling through the words until a great poem has been made, the user can then choose to save the poem.

What the user sees via jQuery

A panel emerges with a save form that the user can fill out. This form gets submitted to a database and is stored. All of the stored poems get displayed in the “saved poems” section of the site, fed directly from the database, in order of date created.