Лекция 6: Введение в ML и анализ тональности
Что такое машинное обучение?
Заголовок раздела «Что такое машинное обучение?»Машинное обучение (Machine Learning, ML) — направление искусственного интеллекта, где системы обучаются на данных.
Основные типы ML
Заголовок раздела «Основные типы ML»| Тип | Описание | Примеры |
|---|---|---|
| Обучение с учителем | Есть размеченные данные | Классификация, регрессия |
| Обучение без учителя | Данные не размечены | Кластеризация |
| Обучение с подкреплением | Система получает вознаграждение | Игры, робототехника |
Анализ тональности (Sentiment Analysis)
Заголовок раздела «Анализ тональности (Sentiment Analysis)»Анализ тональности — определение эмоциональной окраски текста.
Типы тональности
Заголовок раздела «Типы тональности»- Positive (позитивная) — “Отличная новость!”
- Negative (негативная) — “Ужасный сервис”
- Neutral (нейтральная) — “Сегодня sunny weather”
Предобученные модели
Заголовок раздела «Предобученные модели»Предобученные модели — модели, уже обучённые на больших корпусах текста.
HuggingFace Transformers
Заголовок раздела «HuggingFace Transformers»Библиотека для работы с предобученными моделей.
from transformers import pipeline
# Создаём пайплайн для анализа тональностиsentiment_pipeline = pipeline( "sentiment-analysis", model="blanchefort/rubert-base-cased-sentiment")
# Анализируем текстresult = sentiment_pipeline("Отличный день!")print(result)# [{'label': 'POSITIVE', 'score': 0.9876}]Для русского языка
Заголовок раздела «Для русского языка»Популярные модели для русского:
blanchefort/rubert-base-cased-sentiment— RuBERT для тональностиcointegrated/rubert-tiny2-toxicity— маленькая модель
Практика
Заголовок раздела «Практика»from transformers import pipeline
class SentimentAnalyzer: def __init__(self): self.pipeline = pipeline( "sentiment-analysis", model="blanchefort/rubert-base-cased-sentiment" )
def analyze(self, text): """Анализ тональности текста.""" result = self.pipeline(text)[0]
# Преобразуем лейблы label_map = { "POSITIVE": "positive", "NEGATIVE": "negative", "NEUTRAL": "neutral" }
return label_map.get(result["label"], "neutral")
def analyze_batch(self, texts): """Анализ списка текстов.""" return [self.analyze(t) for t in texts]Статистика по тональности
Заголовок раздела «Статистика по тональности»import pandas as pd
def sentiment_stats(df): """Статистика по тональности.""" stats = df['sentiment'].value_counts() print("Распределение тональности:") for sentiment, count in stats.items(): percent = (count / len(df)) * 100 print(f"{sentiment}: {count} ({percent:.1f}%)")Что дальше?
Заголовок раздела «Что дальше?»Модели можно обучать на своих данных, но это требует:
- Размеченного датасета
- Мощной видеокарты
- Времени и знаний