LR-POR / MorphoBr

Resources for morphological analysis of Portuguese
Apache License 2.0
24 stars 4 forks source link

formas verbais contraídas sem clíticos adjungidos #104

Closed analununes closed 2 years ago

analununes commented 2 years ago

O comando egrep '[^sm(ão)][[:space:]].*\+PL' ./* retorna as entradas cujos sufixos não então dentre os possíveis para o plural. @arademaker @leoalenc

./verbs-aaa.dict:ababadai   ababadar+V+IMP+2+PL
./verbs-aaa.dict:ababadarde ababadar+V+INF+2+PL
./verbs-aaa.dict:ababadaste ababadar+V+PRF+2+PL
./verbs-aaa.dict:ababadárei ababadar+V+PQP+2+PL
./verbs-aaa.dict:ababadávei ababadar+V+IMPF+2+PL
./verbs-aaa.dict:ababalhai  ababalhar+V+IMP+2+PL
./verbs-aaa.dict:ababalhai  ababalhar+V+PRS+2+PL
./verbs-aaa.dict:ababalharde    ababalhar+V+INF+2+PL
./verbs-aaa.dict:ababalhaste    ababalhar+V+PRF+2+PL
./verbs-aaa.dict:ababalhárei    ababalhar+V+PQP+2+PL
./verbs-aaa.dict:ababalhávei    ababalhar+V+IMPF+2+PL
./verbs-aaa.dict:ababelai   ababelar+V+IMP+2+PL
./verbs-aaa.dict:ababelarde ababelar+V+INF+2+PL
./verbs-aaa.dict:ababelaste ababelar+V+PRF+2+PL
./verbs-aaa.dict:ababelárei ababelar+V+PQP+2+PL
./verbs-aaa.dict:ababelávei ababelar+V+IMPF+2+PL
./verbs-aaa.dict:ababosai   ababosar+V+IMP+2+PL
./verbs-aaa.dict:ababosai   ababosar+V+PRS+2+PL
./verbs-aaa.dict:ababosarde ababosar+V+INF+2+PL
./verbs-aaa.dict:ababosaste ababosar+V+PRF+2+PL
leoalenc commented 2 years ago

@analununes e @arademaker, a questão é mais geral, pois envolve, também, formas do infinitivo como comprá, vendê etc. e como comprare (INF+2+SG), entre outras. O que há em comum entre todas essas formas é que resultam da contração com clíticos, conforme temos na pasta clitics. Para comprar, temos estas e apenas estas formas espúrias:

compramo comprar+V+PRS+1+PL comprai comprar+V+PRS+2+PL comprava comprar+V+IMPF+2+SG comprávamo comprar+V+IMPF+1+PL comprávei comprar+V+IMPF+2+PL compramo comprar+V+PRF+1+PL comprámo comprar+V+PRF+1+PL compramo comprar+V+PRF+1+PL compraste comprar+V+PRF+2+PL comprara comprar+V+PQP+2+SG compráramo comprar+V+PQP+1+PL comprárei comprar+V+PQP+2+PL compramo comprar+V+PRS+1+PL comprai comprar+V+PRS+2+PL comprá comprar+V+INF comprá comprar+V+INF+1+SG comprá comprar+V+INF+3+SG comprarmo comprar+V+INF+1+PL comprare comprar+V+INF+2+SG comprarde comprar+V+INF+2+PL compremo comprar+V+IMP+1+PL

Compilei essa lista, com base no meu conhecimento sobre a conjugação do português, a partir da análise manual dos parses de comprar que apresentam repetições:

awk '$2 ~ /^comprar\+/ {print $2}' verbs-a* | sort | uniq -c | awk '$1 > 1' | sort

As regras de elisão dos segmentos s e r finais quando da adjunção de pronomes enclíticos, na língua culta, são conhecidas e absolutamente regulares. Um bom resumo está, por exemplo, neste blogue. Observem que, no IMP, temos formas de 2+PL sem s final que são legítimas, assim como formas de 2+SG também sem s, pois a regra de formação do imperativo afirmativo da segunda pessoa é exatamente suprimir esse segmento das formas correspondentes do presente do indicativo.

leoalenc commented 2 years ago

@analununes e @arademaker, seria o caso de incluir #103 aqui? Ou desdobramos #104 em diferentes issues, cada uma tratando de uma configuração específica de tempo e modo? Parece-me que é possível generalizar essa tarefa, corrigindo de uma tacada só todos os caso, tal como sintetizados no título da presente issue.

leoalenc commented 2 years ago

@analununes e @arademaker, proponho as seguintes regras para eliminar as formas espúrias:

  1. Se +IMP+ não é parte das features de uma forma de um dado lema de verbo, eliminar a forma se a primeira ou a segunda pessoa do plural não terminar em s.

  2. Sejam (forma1,feats1) e (forma2,feats2) de um dado lema, onde feats1==feats2 e feats1 termina em 2+SG e forma1 != forma2, eliminar a forma duplicada que não termina em s, por exemplo:

trazere trazer+V+INF+2+SG (eliminar) trazeres trazer+V+INF+2+SG

  1. Eliminar as formas do infinitivo terminadas em (á|ê|ô|i|í):

~/MorphoBr/verbs$ grep -Ph "(á|ê|ô|i|í)\t.+V\+INF\+?" verbs-a*.dict | wc -l

45117

É interessante chamar a atenção para que formas do infinitivo terminadas em í são espúrias mesmo com clítico adjungido:

grep -Ph "í\t.+V\+INF\+?" verbs-a*.dict | wc -l

74

É importante verificar depois se essas formas estão presentes na pasta clitics.

leoalenc commented 2 years ago

@analununes, relevante para resolver https://github.com/LR-POR/PorGram/issues/15#issuecomment-890364421.

analununes commented 2 years ago

@leoalenc, entendi! Vou trabalhar nisso nesse fim de semana!

arademaker commented 2 years ago

Obrigado @leoalenc por detalhar a regra. A última parte é bem relevante, verificar nos cliticos se as formas flexionadas removidas são parte de algum clítico do mesmo lemma. Assim podemos aproveitar para verificar também cobertura das formas com cliticos.

analununes commented 2 years ago

@arademaker e @leoalenc, seguindo as regras consegui identificar estas formas espúrias: erros.txt Formas que não foram encontradas na pasta clitics: nao-encontradas.txt

arademaker commented 2 years ago

Agora seria bom @leoalenc passar o olho e dar uma revisada. Mas como são muitos, vamos ter que pensar em uma forma automática de inserir o que for razoável nos clitics

arademaker commented 2 years ago

Como a lista não encontrados foi produzida?

leoalenc commented 2 years ago

@arademaker e @analununes, em #34, esse problema já era levantado. Quando resolvermos a presente issue, precisamos verificar se #34 também não foi resolvida. Acho que temos de ter cuidado de verificar se já existe issue sobre uma questão antes de abrir uma nova.

leoalenc commented 2 years ago

@arademaker e @leoalenc, seguindo as regras consegui identificar estas formas espúrias: erros.txt Formas que não foram encontradas na pasta clitics: nao-encontradas.txt

@arademaker e @analununes , vou dar uma olhada.

leoalenc commented 2 years ago

@arademaker e @leoalenc, seguindo as regras consegui identificar estas formas espúrias: erros.txt Formas que não foram encontradas na pasta clitics: nao-encontradas.txt

@arademaker e @analununes , vou dar uma olhada.

@analununes, é importante que, no arquivo nao-encontradas.txt, você coloque a entrada completa do MorphoBr e não apenas a forma, para que eu possa avaliar melhor o tipo de problema envolvido.

arademaker commented 2 years ago

Correto, @leoalenc de forma mais precisa deve ter tido a mesma dúvida que eu, justificar as formas listadas no nao-encontradas.txt

analununes commented 2 years ago

Como a lista não encontrados foi produzida?

@arademaker , criei um map com os arquivos da pasta clitics, sendo as chaves as formas que estavam à esquerda do "-". Depois pesquisei as formas identificadas como espúrias nesse map e retornei as que não foram encontradas.

analununes commented 2 years ago

@analununes, é importante que, no arquivo nao-encontradas.txt, você coloque a entrada completa do MorphoBr e não apenas a forma, para que eu possa avaliar melhor o tipo de problema envolvido.

@leoalenc, ok! Vou produzir um novo arquivo.

analununes commented 2 years ago

@analununes, é importante que, no arquivo nao-encontradas.txt, você coloque a entrada completa do MorphoBr e não apenas a forma, para que eu possa avaliar melhor o tipo de problema envolvido.

@leoalenc, ok! Vou produzir um novo arquivo.

@leoalenc e @arademaker, aqui está: nao-encontradas.txt

leoalenc commented 2 years ago

@analununes, é importante que, no arquivo nao-encontradas.txt, você coloque a entrada completa do MorphoBr e não apenas a forma, para que eu possa avaliar melhor o tipo de problema envolvido.

@leoalenc, ok! Vou produzir um novo arquivo.

@leoalenc e @arademaker, aqui está: nao-encontradas.txt

@analununes e @arademaker, em nao-encontradas.txt, deparei-me com formas do imperativo que não esperava entrarem no escopo das regras de remoção que esbocei acima, por exemplo:

abaiúca abaiucar+V+IMP+2+SG

No MorphoBr, temos:

grep -Eh "abaiucar\+V\+IMP\+2\+SG" verbs-a*.dict

abaiuca abaiucar+V+IMP+2+SG abaiuques abaiucar+V+IMP+2+SG abaiúca abaiucar+V+IMP+2+SG

Essa última não consta em http://www.portaldalinguaportuguesa.org/index.php?action=lemma&lemma=118928, provavelmente mais uma forma espúria. A regra 2 precisa ser reformulada desta maneira para ficar mais clara:

  1. Sejam (forma1,feats1) e (forma2,feats2) de um dado lema, onde feats1==feats2 E feats1 termina em 2+SG E forma1 != forma2 E forma1 ou forma2 termina em s, eliminar a forma duplicada que não termina em s, por exemplo:

trazere trazer+V+INF+2+SG (eliminar) trazeres trazer+V+INF+2+SG

Outro caso é o seguinte:

abafámo abafar+V+PRF+1+PL

Em clitics, deveríamos ter também essa forma adjungida a um clítico, por exemplo, abafámo-la, ver http://www.portaldalinguaportuguesa.org/simplesearch.php?action=lemma&lemma=32993&highlight=^abafar$. Concluindo, @analununes, poderia reformular o seu algoritmo conforme a nova definição da regra 2?
Acho que a correção dos verbos com clíticos, incluindo formas faltantes como abafámo-la, deveria ficar para depois dos artigos do STIL 2021. O importante agora, ao meu ver, seria excluir as formas espúrias objeto da presente issue. Que acha, @arademaker? Esta forma é espúria:

abalausúra abalaustrar+V+IMP+2+SG

Vi apenas as primeiras linhas do arquivo, deve haver outros tipos de casos.

analununes commented 2 years ago

Concluindo, @analununes, poderia reformular o seu algoritmo conforme a nova definição da regra 2?

@leoalenc, claro, algoritmo atualizado aqui. Os arquivos produzidos estão neste comentário.

analununes commented 2 years ago

Em LR-POR/PorGram/issues/15 @leoalenc percebeu outra falha no algoritmo:

um dos if confere se a forma1 termina em s, caso não termine, é considerada como erro, se terminar,

@analununes , acho que não está correto classificar a forma1 como erro simplesmente por não terminar em esse, Sem saber se a segunda forma termina ou não em esse. A condição a ser verificada primeiro seria se uma das formas termina em esse. Caso as duas formas não terminem em esse, deveriam ser agrupadas num relatório próprio.

a forma2 é considerada como erro, por isso "vieste" foi identificado como erro por essa regra. Imagino que com as correções de 106 o algoritmo não a classifique mais como erro.

@leoalenc, consegui agrupar as formas da regra 2 que não terminam em s em um relatório próprio: regra2-sem-s.txt Resultados do algoritmo após reformular a regra 2: erros.txt nao-encontradas.txt

@arademaker e @analununes, eu não esperava encontrar na lista de erros.txt formas no imperativo da segunda pessoa do singular, uma vez que a regra 1 de LR-POR/MorphoBr#104 (comment) reza:

Se +IMP+ não é parte das features de uma forma de um dado lema de verbo, eliminar a forma se a primeira ou a segunda pessoa do plural não terminar em s.

grep -E "\+IMP\+2\+SG" erros.txt | wc -l

11310

$ grep -E "\+IMP\+2\+SG" erros-02.txt | head

ababalha ababalhar+V+IMP+2+SG ababosa ababosar+V+IMP+2+SG abacela abacelar+V+IMP+2+SG abacina abacinar+V+IMP+2+SG abada abadar+V+IMP+2+SG abaderna abadernar+V+IMP+2+SG abadessa abadessar+V+IMP+2+SG abadia abadiar+V+IMP+2+SG abaeta abaetar+V+IMP+2+SG abafa abafar+V+IMP+2+SG

Essas formas não constituem erros, uma vez que o imperativo afirmativo se forma pela supressão do s da segunda pessoa do singular do presente do indicativo. Estas duas formas estão corretas, a segunda sendo a do imperativo negativo:

grep -Ph "\tabafar\+V\+IMP\+2\+SG" verbs-a*.dict

abafa abafar+V+IMP+2+SG abafes abafar+V+IMP+2+SG

Vejo agora que faltou no meu esboço de algoritmo deixar claro que a regra 2 está no escopo do if da regra 1, pelo que nenhuma forma no imperativo é alvo da regra 2. @analununes, pode consertar o algoritmo e gerar novos arquivos de saída?

Após corrigir, produzi novamente os arquivos: regra2-sem-s.txt nao-encontradas.txt erros.txt

Obs.: a modificação no algoritmo reduziu significativamente a lista regra2-sem-s.txt, das 1056 linhas sobraram apenas 56.

leoalenc commented 2 years ago

Após corrigir, produzi novamente os arquivos: regra2-sem-s.txt nao-encontradas.txt erros.txt

Obs.: a modificação no algoritmo reduziu significativamente a lista regra2-sem-s.txt, das 1056 linhas sobraram apenas 56.

@analununes, parabéns pelo nova versão e obrigado. @arademaker, o arquivo erros.txt contém 245017 formas espúrias a serem eliminadas, compiladas pelo algoritmo da @analununes elaborado a partir das minhas regras de eliminação de duplicatas. Talvez seja o caso de verificar a lógica do algoritmo para saber se estão sendo eliminadas mesmo repetições erradas de formas corretas existentes. Outra alternativa é verificar, para cada parse desse arquivo, se existe uma forma correta (pressupondo-se que erros.txt contém as formas erradas, como espero que contenha).
Anotei com dois hifens no início da linha as formas a serem eliminadas do arquivo regra2-sem-s.txt, veja aqui: regra2-sem-s-erros.txt Quanto às 25958 formas de nao-encontradas.txt, teríamos de reconstruir, a partir delas, as formas com clíticos. Isso deve ser objetivo de uma issue a ser resolvida num futuro mais distante, quando começarmos a trabalhar com pronomes enclíticos na PorGram. Veja:

grep -Ph "^ababalh[áa]mo\-" clitics-a*.dict

ababalhamo-la ababalhar+V.ele.ACC.3.F.SG+PRF+1+PL ababalhamo-la ababalhar+V.ele.ACC.3.F.SG+PRS+1+PL ababalhamo-las ababalhar+V.ele.ACC.3.F.PL+PRF+1+PL ababalhamo-las ababalhar+V.ele.ACC.3.F.PL+PRS+1+PL ababalhamo-lo ababalhar+V.ele.ACC.3.M.SG+PRF+1+PL ababalhamo-lo ababalhar+V.ele.ACC.3.M.SG+PRS+1+PL ababalhamo-los ababalhar+V.ele.ACC.3.M.PL+PRF+1+PL ababalhamo-los ababalhar+V.ele.ACC.3.M.PL+PRS+1+PL ababalhamo-nos ababalhar+nós.AD.1.PL+PRF+1+PL ababalhamo-nos ababalhar+nós.AD.1.PL+PRS+1+PL

No entanto, é preciso levar em conta que há muitas formas espúrias nesse arquivo, sendo inviável examinar uma a uma. Tudo indica que as seguintes estão corretas:

grep -Ec "ámo$" nao-encontradas.txt

10051

Formas em ámo são formas contraídas de variantes legítimas de formas da primeira pessoa do plural do pretérito perfeito do indicativo:

head nao-encontradas.txt

ababalhámo ababosámo abacelámo abacinámo abadámo abadernámo abadessámo abadiámo abaetámo abafámo

grep -Ph "^ababalh[áa]mo\t" verbs-a*.dict

ababalhamo ababalhar+V+PRF+1+PL ababalhamo ababalhar+V+PRS+1+PL ababalhámo ababalhar+V+PRF+1+PL

leoalenc commented 2 years ago

Quanto às 25958 formas de nao-encontradas.txt, teríamos de reconstruir, a partir delas, as formas com clíticos. Isso deve ser objetivo de uma issue a ser resolvida num futuro mais distante, quando começarmos a trabalhar com pronomes enclíticos na PorGram.

@arademaker e @analununes, o problema já está em #107.

analununes commented 2 years ago

@leoalenc e @arademaker, fiz uma função que verifica, para cada forma espúria, se existe uma entrada com mesmo lema+tags. Apenas uma das formas do arquivo erros.txt não possui um equivalente:

mançupi upir+V+PRS+2+PL

Acredito que o problema seja o lema, pois:

mançupis mançupir+V+PRS+2+PL

Outras entradas com o lema upir:

mançupa upir+V+SBJR+1+SG
mançupa upir+V+SBJR+3+SG
mançupam    upir+V+SBJR+3+PL
mançupe upir+V+PRS+3+SG
mançupi upir+V+IMP+2+PL
mançupi upir+V+INF
mançupi upir+V+INF+1+SG
mançupi upir+V+PRF+1+SG
mançupi upir+V+PRS+2+PL
mançupia    upir+V+IMPF+1+SG
mançupir    upir+V+INF
mançupir    upir+V+INF+1+SG
mançupir    upir+V+SBJF+1+SG
mançupir    upir+V+SBJF+3+SG
mançupira   upir+V+PQP+1+SG
mançupiram  upir+V+PRF+3+PL
mançupirem  upir+V+SBJF+3+PL
mançupiria  upir+V+COND+1+SG
mançupisse  upir+V+SBJP+1+SG
analununes commented 2 years ago

@arademaker e @leoalenc, no commit 4f0df38b8791e93b450c6018bff611e407092d81 deletei as formas espúrias que estavam no arquivo erros.txt. A lista produzida pelo comando diff comparando esses novos arquivos e os arquivos anteriores é igual a lista erros.txt. Código está aqui. Ainda não eliminei as entradas que estão no arquivo regra2-sem-s-erros.txt.

leoalenc commented 2 years ago

@leoalenc e @arademaker, fiz uma função que verifica, para cada forma espúria, se existe uma entrada com mesmo lema+tags. Apenas uma das formas do arquivo erros.txt não possui um equivalente:

mançupi upir+V+PRS+2+PL

Acredito que o problema seja o lema, pois:

mançupis mançupir+V+PRS+2+PL

Outras entradas com o lema upir:


mançupa   upir+V+SBJR+1+SG

mançupa   upir+V+SBJR+3+SG

mançupam  upir+V+SBJR+3+PL

mançupe   upir+V+PRS+3+SG

mançupi   upir+V+IMP+2+PL

mançupi   upir+V+INF

mançupi   upir+V+INF+1+SG

mançupi   upir+V+PRF+1+SG

mançupi   upir+V+PRS+2+PL

mançupia  upir+V+IMPF+1+SG

mançupir  upir+V+INF

mançupir  upir+V+INF+1+SG

mançupir  upir+V+SBJF+1+SG

mançupir  upir+V+SBJF+3+SG

mançupira upir+V+PQP+1+SG

mançupiram    upir+V+PRF+3+PL

mançupirem    upir+V+SBJF+3+PL

mançupiria    upir+V+COND+1+SG

mançupisse    upir+V+SBJP+1+SG

@analununes , muito bem! Essas formas com lema upir são pura doideira! Devem ser eliminadas. provavelmente se deve a um problema de algum algoritmo de toquenização, que não considerou Ç como caractere de palavra do português.

analununes commented 2 years ago

@analununes , muito bem! Essas formas com lema upir são pura doideira! Devem ser eliminadas. provavelmente se deve a um problema de algum algoritmo de toquenização, que não considerou Ç como caractere de palavra do português.

@leoalenc, obrigada! Antes de eliminar vou conferir se existem as entradas com o lema correto, a solução pode ser corrigir o lema. Aviso aqui quando souber.

analununes commented 2 years ago

@analununes , muito bem! Essas formas com lema upir são pura doideira! Devem ser eliminadas. provavelmente se deve a um problema de algum algoritmo de toquenização, que não considerou Ç como caractere de palavra do português.

@arademaker e @leoalenc , para resolver esse problema eu troquei o lema upir por mançupir e em seguida eliminei as duplicadas, código aqui. Acredito que para fechar essa issue falta apenas eliminar os erros de regra2-sem-s-erros.txt. Quando fechar vou começar a corrigir os casos de sufixo asseis onde deveria ser ásseis que comentei aqui.

arademaker commented 2 years ago

O PR aceito veja este issue @analununes ? Peço comentar e fechar se for o caso.

analununes commented 2 years ago

O PR aceito veja este issue @analununes ? Peço comentar e fechar se for o caso.

@arademaker, sim, as entradas comentadas aqui foram eliminadas ou corrigidas.