How to use from the
Use from the
Scikit-learn library
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

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. Código completo, CLI e testes: 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

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

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
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support