GLiNER: Modelo generalista para reconhecimento de entidades nomeadas usando Transformer bidirecional
Reconhecimento de Entidades Nomeadas (NER) é uma importante tarefa de Processamento de Linguagem Natural (NLP) que identifica e classifica entidades como nomes, locais e organizações em texto. Isso permite a extração de informações estruturadas para várias aplicações. O NER também pode lidar com tarefas como construir grafos de conhecimento, buscar informações e analisar conteúdo.
Modelos tradicionais de NER são bons em identificar entidades predefinidas. Em contraste, Grandes Modelos de Linguagem (LLMs) conseguem lidar com entidades mais complexas e variadas. No entanto, os LLMs muitas vezes consomem muitos recursos, impondo desafios para a implantação prática. LLMs de código aberto ajustados existentes para reconhecimento de entidades nomeadas (NER), como InstructUIE, UniNER e GoLLIE, são eficazes, mas enfrentam desafios como tamanho grande, geração lenta de tokens e extração paralela limitada de entidades. Para resolver esses problemas, pesquisadores desenvolveram o GLiNER, um modelo de NER compacto e eficiente projetado para melhorar a eficiência, a escalabilidade e o desempenho multilíngue, mantendo a precisão.
GLiNER é um modelo de NER de código aberto que usa um codificador transformer bidirecional. Ele permite a extração paralela de entidades e aborda as limitações das abordagens de NER tradicionais e baseadas em LLMs. Em avaliações zero-shot em vários benchmarks de NER, incluindo aqueles em vários idiomas, ele supera tanto o ChatGPT quanto LLMs ajustados como o UniNER. Até mesmo a menor versão do GLiNER supera modelos grandes como o InstructUIE em configurações zero-shot.
Figura: BiLM para NER aberto
Figura: BiLM para NER aberto | Fonte
Este blog discutirá o GLiNER, sua abordagem ao NER e seu impacto no domínio de NLP. Mais detalhes podem ser encontrados no artigo GLiNER.
Visão geral do Reconhecimento de Entidades Nomeadas
O Reconhecimento de Entidades Nomeadas (NER) é uma tarefa fundamental em Processamento de Linguagem Natural (NLP) que identifica e classifica entidades nomeadas dentro de um texto. Essas entidades representam objetos do mundo real, como pessoas, organizações, locais, datas etc.
Principais componentes do NER
Detecção de entidades: Localizar os limites das entidades nomeadas no texto (por exemplo, identificar "Albert Einstein" como um trecho de interesse).
Classificação de entidades: Atribuir o rótulo correto a cada entidade detectada (por exemplo, rotular "Albert Einstein" como uma Pessoa).
Entendendo a arquitetura e a funcionalidade do GLiNER
O GLiNER usa modelos de linguagem bidirecionais (BiLMs) como BERT e DeBERTa. Esses modelos são conhecidos por capturar ricas representações contextuais a partir de texto. O conceito-chave por trás do GLiNER é enquadrar a tarefa de NER como um problema de correspondência em que embeddings de tipos de entidade são comparados a representações de trechos textuais em um espaço latente compartilhado. Isso contrasta com abordagens tradicionais que tratam o NER como uma tarefa de geração.
O GLiNER consiste em três componentes principais:
Codificador textual pré-treinado: A base do GLiNER é um BiLM pré-treinado, como o DeBERTa, que serve como codificador textual. O BiLM processa a sequência de entrada, capturando relações contextuais entre palavras e gerando representações contextualizadas (embeddings) para cada token.
Módulo de Representação de Span: Este componente é responsável por calcular uma representação para cada span possível (uma sequência contígua de palavras) dentro do texto de entrada. A representação do span é derivada combinando as saídas do BiLM para os tokens inicial e final de cada span. Esses embeddings são otimizados para se alinhar estreitamente às representações dos tipos de entidade relevantes.
Módulo de Representação de Entidade: Este componente gera embeddings para cada tipo de entidade que o modelo pretende extrair. Tokens especiais que representam tipos de entidade são passados pelo BiLM, e suas saídas são refinadas usando uma rede feedforward. Esses embeddings de entidade são então comparados com embeddings de span para determinar correspondências.
Figura: arquitetura do GLiNER
Figura: arquitetura do GLiNER | Fonte
Veja como o GLiNER funciona.
Formatação da Entrada
O GLiNER recebe como entrada tanto o texto do qual as entidades devem ser extraídas quanto uma lista de possíveis tipos de entidade. Esses elementos são combinados em uma única sequência unificada. Tokens especiais, incluindo [ENT] e [SEP], desempenham um papel importante nessa sequência:
O token
[ENT]precede cada tipo de entidade na lista.O token
[SEP]atua como separador entre a lista de tipos de entidade e o texto de entrada.Tanto os tokens
[ENT]quanto[SEP]são inicializados aleatoriamente no início do processo de treinamento.
Figura: exemplo de formato de entrada
Figura: exemplo de formato de entrada | Fonte
Representação de Tokens com BiLMs
Um BiLM pré-treinado então processa a sequência de entrada unificada. O BiLM analisa a sequência inteira, entende as relações entre todos os tokens e gera representações vetoriais contextualizadas para cada token.
- A saída para tokens de tipo de entidade (aqueles associados a
[ENT]) é representada como p.
- A saída para cada palavra no texto de entrada é representada como h.
- Para palavras divididas em subpalavras durante a tokenização, o GLiNER usa a representação da primeira subpalavra, uma prática comum em NER.
Geração de Embeddings de Entidade e Span
O GLiNER visa codificar tanto tipos de entidade quanto spans de texto em um espaço latente unificado onde possam ser comparados de forma eficaz. Isso inclui o seguinte:
- Refinamento da Representação de Entidade: A representação inicial dos tipos de entidade (p) é refinada usando uma rede feedforward de duas camadas (FFN). Isso resulta em uma nova representação, denotada como q, que mapeia tipos de entidade para o espaço latente.
- Cálculo da Representação de Span: Um span é uma sequência de palavras consecutivas dentro do texto de entrada. O GLiNER calcula um embedding para cada span possível usando outra FFN de duas camadas. Essa FFN opera sobre as representações concatenadas dos tokens inicial e final do span. Esse processo permite que o GLiNER capture o significado de um span como um todo.
Correspondência entre Tipos de Entidade e Spans
Depois de codificar tanto os tipos de entidade quanto os spans no mesmo espaço latente, o GLiNER determina a probabilidade de um span pertencer a um tipo de entidade específico calculando uma pontuação de correspondência entre seus embeddings correspondentes. A pontuação de correspondência é calculada usando o produto escalar do embedding do span Sij e do embedding da entidade qt, seguido por uma função de ativação sigmoide. A pontuação resultante (i, j, t) pode ser interpretada como a probabilidade de o span (i, j) ser do tipo t.
Durante o treinamento, usando a Perda de Entropia Cruzada Binária, o modelo maximiza as pontuações de correspondência para pares span-entidade corretos (positivos) e as minimiza para pares incorretos (negativos).
Pares positivos são aqueles em que o span é de fato rotulado com o tipo de entidade nos dados de treinamento.
Pares negativos são gerados por amostragem aleatória de entidades de outros exemplos dentro do mesmo lote. Isso ajuda o modelo a discriminar efetivamente entre atribuições de entidade verdadeiras e falsas.
A perda de treinamento para um exemplo individual é definida como:
A perda de treinamento para um exemplo individual
Decodificação com Seleção Gulosa de Spans
O GLiNER usa um algoritmo guloso de seleção de spans para extrair as entidades mais prováveis do texto de entrada na fase de decodificação. Esse algoritmo prioriza spans não sobrepostos com as maiores pontuações de correspondência. Ele oferece suporte a dois modos de NER:
NER plano: Este modo seleciona apenas spans não sobrepostos, priorizando aqueles com as maiores pontuações.
NER aninhado: Este modo permite a seleção de spans aninhados (spans totalmente contidos dentro de outras entidades), evitando sobreposições parciais.
Essa abordagem gulosa garante que o GLiNER siga restrições específicas da tarefa enquanto extrai entidades relevantes de forma eficiente.
Configurações Experimentais e de Hiperparâmetros do GLiNER
Uma configuração experimental cuidadosamente projetada e uma configuração robusta de hiperparâmetros foram implementadas para avaliar a eficácia do GLiNER. O modelo é treinado no conjunto de dados Pile-NER, uma coleção de 44.889 passagens com 240.000 spans de entidades e 13.000 tipos únicos de entidades. Esse conjunto de dados foi derivado do corpus Pile, com 50.000 textos amostrados e anotados usando o ChatGPT. As anotações foram geradas sem restrições de tipo predefinidas, permitindo que o conjunto de dados capturasse entidades diversas.
Solicitando ao ChatGPT a extração de entidades
Figura: Solicitando ao ChatGPT a extração de entidades | Fonte
O GLiNER emprega o modelo deBERTa-v3 como sua base devido à sua comprovada força empírica. O modelo incorpora camadas não pré-treinadas com uma largura dimensional de 768 e aplica uma taxa de dropout de 0,4 para mitigar o sobreajuste.
O processo de treinamento continua por no máximo 30.000 etapas, começando com uma fase de aquecimento de 10%, seguida por uma fase de decaimento regida por um escalonador cosseno. Tipos de entidades negativas são amostrados aleatoriamente de outros exemplos no mesmo lote durante o treinamento para melhorar a capacidade do modelo de lidar com casos em que certos tipos de entidades estão ausentes.
Várias estratégias de regularização são implementadas para melhorar a robustez do modelo e evitar o sobreajuste. Essas estratégias incluem:
Embaralhar a ordem das entidades: Isso ajuda o modelo a identificar entidades independentemente de sua posição dentro da entrada.
Descartar entidades aleatoriamente: Isso força o modelo a lidar com instâncias em que as informações estão ausentes ou incompletas.
Uma restrição é imposta ao número de tipos de entidades processados por sentença para gerenciar a complexidade computacional durante o treinamento. Esse limite é definido como 25.
Analisando o Desempenho do GLiNER
Depois de treinado, o desempenho do GLiNER foi testado em diferentes benchmarks de NER, e os fatores que contribuem para sua eficácia foram analisados.
Desempenho Zero-Shot em Conjuntos de Dados em Inglês
O GLiNER foi avaliado em uma configuração zero-shot, o que significa que foi treinado no conjunto de dados Pile-NER e então testado diretamente em conjuntos de dados inéditos, sem ajuste fino adicional.
Benchmark de NER OOD
O benchmark OOD (Out-of-Domain) NER, composto por sete diversos datasets de NER, foi usado para avaliar a capacidade do GLiNER de generalizar para diferentes domínios. O GLiNER, em todas as suas variações de tamanho (small, medium e large), exibiu um desempenho impressionante, superando modelos como ChatGPT, Vicuna e até mesmo o muito maior InstructUIE.
Notavelmente, o GLiNER de tamanho médio alcançou resultados comparáveis aos do modelo UniNER 13B, apesar de ser 140 vezes menor. O maior modelo GLiNER superou consistentemente seus concorrentes, incluindo GoLLIE (o LLM com melhor desempenho) e USM.
Figura: pontuações Zero-Shot no benchmark NER Out-of-Domain
Figura: pontuações Zero-Shot no benchmark NER Out-of-Domain | Fonte
Benchmark de 20 NER
O GLiNER foi ainda avaliado em um benchmark de 20 datasets de NER abrangendo vários domínios. Ele superou tanto o ChatGPT quanto o UniNER na maioria desses datasets, demonstrando sua robustez e adaptabilidade em diferentes domínios. No entanto, teve desempenho inferior ao UniNER em datasets de NER baseados em tweets, destacando uma área potencial para melhoria no tratamento de texto informal e ruidoso.
Desempenho zero-shot em 20 datasets de NER
Desempenho zero-shot em 20 datasets de NER | Fonte
Avaliação Multilíngue Zero-Shot
Para avaliar a capacidade de generalização do GLiNER para idiomas não vistos, ele foi avaliado no dataset Multiconer, que contém dados em 11 idiomas. Duas variantes do GLiNER foram usadas:
Uma com um backbone DeBERTa em inglês (GLiNER-En).
Uma com um backbone DeBERTa multilíngue (GLiNER-Multi).
O GLiNER-Multi teve um desempenho notavelmente bom, superando o ChatGPT na maioria dos idiomas. Ele
demonstrou capacidades de transferência cross-lingual, embora não tenha sido treinado nesses idiomas. Ele até teve um desempenho ligeiramente melhor em espanhol do que em inglês.
Pontuações Zero-Shot em diferentes idiomas
Pontuações Zero-Shot em diferentes idiomas | Fonte
Ajuste Fino Supervisionado In-Domain
O GLiNER também foi ajustado finamente nos 20 datasets de NER para comparar seu desempenho com LLMs em um cenário supervisionado. Suas duas variantes foram testadas, uma inicializada com pesos do modelo zero-shot (pré-treinado no Pile-NER) e outra treinada do zero. A variante pré-treinada superou consistentemente a variante não pré-treinada, evidenciando os benefícios do pré-treinamento em um dataset diverso.
Desempenho supervisionado em diferentes tamanhos de dataset
Desempenho supervisionado em diferentes tamanhos de dataset | Fonte
O GLiNER pré-treinado também superou o muito maior InstructUIE, destacando a eficiência da arquitetura do GLiNER. Embora tenha ficado atrás do UniNER, o GLiNER ainda alcançou as pontuações mais altas em 7 dos 20 datasets.
Figura: ajuste fino supervisionado in-domain
Figura: ajuste fino supervisionado in-domain | Fonte
A abreviação w/ significa "with" e indica que o modelo GLiNER foi primeiro treinado no dataset Pile-NER antes do ajuste fino nos 20 datasets de NER.
A abreviação w/o significa "without" e indica que o modelo GLiNER não foi pré-treinado no dataset Pile-NER.
Escolhas Arquiteturais Variadas e Estratégias de Treinamento
Várias estratégias arquiteturais e de treinamento foram exploradas para otimizar o desempenho do GLiNER e garantir adaptabilidade em diversos cenários.
Avaliando Diferentes Backbones
O GLiNER foi investigado mais a fundo usando diferentes backbones BiLM para ver como eles afetam seu desempenho. Vários modelos, como BERT, RoBERTa, ALBERT e ELECTRA, foram testados, com o DeBERTa-v3 mostrando consistentemente o melhor desempenho. No entanto, todos os backbones apresentaram resultados fortes em comparação com modelos existentes. Isso sugeriu que a arquitetura do GLiNER é eficaz em diferentes BiLMs.
Figura: Desempenho zero-shot para diferentes backbones
Figura: Desempenho zero-shot para diferentes backbones | Fonte
Avaliando o Impacto da Amostragem de Entidades Negativas
A amostragem de entidades negativas é introduzida durante o treinamento para reconhecer que dados do mundo real muitas vezes carecem de certos tipos de entidade. O desempenho do modelo é então avaliado usando diferentes proporções de amostragem negativa (0%, 50% e 75%), e uma proporção de 50% fornece o melhor equilíbrio entre precisão e revocação. Treinar apenas com entidades positivas leva a mais falsos positivos (menor precisão), enquanto uma alta proporção de amostragem negativa torna o modelo excessivamente cauteloso, resultando em entidades não detectadas (menor revocação).
Figura: Efeito da amostragem de tipos de entidade negativa
Figura: Efeito da amostragem de tipos de entidade negativa | Fonte
Avaliando os Benefícios da Remoção Aleatória de Tipos de Entidade
Remover aleatoriamente prompts de tipo de entidade durante o treinamento aumenta a robustez e a adaptabilidade de um modelo a números variados de entidades em cenários do mundo real. Essa técnica resulta em uma melhoria média de 1,4 ponto na avaliação fora do domínio.
Figura: Remoção aleatória de tipos de entidade
Figura: Remoção aleatória de tipos de entidade | Fonte
Implicações do Desenvolvimento do GLiNER
O desenvolvimento do GLiNER tem implicações significativas para o campo do Reconhecimento de Entidades Nomeadas (NER):
Eficiência de Recursos para NER: O GLiNER avança o NER ao alcançar forte desempenho com tamanhos de modelo menores do que os grandes LLMs. Essa eficiência é benéfica em ambientes com recursos limitados, tornando o NER mais acessível para várias aplicações. O GLiNER usa BiLMs de forma eficaz sem a sobrecarga computacional dos LLMs, formulando o NER como uma tarefa de correspondência entre embeddings de tipos de entidade e representações de trechos textuais em um espaço latente.
Generalização Zero-Shot Entre Domínios e Idiomas: O GLiNER apresenta desempenho excepcional em configurações zero-shot, alcançando resultados de ponta em benchmarks de NER sem ajuste fino específico da tarefa. Sua capacidade de generalizar entre vários domínios e idiomas o torna uma solução promissora para cenários com dados rotulados limitados.
Melhor Desempenho com Pré-treinamento: O pré-treinamento no conjunto de dados Pile-NER antes do ajuste fino para tarefas dentro do domínio leva a melhorias notáveis de desempenho. Isso é especialmente verdadeiro quando a quantidade de dados supervisionados é limitada. O ganho é mais significativo com conjuntos de dados menores. Isso sugere que o pré-treinamento facilita a transferência eficaz de conhecimento, aprimorando a capacidade do modelo de generalizar e se adaptar a novos domínios e tipos de entidade.
Direções Futuras de Pesquisa
Várias vias de pesquisa podem ser exploradas para aprimorar ainda mais as capacidades do GLiNER:
Explorando Arquiteturas Alternativas: Embora a arquitetura atual do GLiNER seja eficaz, há espaço para melhoria por meio da experimentação com diferentes variantes de BiLM (Modelos de Linguagem Bidirecionais) ou da introdução de novas técnicas de representação de trechos. Tais inovações poderiam levar a ganhos adicionais de desempenho e permitir que o GLiNER enfrente tarefas mais complexas com maior eficiência.
Lidando com texto ruidoso e informal: Embora o GLiNER tenha bom desempenho em muitos contextos, sua capacidade de lidar com texto ruidoso e informal precisa ser aprimorada. O conteúdo de redes sociais frequentemente inclui gírias, abreviações e gramática não padrão, o que apresenta desafios únicos. Trabalhos futuros poderiam se concentrar em refinar o GLiNER para capturar melhor essas nuances e melhorar sua robustez no processamento de textos tão não estruturados.
Incorporando conhecimento externo: Integrar fontes externas de conhecimento, como grafos de conhecimento ou gazetteers específicos de domínio, poderia aumentar a precisão do GLiNER na desambiguação de entidades. Ao incorporar esses recursos à arquitetura do modelo, pesquisadores poderiam desenvolver representações mais precisas e conscientes do contexto de entidades nomeadas, melhorando o desempenho.
Ajuste fino para casos de uso específicos de domínio: Embora o desempenho zero-shot do GLiNER seja impressionante, há potencial para refinamento adicional por meio de ajuste fino específico de domínio. Áreas como mineração de textos biomédicos ou análise de documentos jurídicos poderiam se beneficiar dessa abordagem. Isso torna o GLiNER mais adaptável a campos especializados nos quais o reconhecimento de entidades precisa capturar padrões linguísticos complexos e técnicos.
Conclusão
O GLiNER representa um avanço significativo em NER. Por meio de seus modelos transformer bidirecionais compactos, ele combina eficiência, adaptabilidade e acessibilidade. Ele alcança forte desempenho zero-shot e multilíngue sem o custo computacional de modelos maiores, superando alternativas como ChatGPT e UniNER.
Pesquisas futuras poderiam explorar arquiteturas alternativas, melhorar a robustez em textos ruidosos e informais, integrar conhecimento externo para melhor desambiguação de entidades, ajuste fino para conjuntos de dados específicos de domínio e melhorar o desempenho em idiomas com poucos recursos por meio de transferência multilíngue. Essas direções têm grande potencial para melhorar ainda mais a eficácia do GLiNER em diversas tarefas de NER.
Recursos adicionais
Continue lendo

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



