Instructions to use FlowRank/mailSort with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use FlowRank/mailSort with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="FlowRank/mailSort")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("FlowRank/mailSort", dtype="auto") - Notebooks
- Google Colab
- Kaggle
File size: 3,503 Bytes
8153a62 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | ---
library_name: transformers
pipeline_tag: text-classification
tags:
- email
- text-classification
language:
- en
---
## mailSort
Repo minimal (Python) pour **entraîner, évaluer et publier** un modèle de classification multi-classes d’e-mails à partir du dataset Hugging Face [`FlowRank/labeled_emails`](https://huggingface.co/datasets/FlowRank/labeled_emails).
Le script principal est `mailsort.train` (Transformers `Trainer`).
### Prérequis
- Python géré par `uv` (ce repo est prévu pour être lancé avec `uv run`)
- (Optionnel) un GPU CUDA si tu veux accélérer l’entraînement
- (Optionnel) un token HF si tu veux publier sur le Hub
### Installation
`uv` installe/synchronise automatiquement les dépendances la première fois.
```bash
uv sync
```
### Entraîner + évaluer (train + test)
Par défaut, le script charge le dataset **depuis le Hub** et utilise ses splits `train` et `test`.
L’évaluation se fait à chaque epoch, puis une évaluation finale est exécutée à la fin.
Les artefacts (modèle, tokenizer) sont sauvegardés dans `outputs/` (ou le dossier passé via `--output-dir`).
```bash
uv run python -m mailsort.train \
--dataset-id FlowRank/labeled_emails \
--model-name distilbert-base-uncased \
--hub-model-id FlowRank/mailSort \
--num-train-epochs 2
```
### Tester / évaluer uniquement
Le script n’a pas (encore) de mode “eval-only”.
Le **minimum** pour faire uniquement une passe rapide est de mettre `--num-train-epochs 0` (ce qui évite l’entraînement) et de garder la phase `evaluate`.
```bash
uv run python -m mailsort.train --num-train-epochs 0
```
### Évaluer sur le split `test` du dataset (recommandé)
Après ton entraînement dans `outputs/`, tu peux évaluer proprement sur le **split `test`** de `FlowRank/labeled_emails` :
```bash
uv run python -m mailsort.eval --model outputs --dataset-id FlowRank/labeled_emails --split test
```
(Optionnel) Pour un test rapide :
```bash
uv run python -m mailsort.eval --model outputs --split test --max-samples 200
```
### Publier sur le Hub (FlowRank/mailSort)
Le push se fait automatiquement si la variable d’environnement `HF_TOKEN` (ou `HUGGINGFACE_HUB_TOKEN`) est définie.
```bash
export HF_TOKEN="..."
uv run python -m mailsort.train --hub-model-id FlowRank/mailSort
```
### Publier via Git (README à la racine + artefacts dans `model/`)
Pour avoir un repo Hugging Face “complet” (doc + poids) tout en gardant une structure propre, on met :
- `README.md` à la racine (documentation + model card)
- les artefacts (config, poids, tokenizer) dans `model/`
Hugging Face pourra charger le modèle via `subfolder="model"`.
1) Préparer le dossier `model/` à partir de `outputs/` :
```bash
uv run python -m mailsort.prepare_model --outputs-dir outputs --model-dir model
```
2) Commit + push vers le repo Hugging Face `FlowRank/mailSort` :
```bash
git add README.md model
git commit -m "Add model artifacts under model/ + docs"
git push
```
### Inférence (utiliser le modèle publié)
```python
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
tok = AutoTokenizer.from_pretrained("FlowRank/mailSort", subfolder="model")
model = AutoModelForSequenceClassification.from_pretrained("FlowRank/mailSort", subfolder="model")
clf = pipeline("text-classification", model=model, tokenizer=tok, truncation=True)
text = "Subject: Insurance claim\n\nBody: Hello, I need to update my policy..."
print(clf(text))
```
|