by Paul Curzon, Queen Mary University of London
(Updated from the archive)
The first program that was actually creative was probably written by Christopher Strachey, in 1952. It wrote love letters…possibly gay ones.
The letters themselves weren’t particularly special. They wouldn’t make your heart skip a beat if they were written to you, though they are kind of quaint. They actually have the feel of someone learning English doing their best but struggling with the right words! It’s the way the algorithm works that was special. It would be simple to write a program that ‘wrote’ love letters thought up and then pre-programmed by the programmer. Strachey’s program could do much more than that though – it could write letters he never envisaged. It did this using a few simple rules that despite their simplicity gave it the power to write a vast number of different letters. It was based on lists of different kinds of words chosen to be suitable for love letters. There was a list of nouns (like ‘affection’, ‘ardour’, …), a list of adjectives (like ‘tender’, ‘loving’, …), and so on.
It then just chose words from the appropriate list at random and plugged them into place in template sentences, a bit like slotting the last pieces into a jigsaw. It only used a few kinds of sentences as its basic rules such as: “You are my < adjective > < noun >”. That rule could generate, for example, “You are my tender affection.” or “You are my loving heart”, substituting in different combinations of its adjectives and nouns. It then combined several similar rules about different kinds of sentences to give a different love letter every time.
Strachey knew Alan Turing, who was a key figure in the creation of the first computers, and they may have worked on the ideas behind the program together. As both were gay it is entirely possible that the program was actually written to generate gay love letters. Oddly, the one word the program never uses is the word ‘love’ – a sentiment that at the time gay people just could not openly express. It was a love letter algorithm that just could not speak its name!
You can try out Strachey’s program [EXTERNAL] and the Twitter Bot loveletter_txt is based on it [EXTERNAL] Better still why not write your own version. It’s not too hard.
Here is one of the offerings from my attempt to write a love letter writing program:
Beloved Little Cabbage,
I cling to your anxious fervour. I want to hold you forever. You are my fondest craving. You are my fondest enthusiasm. My affection lovingly yearns for your loveable passion.
Yours, keenly Q
The template I used was:
salutation1 + ” ” + salutation2 + “,”
“I ” + verb + ” your ” + adjective + ” ” + noun + “.”
“You are my ” + noun + “.”
“I want ” + verb + ” you forever.”
“I ” + verb + ” your ” + adjective + ” ” + noun + “.”
“My ” + noun1 + ” ” + adverb + ” ” + verb + ” your ” + adjective + ” ” + noun2 + “.”
“Yours, ” + adverb + ” Q”
Here characters in double quotes stay the same, whereas those that are not in quotes are variables: place holders for a word from the word associated word list.
Experiment with different templates and different word lists and create your own unique version. If you can’t program yet, you can do it on paper by writing out the template and putting the different word lists on different coloured small post-it notes. Number them and use dice to choose one at random.
Of course, you don’t have to write love poems. Perhaps, you could use the same idea for a post card writing program this summer holiday…
More on …
- Try out Strachey’s program [EXTERNAL]
- The Twitter Bot loveletter_txt [EXTERNAL]
- Writing Love letters, Christmas Greetings and postcards (Linked Activity Page on Teaching London Computing)
- Natural Language Processing [PORTAL]
Related Magazines …
- Issue 14: Alan Turing – the genius who gave us the future
- Issue 18: Machines that are creative
- Issue 22: Creative Computing
This blog is funded by UKRI, through grant EP/W033615/1.
3 thoughts on “The algorithm that could not speak its name”