Echoes of Cicero

When Augustine quotes portions of Paul’s epistles in De Doctrina Christiana 4, he records versions that are not attested by the Vulgate tradition or the Old Latin (Versio Antiqua) tradition. Since Augustine quotes closely from the Vulgate, (and sometimes from the Versio Antiqua), for Gospel and Old Testament passages in DDC 4, why not for Paul’s epistles? My data suggests that these Pauline passages, which appear as examples of style rather than content, are in fact rendered in a more Ciceronian style than alternative translations.

The Pauline passages are a mosaic of Vulgate and Versio Antiqua renderings, mixed with variations that have no authority in either manuscript tradition. Variants are sometimes semantic changes, and at other times simply change the rhythm of the prose – an element of style Augustine is very concerned with (DDC 4.41). The following are examples taken from the first extended Pauline quotation (2nd Corinthians 11:16-31) in DDC 4.12:

  • DDC: Toleratis enim si quis vos in servitutem redigit
  • Vul:   Sustinetis enim si quis vos in servitutem redigit
  • VA:   Suffertis enim si quis vos in servitutem redigit
  • DDC: Si gloriari oportet in iis quae infirmitatis meae sunt
  • Vul:   Si gloriari oportet quae infirmitatis meae sunt
  • VA:   Si gloriari oportet quae infirmitatis meae sunt

Below are links to visual comparisons powered by Juxta Commons of Paul’s language as it appears in De Doctrina Christiana, and Sabatier’s Vulgate and Versio Antiqua, and exemplary passages from Psalms and Matthew. There are four options to visualize the differences: a heat map with hyperlinked variants, a side-by-side comparison, a histogram, and a VM model where all three versions can be viewed side-by-side (click “new version” after clicking on the VM button).

2nd Corinthians 11:16-31 – Augustine’s first example of Paul’s eloquence

Galatians 3:15-22 – Augustine’s example of the subdued style

Romans 12:1, 6-16; 13:6-8, 12-14 – Augustine’s example of the moderate style

Galatians 4:10-20 – Augustine’s example of the grand style

Psalm 15:4

Matthew 10:19-20 

TEI markup of all textual variants: 2nd Corinthians (first) Galatians (subdued) Romans (moderate) Galatians (grand) Psalm 15-4 Matthew 10-19-20

While it is immediately clear that the Pauline passages show more variations than non-Pauline passages, it is difficult to get a sense of the degree of difference because the passages differ so severely in length. Juxta Commons, however, provides an quantitative measurement of distance from a base text to other versions. The graph below shows Juxta’s measurement of distance between the above passages as they appear in DDC and in the Vulgate / Versio Antiqua. The baseline drawn at 0.05 is the distance Juxta measures between Sabatier’s Vulgate and the Vulgate available on Perseus. It provides a sense of what degree of difference we might expect between manuscripts.

Screen Shot 2016-04-12 at 6.03.09 PM

This degree of difference demands explanation. The Pauline passages appear as block quotations, discouraging the interpretation that Augustine is weaving in his own language, as is often the case in his other works, in an extemporaneous style. These passages are not tied together thematically, but appear as distinct units with little or no connective language. It is also notable that Pauline diction appears in De Doctrina Christiana as models of style. Augustine argues at length that even though Paul was untaught in the classical rules of rhetoric, his eloquence displays the qualities of classical rhetoric such as climax, scala, and well-balance membra and caesa (DDC 4.11). He follows his quotation of many Pauline passages with extended colometric analyses, drawing on Cicero’s rhetorical metaphor of the body established in Orator, and continuing in DDC 4 to outline the officia oratoris and the genera dicendi according to Cicero’s model.

Given the extreme level engagement with Cicero in DDC 4, noted consistently in scholarship, might Augustine have chosen to deviate from the Vulgate and Versio Antiqua versions in order to present a more Ciceronian version of Paul in Latin? Whether Augustine quotes this passage from a manuscript no longer extant, or makes editorial choices of his own, Tesserae can lend an objective measurement to traditional stylistic analysis. The following Tesserae results are from my stylistic experiment to compare the three versions of 2nd Corinthians – Augustine’s closest rendition of Paul to the Vulgate / Versio Antiqua tradition – to the entire Ciceronian corpus. Notice that Augustine’s presentation of Pauline diction finds more instances of shared language that that of the Vulgate or Old Latin version. (For a full explanation of the search parameters that target style, rather than allusion, see below at “Explanation of Search Parameters.”)

Ciceronian corpus vs. 2nd Cor. in DDC

Ciceronian corpus vs. 2nd Cor. in Versio Antiqua

Ciceronian corpus vs. 2nd Cor. in Vulgate

*NB Tesserae expects to display results from one source text, but Cicero’s corpus includes many texts in one file. Tesserae only displays the location information for Cicero according to its initial processing. To find the location of a Ciceronian match, simply search for the exact string of characters in from the above results in cicero.corpus_1.tess cicero.corpus_2.tess. (The file is split into two parts so as not to exceed upload capacity; copy and paste cicero.corpus_2 into cicero.corpus_1 for the full .tess file.)

Examples of matches:

  • DDC: quoniam quidem multi gloriantur
  • Cicero Tusc. 3.66: quoniam quidem res in nostra potestate est
  • DDC: Iterum dico ne quis me existimet
  • Cicero Ver. 2.5.9: ne quis emeret nisi in demortui locum

These results are not particularly meaningful by themselves, but the composite of all the possible results like this is key component of style.

Screen Shot 2016-03-13 at 8.12.38 PM

This graph displays the total number of times Tesserae found a set of match-words in Cicero’s corpus shared by each version of 2nd Corinthians. Thus the first column shows the total number of times Tesserae found one to four word chunks in the same position relative to each other in DDC and Cicero’s corpus. No similar pattern emerges from the same three passages tested against the corpora of Caesar, Tacitus, or even against another rhetorical work, Quintilian’s Institutio Oratoria. (Compare here: CaesC DDC CaesC VA CaesC VulQ DDC Q VA Q VulTC DDC TC VA TC Vul.) This suggests that Augustine’s translation does not intertext more frequently with classical works generally, and suggests that Augustine’s presentation of Paul’s language is indeed more “Ciceronian” than other Latin translations.

Support for this method of stylistic analysis:

For centuries, Lactantius has been called “the Christian Cicero.” Jerome ascribes to Lactantius “Tullian eloquence” (Ep. 58.10), developed by Pico della Mirandola as “Ciceronem sed Christianum.” Even in the present day authors argue that Lactantius deserves this title due to the form and elegance of his language. Tertullian and Justin, other early late antique prose authors, receive no such recognition – in fact, their styles are often disparaged even though their works were extremely popular. Tesserae is able to capture this difference in style. Lactantius’ De Mortibus Persecutorum intertexts with Cicero’s corpus at a much higher rate that similarly sized selections from Tertullian’s Apologeticum and Justin’s Epitome:

Screen Shot 2016-03-15 at 5.51.30 PM

(This graph displays the rate of intertextuality rather than number of intertexts since these large selections must be normalized by number of phrases. Rate of intertextuality = {number of Tesserae results / (Number of source text phrases * Number of target text phrases)}

This stylistic measurement remains consistent even when very small chunks of texts are compared to Cicero’s corpus. Following are Tesserae comparisions of small selections chosen at random from Lactantius, Tertullian, and Justin, each about the same size as 2nd Corinthians 11:16-31.

CC Justin small CC Justin small2 CC Justin small3

CC Lact small CC Lactantius small2 CC Lactantius small3

CC Tertullian small CC Tertullian small2 CC Tertullian small3

Averaging these results, we find that Lactantian language even at a small scales intertexts with Cicero’s corpus much more than that of Tertullian or Justin:

Screen Shot 2016-03-15 at 5.54.16 PM

This method supports the observations of ancients and scholars to this day who call the style of Lactantius Ciceronian. Such stylistic analysis can be used on other texts, like Augustine’s translations of Pauline diction, with greater confidence.

Future goals for this project include testing hundreds small sections of Lactantius, Tertullian, and Justin (and other authors) against Cicero’s corpus to get a more stable average. This will allow me to add meaningful error bars to the above graph and be more confident in the significance of an author matching Cicero “twice as much” as another.


Explanation of Search Parameters:

The search parameters used in these Tesserae comparisons are very different from the pre-set options geared towards finding possible instances of allusion. My searches use the following parameters:

–unit phrase This makes a Tesserae search divide units of speech by phrase, rather than by line. This option should be chosen for all prose text comparisons.

–dist 4 This constricts a Tesserae match to words that have two or fewer intervening words. The normal parameter is 10, allowing words to match across lines of poetry or across long clauses in prose. It’s important for a stylistic search to look only for words that appear very close to each other, rather than words that might constitute a element of intertextuality across a long distance. For comparisons with much smaller corpora, such as the texts of 2nd Corinthians compared to Caesar’s corpus, I widened the dist metric to 6. This includes a few more matches and provides a more stable measurement for otherwise very sparse results.

–stop 0 This allows Tesserae to search for matches that include every word in the corpus. Usually this parameter is set to 10, which excludes the top 10 most common words in search texts from results. This is helpful for eliminating results in an allusion search, where the user probably won’t want to examine results including qui, sum, et, in, etc. For a stylistic search, however, it’s extremely important to include all words, developing a composite of all the combinations of words that make up an author’s style rather than unusual or salient instances that might be allusions.

–feature word This instructs Tesserae to search for exact word matches rather than matches based on shared stems, or lemmata. Whereas an allusion might contain shared lemmata in different forms depending of local grammatical restraints, exact word matching allows Tesserae to capture elements of style like a tendency towards accusative + infinitive, a preference for a particular tense of a verb, etc. This kind of matching is much more precise for stylistic analysis.


A note on phrase-based searching:

While many other stylistic measurement exist, Tesserae is unique in measuring shared language in the context of an author’s phrase (delimited by periods and colons). Tesserae also looks not only at word frequency, but at the relative position of sets of words to each other in phrases. This helps Tesserae capture style in ways that corpus word frequency measurements do not.


I welcome comments and suggestions at

Collected Benchmark Sets

An updated collection of all our benchmark data (click to download):

Greek to Greek:

Apollonius’ Argonautica vs. Homer’s Iliad and Odyssey

Hunter – Apollonius:Richard Hunter’s commentary. Partially complete. Hand ranked.

Apollonius’ Argonautica 3 vs. Homer’s Iliad and Odyssey.

aprhodemily:  Complete. Unranked.

Greek to Latin:

Vergils’ Aeneid vs. Homer’s Iliad

Knauer – Iliad: Knauer’s commentary. Complete. Hand ranked.

aeneid1-iliad_include_uni_blank Raw.

aeneid1-iliad Raw.

Vergil’s Aeneid vs. Homer’s Odyssey

Knauer – Odyssey: Knauer’s commentary. Complete. Unranked.

Vergil’s Aeneid vs. Apollonius’s Argonautica

Vergil-Apollonius_Rhodius: Raw. Unranked.

Vergil’s Georgics vs. Homer’s Iliad and Odyssey

Georgiques: Partially complete. Partially ranked.

Latin to Latin:

Lucan’s Bellum Civile 1 vs. Vergil’s Aeneid

aen_luc1_hand: Complete. Hand ranked (derived from ‘bench4’ below)

Lucan-Vergil: Complete. Hand ranked.

slj.txt Complete Tesserae results. Scored. Raw.

bench3 Complete Tesserae results. Scored.

bench4 Complete Tesserae results. Scored.

Tesserae-2010-Benchmark Complete Tesserae results. Scored. Formatted and organized with matchwords in red.

Tesserae-2012-Benchmark Complete Tesserae results. Scored. Includes statistical calculations.

all_lucan Lucan’s Bellum Civile 2-10 vs. Vergil’s Aeneid. Raw.

Statius’ Achilleid vs. Various Authors

Achilleid: includes Vergil’s Aeneid, Ovid’s Metamorphosis, Heoides, and Amores, and Statius’s Thebiad. Complete. Unranked.

Please feel welcome to contact us with comments or questions.

Lemma + Semantic Matching: Capture More Parallels

A “lemma-based search” identifies the co-occurrence of the same word with different inflections, and this is the basis for version 3.0 of the Tesserae software. In a benchmark test of Pharsalia 1 vs. Aeneid, 55% of parallels previously noted by commentators were retrieved by lemma-based search.

Previous posts have discussed the method of generating metonym (synonym, antonym, hyponym, etc.) dictionaries through the application of topic modeling. In order to capture more of our target intertexts, we worked to generate the most accurate possible metonym dictionary, then combined it with lemmatization in order to simultaneously capture different inflections of the same word and metonyms of that word.

In a repeat of the benchmark test above, the new ‘synonym + lemma’ feature retrieved commentator parallels at a rate of 68% (other search settings remained the same).


View a version 3.1 synonym + lemma benchmark test.

View a version 3.0 lemma-based benchmark test.

A Greek to Latin Dictionary

As mentioned in previous posts, the Tesserae team has been working to create a digital Greek to Latin dictionary to aid in the retrieval of cross-language text reuse. Tesserae interns Nathaniel Durant, Theresa Mullin, and Elizabeth Hunter collectively assessed 1,000 Greek words, determining which, if any, method for producing a cross-language dictionary produced accurate translations. The winner proved to be an enhanced version of Chris Forstall’s topic-model-based ‘pivot’ method.

I crunched the numbers we got from the 1,000 translations tested by our faithful collaborators, and used them to generate the best possible Greek-to-Latin dictionary. Chris’s algorithm produced up to two Latin translations for each Greek word, with a similarity value attached to each translation. I set out to find a good ‘cutoff’ value for the probability of a translation. I balanced precision and recall according to the following criteria:

  1. It was very important to us that we retain at least 1 accurate translation.
  2. It was very important to us that we avoid retaining inaccurate translations.

Because we have two possible translations for most words, it proved best to use two different similarity-score cutoffs for translations A and B. The result is a Greek-to-Latin dictionary which correlates 34,000 Greek words with at least one semantically related Latin word. We have reason to believe that this dictionary is accurate at at rate of 75%-80%, according to our own parameters for accuracy (because we are searching for allusions, this is not a ‘translation’ dictionary; we consider antonyms and all other metonyms to be valid associations).

Publications on our methodology are forthcoming. For now, please experiment with the tool at We welcome your feedback.

Augustine vs. The Rhetoricians

The following data is the basis for an article entitled: “Paul is the New Cicero: Repurposing Roman Rhetoric in Augustine’s De Doctrina Christiana,” under review with the Journal Mouseion. These files are archived here for the benefit of readers who wish to inspect the results of Tesserae comparisons in greater detail than is possible in the article. The first file contains the results of a comparison of Augustine’s De Doctrina Christiana to Cicero’s Orator.

The following links lead to comma-separated-value (CSV) files which can be opened in any spreadsheet editor.

Below are links to tab-separated-value files, whose contents represent raw data collected in a batch Tesserae search:

  • runs: each line represents a single comparison and its details.
  • scores: coded by the numbers found in the ‘runs’ file, each row represents the number of results returned at a given score level.

Knauer’s list of parallels between Aeneid (Book 1) and the Iliad

Knauer’s original commentary on the Aeneid listed places of parallelism with Homer’s Iliad, but did not specify criteria for intertextuality. The Google Docs spreadsheet below uses Knauer’s citations of the Aeneid, Book I, with his citations of the Iliad and lists the verbal correspondences between the Latin and the Greek. This work began in September, 2013 and has been intermittently edited and expanded up until June, 2014, when it has been mostly completed.

It is free to use with credit to Tesserae and Konnor Clark, who compiled the list.

Discovering Intertextuality with Sequence Alignment

Our approach to intertextuality begins from the time-tested technique of word-level n-gram matching, i.e., matching words in one text with those in another. I recently had a chance to meet with Peter Leonard of Yale, who reacquainted me to another approach that he was involved with at the University of Chicago, called sequence alignment. This work was led by Mark Olsen as part of the ARTFL project at Chicago. This method is more flexible in searching for sequences of letters in an adaptive way. It’s useful to keep this in mind as another important approach for comparison and evaluation.

More information is available in this slide deck.

How the text-alignment method works

As explained by Chris Forstall in his earlier post, we are currently experimenting with a new cross-language detection feature over on the Tesserae Development server. We are using two different approaches, and the naïve Bayesian alignment approach bears a little explanation. The purpose of this post is to provide a simple introduction to the theory behind the algorithm; a link to my PERL script which aligns two texts in Tesserae format will be provided at the end.

To begin with, let’s assume we have a corpus which consists of the same text in two languages. Let’s further assume that our texts are perfectly aligned, sentence-by-sentence (the difficulty of finding texts like this has led us to use the New Testament for our experiments). We want to know which word in language A corresponds to which word in language B. Initially, we assign each word an equal probability. Here’s a simple example sentence in Greek and Latin:

Sentence A (Language A) Sentence B (Language B)
Amo libros legere  Φιλω βιβλους ἀναγιγνωσκειν

We’re going to try to figure out which word is a translation of Amo. First we assign an equal probability to all translation candidates. Because there are three words in Sentence B, the probability that Amo corresponds to Φιλω is 0.33, and the probability that it corresponds to βιβλους is also 0.33 (remember that a probability of 1.0 means that something is definitely true). The key to correctly lining up Latin words with their Greek translations is repetition. Let’s add another aligned sentence to our comparison:

Sentence A (Language A) Sentence B (Language B)
Amo philosophiam  Φιλω φιλοσοφιαν

This time, the sentence from language B doesn’t contain βιβλους or ἀναγιγνωσκειν, so it’s less likely that either of those are legitimate translations for Amo. Φιλω has also appeared again, so the probability assigned to a possible Amo/Φιλω alignment is increased.

The equation that smooths out the probabilities of each conceivable alignment over the course of many, many sentences is called Bayes’ theorem. It looks like this:

Bayes' Theorem

Here’s what the first part, P(A|B), means to us: “the probability that word A in language A is a correct translation of word B in language B.” The next part, P(B|A), means “the probability that word B in language B is the correct translation of word A in language A.” You’ll notice that putting these two statements on opposite sides of an ‘equals’ sign looks a little like circular logic. The key here is that Bayes’ theorem works backward in order to more appropriately weight the probability associated with each possible translation candidate. This will become clearer in the next paragraph. The rest of the equation has to do with ‘smoothing’ the results; remember that our goal is to correctly weight these probabilities according to the pattern which emerges through repetition. The next two parts, P(A) and P(B), mean, for our purposes, “the probability of word A occurring in language A” and “the probability of word B occurring in language B.” For these probabilities we substitute “the number of occurrences of word B in the ‘language B’ (or word A in the ‘language A’) text, divided by the total number of words in that text.”

Because Bayes’ theorem works backward from translation to antecedent, the application of this theorem in text alignment can look a bit complicated. This is how it works: to determine P(A|B) for any given Latin word, the program looks at all the sentences (actually Bible verses in our corpus) which contain that word. We’ll call this Verse Group 1. The program then gathers up all the Greek words in the corresponding Greek verses. These Greek words are our translation candidates, and we look at each of them in turn. To calculate P(B|A) (the probability of the original Latin word, given the current Greek translation candidate), the program looks at all the Greek verses which contain the translation candidate. We can call this group of verses ‘Verse Group 2.’ The program then gathers up all the Latin words in the Latin versions of Verse Group 2. The important factor here is that we’re grabbing a different set of verses than those in Verse Group 1. The amount of overlap between Verse Group 1 and Verse Group 2 depends on how good a translation candidate we’re looking at. In other words, when we look back from Greek to Latin, we may find verses that don’t contain the original Latin word under scrutiny. This is especially true if the Greek translation candidate is not actually the word we ultimately want; if we are looking at the wrong Greek word, we’ll end up gathering a bunch of Latin verses which don’t contain our original word and that will lower the value of P(B|A).

The rest of the program is what my high school Physics teacher used to call “plug and chug.” ‘Probabilities’ are really just the number of times that a given word appears divided by the total number of words in the group in which it appears. An important feature of this approach is that for each word we examine, the program returns the probability of an alignment between that word and each possible translation word–just like in the first set of sentences at the top of this post. Many tools for this type of operation can be found online; a popular one is mGIZA. My own code for this project can be found on github.

Feel free to ask questions or leave feedback in the comments section.


Latin-Greek search: competing methods

Given the indebtedness of many Latin literary forms to earlier Greek originals, it has long been a goal of ours at Tesserae to one day implement a Latin-Greek search on our site. Currently, word-level n-grams form the foundation of the principal search algorithm. To apply this system where a Latin text alludes to Greek, Tesserae requires a translation dictionary linking Greek lemmata to associated Latin terms.

James Gawley and I are currently working on two different methods for producing such a dictionary. James is working on the “parallel texts” method. This method compares the Greek New Testament with Jerome’s Latin text to probabilistically assign a Latin translation (actually, several likely candidates) to each Greek word. James is writing an algorithm for machine text alignment based on Bayes’ theorem. This algorithm, similar to more complex models such as the IBM methods for machine alignment, looks at the frequency with which each Latin word appears in the same verses as each Greek word.

My method, the “dictionary method,” uses English as a pivot language. Expanding on a method developed by Jeff Rydberg-Cox at Perseus, I compare entries in the Liddell-Scott Greek-English lexicon with entries in the Lewis and Short Latin-English lexicon using the Gensim topic modelling package. The similarity of a given Greek and Latin headword is determined based on the similarity of their English definitions in the two dictionaries.

Each method produces its own Greek-Latin translation set. These are used to “translate” Tesserae’s existing Greek lemma indices, which can then be searched against the Latin indices. The success of this method depends a lot on how many Greek lemmata we can successfully link with Latin translations (a better term might be “related words”). While it’s still in the alpha stage, it shows a lot of promise.

For example, in the opening of Vergil’s poem, the narrator asks his Muse about the causes of the Trojans’ trials as they wandered with Aeneas:

Musa, mihi causas memora, quo numine laeso Aen. 1.8)
Muse, remind me of the causes, on account of which god’s anger…

Compare the words of Priam to Helen, as, gazing from the wall at the warriors below, he reflects on the source of the Trojans’ suffering:

οὔ τί μοι αἰτίη ἐσσί, θεοί νύ μοι αἴτιοί εἰσιν (Il. 3.164)
To me, you are not the cause; to me, the gods are the causes…

In this case, the dictionary method allows Tesserae to detect the parallel based on the correspondences, numine (“god”) ~ θεοί (“gods”), and causas (“causes”) ~ αἰτίη/αἴτιοι(“cause”/“causes”).

We’re pitting the two methods against each other, head to head. They’ll be tested by their ability to detect a subset of AeneidIliad parallels collated from G. N. Knauer’s Die Aeneis und Homer by Konnor Clark and Amy Miu, and similar to our Lucan-Vergil benchmark set. For now, you can test them on our development site here. (NB: once you’re at the development page, links lead to other development pages. To leave the develop branch click on the blog link in the upper right.)

While each of the two methods on its own can identify significant Latin-Greek allusions, we ultimately aim to combine their output in a single feature set. We’re excited to be presenting this work at DHCS 2013 in Chicago this December 5–7.