UniversalDependencies / UD_Portuguese-Bosque

This Universal Dependencies (UD) Portuguese treebank.
Other
48 stars 11 forks source link

very long valency frames #393

Open leoalenc opened 2 years ago

leoalenc commented 2 years ago

@wellington36 e @arademaker , vejam no anexo todas as molduras com mais de três elementos, sendo o primeiro um verbo. Partindo do pressuposto de que a aridade máxima dos verbos em português é 3 (verbos bitransitivos), molduras como esta

['VERB:act', 'nsubj', 'iobj:com', 'obj']

enquadram-se no padrão. No entanto, molduras como estas

['VERB:act', 'nsubj', 'ccomp:que+Sub', 'iobj:a', 'obj', 'xcomp:Inf'] ['VERB:act', 'nsubj', 'iobj', 'obj', 'xcomp:a+Inf'] ['VERB:act', 'nsubj', 'ccomp:que', 'iobj', 'obj']

com cinco e quatro argumentos nucleares são extremamente suspeitas, devendo seguramente constituir erros de anotação. Seria interessante, usando o programa em Python, extrair os verbos com molduras de aridade > 3 e os respectivos exemplos, organizando os resultados numa tabela. long_frames.txt

wellington36 commented 2 years ago

@leoalenc, especificamente a moldura ['VERB:act', 'nsubj', 'obj', 'xcomp:de:que+Fin'] (que é a moldura 18 no arquivo long_frames.txt), não aparece no arquivo com as valencias:

>>> '<VERB:act,nsubj,obj,xcomp:de:que+Fin>' in val.keys()
False

Pode verificar isto?

wellington36 commented 2 years ago

@leoalenc, aqui está minha contagem de casos deste issue e como foi feito:

from valences import *
import joblib

val = joblib.load('bosque-master-20211210.pickle')

long_frames = []
for i in val.keys():
    if len(i.split(',')) > 3:
        long_frames.append(i)

print("Total de molduras: " + str(len(long_frames)))

sents_for_correction = 0
for i in long_frames:
    for j in val[i]:
        sents_for_correction += len(extract_example(val, str(i), str(j)))

print("Total de sentencas para correcao: " + str(sents_for_correction))

Return:

Total de molduras: 98
Total de sentencas para correcao: 863

@leoalenc. note que, a quantidade de molduras aqui foi 98 diferente do long_frame.txt que foram 93, ou seja, temos uma inconsistência na identificação dos casos.

arademaker commented 2 years ago

@leoalenc qual foi exatatmente seu código para obter o arquivo anexado?

leoalenc commented 2 years ago

De fato, xcomp:de:que+Fin, como observado por @wellington36 , não existe (mais). Acho que apareceu numa das primeiras versões do dicionário, suponho que o corpus tenha sido corrigido.

leoalenc commented 2 years ago

@leoalenc qual foi exatatmente seu código para obter o arquivo anexado?

@arademaker , veja https://github.com/LR-POR/tools/issues/39#issuecomment-1005103746. Os resultados obtidos pelo @wellington36 coincidem com os meus. É que naquele arquivo coloquei apenas as molduras com exatamente 4 elementos. Com mais de três, temos 93+4+1=98:

ValenceExtractor.compute_stats()
2 90
3 207
4 93
5 4
6 1

Sobretudo os casos com 5 ou 6 elementos são relevantes para detecção de erros, dada a aridade máxima de 3 para verbos (o primeiro elemento da moldura, VERB, não conta como argumento).