Token Classification
Transformers
Safetensors
Portuguese
Spanish
xlm-roberta
ner
portuguese
spanish
medical
clinical
healthcare
brazil
cross-lingual
openmed-br
Eval Results (legacy)
Instructions to use BrazilAI/openmed-br-large-pt with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use BrazilAI/openmed-br-large-pt with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="BrazilAI/openmed-br-large-pt")# Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("BrazilAI/openmed-br-large-pt") model = AutoModelForTokenClassification.from_pretrained("BrazilAI/openmed-br-large-pt", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 7,272 Bytes
22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 22e10ae 0e29b15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | ---
language:
- pt
- es
license: cc-by-4.0
library_name: transformers
pipeline_tag: token-classification
tags:
- ner
- token-classification
- portuguese
- spanish
- medical
- clinical
- healthcare
- brazil
- cross-lingual
- openmed-br
base_model: xlm-roberta-base
datasets:
- MultiCoNER/multiconer_v2
- IEETA/SPACCC-Spanish-NER
metrics:
- seqeval
model-index:
- name: openmed-br-large-pt
results:
- task: {type: token-classification, name: Named Entity Recognition}
dataset: {name: MultiCoNER v2 (Portuguese, medical held-out), type: MultiCoNER/multiconer_v2}
metrics:
- {type: f1, value: 0.674, name: F1 (entity-level)}
- {type: precision, value: 0.636, name: Precision}
- {type: recall, value: 0.716, name: Recall}
---
# 🇧🇷 OpenMed-BR Clinical NER — Large (PT · cross-lingual PT+ES)
> Reconhecimento de entidades clínicas em **português**, reforçado com corpora
> clínicos ouro em **espanhol** (transferência cross-lingual). É o modelo de **maior
> F1** da família OpenMed-BR. Extrai **doenças, sinais/sintomas, medicamentos,
> procedimentos e estruturas anatômicas**.
| | |
|---|---|
| **Tarefa** | Token classification / NER (5 tipos) |
| **Idioma** | Português (BR), com treino cross-lingual PT+ES |
| **Base** | [`xlm-roberta-base`](https://huggingface.co/xlm-roberta-base) (MIT, multilíngue) |
| **F1 (held-out PT)** | **0.674** |
| **Licença** | CC BY 4.0 |
| **Irmão** | [`BrazilAI/openmed-br-clinical-pt`](https://huggingface.co/BrazilAI/openmed-br-clinical-pt) (roda em CPU; melhor em medicamento) |
---
## Por que isto importa
O Brasil produz um volume enorme de texto clínico — evoluções, anamneses, laudos —
e **quase tudo fica em texto livre**. Mesmo com 97,6% das UBS em prontuário eletrônico,
o conteúdo não é estruturado. Isso trava codificação, faturamento, pesquisa e
continuidade do cuidado. No setor privado, **glosas somaram R$ 5,8 bi em 2024**
(15,9% do faturado, só ~2% justificadas) — em grande parte, problema de documentação.
O primeiro passo para atacar qualquer um desses problemas é **transformar texto
clínico em entidades estruturadas**. Recursos de referência em inglês (ex.:
[OpenMed](https://huggingface.co/OpenMed)) não cobrem NER **clínico** em português —
o **OpenMed-BR** existe para preencher esse vazio, de forma aberta.
Este modelo **Large** usa uma ideia-chave: como corpus clínico ouro em português é
escasso, ele importa conhecimento de **corpora clínicos espanhóis** (grandes e
abertos) via um encoder multilíngue. Português e espanhol são próximos, e a
transferência cross-lingual eleva bastante o desempenho.
## O que o modelo reconhece
| Entidade | Exemplos |
|---|---|
| `DOENCA` | pneumonia, diabetes mellitus, insuficiência cardíaca |
| `SINAL_SINTOMA` | febre, dor abdominal, dispneia, obnubilação |
| `MEDICAMENTO` | azitromicina, metformina, omeprazol |
| `PROCEDIMENTO` | tomografia de tórax, colonoscopia, hemograma |
| `ANATOMIA` | tórax, abdome, antebraço |
## Aplicações
- **Assistente de codificação** — sugerir CID-10/CIAP-2, TUSS/SIGTAP e OBM/CATMAT a
partir da nota clínica (o modelo extrai a entidade; o mapeamento ao código é a
camada seguinte), acelerando faturamento e reduzindo glosa.
- **Prevenção de glosa** — conferir se o que está na evolução foi registrado na guia.
- **Estruturação de prontuário** — listas de problemas, medicações e procedimentos.
- **Pesquisa e vigilância** — coortes e indicadores a partir de texto em escala.
- **Pipeline de privacidade** — combinar com o PII do OpenMed para anonimizar (LGPD).
## Como usar
```python
from transformers import pipeline
ner = pipeline("token-classification",
model="BrazilAI/openmed-br-large-pt",
aggregation_strategy="simple")
texto = "Paciente com pneumonia; solicitada tomografia de tórax e avaliada dor abdominal."
for e in ner(texto):
print(e["entity_group"], "->", e["word"], round(e["score"], 2))
```
Recomenda-se **GPU** para inferência em lote (é maior que o irmão Efficient).
## Como foi treinado
1. **Base** `xlm-roberta-base` (multilíngue, tokenizer que lida bem com PT).
2. **Ouro PT** — fatia médica do **MultiCoNER v2** (anotação humana).
3. **Prata PT** — destilação dos modelos clínicos `pucpr/clinicalnerpt-*` (SemClinBr).
4. **Ouro ES (cross-lingual)** — corpora clínicos espanhóis abertos: **DisTEMIST**
(doenças), **MedProcNER** (procedimentos), **SympTEMIST** (sintomas), projetados
para o mesmo esquema de 5 tipos.
Avaliação sempre no **mesmo teste PT held-out**, para comparabilidade entre modelos.
## Resultados (teste PT held-out, seqeval, nível de entidade)
| Tipo | F1 | vs. Efficient |
|---|---|---|
| ANATOMIA | 0.786 | +0.07 |
| DOENCA | 0.744 | +0.18 |
| PROCEDIMENTO | 0.643 | +0.21 |
| SINAL_SINTOMA | 0.526 | +0.11 |
| MEDICAMENTO | 0.537 | −0.13 |
| **Geral** | **0.674** | **+0.08** |
**Leitura honesta:** o cross-lingual elevou muito **DOENÇA, PROCEDIMENTO e
SINAL_SINTOMA**. **MEDICAMENTO é o ponto fraco** — esta versão não inclui corpus
espanhol de fármacos (PharmaCoNER), então para medicamento o irmão
[`openmed-br-clinical-pt`](https://huggingface.co/BrazilAI/openmed-br-clinical-pt)
vai melhor (0.67). Teste held-out pequeno (77 frases) → honesto, porém ruidoso.
## Qual modelo escolher
| Precisa de… | Use |
|---|---|
| Maior F1 geral, doença/procedimento/sintoma | **este** (`large-pt`, GPU) |
| Rodar em **CPU**, baixo custo, foco em medicamento | [`openmed-br-clinical-pt`](https://huggingface.co/BrazilAI/openmed-br-clinical-pt) |
## Uso responsável (leia antes de aplicar em saúde)
- **Não é dispositivo médico.** Ferramenta assistiva de documentação/estruturação,
com humano no circuito. Uso não-diagnóstico/administrativo fica fora da ANVISA
RDC 657/2022; sugestão diagnóstica/terapêutica a paciente entra em regulação (SaMD).
- **LGPD** — dado de saúde é sensível: contexto de tutela da saúde (Art. 11, II, "f")
ou anonimização prévia. Prefira execução local.
- **Revisão humana obrigatória** — não use para decisão clínica.
## Roadmap
- **PharmaCoNER** (fármacos ES) no mix → fechar o gap de MEDICAMENTO (meta: geral >0.70).
- Ligação das entidades a **CID-10 / TUSS / SIGTAP / OBM**.
- Treino/avaliação sobre **texto clínico real em PT** rumo ao SOTA (~0.76).
## Atribuição e citação (obrigatória — CC BY 4.0)
- **Base**: `xlm-roberta-base` (MIT).
- **Ouro PT**: MultiCoNER v2 — Fetahu et al., *arXiv:2310.13213*; SemEval-2023 Task 2, *arXiv:2305.06586* (CC BY 4.0).
- **Ouro ES** (CC BY 4.0): DisTEMIST (Zenodo 7614764), MedProcNER (Zenodo 8224056), SympTEMIST (Zenodo 8223653) — BioASQ/BSC.
- **Prata PT (professores)**: BioBERTpt / clinicalnerpt / **SemClinBr** — Schneider et al., 2020 (ClinicalNLP@EMNLP); Oliveira et al., *J. Biomed. Semantics*, 2022; HAILab-PUCPR.
```bibtex
@misc{openmedbr_large_pt,
title = {OpenMed-BR Clinical NER (Large, PT cross-lingual)},
author = {OpenMed-BR / BrazilAI},
year = {2026},
howpublished = {\url{https://huggingface.co/BrazilAI/openmed-br-large-pt}}
}
```
## Licença
CC BY 4.0 — uso livre (inclusive comercial) **com atribuição**.
|