publica-lightgbm
Autor: Roberto Vasconcelos Novaes — LabP² – Laboratório de Tecnologias Públicas para o Setor Público, Faculdade de Direito, Universidade Federal de Minas Gerais.
English summary. LightGBM classifiers that label each block of a
scholarly article PDF with one of 35 roles (title, authors, affiliation,
abstract, keywords, section heading, paragraph, reference, table, footnote,
funding statement…), so the article can be assembled into JATS XML (SciELO
Publishing Schema) by PUBLICA LABP².
They use only neutral layout cues (position, size, the extractor's own
class, generic text measures) — no text reading, no hand-written rules. Two
models: one for blocks read by Docling, one for blocks read by pdfminer.
Trained on 3,459 open-access articles (SciELO, Redalyc, PMC, PLOS) in
Portuguese, Spanish and English. It is the default suggester of the
application and the comparison model of our experiments; the stronger
labp2/publica-lightgbm-gliclass
adds a fine-tuned language model. Apache-2.0.
O que é
Os modelos do sugestor lightgbm do PUBLICA LABP² (PDF de manuscrito → XML
JATS no perfil SciELO PS). Cada um dá a cada bloco do PDF um de 35 papéis
(título, autores, afiliação, resumo, palavras-chave, seção, parágrafo,
referência, tabela, nota, financiamento…). Na aplicação é só uma
sugestão: o editor confere e corrige na tela de marcação.
| arquivo | extrator | versão | treino |
|---|---|---|---|
docling-bruto.txt.gz, docling-bruto.json |
Docling 2.132 (docling-bruto) |
15e266e8ae94, 04/10/2026 |
3.459 artigos, 552 revistas, 770.426 blocos, 141 rodadas |
pdfminer-bruto.txt.gz, pdfminer-bruto.json |
pdfminer (pdfminer-bruto), sem GPU |
478114867e2f, 28/09/2026 |
3.432 artigos, 549 revistas, 1.409.473 blocos, 153 rodadas |
O .json de cada modelo traz o SHA-256, os 35 papéis na ordem das classes,
as 115 pistas na ordem das colunas, as categóricas e a receita.
Pistas e receita
- Pistas neutras (115): só o que o extrator entrega (classe do bloco, página, posição, tamanho da letra, negrito, nível) e medidas genéricas do texto (comprimento, proporção de dígitos e maiúsculas, pontuação), do bloco e dos vizinhos. Não entram marcadores ("Resumo", "Referências"), e-mail, DOI, idioma por vocabulário nem regra escrita à mão.
- Rótulos: derivados automaticamente do XML JATS oficial de cada artigo (cada bloco do PDF recebe o papel do trecho do XML com que casa); só os blocos de rótulo confiável (≥ 0,7) treinam.
- LightGBM 4.7.0, multiclasse (35), taxa 0,08, 63 folhas, até 600 rodadas com parada antecipada (30 rodadas) numa fatia de revistas do treino, semente 20260926.
Dados de treino e licenças
Artigos de acesso aberto de seis coleções (SciELO geral e humanas, Redalyc e Redalyc diversificado, PMC, PLOS), em português, espanhol e inglês. Licença declarada no XML oficial dos 3.483 artigos do corte: CC BY ou CC0 em 2.680 (77%); CC BY-NC, CC BY-NC-SA ou CC BY-NC-ND em 769 (22%); 34 sem licença declarada. Os arquivos não contêm texto dos artigos, só as árvores do LightGBM e metadados do treino; quem reutilizar os modelos deve considerar essas licenças de origem.
Resultados
Os modelos deste repositório são os da aplicação, treinados com todos os artigos; por isso não têm medida em artigo não visto. Os números abaixo são do mesmo método (extrator Docling) treinado só com a partição de treino (1.695 artigos) e medido uma vez em 664 artigos de teste, de revistas que não estão no treino:
| sistema | campos do XML (média de 11) | blocos com o papel certo | correções por artigo (mediana) |
|---|---|---|---|
| GROBID 0.9.1 (pronto, sem internet) | 39,6% | — | — |
| heurística escrita à mão | 50,8% | — | — |
| LightGBM (este método) | 53,1% | 92,4% | 12 |
| LightGBM + GLiClass | 59,1% | 94,3% | 8 |
| teto (todos os papéis certos) | 67,4% | 100% | 0 |
"Campos do XML": para cada um de 11 campos (título, autores, afiliações, resumos, palavras-chave, seções, referências, tabelas, notas…), a porcentagem de artigos em que o XML gerado traz o campo igual ao oficial.
Limitações
- Não lê o texto: em revistas de layout muito diferente dos do treino o título e os metadados caem (no Redalyc do teste, 44% contra 59% do LightGBM + GLiClass).
- Depende do extrator: cada modelo só vale para os blocos do seu extrator e das 115 pistas calculadas pela aplicação; fora dela é pouco útil sem reproduzir essas pistas.
- Os rótulos de treino são automáticos, não revisados por pessoas.
- É uma sugestão para um editor confirmar, não uma extração final.
Como usar
Na aplicação, os modelos já vão com o código (não precisam ser baixados). Fora dela:
import gzip, json
import lightgbm as lgb
from huggingface_hub import hf_hub_download
REPO = "labp2/publica-lightgbm"
meta = json.load(open(hf_hub_download(REPO, "docling-bruto.json")))
texto = gzip.open(hf_hub_download(REPO, "docling-bruto.txt.gz"), "rt").read()
modelo = lgb.Booster(model_str=texto)
print(modelo.num_trees(), len(meta["atributos"]), meta["papeis"][:5])
# modelo.predict(X) devolve 35 probabilidades por bloco, na ordem de
# meta["papeis"]; X tem as 115 colunas de meta["atributos"], nessa ordem.
Modelos relacionados
labp2/publica-lightgbm-gliclass: o mesmo LightGBM com as 35 probabilidades de um modelo de linguagem ajustado (GLiClass) como pistas a mais.
Citação
NOVAES, Roberto Vasconcelos. Publica LabP² — LightGBM para marcação JATS de artigos científicos (modelo). LabP², Faculdade de Direito, UFMG, 2026. Disponível em: https://huggingface.co/labp2/publica-lightgbm
O artigo que descreve o método será referenciado aqui quando for publicado.
Contato
Roberto Vasconcelos Novaes — rnovaes@ufmg.br