@@ -39,7 +39,7 @@ def process_node(self, node):
3939 cop = [x for x in node .children if x .udeprel == 'cop' ]
4040
4141 # only expl or expl:pv, no expl:impers or expl:pass
42- refl = [x for x in node .children if x .lemma == 'se' and x .upos == 'PRON' and x .udeprel == 'expl' and x .deprel != 'expl:impers' and x .deprel != 'expl:pass' ]
42+ refl = [x for x in node .children if ( x .lemma == 'se' or x . lemma == 'soi' ) and x .upos == 'PRON' and x .udeprel == 'expl' and x .deprel != 'expl:impers' and x .deprel != 'expl:pass' ]
4343
4444 if refl :
4545 expl = 'Pv'
@@ -265,6 +265,7 @@ def process_simple_verb_forms(self, node, expl, polarity, phrase_ords, head_node
265265
266266 aspect = ''
267267 tense = node .feats ['Tense' ]
268+ form = node .feats ['VerbForm' ]
268269
269270 if node .feats ['Mood' ] == 'Ind' :
270271
@@ -336,13 +337,19 @@ def process_simple_verb_forms(self, node, expl, polarity, phrase_ords, head_node
336337 aspect = ''
337338 tense = Tense .PRES .value
338339
340+ adp_en = [x for x in head_node .children if x .upos == 'ADP' and x .lemma == 'en' and x .udeprel == 'mark' ]
341+ if node .feats ['VerbForm' ] == 'Part' and adp_en :
342+ phrase_ords .append (adp_en [0 ].ord )
343+ phrase_ords .sort ()
344+ form = 'Ger'
345+
339346
340347 self .write_node_info (head_node ,
341348 person = node .feats ['Person' ],
342349 aspect = aspect ,
343350 number = node .feats ['Number' ],
344351 mood = node .feats ['Mood' ],
345- form = node . feats [ 'VerbForm' ] ,
352+ form = form ,
346353 tense = tense ,
347354 gender = head_node .feats ['Gender' ],
348355 voice = head_node .feats ['Voice' ],
@@ -499,13 +506,23 @@ def process_periphrastic_verb_forms(self, node, auxes, expl, polarity, phrase_or
499506 # Futuro anteriore -> PhraseTense=Fut, PhraseAspect=Perf
500507 aspect = Aspect .PERF .value
501508 tense = auxes [0 ].feats ['Tense' ]
509+ form = 'Fin'
510+
511+ adp_en = [x for x in node .children if x .lemma == 'en' and x .upos == 'ADP' and x .udeprel == 'mark' ]
512+ if auxes [0 ].feats ['VerbForm' ] == 'Part' and adp_en :
513+ tense = Tense .PAST .value
514+ aspect = ''
515+ phrase_ords .append (adp_en [0 ].ord )
516+ phrase_ords .sort ()
517+ form = 'Ger'
518+
502519
503520 # Spanish
504521 # Pretérito perfecto compuesto ante presente -> PhraseTense=Past, PhraseAspect=Perf
505522
506523 # Italian
507524 # Passato prossimo (aux avere/essere) -> PhraseTense=Past, PhraseAspect=Perf
508- if auxes [0 ].feats ['Tense' ] == 'Pres' :
525+ elif auxes [0 ].feats ['Tense' ] == 'Pres' :
509526
510527 # Portuguese
511528 # pretérito perfeito composto (aux ter) -> PhraseTense=PastPres, PhraseAspect=Perf
@@ -533,7 +550,7 @@ def process_periphrastic_verb_forms(self, node, auxes, expl, polarity, phrase_or
533550
534551 # Italian
535552 # trapassato remoto -> PhraseTense=Past, PhraseAspect=Ant
536-
553+
537554 # French
538555 # passé antérieur -> PhraseTense=Past, PhraseAspect=Ant
539556 elif auxes [0 ].feats ['Tense' ] == 'Past' :
@@ -546,7 +563,7 @@ def process_periphrastic_verb_forms(self, node, auxes, expl, polarity, phrase_or
546563 person = auxes [0 ].feats ['Person' ],
547564 mood = auxes [0 ].feats ['Mood' ],
548565 aspect = aspect ,
549- form = 'Fin' ,
566+ form = form ,
550567 voice = head_node .feats ['Voice' ],
551568 expl = expl ,
552569 polarity = polarity ,
0 commit comments