{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Measuring Negative Diction in Latin Satire\n", "\n", "Exploratory data analysis based on the following question:\n", "Persius's Satire 1 seems to be especially 'negative' compared to other poems in Latin literature,\n", "even compared to other works of satire. Is Persius 1 more negative than other satires? If so,\n", "how much more negative?\n", "\n", "Notes:\n", "\n", "- Defining \"negative diction\" (for now!) as instances of *non*, *nec*, *neque*. Will expand the list on the next pass\n", "- Next steps need to include baseline measures for rates of negative diction in Latin literature in general, Latin poetry and satire specifically\n", "\n", "Patrick J. Burns, last updated 11/4/2017" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "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.word import WordTokenizer\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", "word_tokenizer = WordTokenizer('latin')\n", "line_tokenizer = LineTokenizer('latin')\n", "replacer = JVReplacer()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# There appears to be a high concentration of 'negative'\n", "# diction in Persius. Let's quantify this.\n", "\n", "# So we get Persius's Satires files from the Latin Library...\n", "files = latinlibrary.fileids()\n", "persius_file = 'persius.txt'\n", "persius_raw = latinlibrary.raw(persius_file)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\"PROLOGVS \\n \\n\\n Nec fonte labra prolui caballino \\nnec in bicipiti somniasse Parnaso \\nmemini, ut repente sic poeta prodirem. \\nHeliconidasque pallidamque Pirenen \\nillis remitto quorum imagines lambunt 5 \\nhederae sequaces; ipse semipaganus \\nad sacra uatum carmen adfero nostrum. \\nquis expediuit psittaco suum 'chaere' \\npicamque docuit nostra uerba conari? \\nmagister artis ingenique largitor 10 \\nuenter, negatas artifex sequi uoces. \\nquod si dolosi spes refulserit nummi, \\ncoruos poetas et poetridas picas \\ncantare credas Pegaseium nectar.\\n \\n\\n \\n\\n \\n\", 'SATVRA I \\n \\n\\n \\nO curas hominum! o quantum est in rebus inane! \\n\\'quis leget haec?\\' min tu istud ais? nemo hercule. \\'nemo?\\' \\nuel duo uel nemo. \\'turpe et miserabile.\\' quare? \\nne mihi Polydamas et Troiades Labeonem \\npraetulerint? nugae. non, si quid turbida Roma 5 \\neleuet, accedas examenue inprobum in illa \\ncastiges trutina nec te quaesiueris extra. \\nnam Romae quis non—a, si fas dicere—sed fas \\ntum cum ad canitiem et nostrum istud uiuere triste \\naspexi ac nucibus facimus quaecumque relictis, 10 \\ncum sapimus patruos. tunc tunc—ignoscite (nolo, \\nquid faciam?) sed sum petulanti splene—cachinno. \\n scribimus inclusi, numeros ille, hic pede liber, \\ngrande aliquid quod pulmo animae praelargus anhelet. \\nscilicet haec populo pexusque togaque recenti 15 \\net natalicia tandem cum sardonyche albus \\nsede leges celsa, liquido cum plasmate guttur \\nmobile conlueris, patranti fractus ocello. \\ntunc neque more probo uideas nec uoce serena \\ningentis trepidare Titos, cum carmina lumbum 20 \\nintrant et tremulo scalpuntur ubi intima uersu. \\ntun, uetule, auriculis alienis colligis escas, \\narticulis quibus et dicas cute perditus \\'ohe\\'? \\n\\'quo didicisse, nisi hoc fermentum et quae semel intus \\ninnata est rupto iecore exierit caprificus?\\' 25 \\nen pallor seniumque! o mores, usque adeone \\nscire tuum nihil est nisi te scire hoc sciat alter? \\n\\'at pulchrum est digito monstrari et dicier \"hic est.\" \\nten cirratorum centum dictata fuisse \\npro nihilo pendes?\\' ecce inter pocula quaerunt 30 \\nRomulidae saturi quid dia poemata narrent. \\nhic aliquis, cui circum umeros hyacinthina laena est, \\nrancidulum quiddam balba de nare locutus \\nPhyllidas, Hypsipylas, uatum et plorabile siquid, \\neliquat ac tenero subplantat uerba palato. 35 \\nadsensere uiri: nunc non cinis ille poetae \\nfelix? non leuior cippus nunc inprimit ossa? \\nlaudant conuiuae: nunc non e manibus illis, \\nnunc non e tumulo fortunataque fauilla \\nnascentur uiolae? \\'rides\\' ait \\'et nimis uncis 40 \\nnaribus indulges. an erit qui uelle recuset \\nos populi meruisse et cedro digna locutus \\nlinquere nec scombros metuentia carmina nec tus?\\' \\n quisquis es, o modo quem ex aduerso dicere feci, \\nnon ego cum scribo, si forte quid aptius exit, 45 \\nquando haec rara auis est, si quid tamen aptius exit, \\nlaudari metuam; neque enim mihi cornea fibra est. \\nsed recti finemque extremumque esse recuso \\n\\'euge\\' tuum et \\'belle.\\' nam \\'belle\\' hoc excute totum: \\nquid non intus habet? non hic est Ilias Atti 50 \\nebria ueratro? non siqua elegidia crudi \\ndictarunt proceres? non quidquid denique lectis \\nscribitur in citreis? calidum scis ponere sumen, \\nscis comitem horridulum trita donare lacerna, \\net \\'uerum\\' inquis \\'amo, uerum mihi dicite de me.\\' 55 \\nqui pote? uis dicam? nugaris, cum tibi, calue, \\npinguis aqualiculus propenso sesquipede extet. \\no Iane, a tergo quem nulla ciconia pinsit \\nnec manus auriculas imitari mobilis albas \\nnec linguae quantum sitiat canis Apula tantae. 60 \\nuos, o patricius sanguis, quos uiuere fas est \\noccipiti caeco, posticae occurrite sannae. \\n \\'quis populi sermo est? quis enim nisi carmina molli \\nnunc demum numero fluere, ut per leue seueros \\neffundat iunctura unguis? scit tendere uersum 65 \\nnon secus ac si oculo rubricam derigat uno. \\nsiue opus in mores, in luxum, in prandia regum \\ndicere, res grandes nostro dat Musa poetae.\\' \\necce modo heroas sensus adferre docemus \\nnugari solitos Graece, nec ponere lucum 70 \\nartifices nec rus saturum laudare, ubi corbes \\net focus et porci et fumosa Palilia feno, \\nunde Remus sulcoque terens dentalia, Quinti, \\ncum trepida ante boues dictatorem induit uxor \\net tua aratra domum lictor tulit—euge poeta! 75 \\n\\'est nunc Brisaei quem uenosus liber Acci, \\nsunt quos Pacuuiusque et uerrucosa moretur \\nAntiopa aerumnis cor luctificabile fulta?\\' \\nhos pueris monitus patres infundere lippos \\ncum uideas, quaerisne unde haec sartago loquendi 80 \\nuenerit in linguas, unde istud dedecus in quo \\ntrossulus exultat tibi per subsellia leuis? \\nnilne pudet capiti non posse pericula cano \\npellere quin tepidum hoc optes audire \\'decenter\\'? \\n\\'fur es\\' ait Pedio. Pedius quid? crimina rasis 85 \\nlibrat in antithetis, doctas posuisse figuras \\nlaudatur: \\'bellum hoc.\\' hoc bellum? an, Romule, ceues? \\nmen moueat? quippe, et, cantet si naufragus, assem \\nprotulerim? cantas, cum fracta te in trabe pictum \\nex umero portes? uerum nec nocte paratum 90 \\nplorabit qui me uolet incuruasse querella. \\n \\'sed numeris decor est et iunctura addita crudis. \\ncludere sic uersum didicit \"Berecyntius Attis\" \\net \"qui caeruleum dirimebat Nerea delphin,\" \\nsic \"costam longo subduximus Appennino.\" 95 \\n\"Arma uirum\", nonne hoc spumosum et cortice pingui \\nut ramale uetus uegrandi subere coctum?\\' \\nquidnam igitur tenerum et laxa ceruice legendum? \\n\\'torua Mimalloneis inplerunt cornua bombis, \\net raptum uitulo caput ablatura superbo 100 \\nBassaris et lyncem Maenas flexura corymbis \\neuhion ingeminat, reparabilis adsonat echo.\\' \\nhaec fierent si testiculi uena ulla paterni \\nuiueret in nobis? summa delumbe saliua \\nhoc natat in labris et in udo est Maenas et Attis 105 \\nnec pluteum caedit nec demorsos sapit unguis. \\n \\'sed quid opus teneras mordaci radere uero \\nauriculas? uide sis ne maiorum tibi forte \\nlimina frigescant: sonat hic de nare canina \\nlittera.\\' per me equidem sint omnia protinus alba; 110 \\nnil moror. euge omnes, omnes bene, mirae eritis res. \\nhoc iuuat? \\'hic\\' inquis \\'ueto quisquam faxit oletum.\\' \\npinge duos anguis: \\'pueri, sacer est locus, extra \\nmeiite.\\' discedo. secuit Lucilius urbem, \\nte Lupe, te Muci, et genuinum fregit in illis. 115 \\nomne uafer uitium ridenti Flaccus amico \\ntangit et admissus circum praecordia ludit, \\ncallidus excusso populum suspendere naso. \\nme muttire nefas? nec clam? nec cum scrobe? nusquam? \\nhic tamen infodiam. uidi, uidi ipse, libelle: 120 \\nauriculas asini quis non habet? hoc ego opertum, \\nhoc ridere meum, tam nil, nulla tibi uendo \\nIliade. audaci quicumque adflate Cratino \\niratum Eupolidem praegrandi cum sene palles, \\naspice et haec, si forte aliquid decoctius audis. 125 \\ninde uaporata lector mihi ferueat aure, \\nnon hic qui in crepidas Graiorum ludere gestit \\nsordidus et lusco qui possit dicere \\'lusce,\\' \\nsese aliquem credens Italo quod honore supinus \\nfregerit heminas Arreti aedilis iniquas, 130 \\nnec qui abaco numeros et secto in puluere metas \\nscit risisse uafer, multum gaudere paratus \\nsi cynico barbam petulans nonaria uellat. \\nhis mane edictum, post prandia Callirhoen do.\\n \\n\\n \\n\\n \\n', \"SATVRA II \\n \\n\\n \\nHunc, Macrine, diem numera meliore lapillo, \\nqui tibi labentis apponet candidus annos. \\nfunde merum genio. non tu prece poscis emaci \\nquae nisi seductis nequeas committere diuis; \\nat bona pars procerum tacita libabit acerra. 5 \\nhaut cuiuis promptum est murmurque humilisque susurros \\ntollere de templis et aperto uiuere uoto. \\n'mens bona, fama, fides', haec clare et ut audiat hospes; \\nilla sibi introrsum et sub lingua murmurat: 'o si \\nebulliat patruus, praeclarum funus!' et 'o si 10 \\nsub rastro crepet argenti mihi seria dextro \\nHercule! pupillumue utinam, quem proximus heres \\ninpello, expungam; nam et est scabiosus et acri \\nbile tumet. Nerio iam tertia conditur uxor.' \\nhaec sancte ut poscas, Tiberino in gurgite mergis 15 \\nmane caput bis terque et noctem flumine purgas. \\nheus age, responde (minimum est quod scire laboro) \\nde Ioue quid sentis? estne ut praeponere cures \\nhunc—cuinam? cuinam? uis Staio? an—scilicet haeres? \\nquis potior iudex puerisue quis aptior orbis? 20 \\nhoc igitur quo tu Iouis aurem inpellere temptas \\ndic agedum Staio. 'pro Iuppiter, o bone' clamet \\n'Iuppiter!' at sese non clamet Iuppiter ipse? \\nignouisse putas quia, cum tonat, ocius ilex \\nsulpure discutitur sacro quam tuque domusque? 25 \\nan quia non fibris ouium Ergennaque iubente \\ntriste iaces lucis euitandumque bidental, \\nidcirco stolidam praebet tibi uellere barbam \\nIuppiter? aut quidnam est qua tu mercede deorum \\nemeris auriculas? pulmone et lactibus unctis? 30 \\n ecce auia aut metuens diuum matertera cunis \\nexemit puerum frontemque atque uda labella \\ninfami digito et lustralibus ante saliuis \\nexpiat, urentis oculos inhibere perita; \\ntunc manibus quatit et spem macram supplice uoto 35 \\nnunc Licini in campos, nunc Crassi mittit in aedis: \\n'hunc optet generum rex et regina, puellae \\nhunc rapiant; quidquid calcauerit hic, rosa fiat.' \\nast ego nutrici non mando uota. negato, \\nIuppiter, haec illi, quamuis te albata rogarit. 40 \\n poscis opem neruis corpusque fidele senectae. \\nesto age. sed grandes patinae tuccetaque crassa \\nadnuere his superos uetuere Iouemque morantur. \\nrem struere exoptas caeso boue Mercuriumque 45 \\narcessis fibra: 'da fortunare Penatis, \\nda pecus et gregibus fetum.' quo, pessime, pacto, \\ntot tibi cum in flamma iunicum omenta liquescant? \\net tamen hic extis et opimo uincere ferto \\nintendit: 'iam crescit ager, iam crescit ouile, 50 \\niam dabitur, iam iam';donec deceptus et exspes \\nnequiquam fundo suspiret nummus in imo. \\n si tibi creterras argenti incusaque pingui \\nauro dona feram, sudes et pectore laeuo \\nexcutiat guttas laetari praetrepidum cor. 55 \\nhinc illud subiit, auro sacras quod ouato \\nperducis facies. 'nam fratres inter aenos, \\nsomnia pituita qui purgatissima mittunt, \\npraecipui sunto sitque illis aurea barba.' \\naurum uasa Numae Saturniaque inpulit aera 60 \\nVestalisque urnas et Tuscum fictile mutat. \\no curuae in terris animae et caelestium inanis, \\nquid iuuat hoc, templis nostros inmittere mores \\net bona dis ex hac scelerata ducere pulpa? \\nhaec sibi corrupto casiam dissoluit oliuo, 65 \\nhaec Calabrum coxit uitiato murice uellus, \\nhaec bacam conchae rasisse et stringere uenas \\nferuentis massae crudo de puluere iussit. \\npeccat et haec, peccat, uitio tamen utitur. at uos \\ndicite, pontifices, in sancto quid facit aurum? 70 \\nnempe hoc quod Veneri donatae a uirgine pupae. \\nquin damus id superis, de magna quod dare lance \\nnon possit magni Messalae lippa propago? \\nconpositum ius fasque animo sanctosque recessus \\nmentis et incoctum generoso pectus honesto. 75 \\nhaec cedo ut admoueam templis et farre litabo. \\n \\n\\n \\n\\n \\n\\n \\n\", \"SATVRA III \\n \\n\\n \\nNempe haec adsidue. iam clarum mane fenestras \\nintrat et angustas extendit lumine rimas. \\nstertimus, indomitum quod despumare Falernum \\nsufficiat, quinta dum linea tangitur umbra. \\n'en quid agis? siccas insana canicula messes 5 \\niam dudum coquit et patula pecus omne sub ulmo est' \\nunus ait comitum. uerumne? itan? ocius adsit \\nhuc aliquis. nemon? turgescit uitrea bilis: \\nfindor, ut Arcadiae pecuaria rudere credas. \\niam liber et positis bicolor membrana capillis 10 \\ninque manus chartae nodosaque uenit harundo. \\ntum querimur crassus calamo quod pendeat umor. \\nnigra sed infusa uanescit sepia lympha, \\ndilutas querimur geminet quod fistula guttas. \\no miser inque dies ultra miser, hucine rerum 15 \\nuenimus? a, cur non potius teneroque columbo \\net similis regum pueris pappare minutum \\nposcis et iratus mammae lallare recusas? \\nan tali studeam calamo? cui uerba? quid istas \\nsuccinis ambages? tibi luditur. effluis amens, 20 \\ncontemnere. sonat uitium percussa, maligne \\nrespondet uiridi non cocta fidelia limo. \\nudum et molle lutum es, nunc nunc properandus et acri \\nfingendus sine fine rota. sed rure paterno \\nest tibi far modicum, purum et sine labe salinum 25 \\n(quid metuas?) cultrixque foci secura patella. \\nhoc satis? an deceat pulmonem rumpere uentis \\nstemmate quod Tusco ramum millesime ducis \\ncensoremue tuum uel quod trabeate salutas? \\nad populum phaleras! ego te intus et in cute noui. 30 \\nnon pudet ad morem discincti uiuere Nattae. \\nsed stupet hic uitio et fibris increuit opimum \\npingue, caret culpa, nescit quid perdat, et alto \\ndemersus summa rursus non bullit in unda. \\n magne pater diuum, saeuos punire tyrannos 35 \\nhaut alia ratione uelis, cum dira libido \\nmouerit ingenium feruenti tincta ueneno: \\nuirtutem uideant intabescantque relicta. \\nanne magis Siculi gemuerunt aera iuuenci \\net magis auratis pendens laquearibus ensis 40 \\npurpureas subter ceruices terruit, 'imus, \\nimus praecipites' quam si sibi dicat et intus \\npalleat infelix quod proxima nesciat uxor? \\n saepe oculos, memini, tangebam paruus oliuo, \\ngrandia si nollem morituri uerba Catonis 45 \\ndiscere non sano multum laudanda magistro, \\nquae pater adductis sudans audiret amicis. \\niure; etenim id summum, quid dexter senio ferret, \\nscire erat in uoto, damnosa canicula quantum \\nraderet, angustae collo non fallier orcae, 50 \\nneu quis callidior buxum torquere flagello. \\nhaut tibi inexpertum curuos deprendere mores \\nquaeque docet sapiens bracatis inlita Medis \\nporticus, insomnis quibus et detonsa iuuentus \\ninuigilat siliquis et grandi pasta polenta; 55 \\net tibi quae Samios diduxit littera ramos \\nsurgentem dextro monstrauit limite callem. \\nstertis adhuc laxumque caput conpage soluta \\noscitat hesternum dissutis undique malis. \\nest aliquid quo tendis et in quod derigis arcum? 60 \\nan passim sequeris coruos testaque lutoque, \\nsecurus quo pes ferat, atque ex tempore uiuis? \\n elleborum frustra, cum iam cutis aegra tumebit, \\nposcentis uideas; uenienti occurrite morbo, \\net quid opus Cratero magnos promittere montis? 65 \\ndiscite et, o miseri, causas cognoscite rerum: \\nquid sumus et quidnam uicturi gignimur, ordo \\nquis datus, aut metae qua mollis flexus et unde, \\nquis modus argento, quid fas optare, quid asper \\nutile nummus habet, patriae carisque propinquis 70 \\nquantum elargiri deceat, quem te deus esse \\niussit et humana qua parte locatus es in re. \\ndisce nec inuideas quod multa fidelia putet \\nin locuplete penu, defensis pinguibus Vmbris, \\net piper et pernae, Marsi monumenta clientis, 75 \\nmaenaque quod prima nondum defecerit orca. \\n hic aliquis de gente hircosa centurionum \\ndicat: 'quod sapio satis est mihi. non ego curo \\nesse quod Arcesilas aerumnosique Solones \\nobstipo capite et figentes lumine terram, 80 \\nmurmura cum secum et rabiosa silentia rodunt \\natque exporrecto trutinantur uerba labello, \\naegroti ueteris meditantes somnia, gigni \\nde nihilo nihilum, in nihilum nil posse reuerti. \\nhoc est quod palles? cur quis non prandeat hoc est?' 85 \\nhis populus ridet, multumque torosa iuuentus \\ningeminat tremulos naso crispante cachinnos. \\n 'inspice, nescio quid trepidat mihi pectus et aegris \\nfaucibus exsuperat grauis halitus, inspice sodes' \\nqui dicit medico, iussus requiescere, postquam 90 \\ntertia conpositas uidit nox currere uenas, \\nde maiore domo modice sitiente lagoena \\nlenia loturo sibi Surrentina rogabit. \\n'heus bone, tu palles.' 'nihil est.' 'uideas tamen istuc, \\nquidquid id est. surgit tacite tibi lutea pellis.' 95 \\n'at tu deterius palles, ne sis mihi tutor. \\niam pridem hunc sepeli; tu restas.' 'perge, tacebo.' \\nturgidus hic epulis atque albo uentre lauatur, \\ngutture sulpureas lente exhalante mefites. \\nsed tremor inter uina subit calidumque trientem 100 \\nexcutit e manibus, dentes crepuere retecti, \\nuncta cadunt laxis tunc pulmentaria labris. \\nhinc tuba, candelae, tandemque beatulus alto \\nconpositus lecto crassisque lutatus amomis \\nin portam rigidas calces extendit. at illum 105 \\nhesterni capite induto subiere Quirites. \\n 'tange, miser, uenas et pone in pectore dextram; \\nnil calet hic. summosque pedes attinge manusque; \\nnon frigent.' uisa est si forte pecunia, siue \\ncandida uicini subrisit molle puella, 110 \\ncor tibi rite salit? positum est algente catino \\ndurum holus et populi cribro decussa farina: \\ntemptemus fauces; tenero latet ulcus in ore \\nputre quod haut deceat plebeia radere beta. \\nalges, cum excussit membris timor albus aristas; 115 \\nnunc face supposita feruescit sanguis et ira \\nscintillant oculi, dicisque facisque quod ipse \\nnon sani esse hominis non sanus iuret Orestes.\\n \\n\\n \\n\\n \\n\", 'SATVRA IV \\n \\n\\n \\n\\'Rem populi tractas?\\' (barbatum haec crede magistrum \\ndicere, sorbitio tollit quem dira cicutae) \\n\\'quo fretus? dic hoc, magni pupille Pericli. \\nscilicet ingenium et rerum prudentia uelox \\nante pilos uenit, dicenda tacendaue calles. 5 \\nergo ubi commota feruet plebecula bile, \\nfert animus calidae fecisse silentia turbae \\nmaiestate manus. quid deinde loquere? \"Quirites, \\nhoc puta non iustum est, illud male, rectius illud.\" \\nscis etenim iustum gemina suspendere lance 10 \\nancipitis librae, rectum discernis ubi inter \\ncurua subit uel cum fallit pede regula uaro, \\net potis es nigrum uitio praefigere theta. \\nquin tu igitur summa nequiquam pelle decorus \\nante diem blando caudam iactare popello 15 \\ndesinis, Anticyras melior sorbere meracas? \\nquae tibi summa boni est? uncta uixisse patella \\nsemper et adsiduo curata cuticula sole? \\nexpecta, haut aliud respondeat haec anus. i nunc, \\n\"Dinomaches ego sum\" suffla, \"sum candidus.\" esto, 20 \\ndum ne deterius sapiat pannucia Baucis, \\ncum bene discincto cantauerit ocima uernae.\\' \\n ut nemo in sese temptat descendere, nemo, \\nsed praecedenti spectatur mantica tergo! \\nquaesieris \\'nostin Vettidi praedia?\\' \\'cuius?\\' 25 \\n\\'diues arat Curibus quantum non miluus errat.\\' \\n\\'hunc ais, hunc dis iratis genioque sinistro, \\nqui, quandoque iugum pertusa ad compita figit, \\nseriolae ueterem metuens deradere limum \\ningemit \"hoc bene sit\" tunicatum cum sale mordens 30 \\ncepe et farratam pueris plaudentibus ollam \\npannosam faecem morientis sorbet aceti?\\' \\nat si unctus cesses et figas in cute solem, \\nest prope te ignotus cubito qui tangat et acre \\ndespuat: \\'hi mores! penemque arcanaque lumbi 35 \\nruncantem populo marcentis pandere uuluas. \\ntum, cum maxillis balanatum gausape pectas, \\ninguinibus quare detonsus gurgulio extat? \\nquinque palaestritae licet haec plantaria uellant \\nelixasque nates labefactent forcipe adunca, 40 \\nnon tamen ista filix ullo mansuescit aratro.\\' \\n caedimus inque uicem praebemus crura sagittis. \\nuiuitur hoc pacto, sic nouimus. ilia subter \\ncaecum uulnus habes, sed lato balteus auro \\npraetegit. ut mauis, da uerba et decipe neruos, 45 \\nsi potes. \\'egregium cum me uicinia dicat, \\nnon credam?\\' uiso si palles, inprobe, nummo, \\nsi facis in penem quidquid tibi uenit, amarum \\nsi puteal multa cautus uibice flagellas, \\nnequiquam populo bibulas donaueris aures. 50 \\nrespue quod non es; tollat sua munera cerdo. \\ntecum habita: noris quam sit tibi curta supellex. \\n \\n\\n \\n\\n \\n\\n \\n', 'SATVRA V \\n \\n\\n \\nVatibus hic mos est, centum sibi poscere uoces, \\ncentum ora et linguas optare in carmina centum, \\nfabula seu maesto ponatur hianda tragoedo, \\nuolnera seu Parthi ducentis ab inguine ferrum. \\n\\'quorsum haec? aut quantas robusti carminis offas 5 \\ningeris, ut par sit centeno gutture niti? \\ngrande locuturi nebulas Helicone legunto, \\nsi quibus aut Procnes aut si quibus olla Thyestae \\nferuebit saepe insulso cenanda Glyconi. \\ntu neque anhelanti, coquitur dum massa camino, 10 \\nfolle premis uentos nec clauso murmure raucus \\nnescio quid tecum graue cornicaris inepte \\nnec scloppo tumidas intendis rumpere buccas. \\nuerba togae sequeris iunctura callidus acri, \\nore teres modico, pallentis radere mores 15 \\ndoctus et ingenuo culpam defigere ludo. \\nhinc trahe quae dicis mensasque relinque Mycenis \\ncum capite et pedibus plebeiaque prandia noris.\\' \\nnon equidem hoc studeo, pullatis ut mihi nugis \\npagina turgescat dare pondus idonea fumo. 20 \\nsecrete loquimur. tibi nunc hortante Camena \\nexcutienda damus praecordia, quantaque nostrae \\npars tua sit, Cornute, animae, tibi, dulcis amice, \\nostendisse iuuat. pulsa, dinoscere cautus \\nquid solidum crepet et pictae tectoria linguae. 25 \\nhic ego centenas ausim deposcere fauces, \\nut quantum mihi te sinuoso in pectore fixi \\nuoce traham pura, totumque hoc uerba resignent \\nquod latet arcana non enarrabile fibra. \\n cum primum pauido custos mihi purpura cessit 30 \\nbullaque subcinctis Laribus donata pependit, \\ncum blandi comites totaque inpune Subura \\npermisit sparsisse oculos iam candidus umbo, \\ncumque iter ambiguum est et uitae nescius error \\ndiducit trepidas ramosa in compita mentes, 35 \\nme tibi supposui. teneros tu suscipis annos \\nSocratico, Cornute, sinu. tum fallere sollers \\nadposita intortos extendit regula mores \\net premitur ratione animus uincique laborat \\nartificemque tuo ducit sub pollice uoltum. 40 \\ntecum etenim longos memini consumere soles \\net tecum primas epulis decerpere noctes. \\nunum opus et requiem pariter disponimus ambo \\natque uerecunda laxamus seria mensa. \\nnon equidem hoc dubites, amborum foedere certo 45 \\nconsentire dies et ab uno sidere duci. \\nnostra uel aequali suspendit tempora Libra \\nParca tenax ueri, seu nata fidelibus hora \\ndiuidit in Geminos concordia fata duorum \\nSaturnumque grauem nostro Ioue frangimus una, 50 \\nnescio quod certe est quod me tibi temperat astrum. \\n mille hominum species et rerum discolor usus; \\nuelle suum cuique est nec uoto uiuitur uno. \\nmercibus hic Italis mutat sub sole recenti \\nrugosum piper et pallentis grana cumini, 55 \\nhic satur inriguo mauult turgescere somno, \\nhic campo indulget, hunc alea decoquit, ille \\nin uenerem putris; sed cum lapidosa cheragra \\nfregerit articulos ueteris ramalia fagi, \\ntunc crassos transisse dies lucemque palustrem 60 \\net sibi iam seri uitam ingemuere relictam. \\nat te nocturnis iuuat inpallescere chartis; \\ncultor enim iuuenum purgatas inseris aures \\nfruge Cleanthea. petite hinc, puerique senesque, \\nfinem animo certum miserisque uiatica canis. 65 \\n\\'cras hoc fiet.\\' idem cras fiat. \\'quid? quasi magnum \\nnempe diem donas!\\' sed cum lux altera uenit, \\niam cras hesternum consumpsimus; ecce aliud cras \\negerit hos annos et semper paulum erit ultra. \\nnam quamuis prope te, quamuis temone sub uno 70 \\nuertentem sese frustra sectabere canthum, \\ncum rota posterior curras et in axe secundo. \\n libertate opus est. non hac, ut quisque Velina \\nPublius emeruit, scabiosum tesserula far \\npossidet. heu steriles ueri, quibus una Quiritem 75 \\nuertigo facit! hic Dama est non tresis agaso, \\nuappa lippus et in tenui farragine mendax. \\nuerterit hunc dominus, momento turbinis exit \\nMarcus Dama. papae! Marco spondente recusas \\ncredere tu nummos? Marco sub iudice palles? 80 \\nMarcus dixit, ita est. adsigna, Marce, tabellas. \\nhaec mera libertas, hoc nobis pillea donant. \\n\\'an quisquam est alius liber, nisi ducere uitam \\ncui licet ut libuit? licet ut uolo uiuere, non sum \\nliberior Bruto?\\' \\'mendose colligis\\' inquit 85 \\nStoicus hic aurem mordaci lotus aceto, \\n\\'hoc relicum accipio, \"licet\" illud et \"ut uolo\" tolle.\\' \\n\\'uindicta postquam meus a praetore recessi, \\ncur mihi non liceat, iussit quodcumque uoluntas, \\nexcepto siquid Masuri rubrica uetabit?\\' 90 \\ndisce, sed ira cadat naso rugosaque sanna, \\ndum ueteres auias tibi de pulmone reuello. \\nnon praetoris erat stultis dare tenuia rerum \\nofficia atque usum rapidae permittere uitae; \\nsambucam citius caloni aptaueris alto. 95 \\nstat contra ratio et secretam garrit in aurem, \\nne liceat facere id quod quis uitiabit agendo. \\npublica lex hominum naturaque continet hoc fas, \\nut teneat uetitos inscitia debilis actus. \\ndiluis elleborum, certo conpescere puncto 100 \\nnescius examen? uetat hoc natura medendi. \\nnauem si poscat sibi peronatus arator \\nluciferi rudis, exclamet Melicerta perisse \\nfrontem de rebus. tibi recto uiuere talo \\nars dedit et ueris speciem dinoscere calles, 105 \\nne qua subaerato mendosum tinniat auro? \\nquaeque sequenda forent quaeque euitanda uicissim, \\nilla prius creta, mox haec carbone notasti? \\nes modicus uoti, presso lare, dulcis amicis? \\niam nunc adstringas, iam nunc granaria laxes, 110 \\ninque luto fixum possis transcendere nummum \\nnec gluttu sorbere saliuam Mercurialem? \\n\\'haec mea sunt, teneo\\' cum uere dixeris, esto \\nliberque ac sapiens praetoribus ac Ioue dextro. \\nsin tu, cum fueris nostrae paulo ante farinae. 115 \\npelliculam ueterem retines et fronte politus \\nastutam uapido seruas in pectore uolpem, \\nquae dederam supra relego funemque reduco. \\nnil tibi concessit ratio; digitum exere, peccas, \\net quid tam paruum est? sed nullo ture litabis, 120 \\nhaereat in stultis breuis ut semuncia recti. \\nhaec miscere nefas nec, cum sis cetera fossor, \\ntris tantum ad numeros Satyrum moueare Bathylli. \\n\\'liber ego.\\' unde datum hoc sumis, tot subdite rebus? \\nan dominum ignoras nisi quem uindicta relaxat? 125 \\n\\'i, puer, et strigiles Crispini ad balnea defer\\' \\nsi increpuit, \\'cessas nugator?\\', seruitium acre \\nte nihil inpellit nec quicquam extrinsecus intrat \\nquod neruos agitet; sed si intus et in iecore aegro \\nnascuntur domini, qui tu inpunitior exis 130 \\natque hic quem ad strigilis scutica et metus egit erilis? \\n mane piger stertis. \\'surge\\' inquit Auaritia, \\'eia \\nsurge.\\' negas. instat. \\'surge\\' inquit. \\'non queo.\\' \\'surge.\\' \\n\\'et quid agam?\\' \\'rogat! en saperdas aduehe Ponto, \\ncastoreum, stuppas, hebenum, tus, lubrica Coa. 135 \\ntolle recens primus piper et sitiente camelo. \\nuerte aliquid; iura.\\' \\'sed Iuppiter audiet.\\' \\'eheu, \\nbaro, regustatum digito terebrare salinum \\ncontentus perages, si uiuere cum Ioue tendis.\\' \\niam pueris pellem succinctus et oenophorum aptas. 140 \\nocius ad nauem! nihil obstat quin trabe uasta \\nAegaeum rapias, ni sollers Luxuria ante \\nseductum moneat: \\'quo deinde, insane, ruis, quo? \\nquid tibi uis? calido sub pectore mascula bilis \\nintumuit quam non extinxerit urna cicutae? 145 \\ntu mare transilias? tibi torta cannabe fulto \\ncena sit in transtro Veiientanumque rubellum \\nexhalet uapida laesum pice sessilis obba? \\nquid petis? ut nummi, quos hic quincunce modesto \\nnutrieras, pergant auidos sudare deunces? 150 \\nindulge genio, carpamus dulcia, nostrum est \\nquod uiuis, cinis et manes et fabula fies, \\nuiue memor leti, fugit hora, hoc quod loquor inde est.\\' \\nen quid agis? duplici in diuersum scinderis hamo. \\nhuncine an hunc sequeris? subeas alternus oportet 155 \\nancipiti obsequio dominos, alternus oberres. \\nnec tu, cum obstiteris semel instantique negaris \\nparere imperio, \\'rupi iam uincula\\' dicas; \\nnam et luctata canis nodum abripit, et tamen illi, \\ncum fugit, a collo trahitur pars longa catenae. 160 \\n\\'Daue, cito, hoc credas iubeo, finire dolores \\npraeteritos meditor\\' (crudum Chaerestratus unguem \\nadrodens ait haec). \\'an siccis dedecus obstem \\ncognatis? an rem patriam rumore sinistro \\nlimen ad obscenum frangam, dum Chrysidis udas 165 \\nebrius ante fores extincta cum face canto?\\' \\n\\'euge, puer, sapias, dis depellentibus agnam \\npercute.\\' \\'sed censen plorabit, Daue, relicta?\\' \\n\\'nugaris. solea, puer, obiurgabere rubra, \\nne trepidare uelis atque artos rodere casses. 170 \\nnunc ferus et uiolens; at, si uocet, haut mora dicas \\n\"quidnam igitur faciam? nec nunc, cum arcessat et ultro \\nsupplicet, accedam?\" si totus et integer illinc \\nexieras, nec nunc.\\' hic hic quod quaerimus, hic est, \\nnon in festuca, lictor quam iactat ineptus. 175 \\nius habet ille sui, palpo quem ducit hiantem \\ncretata Ambitio? uigila et cicer ingere large \\nrixanti populo, nostra ut Floralia possint \\naprici meminisse senes. quid pulchrius? at cum \\nHerodis uenere dies unctaque fenestra 180 \\ndispositae pinguem nebulam uomuere lucernae \\nportantes uiolas rubrumque amplexa catinum \\ncauda natat thynni, tumet alba fidelia uino, \\nlabra moues tacitus recutitaque sabbata palles. \\ntum nigri lemures ouoque pericula rupto, 185 \\ntum grandes galli et cum sistro lusca sacerdos \\nincussere deos inflantis corpora, si non \\npraedictum ter mane caput gustaueris ali. \\ndixeris haec inter uaricosos centuriones, \\ncontinuo crassum ridet Pulfenius ingens 190 \\net centum Graecos curto centusse licetur.\\n \\n\\n \\n\\n \\n', \"SATVRA VI \\n \\n\\n \\nAdmouit iam bruma foco te, Basse, Sabino? \\niamne lyra et tetrico uiuunt tibi pectine chordae? \\nmire opifex numeris ueterum primordia uocum \\natque marem strepitum fidis intendisse Latinae, \\nmox iuuenes agitare iocos et pollice honesto 5 \\negregius lusisse senex. mihi nunc Ligus ora \\nintepet hibernatque meum mare, qua latus ingens \\ndant scopuli et multa litus se ualle receptat. \\n'Lunai portum, est operae, cognoscite, ciues.' \\ncor iubet hoc Enni, postquam destertuit esse 10 \\nMaeonides Quintus pauone ex Pythagoreo. \\nhic ego securus uolgi et quid praeparet auster \\ninfelix pecori, securus et angulus ille \\nuicini nostro quia pinguior, etsi adeo omnes \\nditescant orti peioribus, usque recusem 15 \\ncuruus ob id minui senio aut cenare sine uncto \\net signum in uapida naso tetigisse lagoena. \\ndiscrepet his alius. geminos, horoscope, uaro \\nproducis genio: solis natalibus est qui \\ntinguat holus siccum muria uafer in calice empta, 20 \\nipse sacrum inrorans patinae piper; hic bona dente \\ngrandia magnanimus peragit puer. utar ego, utar, \\nnec rhombos ideo libertis ponere lautus \\nnec tenuis sollers turdarum nosse saliuas. \\nmesse tenus propria uiue et granaria (fas est) 25 \\nemole. quid metuas? occa et seges altera in herba est. \\nat uocat officium, trabe rupta Bruttia saxa \\nprendit amicus inops remque omnem surdaque uota \\ncondidit Ionio, iacet ipse in litore et una \\ningentes de puppe dei iamque obuia mergis 30 \\ncosta ratis lacerae; nunc et de caespite uiuo \\nfrange aliquid, largire inopi, ne pictus oberret \\ncaerulea in tabula. sed cenam funeris heres \\nnegleget iratus quod rem curtaueris; urnae \\nossa inodora dabit, seu spirent cinnama surdum 35 \\nseu ceraso peccent casiae nescire paratus. \\n'tune bona incolumis minuas?' et Bestius urguet \\ndoctores Graios: 'ita fit; postquam sapere urbi \\ncum pipere et palmis uenit nostrum hoc maris expers, \\nfenisecae crasso uitiarunt unguine pultes.' 40 \\nhaec cinere ulterior metuas? at tu, meus heres \\nquisquis eris, paulum a turba seductior audi. \\no bone, num ignoras? missa est a Caesare laurus \\ninsignem ob cladem Germanae pubis et aris \\nfrigidus excutitur cinis ac iam postibus arma, 45 \\niam chlamydas regum, iam lutea gausapa captis \\nessedaque ingentesque locat Caesonia Rhenos. \\ndis igitur genioque ducis centum paria ob res \\negregie gestas induco. quis uetat? aude. \\nuae, nisi coniues. oleum artocreasque popello 50 \\nlargior. an prohibes? dic clare. 'non adeo' inquis \\n'exossatus ager iuxta est.' age, si mihi nulla \\niam reliqua ex amitis, patruelis nulla, proneptis \\nnulla manet patrui, sterilis matertera uixit \\ndeque auia nihilum superest, accedo Bouillas 55 \\ncliuumque ad Virbi, praesto est mihi Manius heres. \\n'progenies terrae?' quaere ex me quis mihi quartus \\nsit pater: haut prompte, dicam tamen; adde etiam unum, \\nunum etiam: terrae est iam filius et mihi ritu \\nManius hic generis prope maior auunculus exit. 60 \\nqui prior es, cur me in decursu lampada poscis? \\nsum tibi Mercurius; uenio deus huc ego ut ille \\npingitur. an renuis? uis tu gaudere relictis? \\n'dest aliquid summae.' minui mihi, sed tibi totum est \\nquidquid id est. ubi sit, fuge quaerere, quod mihi quondam 65 \\nlegarat Tadius, neu dicta, 'pone paterna, \\nfenoris accedat merces, hinc exime sumptus, \\nquid relicum est?' relicum? nunc nunc inpensius ungue, \\nungue, puer, caules. mihi festa luce coquatur \\nurtica et fissa fumosum sinciput aure, 70 \\nut tuus iste nepos olim satur anseris extis, \\ncum morosa uago singultiet inguine uena, \\npatriciae inmeiat uoluae? mihi trama figurae \\nsit reliqua, ast illi tremat omento popa uenter? \\n uende animam lucro, mercare atque excute sollers 75 \\nomne latus mundi, ne sit praestantior alter \\nCappadocas rigida pinguis plausisse catasta, \\nrem duplica. 'feci; iam triplex, iam mihi quarto, \\niam decies redit in rugam. depunge ubi sistam, \\ninuentus, Chrysippe, tui finitor acerui.' 80 \\n\\n \\n\\n \\n \\n \\n \"]\n" ] } ], "source": [ "# Let's separate the Persius LL text by poem\n", "\n", "def multifind(match, string):\n", " \"\"\"https://stackoverflow.com/a/4664889/1816347\"\"\"\n", " return [s.start() for s in re.finditer(match, string)]\n", "\n", "prologue_start = persius_raw.find('PROLOGVS')\n", "satire_starts = multifind(r'\\bSATVRA\\b', persius_raw)\n", "satire_end = persius_raw.find('The Latin Library \\n The Classics Page')\n", "\n", "persius_prologue = [persius_raw[prologue_start:satire_starts[0]-1]]\n", "\n", "persius_satires = []\n", "\n", "for i, start in enumerate(satire_starts):\n", " if i != len(satire_starts) - 1:\n", " satire = persius_raw[start:satire_starts[i+1]-1]\n", " else:\n", " satire = persius_raw[start:satire_end]\n", " persius_satires.append(satire)\n", "\n", "persius_raws = persius_prologue + persius_satires\n", "print(persius_raws)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Preprocess texts\n", "\n", "def preprocess(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", " text = \"\\n\".join([line.strip() for line in text.split('\\n')])\n", " \n", " return text" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Persius Prologue', 'Persius Satire I', 'Persius Satire II', 'Persius Satire III', 'Persius Satire IV', 'Persius Satire V', 'Persius Satire VI']\n" ] } ], "source": [ "# ...get titles...\n", "\n", "persius_titles = [\"Persius \" + line[0].strip().replace('PROLOGVS','Prologue').replace('SATVRA','Satire') for line in [poem.split('\\n') for poem in persius_raws]]\n", "print(persius_titles)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('prologus\\n'\n", " 'nec fonte labra prolui caballino\\n'\n", " 'nec in bicipiti somniasse parnaso\\n'\n", " 'memini ut repente sic poeta prodirem\\n'\n", " 'heliconidasque pallidamque pirenen\\n'\n", " 'illis remitto quorum imagines lambunt\\n'\n", " 'hederae sequaces ipse semipaganus\\n'\n", " 'ad sacra uatum carmen adfero nostrum\\n'\n", " 'quis expediuit psittaco suum chaere\\n'\n", " 'picamque docuit nostra uerba conari\\n'\n", " 'magister artis ingenique largitor\\n'\n", " 'uenter negatas artifex sequi uoces\\n'\n", " 'quod si dolosi spes refulserit nummi\\n'\n", " 'coruos poetas et poetridas picas\\n'\n", " 'cantare credas pegaseium nectar\\n')\n" ] } ], "source": [ "# ...preprocess the Satire texts...\n", "\n", "persius_edit = [preprocess(raw) for raw in persius_raws]\n", "pprint(persius_edit[0][:500])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('nec fonte labra prolui caballino\\n'\n", " 'nec in bicipiti somniasse parnaso\\n'\n", " 'memini ut repente sic poeta prodirem\\n'\n", " 'heliconidasque pallidamque pirenen\\n'\n", " 'illis remitto quorum imagines lambunt\\n'\n", " 'hederae sequaces ipse semipaganus\\n'\n", " 'ad sacra uatum carmen adfero nostrum\\n'\n", " 'quis expediuit psittaco suum chaere\\n'\n", " 'picamque docuit nostra uerba conari\\n'\n", " 'magister artis ingenique largitor\\n'\n", " 'uenter negatas artifex sequi uoces\\n'\n", " 'quod si dolosi spes refulserit nummi\\n'\n", " 'coruos poetas et poetridas picas\\n'\n", " 'cantare credas pegaseium nectar\\n')\n" ] } ], "source": [ "# ...strip titles...\n", "\n", "persius_edit = [\"\\n\".join(poem.split('\\n')[1:]) for poem in persius_edit]\n", "pprint(persius_edit[0])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['nec', 'fonte', 'labra', 'prolui', 'caballino', 'nec', 'in', 'bicipiti', 'somniasse', 'parnaso', 'memini', 'ut', 'repente', 'sic', 'poeta', 'prodirem', 'heliconidas', '-que', 'pallidam', '-que', 'pirene', '-ne', 'illis', 'remitto', 'quorum', 'imagines', 'lambunt', 'hederae', 'sequaces', 'ipse', 'semipaganus', 'ad', 'sacra', 'uatum', 'carmen', 'adfero', 'nostrum', 'quis', 'expediuit', 'psittaco', 'suum', 'chaere', 'picam', '-que', 'docuit', 'nostra', 'uerba', 'conari', 'magister', 'artis', 'ingeni', '-que', 'largitor', 'uenter', 'negatas', 'artifex', 'sequi', 'uoces', 'quod', 'si', 'dolosi', 'spes', 'refulserit', 'nummi', 'coruos', 'poetas', 'et', 'poetridas', 'picas', 'cantare', 'credas', 'pegaseium', 'nectar']\n" ] } ], "source": [ "persius_tokens = [word_tokenizer.tokenize(tokens) for tokens in persius_edit]\n", "print(persius_tokens[0])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'non': 0},\n", " {'non': 15},\n", " {'non': 5},\n", " {'non': 11},\n", " {'non': 5},\n", " {'non': 12},\n", " {'non': 1}]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "negative_words = ['non']\n", "persius_negatives = [{word: tokens.count(word) for word in negative_words} for tokens in persius_tokens]\n", "persius_negatives" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'nec': 2, 'neque': 0, 'non': 0},\n", " {'nec': 14, 'neque': 2, 'non': 15},\n", " {'nec': 0, 'neque': 0, 'non': 5},\n", " {'nec': 1, 'neque': 0, 'non': 11},\n", " {'nec': 0, 'neque': 0, 'non': 5},\n", " {'nec': 9, 'neque': 1, 'non': 12},\n", " {'nec': 2, 'neque': 0, 'non': 1}]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "negative_words = ['non', 'nec', 'neque']\n", "persius_negatives = [{word: tokens.count(word) for word in negative_words} for tokens in persius_tokens]\n", "persius_negatives" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[68, 945, 521, 788, 342, 1288, 570]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "persius_lengths = [len(tokens.split()) for tokens in persius_edit]\n", "persius_lengths" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 31, 5, 12, 5, 22, 3]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "persius_negative_totals = [sum(d.values()) for d in persius_negatives]\n", "persius_negative_totals" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[29.41, 32.8, 9.6, 15.23, 14.62, 17.08, 5.26]\n" ] } ], "source": [ "persius_negative_relative = [round((1000 * x)/y,2) for x, y in zip(persius_negative_totals, persius_lengths)]\n", "print(persius_negative_relative)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('Persius Prologue', 29.41),\n", " ('Persius Satire I', 32.8),\n", " ('Persius Satire II', 9.6),\n", " ('Persius Satire III', 15.23),\n", " ('Persius Satire IV', 14.62),\n", " ('Persius Satire V', 17.08),\n", " ('Persius Satire VI', 5.26)]\n" ] } ], "source": [ "pprint(list(zip(persius_titles, persius_negative_relative)))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(\"a adflasset, peior serpentibus Afris.'\\n\"\n", " ' \\n'\n", " '\\n'\n", " ' \\n'\n", " '\\t \\n'\n", " '\\t\\t Horace \\n'\n", " '\\t\\t The Latin Library \\n'\n", " '\\t\\t The Classics Page')\n" ] } ], "source": [ "# Do the same for Horace\n", "\n", "horace_files = [file for file in files if 'horace/serm' in file]\n", "horace_raw = latinlibrary.raw(horace_files)\n", "pprint(horace_raw[-100:])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Let's separate the Horace LL text by poem\n", "\n", "satire_starts = multifind(r'\\b\\d\\.\\d+\\b', horace_raw)\n", "satire_end = horace_raw.find('\\t\\t Horace \\n')\n", "\n", "horace_satires = []\n", "\n", "for i, start in enumerate(satire_starts):\n", " if i != len(satire_starts) - 1:\n", " satire = horace_raw[start:satire_starts[i+1]-1]\n", " else:\n", " satire = horace_raw[start:satire_end]\n", " horace_satires.append(satire)\n", "\n", "horace_satires = [satire for satire in horace_satires if satire]\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['qui', 'fit', 'maecenas', 'ut', 'nemo', 'quam', 'sibi', 'sortem', 'seu', 'ratio', 'dederit', 'seu', 'fors', 'obiecerit', 'illa', 'contentus', 'uiuat', 'laudet', 'diuersa', 'sequentis', 'o', 'fortunati', 'mercatores', 'grauis', 'annis', 'miles', 'ait', 'multo', 'iam', 'fractus', 'membra', 'labore', 'contra', 'mercator', 'nauim', 'iactantibus', 'austris', 'militia', 'est', 'potior', 'quid', 'enim', 'concurritur', 'horae', 'momento', 'cita', 'mors', 'uenit', 'aut', 'uictoria', 'laeta', 'agricolam', 'laudat', 'iuris', 'legum', '-que', 'peritus', 'sub', 'galli', 'cantum', 'consultor', 'ubi', 'ostia', 'pulsat', 'ille', 'datis', 'uadibus', 'qui', 'rure', 'extractus', 'in', 'urbem', 'est', 'solos', 'felicis', 'uiuentis', 'clamat', 'in', 'urbe', 'cetera', 'de', 'genere', 'hoc', 'adeo', 'sunt', 'multa', 'loquacem', 'delassare', 'ualent', 'fabium', 'ne', 'te', 'morer', 'audi', 'quo', 'rem', 'deducam', 'si', 'quis', 'deus']\n" ] } ], "source": [ "# ...get titles...\n", "\n", "horace_titles = [\"Horace Satire \" + line[0].strip() for line in [poem.split('\\n') for poem in horace_satires]]\n", "\n", "\n", "horace_edit = [preprocess(raw) for raw in horace_satires] # ...preprocess the Satire texts...\n", "horace_edit = [\"\\n\".join(poem.split('\\n')[1:]) for poem in horace_edit] #...strip titles...\n", "horace_tokens = [word_tokenizer.tokenize(tokens) for tokens in horace_edit]\n", "\n", "print(horace_tokens[0][:100])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'nec': 0, 'neque': 6, 'non': 11},\n", " {'nec': 5, 'neque': 3, 'non': 9},\n", " {'nec': 3, 'neque': 1, 'non': 7},\n", " {'nec': 3, 'neque': 5, 'non': 9},\n", " {'nec': 1, 'neque': 2, 'non': 5},\n", " {'nec': 3, 'neque': 3, 'non': 16},\n", " {'nec': 0, 'neque': 0, 'non': 3},\n", " {'nec': 1, 'neque': 0, 'non': 2},\n", " {'nec': 5, 'neque': 1, 'non': 7},\n", " {'nec': 2, 'neque': 5, 'non': 6},\n", " {'nec': 2, 'neque': 5, 'non': 3},\n", " {'nec': 6, 'neque': 2, 'non': 10},\n", " {'nec': 6, 'neque': 4, 'non': 24},\n", " {'nec': 2, 'neque': 0, 'non': 9},\n", " {'nec': 1, 'neque': 1, 'non': 3},\n", " {'nec': 6, 'neque': 3, 'non': 5},\n", " {'nec': 0, 'neque': 7, 'non': 12}]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "negative_words = ['non', 'nec', 'neque']\n", "horace_negatives = [{word: tokens.count(word) for word in negative_words} for tokens in horace_tokens]\n", "horace_negatives" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[20.02, 17.73, 11.02, 16.98, 11.78, 23.89, 12.88, 9.17, 22.57, 18.57, 16.69, 19.21, 15.0, 17.52, 6.68, 16.79, 23.2]\n" ] } ], "source": [ "horace_lengths = [len(tokens.split()) for tokens in horace_satires]\n", "horace_negative_totals = [sum(d.values()) for d in horace_negatives]\n", "horace_negative_relative = [round((1000 * x)/y,2) for x, y in zip(horace_negative_totals, horace_lengths)]\n", "print(horace_negative_relative)\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('Horace Satire 1.1', 20.02),\n", " ('Horace Satire 1.2', 17.73),\n", " ('Horace Satire 1.3', 11.02),\n", " ('Horace Satire 1.4', 16.98),\n", " ('Horace Satire 1.5', 11.78),\n", " ('Horace Satire 1.6', 23.89),\n", " ('Horace Satire 1.7', 12.88),\n", " ('Horace Satire 1.8', 9.17),\n", " ('Horace Satire 1.9', 22.57),\n", " ('Horace Satire 1.10', 18.57),\n", " ('Horace Satire 2.1', 16.69),\n", " ('Horace Satire 2.2', 19.21),\n", " ('Horace Satire 2.3', 15.0),\n", " ('Horace Satire 2.4', 17.52),\n", " ('Horace Satire 2.5', 6.68),\n", " ('Horace Satire 2.6', 16.79),\n", " ('Horace Satire 2.7', 23.2)]\n", "[('Persius Prologue', 29.41),\n", " ('Persius Satire I', 32.8),\n", " ('Persius Satire II', 9.6),\n", " ('Persius Satire III', 15.23),\n", " ('Persius Satire IV', 14.62),\n", " ('Persius Satire V', 17.08),\n", " ('Persius Satire VI', 5.26)]\n" ] } ], "source": [ "pprint(list(zip(horace_titles, horace_negative_relative)))\n", "pprint(list(zip(persius_titles, persius_negative_relative)))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(\" Siculos cantus effugit remige surdo.'\\n\"\n", " ' \\n'\n", " ' \\n'\n", " '\\t \\n'\n", " '\\t\\t Juvenal \\n'\n", " '\\t\\t The Latin Library \\n'\n", " '\\t\\t The Classics Page')\n" ] } ], "source": [ "# Do the same for Juvenal\n", "juvenal_files = [file for file in files if 'juv' in file]\n", "juvenal_raw = latinlibrary.raw(juvenal_files)\n", "pprint(juvenal_raw[-100:])" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Let's separate the Juvenal LL text by poem\n", "\n", "satire_starts = multifind(r'\\bD. IVNI IVVENALIS SATVRA\\b', juvenal_raw)\n", "satire_end = juvenal_raw.find('\\t\\t Juvenal \\n')\n", "\n", "juvenal_satires = []\n", "\n", "for i, start in enumerate(satire_starts):\n", " if i != len(satire_starts) - 1:\n", " satire = juvenal_raw[start:satire_starts[i+1]-1]\n", " else:\n", " satire = juvenal_raw[start:satire_end]\n", " juvenal_satires.append(satire)\n", "\n", "juvenal_satires = [satire for satire in juvenal_satires if satire]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['semper', 'ego', 'auditor', 'tantum', 'numquamne', 'reponam', 'uexatus', 'totiens', 'rauci', 'theseide', 'cordi', 'inpune', 'ergo', 'mihi', 'recitauerit', 'ille', 'togatas', 'hic', 'elegos', 'inpune', 'diem', 'consumpserit', 'ingens', 'telephus', 'aut', 'summi', 'plena', 'iam', 'margine', 'libri', 'scriptus', 'et', 'in', 'tergo', 'necdum', 'finitus', 'orestes', 'nota', 'magis', 'nulli', 'domus', 'est', 'sua', 'quam', 'mihi', 'lucus', 'martis', 'et', 'aeoliis', 'uicinum', 'rupibus', 'antrum', 'uulcani', 'quid', 'agant', 'uenti', 'quas', 'torqueat', 'umbras', 'aeacus', 'unde', 'alius', 'furtiuae', 'deuehat', 'aurum', 'pelliculae', 'quantas', 'iaculetur', 'monychus', 'ornos', 'frontonis', 'platani', 'conuolsa', '-que', 'marmora', 'clamant', 'semper', 'et', 'adsiduo', 'ruptae', 'lectore', 'columnae', 'expectes', 'eadem', 'a', 'summo', 'minimo', '-que', 'poeta', 'et', 'nos', 'ergo', 'manum', 'ferulae', 'subduximus', 'et', 'nos', 'consilium', 'dedimus', 'sullae']\n" ] } ], "source": [ "# ...get titles...\n", "\n", "juvenal_titles = [line[0].replace('D. IVNI IVVENALIS','Juvenal').replace('SATVRA', 'Satire').strip() for line in [poem.split('\\n') for poem in juvenal_satires]]\n", "\n", "\n", "juvenal_edit = [preprocess(raw) for raw in juvenal_satires] # ...preprocess the Satire texts...\n", "juvenal_edit = [\"\\n\".join(poem.split('\\n')[1:]) for poem in juvenal_edit] #...strip titles...\n", "juvenal_tokens = [word_tokenizer.tokenize(tokens) for tokens in juvenal_edit]\n", "\n", "print(juvenal_tokens[0][:100])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[8.77, 10.22, 17.84, 15.2, 22.09, 16.49, 10.34, 14.56, 18.53, 16.76, 8.9, 9.33, 12.82, 11.58, 12.09]\n" ] } ], "source": [ "negative_words = ['non', 'nec', 'neque']\n", "juvenal_negatives = [{word: tokens.count(word) for word in negative_words} for tokens in juvenal_tokens]\n", "juvenal_negatives\n", "\n", "juvenal_lengths = [len(tokens.split()) for tokens in juvenal_satires]\n", "juvenal_negative_totals = [sum(d.values()) for d in juvenal_negatives]\n", "juvenal_negative_relative = [round((1000 * x)/y,2) for x, y in zip(juvenal_negative_totals, juvenal_lengths)]\n", "print(juvenal_negative_relative)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('Horace Satire 1.1', 20.02),\n", " ('Horace Satire 1.2', 17.73),\n", " ('Horace Satire 1.3', 11.02),\n", " ('Horace Satire 1.4', 16.98),\n", " ('Horace Satire 1.5', 11.78),\n", " ('Horace Satire 1.6', 23.89),\n", " ('Horace Satire 1.7', 12.88),\n", " ('Horace Satire 1.8', 9.17),\n", " ('Horace Satire 1.9', 22.57),\n", " ('Horace Satire 1.10', 18.57),\n", " ('Horace Satire 2.1', 16.69),\n", " ('Horace Satire 2.2', 19.21),\n", " ('Horace Satire 2.3', 15.0),\n", " ('Horace Satire 2.4', 17.52),\n", " ('Horace Satire 2.5', 6.68),\n", " ('Horace Satire 2.6', 16.79),\n", " ('Horace Satire 2.7', 23.2)]\n", "[('Persius Prologue', 29.41),\n", " ('Persius Satire I', 32.8),\n", " ('Persius Satire II', 9.6),\n", " ('Persius Satire III', 15.23),\n", " ('Persius Satire IV', 14.62),\n", " ('Persius Satire V', 17.08),\n", " ('Persius Satire VI', 5.26)]\n", "[('Juvenal Satire I', 8.77),\n", " ('Juvenal Satire X', 10.22),\n", " ('Juvenal Satire XI', 17.84),\n", " ('Juvenal Satire XII', 15.2),\n", " ('Juvenal Satire XIII', 22.09),\n", " ('Juvenal Satire XIV', 16.49),\n", " ('Juvenal Satire XV', 10.34),\n", " ('Juvenal Satire XVI', 14.56),\n", " ('Juvenal Satire II', 18.53),\n", " ('Juvenal Satire III', 16.76),\n", " ('Juvenal Satire IV', 8.9),\n", " ('Juvenal Satire V', 9.33),\n", " ('Juvenal Satire VI', 12.82),\n", " ('Juvenal Satire VII', 11.58),\n", " ('Juvenal Satire VIII', 12.09)]\n" ] } ], "source": [ "pprint(list(zip(horace_titles, horace_negative_relative)))\n", "pprint(list(zip(persius_titles, persius_negative_relative)))\n", "pprint(list(zip(juvenal_titles, juvenal_negative_relative)))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "satire_negative_relative = list(zip(horace_titles, horace_negative_relative)) + \\\n", " list(zip(persius_titles, persius_negative_relative)) + \\\n", " list(zip(juvenal_titles, juvenal_negative_relative))\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABI8AAAKrCAYAAAB4GK0YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xm8rXVdL/DPV0BRBgFFJQFPmWmliQJqWoampVI55JDZ\nNYfU2yRcvSZaJt5uxXXOBruYhppjOV5xzERSSwM0ccix44AoOCCDAgrf+8fzLM9uu5919jlnr703\nh/f79Vqvtdczftez11rnrM/+Pd+nujsAAAAAsJJrbHQBAAAAAGxewiMAAAAAJgmPAAAAAJgkPAIA\nAABgkvAIAAAAgEnCIwAAAAAmCY8AYEGq6sSq6qo6ZaNrWU9Vddr4vB+2jvt82LjP09Zrn7uiqo4Z\n69260bVw9VRVPzy+Br+70bUAsPkJjwDYaVV1yvjlo6vqzO0s+3e7U5AyBkMnVtUBG13LWqiqLUt+\nl0tvF1fVOVX1/qr6q6q6X1Xttc61HT8e6y3rud/d0ZJgb+ntyqr6ZlV9sKqeUVWHbXSdu5Oq2rOq\nHlFVb6uqL1fV5VX19ar6WFWdWlVPrKqj13if9xvfM3dey+0CcPW150YXAMBu47ZVdb/ufu1GF7JO\nnjren5LkgollvprkE0nOXY+C1tA3klw+/nzNJDdK8gNJbpfkN5N8uaqO6+5XT6z/+QzP+5trVM/x\nSW6S5LQkWyeW+ea4z8+v0T4X7VsZ6j1ng/Z/abb9fvZIcr0kR4y3R1fVsd39ng2qbbdRVTdI8pYk\nt10y+dsZ/oB7iyQ/muReSb6W5PpruOv7JXlIku8mOX1imcszvAaNPAJgu4w8AmAt/a+q8m/LqLv/\nortv0d1P2uhadtD9uvtG4+2gJHsluWWSxyX5XIYw6VVVdeJKK3f3Q8fn/br1Kri7Xzfu86Hrtc9d\n0d0fGOv92Q0q4VVLfscHJ7lOkgdnCDH2T/LyqrrWBtW2O3lFhuDowiT/M8mNuvs63X1AkgOS/FyS\nv87aBa2r1t2fH1+Dt1zvfQNw1eM/+ACshXdnGEnx40l+dYNrYY1195Xd/dHufk6GEOn/jbOeWlX3\n2sDSWCPdfWl3vzLJY8dJhyW5ywaWdJVXVbdMctfx4a9397O6+yuz+d19YXe/o7t/M8NnJwBsWsIj\nANbCl5P8xfjziVW1U6dFV9Utq+pFVfWfVXVpVV1QVe+tqv8+r89OVR1YVc+pqq1VdVlVfaGq/qaq\nDpvXmLiqrl9Vv1VVb6iq/6iqi6rqkrEXybOr6gdWWOeUquolk/5zWf+YU5Ys+30Ns6vqTuO0y6vq\noDnP6cZVdcW47K1XmL+lqv68qj5RVd8aaz9z7J+yz9R2d1V3X5whIPzPcdL/WqG2uQ2za/Cgsd/L\nl8ff2TlVdXpV/Y+qut643Injsb7JuOq7lh3r05Zsc7sNs8c+MG+tqvPHfX6xql5WVbedWP57faDG\nx7esqleONV86vmaeUlXX3N5xW2Hb816X3zt+VXXt8Th8oqq+XVXnjTXcbEf3uUpvX/Lzj00tVFWH\njO+5WV3frKEv1v+YGrFU2/qe/UFVXWs8dh8fX7+fr6rn1pIeYlV1dFW9bjze366qD1TVL82p6Weq\n6nnjcl8a32PnVdVbquq+c9ZbWtceVfW4qvrwWNfXq+qNU6+R7bjVkp9Pnbdgd1+6Ql17VNWxVXVy\nVZ1VVV8ZX7dfqqrXVtUxK6xzt/H1+pBx0h8te898d8mykw2zlx2Tvcff1Ydr6IHWVbXvsuV/sKr+\noqo+OR63C6vqjKr6vaq6zvzDBMBVgZ5HAKyVpyf570lumuThSV6wIytX1e8k+bNs+8PGxUn2TXLH\n8fagGvqwfGvZeocm+eckW8ZJ385wOsgjk/xSkifP2e0JSR4//vzdDKeWXDdDH5IfTfJrVXW37v7w\nknW+meQrSW44Pv5qkiuWzZ/nfRn69mxJcv8kJ08s96AMx+Jj3f3vS2dU1f2SvCzJ3uOkbyW5VobT\nY26b5CFVdfeloxzWUndfXFV/luS5SY6sqpt39ydWs25VXTfJPyS522xzGXpGHZShr9JPZ+i5dEqG\n18BXkhyc4Vgs7cWUJF9f5T6vkeRvk8xOabsiyUVJbpwhCPuVqvqd7n7+nG38XJLXJ7l2ht/xXklu\nniE8OzLJfVZTyw7aP8l7k9wmyWVJrsxwLB6U5O5Vdbvu/swa77OW/LzHigtU3SHJm5McOE66KMPr\n73bj7deq6h7dff7EPq6V5J8yvK+/Pe7zsCTHJblDDU2efyHDKV97ZXhf7p3k6CSvr6r7L++tNoZO\npy2ZdNG47YOT3CPJParqr7r7t+c8972SvDXDa/Py8XZgkl9McreqOqa7PzBn/Xl+IMMpnzviVkne\ntOTxhUm+k+SQJPdNct+qemJ3P33JMpdleM9cN8MxuzjJJUvm72h/o+skeU+G1/jlGY7pf1FVD0jy\n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\nJnJi+SMp8wAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# sort in-place from highest to lowest\n", "#popularity_data.sort(key=lambda x: x[1], reverse=True) \n", "\n", "# save the names and their respective scores separately\n", "# reverse the tuples to go from most frequent to least frequent \n", "people = list(zip(*satire_negative_relative))[0]\n", "score = list(zip(*satire_negative_relative))[1]\n", "x_pos = np.arange(len(people)) \n", "\n", "# calculate slope and intercept for the linear trend line\n", "slope, intercept = np.polyfit(x_pos, score, 1)\n", "trendline = intercept + (slope * x_pos)\n", "\n", "plt.figure(figsize=(20,10))\n", "\n", "plt.title('Negative Diction in Roman Satire', fontsize = 24)\n", "#plt.plot(x_pos, trendline, color='red', linestyle='--') \n", "plt.bar(x_pos, score,align='center')\n", "plt.xticks(x_pos, people,rotation='vertical') \n", "plt.ylabel('Negative Words (per 1000 words)')\n", "plt.show()" ] } ], "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": 2 }