Hugging Face pipeline pro analýzu sentimentu

Zpracování přirozeného jazyka (NLP) v Pythonu

Fouad Trad

Machine Learning Engineer

Rekapitulace: NLP workflow

Diagram celého workflow s poznámkou, že kapitola 1 se věnovala předzpracování a kapitola 2 extrakci příznaků.

Zpracování přirozeného jazyka (NLP) v Pythonu

Hugging Face pipeline

Diagram celého workflow s poznámkou, že kapitoly 3 a 4 se věnují pipeline Hugging Face, které zahrnují všechny kroky: předzpracování, extrakci příznaků a modelování.

  • Hotový workflow pokrývající všechny kroky jedním voláním funkce
  • Definice pipeline vyžaduje:
    • NLP úlohu
    • Model pro danou úlohu
Zpracování přirozeného jazyka (NLP) v Pythonu

Pipeline pro analýzu sentimentu

 

 

  • Úloha klasifikace textu
  • Předpovídá, zda text vyjadřuje pozitivní nebo negativní emoci

Obrázek zobrazující šťastný obličej s palcem nahoru pro pozitivní sentiment a smutný obličej s palcem dolů pro negativní sentiment.

Zpracování přirozeného jazyka (NLP) v Pythonu

Modely pro klasifikaci textu

Animovaný gif ukazující, jak procházet webem a vybrat správnou úlohu pro nalezení vhodných modelů.

1 https://huggingface.co/models
Zpracování přirozeného jazyka (NLP) v Pythonu

Pipeline v kódu

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}]
Zpracování přirozeného jazyka (NLP) v Pythonu

Analýza sentimentu na dávce textů

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}]
Zpracování přirozeného jazyka (NLP) v Pythonu

Hodnocení modelů analýzy sentimentu

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
Zpracování přirozeného jazyka (NLP) v Pythonu

Pojďme cvičit!

Zpracování přirozeného jazyka (NLP) v Pythonu

Preparing Video For Download...