Skip to main content

FPTK (Formal Poetry Toolkit)

··2 mins

I’ve been thinking about something like this for quite some time. As God has directed my steps, and those skills I learn as time goes on, I think I finally have the correct set of technical skills to begin pursuing this.

First, I think I will need to define two datatypes. I think I will store the defaults for all of these in a database, and secondarily use text files (plain text for forms and json for words) to add custom data.

Data types:

  • Forms

    • These are definition files for formal poetry of all types.
    • First line is name of form.
    • each line contains 1’s and 0’s to indicate stressed and unstressed syllables respectively. This will also indicate the number of metrical feet.
    • Then the line will have a space followed by a letter. The letter indicated the rhyme scheme.
    • For example, a Spenserian sonnet would be indicated as:
    Spenserian sonnet
    0101010101 A
    0101010101 B
    0101010101 A
    0101010101 B
    0101010101 B
    0101010101 C
    0101010101 B
    0101010101 C
    0101010101 C
    0101010101 D
    0101010101 C
    0101010101 D
    0101010101 E
    0101010101 E
  • Words

    • These are the heart of the program.
    • I want to be cautious that I include all the information that I need, but nothing that can be gleaned from the information that is already included.
    • An example of this
    word: early,
    pronunciation: "ER1 L IY0",
    stress: 10,
    pos: [adjective, adverb],
    antonyms: [future, old, late, later, worn],
    synonyms: [fresh, initial, new, recent]

Use Clingo to enforce formal constraints on lines of poem.

  • phase 1
    • stress pattern (metre)
    • rhyme (for 3 or more syllables, last vowel and consonant stem, for 2 or less, last consonant stem)
    • word order informed by parts of speech
  • phase 2
    • alternative words (synonyms) based on stress
    • near rhymes
    • assonance
    • consonance/alliteration

Python Class:

  • Poem
    • Model
      • selected form
    • Line
      • each line in the poem

Where the data come from