Note: This document is available both in english and portuguese. The portuguese version can be found bellow the english one

NorBERTo

NorBERTo is a pretrained ModernBERT encoder for Brazilian Portuguese that achieves state-of-the-art performance on Portuguese NLP benchmarks, including PLUE and ASSIN 2 textual entailment. It is available in two sizes: Base and Large.

NorBERTo is trained on Aurora-PT, a 331-billion-token Brazilian Portuguese corpus developed by Itaú Unibanco and ICTi. Compared to previous Portuguese encoders, NorBERTo features long-context support (up to 8,192 tokens), efficient local–global attention (RoPE), and a vocabulary trained on Portuguese data.

For further information, please refer to the paper or the Aurora-PT dataset.

Available models

| Model | Architecture | #Layers | #Params |

|:------|:------------:|:-------:|:-------:|

| Itau-Unibanco/NorBERTo-base | ModernBERT-Base | 22 | ~150M |

| Itau-Unibanco/NorBERTo-large | ModernBERT-Large | 28 | ~395M |

Usage


from transformers import AutoTokenizer, AutoModel

 

model = AutoModel.from_pretrained('Itau-Unibanco/NorBERTo-base')

tokenizer = AutoTokenizer.from_pretrained('Itau-Unibanco/NorBERTo-base')

Masked language modeling


from transformers import pipeline

 

pipe = pipeline('fill-mask', model='Itau-Unibanco/NorBERTo-base')

 

pipe('O Brasil é um país de dimensões [MASK].')

For embeddings


import torch

 

model = AutoModel.from_pretrained('Itau-Unibanco/NorBERTo-base')

tokenizer = AutoTokenizer.from_pretrained('Itau-Unibanco/NorBERTo-base')

 

input_ids = tokenizer.encode('O Brasil é um país de dimensões continentais.', return_tensors='pt')

 

with torch.no_grad():

    outs = model(input_ids)

    encoded = outs[0][0, 1:-1]  # Ignore [CLS] and [SEP] special tokens

Results

ASSIN 2

| Model | Size | Entailment F1 | Similarity (Pearson) |

|:------|:----:|:-------------:|:--------------------:|

| Albertina PT-BR | base | 0.874 | 0.826 |

| BERTimbau | base | 0.883 | 0.836 |

| BERTimbau | large | 0.889 | 0.852 |

| mmBERT | base | 0.896 | 0.821 |

| NorBERTo | base | 0.890 | 0.736 |

| NorBERTo (cross encoder) | large | 0.903 | 0.766 |

| NorBERTo (sequence classification) | large | 0.904 | — |

PLUE

| Model | Size | MRPC | RTE | WNLI |

|:------|:----:|:----:|:---:|:----:|

| Albertina PT-BR | base | 0.878 | 0.646 | 0.549 |

| BERTimbau | large | 0.887 | 0.755 | 0.563 |

| mmBERT | base | 0.905 | 0.758 | 0.563 |

| NorBERTo | base | 0.893 | 0.722 | 0.577 |

| NorBERTo | large | 0.919 | 0.769 | 0.577 |

Citation

If you use our work, please cite:


@misc{silva2026norberto,

  author        = {Enzo S. N. Silva and Pablo B. Costa and Raphael C. Vlasman and Rosimeire P. Costa and Henrique L. P. Silva and Lucas F. A. O. Pellicer and Guilherme Rinaldo and Renato A. Almeida and Darian S. R. Rabbani and Cinthya O. Oestreich and Vinicius F. Caridá},

  title         = {NorBERTo: A ModernBERT Model Trained for Portuguese with 331 Billion Tokens Corpus},

  year          = {2026},

  eprint        = {2605.00086},

  archivePrefix = {arXiv},

  primaryClass  = {cs.CL},

  url           = {https://arxiv.org/abs/2605.00086}

}

Português

NorBERTo

NorBERTo é um encoder ModernBERT pré-treinado para o português brasileiro que alcança resultados estado da arte em benchmarks de PLN em português, incluindo PLUE e inferência textual no ASSIN 2. Está disponível em dois tamanhos: Base e Large.

O NorBERTo foi treinado no Aurora-PT, um corpus de 331 bilhões de tokens em português brasileiro desenvolvido pelo Itaú Unibanco e pelo ICTi. Em comparação com encoders anteriores para o português, o NorBERTo oferece suporte a contextos longos (até 8.192 tokens), atenção local–global eficiente (RoPE) e vocabulário treinado em dados em português.

Para mais informações, consulte o artigo ou o dataset Aurora-PT.

Modelos disponíveis

| Modelo | Arquitetura | #Camadas | #Parâmetros |

|:-------|:-----------:|:--------:|:-----------:|

| Itau-Unibanco/NorBERTo-base | ModernBERT-Base | 22 | ~150M |

| Itau-Unibanco/NorBERTo-large | ModernBERT-Large | 28 | ~395M |

Como usar


from transformers import AutoTokenizer, AutoModel

 

model = AutoModel.from_pretrained('Itau-Unibanco/NorBERTo-base')

tokenizer = AutoTokenizer.from_pretrained('Itau-Unibanco/NorBERTo-base')

Masked language modeling


from transformers import pipeline

 

pipe = pipeline('fill-mask', model='Itau-Unibanco/NorBERTo-base')

 

pipe('O Brasil é um país de dimensões [MASK].')

Para embeddings


import torch

 

model = AutoModel.from_pretrained('Itau-Unibanco/NorBERTo-base')

tokenizer = AutoTokenizer.from_pretrained('Itau-Unibanco/NorBERTo-base')

 

input_ids = tokenizer.encode('O Brasil é um país de dimensões continentais.', return_tensors='pt')

 

with torch.no_grad():

    outs = model(input_ids)

    encoded = outs[0][0, 1:-1]  # Ignore [CLS] e [SEP]

Resultados

ASSIN 2

| Modelo | Tamanho | F1 Inferência | Similaridade (Pearson) |

|:-------|:-------:|:-------------:|:----------------------:|

| Albertina PT-BR | base | 0,874 | 0,826 |

| BERTimbau | base | 0,883 | 0,836 |

| BERTimbau | large | 0,889 | 0,852 |

| mmBERT | base | 0,896 | 0,821 |

| NorBERTo | base | 0,890 | 0,736 |

| NorBERTo (cross encoder) | large | 0,903 | 0,766 |

| NorBERTo (sequence classification) | large | 0,904 | — |

PLUE

| Modelo | Tamanho | MRPC | RTE | WNLI |

|:-------|:-------:|:----:|:---:|:----:|

| Albertina PT-BR | base | 0,878 | 0,646 | 0,549 |

| BERTimbau | large | 0,887 | 0,755 | 0,563 |

| mmBERT | base | 0,905 | 0,758 | 0,563 |

| NorBERTo | base | 0,893 | 0,722 | 0,577 |

| NorBERTo | large | 0,919 | 0,769 | 0,577 |

Citação

Se utilizar este trabalho, por favor cite:


@misc{silva2026norberto,

  author        = {Enzo S. N. Silva and Pablo B. Costa and Raphael C. Vlasman and Rosimeire P. Costa and Henrique L. P. Silva and Lucas F. A. O. Pellicer and Guilherme Rinaldo and Renato A. Almeida and Darian S. R. Rabbani and Cinthya O. Oestreich and Vinicius F. Caridá},

  title         = {NorBERTo: A ModernBERT Model Trained for Portuguese with 331 Billion Tokens Corpus},

  year          = {2026},

  eprint        = {2605.00086},

  archivePrefix = {arXiv},

  primaryClass  = {cs.CL},

  url           = {https://arxiv.org/abs/2605.00086}

}
Downloads last month
1,112
Safetensors
Model size
0.4B params
Tensor type
F32
·
Inference Providers NEW
No mask token found for this model.

Paper for Itau-Unibanco/NorBERTo-large