Zip file of all code + dependencies
This ChucK program takes in two word models - our standard Word2Vec model + a Syllables model which has mappings from word => num syllables.
Then, it reads an input poem, assumed to be in iambic pentameter, uses the Word2Vec model to change each word into a synonym with the same number of syllables, and then recites it in rhythm (with a tone).
I'm quite happy with the output for this, but it could be extended to include more features. In addition to a syllable map, I could also include rhyme scheme enforcement and stress enforcement. The CMU pronounciation dictionary contains stresses and phonemes, so it should be feasible to do programatically.
I feel that the basic applications of the word2vec models are not very interesting, which is why I wanted to experiment with enforcing structural rules into the output of my program. I really enjoy reading out the gibberish sonnets to the beat, but I do feel that the output content-wise is underwhelming, as parts of speech and tenses and other important linguistic properties aren't retained when choosing a similar word. Of course, with more models and engineering, those constraints could be added, after which I think this would be a very compelling program to morph poems.
Files: - ChucK Code - Python helper (to read syllable count from the pronunciation dictionary) - Sonnet 106 - Syllables dataset
This ChucK program will allow you to compose a song consisting of chords, and then will print out words "associated" with that chord. (By associated, I mean that I came up with a word for every root pitch x quality combination, and then ask word2vec to spit out 3 similar words.)
From a technical perspective, I found a rather efficient way to map a 3-character string representing a chord to an array of pitches. Unfortunately, the input and output streams are combined, which makes for a less-than-artful display. A seperated input and output console would make the output much more appealing.
I'm less sure about whether the output of this constitues as poety. My program is musically concious about ending smoothly when the user wishes to quit, so that could be considered poetic. Perhaps the repetitive structure, with the handpicked first word and three "synonyms", adds an air of poetry to this program as well.
Files: - ChucK Code
I assume that the model is named "glove-50.txt." When attempting to run this code, it's important to have that file named correctly!