Open
Description
Describe the bug
In two cases elisions are not performed correctly:
- Whenever em at the end of the word meets a vowel in the next word.
- Whenever an elision should take place, h at the beginning of a word is treated as ordinary consonant.
To Reproduce Bug 1
Steps to reproduce the behavior:
from cltk.prosody.lat.hexameter_scanner import HexameterScanner
hexameter_scanner = HexameterScanner()
verse1 = "quem quidem ego actutum (modo vos absistite) cogam"
print(hexameter_scanner.scan(verse1).working_line)
# Out: quēm quidem eg āctutūm modo vos ābsīstite cogam
# Should be: quēm quid eg āctutūm modo vos ābsīstite cogam
verse2 = "Qui potis est, inquis? Quod amantem iniuria talis"
print(hexameter_scanner.scan(verse2).working_line)
# Out: Qui potis ēst īnquīs Quod amāntem īnjuria talis
# Should be: Qui potis ēst īnquīs Quod amānt īnjuria talis
verse3 = "ille, datis vadibus qui rure extractus in urbem est"
print(hexameter_scanner.scan(verse3).working_line)
# Out: īlle datīs vadibūs qui rur ēxtrāctus in ūrbem ēst
# Should be: īlle datīs vadibūs qui rur ēxtrāctus in ūrb ēst
To Reproduce Bug 2
verse4 = "non potuisse, tuaque animam hanc effundere dextra"
print(hexameter_scanner.scan(verse4).working_line)
# Out: nōn potuisse tuaqu animam hānc ēffūndere dēxtra
# Should be: nōn potuisse tuaqu anim ānc ēffūndere dēxtra
verse5 = "perque hiemes aestusque et inaequalis autumnos"
print(hexameter_scanner.scan(verse5).working_line)
# Out: pērque hiemes aestūsqu et inaequalis autūmnos
# Should be: pērqu iemes aestūsqu et inaequalis autūmnos
verse6 = "monstrum horrendum, informe, ingens, cui lumen ademptum"
print(hexameter_scanner.scan(verse6).working_line)
# Out: mōnstr hōrrēnd īnfōrm īngēns cui lumen adēmptum
# Should be: mōnstr ōrrēnd īnfōrm īngēns cui lumen adēmptum
The same bugs occur with VerseScanner:
from cltk.prosody.lat.verse_scanner import VerseScanner
verse_scanner = VerseScanner()
print(verse_scanner.elide_all(verse1))
# Out: quem quidem eg actutum modo vos absistite cogam
print(verse_scanner.elide_all(verse2))
# Out: Qui potis est inquis Quod amantem iniuria talis
print(verse_scanner.elide_all(verse3))
# Out: ille datis vadibus qui rur extractus in urbem est
Environment:
- CLTK 1.0.17 in different environments
Additional context
Elision rules are specified here (unfortunately in german) and here