isaacmeira commited on
Commit
2f728dd
·
verified ·
1 Parent(s): 8f6b982

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +137 -23
README.md CHANGED
@@ -10,6 +10,8 @@ tags:
10
  - portuguese
11
  - medical
12
  - clinical
 
 
13
  - openmed-br
14
  base_model: OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1
15
  datasets:
@@ -27,15 +29,98 @@ model-index:
27
  - {type: recall, value: 0.625, name: Recall}
28
  ---
29
 
30
- # OpenMed-BR Clinical NER — Efficient (PT)
31
 
32
- NER clínico em português, **CPU-friendly** (110M). Parte da iniciativa **OpenMed-BR**
33
- (adaptação ao Brasil da família OpenMed de NLP médico). Reconhece 5 tipos:
34
- **DOENCA, SINAL_SINTOMA, MEDICAMENTO, PROCEDIMENTO, ANATOMIA**.
35
 
36
- Encoder base: [`OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1`](https://huggingface.co/OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1)
37
- (Apache-2.0). Treino: MultiCoNER v2 PT (ouro humano) + rótulos-prata destilados dos
38
- modelos clínicos SemClinBr/BioBERTpt da HAILab-PUCPR.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  ## Resultados (teste PT held-out, seqeval, nível de entidade)
41
 
@@ -48,21 +133,50 @@ modelos clínicos SemClinBr/BioBERTpt da HAILab-PUCPR.
48
  | SINAL_SINTOMA | 0.421 |
49
  | **Geral** | **0.598** |
50
 
51
- ## Uso
52
- ```python
53
- from transformers import pipeline
54
- ner = pipeline("token-classification", model="BrazilAI/openmed-br-clinical-pt",
55
- aggregation_strategy="simple")
56
- ner("Paciente com hipertensão em uso de losartana; solicitada tomografia de tórax.")
57
- ```
58
 
59
- ## Atribuição (obrigatória — CC BY 4.0)
60
- - **Base**: OpenMed (Apache-2.0).
61
- - **Dados ouro**: MultiCoNER v2 — Fetahu et al., arXiv:2310.13213; SemEval-2023 Task 2, arXiv:2305.06586 (CC BY 4.0).
62
- - **Dados prata (professores)**: BioBERTpt / clinicalnerpt / SemClinBr — Schneider et al., 2020 (ClinicalNLP@EMNLP), HAILab-PUCPR.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
- ## Limitações
65
- Modelo assistivo, **não é dispositivo médico** e não serve para decisão clínica.
66
- Teste held-out pequeno (77 frases) → números honestos, porém ruidosos. A prata foi
67
- destilada sobre texto enciclopédico; desempenho em prontuário real pode diferir.
68
- Irmão de maior F1 (cross-lingual PT+ES): `openmed-br-large-pt`.
 
10
  - portuguese
11
  - medical
12
  - clinical
13
+ - healthcare
14
+ - brazil
15
  - openmed-br
16
  base_model: OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1
17
  datasets:
 
29
  - {type: recall, value: 0.625, name: Recall}
30
  ---
31
 
32
+ # 🇧🇷 OpenMed-BR Clinical NER — Efficient (PT)
33
 
34
+ > Reconhecimento de entidades clínicas em **português**, leve o bastante para rodar
35
+ > em **CPU**. Extrai **doenças, sinais/sintomas, medicamentos, procedimentos e
36
+ > estruturas anatômicas** de texto médico livre.
37
 
38
+ | | |
39
+ |---|---|
40
+ | **Tarefa** | Token classification / NER (5 tipos) |
41
+ | **Idioma** | Português (BR) |
42
+ | **Base** | [OpenMed PT — BioClinicalBERT 110M](https://huggingface.co/OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1) (Apache-2.0) |
43
+ | **Parâmetros** | 110M — roda em CPU |
44
+ | **F1 (held-out)** | **0.60** |
45
+ | **Licença** | CC BY 4.0 |
46
+ | **Irmão** | [`BrazilAI/openmed-br-large-pt`](https://huggingface.co/BrazilAI/openmed-br-large-pt) (maior F1, cross-lingual) |
47
+
48
+ ---
49
+
50
+ ## Por que isto importa
51
+
52
+ O Brasil gera uma quantidade imensa de texto clínico — evoluções, anamneses,
53
+ laudos, atestados — e **quase tudo fica preso em texto livre**. Mesmo com 97,6% das
54
+ UBS já usando prontuário eletrônico, o conteúdo é escrito em linguagem natural, não
55
+ estruturado. Isso trava tudo que depende de dado organizado:
56
+
57
+ - **Codificação clínica** (CID-10, CIAP-2, TUSS, SIGTAP) feita à mão, cara e lenta.
58
+ - **Glosas** no setor privado: **R$ 5,8 bilhões em 2024** (15,9% do faturado), das
59
+ quais só ~2% eram justificadas — a maior parte é problema de documentação/código.
60
+ - **Vigilância e pesquisa** que precisam garimpar prontuário manualmente.
61
+ - **Continuidade do cuidado** perdida entre sistemas que não conversam.
62
+
63
+ O primeiro passo para destravar qualquer um desses problemas é o mesmo: **transformar
64
+ texto clínico em entidades estruturadas**. É exatamente o que este modelo faz — e faz
65
+ em português, de forma aberta e rodando em hardware modesto.
66
+
67
+ Ecossistema de referência (inglês) como o [OpenMed](https://huggingface.co/OpenMed)
68
+ não cobre NER **clínico** em português (só de-identificação de PII). O **OpenMed-BR**
69
+ preenche esse vazio.
70
+
71
+ ## O que o modelo reconhece
72
+
73
+ | Entidade | Exemplos |
74
+ |---|---|
75
+ | `DOENCA` | hipertensão arterial, diabetes mellitus, pneumonia |
76
+ | `SINAL_SINTOMA` | febre, cefaleia, dor abdominal, dispneia |
77
+ | `MEDICAMENTO` | losartana, dipirona, metformina, azitromicina |
78
+ | `PROCEDIMENTO` | tomografia de tórax, hemograma, apendicectomia |
79
+ | `ANATOMIA` | tórax, abdome, ventrículo esquerdo |
80
+
81
+ ## Aplicações
82
+
83
+ - **Assistente de codificação** — sugerir CID-10/CIAP-2 (doenças), TUSS/SIGTAP
84
+ (procedimentos) e OBM/CATMAT (medicamentos) a partir da nota clínica, acelerando
85
+ faturamento e reduzindo glosa. *(O modelo extrai a entidade; o mapeamento ao código
86
+ é a camada seguinte.)*
87
+ - **Prevenção de glosa** — checar se procedimentos/medicamentos citados na evolução
88
+ estão devidamente registrados na guia.
89
+ - **Estruturação de prontuário** — montar listas de problemas, medicações em uso e
90
+ procedimentos a partir de texto livre.
91
+ - **Pesquisa e vigilância** — construir coortes e indicadores epidemiológicos a partir
92
+ de grandes volumes de texto.
93
+ - **Pipeline de privacidade** — combinar com o modelo PII do OpenMed para anonimizar
94
+ antes de processar (LGPD).
95
+
96
+ ## Como usar
97
+
98
+ ```python
99
+ from transformers import pipeline
100
+
101
+ ner = pipeline("token-classification",
102
+ model="BrazilAI/openmed-br-clinical-pt",
103
+ aggregation_strategy="simple")
104
+
105
+ texto = "Paciente com hipertensão em uso de losartana; solicitada tomografia de tórax."
106
+ for e in ner(texto):
107
+ print(e["entity_group"], "->", e["word"], round(e["score"], 2))
108
+ ```
109
+
110
+ Roda em CPU. Para lote, passe uma lista de textos ao `pipeline`.
111
+
112
+ ## Como foi treinado
113
+
114
+ Estratégia **híbrida** para contornar a escassez de dado clínico anotado em PT:
115
+
116
+ 1. **Base OpenMed** — encoder BioClinicalBERT já adaptado ao português (Apache-2.0).
117
+ 2. **Dados ouro** — fatia médica do **MultiCoNER v2** em português (anotação humana).
118
+ 3. **Dados prata (destilação)** — os 13 modelos clínicos `pucpr/clinicalnerpt-*`
119
+ (treinados no corpus **SemClinBr**) atuam como *professores*, rotulando texto que
120
+ é então usado no treino. Assim o conhecimento clínico do SemClinBr entra no modelo
121
+ mesmo com o corpus original sendo de acesso restrito.
122
+
123
+ Tudo mapeado para um esquema clínico unificado de 5 tipos.
124
 
125
  ## Resultados (teste PT held-out, seqeval, nível de entidade)
126
 
 
133
  | SINAL_SINTOMA | 0.421 |
134
  | **Geral** | **0.598** |
135
 
136
+ **Leitura honesta:** este é um ponto de partida sólido, não o estado da arte. O teste
137
+ held-out é pequeno (77 frases) → números honestos, porém ruidosos. Para **MEDICAMENTO**
138
+ este modelo é o melhor da família (0.67). Para doença/procedimento/sintoma, o irmão
139
+ [`openmed-br-large-pt`](https://huggingface.co/BrazilAI/openmed-br-large-pt) vai melhor.
 
 
 
140
 
141
+ ## Qual modelo escolher
142
+
143
+ | Precisa de… | Use |
144
+ |---|---|
145
+ | Rodar em **CPU**, baixo custo, foco em medicamento | **este** (`clinical-pt`) |
146
+ | Maior F1 geral (GPU), doença/procedimento/sintoma | [`openmed-br-large-pt`](https://huggingface.co/BrazilAI/openmed-br-large-pt) |
147
+
148
+ ## Uso responsável (leia antes de aplicar em saúde)
149
+
150
+ - **Não é dispositivo médico.** É ferramenta assistiva de **documentação/estruturação**,
151
+ com humano no circuito. Software não-diagnóstico de apoio administrativo/documental
152
+ fica fora da ANVISA RDC 657/2022; assim que houver sugestão diagnóstica/terapêutica
153
+ para um paciente, entra regulação (SaMD).
154
+ - **LGPD** — dado de saúde é sensível. Processe em contexto de tutela da saúde
155
+ (Art. 11, II, "f") ou anonimize antes (ex.: modelo PII do OpenMed). Prefira execução
156
+ local/on-device.
157
+ - **Revisão humana obrigatória** — não use para decisão clínica.
158
+
159
+ ## Roadmap
160
+
161
+ - Ligação das entidades a **CID-10 / TUSS / SIGTAP / OBM** (da extração ao código).
162
+ - Treino/avaliação sobre **texto clínico real em PT** (ex.: acesso ao SemClinBr cru,
163
+ parceria hospitalar) rumo ao SOTA (~0.76).
164
+ - Teste held-out maior e mais representativo.
165
+
166
+ ## Atribuição e citação (obrigatória — CC BY 4.0)
167
+
168
+ - **Base**: OpenMed — `OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1` (Apache-2.0).
169
+ - **Dados ouro**: MultiCoNER v2 — Fetahu et al., *arXiv:2310.13213*; SemEval-2023 Task 2, *arXiv:2305.06586* (CC BY 4.0).
170
+ - **Dados prata (professores)**: BioBERTpt / clinicalnerpt / **SemClinBr** — Schneider et al., 2020 (ClinicalNLP@EMNLP); Oliveira et al., *J. Biomed. Semantics*, 2022; HAILab-PUCPR.
171
+
172
+ ```bibtex
173
+ @misc{openmedbr_clinical_pt,
174
+ title = {OpenMed-BR Clinical NER (Efficient, PT)},
175
+ author = {OpenMed-BR / BrazilAI},
176
+ year = {2026},
177
+ howpublished = {\url{https://huggingface.co/BrazilAI/openmed-br-clinical-pt}}
178
+ }
179
+ ```
180
 
181
+ ## Licença
182
+ CC BY 4.0 uso livre (inclusive comercial) **com atribuição**.