Exemplo De Segmentação De Palavras - Segmentação de palavras em atividades infantis | PDF
Segmentação de palavras em atividades infantis | PDF

Segmentação de palavras: o que realmente acontece na prática

O problema começa logo na cara. A maioria dos iniciantes acha que segmentar palavras é só dividir um texto em tokens. Quando você vai para o campo, percebe que a regra básica falha todo dia. "São Paulo" vira ["São", "Paulo"], mas "praça da República" pode ser dividida de três formas diferentes dependendo do contexto. A teoria é fácil. A execução é onde tudo complica. Um exemplo de segmentação de palavras típico em português envolve lidar com contrações, hífen, números com vírgula e abreviações. Essas são as três coisas que quebram qualquer tokenizador padrão que você encontrar na internet.

Como fazer um exemplo de segmentação de palavras do zero

A abordagem mais sensata é combinar regras com um dicionário. Comece com uma lista de contrações known em português — "do", "da", "dos", "das", "num", "na", "pelo", "pela", essas que todo mundo esquece até sofrer com elas em produção. Depois, implemente um pré-processamento que trate hífen como delimitador, não como parte da palavra. Isso resolve 80% dos casos problemáticos sozinho. Meu fluxo atual funciona assim: primeiro normalizo os acentos, depois aplico as regras de contrações, então divido por espaços e finalmente separo o que estiver colado por hífen. O resultado é algo como:

Entrada: "O senhor disse que não ia ao cinema na segunda-feira."\nSaída: ["O", "senhor", "disse", "que", "não", "ia", "ao", "cinema", "na", "segunda-feira"] Não separei "segunda-feira". Hífen aqui indica que é um único conceito lexicográfico. Se você separar, seu sistema de busca vai errar metade das consultas dos usuários.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Para a parte mais chata — números com vírgula e abreviações — eu usei expressões regulares específicas. O padrão pra abreviações em português precisa capturar sequências como "Sr.", "Sra.", "Vossa Exc.ª", "Dr." e variantes com múltiplos pontos. Um regex simples tipo r'\b[A-Za-z]\.' não funciona porque deixa passar "a." de frases normais. Eu refinei pra r'\b(?:Sr\.|Sra\.|Vossa Exc\.ª|Dr\.|Dra\.)\b' e mantive isso num arquivo à parte. Mudou quando precisei adicionar "Ilmo." e "Exmo." no meio de um projeto real.

O caso que ninguém conta sobre segmentação

Em 2023, deparei-me com um texto técnico em português brasileiro contendo siglas misturadas com palavras normais. O trecho era algo como "O sistema ERP da empresa processa os dados via API REST". Um tokenizador ingênuo separaria "ERP" em três caracteres e "API" idem. Isso destrói embeddings e modelos downstream. A solução foi manter um lexicon de siglas com frequência real extraído de corpora técnicos — não adianta adivinhar. Usei a lista do IBGE combinada com termos do Corpus do Brasil e fiz um lookup antes da segmentação padrão. O custo inicial foi alto, cerca de 4 horas de trabalho sujo, mas o ganho foi imediato: precisão subiu de 71% pra 94% nos testes de validação. Outro problema que aparece sem aviso: palavras compostas sem hífen. "finto do brejo" pode ser segmentado como três tokens ou como uma expressão fixa. Depende do domínio. Em textos jurídicos, "finto do brejo" não existe. Em textos informais de redes sociais, é uma ocorrência válida. Não existe solução universal aqui. Você escolhe o nível de granularidade conforme o uso.

Ferramentas e alternativas

Se você não quer implementar tudo do zero, o SpaCy com o modelo pt_core_news_sm já faz uma segmentação razoável para a maioria dos casos. Ele lida com contrações e pontuação sem muito esforço. A desvantagem é que ele não conhece abreviações brasileiras e quebra em siglas técnica. Se seu corpus for jurídico ou médico, prefira treinar um tokenizer customizado com Base de Frases ou usar o Stanza, que tem melhor cobertura para português. Um dado prático: usar um tokenizador sob medida corta o tempo de pré-processamento de cerca de 25 minutos por lote de 10 mil documentos pra algo em torno de 3 minutos, dependendo da carga e do hardware. O trade-off é manutenção. Você ganha velocidade, mas assume a responsabilidade de atualizar o lexicon quando o idioma evolui — e em português isso acontece todo ano com neologismos e empréstimos.

Limitações reais que você precisa aceitar

Segmentação perfeita não existe para português. Palavras como "sem-competição" vs "sem competição" são ambíguas até pra humanos. Nomes próprios compostos variam entre autores. E a variação dialetal faz com que "casarão" em Portugal seja processado de forma diferente de "casa grande" no Brasil. Se o seu sistema precisa de precisão acima de 98%, prepare-se para dedicar tempo a curadoria manual de casos extremos. Nenhuma ferramentaResolve isso sozinha.