CamemBERT Spam Detector - French Developer Communities
Modèle de détection de spam/promotion pour les communautés de développeurs francophones, basé sur CamemBERT.
Installation
⚠️ Important : Ce modèle nécessite une version spécifique de
transformerspour fonctionner correctement.
pip install 'transformers>=4.40.0,<4.46.0' torch sentencepiece protobuf
Requirements
| Package | Version |
|---|---|
| transformers | >=4.40.0,<4.46.0 |
| torch | >=2.0.0 |
| sentencepiece | >=0.1.99 |
| protobuf | >=3.20.0 |
⚠️ Attention : Les versions
transformers>=4.46.0(notamment 5.x) peuvent causer des faux positifs sur les contenus techniques formatés. Utilisez impérativement une version<4.46.0.
Performance
| Métrique | Valeur |
|---|---|
| Accuracy | 99.84% |
| Temps d'entraînement | ~1 minute |
Utilisation
from transformers import CamembertTokenizer, CamembertForSequenceClassification
import torch
# Charger le modèle (utiliser le tokenizer du repo, pas camembert-base)
tokenizer = CamembertTokenizer.from_pretrained("nellaw/camembert-spam-detector-fr")
model = CamembertForSequenceClassification.from_pretrained("nellaw/camembert-spam-detector-fr")
# Prédiction
def predict(text):
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=256, padding=True)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
pred = torch.argmax(probs, dim=1).item()
return "Spam" if pred == 1 else "Légitime", probs[0][pred].item()
# Test
label, confidence = predict("Comment faire une boucle for en Python ?")
print(f"{label} ({confidence:.1%})") # Légitime (97.6%)
label, confidence = predict("Gagnez 5000€/mois avec notre méthode !")
print(f"{label} ({confidence:.1%})") # Spam (97.6%)
Exemples
| Message | Prédiction | Confiance |
|---|---|---|
| "Comment faire une boucle for en Python ?" | Légitime | 97.7% |
| "Gagnez 5000€/mois avec notre méthode !" | Spam | 97.6% |
| "Je ne vends pas ma formation" | Légitime | 97.5% |
| "Formation à vendre pour 99€ !" | Spam | 97.4% |
| "Est-ce que c'est une pub ?" | Légitime | 97.5% |
| "Services d'intégration API (OAuth, JWT, REST)" | Légitime | 95.4% |
Points forts
- Comprend les négations ("je ne vends pas" vs "je vends")
- Détecte les questions comme légitimes
- Reconnaît le contexte gratuit vs payant
- Haute confiance (~97%) sur les prédictions
- Gère correctement les contenus techniques (API, documentation, tableaux)
Entraînement
| Paramètre | Valeur |
|---|---|
| Modèle de base | camembert-base |
| Dataset | 174 735 exemples (52% légitimes, 48% spam) |
| Batch size | 64 |
| Learning rate | 2e-5 |
| Epochs | 3 (early stopping) |
| Mixed precision | FP16 |
| GPU | NVIDIA RTX 5090 |
Labels
0: Légitime (question technique, discussion, aide)1: Spam/Promotion (publicité, arnaque, vente)
Troubleshooting
Faux positifs sur contenus techniques
Si vous obtenez des faux positifs (contenus légitimes classés spam), vérifiez :
- Version de transformers :
pip show transformers→ doit être<4.46.0 - Tokenizer : utilisez
nellaw/camembert-spam-detector-fr, pascamembert-base
# Corriger le problème
pip install 'transformers>=4.40.0,<4.46.0'
Licence
MIT
- Downloads last month
- 262
Evaluation results
- Accuracyself-reported0.998