Inference Unlimited

Создание собственного инструмента для анализа тональности с использованием LLM

Введение

Анализ тональности — это процесс определения эмоционального тона текста, который может применяться в различных областях, таких как маркетинг, обслуживание клиентов или исследования общественного мнения. В этой статье мы покажем, как создать собственный инструмент для анализа тональности, используя большие языковые модели (LLM).

Выбор модели

Первым шагом является выбор подходящей языковой модели. Мы можем выбрать между:

Для нашего примера мы используем Hugging Face Transformers с моделью DistilBERT, которая является более легкой версией BERT и хорошо подходит для задач анализа тональности.

Установка необходимых библиотек

Чтобы начать, установим необходимые библиотеки:

pip install transformers torch pandas

Загрузка модели и токенизатора

Далее загрузим модель и токенизатор:

from transformers import pipeline

# Загрузка готового инструмента для анализа тональности
sentiment_pipeline = pipeline("sentiment-analysis")

Подготовка данных

Подготовим набор данных для тестирования. Мы можем использовать простой пример:

texts = [
    "Я люблю этот продукт, он фантастический!",
    "Не рекомендую, очень разочарован.",
    "Средний продукт, ничего особенного.",
    "Действие удовлетворительное, но цена слишком высокая."
]

Анализ тональности

Теперь мы можем провести анализ тональности для наших текстов:

results = sentiment_pipeline(texts)

for text, result in zip(texts, results):
    print(f"Текст: {text}")
    print(f"Тональность: {result['label']} (Уверенность: {result['score']:.2f})")
    print("---")

Настройка модели

Если мы хотим настроить модель под наши специфические данные, мы можем использовать библиотеку Hugging Face Transformers для обучения модели на нашем наборе данных.

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import pandas as pd
from sklearn.model_selection import train_test_split

# Пример набора данных
data = pd.DataFrame({
    "text": ["Я люблю этот продукт", "Не рекомендую", "Средний продукт"],
    "label": [1, 0, 0]  # 1 - положительный, 0 - отрицательный
})

# Разделение данных на обучающий и тестовый наборы
train_texts, test_texts, train_labels, test_labels = train_test_split(
    data["text"], data["label"], test_size=0.2
)

# Загрузка токенизатора и модели
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# Токенизация данных
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)

# Класс для обработки данных
class SentimentDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, labels):
        self.encodings = encodings
        self.labels = labels

    def __getitem__(self, idx):
        item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
        item["labels"] = torch.tensor(self.labels[idx])
        return item

    def __len__(self):
        return len(self.labels)

train_dataset = SentimentDataset(train_encodings, train_labels)
test_dataset = SentimentDataset(test_encodings, test_labels)

# Настройки обучения
training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=64,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="./logs",
    logging_steps=10,
)

# Обучение модели
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=test_dataset
)

trainer.train()

Внедрение модели

После обучения модели мы можем сохранить её и использовать для анализа тональности:

model.save_pretrained("./custom_sentiment_model")
tokenizer.save_pretrained("./custom_sentiment_model")

# Загрузка настроенной модели
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")

# Пример анализа
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Этот продукт отличный!"))

Итог

В этой статье мы показали, как создать собственный инструмент для анализа тональности, используя большие языковые модели. Пошагово мы рассмотрели выбор модели, подготовку данных, анализ тональности и настройку модели под наши нужды. Благодаря этому инструменту мы можем эффективно анализировать эмоциональный тон текстов в различных областях.

Język: RU | Wyświetlenia: 4

← Powrót do listy artykułów