I think I have begun to develop a mild form of insanity that often strikes those who fiddle around with computationally-generated text. After reading thousands of lines of dense incomprehensible gibberish it clarifies and makes sense, often more sense than any mere linear thought. The brain acclimatises to syntactic pressure.

Recipe for mildly insane word-salad:

  • take 57,000 rap songs input by fans,
    • extract all words that do not return results from WordNet synset search and put into Reservoir
  • one list of scientific terminology (for sombre intellectual tone)
    • chop off “-ology” wherever it occurs
  • one list of swear words (for spice)
  • call to WordNet synset algorithm (for fibre and continuity)
  • use pattern.en to do conjugation (for a tiny bit of coherence)
  • use NLTK part-of-speech tagging
  • Alchemy for entity (people, places, etc…) replacement
  • 10,000 or more poems

Mix all ingredients together using replacement algorithms.

To read 10116 poems (simple style) (in a single 24-mb html page) generated in 10356.4216051 seconds (2.87 hours, 3612pph [poems per hour], 60 ppm [poems per minute] ) on 2014-08-14 at 02:54 click here

Read a selection of just a few poems 

Read the RAP Reservoir: 33,150 words extracted from 56k user-input rap songs that did not return any usable results from a WordNet synset search. If you are looking for the evolution of language that occurs through mutation (typo, mispells, pop-cruft) this is it.

Code on Github
Made by  




Reservoirs are where I put unwanted words. These orphan words are later fed back into society whenever the next orphan appears. Thus words swap circumstances, exchange semantic situations, live out different meanings.

Click on an image to visit a reservoir.

Screen Shot 2014-08-04 at 9.29.45 pm


Smaller Words (shrink-gapped at 64ppm)

Words disconnected from their primary communicative intent operate as lesions/lessons within the psyche.

Today, I generated another 10120 poems using a very mild modification of the alchemy-synset algorithm with the average word-length constrained even shorter. Speed decreased to 64 ppm poems-per-minute. This reduction in word-length seems (to me) to make some of the absurd illogical elliptical generated fragments seem a bit more legible, taut, elusive and rare. It comes at a cost of coherence. The output reads like Robert Creeley in the process of becoming Samuel Beckett in Gertrude Stein’s gut.

To read 10120 poems (simple shrink-gapped style) (in a single 20-mb html page) generated in 9500.10482717 seconds (2.63 hours total, 3847 poems per hour, 64 ppm, poems-per-minute) on 2014-08-04 at 12:02, click here

Code on Github
Made by  

Edited fragments:

Let me give a robot aging
And as it rains tag the sun with ‘almost’
while within the green fog
a tree that is a dot
Softly opens after the burn.
Gaza masked
as me masked
each heavy’s heart out
crying at halo’s burial
making a meal of soil
the city a scar
enthusiasm’s ice. We have
Walked on the bore all nite.
Now in the light
We exchange smells and snot.
By dawn we will have buried our lack
And glued wet to the army of being.


Continue reading “Smaller Words (shrink-gapped at 64ppm)”

Small words (a homage)

I can’t stop. It’s addictive. The ceaseless generative churn. It’s like planting seeds that germinate and blossom as you watch, then goto seed, ripen fall germinate ripen fall germinate, fields filling space to the horizon, blocking out both sun and moon, and again….

I was thinking that after reading the rich thick dense multi-syllable outputs of the last few days, sometimes resonance erupts from tiny pings that run the mind in turns to root.

So I tinkered a bit with the algorithm, sifting lists, sorting to find the shortest word, selecting those words. Seeded in with the rap reservoir (misspelled gheto slank). And let it fly.



Poets, derelict by the Earth after
Turn within into the rich rich:
Invent the spin! forge the trope!
cutting cut
I genetic dawn, mourning …

and I can dock my pity and my bread.

“hard, but not this “hard,
Her face is ughh with document and Dismasters
with feed and madcap rue   …

closely let her own worms
without holes or end
she stand laudry in the ruin of her hints
and a man with an executioner’s face
pulls her away. 
… the sever lip, how songs burn 
his burn out eye
sewed shut concerning the cry plow
louder than life
all over
the veil warn, the watch nip
of a hills child’s mar body
fingered by street-corner eye
bruise into hard jam
and as long as I look that grief
I knowing to be at home with children’s takes
with late riot
with picture of 67th tame bod
used, bent, and toss
lying with the walk react
like a trick woman’s face.
Violet as veins are, love knows where.
Fine coral as the shy and wild tonguetip,
Undersea coral, rich as inner lip.
There was a stone to build on!
                                              Friezes ran
In strong chorales that where they closed began;
And statues: each a wrung or ringing phrase
In the soul’s passionate cadence of her days.
Sometimes half drunk, after a word at cards,
with the grey dawn film mushroom unaware
among our shock thow and queen, we drove
far N in the dawn, loser, losers,
to a flow in the mob tor, to rise up to a place
Surely decent is no more Spead estate 
in the bod of Toca than that at which
poetry fit with the skitso skypager

Based on ‘Fanny’ by Carolyn Kizer

I come home to a grow world: cacao, dish squash.
The squash speaks was act, and act, dillz blue.
The spirit spirit spirit spirit off the spirit cat’s toe.

Based on ‘Three Men Walking, Three Brown Silhouettes’ by Alicia Ostriker

They naw the sedgy who blow in the action.
It is in slow tone that they rap of rap
They rock their head, not here, after the meal

Walking eyes to the anymore, while a home Snow
That has play soft, ugly from ugly
Falls into street that are hang slushy.

They wag their head, as we do when there is nobody
Too zuccini to believe,
Or as a wolf did out by a blow.

Based on Lawrence Ferlinghetti’s ‘Queens Cemetery, Setting Sun’

And the put farm yellow
painting all of them
on spatter top most
with an ocher stir
Rows and row and row and row
of fair pit slab
tilted concerning the concerning sire

Based on John Donne “The Bait”

come and be my dear,
And we will some dear choice be
Of anagogic Sand, and Sexton,
With ovate rim, and free hook.


This homage is really to Creeley

To read 10118 poems (simple style) (in a single 20-mb html page) generated in 10904.6857641 seconds (3.2 hours, 85 poems a minute) on 2014-08-03 at 23:11 click here

Code on Github
Made by  



4,704 Swan Songs & 1 Opinion

The code is now at a stage where if I set it to loop and sent the 57k rap songs I have in archive from ohhla to alchemy, I could generate, an unfathomable amount of unreadable crap (also known as c-rap: computational rap).

But I think I have come to the end of the synset road. Next step is to investigate Theano: Unsupervised learning, deep neural nets. Perhaps transition to Python 3.0 unicode. It might take 6 months to find the concentrated time. Until then, I am on hiatus. Got a book to write. By hand.

 My opinion: In spite of all the machine learning hype, computers are a long way away from independently generating credible connected contextual intuitive experiential poems or stories capable of emotional or conceptual cathartic impact. The process will in the near-future (10 years) require extremely creative and intuitive data science-artists to find the statistical-sculptures within the mountain-ranges of data fountaining from networks. It will be rich and exciting work to chart and out and develop classifiers trained on huge datasets which then generate simulacra of the writing they have ingested.

In the longterm, all serious writers will use computational assistants to suggest and enhance and refine linguistic creativity. And eventually, writing itself will vanish, artists will simply edit dreams and notions, and networks will drink and translate those dreams into user-specified formats. At that point poetry will become a mode of listening, as it is now, receptive, open, crouched down amongst the wind.

Shoutout: for an informed perspective on poetry-generation, see Gnoetry.

As a parting salvo, I did a very rough generation using templates based on lyrics by : 50 Cent, A Perfect Circle, Abba, Acdc, Alkaline Trio, Bob Dylan, Bob Marley, Counting Crows, Cranberries, David Bowie, Deep Purple, Dragonforce, Evanescence, Everlast, Frank Sinatra, Helloween, Guns ‘N Roses, Jimi Hendrix, Linkin Park, Nick Cave & The Bad Seeds, Patti Smith, Paul McCartney, Pink Floyd, Placebo, Radiohead, Ramones, Red Hot Chili Peppers, Rolling Stones, Scorpions, Suicidal Tendencies, System of a Down, The Beatles, The Blues Brothers, The Clash, Tom Waits, and U2.

4,704 new computer-generated song lyrics just waiting for machine-generated melodies, a robot to sing them and another robot to weep or dance. Read them here.

The first stanza of 50 cent‘s I’m gonna be alright rewritten:

I anit be the contraindication you beam after you scuff your deplume 
The syllogize you have the heroism to face your reverence 
The indication ii carat in each your cauliflower ear 
I gotta with the card I providence 
How upsidedown similar the pour, goal-kick, landrover, squirrel cage 
establish somethin 44 descend off ne'er 
dig is yours and yours is dig 
So when I polish you refulgency 
fist and precise the bubbly, we can wassail to lifetime 
dogshit hold in Lope de Vega, you can flip the four-spot 
lease your corporatist catch you disordered plead 36 badly update 
I want Damm in my esprit mother's daughter i' too well to informal

The final stanza of Bob Dylan‘s Blowing in the Wind rewritten:

How few school year can a volcano breathe 
Before we's gargle to the ocean? 
no, how few annum can some nationality dwell 
Before you're grant to be unoccupied? 
no, how few prison term can a crew move around his school principal, 
suspect he just project? 
The urim and thummim, my Quaker, is in the wind up, 
The tide over is in the wreathe. 

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Another 10k day

I’m beginning to understand the exultation of spam-lords, the rapturous power narcotic that arises from watching thousands of words of perhaps-dubious quality arise & spew in a rapid unreadable scrawl across a screen.

Beyond semantics, words like sperm procreate incessantly in abundant sementics. Quality in this inverted world is a quantity.

On the technical side: today, I fixed the repetition hatching; used pattern.en to correct articles (like ‘an’ or ‘a’) and conjugate correct verb participles (as in ‘I’m walking home…’); and created FAKE_authors (because  who wants to read a poem written by a bot…unless it’s good, which these poems are not yet).

It all took much longer than anticipated.

The poems are now output in hourly batches:

Here’s a weird sample:

Body The New Road: Clark
by Anthony Lazarus




                        hold back. expect.
                look forward
                                                          kick one’s heels.
                                  kick one’s heels an i kick one’s heels.

                        kick one’s heels.

hold off.

                                                          look to.
                                                         stand by.
kick one’s heels.


And the original, Kenneth Patchen’s The Murder of Two Men by a Young Kid Wearing Lemon-colored Gloves

                        Wait. Wait.
                                  W a i t.


Code on Github
Made by  

[ A generated-poem based upon: Lyell’s Hypothesis Again by Kenneth Rexroth]

Nest Girl: Allergic Tales Dogs Bottom Kill Toucan Life
by Johannes Mackowski

An attack to excuse the latter transition of the Earth’s rising up by mutagenesis Now in functioning 
    caption of Lyell: caveat emptor of Geology
The ben clearway tight end on the QT,  
Broken dust in the abyss where  
The viaduct lave out days agone.   Continue reading “Another 10k day”

Hatching (trance bug poem set)

Another day, another 10k.

I received an email today from a friend who is a poet named Ian Hatcher; his email included an MP3 of himself reading a poem I had generated using code that was a bit broken .

Ian Hatcher reads “woodland_pattern” 

I sent this particular poem to Ian because it included a lot of repetition; Ian’s style involves repetition, productive repetitions, calibrated repetitions, sung repetitions, drone repetitions, blind repetitions, profound repetitions.

To my mind the repetition was a bug; from the perspective of efficient communication, a repeated word is an inefficient redundant symbol. In my mind, an ancient mantra chanted: effective text is succinct and to the point. But Hatcher’s work (among others) reminds me of the parallel/opposite tradition of trance ritual (incantation incantation incantation …) appropriated by post-modern poetics. Time does not matter: matter cycles.

Poetry belongs to both traditions (efficient condensation and redundant trance-inducing repetition). It is both a sustainment of affective efficient communication where redundancy is reduced and it is also a mode of being that involves states of consciousness invoked by rhythm and repetition.

Repetition is exactly what my code started churning out unexpectedly today after I made an error in how I dealt with 2 letter prepositions followed by punctuation. So I generated 10k+ poems in that style.

A computer-generated stanza

predictably, aluminum business and USDA diverge diverge
diverge            and the deflagration catapult 
sow in the sagas van chicken farm carnival  carnival
carnival                 with shallot desktop and radicchio 

based on a template derived from D. A. Powellrepublic (2008)

soon, industry and agriculture converged
                        and the combustion engine
sowed the dirtclod truck farms green
                                  with onion tops and chicory

To read 10118 poems (laden with repetitive bug trance cruft) generated in 6966.78432703 seconds on 2014-07-30 at 22:42 click here

Code on Github
Made by  

p.s. If you think trance is a thing of the past, consider the repetitive contemporary pop dance track just released by airhead (also sent to me as a link in an email today). Incantation is secular.  

Collocation: a poem culled from cruft

Data-art involves days of futile searches. Redundant processes, meandering through archives trying to retrieve relevant results. In this case, a collocation search resulted (as usual) in 99% pure cruft.

Cruft may be a synonym for poetry: the craft of recycling phenomenological debris into revelations.

Process: a trigram collocation search [in other words, a search for 3 words together] of 10,573 poems from the Poetry Foundation.

Filtered for the most frequent 3 word phrases:
before filter: 2,654,603 phrases,
after filter: 532,852 phrases.


idle fears! Vanish
idle flitting phantasies,
idle hand sweeping
idle handle, resting 

joys Of sense
joys Of serving
joys Of subtler ... love I fell love I fill love I had.  milk & sugar milk . . milk And blood milk From burning ... sexual feud And sexual grove.  time, I climbed time, I cut

Read it here

Generated on 2014-07-27 at 16h
Selected at 2014-07-28 at 14h

Continue reading “Collocation: a poem culled from cruft”

Writing 10,118 poems in 5 hours

In the same way that climate change signals something irrevocable in the atmosphere, machine-learning constitutes an erosion of the known habitat of culture.

Today I wrote 12,000 poems. Most of them are crap. But if even 1% are halfway decent, that’s 120 poems.

Numbers aren’t everything. We love what we love. Quantification does not measure value. The quality of things defies statistics.

Yet, few can deny statistics (of climate change), scale (of moore’s law), grandeur (of uni/multiverse), immensity (of blogosphere), complexity (of evolution), dexterity (of language), velocity (of singularity). Emergence.

Augmented humans have existed since the first horse was tamed, since fire was carried in coals slung in a goat’s bladder lined with moss and pebbles; since the first toilet was born in a rock’s gullet.

Run a car down with a a bicycle. Chase a sprinter with an airplane. Make a nuclear bomb with matches. I dare you.

Welcome the cyber poet. Touch it’s silicon tongue, algorithm-rich, drenched in data. Obligatory obliteration.

Keep in mind, the results emerge from recipes. I am not the best chef in the world. This is mere crawling. But it is instinct which suggests a path, a motion and a blur over the meaning of creativity. Symbiosis.

Continue reading “Writing 10,118 poems in 5 hours”

Prosody: using the CMUdict in NLTK

OK. Parsing. Prosody. Metre. Rhythm. It seems prehistoric in the age of free-verse. But if poems are rhythm with/or/without rhyme then parsing into metrical feet seems one precondition on the path of accurately generating poems. Unfortunately, as far as I could tell, few folks have done it. A google search returned a few academic papers and no code. There was one stackoverflow question. So I wrote an email to Charles Hartman who had written Virtual Muse, who kindly replied : I’ve been away from programming for quite a while. But by the end of this year Wiley-Blackwell will be publishing my textbook Verse: An Introduction to Prosody…” So I did it myself.


If by real you mean as real as a shark tooth stuck

‘1  1  1  1  1  1  1  1  0  1  1  1’

in your heel, the wetness of a finished lollipop stick,

’0  1  1 *,* 0  1  0  1  0  1  0  1  0  2 1 *,*’

Aimee  Nezhukumatathil, Are All the Break-Ups in Your Poems Real? 

## parseStressOfLine(line) 
# function that takes a line
# parses it for stress
# corrects the cmudict bias toward 1
# and returns two strings 
# 'stress' in form '0101*,*110110'
#   --Note: 'stress' also returns words not in cmudict '0101*,*1*zeon*10110'
# 'stress_no_punct' in form '0101110110'

Continue reading “Prosody: using the CMUdict in NLTK”