Potoki Hugging Face do analizy sentymentu

Przetwarzanie języka naturalnego (NLP) w Pythonie

Fouad Trad

Machine Learning Engineer

Podsumowanie: przepływ pracy NLP

Diagram pełnego przepływu pracy: rozdział 1 obejmował przetwarzanie wstępne, a rozdział 2 ekstrakcję cech.

Przetwarzanie języka naturalnego (NLP) w Pythonie

Potoki Hugging Face

Diagram pełnego przepływu pracy: rozdziały 3 i 4 obejmują potoki Hugging Face, które łączą wszystkie etapy: przetwarzanie wstępne, ekstrakcję cech i modelowanie.

  • Gotowy przepływ pracy obsługujący wszystkie etapy w jednym wywołaniu funkcji
  • Definiowanie potoku wymaga:
    • Zadania NLP
    • Modelu do wykonania zadania
Przetwarzanie języka naturalnego (NLP) w Pythonie

Potoki do analizy sentymentu

 

 

  • Zadanie klasyfikacji tekstu
  • Przewiduje, czy tekst wyraża pozytywne lub negatywne emocje

Obraz przedstawiający uśmiechniętą twarz z kciukiem w górę dla sentymentu pozytywnego oraz smutną twarz z kciukiem w dół dla sentymentu negatywnego.

Przetwarzanie języka naturalnego (NLP) w Pythonie

Modele do klasyfikacji tekstu

GIF pokazujący, jak przewijać stronę i wybrać odpowiednie zadanie, aby znaleźć właściwe modele.

1 https://huggingface.co/models
Przetwarzanie języka naturalnego (NLP) w Pythonie

Potoki w kodzie

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}]
Przetwarzanie języka naturalnego (NLP) w Pythonie

Analiza sentymentu na zbiorze tekstów

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}]
Przetwarzanie języka naturalnego (NLP) w Pythonie

Ocena modeli analizy sentymentu

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
Przetwarzanie języka naturalnego (NLP) w Pythonie

Czas na ćwiczenia!

Przetwarzanie języka naturalnego (NLP) w Pythonie

Preparing Video For Download...