Skip to content

notes towards a taxonomy of poetry generators

May 3, 2011

OK, I’ve got to quit screwing around and get real (discrete!). First, let’s define a poem.

Let W be a set n1, n2, …, n|W| where all nx are either words, characters, strings, or more complex linguistic entities. (I’m not sure if I should define W as a set of sets, or just partition it on a case-by-case basis later…)

Let P be a sequence w1, w2, …, w|P| where P is called a poem and each wx represents a word or other part of a poem. (I could define intermediate sequences representing lines and verses… not sure if that’s necessary though.)

Now let’s define ways of working with that poem.

Let i be a method for assigning an element of W to a w in an P. This represents a way of determining the initial version of the poem.

Let d be a method for using a w in an L to output an element of the pair (editable, static). This represents a way of determining which linguistic entities in an existing poem will be edited during poetry generation revisions.

Let R be a subset of W. These are called the replacement entities that will be used during revision editings.

Let r be a method for using a w in a P to output an element of R. This is called the replacement method for using the replacement entities to changed the edited elements of a poem during revision.

(I use the word “method” because it could be either an algorithm or a human selection; not sure if I should just call it a “function” and leave the details for the cases…)

Now let’s define a basic poetry generation algorithm.

1.   specify i, d, and r
2.   set P to i(P)

3.   for each revision
4.      for each w in P
5.         if d(w) = editable
6.            set w to r(w)

Step 1 seems qualitatively different from the rest… probably should remove it… but its an important part of authoring, I want to acknowledge it somehow…

Anyways, my point is that poetry generators can be classified by how they vary i, d, and r. This is basically an extension of the representations I developed when discussing WpN. I think the algorithm above is general enough to handle Oulipo n+7 “replacement” generation, “combinatorial” poem like “100,000,000,000,000 Poems”, erasures, template slot-filling, as well as n-gram, diastic, and grammar-based language model-building generation. Eventually I want to go through all the poetry generators I’ve looked at so far and decide how their generation algorithms can be mapped to the algorithm above, which will give me a handle on how to classify them.

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: