Como montar um filtro de palavrões em português que funciona de verdade
A primeira coisa que a maioria das pessoas faz errado é usar listas prontas da internet. Funciona para o básico, mas quebra na primeira frase com gíria regional ou neologismo. Eu passei seis meses refazendo o filtro de um cliente depois que ele foi rejeitado em três apps porque as palavras proibidas não cobriam variações de sotaque nordestino e jargões de favela que apareciam nos comentários.
A diferença entre palavra de baixo calão ou escalão no contexto de moderação
Quando você ouve esses termos sendo usados no mesmo ambiente, provavelmente está lidando com dois conceitos que acabaram se misturando por incompetência de comunicação. Palavra de baixo calão é qualquer termo considerado impróprio pelo padrão social vigente. Escalão, nesse contexto, se refere ao nível de severidade com que uma plataforma ou sistema trata essas palavras. Não é um sinônimo. É uma camada de classificação sobre o vocabulário proibido. A confusão acontece porque ferramentas de moderação genéricas tratam tudo como se fosse a mesma coisa: palavra errada é palavra errada, ponto. Mas na prática você precisa saber distinguir o que é xingamento isolado do que é discurso de ódio, porque o tratamento técnico e legal é completamente diferente. Um moderador automatizado que aplica o mesmo escalão para os dois vai bloquear coisas inúteis ou, pior, deixar passar o que realmente deveria ser removido.
Eu aprendi isso na dor quando um cliente me pediu para implementar um filtro que "bloqueasse tudo impróprio". Implementei. Duas semanas depois ele ligou dizendo que os usuários estavam reclamando porque palavras como "drogado" em contextos jornalísticos e "culhão" em contextos artísticos estavam sendo interceptados no mesmo pipeline. A correção não foi aumentar a lista. Foi separar o vocabulário em escalões e aplicar regras contextuais antes de qualquer bloqueio automático.
O problema real com listas de palavrões em português
Listas estáticas são o primeiro erro. O português brasileiro varia muito entre regiões e subculturas. O que é palavrão em São Paulo pode ser expressão cotidiana no Rio, e o que é inofensivo no Sul pode ser extremamente ofensivo no Norte. Além disso, a língua evolui rápido. Palavras que estavam na lista há dois anos já não são mais usadas, e novos termos surgem todo mês em grupos de WhatsApp e TikTok. Uma lista fixa tem manutenção perpétua. Você gasta mais tempo atualizando do que ganhando com a precisão. O workaround que eu uso hoje é transformar a lista em um sistema dinâmico com pesos. Cada palavra recebe um score baseado no contexto em que aparece, na frequência com que é citada em textos neutros, e no nível de ofensividade reportado pelos usuários. Isso reduz drasticamente os falsos positivos sem precisar de um modelo de linguagem pesado rodando o tempo todo.
Como estruturar o filtro passo a passo
Comece definindo os escalões. Eu recomendo pelo menos três: leve, médio e forte. Palavras de escalão leve são terms que podem aparecer em contextos aceitáveis com certa frequência. Escalão médio são termos geralmente impróprios mas que às vezes são usados de forma não-ofensiva. Escalão forte são termos que raramente têm uso legítimo e quase sempre indicam conteúdo problemático. Depois disso, você precisa coletar dados reais. Pegue amostras de texto do seu produto: comentários, chats, descrições de perfil. Conte quantas vezes cada palavra aparece em contextos marcados como impróprios versus contextos normais. Isso te dá uma taxa de falsos positivos estimada para cada termo. Uma palavra que aparece 100 vezes e só 5 são impróprias não deve estar no escalão forte, mesmo sendo considerada palavrão.
👉 Clique no botão abaixo para saber mais sobre o assunto!
A parte técnica em si é simples. Você carrega a lista pesada, aplica regex com normalização Unicode para pegar variantes ortográficas (cuzão, coirão, kusau), e depois roda uma camada de contexto usando bigramas ou trigramas. Se "cuzao" aparecer junto com "meu amigo" ou "cara bom", o score cai. Se aparecer junto com "sai", "vai", "porra", o score sobe. O limiar de bloqueio fica configurável por tipo de usuário ou por configuração da conta. O ganho real vem na fase de ajuste fino. Eu costumo ligar um log temporário onde cada decisão de bloqueio é registrada com o texto completo e o score calculado. Depois de uma semana, reviso os falsos positivos e ajusto os pesos individualmente. Esse processo normalmente leva entre 3 e 5 horas na primeira vez. Nas revisões seguintes, entre 30 minutos e 1 hora. O filtro fica estável depois de aproximadamente duas semanas de operação.
Onde a maioria falha e como evitar
O erro mais comum é não normalizar o texto antes de comparar. Usuários escrevem "putz", "puta", "pûta", "pùta", "pU t a". Se você não tratar isso com normalização de acentos, remoção de espaços e padronização de maiúsculas, seu filtro vai deixar passar metade das variações óbvias e bloquear metade do que deveria. A normalização resolve isso em uma linha de código. O segundo erro é não prever evasão por rebuscamento. Quando um filtro fica conhecido, os usuários começam a escrever "pu ta", "p..u..t..a", "put@". Seu sistema precisa detectar padrões similares, não apenas corresponder strings exatas. Um approach simples é remover separadores não alfanuméricos entre letras e comparar novamente. Não é perfeito, mas cobre 90% dos casos de tentativa de burla básica.
O terceiro erro, e o mais grave, é não ter um canal de apelação. Bloquear automaticamente gera frustração. Usuários que foram bloqueados por engano não vão simplesmente aceitar. Eles vão criar contas alternativas, postar no Twitter reclamando, ou vandalizar o produto de outra forma. Ter um formulário simples de recurso com resposta em até 48 horas reduz drasticamente a rotatividade por causa de falsos positivos.
Limitações que ninguém conta
Um filtro baseado em palavras nunca vai ser 100% preciso. Pontos de linguagem como ironia, sarcasmo e uso artístico de palavrões simplesmente não são capturados por correspondência de strings. Níveis mais altos de precisão exigem modelos de linguagem treinados, o que aumenta o custo computacional e a complexidade de manutenção. Se o seu volume for baixo, um sistema com pesos e contexto manual resolve. Se for alto, considere um modelo fine-tuned com dados rotulados do seu domínio específico. A outra limitação prática é a velocidade. Processar cada mensagem com análise de contexto e normalização completa adiciona latência. Em chat em tempo real com milhares de usuários simultâneos, isso pode ser problema. Uma solução intermediária é fazer pré-filtragem rápida com correspondência exata de palavras de escalão forte, e só aplicar a análise contextual nas mensagens que passam nesse primeiro crivo. Isso reduz o processamento em cerca de 70% sem sacrificar significativamente a detecção.
Conclusão prática sobre palavra de baixo calão ou escalão
O que funciona na prática é tratar a moderação como um sistema de camadas, não como uma lista definitiva. Comece com um vocabulário base dividido em escalões de severidade, aplique normalização e análise contextual, monitore os falsos positivos semanalmente e ajuste os pesos conforme a linguagem do seu usuário muda. Ferramentas prontas existem, mas nenhuma vai se ajustar sozinha ao contexto específico do seu produto. O trabalho manual de calibration é inevitável, e quem tenta ignorar essa etapa geralmente termina refazendo o sistema inteiro depois de três meses de uso.