Skip to content

Commit c321cfe

Browse files
Extend Romance block to support European Portuguese
1 parent 4ba6c10 commit c321cfe

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

udapi/block/msf/romance/romance.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,34 @@ def process_phrases_with_ir_aller(self, node, expl, polarity, phrase_ords, head_
253253
return
254254

255255
xcomps = [x for x in node.children if x.udeprel == 'xcomp']
256-
if node.lemma in ['ir', 'aller'] and node.upos == 'VERB' and xcomps:
256+
if node.lemma in ['ir', 'aller', 'estar'] and node.upos == 'VERB' and xcomps:
257257
node.misc['PhraseAux'] = 'Yes'
258258

259259
voice = node.feats['Voice']
260260
auxes = [x for x in xcomps[0].children if x.udeprel == 'aux']
261261
aux_pass = [x for x in auxes if x.deprel == 'aux:pass']
262262
auxes_without_pass = [x for x in auxes if x.deprel != 'aux:pass']
263263

264-
if node.feats['Tense'] == 'Pres':
264+
# European Portuguese: estar + a + Inf
265+
if node.lemma == 'estar':
266+
267+
if node.feats['Tense'] == 'Pres':
268+
tense = 'Pres'
269+
aspect = 'Prog'
270+
271+
elif node.feats['Tense'] == 'Imp':
272+
tense = 'Past'
273+
aspect = 'ImpProg'
274+
275+
elif node.feats['Tense'] == 'Past':
276+
tense = 'Past'
277+
aspect = 'PerfProg'
278+
279+
elif node.feats['Tense'] == 'Fut':
280+
tense = 'Fut'
281+
aspect = 'Prog'
282+
283+
elif node.feats['Tense'] == 'Pres':
265284
tense = 'Fut'
266285

267286
elif node.feats['Tense'] == 'Imp':
@@ -275,13 +294,14 @@ def process_phrases_with_ir_aller(self, node, expl, polarity, phrase_ords, head_
275294
tense = 'PastFut'
276295
aspect = 'Perf'
277296

297+
278298
if auxes_without_pass:
279299
if auxes[0].lemma == 'estar':
280300
aspect += 'Prog'
281301
if auxes[0].lemma == 'haber':
282302
aspect += 'Perf'
283303

284-
adp_a = [x for x in xcomps[0].children if x.lemma == 'a' and x.upos == 'ADP' and x.udeprel == 'mark']
304+
adp_a = [x for x in xcomps[0].children if x.lemma == 'a' and x.udeprel == 'mark']
285305
cop = [x for x in xcomps[0].children if x.udeprel == 'cop']
286306
phrase_ords = [node.ord, xcomps[0].ord] + [x.ord for x in auxes] + [x.ord for x in cop]
287307
if adp_a:

0 commit comments

Comments
 (0)