texto2area
Biblioteca Python que classifica o título e/ou resumo de uma tese/dissertação brasileira em uma das 9 grandes áreas de avaliação CAPES, a partir do texto — ponta a ponta: recebe texto cru em português e faz normalização, lematização, n-gramas e classificação.
from texto2area import classificar
area, margens, termos = classificar(
"A atuação do enfermeiro no cuidado ao paciente idoso em saúde coletiva."
)
# area -> 'CIÊNCIAS DA SAÚDE'
# margens -> [('CIÊNCIAS DA SAÚDE', 1.28), ('CIÊNCIAS BIOLÓGICAS', -1.0), ...]
# termos -> ['saúde_coletivo', 'enfermeiro', 'paciente', 'cuidado']
Instalação
pip install texto2area
python -m spacy download pt_core_news_lg # modelo de lematização (~568 MB), obrigatório
Versão de desenvolvimento (GitHub): pip install git+https://github.com/reneveloso/texto2area
Ou, a partir de um clone: pip install .
Uso pretendido e domínio de validade
- Idioma: português. Para textos em outro idioma, traduza antes (a tradução não é embutida — exigiria um modelo pesado).
- Domínio: teses e dissertações (título/resumo), 2013–2024 (Catálogo Sucupira). Fora disso (outros gêneros, outras taxonomias) o desempenho não é garantido.
- Saída: grande área + margens (
decision_function) por classe + termos do texto que mais pesaram na decisão (interpretabilidade do modelo linear).
Como funciona (fiel ao pipeline de treino)
- Normalização (NFC, limpeza, colapso de espaços).
- Lematização com spaCy
pt_core_news_lg, mantendo POS de conteúdo (NOUN, PROPN, ADJ, VERB), lema minúsculo,len>=2. - Injeção de n-gramas: bi/trigramas adjacentes unidos por
_, mantidos os que existem no vocabulário do modelo (85% das 359.402 features são n-gramas). - TF-IDF (
sublinear_tf,min_df=50) +LinearSVC(one-vs-rest,class_weight='balanced').
Desempenho (avaliação em conjuntos retidos)
| Protocolo | Acurácia | F1-macro | Baseline (maj.) |
|---|---|---|---|
| In-distribution (split 80/20) | 0,792 | 0,791 | 0,165 |
| Out-of-time (treino ≤2023, teste 2024) | 0,729 | 0,732 | 0,170 |
F1 por área varia de Linguística/Letras/Artes 0,879 e Saúde 0,860 a Multidisciplinar 0,549 (classe difusa, sem vocabulário próprio). O artefato é treinado em 100% dos dados (1.017.727 documentos); as métricas vêm dos protocolos de avaliação.
Limitações
- Rótulo administrativo como verdade-base (parte dos "erros" é interdisciplinaridade real).
- Multidisciplinar pouco separável (F1 0,549).
- Não distingue as ~49 áreas de avaliação finas (apenas as 9 grandes áreas).
- Português apenas (sem tradução embutida).
Segurança
O modelo é carregado via joblib, que executa código ao desserializar. Use apenas
os artefatos versionados neste repositório ou de fonte confiável.
Reprodução
Ver reproduzir/REPRODUCAO.md. O treino é determinístico
(SEED=42); o corpus (Sucupira) não é redistribuído.
Como citar
Ver CITATION.cff. DOI do Zenodo a ser adicionado.
Licença
MIT © 2026 Renê R. Veloso.
Metadata
Release files for texto2area 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| texto2area-0.1.1.tar.gz | 29.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| texto2area-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.7 MB
Release files / texto2area-0.1.1.tar.gz
| Download URL | texto2area-0.1.1.tar.gz |
|---|---|
| Size | 29.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f63d871f7026c2d858d6e1f88a9056e128d9c20ece09a3c4b421a82a536ba0a7
|
|
BLAKE2b-256 checksum How to use checksums |
b08446510c2a9320e5fc90c3ab769089ee40004c712d5d199fdf09d024ae436b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logRelease files / texto2area-0.1.1-py3-none-any.whl
| Download URL | texto2area-0.1.1-py3-none-any.whl |
|---|---|
| Size | 29.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d2367d4ff3227e9bde786ee0dbc5b0ac3c640442471e1b9b3e4a96db67d4fb7
|
|
BLAKE2b-256 checksum How to use checksums |
ac322a1f37868d78f7f37fc407586b676880c75359af7fb9bc608e2fe4664759
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency log