Autopoetry


This is an idle experiment in computer-generated poetry. Fiddle with the settings to generate a poem in the space below. Create a rhyming limerick, a rhyming quatrain, or a non-rhyming haiku. It may take a few seconds to load. Note: the words are chosen at random and weighted by topic, so there exists the possibility that objectional content may result.









Who is the author?


In one sense, I am the author because I wrote the program and compiled the dictionary.

I also chose the list of topics based on what struck me as the themes most significant to humanity and conducive to the creation of great poetry. Eventually I might make it so that you can type in your own topics (the tricky part is calculating cosine similarities in a reasonable amount of time).

In another sense, you are the author because you hit the Build button and physically ran the program.

The program is written in a client-side computer language (PHP), so the random decisions were made on your computer rather than on my server. Also, you might perceive an overall narrative meaning and structure to these random decisions. In that case, your own brain has originated the imbued meaning of the poem.

In a third sense, there are millions of authors because the topic associations are based on language found all over the Internet.

Depending on the Topic Source you chose, the dictionary was seeded with nearest neighbor terms from word embeddings that were trained on a large corpus of English text taken from websites, blogs, news articles, Wikipedia articles, and tweets (see below for information on specific models).

The determination of words within the genres embodied by terms like "love" and "ocean" is based on large-scale usage patterns derived from billions of words found on the Internet. Even if you didn’t write any of those words personally, you contributed to the cultural milieu that created them and share some of the credit for the associations that arise.

Resources


The original incarnation of this project was a Tumblr account that posted poems at irregular intervals.

Using R and Python, I created a rhyming metrical dictionary based on the word pronunciations found in the CMU Pronouncing Dictionary. I used PHP for the program that randomly selects words from this dictionary and places them into a metrical frame based on the constraints of light syllables.

To give themes to the poems, I seeded the dictionary with a list of similar terms. I used pre-made word embeddings, and for each topic I compiled a list of nearest neighbor terms ranked by cosine similarity. The four word representations I used were: the Global Vectors for Word Representation (GloVe) trained on a combination of Wikipedia and the Gigaword Corpus, the GloVe trained on the Common Crawl Corpus, the GloVe trained on a Twitter Corpus, and the NLPL word embeddings based on the Gigaword Corpus.

Last Updated May 29, 2022