openmed-br-large-pt / README.md
isaacmeira's picture
Upload README.md with huggingface_hub
0e29b15 verified
|
Raw
History Blame Contribute Delete
7.27 kB
---
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**.