Closed analununes closed 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.
@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.
@analununes e @arademaker, proponho as seguintes regras para eliminar as formas espúrias:
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.
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
~/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.
@analununes, relevante para resolver https://github.com/LR-POR/PorGram/issues/15#issuecomment-890364421.
@leoalenc, entendi! Vou trabalhar nisso nesse fim de semana!
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.
@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
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
Como a lista não encontrados foi produzida?
@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.
@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.
@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.
Correto, @leoalenc de forma mais precisa deve ter tido a mesma dúvida que eu, justificar as formas listadas no nao-encontradas.txt
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, é 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, é 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, é 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:
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.
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.
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.
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
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.
@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
@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 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 , 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 , 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.
O PR aceito veja este issue @analununes ? Peço comentar e fechar se for o caso.
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.
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