Пайплайны Hugging Face для анализа тональности

Обработка естественного языка (NLP) на Python

Fouad Trad

Machine Learning Engineer

Повторение: рабочий процесс NLP

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

Обработка естественного языка (NLP) на Python

Пайплайны Hugging Face

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

  • Готовый рабочий процесс, охватывающий все этапы в одном вызове функции
  • Для определения пайплайна нужно указать:
    • задачу NLP
    • модель для выполнения задачи
Обработка естественного языка (NLP) на Python

Пайплайны для анализа тональности

 

 

  • Задача классификации текста
  • Определяет, выражает ли текст положительную или отрицательную эмоцию

Изображение: улыбающееся лицо с большим пальцем вверх — положительная тональность; грустное лицо с большим пальцем вниз — отрицательная тональность.

Обработка естественного языка (NLP) на Python

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

Анимация: прокрутка сайта и выбор нужной задачи для поиска подходящих моделей.

1 https://huggingface.co/models
Обработка естественного языка (NLP) на 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}]
Обработка естественного языка (NLP) на 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}]
Обработка естественного языка (NLP) на 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
Обработка естественного языка (NLP) на Python

Давайте потренируемся!

Обработка естественного языка (NLP) на Python

Preparing Video For Download...