Closed analununes closed 3 years ago
por favor, tentar explicar o problema e propor solução, documentando, antes de implementar.
por favor, tentar explicar o problema e propor solução, documentando, antes de implementar.
@arademaker, o problema:
@arademaker, para cada forma, o algoritmo classifica como regular ou irregular e produz a saída correspondente. No caso acima, quando assente foi analisado a saída produzida foi:
assentado PAST-PART-SUFFIX assentar assente PAST-PART-SUFFIX assentar
que corresponde à forma regular e à forma irregular e individualmente está certo.
A saída produzida para a forma assento também está individualmente certa, forma regular e forma irregular:
assentado PAST-PART-SUFFIX assentar assento PAST-PART-SUFFIX assentar
O problema é que a entrada regular
assentado PAST-PART-SUFFIX assentar
deveria ocorrer apenas uma vez na tabela, ou seja, as duas saídas juntas deveriam ser:assentado PAST-PART-SUFFIX assentar assente PAST-PART-SUFFIX assentar assento PAST-PART-SUFFIX assentar
Acredito que isso possa ser resolvido adicionando um filtro de entradas únicas à tabela de irregulares.
Não entendi
que corresponde à forma regular e à forma regular e individualmente está certo.
Além disso, filtrar a saída removendo repetições é jogar a sugeria para debaixo do tapete né? Não seria melhor achar a fonte do problema?
Finalmente vc disse
No caso acima, quando assente foi analisado
O que significa isso? Na primeira versão do código vc recebia entradas do MorphoBr, agrupava por lemma e tentava classificar entre verbos regulares e irregulares. O que seria analisar a forma flexionada "assente"?
Não entendi
que corresponde à forma regular e à forma regular e individualmente está certo.
Além disso, filtrar a saída removendo repetições é jogar a sugeria para debaixo do tapete né? Não seria melhor achar a fonte do problema?
Finalmente vc disse
No caso acima, quando assente foi analisado
O que significa isso? Na primeira versão do código vc recebia entradas do MorphoBr, agrupava por lemma e tentava classificar entre verbos regulares e irregulares. O que seria analisar a forma flexionada "assente"?
@analununes, concordo com @arademaker, acho que adicionar filtro não fica muito legal. Acho que o problema pode ser resolvido procedendo como sugeri lá no início: agrupar todas as formas associadas a um lema, ou seja, construir uma estrutura do tipo dicionário com o lema como chave e uma lista de pares (forma,features) como valor.
No commit d9421691be0860d291d83dbfa550de774a309b45 apliquei a função nub na saída de cada grupo de formas associadas a um lema para remover as possíveis entradas duplicadas.
concatMap ((\k morpho (x,ys) -> nub $ concatMap (aux x k morpho) (sortOn snd $ sortOn fst ys)) m (M.fromList xs)) xs
Bom vc seguiu fazendo o filtro no final do processo, diferente do que falamos nos comentários anteriores né?
Bom vc seguiu fazendo o filtro no final do processo, diferente do que falamos nos comentários anteriores né?
@arademaker, as saídas já estavam agrupadas por lema, que era a sugestão do @leoalenc. Fiz o filtro logo depois de gerar as saídas de cada grupo, não seria possível fazer de outra maneira sem modificar muito o algoritmo, alterando a função isRegular
, o que me parece desnecessário. Como dito no artigo, ao aplicar a função isRegular
a uma entrada existem três saídas possíveis, uma delas inclui a forma regular, isso não depende das saídas das outras formas.
Em MorphoBr/issues/111 @leoalenc disse: