Text Classification
Scikit-learn
Portuguese
intent-classification
lead-scoring
tf-idf
logistic-regression
portuguese
Instructions to use ranzouu/leadforge-intent-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Scikit-learn
How to use ranzouu/leadforge-intent-classifier with Scikit-learn:
from huggingface_hub import hf_hub_download import joblib model = joblib.load( hf_hub_download("ranzouu/leadforge-intent-classifier", "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
|
Download README.md from ranzouu/leadforge-intent-classifier: direct link, hf CLI and curl.
- Browser
- Download file 3.26 kB
-
https://huggingface.co/ranzouu/leadforge-intent-classifier/resolve/main/README.md
- Command line
-
hf download hf://ranzouu/leadforge-intent-classifier/README.md
-
curl -L -o README.md https://huggingface.co/ranzouu/leadforge-intent-classifier/resolve/main/README.md
3.26 kB
| library_name: sklearn | |
| language: pt | |
| license: mit | |
| pipeline_tag: text-classification | |
| tags: | |
| - text-classification | |
| - intent-classification | |
| - lead-scoring | |
| - tf-idf | |
| - logistic-regression | |
| - portuguese | |
| # LeadForge Intent Classifier | |
| Classificador de **intenção de prospecção** (`hot` / `warm` / `cold`) a partir do texto do lead, em português. Pipeline TF-IDF (word n-grams + char_wb n-grams) + Logistic Regression balanceada — sem API paga, sem GPU, determinístico (`random_state=42`). | |
| Faz parte do pipeline do [LeadForge](https://github.com/ranzouu/leadforge). Código completo, CLI e testes: [github.com/ranzouu/leadforge-intent-classifier](https://github.com/ranzouu/leadforge-intent-classifier). | |
| ## Métricas — avaliação honesta (out-of-fold) | |
| **StratifiedKFold (5 folds) com tuning de `C` aninhado dentro do fold de treino.** Os números são pooled out-of-fold: toda amostra foi classificada por um modelo que nunca a viu no treino. | |
| | Métrica (média ± desvio entre folds) | Valor | | |
| |---|---| | |
| | Accuracy | 0.633 ± 0.192 | | |
| | Precision (weighted) | 0.634 ± 0.197 | | |
| | Recall (weighted) | 0.633 ± 0.192 | | |
| | F1 (weighted) | 0.630 ± 0.189 | | |
| | F1 (macro) | 0.633 | | |
| | Classe | Precision | Recall | F1 | Suporte | | |
| |---|---|---|---|---| | |
| | cold | 0.700 | 0.700 | 0.700 | 20 | | |
| | hot | 0.750 | 0.750 | 0.750 | 20 | | |
| | warm | 0.450 | 0.450 | 0.450 | 20 | | |
| > Nota de integridade: uma versão anterior deste projeto publicava "accuracy 1.0" medida no mesmo conjunto usado no treino (avaliação in-sample — inflação). Esse número foi removido e substituído pela validação cruzada acima. Detalhes por fold em `runs/cv_folds.csv` e por classe em `runs/class_report.csv`. | |
| ## Uso | |
| ```python | |
| import joblib | |
| vectorizer = joblib.load("vectorizer.pkl") | |
| clf = joblib.load("model.pkl") | |
| frases = [ | |
| "Quero fechar um plano hoje para minha barbearia", # hot | |
| "Pode me explicar melhor como funciona?", # warm | |
| "Só estou olhando por curiosidade", # cold | |
| ] | |
| print(clf.predict(vectorizer.transform([f.lower() for f in frases]))) | |
| ``` | |
| ## Limitações (leia com atenção) | |
| - **Dataset de demonstração**: 60 amostras (20 por classe) escritas para exercitar o pipeline — não são leads reais de produção. Em produção, treinar com dados reais e revalidar antes de confiar. | |
| - **`warm` é a fronteira difícil** (F1 0.45): separar "interesse" de "só curiosidade" é tênue até em leitura humana. | |
| - Modelo linha de base (TF-IDF + LR); com dados reais e volume maior, comparar com alternativas (LinearSVC, gradient boosting, LLM zero-shot) antes de escolher. | |
| ## Reproduzir | |
| ```bash | |
| pip install -e . # do repositório | |
| python -m leadforge_intent_classifier | |
| # runs/summary.csv, runs/cv_folds.csv, runs/class_report.csv, runs/latest.csv | |
| ``` | |
| ## Arquivos | |
| | Arquivo | Conteúdo | | |
| |---|---| | |
| | `model.pkl` | Logistic Regression final (treinada nos 60 samples, `C=4.0`) | | |
| | `vectorizer.pkl` | FeatureUnion word(1,2) + char_wb(2,4), `sublinear_tf` | | |
| | `experiment.py` | código-fonte do pipeline (treino, nested CV, exportação) | | |
| | `data/sample_leads.json` | dataset de demo (60 amostras) | | |
| | `runs/*.csv` | métricas por fold, por classe e predições out-of-fold | | |
| | `LICENSE` | MIT | | |