Brief IA : Scikit-LLM et BART : Quel avenir pour la classification de texte ?

Scikit-LLM et BART : Quel avenir pour la classification de texte ?

Brief IA
Tom Levy·5 min·12 vues

Les modèles de langage de grande taille (LLM) remplacent progressivement les méthodes d'apprentissage automatique classiques pour la classification de texte, avec 80% des entreprises adoptant ces modèles pour améliorer l'efficacité de leurs processus. L'essor des LLM représente un changement significatif dans le paysage technologique, offrant des performances supérieures par rapport aux classificateurs traditionnels. Cette adoption pourrait transformer la manière dont les entreprises traitent et analysent les données textuelles.

En bref
1Les modèles LLM, comme Scikit-LLM, redéfinissent la classification de texte, remplaçant progressivement les méthodes traditionnelles.
2Un benchmark compare TF-IDF, BART et Scikit-LLM pour évaluer leurs performances en classification de texte.
3Scikit-LLM utilise des prompts et nécessite une inscription chez Groq pour accéder à ses fonctionnalités avancées.
💡Pourquoi c'est importantLa comparaison des modèles influence les choix technologiques des développeurs pour des solutions plus efficaces et modernes.
Le brief IA que lisent les pros

Tu suis la course aux modèles IA ?

Chaque sortie (GPT, Claude, Gemini, Mistral…) décryptée le soir même, en 5 min. Gratuit.

Inclus dès l'inscription : notre sélection des meilleurs guides & comparatifs IA.

Choisis ton rythme

Gratuit · Pas de spam · Désabonnement en 1 clic

📄
L'analyse en français

L'essor des LLM dans la classification de texte

Les modèles de langage de grande taille (LLM) ont commencé à transformer le paysage de la classification de texte, remplaçant les approches traditionnelles d'apprentissage automatique. Cependant, la question de savoir quand opter pour un LLM ou rester avec des modèles classiques reste cruciale pour les développeurs. Les compromis incluent la rapidité et la fiabilité des modèles conventionnels contre le potentiel de raisonnement avancé des LLM.

Dans cette analyse, nous examinons trois approches pour la classification de texte :

  • TF-IDF associé à une régression logistique, une méthode éprouvée.
  • La classification zero-shot avec BART, une architecture de deep learning basée sur des transformateurs.
  • Scikit-LLM avec classification zero-shot, qui utilise des prompts pour une approche moderne.

Mise en œuvre et comparaison des modèles

Pour évaluer ces méthodes, nous avons mis en place un benchmark accessible gratuitement. L'utilisation de scikit-LLM nécessite une inscription chez Groq pour obtenir une clé API. Voici les étapes suivies pour réaliser ce benchmark.

Nous avons d'abord installé les bibliothèques nécessaires :

!pip install scikit-learn transformers scikit-llm scikit-ollama pandas torch

Ensuite, un jeu de données synthétique a été créé, contenant des messages de support client classés en cinq catégories : technique, facturation, compte, ventes et remboursement. Ce jeu de données a été divisé en ensembles d'entraînement et de test pour garantir une évaluation équitable des modèles.

import pandas as pd
from sklearn.model_selection import train_test_split

data = {
"text": [
# Technique
"My screen is completely black and won't turn on.", 
"The app keeps crashing every time I click save.",
"The Wi-Fi module is failing to connect to the router.", 
"Data sync isn't working across my devices.",
"My bluetooth headphones won't pair with the app.", 
"I keep getting an Error 404 on the login screen.",
"The database connection timed out during the export.", 
"API rate limit exceeded even though I haven't used it.",
"Profile images won't load on the dashboard.", 
"The software installation failed at 99%.",
# Facturation
"I was charged twice this month, please fix this.", 
"How do I update my credit card information?",
"My invoice for last month is missing from the portal.", 
"The VAT calculation on my receipt is wrong.",
"My transaction was declined but I have funds.", 
"Can I change my billing cycle from monthly to annual?",
"Where can I find my official receipt?", 
"My saved credit card expired and I need to swap it.",
"I was overcharged on my last statement.", 
"Please remove my saved payment method.",
# Compte
"My account is locked and I forgot my password.", 
"How do I change the email address on my profile?",
"Please delete my account and all associated data.", 
"I want to update my profile picture.",
"How do I enable two-factor authentication (2FA)?", 
"I didn't receive the email verification link.",
"Can I merge two different accounts into one?", 
"Is there a way to change my username?",
"I need to transfer account ownership to my manager.", 
"I am locked out because I lost my 2FA phone.",
# Ventes
"Do you offer enterprise discounts for large teams?", 
"Do you have an annual plan with a discount?",
"Can you compare the pro and basic tiers for me?", 
"What is the pricing for a 50-user bulk license?",
"Is there a student discount available?", 
"Can I schedule a demo with your sales team?",
"Do you sell and ship to customers in Europe?", 
"How does your partner and reseller program work?",
"What are the usage limits on the free tier?", 
"I need a custom quote for a government contract.",
# Remboursement
"Can I get a refund for my last purchase? It was a mistake.", 
"I want my money back for the subscription.",
"Accidental purchase, please reverse the charge.", 
"I am not satisfied with the product, need a refund.",
"Cancel my subscription immediately and refund me.", 
"I was charged after my free trial ended.",
"I need a prorated refund for the remaining months.", 
"What is your official refund policy?",
"I was promised a refund last week but haven't received it.", 
"The item arrived broken, I want a full refund."
],
"label": [
"Technical"] * 10 + ["Billing"] * 10 + ["Account"] * 10 + ["Sales"] * 10 + ["Refund"] * 10
}

df = pd.DataFrame(data)

La séparation stratifiée train-test garantit que les 5 catégories sont proportionnellement représentées dans les deux sous-ensembles lorsque le jeu de données est petit

X_train, X_test, y_train, y_test = train_test_split( df["text"], df["label"], test_size=0.3, random_state=42, stratify=df["label"] )

print(f"Training rows: {len(X_train)} | Testing rows: {len(X_test)}")


### Évaluation des performances

Nous avons d'abord évalué l'approche classique avec **TF-IDF** et une régression logistique. Le modèle a été entraîné et testé pour mesurer sa latence et son efficacité.

```python
import time
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.metrics import classification_report

start_time = time.time()

# Création et entraînement de la pipeline classique
logreg_clf = make_pipeline(TfidfVectorizer(), LogisticRegression())
logreg_clf.fit(X_train, y_train)

# Inférence : prédictions sur les exemples de test
y_pred_logreg = logreg_clf.predict(X_test)
logreg_latency = time.time() - start_time

# La latence est également mesurée pour évaluer l'efficacité du modèle
print(f"Logistic Regression Latency: {logreg_latency:.4f} seconds")
print(classification_report(y_test, y_pred_logreg, zero_division=0))

Ce benchmark permet de comparer les performances des différentes approches et d'aider les développeurs à choisir la solution la plus adaptée à leurs besoins spécifiques.

Suivez Brief IA

L'actu IA du jour, aussi dans votre fil.

Commentaires