Named Entity Recognition (NER)
O reconhecimento de entidades nomeadas (NER) identifica nomes de pessoas, organizações, lugares, datas e valores em textos e classifica cada um de acordo com o tipo de entidade.
O reconhecimento de entidades nomeadas (NER) é uma tarefa de processamento de linguagem natural (NLP) que encontra trechos de texto que nomeiam elementos do mundo real e atribui a cada trecho um tipo, como pessoa, organização, local, data ou valor monetário. Em «Marie Curie ensinou na Universidade de Paris a partir de 1906», um modelo de NER marca «Marie Curie» como pessoa, «Universidade de Paris» como organização e «1906» como data. Isso transforma e-mails, relatórios, contratos e transcrições em registros estruturados que os mecanismos de busca, os grafos de conhecimento, as ferramentas de análise e as ferramentas de privacidade podem utilizar. As Message Understanding Conferences da década de 1990 tornaram o NER uma tarefa padrão de avaliação, e a tarefa compartilhada CoNLL-2003 definiu os quatro tipos que ainda são usados como referência: pessoa, local, organização e miscelânea. Esquemas maiores, como o OntoNotes 5.0, definem 18 tipos, incluindo datas, quantidades, produtos e eventos.
Como funciona o NER#
O NER costuma ser formulado como rotulagem de sequências. Um tokenizador divide o texto em tokens, e o modelo atribui a cada token uma etiqueta no esquema BIO: B- marca o início de uma entidade, I- um token dentro dela e O um token que não pertence a nenhuma entidade, mantendo assim nomes com várias palavras, como «Universidade de Paris», unidos. Este código transforma as etiquetas previstas pelo modelo em trechos de entidades:
# Token-level BIO tags, as predicted by an NER model for one sentence
tokens = ["Marie", "Curie", "taught", "at", "the", "University", "of", "Paris", "from", "1906", "."]
tags = ["B-PER", "I-PER", "O", "O", "O", "B-ORG", "I-ORG", "I-ORG", "O", "B-DATE", "O"]
# Merge each B- tag with the I- tags that follow it into one entity span
entities = []
for token, tag in zip(tokens, tags):
if tag.startswith("B-"):
entities.append([token, tag[2:]])
elif tag.startswith("I-") and entities and entities[-1][1] == tag[2:]:
entities[-1][0] += f" {token}"
print(entities)Ele imprime [['Marie Curie', 'PER'], ['University of Paris', 'ORG'], ['1906', 'DATE']], a saída estruturada que os sistemas posteriores armazenam e consultam.
Os modelos que preveem as etiquetas mudaram ao longo de três décadas. Os primeiros sistemas usavam regras escritas manualmente e gazetteers, listas de nomes conhecidos. Rotuladores estatísticos, como os modelos ocultos de Markov e os campos aleatórios condicionais, aprendiam com texto anotado usando características criadas manualmente, como maiúsculas e sufixos de palavras. Em 2016, redes LSTM bidirecionais com uma camada de saída CRF passaram a aprender essas características por conta própria, seguidas por transformers ajustados: o BERT alcançou uma pontuação F1 de 92,8 no conjunto de teste CoNLL-2003. A autoatenção permite que esses modelos usem a frase inteira como contexto, de modo que «Apple» seja marcada como organização em «A Apple lançou um novo telefone» e não seja marcada em «Comi uma maçã». Os sistemas são avaliados com precisão, revocação e pontuação F1 ao nível da entidade, sendo que uma previsão só conta se tanto o trecho quanto o tipo corresponderem exatamente à referência.
Os modelos mais recentes abandonam o conjunto fixo de etiquetas. O GLiNER, um transformer bidirecional compacto, recebe nomes de tipos de entidade como entrada e encontra trechos correspondentes a tipos que nunca viu no treinamento; os modelos de linguagem grandes extraem entidades quando recebem uma instrução com um esquema e são solicitados a produzir saídas estruturadas.
NER vs. tarefas relacionadas#
- Vinculação de entidades: conecta cada menção reconhecida a uma entrada específica de uma base de conhecimento, como a Wikidata, para que «Paris» seja identificada como a cidade ou como Paris Hilton.
- Extração de relações: identifica como as entidades estão conectadas, por exemplo, qual pessoa trabalha para qual organização, muitas vezes com base na saída do NER.
- Análise de sentimentos: mede a opinião expressa por um texto. O NER identifica de que trata uma avaliação, e a análise de sentimentos mede o que o autor sente em relação a isso.
- Detecção de objetos: a contraparte do NER em imagens: localiza regiões de uma imagem e atribui uma classe a cada uma.
A ideia de rótulos abertos do GLiNER tem uma contraparte direta na visão computacional: o YOLOE-26, a versão de vocabulário aberto do Ultralytics YOLO26, recebe nomes de classes como instruções de texto no momento da inferência e detecta e segmenta objetos dessas classes, inclusive classes que não fazem parte das categorias de treinamento.
Aplicações no mundo real#
O processamento de documentos combina NER com reconhecimento óptico de caracteres (OCR): faturas, contratos e formulários são digitalizados, o OCR lê o texto e o NER extrai campos como fornecedor, data e valor total para sistemas de contabilidade e conformidade. Os pipelines de produção encaminham previsões incertas para pessoas e aprendem com as correções delas:
- Remoção de dados pessoais (PII): ferramentas de privacidade como o Presidio, de código aberto da Microsoft, usam NER junto com regras de padrões para localizar e ocultar nomes, endereços e números de contas antes de compartilhar o texto ou utilizá-lo no treinamento.
- Mineração de textos clínicos: o NER clínico extrai medicamentos, dosagens, sintomas e diagnósticos das anotações médicas para que hospitais e pesquisadores possam pesquisar e analisar registros em grande escala.
- Pesquisa e recomendações: sites de notícias e plataformas de conteúdo marcam artigos com as pessoas, empresas e lugares mencionados, possibilitando pesquisas por entidade e sugestões de notícias relacionadas.










