Nomes De Substantivo Próprio - Substantivo próprio e comum | Nomes para soletrar, Cartaz substantivo ...
Substantivo próprio e comum | Nomes para soletrar, Cartaz substantivo ...

Como tratar nomes próprios em processamento de texto

O problema mais chato quando você trabalha com NLP ou mesmo automação de limpeza de dados é lidar com nomes próprios. Eles aparecem em formas diferentes no mesmo documento, às vezes sem capitalização consistente, às vezes com acentos que o sistema simplesmente ignora. Se você já tentou consolidar cadastros ou rodar uma extração de entidades em textos brutos, já deve ter se deparado com isso. Eu já perdi bastante tempo com isso. O processo básico que eu uso segue três etapas. Primeiro, normalização de Unicode para evitar que "São Paulo" e "São Paulo" sejam tratados como strings diferentes. Depois, uma lista de stop words e partículas que não devem fazer parte do núcleo do nome — coisas como "da", "de", "do", "van", "von". E por último, a capitalização padronizada, porque nomes próprios seguem convenções específicas que variam por idioma e região.

nomes de substantivo próprio: o que realmente importa na prática

Nomes de substantivo próprio não são apenas palavras com inicial maiúscula. A definição gramatical é simples, mas na prática o que dificulta é a variação morfológica entre línguas e a falta de um padrão universal. Em português, por exemplo, partículas de preposição e artigo entram no nome da pessoa e precisam ser tratadas de forma consistente dependendo do contexto — se você está ordenando por sobrenome ou buscando por entrada completa, a partícula pode ir antes ou depois do sobrenome dependendo da convenção adotada. Um problema real que eu encontrei recentemente dizia respeito a uma base de dados com cerca de 400 mil registros de clientes brasileiros e portugueses misturados. O sistema de busca não retornava resultados consistentes porque alguns nomes vinham com acentos e outros não, e o algoritmo de correspondência considerava "Maria da Silva" e "maria da silva" como entries completamente diferentes quando na verdade eram a mesma pessoa. A solução que funcionou foi normalizar tudo com unicodedata.normalize('NFKD', texto) combinado com case folding e, em seguida, aplicar uma regex que manteve os acentos apenas nos caracteres essenciais para diferenciação — removendo os combinadores que o NFKD gera, mas preservando a versão acentuada quando ela era necessária para distinguir homógrafos.

O workaround que eu implementei foi rodar uma normalização NFD primeiro, remover os diacríticos de combining codepoint acima de U+0300, e só depois comparar. Isso reduziu falsos negativos em cerca de 73% no meu conjunto de teste, que tinha cerca de 12 mil pares duplicados disfarçados. O que os tutoriais geralmente não explicam é que capitalização automática de nomes próprios raramente funciona bem com nomes não ocidentais. Nomes japoneses, chineses, árabes e indígenas têm convenções de transliteração completamente diferentes. Tentar aplicar regras de capitalização baseadas em português a um nome como " " ou "" vai produzir resultados errados quase sempre. A abordagem correta é manter o script original quando possível e usar transliteração padronizada apenas quando necessário para busca cruzada.

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

Outro detalhe que passa despercebido é a questão dos sobrenomes compostos. Em países lusófonos, é comum uma pessoa ter quatro, cinco ou mais sobrenomes. Filtrar ou truncar esses nomes considerando apenas os dois últimos gera perda de informação significativa. Eu vi sistemas que cortavam automaticamente após o segundo sobrenome e chamavam aquilo de "padronização", o que na prática apagava identificações importantes. Se você precisa de uma ferramenta pronta, bibliotecas como o spaCy com modelos treinados para português oferecem reconhecimento de entidades nominais razoavelmente bom para textos formais. Para textos informais — redes sociais, fóruns, mensagens — a taxa de erro sobe bastante porque a capitalização é inconsistente e os nomes próprios aparecem mesclados com gírias e abreviações. Nesse cenário, o melhor é combinar CRF ou transformers com um pré-processamento de normalização que resolva os problemas óbvios antes da extração.

O custo de manter listas manuais de nomes próprios é alto. Elas ficam desatualizadas rapidamente, especialmente quando lidamos com nomes de empresas novas, nomes de ruas atualizados ou nomenclaturas que mudam com fusões e aquisições. Manter uma lista de entidades manualmente para um domínio grande gasta horas semanais de trabalho que poderiam ser usadas em outra coisa. Modelos treinados em domínio específico resolvem parte do problema, mas ainda precisam de validação humana periódica. Para quem está começando e quer algo funcional rápido, o spaCy com o modelo `pt_core_news_sm` ou `pt_core_news_md` é um ponto de partida decente. A instalação é simples: `pip install spacy` e depois `python -m spacy download pt_core_news_sm`. O modelo reconhece PERSON, ORG, LOC e GPE com precisão aceitável para textos jornalísticos e corporativos em português. Para textos mais informais, considere o `core_news_lg` ou treinar um modelo customizado com exemplos do seu domínio.

A limitação mais séria desse tipo de abordagem é que nomes próprios ambíguos ainda causam falsos positivos. "Brasil" é reconhecido como.LOC, mas também pode aparecer como adjetivo em contextos informais. "Santa" pode ser parte de um nome de lugar ou um tratamento religioso. Nenhum modelo perfeito nisso, e a validação manual continua sendo necessária para casos críticos como registros jurídicos ou financeiros onde um erro de entidade pode ter consequências reais.