Обработка естественного языка

Text classification

Классификация текстов

актуальноТекущий рабочий стандарт

Отнесение документа к одной или нескольким категориям: от спам-фильтра до маршрутизации тикетов.

Ключевые тезисы

  • Бейзлайн TF-IDF + логистическая регрессия ставится за минуты.
  • Дообученный BERT обычно даёт заметный прирост качества.
  • Дисбаланс классов требует взвешивания и метрик за пределами accuracy.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Практический пайплайн

От бейзлайна за пять минут до дообученного трансформера.

  1. Бейзлайн: TF-IDF (слова + символьные n-граммы) и логистическая регрессия.
  2. Быстрое улучшение: линейная модель на предобученных эмбеддингах.
  3. Максимум качества: дообучение BERT-подобной модели с головой-классификатором.
  4. Всегда: стратифицированная кросс-валидация и метрики по каждому классу.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

pipe = make_pipeline(
    TfidfVectorizer(ngram_range=(1, 2), min_df=3, sublinear_tf=True),
    LogisticRegression(max_iter=1000, class_weight="balanced"),
)
Бейзлайн, который на многих задачах отстаёт от трансформера всего на несколько процентов
2

Дисбаланс и многоклассовость

Что делать, когда классов 50, а половина встречается по десять раз.

  • Смотрите отчёт по классам (classification_report), а не общий accuracy.
  • Взвешивание классов в функции потерь — первый и самый дешёвый шаг.
  • Редкие классы: объединяйте в «прочее» или решайте отдельной моделью.
  • Иерархическая классификация (сначала группа, затем класс внутри) часто работает лучше плоской.
0.000.250.500.751.00оценка моделипорогкласс 0класс 1
Precision0.941
Recall0.841
F10.888
Accuracy0.936
TP / FP / FN252 / 16 / 48
Для каждого класса порог можно подбирать отдельно — это заметно поднимает macro-F1

Связанные темы

Работа с корпусами текстов · Прикладные задачи NLP

Topic Modeling75%

Тематическое моделирование · Обработка естественного языка

Автоматическое выделение тем в коллекции документов: от классического LDA до кластеризации эмбеддингов.

Summarization75%

Суммаризация · Обработка естественного языка

Сжатие текста с сохранением смысла: извлекающая (выбор предложений) и абстрактивная (генерация).

LLM Evaluation75%

Оценка языковых моделей · Генеративный ИИ

Как измерять качество генерации: бенчмарки, оценка моделью-судьёй и человеческие сравнения.

Perplexity75%

Перплексия · Метрики

Экспонента кросс-энтропии языковой модели: между сколькими равновероятными вариантами она в среднем выбирает.

Clustering75%

Кластеризация · Обучение без учителя

Разбиение объектов на группы похожих без заранее известных меток.

NER75%

Извлечение именованных сущностей · Обработка естественного языка

Разметка последовательности: находим в тексте имена, организации, даты, суммы.

Sentiment Analysis75%

Анализ тональности · Обработка естественного языка

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

BERT75%

BERT · Обработка естественного языка

Двунаправленный энкодер, предобученный на восстановлении замаскированных токенов.

Embeddings75%

Эмбеддинги · Обработка естественного языка

Плотные векторные представления объектов, где геометрическая близость означает смысловое сходство.

F175%

F1-мера · Метрики

Гармоническое среднее точности и полноты — компромисс между ними одним числом.

Precision75%

Точность · Метрики

Какая доля объектов, предсказанных положительными, действительно положительна.

Recall75%

Полнота · Метрики

Какая доля реально положительных объектов найдена моделью.