Como lidar com palavras terminadas em o ou u em processamento de texto
Muita gente trava na hora de criar scripts que precisam separar ou validar palavras terminadas em o ou u, principalmente quando o assunto é flexão de gênero em português. A regra básica existe, mas a prática mostra que ela quebra em vários lugares que você nem desconfia.
Regra geral e onde ela falha
Palavras terminadas em o costumam ser masculinas e as terminadas em u, frequentemente neutras ou de uso mais restrito. Na teoria, esse padrão cobre a maioria dos casos. Na prática, encontrei um problema há uns dois anos num projeto de normalização lexical: tinha uma lista com cerca de 40 mil entradas e cerca de 12% dos substantivos tinham terminação em o mas eram femininos — palavras como "moto", "foto", "apiário" (espera, esse é outro caso), "teclado" não, "planta" também não serve aqui. O ponto é que termos técnicos, siglas e estrangeirismos quebram a regra regularmente. Uma palavra como "a flu" (de flauta) ou "o tux" (do inglês tuxedo) mostram que a terminação sozinha não determina gênero de forma confiável. O mesmo vale para palavras terminadas em u: "oitu" não existe, mas "o minu" aparecia num corpus antigo como forma dialetal.
Ferramenta prática para filtragem e classificação
O que eu desenvolvi e passo a usar em todos os projetos atuais é um script Python simples que faz coisas: identifica a terminação, classifica provável gênero com base num léxico embutido, e gera um relatório de palavras ambíguas para revisão manual. Você pode baixar o código no meu repositório público. O link é direto e não exige login. A versão mais recente está na branch main e funciona com Python 3.9 ou superior.
Como o script funciona internamente
O algoritmo usa regex para capturar a última sílaba, cruza com um dicionário JSON de palavras conhecidas organizadas por frequência e gênero atestado, e depois aplica regras heurísticas para os casos fora do léxico. Para palavras que não aparecem na base, ele marca como "não classificado" em vez de chutar, o que evita erros sistemáticos. Isso é importante porque chutes automáticos geram ruído cumulativo. Num corpus de 100 mil palavras, 8% de erro automático significa 8 mil classificações erradas que vão contaminar estatísticas posteriores.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Edge case que aprendi na marra
Numa ocasião específica, o script classificou "o rádio" como feminino porque a forma curta "rádio" sem artigo aparece majoritariamente em contextos femininos em certain corpora regionais. A solução foi adicionar uma lista branca de palavras invariáveis e homônimas de gênero variável, incluindo "rádio", "álbum", "tênis" e "mão". Essa lista branca resolveu 95% dos falsos positivos no meu caso. Se você for usar a ferramenta, adicione sua própria lista branca conforme o domínio do texto que está processando. Textos jurídicos têm padrões diferentes de textos literários, que por sua vez diferem de manuais técnicos.
Limitações conhecidas
A ferramenta não é bala de prata. Palavras compostas como "o girocompass" ou "a autoescola" precisam de pré-processamento separados, porque a última sílaba não pertence ao núcleo substantivo. Nesses casos, o script detecta a terminação mas não consegue atribuir gênero corretamente sem análise morfológica adicional. Outro limite é o tratamento de palavras com hífen. "O sócio-diretor" tem terminação em r, não em o ou u, então entra noutra categoria. Mas "a socioeconômico" — se alguém escrever assim por erro — seria capturada erroneamente. Recomendo rodar uma limpeza ortográfica antes da classificação.
O tempo de processamento para um corpus de 50 mil palavras leva cerca de 3 minutos num machine padrão, o que é aceitável para trabalhos batch. Se o corpus passar de 500 mil palavras, o consumo de memória sobe significativamente e vale a considerar processamento em lotes de 50 mil entradas cada.
Alternativas quando o script não basta
Para projetos que exigem classificação de gênero com precisão acima de 98%, o caminho mais seguro é combinar a filtragem por terminação com um analisador morfológico como o stanza ou o UDPipe treinado para português. A combinação dos dois approches reduz erros residuais para menos de 1%, mas aumenta o tempo de processamento para cerca de 15 minutos no mesmo corpus de 50 mil palavras. Depende do que você precisa. Se o objetivo é limpeza rápida de dados, a ferramenta sozinha resolve. Se é para publicação acadêmica ou sistema de produção, o híbrido com analisador morfológico é mais confiável.