22import udapi .block .msf .phrase
33from enum import Enum
44
5- AUXES_HAVE = ['ter' , 'haber' ]
6- AUXES_BE = ['estar' ]
5+ AUXES_HAVE = ['ter' , 'haber' , 'avere' ]
6+ AUXES_BE = ['estar' , 'essere' ]
77
88class Aspect (str , Enum ):
99 IMP = 'Imp'
@@ -44,7 +44,7 @@ def process_node(self, node):
4444 self .process_copulas (node ,cop ,auxes ,refl ,expl )
4545 return
4646
47- if node .upos == 'VERB' : #TODO maybe add ' or node.feats['VerbForm'] == 'Part'?
47+ if node .upos == 'VERB' : #TODO maybe add " or node.feats['VerbForm'] == 'Part'" ?
4848 auxes = [x for x in node .children if x .udeprel == 'aux' ]
4949 aux_pass = [x for x in node .children if x .deprel == 'aux:pass' ]
5050 auxes_without_pass = [x for x in node .children if x .udeprel == 'aux' and x .deprel != 'aux:pass' ]
@@ -76,6 +76,11 @@ def process_node(self, node):
7676 # Spanish
7777 # presente -> PhraseTense=Pres, PhraseAspect=''
7878 # futuro simple -> PhraseTense=Fut, PhraseAspect=''
79+
80+ # Italian
81+ # presente -> PhraseTense=Pres, PhraseAspect=''
82+ # futuro semplice -> PhraseTense=Fut, PhraseAspect=''
83+
7984 aspect = ''
8085 tense = node .feats ['Tense' ]
8186
@@ -86,6 +91,9 @@ def process_node(self, node):
8691
8792 # Spanish
8893 # pretérito imperfecto -> PhraseTense=Past, PhraseAspect=Imp
94+
95+ # Italian
96+ # imperfetto -> PhraseTense=Past, PhraseAspect=Imp
8997 if node .feats ['Tense' ] == 'Imp' :
9098 tense = Tense .PAST .value
9199 aspect = Aspect .IMP .value
@@ -95,6 +103,9 @@ def process_node(self, node):
95103
96104 # Spanish
97105 # pretérito perfecto -> PhraseTense=Past, PhraseAspect=Perf
106+
107+ # Italian
108+ # pass remoto -> PhraseTense=Past, PhraseAspect=Perf
98109 if node .feats ['Tense' ] == 'Past' :
99110 aspect = Aspect .PERF .value
100111
@@ -111,12 +122,22 @@ def process_node(self, node):
111122 # Spanish
112123 # subjunctive presente -> PhraseTense=Pres, PhraseAspect=''
113124 # subjunctive futuro -> PhraseTense=Fut, PhraseAspect='' TODO not annotated in treebanks?
125+
126+ # Italian
127+ # Congiuntivo presente -> PhraseTense=Pres, PhraseAspect=''
114128 if node .feats ['Mood' ] == 'Sub' :
115129
116130 if node .feats ['Tense' ] == 'Past' :
117131 aspect = Aspect .IMP .value
118132
133+ # Portuguese
119134 # subjunctive pretérito imperfeito -> PhraseTense=Past, PhraseAspect=Imp
135+
136+ # Spanish
137+ # Pretérito imperfecto -> PhraseTense=Past, PhraseAspect=Imp
138+
139+ # Italian
140+ # Congiuntivo imperfetto -> PhraseTense=Past, PhraseAspect=Imp
120141 if node .feats ['Tense' ] == 'Imp' :
121142 tense = Tense .PAST .value
122143 aspect = Aspect .IMP .value
@@ -126,6 +147,9 @@ def process_node(self, node):
126147
127148 # Spanish
128149 # pospretérito (cnd) -> PhraseTense=Pres, PhraseAspect='', PhraseMood=Cnd
150+
151+ # Italian
152+ # Condizionale presente -> PhraseTense=Pres, PhraseAspect='', PhraseMood=Cnd
129153 if node .feats ['Mood' ] == 'Cnd' :
130154 aspect = ''
131155 tense = Tense .PRES .value
@@ -206,6 +230,9 @@ def process_periphrastic_verb_forms(self, node, auxes, refl, all_auxes, head_nod
206230
207231 # Spanish
208232 # Antepospretérito -> PhraseTense=Past, PhraseAspect='', PhraseMood=Cnd
233+
234+ # Italian
235+ # Condizionale passato -> PhraseTense=Past, PhraseAspect='', PhraseMood=Cnd
209236 else :
210237 tense = Tense .PAST .value
211238 aspect = ''
@@ -329,7 +356,7 @@ def process_periphrastic_verb_forms(self, node, auxes, refl, all_auxes, head_nod
329356
330357 return
331358
332- # Auxiliary 'ter' / 'haber' followed by a participle
359+ # Auxiliary 'ter' / 'haber' / 'avere' / 'essere' followed by a participle
333360 if node .feats ['VerbForm' ] == 'Part' :
334361 phrase_ords = [head_node .ord ] + [x .ord for x in all_auxes ] + [r .ord for r in refl ]
335362 phrase_ords .sort ()
@@ -339,28 +366,36 @@ def process_periphrastic_verb_forms(self, node, auxes, refl, all_auxes, head_nod
339366
340367 # Spanish
341368 # Futuro compuesto antefuturo -> PhraseTense=Fut, PhraseAspect=Perf
369+
370+ # Italian
371+ # Futuro anteriore -> PhraseTense=Fut, PhraseAspect=Perf
342372 aspect = Aspect .PERF .value
343373 tense = auxes [0 ].feats ['Tense' ]
344374
345- # Portuguese
346- # pretérito perfeito composto (aux ter) -> PhraseTense=PastPres, PhraseAspect=Perf
347- # subjonctive pretérito perfeito composto (aux ter) -> PhraseTense=PastPres, PhraseAspect=Perf, PhraseMood=Sub
375+ # Spanish
376+ # Pretérito perfecto compuesto ante presente -> PhraseTense=Past, PhraseAspect=Perf
348377
378+ # Italian
379+ # Passato prossimo (aux avere/essere) -> PhraseTense=Past, PhraseAspect=Perf
349380 if auxes [0 ].feats ['Tense' ] == 'Pres' :
350381
351- # Spanish
352- # Pretérito perfecto compuesto ante presente -> PhraseTense=Past, PhraseAspect=Perf
353- if auxes [0 ].lemma == 'haber' and auxes [0 ].feats ['Mood' ] != 'Sub' :
354- tense = Tense .PAST .value
382+ # Portuguese
383+ # pretérito perfeito composto (aux ter) -> PhraseTense=PastPres, PhraseAspect=Perf
384+ # subjonctive pretérito perfeito composto (aux ter) -> PhraseTense=PastPres, PhraseAspect=Perf, PhraseMood=Sub
385+ if auxes [0 ].lemma == 'ter' or auxes [0 ].feats ['Mood' ] == 'Sub' :
386+ tense = Tense .PASTPRES .value
355387 else :
356- tense = Tense .PASTPRES .value
388+ tense = Tense .PAST .value
357389
358390 # Portuguese
359391 # pretérito mais que perfeito composto (aux ter) -> PhraseTense=Past, PhraseAspect=Pqp
360392 # subjonctive pretérito mais-que-perfeito composto (aux ter) -> PhraseTense=Past, PhraseAspect=Pqp, PhraseMood=Sub
361393
362394 # Spanish
363395 # pretérito pluscuamperfecto -> PhraseTense=Past, PhraseAspect=Pqp
396+
397+ # Italian
398+ # Trapassato prossimo -> PhraseTense=Past, PhraseAspect=Pqp
364399 elif auxes [0 ].feats ['Tense' ] in ['Imp' , 'Past' ]: # TODO prej neni v Past, jenom Imp
365400 tense = Tense .PAST .value
366401 aspect = Aspect .PQP .value
0 commit comments