Identificação de informações pessoais em documentos em português
Fine-tune do openai/privacy-filter em 914 mil amostras PT-BR — 73 rótulos cobrindo dados pessoais sensíveis nos termos do art. 5º, II da Lei nº 13.709/2018, com placeholder de substituição já emitido pelo decoder Viterbi constrained.
OPF PT-BR — Identificação de PII em documentos
Fine-tune do openai/privacy-filter treinado em 914 mil amostras de PII em português brasileiro, com destaque explícito para dados pessoais sensíveis nos termos do art. 5º, II da Lei nº 13.709/2018 (LGPD). Cobre 73 categorias (24 canônicas PT-BR + 47 cross-source multilíngua) e emite, além do rótulo, um placeholder já pronto para substituição, via decoder Viterbi com restrições BIESO.
Quando marcado, o cabeçalho do resumo sinaliza a opção.
| Texto para análise | Rótulos considerados | Descartar spans sobrepostos do mesmo rótulo |
|---|
Desempenho do modelo
Ranking apples-to-apples (mesma val PT-BR 5k, mesmas 24 labels canônicas, nervaluate):
| Modelo | partial F1 | exact F1 |
|---|---|---|
| opf-finetune (este) | 0.897 | 0.853 |
| mmBERT-small × 3 | 0.888 | 0.870 |
| ettin-68m | 0.822 | 0.789 |
| ettin-32m | 0.808 | 0.769 |
Recipe
| Item | Detalhe |
|---|---|
| Modelo | arthrod/gliner-opf-ptbr-pii-v1 (privado) |
| Backbone | openai/privacy-filter (8L sparse-MoE, 128 experts, top-4 routing) |
| Treino | 9-round chunked sweep (3 ép × 3 saves), 914 mil linhas, ~3h45m em MI300X |
| Decoder | Viterbi constrained (BIESO) |
| Best ckpt | e3_c3 — typed F1 0.885 (P 0.894 / R 0.876) |
| Batch / ctx | 32 janelas × grad-accum 4 (efetivo 128), n-ctx 256, bf16 |
| Optimizer | AdamW lr 1e-5, wd 0.01, max-grad-norm 1.0 |
Diferenças vs GLiNER (mmBERT/ettin)
- Vocabulário de 73 labels vs 24 (inclui SSN, passport, IP, MAC, swift_bic, etc.)
- Inferência via Viterbi constrained (BIESO) em vez de token-level argmax
- Emite
placeholderpronto para substituição — não apenas o rótulo - Sem easter-egg
berco-de-tiradentes(use o demo mmBERT/ettin para isso)
Catálogo de rótulos
Documento oficial / identidade — cpf_document_number, rg_document_number, pis_document_number, id_card_number, passport_number, driver_license_number, social_security_number, tax_id_number, certificate_license_number
Dado financeiro — credit_card, account_number, bank_routing_number, swift_bic, cvv, pin, customer_id
Contato — phone_number, email_address, fax_number, url, ipv4, ipv6, mac_address
Nome — first_name, middle_name, last_name, user_name, title
Data de nascimento / idade — dob, date, time, date_time, age
Localização — location_street, location_building_number, location_neighborhood, location_city, location_state, location_state_abbreviation, location_zip, location_full_address, country, county, coordinate
Dado pessoal sensível (LGPD art. 5º, II) — personal_description_of_ethnicity, personal_description_of_medical_conditions, personal_description_of_organizational_affiliation, personal_description_of_political_opinion, personal_description_of_religious_convictions, personal_description_of_sexual_information, religious_belief, political_view, sexuality, sex_or_gender, biometric_identifier, blood_type
Credencial / identificador técnico — password, api_key, http_cookie, device_identifier, unique_id, employee_id, vehicle_identifier, license_plate, medical_record_number, health_plan_beneficiary_number
Contexto profissional — occupation, employment_status, education_level, company_name, language