Print This Post Print This Post

Interactive Poetry Generation Systems: an Illustrated Overview

October 7th, 2010 by edde addad | Filed under -NP-Software

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.

1a. Gnoetry

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.

The human begins by selecting a poetic form.

The human then selects the source texts from which to build a language model…

…and decides how much each source texts should be weighed during word generation.

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.

1b. jGnoetry

A Javascript implementation of Gnoetry. It allows you to markov-generate a poem from a bigram model built on a weighed corpus. Then you select which words of the poem you want to keep, and which you want to re-generate.

jGnoetry provides you with several options:

More info about jGnoetry:

1c. eGnoetry

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:

1d. WpN

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.

2a. JanusNode

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.

The human can also generate from word-based or character-based bi- and tri-gram models, either using some of the pre-build models, or creating new models.

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.

Also, JanusNode can do Text Mapping, which replaces the characters in the text. Below is an example of a Shakespearean Sonnet mapped to “LeetSpeak”. New Text Mappings can be authored and added.

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

2b. ePoGeeS

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.

2e. charNG

charNG is a character n-gram generator with Markov, cento/cut-up, and one-char overlap modes.

2f. Mchain

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.

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.
  • Thinkzone Poem Generator – a slot-filling generator that lets you edit the templates as well as the words in each slot, and provides Javascript code.
  • 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.

Titular is the fourth program, designed to help the songwriter with song titles. It works by filling part-of-speech templates that were built from a corpus of actual song titles.

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)

That's all for now! If I've missed anything important, please let me know!

zp8497586rq
Be Sociable, Share!
tag_icon

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

5 Responses to “Interactive Poetry Generation Systems: an Illustrated Overview”.

  1. heliopod :

    Wow, Seriously Wow. Some really inventive and compelling generative digi-toys here. Will enjoy exploring and searching for inspiration and poetic bits to share.

    cheers, Jason Nelson

  2. great post–thanks.

    here’s another ‘unsupervised generator’: http://www.longestpoemintheworld.com. this is online. it is forever writing rhyming couplets. it gets twitter feeds and turns them into rhyming couplets.

  3. fwiw, I’ve added a couple interactive generator links to this guide recently:

    - WpN – a generalization of the Oulipo w ± n (n+7) algorithm, also covering erasures

    - eDiastic – a diastic reader implemented in JavaScript, to replace one that went offline

    - an emulator and paper on Theo Lutz’s Stochastic Texts, one of the first poetry generators

    - Wave Books’ Erasures tool

    - ALAMO’s Littéraciels – including Langage Algorithmique pour la Production Assistée de Littérature

  4. Latest additions to the poetry generator guide:

    several markov word n-gram generators: Mark V Shaney, Markov Text Synthesizer, an impressively compact perl script and a markov generator that produces rhyming lines.

    a Travesty (character n-gram) generator.

    Infinite Monkeys, a template poetry generator

  5. Yet more recent additions to this guide to poetry generators:

    jGnoetry, a javascript gnoetry implementation

    Icon Poet, an interactive windows app

    weltanschauung, a perl cut-up generation program

    GTR language workbench, a powerful text generation / manipulation tool