{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# X-Word Latin Hexameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Seen on Facebook tonight from C. Dozier:\n", "\"Is there a list of three-word Latin hexameters?\"\n", "\n", "- Last updated 11/1/17 1:14pm" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Arabic not supported. Install `pyarabic` library to tokenize Arabic.\n" ] } ], "source": [ "# Imports\n", "\n", "import os\n", "import string\n", "import re\n", "import html \n", "\n", "from pprint import pprint\n", "\n", "from cltk.corpus.latin import latinlibrary\n", "from cltk.tokenize.line import LineTokenizer\n", "from cltk.stem.latin.j_v import JVReplacer" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Setup CLTK tools\n", "\n", "line_tokenizer = LineTokenizer('latin')\n", "replacer = JVReplacer()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Let's start with what we already know...\n", "# There is at least one three-word hexameter in Horace's *Satires*\n", "\n", "# So we get the two Satires files from the Latin Library...\n", "files = latinlibrary.fileids()\n", "hor_sat_files = [file for file in files if 'horace/serm' in file]\n", "hor_sat_raw = [latinlibrary.raw(file) for file in hor_sat_files]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Preprocess texts\n", "\n", "def preprocess(text):\n", "\n", " remove_list = [r'\\bHorace\\b',\n", " r'\\bThe Latin Library\\b',\n", " r'\\bThe Classics Page',\n", " r'\\bSermonum Liber .+\\b',\n", " r'\\bSERMONVM Q. HORATI FLACCI LIBER .+?\\b'\n", " ]\n", " \n", " for pattern in remove_list:\n", " text = re.sub(pattern, '', text)\n", " \n", " text = html.unescape(text) # Handle html entities\n", " text = re.sub(r' ?', ' ',text) #  stripped incorrectly in corpus?\n", " text = re.sub(r'\\x00',' ',text) #Another space problem?\n", " \n", " text = text.lower()\n", " text = replacer.replace(text) #Normalize u/v & i/j \n", " \n", " punctuation =\"\\\"#$%&\\'()*+,-/:;<=>@[\\]^_`{|}~.?!«»\"\n", " translator = str.maketrans({key: \" \" for key in punctuation})\n", " text = text.translate(translator)\n", " \n", " translator = str.maketrans({key: \" \" for key in '0123456789'})\n", " text = text.translate(translator)\n", " \n", " text = re.sub('[ ]+',' ', text) # Remove double spaces\n", " text = re.sub('\\s+\\n+\\s+','\\n', text) # Remove double lines and trim spaces around new lines\n", " \n", " return text" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "qui fit maecenas ut nemo quam sibi sortem \n", "seu ratio dederit seu fors obiecerit illa \n", "contentus uiuat laudet diuersa sequentis\n", "o fortunati mercatores grauis annis \n", "miles ait multo iam fractus membra labore \n", "contra mercator nauim iactantibus austris\n", "militia est potior quid enim concurritur horae \n", "momento cita mors uenit aut uictoria laeta \n", "agricolam laudat iuris legumque peritus \n", "sub galli cantum consultor ubi ostia pulsat \n", "ille datis uadibus qui rure extractus in urbem est \n", "solos felicis uiuent\n" ] } ], "source": [ "# ...preprocess the Satire texts...\n", "\n", "hor_sat_edit = [preprocess(raw) for raw in hor_sat_raw]\n", "print(hor_sat_edit[0][:500])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# ...tokenize the poems by line...\n", "\n", "hor_sat_lines = [line_tokenizer.tokenize(text) for text in hor_sat_edit]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['ambubaiarum collegia pharmacopolae']\n" ] } ], "source": [ "# ...and test for three-word hexameters\n", "tlh = []\n", "\n", "for text in hor_sat_lines:\n", " for line in text:\n", " temp = line.split()\n", " if len(temp) == 3:\n", " tlh.append(\" \".join(temp))\n", "\n", "print(tlh)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's abstract this so that we can return all matches for *any* number of words per line for *any* poem in the Latin Library." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# A function for getting hexameters of a certain length.\n", "\n", "def return_x_word_hexameters(text, word_count):\n", " matches = []\n", " for line in text:\n", " temp = line.split()\n", " if len(temp) == word_count:\n", " matches.append(\" \".join(temp))\n", " return matches" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['ambubaiarum collegia pharmacopolae']\n" ] } ], "source": [ "# Example based on what we did above...\n", "\n", "print(return_x_word_hexameters(hor_sat_lines[0], 3))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# We need to get a list of hexameter poems in the Latin Library. This\n", "# may be a good thing to automate in the future, but for now it is\n", "# going to take a bit of knowledge of Latin poetry and some hard-coded\n", "# filenames. I'll update this as I think of more, but I'll get it\n", "# started with the basics. And I'll skip all of the hexameter lines\n", "# from elegy for now, but they really should be included in the\n", "# update as well.\n", "\n", "# Basing the first pass on (Berstein, Gervias, Lin 2015) Table 1\n", "# http://www.digitalhumanities.org/dhq/vol/9/3/000237/000237.html\n", "\n", "lucretius = [file for file in files if 'lucr' in file]\n", "vergil = [file for file in files if 'vergil/' in file]\n", "horace = [file for file in files if 'horace/ars' in file]\n", "horace += [file for file in files if 'horace/epi' in file]\n", "horace += [file for file in files if 'horace/serm' in file]\n", "ovid = [file for file in files if 'ovid.m' in file]\n", "manilius = [file for file in files if 'manil' in file]\n", "persius = [file for file in files if 'persius.txt' in file]\n", "lucan = [file for file in files if 'lucan/' in file]\n", "ilias = [file for file in files if 'ilias' in file]\n", "statius = [file for file in files if 'statius/ac' in file]\n", "statius += [file for file in files if 'statius/th' in file]\n", "silius = [file for file in files if 'silius' in file]\n", "valerius = [file for file in files if 'valer' in file]\n", "juvenal = [file for file in files if 'juv' in file]\n", "# juvencus -- Not in LL?\n", "ausonius = [file for file in files if 'aus.mos' in file]\n", "claudian = [file for file in files if 'claudian.pros' in file]\n", "# other works of Claudian?\n", "# corippus -- Not in LL?\n", "\n", "hexameter_files = lucretius + vergil + horace + ovid + manilius \\\n", " + persius + lucan + ilias + statius + silius \\\n", " + valerius + juvenal + ausonius + claudian" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Preprocess texts\n", "\n", "def preprocess(text):\n", "\n", " remove_list = [r'\\bHorace: .+',\n", " r'\\bAppendix Vergiliana\\b',\n", " r'\\bThe Miscellany\\b',\n", " r'\\bThe Latin Library\\b',\n", " r'\\bThe Classics Page',\n", " r'\\bThe Classics Homepage',\n", " r'\\bSermonum Liber .+\\b',\n", " r'\\bVergil: Aeneid .+\\b',\n", " r'\\bManilius, Liber .+\\b',\n", " r'\\bMetamorposes\\b',\n", " r'\\bLucan Liber .+',\n", " r'\\bStatius: Thebaid .+',\n", " r'\\bStatius: Achilleid .+',\n", " r'\\bValerius Flaccus: Liber .+',\n", " r'\\bSERMONVM Q. HORATI FLACCI LIBER .+?\\b',\n", " r'PVBLIVS PAPINIVS STATIVS',\n", " r'Silius, Liber .+'\n", " ]\n", " \n", " for pattern in remove_list:\n", " text = re.sub(pattern, '', text)\n", " \n", " text = html.unescape(text) # Handle html entities\n", " text = re.sub(r' ?', ' ',text) #  stripped incorrectly in corpus?\n", " text = re.sub(r'\\x00',' ',text) #Another space problem?\n", " \n", " # Fix partial lines\n", " text = re.sub(r'\\d+(a|b)', ' ', text)\n", " \n", " text = text.lower()\n", " text = replacer.replace(text) #Normalize u/v & i/j \n", " \n", " punctuation =\"\\\"#$%&\\'()*+,-/:;<=>@[\\]^_`{|}~.?!«»\"\n", " translator = str.maketrans({key: \" \" for key in punctuation})\n", " text = text.translate(translator)\n", " \n", " translator = str.maketrans({key: \" \" for key in '0123456789'})\n", " text = text.translate(translator)\n", " \n", " text = re.sub('[ ]+',' ', text) # Remove double spaces\n", " text = re.sub('\\s+\\n+\\s+','\\n', text) # Remove double lines and trim spaces around new lines\n", " \n", " return text" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Preprocess files as above\n", "\n", "hexameter_raw = [latinlibrary.raw(file) for file in hexameter_files]\n", "hexameter_edit = [preprocess(raw) for raw in hexameter_raw] # need to preprocess LL paratexts\n", "hexameter_lines = [line_tokenizer.tokenize(text) for text in hexameter_edit]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['insatiabiliter defleuimus aeternumque',\n", " 'hic cursus fuit',\n", " 'munera laetitiamque dii',\n", " 'audentis fortuna iuuat',\n", " 'incipias conferre manum',\n", " 'turnus ad haec',\n", " 'ferro accincta uocat',\n", " 'numina magna deum',\n", " 'uos agitate fugam',\n", " 'infabricata fugae studio',\n", " 'ergo iussa parat',\n", " 'carpathium libycumque secant',\n", " 'externique iterum thalami',\n", " 'maius opus moueo',\n", " 'exitiis positura modum',\n", " 'iliadumque labor uestes',\n", " 'immemor est nostri',\n", " 'rex prior haec',\n", " 'tum sic effatur',\n", " 'euryali et nisi',\n", " 'egit in aduersos',\n", " 'ambubaiarum collegia pharmacopolae',\n", " 'sic quoque fallebat',\n", " 'redeuntem colle lycaeo',\n", " 'i pete diuersi',\n", " 'lapidosas aesaris undas',\n", " 'iam tempora titan',\n", " 'asperum iter temptans',\n", " 'auctores tibi dant',\n", " 'uarronemque fuga magnum',\n", " 'cum uincere posset',\n", " 'mens natat et',\n", " 'pars prior at',\n", " 'solusque per omnis',\n", " 'heliconidasque pallidamque pirenen',\n", " 'fuit frugi pudicus',\n", " 'non segnior illo',\n", " 'quam carthago suos',\n", " 'mox deinde uidenti',\n", " 'numina pugnastis nobis',\n", " 'at cladis acerbae']\n" ] } ], "source": [ "three_word_hexameters = []\n", "\n", "for lines in hexameter_lines:\n", " temp = return_x_word_hexameters(lines, 3)\n", " if temp:\n", " three_word_hexameters.append(temp)\n", "\n", " \n", "three_word_hexameters = [x for y in three_word_hexameters for x in y]\n", "pprint(three_word_hexameters)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# All of the above appear to be either attested 'incomplete' lines,\n", "# corruptions, artefacts of the printed page, or digitization problems.\n", "# (Also, I haven't stripped out Persius's *Prologue* yet.)\n", "#\n", "# So, the only other genuine three-word hexameter returned here is...\n", "#\n", "# Lucr. DRN 3.907: insatiabiliter defleuimus aeternumque" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# All well and good. But now with our function, we can quickly\n", "# refactor to get any number..." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['iphianassai turparunt sanguine foede',\n", " 'seruitium contra paupertas diuitiaeque',\n", " 'inflammasset equos nocturno graiiugenarum',\n", " 'principio fundamenti natura carebit',\n", " 'naturam clandestinam caecamque adhibere',\n", " 'sed uanus stolidis haec',\n", " 'amplexi quod habent peru',\n", " 'possit ibi quicquam consistere',\n", " 'certare ingenio contendere nobilitate',\n", " 'exiguis interuallis conuecta resultant',\n", " 'significant clandestinos caecosque subesse',\n", " 'mobilibus digitis expergefacta figurant',\n", " 'finita uariare figurarum ratione',\n", " 'uersibus ostendam corpuscula materiai',\n", " 'undique protelo plagarum continuato',\n", " 'disiectare aestus diuersi materiai',\n", " 'dissimili perfecta figura principiorum',\n", " 'corpora discedunt conexaque conuenientis',\n", " 'dissimili constare figura principiorum',\n", " 'euanescere paulatim stinguique colorem',\n", " 'dissoluuntur enim positurae principiorum',\n", " 'consequitur grauitas membrorum praepediuntur',\n", " 'ancipitique refutatu conuincere falsum',\n", " 'corporibus nostris extrinsecus insinuatas',\n", " 'expectare immortalis mortalia membra',\n", " 'innumero numero certareque praeproperanter',\n", " 'continuo rerum simulacra secuntur',\n", " 'plane exaudiri discernique articulatim',\n", " 'extima membrorum circumcaesura coërcet',\n", " 'contractabiliter caulas intrare palati',\n", " 'commutantur ibi positurae principiorum',\n", " 'pupillas interfodiunt acremque dolorem',\n", " 'effugere errorem uitareque praemetuenter',\n", " 'conturbantur enim positurae principiorum',\n", " 'expergefactique secuntur inania saepe',\n", " 'expergefactique secuntur inania saepe',\n", " 'seminibus commisceri genitaliter apta',\n", " 'uitigeni laticem mortalibus instituisse',\n", " 'inmortalia mortali sermone notantes',\n", " 'praeclaram mundi naturam proptereaque',\n", " 'omnibus epotis umoribus exsuperarint',\n", " 'labitur omnimodis occursans officiensque',\n", " 'consectabantur siluestria saecla ferarum',\n", " 'suscipiendaque curarit sollemnia sacra',\n", " 'mucronum duci fastigia procudendo',\n", " 'cernebant indulgendo blandeque colendo',\n", " 'paulatim docuit pedetemptim progredientis',\n", " 'ignorantia causarum conferre deorum',\n", " 'constituit natura minutis mobilibusque',\n", " 'sufficiunt nubis paulatim conueniundo',\n", " 'propter dissimilem naturam dissimilisque',\n", " 'utilitatem opportunam sitientibus nautis',\n", " 'luctantes uentos tempestatesque sonoras',\n", " 'nimborumque facis tempestatumque potentem',\n", " 'asius imbrasides hicetaoniusque thymoetes',\n", " 'quem turnus super adsistens',\n", " 'messapus cloniumque lycaoniumque erichaeten',\n", " 'appenninicolae bellator filius auni',\n", " 'disiectique duces desolatique manipli',\n", " 'chloreaque sybarimque daretaque thersilochumque',\n", " 'pelidesque neoptolemus primusque machaon',\n", " 'telorum interea cessat genus',\n", " 'degeneremque neoptolemum narrare memento',\n", " 'laomedontiadae bellumne inferre paratis',\n", " 'ledaeam hermionen lacedaemoniosque hymenaeos',\n", " 'quem tibi iam troia—',\n", " 'ingens argentum dodonaeosque lebetas',\n", " 'addit equos additque duces',\n", " 'armatumque auro circumspicit oriona',\n", " 'stans celsa in puppi',\n", " 'cornua uelatarum obuertimus antemnarum',\n", " 'italiam non sponte sequor',\n", " 'et matri praereptus amor',\n", " 'laomedonteae sentis periuria gentis',\n", " 'nisus et euryalus primi',\n", " 'nisaee spioque thaliaque cymodoceque',\n", " 'ingemuit glaucumque medontaque thersilochumque',\n", " 'fortunatorum nemorum sedesque beatas',\n", " 'acrisioneis danae fundasse colonis',\n", " 'bella manu letumque gero',\n", " 'implorantque deos obtestanturque latinum',\n", " 'te liquidi fleuere lacus',\n", " 'amphitryoniadae magno diuisque ferebat',\n", " 'laomedontiaden priamum salamina petentem',\n", " 'amphitryoniades armenta abitumque pararet',\n", " 'abstractaeque boues abiurataeque rapinae',\n", " 'armati circumsistunt ipsumque domumque',\n", " 'bellatorque animo deus incidit',\n", " 'alcandrumque haliumque noemonaque prytanimque',\n", " 'saltantis satyros imitabitur alphesiboeus',\n", " 'hirsutumque supercilium promissaque barba',\n", " 'auctorem frugum tempestatumque potentem',\n", " 'obscenaeque canes importunaeque uolucres',\n", " 'laomedonteae luimus periuria troiae',\n", " 'phillyrides chiron amythaoniusque melampus',\n", " 'hellespontiaci seruet tutela priapi',\n", " 'drymoque xanthoque ligeaque phyllodoceque',\n", " 'nesaee spioque thaliaque cymodoceque',\n", " 'sponsi penelopae nebulones alcinoique',\n", " 'inter minturnas sinuessanumque petrinum',\n", " 'dissignatorem decorat lictoribus atris',\n", " 'uirtutemne repraesentet moresque catonis',\n", " 'diuisit medium fortissima tyndaridarum',\n", " 'custodes lectica ciniflones parasitae',\n", " 'fallacem circum uespertinumque pererro',\n", " 'pantolabo scurrae nomentanoque nepoti',\n", " 'coruinus patriis intermiscere petita',\n", " 'pantolabum scurram nomentanumque nepotem',\n", " 'quisquis luxuria tristiue superstitione',\n", " 'incretum puris circumposuisse catillis',\n", " 'insidiatorem praeroso fugerit hamo',\n", " 'responsare cupidinibus contemnere honores',\n", " 'inuertunt allifanis uinaria tota',\n", " 'emendaturus fortunam deinde secuti',\n", " 'margine terrarum porrexerat amphitrite',\n", " 'fluctibus ignotis insultauere carinae',\n", " 'effodiuntur opes inritamenta malorum',\n", " 'siluarum latebris captiuarumque ferarum',\n", " 'nescia gratentur consolenturne parentem',\n", " 'inter hamadryadas celeberrima nonacrinas',\n", " 'dilectos superis inconcessisque puellas',\n", " 'lactantes uitulos amathusiacasque bidentes',\n", " 'illic concubitus intempestiua cupido',\n", " 'auditum saxis intellectumque ferarum',\n", " 'laomedonteis latoius adstitit aruis',\n", " 'singultuque pias interrumpente querellas',\n", " 'excitat artificem simulatoremque figurae',\n", " 'eetioneas inpleui sanguine thebas',\n", " 'robore nedymnum iaculatoremque lycopen',\n", " 'antimachumque elymumque securiferumque pyracmon',\n", " 'thermodontiaca malles cecidisse bipenni',\n", " 'insidias prodet manifestabitque latentem',\n", " 'alcandrumque haliumque noemonaque prytaninque',\n", " 'troades excipiunt deploratosque recensent',\n", " 'sulphure fumantis acheloiadumque relinquit',\n", " 'noscit achaemeniden inprouisoque repertum',\n", " 'mandentemque uidens eiectantemque cruentas',\n", " 'antiphatae memores inmansuetique cyclopis',\n", " 'insuper aurato circumuelatur amictu',\n", " 'patrias age desere sedes',\n", " 'amphitryoniadae uentisque fauentibus aequor',\n", " 'nauigat ionium sallentinumque neretum',\n", " 'armeniae tigres iracundique leones',\n", " 'undarum sparsas symplegadas elisarum',\n", " 'armigerumque iouis cythereiadasque columbas',\n", " 'romethiumque legit caulonaque naryciamque',\n", " 'cinyphiumque iubam mithridateisque tumentem',\n", " 'temporis aetatem uenturorumque nepotum',\n", " 'proteaque ambiguum ballaenarumque prementem',\n", " 'peneosque senex teuthranteusque caicus',\n", " 'infantemque uident adporrectumque draconem',\n", " 'indeuitato traiecit pectora telo',\n", " 'inpleuere nemus circumfusaeque dianam',\n", " 'intempestiua turbantes festa minerua',\n", " 'indoluit facto iunonigenaeque marito',\n", " 'uulgat adulterium diffamatamque parenti',\n", " 'inoosque sinus athamanteosque pererrant',\n", " 'auxiliumque domus seruatoremque fatentur',\n", " 'caucasiumque abarin sperchionidenque lycetum',\n", " 'exstimulata fame mugitibus armentorum',\n", " 'acrisioneas proetus possederat arces',\n", " 'siluarum lucos circumspicit antiquarum',\n", " 'usque adeo latet utilitas',\n", " 'quid sit adhuc dubito',\n", " 'peragit dum talia procne',\n", " 'terrigenasque feros insopitumque draconem',\n", " 'fumificisque locum mugitibus inpleuerunt',\n", " 'deucalioneas effugit inobrutus undas',\n", " 'templa coronantur bellatricemque mineruam',\n", " 'planguntur matres calydonides eueninae',\n", " 'consenuere casa paupertatemque fatendo',\n", " 'amphitryoniaden ioles ardore teneri',\n", " 'thermodontiaco caelatus balteus auro',\n", " 'sternentemque trabes irascentemque uideres',\n", " 'securosque artus contemptoremque petebat',\n", " 'praepositam timidis parientibus ilithyiam',\n", " 'uotaque suscipiunt exhortanturque dolentem',\n", " 'dodecatemoriis proprias mutantia uires',\n", " 'sidera uicinae subeuntibus attribuuntur',\n", " 'dodecatemorio fuerint spectare decebit',\n", " 'titulus quem graecia fecit',\n", " 'aries qua ducit olympum',\n", " 'una est tutela duorum',\n", " 'interpellatum uariata sorte dierum',\n", " 'postque tuos trasimenne lacus',\n", " 'tellusque natans aegyptia nilo',\n", " 'mediumque facit moderata tenorem',\n", " 'indelassato properantia corda uigore',\n", " 'tutorisue supercilium patruiue rigorem',\n", " 'et sua dicendo faciet',\n", " 'aut magnos heroas aget',\n", " 'a persi flacci saturae',\n", " 'hederae sequaces ipse semipaganus',\n", " 'magister artis ingenique largitor',\n", " 'cantare credas pegaseium nectar',\n", " 'uirtutem uideant intabescantque relicta',\n", " 'suetonius life of persius',\n", " 'extulit intra paucos annos',\n", " 'deucalioneos fudisset aquarius imbres',\n", " 'tauromenitanam uincunt feruore charybdim',\n", " 'marmaridae uolucres aequaturusque sagittas',\n", " 'debebis manibusque inportunamue fereris',\n", " 'illic semiferos ixionidas centauros',\n", " 'albanosque lares laurentinosque penates',\n", " 'albanosque lares laurentinosque penates',\n", " 'magnanimo iuueni miratorique catonis',\n", " 'arcesilaus atrox prothoenorque cloniusque',\n", " 'archelochumque antenoriden telamonius aiax',\n", " 'magnanimum aeaciden formidatamque tonanti',\n", " 'bellorum maculis—adclinem conspicit hastae',\n", " 'oedipodionides furto deserta pererrat',\n", " 'amphitryoniades fractum iuuenalibus annis',\n", " 'thiodamanta subit formidandoque tumultu',\n", " 'amphitryoniaden exutum horrentia terga',\n", " 'auctorem pacis seruatoremque deumque',\n", " 'oedipodionii mutent diademata fratres',\n", " 'consumpsit capaneus expirauitque receptum',\n", " 'puluere cornipedes explorarique furentum',\n", " 'thermodontiaco laetum remeare triumpho',\n", " 'ogygias leges inmansuetumque creonta',\n", " 'fulminibus mixtos intempestumque tonantem',\n", " 'sauromatas rabidos seruatoremque cruentum',\n", " 'taenariumque cacumen apollineasque therapnas',\n", " 'desuper accipitres exultauere rapinis',\n", " 'oedipodioniden uatisque horrenda canentis',\n", " 'spercheosque minas centaureusque lycormas',\n", " 'amphitryoniades puppemque alternus utrimque',\n", " 'pectora congeminant integratoque resultant',\n", " 'armaque maiores expectatura lacertos',\n", " 'prospectu uisus interclusere nefasto',\n", " 'adsimulant maculis internigrantibus albae',\n", " 'obliquumque dedit procumbentemque secutus',\n", " 'fragmina portarum bellatricesque carinae',\n", " 'exilem glisanta coroniamque feracem',\n", " 'coryciumque nemus propellentemque lilaean',\n", " 'praecipue eleae lacedaemoniaeque cohortes',\n", " 'obiectantque manus indignantemque tuentur',\n", " 'tormenta oppositum formidatique superbis',\n", " 'extimuit uultus admiraturque timorem',\n", " 'pastorum lassae debellauere cohortes',\n", " 'hypseus astyagen euasurumque relicto',\n", " 'thisbaeumque lichan anthedoniumque lycetum',\n", " 'intonsumque hersen contemptoremque profundi',\n", " 'tydeos infandi debellatorque cruenti',\n", " 'aepytiique duces telphusiacaeque phalanges',\n", " 'altrix bellorum bellatorumque uirorum',\n", " 'castelloque urbem circumuallare frequenti',\n", " 'laomedonteae troiana altaria flammae',\n", " 'spernendum consanguineam protendere dextram',\n", " 'acrisioneis tirynthia culmina muris',\n", " 'laomedontiadum non desperauerit urbi',\n", " 'damnatum superis aspernabatur honorem',\n", " 'postquam nunc dicta senatus',\n", " 'officit audenti defensantumque labores',\n", " 'amphitryoniades armenti uictor hiberi',\n", " 'insula fluctisono circumuallata profundo',\n", " 'laomedonteae sedes ingrata mineruae',\n", " 'postquam sacrificum delibauitque cruorem',\n", " 'fulmineo populatus ineuitabilis ardor',\n", " 'imperio circumspectant diuosque precantur',\n", " 'indelibata gaudenti uirgine donum',\n", " 'incustodita penetrauit moenia nocte',\n", " 'turbatae mentes imperfectusque deorum',\n", " 'cornipedumque uias aurigarumque labores',\n", " 'indispensato lassantem corpora nisu',\n", " 'laomedonteae sacrandam moenibus urbis',\n", " 'ausoniae populis oratorumque minaci',\n", " 'arganthoniacos armat carteia nepotes',\n", " 'infandi senones conlisaque quadrupedantum',\n", " 'tiburtis magios hispellatemque metaurum',\n", " 'laurentumque decus iaculatoremque sabellum',\n", " 'adsiliunt frenis infrenatique manipli',\n", " 'incustoditum mox inremeabile litus',\n", " 'accendunt animos expectatique nepotes',\n", " 'amphitryoniaden serpens qualisque comantis',\n", " 'pygmalioneam temptarem expromere gentem',\n", " 'inuidia subitis circumuenientibus armis',\n", " 'uiticolae nomen peruulgatura falerni',\n", " 'litora caietae laestrygoniosque recessus',\n", " 'incustodito saeuire dedistis amori',\n", " 'laomedonteae noscis telluris alumnos',\n", " 'sulla ferentinis priuernatumque maniplis',\n", " 'amphitryoniades pariter ueneranda cybebe',\n", " 'turrigerae molem tormentorumque labores',\n", " 'agnouit iuuenem scintillauitque cruentis',\n", " 'iamdudum minyas ambage ducemque',\n", " 'amphitryoniaden tegeaeo limine cepheus',\n", " 'amphitryoniades miscent suprema pauentes',\n", " 'laomedonteos fugeret fortuna penates',\n", " 'sit mihi nocturnaeque hecates',\n", " 'confisus periit admirandisque lacertis',\n", " 'additur imperiis hispania pyrenaeum',\n", " 'interea megalesiacae spectacula mappae',\n", " 'saltatus nigro tibicine qualiacumque',\n", " 'incipiunt torquere domestica seditioni',\n", " 'circumscriptorem cuius manantia fletu',\n", " 'sortiti ingenium diuinorumque capaces',\n", " 'declamatoris mulino corde uagelli',\n", " 'excusaturos non sollicitemus amicos',\n", " 'sacramentorum conuallem ruris auiti',\n", " 'gutturis exemplum conducendusque magister',\n", " 'concubitu sacris obseruandisque diebus',\n", " 'cuius amicitia conducendaque tabella',\n", " 'discipuli custos praemordet acoenonoetus',\n", " 'finxerunt pariter libarius archimagiri',\n", " 'interludentes examina lubrica pisces',\n", " 'uitibus assurgunt naturalique theatro',\n", " 'desperatarum potientes rursus aquarum',\n", " 'praefecturarum titulo tenuere secundo',\n", " 'cordaque languentem dedidicere metum',\n", " 'aegaeas hiemes ioniumque domat',\n", " 'sidera taenario caligantesque profundae',\n", " 'neptunum gremio complectitur amphitrite',\n", " 'neglectumque diu deposuisset opus',\n", " 'prostratis maduit nubigenis pholoe',\n", " 'thermodontiaca tanaim fregere securi',\n", " 'aspernata choros libertatemque comarum',\n", " 'flammea sollicitum praeuelatura pudorem',\n", " 'oblitae scelerum formidatique furoris',\n", " 'tartarea furias debellauisse bipenni',\n", " 'aut populatrices infestauere cateruae',\n", " 'noctiuago taedas informatura labori',\n", " 'semper inocciduos insopitosque manere']\n" ] } ], "source": [ "four_word_hexameters = []\n", "\n", "for lines in hexameter_lines:\n", " temp = return_x_word_hexameters(lines, 4)\n", " if temp:\n", " four_word_hexameters.append(temp)\n", "\n", " \n", "four_word_hexameters = [x for y in four_word_hexameters for x in y]\n", "pprint(four_word_hexameters)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Same caution with the results as above, but nothing for which\n", "# we cannot set up some kind of test, e.g. test the number of \n", "# syllables per line to be between 13 and 17." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 1 }