Перейти к содержимому

Лекция 6: Введение в ML и анализ тональности

Машинное обучение (Machine Learning, ML) — направление искусственного интеллекта, где системы обучаются на данных.

ТипОписаниеПримеры
Обучение с учителемЕсть размеченные данныеКлассификация, регрессия
Обучение без учителяДанные не размеченыКластеризация
Обучение с подкреплениемСистема получает вознаграждениеИгры, робототехника

Анализ тональности — определение эмоциональной окраски текста.

  • Positive (позитивная) — “Отличная новость!”
  • Negative (негативная) — “Ужасный сервис”
  • Neutral (нейтральная) — “Сегодня sunny weather”

Предобученные модели — модели, уже обучённые на больших корпусах текста.

Библиотека для работы с предобученными моделей.

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}%)")

Модели можно обучать на своих данных, но это требует:

  • Размеченного датасета
  • Мощной видеокарты
  • Времени и знаний

Архитектура и токены в современных языковых моделях

Заголовок раздела «Архитектура и токены в современных языковых моделях»
АрхитектураОписаниеПримеры
Encoder-DecoderВход → Выход → ПрогнозТрансформеры
Decoder-onlyТолько выход → ГенерацияТекстовые модели
RAGПамять → Поиск → ГенерацияМетоды RAG

Токены (Tokens)

  • Входные токены — количество токенов, которые модель может обработать за один запрос
  • Контекстные токены — общее количество токенов для всего запроса (включает заголовок и промпт)
  • Входные токены RAG — сохраняют состояние “вопроса/ответ” для RAG
  • Длина контекста: Обычно до 2048 или 4096 токенов (для GPT-3.5-turbo до 128k)
  • Цена: Влияет от количества использованных токенов

Примеры:

Контекст: "Напиши код на Python для анализа тональности."
Промпт: "Проанализируйте следующие новости и определите их тональность."
→ Модель: `gpt-4` (контекстные токены)

Для нашего курса используем простую архитектуру без сложных RAG-систем:

  • Токены — простое ограничение (до 2048 токенов)
  • Модели — небольшие (до 7B параметров)
  • Без RAG — без сохранения состояния

Это подходит для образовательных целей и позволяет студентам фокусироваться на основах без излишней сложности.