Greetings all! Over at Gnoetry Daily we've been exploring human-computer poetry generation using a variety of systems. These are computer tools that humans can use to write text poetry. Anyways I thought I'd put together an illustrated guide to some of the interactive poetry generators that are out there. Here's a preview:
Look below to read all the information, click to enlarge any image, and feel free to provide feedback or pointers to useful systems!
1. Collaborative Generation
These are tools that allow humans to interact with them in some structured way while generating poetry.
Gnoetry is an interactive n-gram generator that allows humans to select words for it to re-generate in the context of a poetic form.
Gnoetry then generates a poem. After this, the human selects words by mousing over them, and clicks 'Regenerate' to have Gnoetry replace the selected words. In this way, the human and the tool collaboratively build a poem:
Gnoetry was written by Jon Trowbridge with input from Eric Elshtain and other poets.
- YouTube video of Gnoetry in motion
- More information about Gnoetry including building language models by adding source texts
- Installation on Ubuntu (including setting up a partition on Windows or Mac) or with an Ubuntu LiveCD
- Gnoetry-authored chapbooks and more information at Beard of Bees Press.
jGnoetry provides you with several options:
More info about jGnoetry:
The full version of Gnoetry can take a while to install and start using; hence “e”Gnoetry, which is a subset/variant of the full Gnoetry. It's a Java applet on a web page, so it's easier to access. It was developed with Processing and the RiTa + g4p libraries and includes source code so you can modify and extend it if you wish.
When you first access the web page, a poem is automatically generated:
Here's how you, the human, can use eGnoetry to write poetry interactively:
- You can edit the currently-generated poem by clicking on the word buttons in blue. Doing so will replace that word with a new word consistent with a bigram model built from a given text
- If you want to start over you can click “regenerate verse” to replace the entire poem
- Clicking “Form…” cycles through the poem's form (free verse, eHaiku, quatrain).
- Language models for three default texts are provided (Alice in Wonderland, Shakespeare's Sonnets, and Heart of Darkness) and they can be cycled through by clicking on the “Model:…” button
- You can build new models by copying texts to your computer's clipboard, then pasting them into the 'New Model Text' area and pressing the “Import Model” button
- Clicking the “Export Verse” button attempts to open a new web page containing the poem for printing or copying
More info about eGnoetry:
A generalization of the Oulipo w ± n algorithm. Also enables erasures and generation from templates.
1e. Icon Poet
Icon Poet lets you click buttons that represent part-of-speech classes, which cycle through the words that are displayed in the edit area. A GUI interface lets you add members to the parts of speech.
- You can download Icon Poet (a Windows program) from iconpoet.com.
2. Unsupervised Generation
Unsupervised Generation systems primarily generate poetry without direct human involvement. These systems are interactive in allowing humans to write generation rules, set parameters, select input texts, and determine which sequence of generations or transformations the tools should make. Also, humans often use the systems and then select from the output to build their own poems.
JanusNode contains a number of tools to write poetry. First, by selecting from a drop-down menu you can generate various types of text and poetry, such as Haiku in the example below. A number of different types of text can be generated by default, such as Blues lyrics, Insults, and Bureaucratese. The human can write and add new rules to produce new types of generators.
After some text is generated, it can be made to look more “poetic” by eecummingsification, which introduces linebreaks and spaces in the text being authored. The way JanusNode eecummingsifies can be modified by editing configuration files. Similarly, Dadafying a text rearranges the words and adds spaces between them.
JanusNode is a labor of love, born of two decades' of part-time development, reflecting the interests of its creator, Chris Westbury.
“The world cannot tell you itself. You have to help it to tell itself to you.” – JanusNode documentation
- official web page with latest versions for Windows and MacOS
- Usage notes on writing generation rules, more advanced rules, automatic rule generation, and n-gram generation.
ePoGeeS is a Poetry Generation Sketchbook that can do things like generate several lines of verse, generate individual lines, generate words, and generate rhymed words. Generation is done from a bigram or class-based language model, and while you're working on a poem you can examine a list of all possible next or previous words in the language model.
Several verse generation variables can be changed, such as number of lines and rhyme scheme. Each individual line is actually generated from a number of possible candidates which are then evaluated and ranked; you can select random sampling or stochastic beam search to manage the evaluation.
Evaluation of candidate lines is done by analyzing the phonemes that make up the sounds of the words in the candidate line. The human user can set the sound types that are more likely to end up in the final candidate line selected.
The default (“hello world”) language model is Shakespeare's Sonnets. The human can create new word-based language models by pasting in text and clicking 'build'. The human can also examine various aspects of the language, phoneme, and rhyme models.
ePoGeeS was developed by eddeaddad (i.e. me) for his own poetry generation. It's a little idiosyncratic because he just added whatever he needed at the time and ignored any details he wasn't interested in, but you're welcome to try it out!
2c. Infinite Monkeys
Infinite Monkeys allows you to define templates to generate poetry. Once the poem is generated, a text-to-speech interface will allow you to have your computer read your poem to you.
Language resources include a set of predefined parts-of-speech, which you can add to.
- Infinite Monkeys is written in FreeBASIC for Windows (and possibly Linux and FreeBSD?)
- The Downloads page includes the application as well as a pdf of poetry written with it.
2d. Rhyming Robot (seuss)
Rhyming robot, also known as seuss, is a codeset that generates markov text that is arranged into rhyming lines.
- You can use it on the web
- It is written in python; it can run via command line, web interface, or IRC interface.
- Also see development notes.
charNG is a character n-gram generator with Markov, cento/cut-up, and one-char overlap modes.
- also see release notes and development notes
Mchain is a tool that uses n-grams to generate an arbitrary quantity of text, which can be output to a text file. The human then uses Mchain's output in some way to create a poem; by selecting interesting phrases from the text, for example. Mchain a command-line application:
Mchain was written by Adam Scovel.
- Mchain 0.3 info and screenshots (at the bottom half of the page)
- Mchain 0.2 (Python script) download and installation information
- Mchain 0.3 (C++ program) download and compilation information
2g. Dissociated Press
Developed in the early 70s, Dissociated Press is possibly the earliest n-gram generator (character- and word-based) that produces poetic-looking output. It is still available in the standard GNU Emacs distribution via “M-x dissociated-press”.
The Emacs version of Dissociated Press was developed by the Free Software Foundation.
2h. Other Systems
The web is full of “mad lib”-style slot-filling poetry generators and other simple programs for generating poetry, which may be of varying use to poets. Below are some examples:
- Diastic Reading – a web implementation of an approach used by Jackson Mac Low that creates a poem from a text given a seed string. (an older implementation seems to be offline)
- CAP – Computer Aided Poetry by Eugenio Tisselli – given a seed text, replaces words with semantically-related words. Also see usage notes.
- Weltanschauung, a perl command-line application that generates cut-ups from text. Also see an explanatory presentation on youtube.
- Darwinian Poetry, in which you get to help poems evolve.
- Oulipoems: The Electronic Muse, a grammar-based tool in which the user generates and re-arranges lines of poetry in a variety of styles, with the ability to add words
- ppg256 – simple poetry generators developed in only 256 characters of Perl
- Poetry Idea Engine – an animated Flash program from Scholastic to teach kids poetic forms using slot-filling.
- Wave Books' Erasures tool – which allows you to remove words from an existing poem
- ALAMO's Littéraciels – including Langage Algorithmique pour la Production Assistée de Littérature
- Similarly, an Oulipo n+7 generator is always fun
3. General Tools
These are tools in which the human takes the initiative in developing the poem, and is more of an essential component of the process than in systems discussed so far.
3a. GTR Language Workbench
GTR Language Workbench was developed a while back, went offline, and is now being distributed by the Newark Review. The web page calls it “a digital studio for language which allows for any number of literary and aesthetic modifications to texts, similar to the way current graphic design software like Photoshop and audio software like Sound Forge permit artists to create, modify and combine different visual and sound pieces.”
- It's a program for PCs and Macs, you can download an installer from the Newark Review
3b. The Muse
The Muse is made up of four web-based programs that were developed to help songwriters during the February Album Writing Month challenge. The first two programs are oriented towards music. Plot Spline suggests constraints for lyrics, and Struxxure suggests musical structures. Both are random generators.
LyriCloud is the third program, and focuses on helping write song lyrics. It generates a “cloud” of words which are related in some way: semantically, or through corpus adjacency. The human clicks on one of the words, which produces another cloud centered on the word that had been clicked on. In this way, the human generates a sequence of words which can be used to build lyrics around.
LyriCloud and Titular are the most obviously suited for text poetry, but all four may be useful, depending on the poet's needs. The Muse was developed by Burr Settles.
3c. RiTa + Processing
Processing is a tool resembling a simplified Java IDE. It is popular for writing animated and installation poetry (as opposed to poetry that focuses on texts and algorithms.) RiTa is a Java class library that was developed for use with Processing and includes objects like an n-gram model builder and generator, a grammar builder, and part-of-speech tagger, and much more. Using RiTa and Processing requires more human development effort than the previous programs, but they can be a powerful set of tools – for example, eGnoetry (above) was written using this combination.
RiTa and Processing are well-documented and include a number of example programs with source code, which makes programming almost as easy as writing HTML. For example, a simple n-gram generator can be written in a few lines of code:
Processing was developed by Ben Fry, Casey Reas, and a number of volunteers. RiTa was developed by Daniel C. Howe.
- Processing – a tool and set of libraries for writing Java-based animated and installation poems
- RiTa – a library developed for text generation with Processing
4. Historical Systems
Humans have been developing poetry generators since the dawn of (computer) history! Many of them are no longer available, but here is some information about several of them, with an emphasis on systems with versions that might still be available or in use. (for the full story on historical systems, check with Chris Funkhouser)
- Christopher Stratchey's Love Letter generator. Are love letters poems? Maybe, maybe not… but this algorithm dates from 1952, and the developer was pals with Alan Turing!
- If love letters aren't poems, then maybe Theo Lutz's Stochastic Texts are! Check out this German emulator and the relevant paper.
- Mark V. Shaney (information) – a word n-gram generator from the early 1980s, used on the Tao Te Ching and for Usenet posts. Also see this Markov Text Synthesizer and this Markov Perl script.
- The character n-gram generator Travesty is from the same era.
- Ray Kurzweil's Cybernetic Poet – the poetry generator that will help bring on The Singularity!
- Thunder Thought and Versifier – classic DOS poetry generators by Rosemary West
- Charles Hartman is an early programmer of poetry tools.
- Verbasizer – a lyrics generation tool used by David Bowie
That's all for now! If I've missed anything important, please let me know!
You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.