A command-line script for analyzing Latin syntax

syntaxer_main.py reads authentication credentials for your LM from your environment and analyzes a passage. It writes the result in to standard output in arsgrammatica’s standard serialization format. Create an .env to configure your LM credentials, like this:

API_BASE=https://localmodel/api
MODEL=litellm/modelname
API_KEY=your-key-here

Then run syntaxer_main.py with a passage argument:

python3 syntaxer_main.py --passage "Gallia est omnis divisa in partes tres."

To include a citation reference (e.g. a CTS URN), use the --citation argument:

python3 syntaxer_main.py --passage "Arma virumque canō." --citation "urn:cts:latinLit:phi0690.phi003.perseus:1.1"

Redirect the output to a file with standard IO redirection:

python3 syntaxer_main.py --passage "Arma virumque canō." 
    --citation "urn:cts:latinLit:phi0690.phi003.perseus:1.1" > aeneid_analysis.cex

THe results look like this:

#!sentences
context_begin|first_token|context_end|last_token
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t0|urn:cts:latinLit:phi0690.phi003.perseus:1.1|t4

#!verbal_units
context|token|syntactic_type|semantic_type
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t3|independent|transitive active

#!tokens
context|id|tokentype|text|lemma|verbalunit|related1|relationship1|related2|relationship2
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t0|lexical|Arma|arma||t3|direct object||
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t1|lexical|virum|vir||t3|direct object||
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t2|enclitic|que|que||t0|coordinating conjunction|t1|coordinating conjunction
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t3|lexical|canō|cano|t3|root|unit verb||
urn:cts:latinLit:phi0690.phi003.perseus:1.1|t4|punctuation|.||||||