Конвеєри Hugging Face для аналізу тональності

Natural Language Processing (NLP) in Python

Fouad Trad

Machine Learning Engineer

Підсумок: процес NLP

Повна схема робочого процесу: у розділі 1 було підготовлення даних, у розділі 2 — видобування ознак.

Natural Language Processing (NLP) in Python

Конвеєри Hugging Face

Повна схема процесу: у розділах 3 і 4 розглянемо конвеєри Hugging Face, що охоплюють усі кроки: підготовлення, видобування ознак і моделювання.

  • Готовий конвеєр, що виконує всі кроки одним викликом функції
  • Щоб визначити конвеєр, потрібно:
    • задачу NLP
    • модель для цієї задачі
Natural Language Processing (NLP) in Python

Конвеєри для аналізу тональності

 

 

  • Завдання класифікації тексту
  • Передбачає, чи текст виражає позитивну або негативну емоцію

Зображення: усміхнене обличчя з «лайком» для позитивної тональності та сумне обличчя з «дизлайком» для негативної.

Natural Language Processing (NLP) in Python

Моделі для класифікації тексту

GIF: як прокручувати сайт і обрати потрібну задачу, щоб підібрати моделі.

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

Конвеєри в коді

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) in Python

Аналіз тональності для пакета текстів

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) in Python

Оцінювання моделей аналізу тональності

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) in Python

Давайте потренуємось!

Natural Language Processing (NLP) in Python

Preparing Video For Download...