filtra documento via aspell

4

Eu preciso de um documento txt limpo e minha primeira abordagem é usar o aspell. O problema é que eu preciso em lote, sem modo interativo. Todo arquivo txt é canalizado para o aspell e deve ser retornado um novo documento com as palavras não-diccionárias excluídas.

Eu encontrei apenas o comportamento inverso: liste as palavras não-dicionário usando

cat $file | aspell list | sort -u -f 

O aspell é a ferramenta correta para obter essa pasta de documentos limpa? E quanto à substituição automática de palavras com erros ortográficos? (usando um arquivo de lista predefinido)

    
por jomaweb 12.05.2016 / 11:51

1 resposta

2
sed -E -e "s/$(aspell list <file | sort -u | paste -s -d'|' |
               sed -e 's/^/\b(/; s/$/)\b/' )//g" \
    file > newfile

Isso usa a substituição de comando $(...) para inserir a saída de aspell list <$file em uma operação de busca e substituição sed .

A saída de

aspell também é única classificada e paste é usado para unir cada linha com | . Por fim, ele é enviado por meio de sed para adicionar \b âncoras de limite de palavras, além de abrir e fechar parênteses. Tudo o que constrói uma expressão regular estendida válida como \b(word1|word2|word3|...)\b para usar como o regexp de pesquisa no comando sed search and replace.

Você pode testar o resultado de todo o comando com, por exemplo, diff -u file newfile

AFAIK, aspell não tem um modo de correção automática. Esta é provavelmente uma boa coisa.

    
por 12.05.2016 / 12:04