Ray Kurzweils Cybernetic Poet:
HOW IT WORKS
RKCP reads a selection of poems by a particular author or authors and then creates a
"language model" of that authors work. The language model incorporates
computer-based language analysis and mathematical modeling techniques. RKCP can then write
original poems from that model. The poems have a similar style to the author(s) originally
analyzed, but are completely original new poetry.
RKCP can combine authors by creating language models using more than one author file.
In addition, RKCP allows the user to create "poet personalities," each of which
specifies a specific language model (which RKCP has created from one or more files of an
authors poems) and a set of parameters which control certain aspects of the poetry
generation process. There can be multiple poet personalities derived from each language
model. One of the parameters specified in a poet personality is the type of poems, which
includes haiku, free form, and several other styles.
RKCP includes a plagiarism avoidance algorithm which attempts to avoid plagiarism of
the original author(s) analyzed, where plagiarism is defined as more than 3 words in a row
that appear anywhere in the original author(s) writings (however, note that
identical word sequences of more than 3 words are not impossible, and may nonetheless
occur).
RKCP uses the following aspects of the original authors that were analyzed to create
original poems: the (i) words, (ii) word structures and sequence patterns based on
RKCPs language modeling techniques (while attempting not to plagiarize the original
word sequences themselves), (iii) rhythm patterns, and (iv) overall poem structure. There
are also algorithms to maintain thematic consistency through the poem. RKCP uses a unique
recursive poetry generation algorithm to achieve the language style, rhythm patterns and
poem structure of the original authors that were analyzed, without actually copying the
original authors writings.
The language models produced by the "Poetry Analysis" program of RKCP contain
analyses of the language structures found in the poems that were analyzed using language
analysis techniques and a method similar to Markov modeling, a mathematical cousin of
neural nets.
When writing original poems, RKCP does the following to write each word. It first
determines a set of "goals" for the word. These goals are related to the
association of this word to be written with other words already written, the words
place in the poem and the poetry generation parameters defined in the current "poet
personality." RKCP then searches for the word(s) used by the analyzed poet(s) that
will fulfill this set of goals using computerized search techniques.
If it finds more than one word which fulfills the goals, it rates them giving each a
score. It does not necessarily select the highest scoring word because that would cause
RKCP to always right the same poem for a given poet personality. A higher ranking word is,
however, more likely to be selected.
This selection is, however, only tentative because later consideration may cause the
word to be ultimately rejected. RKCP continues this process writing word after word, but
it often finds that no word will fulfill the goals that RKCP has set for a particular
word. It then has to back up the process. It does this by deleting the previously written
tentative word and selects another word at that position in the poem (that fulfills the
goals for that earlier word), and then attempts to continue from this point. If ultimately
all of the possible words at the earlier point (that fulfill the goals for that word)
result in dead ends, RKCP then has to back up yet another word. This recursive process
continues going both forward and backward. Thus like a human poet, the process of writing
a poem is not necessarily always going in a forward direction. RKCP is continually
reconsidering its tentative word choices until it finds words that all fulfill the goals
at each point.
RKCP also has criteria for when to end a line and when to end a poem. It has criteria
for how lines in the poem relate to each other. All of these criteria are used in the
recursive generation of the poem. Some of these criteria have to do with the requirements
of the poem type (i.e., Haiku).
Sometimes RKCP will discover that it is unable to write the poem or a section of a poem
(i.e., a line) when it has fully and recursively exhausted all of the possibilities. It
then uses an algorithm to ease the constraints inherent in the goals for particular words.
It continues this process of easing constraints and recursively writing the poem (both
forwards and backwards) until it can successfully write the poem or section of the poem.