Retirement gift for Jim Cathey, Dept. of German & Scandinavian Studies, UMass.
Old English poetry has a unique style. That style arises from a limited vocabulary, a small set of permissible meters, alliteration, a mid-line caesura, and more. A fun exercise is to try to master the style.
Here, for example, is my attempt at “Mary Had a Little Lamb.”
Mary, ring-locked one, keeper of lambs Proud Field-walker, hears among flocks A white-robed one sorrow-bleat. The snow-clad beast stepped behind.
And “Jack Sprat”:
Jack, son of Sprat boasted not Nor gave high praise to fat. Strong-minded lady proud in the hall Scorned meat too lithe and lean. Along the mead bench from wide plates Both together swallowed all.
Endless fun! How about “Lud’s Bridge, Fallen to Ruin”?
We have heard songs from ancient days Of the whale-road's arch into ruin fallen, How Lud, ring-giver of Britons, commanded quickly that a high bridge be wrought of giants' stones. Under heaven's clouds no greater deed was known By wise counsellors lore-laden in the hall. A fell wind sorrowful song-bearer feller of oaks wound along fated paths And toppled stones. That was no good bridge.
During an Independent Study on the Battle of Maldon this week, we noticed that in lines 109 and 110, the weapons of war were named in the third lift. The verbs were in the fourth:
grimme gegrundene garasfleogan
bogan wæran bysige bord ord onfeng.
A lift is another term for one of the four heavily weighted syllables in the OE poetic line. Whether some have more semantic force than others is a question raised by Professor Smirnitskaya of Moscow State University. Her student, Dr. Ilya Sverdlov of the Helsinki Institute of Advanced Study, gave a terrific paper on lifts and semantic force here at UMass many years ago.
I wrote a program to extract the third lift from every line. Recall that every OE poetic line has four major stresses, a caesura between the second and third stress, and alliteration across the caesura.
The program is in Python. For each line of the poem:
I remove OE stop-words
divide a line into half-lines (called the a-line and the b-line)
take the first letter of each word in the a-line in order to establish a pattern of alliteration in the b-line
return the third lift
At the moment, the third lift is unformatted. But I’d like to format it in color if it’s an alliterated lift. That’s for later. Also for later is adding some functionality so that this program can retrieve any lift from any poem along with the part of speech of that lift (e.g. “garas”, noun plural). First, the results. Then, the code. NB. Some of the results are inaccurate—I’ve marked those with a Kleene star.
& a ac æ æfter ær ære æt after and ba bæm be bi binnan bu butan buton ða ðæm ðære ðæs ðæt ðam ðan ðar ðara ðare ðas ðe ðeah ðenden ðeos ðes ðider ðin ðinre ðis ðisra ðisre ðissa ðisse ðisses ðissum ðon ðrie ðritig ðu ðurh ðy ðys eac eala eft eow eower for forþon forðon forðam forþan
fram from ge gea geo gif git he heo heom heora hi hie hiera him hiora hira hire his hit hwa hwæm hwæs hwæt hwam hwile hwon hwonne hwy ic in inc incer inne iu lice me mec mid midd min minne ne nu oð oðæt oðat oððæt oððat of ofer oft on ond se seo siððan siðþan sum sume swa
swelce swilce swylce sylfa sylfe sylfes sylfum to unc uncer under ure us we wið wit ymbe þa þæm þære þæs þæt þam þan þar þara þare þas þat þe þeah þenden þeos þes þider þin þinre þis þisra þisre þissa þisse þisses þissum þon þu þurh þy þys
def flatten(mylist):
flatlist = []
for x in mylist:
if type(x) == tuple or type(x) == list or type(x) == set:
for y in x:
flatlist.append(y)
else:
flatlist.append(x)
if type(x) == list:
x = flatten(x)
continue
return flatlist
def get_text(title):
path = 'textsdata/'
lines = []
with open(path + title) as fh:
temp_lines = fh.readlines()
fh.close()
for line in temp_lines:
lines.append(line.rstrip(' \n'))
return lines
def find_lifts(line):
line_returns = []
halflines = line.split('|') # halfines[0] is the a-line, halflines[1] is the b-line
try:
a_half = halflines[0].split()
except IndexError:
a_half = None
try:
b_half = halflines[1].split()
except IndexError:
b_half = None
if a_half:
a_half = halflines[0].split()
line_returns.append(remove_stopwords(a_half))
if b_half:
b_half = halflines[1].split()
line_returns.append(remove_stopwords(b_half))
return line_returns
def remove_stopwords(phrase: list):
# use only after loading stopwords in MAIN
phrase_return = []
for word in phrase:
if word not in stopwords:
phrase_return.append(word)
return flatten(phrase_return)
def get_alliteration(half: list) -> object:
governing_letters = [w2[:1] for w2 in half[0]] # from the first half
for w3 in half[1]:
if w3[:1] in governing_letters:
return w3
with open('textsdata/oe_stopwords.txt', 'r') as fh2:
stopword_temp = fh2.readlines()
fh2.close()
stopwords = [w.rstrip('\n') for w in stopword_temp]
maldon_text = get_text('maldon_formatted.txt')
counter = 0
for maldon_line in maldon_text:
counter += 1
this_line = find_lifts(maldon_line)
print(counter, this_line, end='\t\t')
third = get_alliteration(this_line)
if third is None:
third = this_line[1][0]
print(f'{third: >}')
If you would like the formatted text of Maldon please write me.
Crosswords are intriguing programming problems. How do you generate a New-York-Times-style crossword puzzle from a list of words? During an attempt (in Old English of course), I noticed some very interesting features of Old English words.
Consider the upper-left section of the crossword puzzle. An easy solution to generating words is to map the phonological shape of words before searching for instances of that shape in a list. So, an easy shape is consonants (C) and vowels (V) alternating. If 1-across is C-V-C-V, then the next word down, 13-across, is V-C-V-C. Then, you search the list of OE 4-letter words for that shape.
Say 1-across is C-V-C-V, bana ‘murderer’. 13-across might be V-C-V-C, eþel ‘homeland’. That sets up 1-down to start with b–e– and 2-down to start with æ–þ-. You’d think there would be plenty of words to fit that scheme.
Butthere are not! After extracting all words from the poetic corpus of Old English, I divided them into 3-, 4-, 5-, 6-, and 7-letter word lists. There are 133 tokens (words rather than lexemes) with the shape V-C-V-C:
Notice how many end with dative singular markers like –e. It suggests that we are looking at inflected forms of a C-V-C shape, one of the most common Proto-Indo-European root forms. Again, in the poetic corpus, there are 350 such tokens:
269 of the CVC forms overlap with the CVCV forms, suggesting that
CVCV forms that overlap with CVC forms are inflections of the root, or
they are coincidentally similar and represent two different lexemes
As I continue to refine my OE Parser, I wonder whether employing PIE root forms might be useful in identifying lexemes. Certainly, when I turn to programming James E. Cathey’s tremendous diachronic phonology of Germanic languages, root form/shape will play an essential role. One of the methods I wrote in python checks for root form/shape, and I hoped to use it to identify spelling variants—allowing variation only in root vowels of a form. So: C-V(1)-C, C-V(2)-C, … C-V(n)-C.
Over the last eight months my approach to tagging an untagged sentence of Old English has been three-fold.
First, I perform a simple look-up using four dictionaries (Bosworth-Toller, Clark-Hall, Bright’s glossary, a glossary of OE poetry from Texas), then save the results.
Second and independently, I run the search-term through an inflectional search, returning the most likely part of speech based on suffixes and prefixes, then generate a weight based on whether or not that POS is closed-class or open-class. Those results are also saved.
Third and finally, I check the search-term against a list of lemma that I compiled by combining Dictionary of Old English lemma and Bosworth-Toller lemma. If the lemmata is not found in the list of lemma, then I send it to an inflectional search, take the returned inflectional category and generate all possible forms, then search the list for one of those forms; if the form matches an existing lemma, then I break; if not, I do it again by taking the next most likely part of speech. Those results are also saved.
After these three steps run independently on the target sentence, I compare all three sets of saved results and weigh them accordingly. No possibilities are omitted until syntactic information can be adduced.
(Although I haven’t written it up, a search of the Helsinki Corpus might be useful as a fourth approach: if the term is parsed in the YCOE, that information could add to the weight of likelihood.)
Taking three approaches and comparing three sets of results is about 85% accurate.
Syntax
In order to improve the weights on the guesses, I’m writing a python class to guess syntactic patterns. I would like the class to examine the words without any information on their inflections or roots. The percentages here are not very good, but if you accumulate guesses, then accuracy improves (solving for theta). So, I look at
the position of the term in a sentence. The percentages here are barely useful. If the term is in the first half of a prose sentence, then it is more likely than not (51%) to be something other than a verb or adverb. If the term is in the second half of the sentence, then it is more likely than not to be a verb or adverb. These percentages are discovered by parsing all sentences in the Corpus except those that derive from OE glosses on Latin—where underlying Latin word-order corrupts the data.
its relative position with respect to closed-class words. These percentages are a little more useful. For example, if the term follows a determiner, then it is more likely to be a noun or adjective than to be a verb.
whether or not it is in a prepositional phrase and if so where. The word immediately following the preposition is likely either a noun or an adjective.
whether or not it alliterates with other words in the sentence (OE alliteration tends to prioritize nouns, adjectives, and verbs).
The point of this python class is to come to a judgment about the part of speech of a term without looking it up in a wordlist. So far, a class meant to identify prepositional phrases works fairly well—I still need to deal with compound objects.
Screen shot of tagger with Prepositional Phrases
You’ll notice in the screenshot above that the tagger returns prepositional phrases. If you know python, you can see that highly likely tags are returned as strings and that less likely tags are returned in a list. This distinction in data types allows me to anticipate the syntax parser with a type() query. If type() == list, then ignore. You’ll notice that it has mischaracterized the last word, gereste, as a noun or adjective. It is a verb.
Next ?
The last step is to merge the two sets of weights together and select the most likely part of speech for a word. Since the result is so data-rich, it allows a user to search for syntactic patterns as well as for words, bigrams, trigrams, formulae, and so forth.
So, a user could search for all adjectives that describe cyning ‘king’ or cwen ‘queen’. Or find all adjectives that describe both. Or all verbs used of queens. Or how may prepositional phrases mention clouds.
The second lyre is named for the interlace pattern on its headstock. The last lyre had two dragon heads, so it’s the Dragon-head lyre. Simple. Number Two is made completely of mahogany. The Sutton Hoo lyre was oak and had no sound holes. So, it seems as if the original makers relied on the sonority of the box itself to carry the sound waves. That means paying close attention to grain direction and keeping the joints tight. I decided on a frame, much like a tortion box, but with the head stock exposed.
The frame is 3/4″ x 3/4″ mahogany. There are two main points of potential warp: torque on the cross-beam and tilt on the base. The headstock is so heavy and the string pins so thick that tilt is unlikely there. So, joinry type will be chosen to account for that.
Click on any picture to enlarge it.
The main crossbrace is joined with a through-tenon. If it is seated in the mortise well, then the brace won’t tilt (or roll) forward or backward, causing the lyre’s skin to buckle.
You can see that it’s pretty well seated. There’s a little daylight, but I filled that with epoxy. All the main structural joints are epoxied. The base of the lyre is going to anchor the force of the strings, like the anchorage of the Brooklyn Bridge. So the main counterforce, it seems, has to be against tilt (or roll). So I decided on a bridle joint. I also wanted a lot of exposed long grain for glue.
I kept the proportions of the joint to thirds, which left enough wood to sustain the pressure. Even with as hard a wood as mahogany, I wouldn’t make the frame any thinner. Next, I wanted to reinforce the base with a secondary brace that would also support the bridge. To counteract both tilt and torque, I decided on a half-lap dovetail to secure the brace to the sides, and mortise and tenon to secure the stiles.
Here you can see the seating for the half-lap dovetail:
It’s a lot of chisel work! But mahogany is gorgeous to work with. Here is the entire base architecture just before glue-up:
I used regular wood glue for the crossbrace assembly, since the joints are doing most of the work.
But just to be sure, I added dowels:
In the picture above, you can also see the mahogany skin. I skinned one side with 1/16″ mahogany veneer. It was too thin to support anything structurally, so I put nto a series of very thin supports. These were walnut. I wanted something with closer grain than mahogany, both to avoid splintering and to carry high-frequency sound more efficiently.
Here is the frame with one side of skin:
After all that work and all those beautiful joints, one is tempted to show it off–very Greene & Greene! But a clean aesthetic demands otherwise, so I hid the joinery. I don’t have pictures of carving the headstock, but you can see it in the following video. (I made the video so you can hear the sound.) The saddle is a strip of walnut that spans the mahogany skin and supports a mahogany bridge. The tailpiece is mahogany and clutches the body like a c-clamp. The strings are sent through holes and their ends are tied, like a classical guitar. The tuning pegs are zither pegs, tuned with a handle.
The tuning is CDGCDG. I came up with the rhythm and melody so that the music would match the syllabification of Caedmon’s Hymn, caesurae included. Here are the first four lines (click link to watch video):
Last day on the lyre. Zither pins go in when I decide on 4 strings or 6. Just a few odds and ends left. (Latin camp was excellent. We went from Proto-Indo-European to Old Latin, looked at theme vowels in the various inflections and decelnsions, and tried to made sense of the various phonological categories of stem vowels. By the end of the second day, we were reading Bede’s account of Caedmon!)
First, I painted the dragon heads with a terra-cotta base in preparation for gilding.
My penurious Scots soul wouldn’t allow me to spend heavily on real gold, so I bought a cheap-o set of gilding materials from the Mona Lisa company. The glue was terrible, and the gilding is a composite, so it doesn’t act like real leaf. (I may get real leaf later.) Nevertheless, it turned out alright.
Next came the banding. I cut down strips of basswood over which I laid walnut-and-beech banding. I mitered it in a hobby miter box with a fine-toothed Japanese pull saw designed for dovetails. Glued with hide glue—very important, since it dries slowly and the miters needed readjusting quite a bit.
Then I fit the cross-piece into the heads with epoxy. Mighty strong glue. It’s hard to see from the picture, but the face of the cross-piece is dead center along the x-axis of the lyre. The force of the strings will pull down through the center of the heads, through the center of the posts, and onto the footrests I carved in the frame.
The strings attach to a peg. So it was time to make the peg. The guitar strings I’m using are attached by knots that are similar to a noose. So it seemed perfectly fitting to carve the Hanged God, Odin. Although the second picture is out of focus, it shows what a little linseed oil does to beautify the wood. One addition: I wrapped a copper wire twice around Odin’s neck and secured it. The strings then go under the wire, knotted at one end. It keeps them in place with room for all.
And the (almost-) finished lyre:
Here it is oiled and waxed, with mother-of-pearl inset into the supports, with the strings on. Tuned to the tonic of D with bass strings at E and A. It works with a glass slide, too.
Summer of 2016 will see a second lyre. This time, the back and front will be made from canary wood.
Stanchions glued in. Used yellow glue rather than hide glue since they are structural. They stood proud of the side. Foolishly, I used a #4 plane, which is as big as the lyre box, to bring down the posts. Only half-way through my first coffee, so naturally I slipped and took a chunk out of the base. Squared the damage with a chisel and inset a piece of rosewood. If I ever need a pick-up, this is where it will go. Lesson learned: small tools for small jobs.
So, brought down the posts with sandpaper. Checked for level and square to the sides. Finally, trued the upper ridge.
With the posts set in place, I glued on the top with yellow glue. Sanded the sides flush to the top. Then sanded the entire box for a couple of hours, running eight steps from 80-grit up to 600-grit. Gaps are visible around the posts, so I’ll fill them, then add banding to cover the flaws.
Here’s the bottom with the patch:
And the finished box:
Everything goes on hold now for a two-day intensive Latin Camp. We’re going to learn PIE to Latin. After all, there just aren’t enough people who can identify an Oscan epenthetic vowel in an Old Latin borrowing.
Taking a short break from the natural-language parser to make a modified Sutton Hoo lyre (based partly on instrucable, possibly from Rutgers). I scoured the net for ideas, but was most impressed with Michael King’s lyre. Virtually every lyre out there is a rectangle, a squared doughnut. Having played a beautiful lyre made by my friend Jul, an incredible metalsmith and artist, I thought it nevertheless slightly awkward to hold. In this version, I reduced the size of the lyre and changed its configuration. Rather than a rectangle, I decided on a sound box attached by two long stanchions to a head-piece. (I was thinking of a double-necked guitar with a bridge between the two heads.)
This is the first idea for a layout. Sound box is basswood (hard, but easier to carve than maple, the wood used in Sutton Hoo). The two upright stanchions are white oak. The cross-piece is white oak. And the dragon heads are basswood, inspired by the Oseburg ship. I carved them with a Morakniv, simply the best carving knife I have ever used. The next step was to router out the sound box. I set my router’s depth to leave 1/8th of an inch for the bottom, planning later to carve down to 1/16th. I left two posts to hold the bases of the stanchions.
The knob on the inside base is for installing a nut around which the strings will be gathered. Here’s one of the stanchions fit into place:
After routing, I used a gouge to bring the bottom to level. Two considerations: first, the pressure on the box is down its central axis. So, rather than put in a truss rod or brace, I left the central axis 1/8th inch thick. Second, the sound has to vibrate along the bottom, so the two sides of the central axis were carved down to 1/16th.
The result left two valleys on either side of the central axis. I splayed out the base of each valley and the result was the shape of a tree. Yggdrasil, probably. Word on the web is that when thinning panels for a sound box, what matters is not thickness so much as density. So the old way to check was to hold the bottom up to a light source and look for the “fire.” A violin maker told me that this stage is called “candellighting.” Here’s the base held up to a light. The fire-red bits are 1/16th thick.
At this point, I decided that the dragon heads would hold the cross-piece rather than mount it. Here they are carved and sanded, then holding the cross-piece:
And here’s the new layout. Note the tree-shaped interior and the rather suggestive curve of the base, which I hope will give great bottom to the sound. Seriously, I wanted the sound to bounce around in there, echoing and re-echoing.
The next stage was the sound hole. It’s an option, but not necessary. I decided on a hole one-third of the width of the lyre, based on a guitar by Juan Cayuela, a brilliant luthier from whose descendant I bought my classical guitar. The top is a piece of rosewood, 4″ wide and 1/8th inch thick. I glued two pieces together to make a single 8″ top. Then, I routered 1/16th from the center of the board. The result was like a dinner plate, leaving a border 1/8th inch and a valley 1/16th. The bridge is a ukelele bridge from Stewart-McDonald. They also have excellent supplies of mother-of-pearl.
The sound hole looked a little bare, so I took an idea from a renaissance lute and carved an inset. Using a design from the Book of Kells, I started by tracing the sound hole on a piece of basswood. I ripped the basswood down the middle, leaving two 1/16th slabs.
After layout, I carved the figure, then carved down to the circle, leaving a raised disc. It fit in very nicely. I glued the inset nto the back with hide glue:
And here it is from the front:
Still waiting on the tuning machines and the gutstrings. I’ve also got mother-of-peral to set in. The dragon heads will be gilded and have garnet set into their eyes. More to come.