Token Classification
GLiNER
PyTorch
Portuguese
ner
named-entity-recognition
portuguese
information-extraction
public-security
crime
Instructions to use birdred/NERDD with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- GLiNER
How to use birdred/NERDD with GLiNER:
from gliner import GLiNER model = GLiNER.from_pretrained("birdred/NERDD") - Notebooks
- Google Colab
- Kaggle
| language: | |
| - pt | |
| license: apache-2.0 | |
| metrics: | |
| - f1 | |
| - precision | |
| - recall | |
| pipeline_tag: token-classification | |
| tags: | |
| - ner | |
| - named-entity-recognition | |
| - gliner | |
| - portuguese | |
| - information-extraction | |
| - public-security | |
| - crime | |
| base_model: | |
| - urchade/gliner_large-v1 | |
| # NERDD (Portuguese) | |
| **NERDD** is a fine-tuned version of **GLiNER Large** for **Named Entity Recognition (NER)** in Brazilian Portuguese criminal reports collected from the **Disque Denúncia** anonymous crime reporting system. | |
| The model recognizes three entity types: | |
| - **PER** — Person | |
| - **LOC** — Location | |
| - **ORG** — Organization | |
| Unlike general-purpose NER models, this model was trained on highly informal criminal reports containing abbreviations, slang, nicknames, misspellings and domain-specific terminology commonly found in Brazilian public security datasets. | |
| --- | |
| # Quick Start | |
| ```bash | |
| pip install gliner | |
| ``` | |
| ```python | |
| from gliner import GLiNER | |
| model = GLiNER.from_pretrained("BIRDRED/NERDD") | |
| text = """ | |
| Traficantes do Comando Vermelho estão escondidos na comunidade Cidade Alta. | |
| Segundo a denúncia, Biel foi visto armado próximo à Avenida Brasil. | |
| """ | |
| labels = ["PER","LOC","ORG"] | |
| entities = model.predict_entities( | |
| text, | |
| labels | |
| ) | |
| print(entities) | |
| ``` | |
| Example output | |
| ```python | |
| [ | |
| {'text': 'Comando Vermelho', 'label': 'ORG', 'score': 0.97}, | |
| {'text': 'Cidade Alta', 'label': 'LOC', 'score': 0.95}, | |
| {'text': 'Biel', 'label': 'PER', 'score': 0.94}, | |
| {'text': 'Avenida Brasil', 'label': 'LOC', 'score': 0.96} | |
| ] | |
| ``` | |
| --- | |
| # Supported Labels | |
| | Label | Description | | |
| |-------|-------------| | |
| | **PER** | Persons, suspects, nicknames and aliases | | |
| | **LOC** | Streets, neighborhoods, communities, cities and geographic locations | | |
| | **ORG** | Criminal organizations, police units, institutions and companies | | |
| --- | |
| ## Benchmark Results | |
| The best model was obtained after the fourth pseudo-labeling iteration, using metadata during the self-training process. | |
| | Metric | Score | | |
| |---------|:-----:| | |
| | **F1-score** | **67.0%** | | |
| | **Precision** | **66.2%** | | |
| | **Recall** | **67.9%** | | |
| These results were obtained on the held-out test set after fine-tuning GLiNER and applying iterative self-training with metadata-enhanced pseudo-labeling. | |
| --- | |
| # Dataset | |
| The model was fine-tuned using a manually annotated corpus of criminal reports. | |
| Dataset statistics: | |
| | Item | Value | | |
| |------|------:| | |
| | Reports | 5,230 | | |
| | Annotated entities | 49,069 | | |
| | Person entities | 20,903 | | |
| | Location entities | 23,213 | | |
| | Organization entities | 4,953 | | |
| The original corpus is **not publicly available** because it contains sensitive criminal intelligence information. | |
| --- | |
| # Training Details | |
| | Detail | Value | | |
| |------|------| | |
| | Base model | GLiNER Large | | |
| | Learning Rate | 3e-5 | | |
| | Weight Decay | 0.01 | | |
| | Batch Size | 8 | | |
| | Random Seed | 42 | | |
| | Max Length | 384 tokens | | |
| | Validation | 5-fold Nested Cross Validation | | |
| --- | |
| # When to Use This Model | |
| | Use case | Description | | |
| |----------|-------------| | |
| | Criminal intelligence | Extract entities from crime reports | | |
| | Public security | Information extraction from anonymous reports | | |
| | Academic research | Portuguese NER evaluation | | |
| | Information extraction | Structured entity extraction from unstructured reports | | |
| --- | |
| # Limitations | |
| - The model was trained specifically on criminal reports from Rio de Janeiro. | |
| - Performance may decrease on other Portuguese domains. | |
| - The training dataset is not publicly available. | |
| - Organization entities are less frequent than location entities, which may slightly affect performance on this class. | |
| --- | |
| # Citation | |
| If you use this model, please cite: | |
| ```bibtex | |
| @mastersthesis{melo2026, | |
| author={Gustavo Melo}, | |
| title={Named Entity Recognition in Brazilian Criminal Reports Using GLiNER, Metadata Integration and Iterative Self-Training}, | |
| school={CEFET/RJ}, | |
| year={2026} | |
| } | |
| ``` | |
| ## Related work | |
| ```bibtex | |
| @inproceedings{zaratiana2024gliner, | |
| title={GLiNER: Generalist Model for Named Entity Recognition using Bidirectional Transformer}, | |
| author={Zaratiana, Urchade and others}, | |
| booktitle={NAACL}, | |
| year={2024} | |
| } | |
| ``` | |
| --- | |
| # Acknowledgements | |
| This model was developed as part of a Master's dissertation at **CEFET/RJ** focused on Named Entity Recognition for Brazilian Public Security applications using the Disque Denúncia dataset. | |
| --- | |
| # License | |
| Apache 2.0 |