Back to portfolio

Searching for Poetry in Latin Prose

1 / 3

The project

Latin prose texts often feature references to hidden poetry. However, it is difficult to locate these references due to the large part of Latin poetry that has been lost to time.

The goal of this project was to develop software that supports the discovery of hidden Latin poetry. Since Latin poetry follows strict metrical patterns consisting of long and short syllables, we developed software that predicts syllable lengths for each syllable in a given Latin prose text. We used these predictions to match fragments of Latin prose text to known metrical patterns to discover verses.

The resulting software has the potential to highly simplify the job for Latin researchers, as instead of having to meticulously examine every sentence in a large Latin text, they can let the system extract a list with the most promising candidates.

This is either a new conjugation of Latin verb that has been lost in time, or a drunk monk trying to spell.

The customer

Our client is Luuk Nolden, who works part-time at the Leiden University Centre for the Arts in Society (LUCAS) and has an academic background in both Computer Science and Classics and Ancient Civilisations.

Throughout the project, the team maintained regular contact with the client. This helped ensure that the development stayed closely aligned with the needs of the client. Furthermore, several Latin researchers were invited to the biweekly meetings between the client and the development team to gain valuable insights.

The team

Our development team consisted of 7 members, who were responsible for different parts of the project such as frontend, backend and CI/CD. The members of our team are: Yaell Brouwer, Nicolas Ramos Fernandez, Anna van der Spek, Anna Marini, Tom van Kooperen, Sharon Huang, Adrien Joon-Ha Im. Additionally, the role of SCRUM master and Product Owner were held by Anna Marini and Yaell Brouwer respectively.

Initially our team did encounter compatibility issues with different parts of the pipeline. However we resolved this by discussing the expected format before we start a new sprint.

At the start of the project, we worked in pairs on different sections of the pipeline. As we moved beyond the MVP we split into groups of frontend, backend and usually at least one person working on testing each sprint. We are most proud of the fact that we were able to deliver a product that exceeded our client’s expectations. We also set realistic expectations per sprint that our development team was able to meet, which helped keep us well on track.

The technologies

Languages:

  • Angular: frontend of the application
  • Python: backend of the application

Important frameworks and applications:

  • Flask: the API the application uses
  • PyTorch: the framework the AI model is built in

Tooling:

  • Ruff: linting and formatting of the Python code
  • Cypress: the frontend testing tool used
  • Coverage: the backend testing tool used
  • Pytest: used to automate testing

Deployment:

  • Ansible: the website is deployable with Ansible