Instructions to use wesleybritowx/svc-folha-categorias with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use wesleybritowx/svc-folha-categorias with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("wesleybritowx/svc-folha-categorias", "sklearn_model.joblib") ) # only load pickle files from sources you trust # read more about it here https://skops.readthedocs.io/en/stable/persistence.html - Notebooks
- Google Colab
- Kaggle
TF-IDF + LinearSVC — Classificador de Macrocategorias de Notícias (PT-BR)
Pipeline scikit-learn (TF-IDF + LinearSVC) que classifica notícias brasileiras em 12 macrocategorias temáticas.
É o modelo padrão da API do projeto: ~0,7 ms por requisição em CPU e 127 MB —
contra ~300 ms e ~440 MB (+ torch) do BERTimbau. A escolha priorizou o custo de
produção, não só a métrica.
Dados
News of the Site Folha de São Paulo — ~167 mil notícias (2015–2017).
As 48 categorias originais foram consolidadas em 12 macrocategorias temáticas (o desbalanceamento era extremo — 22.022 vs. 1 exemplo — e várias "categorias" eram editorias, não temas).
Entrada: título + texto (o texto é opcional; sem ele a qualidade cai).
Classes
Carreira · Ciência e Tecnologia · Cultura e Entretenimento · Economia ·
Educação · Esporte · Internacional · Opinião · Outros · Política ·
Saúde · Sociedade
Resultados
Holdout de 32.824 notícias (split estratificado, seed 42):
| Métrica | Valor |
|---|---|
| F1-macro | 0,800 |
| Accuracy | 0,888 |
O BERTimbau fine-tunado no mesmo split atinge F1-macro 0,858 — porém é ~300× mais lento e ~20× mais pesado em dependências.
Uso
import joblib
from huggingface_hub import hf_hub_download
caminho = hf_hub_download("wesleybritowx/svc-folha-categorias", "model.joblib")
modelo = joblib.load(caminho)
print(modelo.predict(["Banco Central mantém a taxa Selic e o mercado reage"]))
# -> ['Economia']
⚠️ Requer scikit-learn 1.7.1 — o pickle é sensível à versão.
Pipeline
TfidfVectorizer(ngram_range=(1, 2), min_df=5, stop_words=<PT + domínio>)LinearSVC(class_weight="balanced")— compensa o desbalanceamento- Limpeza de boilerplate editorial antes da vetorização: URLs, créditos de tradução e auto-referências da marca do jornal viravam features espúrias de alto peso (atalhos que não generalizam). Removê-las custou apenas −0,007 de F1, mas deixou o modelo honesto.
Por ser linear, o modelo é interpretável: a contribuição de cada termo é exata
(tfidf × coeficiente) — a API expõe isso no parâmetro explicar.
Projeto completo
EDA, comparação de modelos e API FastAPI dockerizada: 👉 https://github.com/wesleybritowx/Text-classification
- Downloads last month
- -