Nomes Compostos - Classes Formais de Nomes Compostos | Download Scientific Diagram
Classes Formais de Nomes Compostos | Download Scientific Diagram

Como trabalhar com nomes compostos na prática

Nomes compostos são mais complicados do que a maioria das pessoas acha quando precisa processá-los em massa. A ideia básica é simples — um sobrenome formado por duas ou mais partes, como "Silva Santos", "Oliveira Fernandes" ou "Costa e Silva" —, mas na hora de lidar com bancos de dados, planilhas ou sistemas de cadastro, isso vira dor de cabeça rápido.

Eu passei uns dois anos resolvendo problemas de nomes compostos em sistemas de RH e cadastro de clientes antes de deixar de reclamar e construir um fluxo que funciona. Vou explicar como fazer.

O que você precisa entender sobre nomes compostos antes de começar

O erro mais comum é tratar o sobrenome como uma única string. Quando você tem "Maria da Conceição Ferreira dos Santos", um split simples por espaço te dá seis elementos, e você não sabe qual parte é o prenome, qual é o sobrenome composto, e onde termina uma coisa e começa outra. A regra geral que eu uso é a seguinte: a última palavra é sempre parte do sobrenome, mas as palavras anteriores podem ser partículas ("da", "de", "dos", "do", "e") ou sobrenomes compostos propriamente ditos. Partículas nunca se separam. "Da Conceição" é uma unidade. "Ferreira dos Santos" é outra. Juntas, formam o sobrenome completo.

Isso significa que para identificar o sobrenome composto corretamente, você precisa saber quais palavras são partículas e aplicar uma lógica de agrupamento a partir do final da string. O primeiro elemento à esquerda das partículas marca o início do sobrenome composto.

Como separar prenome de sobrenome composto

Vou passar o método que eu construí e que uso atualmente. Não é perfeito, mas resolve 95% dos casos que eu encontro no dia a dia.

Passo 1: Crie uma lista de partículas conocidas. No português, são basicamente: da, de, do, das, dos, e, Vieira, Almeida, Neto, Junior, Filho, Moreira, etc. Isso varia por região, então ajuste conforme sua base.

Passo 2: Faça o split da string completa por espaços. Para "João Pedro Alves Monteiro", você tem ["João", "Pedro", "Alves", "Monteiro"]. Passo 3: Percorra da direita para a esquerda. Enquanto encontrar partículas, inclua no sobrenome composto. Pare quando encontrar uma palavra que não é partícula — essa palavra e todas as que vieram antes dela são o prenome.

No exemplo "Ana Clara Silva Mendes": split dá ["Ana", "Clara", "Silva", "Mendes"]. Partículas = []. Nada para agregar. Sobrenome = "Silva Mendes". Prenomes = "Ana Clara". Resultado correto. Outro exemplo: "Carlos Eduardo da Costa e Silva". Partículasadas: "da", "e". Agregando da direita: "Silva", "e Silva", "da Costa e Silva". Sobrenome composto = "da Costa e Silva". Prenomes = "Carlos Eduardo".

Meu problema real com nomes compostos que ninguém avisa

Eu tive um caso específico em que um sistema de cadastro ia gerar campos separados de nome e sobrenome, e um usuário "Luiz Fernando Guedes de Oliveira Júnior". O "Júnior" não é partícula, é sufixo genealógico, mas ele estava no final da string. Se eu tratasse como parte do sobrenome, o sobrenome ficaria "Guedes de Oliveira Júnior", que tecnicamente está correto para fins de ordenação, mas o campo "sobrenome" que o sistema gera fica estranho quando você ordena alfabeticamente por sobrenome — todo mundo com sufixo "Júnior" acabava agrupado junto de forma confusa. A solução que eu achei foi adicionar uma camada extra: após identificar o sobrenome composto, verificar se a última palavra é um sufixo genealógico conhecido (Júnior, Neto, Filho, III, IV, etc.). Se for, separar em um campo diferente chamado "sufixo". Isso isolou o problema e deixou a ordenação funcionando como esperado.

Pegadinhas avançadas que começam dão trabalho

Existem três coisas que quem está começando com nomes compostos raramente considera, e que vão te prejudicar se você ignorar:

Hífen: Nomes compostos com hífen, como "Moura-Ferreira" ou "Silva-Espanha", quebram a lógica de split por espaço porque a palavra com hífen conta como um único token. Você precisa tratar o hífen como parte integrante do sobrenome, não como separador. Nesse caso, "Moura-Ferreira" é um único elemento do sobrenome composto, e não duas partes separáveis. Preposição dupla: "Da" + "Conceição" funciona bem, mas "Madalena da Silva" tem uma preposição no meio do prenome. Nesse caso, a partícula "da" está entre dois elementos que parecem prenome. A lógica precisa considerar contexto: se a partícula está entre duas palavras maiúsculas no início da string, provavelmente faz parte do prenome. Só quando a partícula aparece seguida de uma palavra minúscula depois de um sobrenome maiúsculo é que ela pertence ao sobrenome composto.

Variabilidade regional: Em alguns estados do Nordeste, por exemplo, é comum o sobrenome da mãe vir antes do sobrenome do pai de forma sistemática, o que inverte a ordem tradicional que muitos scripts assumem. Se sua base tem dados de todo o Brasil, um script rígido vai errar sistematicamente em uma fatia grande dos registros.

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

Casos onde nomes compostos simplesmente não funcionam bem

Seu sistema precisa lidar com nomes compostos de forma perfeita? Não adianta muito. Alguns cenários são praticamente impossíveis de resolver com 100% de acurácia sem intervenção humana:

Para esses casos, a recomendação honesta é: não tente automatizar tudo. Use o script para processar o grosso dos registros, mas mantenha um campo livre para revisão manual e um log de casos ambíguos que precisam de decisão humana. Eu gasto cerca de 15 minutos por dia revisando esses logs e o resultado fica razoavelmente limpo em poucas semanas.

Download do fluxograma de processamento

Eu deixei um fluxograma em PDF que resume todo o processo de decisão — desde a entrada da string até a separação final em prenome, sobrenome composto e sufixo. Ele cobre os casos padrão, os casos com partículas, os casos com hífen, e os casos problemáticos que eu mencionei acima. O arquivo está disponível para download no repositório do projeto.

Você também pode baixar a versão atualizada do script Python que eu mantenho, que implementa exatamente a lógica descrita aqui. Ele lê arquivos CSV com colunas de nome completo e exporta com as colunas separadas, além de gerar um relatório dos casos em que a lógica não conseguiu classificar automaticamente.

Resumo rápido de nomes compostos para consulta

Se você só quer um checklist rápido, aqui vai: partículas known (da, de, do, das, dos, e), sufixos genealógicos (Júnior, Neto, Filho, II, III, IV), partículas duplas (dal, della, di, lo, etc. para nomes italianos), hífen como delimitador interno e não separador, e sempre tratar da direita para a esquerda. Qualquer outro detalhe exige análise caso a caso.

O processo leva de 10 a 15 minutos para configurar no começo, mas depois roda automático. Se sua base tiver menos de 50 mil registros, dá para fazer sem script, manualmente com ajuda de filtros. Acima disso, o script compensa rápido.