I've just started working on a Ruby script to analyze the subtypes (and however-many-sub-subtypes) of strong verb patterns, exhaustively.
It's pretty kludgey still, but I figured it might be worth sharing. I'll post the output here, then the script code itself.
The format of the output is, I think, pretty obvious. For verbs that get a stem vowel change for "du/er" in the present indicative, the I, IE, or UM in the rightmost column.
Anyway, here is the output file:
|
| ei i i
| leiden litt gelitten
| schneiden schnitt geschnitten
| pfeifen pfiff gepfiffen
| schleifen schliff geschliffen
| kneifen kniff gekniffen
| greifen griff gegriffen
| bleichen blich geblichen
| gleichen glich geglichen
| schleichen schlich geschlichen
| streichen strich gestrichen
| weichen wich gewichen
| gleiten glitt geglitten
| reiten ritt geritten
| schreiten schritt geschritten
| streiten stritt gestritten
| beißen biss gebissen
| scheißen schiss geschissen
| befleißen befliss beflissen
| schleißen schliss geschlissen
| spleißen spliss gesplissen
| schmeißen schmiss geschmissen
| reißen riss gerissen
|
| ei ie ie
| bleiben blieb geblieben
| reiben rieb gerieben
| schreiben schrieb geschrieben
| treiben trieb getrieben
| scheiden schied geschieden
| meiden mied gemieden
| steigen stieg gestiegen
| schweigen schwieg geschwiegen
| gedeihen gedieh gediehen
| leihen lieh geliehen
| zeihen zieh geziehen
| speien spie gespien
| schreien schrie geschrien
| scheinen schien geschienen
| preisen pries gepriesen
| weisen wies gewiesen
|
| i a u
| binden band gebunden
| finden fand gefunden
| empfinden empfand empfunden
| winden wand gewunden
| schwinden schwand geschwunden
| dingen dang gedungen
| gelingen gelang gelungen
| schlingen schlang geschlungen
| klingen klang geklungen
| misslingen misslang misslungen
| ringen rang gerungen
| dringen drang gedrungen
| springen sprang gesprungen
| wringen wrang gewrungen
| singen sang gesungen
| schwingen schwang geschwungen
| trinken trank getrunken
| sinken sank gesunken
| stinken stank gestunken
|
| ie o o
| sieden sott gesotten
| riechen roch gerochen
| kriechen kroch gekrochen
| gießen goss gegossen
| schießen schoss geschossen
| fließen floss geflossen
| schließen schloss geschlossen
| genießen genoss genossen
| verdrießen verdross verdrossen
| sprießen spross gesprossen
|
| ie o- o-
| schieben schob geschoben
| stieben stob gestoben
| biegen bog gebogen
| fliegen flog geflogen
| wiegen wog gewogen
| fliehen floh geflohen
| ziehen zog gezogen
| verlieren verlor verloren
| frieren fror gefroren
| bieten bot geboten
|
| e a o
| verderben verdarb verdorben I
| sterben starb gestorben I
| werben warb geworben I
| helfen half geholfen I
| werfen warf geworfen I
| bergen barg geborgen I
| gelten galt gegolten I
| schelten schalt gescholten I
| bersten barst geborsten I
|
| e a- o
| treffen traf getroffen I
| brechen brach gebrochen I
| sprechen sprach gesprochen I
| stechen stach gestochen I
| schrecken schrak geschrocken I
|erschrecken erschrak erschrocken I
|
| e o o
| dreschen drosch gedroschen I
| melken molk gemolken I
| quellen quoll gequollen I
| schwellen schwoll geschwollen I
| fechten focht gefochten I
| flechten flocht geflochten I
| schmelzen schmolz geschmolzen I
|
| e- o- o-
| heben hob gehoben
| weben wob gewoben
| pflegen pflog gepflogen
| bewegen bewog bewogen
| scheren schor geschoren
|
| i a o
| schwimmen schwamm geschwommen
| beginnen begann begonnen
| spinnen spann gesponnen
| rinnen rann geronnen
| sinnen sann gesonnen
| gewinnen gewann gewonnen
|
| e- a- e-
| geben gab gegeben I
| geschehen geschah geschehen IE
| sehen sah gesehen IE
| lesen las gelesen IE
| genesen genas genesen
| treten trat getreten I
|
| e a- e
| essen aß gegessen I
| vergessen vergaß vergessen I
| messen maß gemessen I
| fressen fraß gefressen I
|
| a- u- a-
| graben grub gegraben UM
| laden lud geladen UM
| schlagen schlug geschlagen UM
| tragen trug getragen UM
| fahren fuhr gefahren UM
|
| a u- a
| schaffen schuf geschaffen
| waschen wusch gewaschen UM
| backen buk gebacken UM
| wachsen wuchs gewachsen UM
|
| a- ie a-
| schlafen schlief geschlafen UM
| blasen blies geblasen UM
| raten riet geraten UM
| braten briet gebraten UM
|
| o- ie o-
| stoßen stieß gestoßen UM
|
| a ie a
| fallen fiel gefallen UM
| lassen ließ gelassen UM
| halten hielt gehalten UM
|
| e- a- o-
| befehlen befahl befohlen IE
| empfehlen empfahl empfohlen IE
| stehlen stahl gestohlen IE
|
| e- a- o
| nehmen nahm genommen I
|
| ü- o- o-
| lügen log gelogen
| trügen trog getrogen
| küren kor gekoren
|
| ä- o- o-
| wägen wog gewogen
| gären gor gegoren
|
| ä- a- o-
| gebären gebar geboren IE
|
| ö o o
| erlöschen erlosch erloschen I
|
| i o o
| glimmen glomm geglommen
| klimmen klomm geklommen
|
| au ie au
| laufen lief gelaufen UM
| hauen hieb gehauen
|
| au o o
| saufen soff gesoffen UM
|
| a i a
| fangen fing gefangen UM
| empfangen empfing empfangen UM
|
| a- a- a-
| mahlen mahlte gemahlen
| spalten spaltete gespalten
| salzen salzte gesalzen
|
Some notes:
There are only two strong verbs that really break the infinitive → preterite stem pattern of OVCen → OWC (where V is the infinitive stem's vowel, W the preterite's, C the consonant right after it the vowel, and O everything before that). They are: ziehen–zog and hauen–hieb.
All the other ones that break the pattern are just spelling tweaks to deal with changes in vowel length, and are completely regular and easily predictable. (E.g., when the long ei in beißen changes to the short i in biss, the consonant's got to change to show that, etc.)
e->i, e->ie, and um pattern verbs seem to be entirely within the set of strong verbs.
I know there are some irregular strong preterite subjunctives (the normal pattern is just to umlaut if the preterite vowel is [auo], then add the same ending as the regular present subjunctive). E.g., ich trinke, ich trank, ich tränke, but ich schwöre, ich schwor, ich schwüre.
But I haven't added those in yet.
Anyway, here's the script itself:
# encoding: utf-8
=begin
Some notes:
There are only two strong verbs that really break the OVC -> OWC pattern:
"ziehen", "zog"
"hauen", "hieb"
[ei, eie, um] seem to be entirely within the set of strong verbs.
I know there are irregular strong CII's. Prolly may as well grab those later.
Obvs need to reformat the hash, and integrate the info from the ei, eie, and um arrays...
=end
ei = [
"bergen",
"bersten", #verbix
"brechen",
"dreschen",
"essen",
"erschrecken",
"fechten",
"flechten",
"fressen",
"geben",
"gelten",
"helfen",
"melken",
"messen",
"nehmen",
"quellen",
"schelten", #verbix
"schmelzen",
"schrecken", #verbix thinks it's *totally regular*. Others say it should indeed be in this array http://conjugator.reverso.net/conjugation-german-verb-schrecken.html
"schwellen",
"sprechen",
"stechen",
"sterben",
"treffen",
"treten",
"verderben",
"vergessen",
"werben",
# "werden", # A tiny bit odd. Prolly easier, instructionally, to just treat it as its own thing, not part of this pattern.
"werfen",
"erlöschen"
]
eie = [
"befehlen",
"empfehlen",
"geschehen",
"lesen",
"sehen",
"stehlen",
"gebären"
]
um = [
"backen",
"blasen",
"braten",
"empfangen",
"fahren",
"fallen",
"fangen",
"graben",
"halten",
"laden",
"lassen",
"laufen",
"raten",
"saufen",
"schlafen",
"schlagen",
"stoßen",
"tragen",
"wachsen",
"waschen"
]
ablauts = {
["ei", "i", "i"] => [
["befleißen", "befliss", "beflissen"],
["beißen", "biss", "gebissen"],
["bleichen", "blich", "geblichen"],
["gleichen", "glich", "geglichen"],
["gleiten", "glitt", "geglitten"],
["greifen", "griff", "gegriffen"],
["kneifen", "kniff", "gekniffen"],
["leiden", "litt", "gelitten"],
["pfeifen", "pfiff", "gepfiffen"],
["reiten", "ritt", "geritten"],
["reißen", "riss", "gerissen"],
["scheißen", "schiss", "geschissen"],
["schleichen", "schlich", "geschlichen"],
["schleifen", "schliff", "geschliffen"],
["schleißen", "schliss", "geschlissen"],
["schmeißen", "schmiss", "geschmissen"],
["schneiden", "schnitt", "geschnitten"],
["schreiten", "schritt", "geschritten"],
["spleißen", "spliss", "gesplissen"],
["streichen", "strich", "gestrichen"],
["streiten", "stritt", "gestritten"],
["weichen", "wich", "gewichen"]
],
["ei", "ie", "ie"] => [
["bleiben", "blieb", "geblieben"],
["gedeihen", "gedieh", "gediehen"],
["leihen", "lieh", "geliehen"],
["meiden", "mied", "gemieden"],
["preisen", "pries", "gepriesen"],
["reiben", "rieb", "gerieben"],
["scheiden", "schied", "geschieden"],
["scheinen", "schien", "geschienen"],
["schreiben", "schrieb", "geschrieben"],
["schreien", "schrie", "geschrien"],
["schweigen", "schwieg", "geschwiegen"],
["speien", "spie", "gespien"],
["steigen", "stieg", "gestiegen"],
["treiben", "trieb", "getrieben"],
["weisen", "wies", "gewiesen"],
["zeihen", "zieh", "geziehen"]
],
["i", "a", "u"] => [
["binden", "band", "gebunden"],
["dingen", "dang", "gedungen"],
["dringen", "drang", "gedrungen"],
["empfinden", "empfand", "empfunden"],
["finden", "fand", "gefunden"],
["gelingen", "gelang", "gelungen"],
["klingen", "klang", "geklungen"],
["misslingen", "misslang", "misslungen"],
["ringen", "rang", "gerungen"],
["schlingen", "schlang", "geschlungen"],
["schwinden", "schwand", "geschwunden"],
["schwingen", "schwang", "geschwungen"],
["singen", "sang", "gesungen"],
["sinken", "sank", "gesunken"],
["springen", "sprang", "gesprungen"],
["stinken", "stank", "gestunken"],
["trinken", "trank", "getrunken"],
["winden", "wand", "gewunden"],
["wringen", "wrang", "gewrungen"]
],
["ie", "o", "o"] => [
["fließen", "floss", "geflossen"],
["genießen", "genoss", "genossen"],
["gießen", "goss", "gegossen"],
["kriechen", "kroch", "gekrochen"],
["riechen", "roch", "gerochen"],
["schießen", "schoss", "geschossen"],
["schließen", "schloss", "geschlossen"],
["sieden", "sott", "gesotten"],
["sprießen", "spross", "gesprossen"],
["verdrießen", "verdross", "verdrossen"]
],
["ie", "o-", "o-"] => [
["biegen", "bog", "gebogen"],
["bieten", "bot", "geboten"],
["fliegen", "flog", "geflogen"],
["fliehen", "floh", "geflohen"],
["frieren", "fror", "gefroren"],
["schieben", "schob", "geschoben"],
["stieben", "stob", "gestoben"],
["verlieren", "verlor", "verloren"],
["wiegen", "wog", "gewogen"],
["ziehen", "zog", "gezogen"]
],
["e", "a", "o"] => [
["bergen", "barg", "geborgen"],
["bersten", "barst", "geborsten"],
["gelten", "galt", "gegolten"],
["helfen", "half", "geholfen"],
["schelten", "schalt", "gescholten"],
["sterben", "starb", "gestorben"],
["verderben", "verdarb", "verdorben"],
["werben", "warb", "geworben"],
["werfen", "warf", "geworfen"]
],
["e", "a-", "o"] => [
["brechen", "brach", "gebrochen"],
["schrecken", "schrak", "geschrocken"],
["erschrecken", "erschrak", "erschrocken"], # right?
["sprechen", "sprach", "gesprochen"],
["stechen", "stach", "gestochen"],
["treffen", "traf", "getroffen"]
],
["e", "o", "o"] => [
["dreschen", "drosch", "gedroschen"],
["fechten", "focht", "gefochten"],
["flechten", "flocht", "geflochten"],
["melken", "molk", "gemolken"],
["quellen", "quoll", "gequollen"],
["schmelzen", "schmolz", "geschmolzen"],
["schwellen", "schwoll", "geschwollen"]
],
["e-", "o-", "o-"] => [
["bewegen", "bewog", "bewogen"],
["heben", "hob", "gehoben"],
["pflegen", "pflog", "gepflogen"],
["scheren", "schor", "geschoren"],
["weben", "wob", "gewoben"]
],
["i", "a", "o"] => [
["beginnen", "begann", "begonnen"],
["gewinnen", "gewann", "gewonnen"],
["rinnen", "rann", "geronnen"],
["schwimmen", "schwamm", "geschwommen"],
["sinnen", "sann", "gesonnen"],
["spinnen", "spann", "gesponnen"]
],
["e-", "a-", "e-"] => [
["geben", "gab", "gegeben"],
["genesen", "genas", "genesen"],
["geschehen", "geschah", "geschehen"],
["lesen", "las", "gelesen"],
["sehen", "sah", "gesehen"],
["treten", "trat", "getreten"]
],
["e", "a-", "e"] => [
["essen", "aß", "gegessen"],
["fressen", "fraß", "gefressen"],
["messen", "maß", "gemessen"],
["vergessen", "vergaß", "vergessen"]
],
["a-", "u-", "a-"] => [
["fahren", "fuhr", "gefahren"],
["graben", "grub", "gegraben"],
["laden", "lud", "geladen"],
["schlagen", "schlug", "geschlagen"],
["tragen", "trug", "getragen"]
],
["a", "u-", "a"] => [
["backen", "buk", "gebacken"],
["schaffen", "schuf", "geschaffen"],
["wachsen", "wuchs", "gewachsen"],
["waschen", "wusch", "gewaschen"]
],
["a-", "ie", "a-"] => [
["blasen", "blies", "geblasen"],
["braten", "briet", "gebraten"],
["raten", "riet", "geraten"],
["schlafen", "schlief", "geschlafen"]
],
["o-", "ie", "o-"] => [ # right?
["stoßen", "stieß", "gestoßen"]
],
["a", "ie", "a"] => [
["fallen", "fiel", "gefallen"],
["halten", "hielt", "gehalten"],
["lassen", "ließ", "gelassen"]
],
["e-", "a-", "o-"] => [
["befehlen", "befahl", "befohlen"],
["empfehlen", "empfahl", "empfohlen"],
["stehlen", "stahl", "gestohlen"]
],
["e-", "a-", "o"] => [ # right?
["nehmen", "nahm", "genommen"]
],
["ü-", "o-", "o-"] => [
["küren", "kor", "gekoren"],
["lügen", "log", "gelogen"],
["trügen", "trog", "getrogen"]
],
["ä-", "o-", "o-"] => [
["gären", "gor", "gegoren"],
["wägen", "wog", "gewogen"]
],
["ä-", "a-", "o-"] => [ # right?
["gebären", "gebar", "geboren"]
],
["ö", "o", "o"] => [ # right?
["erlöschen", "erlosch", "erloschen"]
],
["i", "o", "o"] => [
["glimmen", "glomm", "geglommen"],
["klimmen", "klomm", "geklommen"]
],
["au", "ie", "au"] => [
["laufen", "lief", "gelaufen"],
["hauen", "hieb", "gehauen"]
],
["au", "o", "o"] => [ # right?
["saufen", "soff", "gesoffen"]
],
["a", "i", "a"] => [
["fangen", "fing", "gefangen"],
["empfangen", "empfing", "empfangen"]
],
["a-", "a-", "a-"] => [
["mahlen", "mahlte", "gemahlen"],
["spalten", "spaltete", "gespalten"],
["salzen", "salzte", "gesalzen"]
]
}
# # length of longest word
# # used by the function `format( array )` below
$longest=11
# # to find it again
# longest = 0
# ablauts.each do |k,v|
# v.each do |triplet|
# triplet.each do |word|
# longest = word.length if word.length > longest
# end
# end
# end
# $longest = longest
# puts $longest
def format array
# for joining an array of strings into a single string, with right alignment of columns
# (with spaces left and tabs right)
array.map{|s| ' '*($longest - s.length)+s }.join "\t"*2
end
# order each list of verbs in a key pattern by rhyme
ablauts.each do |k, v|
v.sort! {|a,b| a[0].reverse <=> b[0].reverse}
end
# add a forth item to each appropriate triplet
ablauts.each do |k, v|
v.each do |triplet|
if ei.include? triplet[0]
triplet << "I"
elsif eie.include? triplet[0]
triplet << "IE"
elsif um.include? triplet[0]
triplet << "UM"
end
end
end
# # # selects non-( OVCen -> OWC ) patterns for preterite stem. Like, OWK.
# # # doesn't deal with spelling stuff...
# # # Too lazy to fix this up, cuz I found the answer anyway.
# ablauts.each do |k, v|
# p k
# v.select! do |triplet|
# # # test bit \/
# inf_stem = triplet[0].sub( /(.*)en/,'\1' )
# inf_stem_with_pret_vowel = triplet[0].gsub( /(\w*?)[aiueoäüö]+([^aiueoäüö]*)en/,"\\1#{k[1].gsub '-', ''}\\2" )
# pret_stem = triplet[1]
# if inf_stem_with_pret_vowel != pret_stem
# [inf_stem_with_pret_vowel, pret_stem].each{|s| puts ' '*(11 - s.length) + s}
# end
# inf_stem_with_pret_vowel != pret_stem
# end
# end
# # outputs the list of strong verbs, formatted. And with whatever other changes made to it above...
#File.open "strong_verbs_output.txt", "w" do |f|
File.open "strong_verbs_output.txt", "w" do |f|
ablauts.each do |k,v|
f.puts
f.puts format k
v.each {|triplet| f.puts format triplet }
end
end
# # checking for verbs with an err/du present indicative change in the stem that are NOT in the list of strongs.
# # Found five or six, but checked and they WERE strong.
# # Added em with `# right?` comments...
# ablauts_infinitives = []
# ablauts.each{|pattern, verbs| verbs.each{|triplet| ablauts_infinitives << triplet.first} }
# File.open "non_strong_eieieums.txt", "w" do |f|
# [ei, eie, um].each do |verblist|
# verblist.select!{|verb| !ablauts_infinitives.include? verb }
# f.puts
# f.puts verblist
# end
# end
Like I said, pretty embarrassingly kludgey.