Pipelines Hugging Face pour l'analyse de sentiment

Natural Language Processing (NLP) en Python

Fouad Trad

Machine Learning Engineer

Rappel : flux de travail en TALN

Le schéma complet du flux de travail indiquant que le chapitre 1 a couvert le prétraitement et le chapitre 2 l'extraction de caractéristiques.

Natural Language Processing (NLP) en Python

Pipelines Hugging Face

Le schéma complet du flux de travail indiquant que les chapitres 3 et 4 couvriront les pipelines Hugging Face qui englobent toutes les étapes : prétraitement, extraction de caractéristiques et modélisation.

  • Flux clé en main qui gère tout en un seul appel de fonction
  • Pour définir un pipeline, il faut :
    • Tâche de TALN
    • Modèle pour exécuter la tâche
Natural Language Processing (NLP) en Python

Pipelines pour l'analyse de sentiment

 

 

  • Tâche de classification de texte
  • Prédit si un texte exprime une émotion positive ou négative

Image montrant un visage heureux avec le pouce levé pour un sentiment positif, et un visage triste avec le pouce baissé pour un sentiment négatif.

Natural Language Processing (NLP) en Python

Modèles pour la classification de texte

Un gif montrant comment défiler sur le site et choisir la bonne tâche pour obtenir des modèles adaptés.

1 https://huggingface.co/models
Natural Language Processing (NLP) en Python

Pipelines en code

from transformers import pipeline

classification_pipeline = pipeline(
task="sentiment-analysis", # or text-classification
model="distilbert/distilbert-base-uncased-finetuned-sst-2-english" )
result = classification_pipeline("I really liked the movie!!")
print(result)
[{'label': 'POSITIVE', 'score': 0.9998093247413635}]
Natural Language Processing (NLP) en Python

Analyse de sentiment sur un lot de textes

texts = ["I really liked the movie!!",
         "Great job ruining my day.",
         "This product exceeded my expectations.",
         "Wow, just what I needed... another problem.", 
         "Absolutely fantastic experience!"]

results = classification_pipeline(texts)
print(results)
[{'label': 'POSITIVE', 'score': 0.9998093247413635}, 
 {'label': 'NEGATIVE', 'score': 0.8666700124740601}, 
 {'label': 'POSITIVE', 'score': 0.998874843120575}, 
 {'label': 'POSITIVE', 'score': 0.98626708984375}, 
 {'label': 'POSITIVE', 'score': 0.9998812675476074}]
Natural Language Processing (NLP) en Python

Évaluer des modèles d'analyse de sentiment

texts = ["I really liked the movie!!",
         "Great job ruining my day.",
         "This product exceeded my expectations.",
         "Wow, just what I needed... another problem.", 
         "Absolutely fantastic experience!"]

true_labels = ["POSITIVE", "NEGATIVE", "POSITIVE", "NEGATIVE", "POSITIVE"]
results = classification_pipeline(texts)
predicted_labels = [result['label'] for result in results]
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(true_labels, predicted_labels)

print(f"Accuracy: {accuracy}")
Accuracy: 0.80
Natural Language Processing (NLP) en Python

Passons à la pratique !

Natural Language Processing (NLP) en Python

Preparing Video For Download...