LR-POR / MorphoBr

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

formas verbais inválidas GFL #34

Closed arademaker closed 3 years ago

arademaker commented 6 years ago

pra eliminar as formas agramaticais do tipo

ababadamo       ababadar+V+PRF+1+PL
ababadamo       ababadar+V+PRS+1+PL
ababadáramo     ababadar+V+PQP+1+PL
ababadarmo      ababadar+V+SBJF+1+PL
ababadarmo      ababadar+V+INF+1+PL
ababadássemo    ababadar+V+SBJP+1+PL
ababadávamo     ababadar+V+IMPF+1+PL
ababademo       ababadar+V+SBJR+1+PL

basta executar

grep -Ev ".*mo[[:space:]].*\+V\+[A-Z]+\+1\+PL" x*.pairs > verbs.pairs

existem certamente outras formas agramaticais no GLF decorrentes da estratégia de toquenização adotada. o número de casos é limitado. eu poderia fazer esse levantamento, mas se alguém criativo quiser bolar um programinha pra fazer isso, melhor. estratégia: checar se a forma adicional equivale à forma que se obtém separando o clítico da forma com V+PRO no DELAF-PB. Caso afirmativo, deletar a forma adicional. Por exemplo, dado

ababadávamo     ababadar+V+IMPF+1+PL
ababadávamos     ababadar+V+IMPF+1+PL

checamos se uma dessas formas corresponde ao que obtemos separando as formas de ababadar+V+IMPF+1+PL com clítico, ou seja

grep -Eh "ababadar\+V.*\+IMPF\+1\+PL" uniq.*.pairs
ababadávamo-la  ababadar+V.ele.ACC.3.F.SG+IMPF+1+PL
ababadávamo-las ababadar+V.ele.ACC.3.F.PL+IMPF+1+PL
ababadávamo-lo  ababadar+V.ele.ACC.3.M.SG+IMPF+1+PL
ababadávamo-los ababadar+V.ele.ACC.3.M.PL+IMPF+1+PL
ababadávamos-lhe        ababadar+V.ele.DAT.3.SG+IMPF+1+PL
ababadávamos-lhes       ababadar+V.ele.DAT.3.PL+IMPF+1+PL
ababadávamos-me ababadar+V.eu.AD.1.SG+IMPF+1+PL
ababadávamos-te ababadar+V.tu.AD.2.SG+IMPF+1+PL
ababadávamos-vos        ababadar+V.vós.AD.2.PL+IMPF+1+PL

o teste vai ser positivo porque separando e eliminado informação sobre clítico em

ababadávamo-la  ababadar+V.ele.ACC.3.F.SG+IMPF+1+PL

obtemos

ababadávamo ababadar+V+IMPF+1+PL

acredito que isso funciona pros verbos do GLF que estão do DELAF-PB. para os outros verbos, aí precisaríamos estender a estratégia, mas pensamos nisso depois. seria importante colecionar os casos de divergência encontrados na execução do algoritmo sugerido (por ex. IMPF+1+PL), creio que isso possa ser útil pra lidar com os verbos "desconhecidos". eu poderia tranquilamente implementar esse algoritmo em Python, seria divertido, mas é melhor eu me concentrar no componente de estados finitos e no paper...

abraços Leonel

arademaker commented 6 years ago

testando antes de executar, a primeira parte grep -Ev ".*mo[[:space:]].*\+V\+[A-Z]+\+1\+PL" x*.pairs > verbs.pairs:

Aplicando no arquivo que veio de Freeling e Garcia, removemos 86306 pares:

$ wc -l verbs.diff.gfl diff-fica.gfl
  422878 verbs.diff.gfl
  336572 diff-fica.gfl
759450 total

Nos demais arquivos que vieram do DELAS ou foram produzidos pelas regras do Leonel, não existiam problemas, nada foi removido:

$ wc -l x??.pairs IQ3s.pairs er-verbs-SBJF3SG.pairs
  ...
1037706 total

$ wc -l verbs-fica
1037706 verbs-fica
odanoburu commented 6 years ago

os verbos devem ter 71 formas, depois do merge GFL vários verbos ficaram com 90+ formas. será que essa regra resolve o problema? será que ela remove algo que não deveria remover?

arademaker commented 6 years ago

Estas 86K formas removidas são apenas nas formas que vieram do Garcia+Freeling. Vc tem como responder esta sua pergunta usando seu código GF, certo? Já temos uma forma rápida de fazer este check de 71 formas por verbo?

odanoburu commented 6 years ago

@arademaker

Já temos uma forma rápida de fazer este check de 71 formas por verbo?

sim, https://github.com/LFG-PTBR/MorphoBr/issues/22#issuecomment-381765701

arademaker commented 6 years ago

Simplificando:

echo DELAS
grep --color=never -o -E "\t[^+]+\+V" *pairs | sort | uniq -c > forms.count
grep -v "71" forms.count | wc -l
awk 'BEGIN {MAIS=0;MENOS=0;ESPERADO=0} $1 > 71 {MAIS+=$1} $1 < 71 {MENOS+=$1} $1 == 71 {ESPERADO+=$1} END { print MAIS,MENOS,ESPERADO}' forms.count 
rm forms.count
echo

echo DELAS + GFL
grep --color=never -o -E "\t[^+]+\+V" *.{pairs,gfl} | sort | uniq -c > forms.count
grep -v "71" forms.count | wc -l
awk 'BEGIN {MAIS=0;MENOS=0;ESPERADO=0} $1 > 71 {MAIS+=$1} $1 < 71 {MENOS+=$1} $1 == 71 {ESPERADO+=$1} END { print MAIS,MENOS,ESPERADO}' forms.count
rm forms.count
echo

echo DELAS + GFL - filter
grep --color=never -Ev ".*mo[[:space:]].*\+V\+[A-Z]+\+1\+PL" verbs.diff.gfl > verbs.diff.gfl.filtrados
grep --color=never -o -E "\t[^+]+\+V" *.{pairs,filtrados} | sort | uniq -c > forms.count
awk 'BEGIN {MAIS=0;MENOS=0;ESPERADO=0} $1 > 71 {MAIS+=$1} $1 < 71 {MENOS+=$1} $1 == 71 {ESPERADO+=$1} END { print MAIS,MENOS,ESPERADO}' forms.count
rm forms.count verbs.diff.gfl.filtrados

retorna. G+FL adicionaram muitos casos de +71 formas. E o filtro do @leoalenc teve algum efeito mais ainda introduzimos muitos incompletos com G+FL (este números são as formas):

$ sh check.sh
DELAS
   15940
26449 159896 851361

DELAS + GFL
   31139
111137 496950 852497

DELAS + GFL - filter
105254 417521 851503
arademaker commented 6 years ago

Se trocar os contadores por linhas (ex: MENOS+=1 ao invés de MENOS+=$1) do forms.count temos o número por verbos (lemas, certo @odanoburu?). Ou seja, ao aplicar o filtro do @leoalenc temos menos 3 verbos do tipo (mais conjugações do que o esperado) e mais 17 verbos do tipo (menos conjugações do que o esperado) e menos 14 verbos com 71 conjugações.

$ sh check.sh
DELAS
   15940
359 15581 11991

DELAS + GFL
   31139
1328 29811 12007

DELAS + GFL - filter
1325 29828 11993
odanoburu commented 6 years ago

@arademaker vou fechar as outras issues relacionadas pra concentrarmos os esforços aqui, pode ser? #8 #22

arademaker commented 6 years ago

Issues #8 e #22 realmente são sobre DELAS apenas. Mas esta aqui envolve identificar o que pode ter vindo de 'lixo' de GFL.

odanoburu commented 6 years ago

agreed, mas o meio de diagnóstico e correção é igual, não?

arademaker commented 6 years ago

os experimentos do @fcbr com os corpus estão nos ajudando a pensar o que fazer com estes recursos G+FL. E este issue trata de decidirmos se conseguimos limpar estes dados deles e sua incorporação realmente melhoria do DELAS.

odanoburu commented 6 years ago

uma forma de tirar alguns erros seria remover as duplicatas considerando duplicata oq tem lema+TAGS igual

assim tirariamos todos os verbos do tipo falamo

mas ainda ficariamos com os lemas estranhos, tipo superior alto

(mas ai podemos pensar em tirar oq tiver form+TAGS igual, testando antes pra ver se 'e oq queremos)

leoalenc commented 6 years ago

@odanoburu me parece que a estratégia que você sugere eliminaria variantes legítimas como elegido e eleito

odanoburu commented 6 years ago

sim, de fato!

arademaker commented 6 years ago

Excelente observação @leoalenc ! Outra coisa para o artigo. Eu gostaria de conseguir identificar estes casos de 'variantes de formas legítimas'. Isto só ocorre com verbos ? Idealmente seria legal listar estes casos de mais de uma forma para uma mesma análise de um mesmo lema para que fosse possivel um humano separar inconsistência de recursos (issue #25) vs variantes legítimas .

leoalenc commented 6 years ago

@arademaker Até agora, os casos espúrios de variantes para a mesma combinação de lemas e etiquetas envolvem verbos que foram separados dos pronomes. Esses casos são bem conhecidos e bem descritos nas gramáticas do português. Além daquele programinha que eu sugeri, poderíamos, com base nessa descrição gramatical, elaborar vários filtros como aquele que eu propus, procurando por comprá de comprá-lo etc.

Existem, porém, casos legítimos de variantes, por exemplo aceitado e aceito. No caso dos nomes, vários substantivos em -ão têm vários plurais. Por exemplo: aldeão – aldeões, aldeães, aldeãos.

odanoburu commented 6 years ago

@leoalenc vou colocar aqui algumas mudanças que pensei em fazer, me diga se elas fazem sentido por favor!

leoalenc commented 6 years ago

@odanoburu boa iniciativa!

arademaker commented 6 years ago

@leoalenc disse em https://github.com/LFG-PTBR/MorphoBr/pull/45#issuecomment-385398610

acho que as formas erroneamente formatadas com pronomes ligados aos verbos sem separação por hífen e que, simultaneamente, apresentam o erro de formatação objeto da issue #43 sumiram.

grep -E "31" Delaf2015v04.dic > error31.dic
head !$
head error31.dic
abluir,abluir.V:W31
abluirlhe,abluir.V+PRO:W31
abluirlhes,abluir.V+PRO:W31
abluirme,abluir.V+PRO:W31
abluirnos,abluir.V+PRO:W31
abluirte,abluir.V+PRO:W31
abluirvos,abluir.V+PRO:W31
abnuir,abnuir.V:W31
abnuirlhe,abnuir.V+PRO:W31
abnuirlhes,abnuir.V+PRO:W31

Não consegui encontrar formas como, por exemplo, a seguinte:

abnuirlhe,abnuir.V+PRO:W31

@odanoburu vc pode checar isso?

arademaker commented 6 years ago

Este issue trata das formas verbais com pronomes que estavam sem hífen, certo? Precisamos fechar este issue antes do artigo.

odanoburu commented 6 years ago

@leoalenc a princípio eu acho ter corrigido todos os erros que apontei! desculpa não ter deixado isso claro, quando coloquei que o PR fechava as issues era por isso!

arademaker commented 6 years ago

Bem, para variar já estou perdido com tantas alterações em paralelo.. Me desculpem, não consigo acompanhar assim. Este issue pode ou não ser fechado?

odanoburu commented 6 years ago

não pode, @arademaker! esse último comentário que vc postou do Leonel era sobre erros no DELAF, e essa issue é sobre erros no GFL, certo? ainda não corrigimos todos esses erros..

analununes commented 3 years ago

O problema dessa issue foi tratado em #104.