Pipeline-uri Hugging Face pentru analiza sentimentelor

Procesarea Limbajului Natural (NLP) în Python

Fouad Trad

Machine Learning Engineer

Recapitulare: fluxul de lucru NLP

Diagrama completă a fluxului de lucru, menționând că Capitolul 1 a acoperit preprocesarea și Capitolul 2 a acoperit extragerea caracteristicilor.

Procesarea Limbajului Natural (NLP) în Python

Pipeline-uri Hugging Face

Diagrama completă a fluxului de lucru, menționând că Capitolele 3 și 4 vor acoperi pipeline-urile Hugging Face, care înglobează toți pașii: preprocesare, extragerea caracteristicilor și modelare.

  • Flux de lucru gata de utilizare, care gestionează toți pașii printr-un singur apel de funcție
  • Definirea unui pipeline necesită:
    • Sarcina NLP
    • Modelul pentru sarcina respectivă
Procesarea Limbajului Natural (NLP) în Python

Pipeline-uri pentru analiza sentimentelor

 

 

  • Sarcină de clasificare a textului
  • Prezice dacă textul exprimă o emoție pozitivă sau negativă

Imagine cu o față fericită și un deget în sus pentru sentiment pozitiv, și o față tristă cu un deget în jos pentru sentiment negativ.

Procesarea Limbajului Natural (NLP) în Python

Modele pentru clasificarea textului

Un gif care arată cum să navigați pe site și să selectați sarcina potrivită pentru a obține modele adecvate.

1 https://huggingface.co/models
Procesarea Limbajului Natural (NLP) în Python

Pipeline-uri în cod

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}]
Procesarea Limbajului Natural (NLP) în Python

Analiza sentimentelor pe un lot de texte

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}]
Procesarea Limbajului Natural (NLP) în Python

Evaluarea modelelor de analiză a sentimentelor

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
Procesarea Limbajului Natural (NLP) în Python

Să exersăm!

Procesarea Limbajului Natural (NLP) în Python

Preparing Video For Download...