La recherche en IA te passionne ?
Les papers et avancées qui comptent, expliqués simplement, chaque soir. 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
Une nouvelle approche de la classification de texte
La classification de texte sans apprentissage préalable se distingue par sa capacité à attribuer des labels à des textes sans nécessiter de phase d'entraînement sur un ensemble de données spécifique. Contrairement aux méthodes traditionnelles, où un modèle est formé pour reconnaître des catégories prédéfinies, cette technique repose sur une compréhension générale du langage pour déterminer le label le plus approprié à partir d'une liste fournie.
Cette méthode s'avère particulièrement avantageuse dans des contextes où il est crucial de tester rapidement une idée ou de travailler avec des labels qui évoluent fréquemment. Elle permet également de créer des prototypes légers avant de s'engager dans un entraînement supervisé plus coûteux. Plutôt que de s'appuyer sur une correspondance fixe entre texte et labels, le modèle utilise sa compréhension du langage pour évaluer la signification de chaque label.
Fonctionnement de la classification sans apprentissage préalable
L'essence de cette approche réside dans le fait que le modèle ne considère pas les labels comme de simples catégories. Chaque label est transformé en une déclaration en langage naturel, et le modèle vérifie si cette déclaration est soutenue par le texte d'entrée. Cela rend cette méthode particulièrement utile pour des applications pratiques telles que le routage des tickets de support, le marquage d'articles, la détection de l'intention des utilisateurs ou l'organisation de documents internes.
Prenons un exemple concret : si le texte d'entrée est "L'entreprise a lancé une nouvelle plateforme d'IA pour les clients professionnels", et que les labels candidats sont "technologie", "sports", et "finance", le modèle reformule ces labels en déclarations telles que "Ce texte concerne la technologie". Il compare ensuite le texte à ces déclarations pour déterminer le label le plus pertinent.
Applications pratiques
Au lieu de se limiter à des labels de sujet généraux, une entreprise peut choisir des labels plus spécifiques comme "problème de facturation", "support technique" ou "demande de remboursement" pour classer les messages de service client. De même, pour les systèmes de modération, des labels comme "spam", "harcèlement" ou "sécurisé" peuvent être utilisés.
La classification sans apprentissage préalable n'est pas traitée comme un problème de classification traditionnel. Elle est plutôt considérée comme un problème de raisonnement sur la pertinence d'une description de label par rapport au texte. Cela explique pourquoi elle est efficace pour le prototypage rapide, les tâches à faibles ressources et les domaines où les données labellisées sont rares.
Exemples pratiques de mise en œuvre
Chargement du pipeline de classification
Pour commencer, il est nécessaire d'installer les bibliothèques requises :
pip install torch transformers
Ensuite, le pipeline peut être chargé :
from transformers import pipeline
classifier = pipeline(
"[zero-shot](/glossaire/zero-shot)-classification",
model="facebook/bart-large-mnli"
)
Ce pipeline offre un moyen simplifié d'utiliser un modèle pré-entraîné sans avoir à écrire du code d'inférence complexe. Le modèle facebook/bart-large-mnli est souvent utilisé pour cette tâche car il est conçu pour évaluer si un texte soutient un autre.
Exemple de classification simple
Voici un exemple de base :
text = "Ce tutoriel explique comment les modèles de transformateur sont utilisés en NLP."
candidate_labels = ["technologie", "santé", "sports", "finance"]
result = classifier(text, candidate_labels)
print(f"Meilleure prédiction : {result['labels'][0]} ({result['scores'][0]:.2%})")
Sortie :
- Meilleure prédiction : technologie (96.52%)
Cela montre que le modèle choisit le label qui correspond le mieux à la signification du texte. Étant donné que la phrase traite des modèles de transformateur et du traitement du langage naturel, "technologie" est le meilleur ajustement parmi les labels proposés.
Classification multi-labels
Il arrive qu'un texte appartienne à plusieurs catégories. Dans ce cas, l'option multi_label=True peut être activée :
text = "L'entreprise a lancé une application de santé et a annoncé une forte croissance commerciale."
candidate_labels = ["technologie", "santé", "affaires", "voyage"]
result = classifier(
text,
candidate_labels,
multi_label=True
)
threshold = 0.50
top_labels = [
(label, score)
for label, score in zip(result["labels"], result["scores"])
if score >= threshold
]
print("Meilleurs labels :", ", ".join(f"{label} ({score:.2%})" for label, score in top_labels))
Sortie :
- Meilleurs labels : santé (99.41%), technologie (99.06%), affaires (98.15%)
Cette fonctionnalité est utile lorsque plusieurs labels peuvent s'appliquer à un même texte. Dans cet exemple, la phrase concerne à la fois la technologie, la santé et les affaires, ce qui se reflète dans les scores élevés attribués à ces labels.
Personnalisation du modèle d'hypothèse
Il est également possible de personnaliser le modèle d'hypothèse. Bien que le pipeline utilise une formulation par défaut, un modèle plus clair ou plus naturel peut parfois améliorer les résultats :
text = "L'utilisateur ne peut pas accéder à son compte et continue de voir une erreur de connexion."
candidate_labels = ["support technique", "problème de facturation", "demande de fonctionnalité"]
result = classifier(
text,
candidate_labels,
hypothesis_template="Ce texte concerne {}."
)
for label, score in zip(result["labels"], result["scores"]):
print(f"{label}: {score:.4f}")
Sortie :
- support technique : 0.7349
- demande de fonctionnalité : 0.1683
- problème de facturation : 0.0968
Cette personnalisation est particulièrement utile lorsque les labels sont spécifiques à une tâche réelle. Un bon modèle d'hypothèse fournit au modèle une déclaration plus claire à évaluer, améliorant ainsi la correspondance entre le texte et le label souhaité.
Conclusion
La classification de texte sans apprentissage préalable offre une solution puissante pour éliminer le besoin d'un entraînement spécifique à une tâche dans de nombreux flux de travail en phase précoce. Plutôt que de collecter immédiatement des données labellisées, il est souvent possible d'obtenir des résultats utiles en choisissant des labels candidats clairs et en laissant le modèle raisonner à leur sujet.
L'idée clé est que le modèle ne prédit pas directement des labels dans le sens traditionnel. Il évalue si chaque label, formulé comme une hypothèse concise, est soutenu par le texte. C'est pourquoi les modèles entraînés sur MNLI, comme facebook/bart-large-mnli, sont si efficaces pour cette tâche.
En pratique, la qualité des résultats dépend fortement de la clarté des labels définis. Une formulation de label solide et un modèle d'hypothèse sensé peuvent faire une différence notable. Bien que la classification sans apprentissage préalable soit un excellent point de départ, elle fonctionne mieux lorsque la sémantique des catégories est soigneusement réfléchie.





