LR-POR / tools

Tools for checking the compatibility between a lexical resource and a treebank
BSD 3-Clause "New" or "Revised" License
2 stars 0 forks source link

regra para formas verbais #1

Open arademaker opened 3 years ago

arademaker commented 3 years ago

@leoalenc disse:

A regra número três é a seguinte: muitas formas verbais na conjugação portuguesa têm múltiplas análises, por exemplo: Comprava, pode ser primeira ou terceira pessoa do singular do pretérito imperfeito. Compra pode ser terceira pessoa do singular do presente do indicativo ou segunda pessoa do singular do imperativo. Esses casos deveriam ser desconsiderados na comparação entre os dois recursos porque não representam discrepâncias interessantes. O nosso recurso apresenta todas as possibilidades de análise de uma dada forma, essa é a natureza de um recurso desse tipo, O corpo bosque apresenta a anotação da palavra num determinado contexto. Portanto, os dois recursos estarão compatíveis se uma das análises do bosque unificar com uma das análises do conjunto de análises do nosso recurso morfológico.

Curiosamente, não encontrei casos de comprava no bosque e todos os casos de compra estão como NOUN. Mas para chegava temos quatro casos, um deles:

% cat *.conllu | udapy -q util.Eval node='if node.form == "chegava": node.parent.draw(attributes="form,lemma,upos,feats")'
# sent_id = CF126-1#38
# text = de uma dívida que, em 1982, chegava a Cr 70 milhões
 ╭─╼ de de ADP _
 ┢─╼ uma um DET Definite=Ind|Gender=Fem|Number=Sing|PronType=Art
─┾ dívida dívida NOUN Gender=Fem|Number=Sing
 │ ╭─╼ que que PRON Gender=Fem|Number=Sing|PronType=Rel
 │ │ ╭─╼ , , PUNCT _
 │ │ ┢─╼ em em ADP _
 │ ┢─┾ 1982 1982 NUM NumType=Card
 │ │ ╰─╼ , , PUNCT _
 ╰─┾ chegava chegar VERB Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
   │ ╭─╼ a a ADP _
   ╰─┾ Cr cr NOUN Gender=Masc|Number=Sing
     ╰─┮ 70 70 NUM NumType=Card
       ╰─╼ milhões milhão NUM NumType=Card
...

No Morpho-BR temos:

% rg "^chegava\t" ~/work/morpho-br/verbs/*
/Users/ar/work/morpho-br/verbs/verbs-aal.dict
16073:chegava   chegar+V+IMPF+1+SG
16074:chegava   chegar+V+IMPF+2+SG
16075:chegava   chegar+V+IMPF+3+SG     <=

Só temos assim o imperfeito do indicativo, certo? imperfeito do indicativo é sempre pretérito? O Tense=Imp então unifica. O VerbForm=Fin indica que ele está flexionado, certo? E exige então o Mood doc. O Mood=Ind estaria fora do escopo do Morpho-Br certo?

leoalenc commented 3 years ago

@leoalenc disse:

A regra número três é a seguinte: muitas formas verbais na conjugação portuguesa têm múltiplas análises, por exemplo: Comprava, pode ser primeira ou terceira pessoa do singular do pretérito imperfeito. Compra pode ser terceira pessoa do singular do presente do indicativo ou segunda pessoa do singular do imperativo. Esses casos deveriam ser desconsiderados na comparação entre os dois recursos porque não representam discrepâncias interessantes. O nosso recurso apresenta todas as possibilidades de análise de uma dada forma, essa é a natureza de um recurso desse tipo, O corpo bosque apresenta a anotação da palavra num determinado contexto. Portanto, os dois recursos estarão compatíveis se uma das análises do bosque unificar com uma das análises do conjunto de análises do nosso recurso morfológico.

Curiosamente, não encontrei casos de comprava no bosque e todos os casos de compra estão como NOUN. Mas para chegava temos quatro casos, um deles:

% cat *.conllu | udapy -q util.Eval node='if node.form == "chegava": node.parent.draw(attributes="form,lemma,upos,feats")'
# sent_id = CF126-1#38
# text = de uma dívida que, em 1982, chegava a Cr 70 milhões
 ╭─╼ de de ADP _
 ┢─╼ uma um DET Definite=Ind|Gender=Fem|Number=Sing|PronType=Art
─┾ dívida dívida NOUN Gender=Fem|Number=Sing
 │ ╭─╼ que que PRON Gender=Fem|Number=Sing|PronType=Rel
 │ │ ╭─╼ , , PUNCT _
 │ │ ┢─╼ em em ADP _
 │ ┢─┾ 1982 1982 NUM NumType=Card
 │ │ ╰─╼ , , PUNCT _
 ╰─┾ chegava chegar VERB Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
   │ ╭─╼ a a ADP _
   ╰─┾ Cr cr NOUN Gender=Masc|Number=Sing
     ╰─┮ 70 70 NUM NumType=Card
       ╰─╼ milhões milhão NUM NumType=Card
...

No Morpho-BR temos:

% rg "^chegava\t" ~/work/morpho-br/verbs/*
/Users/ar/work/morpho-br/verbs/verbs-aal.dict
16073:chegava chegar+V+IMPF+1+SG
16074:chegava chegar+V+IMPF+2+SG
16075:chegava chegar+V+IMPF+3+SG     <=

Só temos assim o imperfeito do indicativo, certo? imperfeito do indicativo é sempre pretérito? O Tense=Imp então unifica. O VerbForm=Fin indica que ele está flexionado, certo? E exige então o Mood doc. O Mood=Ind estaria fora do escopo do Morpho-Br certo?

@arademaker, sim, imperfeito do indicativo IMPF (imp em UD) é sempre pretérito (i.e., passado). O outro pretérito é o perfeito, past em UD. A unificação entre estas duas representações ocorre sem problema:

chegava chegar VERB Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin

chegava chegar+V+IMPF+3+SG

No design do MorphoBr, utilizamos alguns princípios de economia representacional. IMPF subentende Mood=Ind, que, por sua vez, subentende VerbForm=Fin. A primeira inferência resulta da própria definição de IMPF na documentação do MorphoBr, a segunda não está explicitada, algo que numa gramática HPSG estaria por meio da hierarquia de tipos.

leoalenc commented 3 years ago

@arademaker, veja:

Python 2.7.18 (default, Mar  8 2021, 13:02:45) 
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license()" for more information.
>>> from CheckUnification import check_unification as unif
>>> from CheckUnification import fs
>>> bosque=fs("[lemma='chegar',form='chegava', cat='V', tense='impf', mood='ind', verbform='fin', num='sg', pers=3]")
>>> print bosque
[ cat      = 'V'       ]
[ form     = 'chegava' ]
[ lemma    = 'chegar'  ]
[ mood     = 'ind'     ]
[ num      = 'sg'      ]
[ pers     = 3         ]
[ tense    = 'impf'    ]
[ verbform = 'fin'     ]
>>> morpho=fs("[lemma='chegar',form='chegava', cat='V', tense='impf', num='sg', pers=3]")
>>> print morpho
[ cat   = 'V'       ]
[ form  = 'chegava' ]
[ lemma = 'chegar'  ]
[ num   = 'sg'      ]
[ pers  = 3         ]
[ tense = 'impf'    ]
>>> unif(bosque,morpho)
feature structures unify
>>>  
arademaker commented 3 years ago

Correto, então o que @analununes está fazendo no https://github.com/cpdoc/test/issues/16 agora pode ser trazido para cá.. queremos produzir o repor usando esta lib de unificação. Lá estávamos tentando trabalhar em adicionar uma funcionalidade na lib Haskell que estávamos construindo para conter de forma agregada todas as funções que estamos identificando como necessárias para PLN no DHBB. Mas concordo agora que usar a lib no NLTK para este caso específico é bem mais prático, pelo menos no curto prazo.

arademaker commented 3 years ago

Depois podemos tentar unificar este diretório aqui com o https://github.com/cpdoc/test e https://github.com/cpdoc/toolset e ainda temos um bando de scripts antigos em https://github.com/cpdoc/dhbb-nlp/tree/master/src.