В последние годы профессия специалиста по данным претерпела значительные трансформации, аналогичные эволюции используемых технологий. Несмотря на это, не стоит полностью отвергать проверенные методы прошлого в пользу новейших решений, таких как большие языковые модели или агентный ИИ, поскольку многие задачи все еще эффективно решаются классическими инструментами.
В этой статье рассматривается единая задача — определение намерения в твите как положительного, отрицательного или нейтрального. Анализ проводится с применением традиционного машинного обучения, глубокого обучения и больших языковых моделей. Реализация выполняется на Python, с объяснением причин выбора каждого метода. По итогам чтения станет ясно:
- Инструменты из ранних периодов развития науки о данных по-прежнему актуальны, их стоит изучать и применять в подходящих ситуациях.
- При отборе алгоритма необходимо учитывать задержку, точность и стоимость для конкретного сценария.
- Изменения в сфере науки о данных неизбежны и требуют открытого подхода без опасений.
1. Сценарий задачи
Рассматриваемый случай представляет собой распространенное применение в науке о данных и ИИ — анализ настроений. Это подразумевает извлечение эмоциональной окраски из текста, что полезно для сбора отзывов о товарах, фильмах или рекомендациях. В данном материале фокус на классификации эмоций в твитах.
Для обеспечения контроля над данными вместо реальных твитов из сети используются синтетические примеры, созданные большими языковыми модели. Такой подход позволяет регулировать сложность и разнообразие задачи, наблюдая реакцию различных методов.
- Простой вариант: положительные твиты напоминают открытки, отрицательные — прямолинейны, нейтральные касаются погоды или кофе. Если модель испытывает трудности здесь, то проблема в другом.
- Более сложный вариант: сохраняются положительные, отрицательные и нейтральные категории, но добавляются сарказм, смешанные тона и тонкие намеки, требующие учета контекста. Кроме того, объем данных для обучения уменьшен, что создает меньший набор для тренировки.
- Особо сложный вариант: переход к пяти эмоциям — положительная, отрицательная, гнев, отвращение, зависть, — где модель должна разбирать более богатые и многослойные фразы. При этом данных для обучения нет вовсе: тренировка невозможна.
Цель — разработать эффективную систему классификации, способную точно улавливать настроение твитов. Рассмотрим возможные пути решения.
2. Проектирование системы
Полезно учитывать следующую схему:

Точность, задержка и масштабируемость в системе машинного обучения образуют треугольник, где одновременно можно оптимизировать лишь два аспекта.
Модель может быть высоко точной и хорошо масштабируемой для миллионов записей, но медленной. Или быстрой и масштабируемой, но с меньшей точностью. Или точной и быстрой, но с ограниченной масштабируемостью. Эти принципы универсальны и помогают определять архитектуру системы. К ним вернемся позже.
Мощность модели должна соответствовать объему обучающего набора. Обычно стремятся минимизировать ошибку на обучающем множестве без роста ошибки на тестовом (известное переобучение).

Избегать зон недообучения или переобучения важно. Недообучение возникает, когда модель слишком проста и не улавливает паттерны данных — словно попытка провести прямую линию через спираль. Переобучение — обратная ситуация: модель запоминает обучающие данные, включая шум, и хорошо работает на знакомом, но слабо на новом. Оптимально — баланс, где модель постигает структуру без механического запоминания.
К этому аспекту также вернемся.
3. Простой случай: традиционное машинное обучение
Начинаем с наиболее благоприятного сценария: структурированный набор из 1000 твитов, сгенерированных и помеченных. Три класса (положительный, нейтральный, отрицательный) сбалансированы, язык ясен, данные в чистом CSV-формате.
Сначала выполняется базовый импорт библиотек.
Осмотрим структуру набора данных:

Этот подход не масштабируется на миллионы строк из-за чрезмерной структурированности. Однако для небольшого и специфического сценария он обеспечивает высокую скорость и точность. Переходим к моделированию. Три ключевых момента:
- Разделение на обучающую и тестовую выборки с 20% данных в тестовой.
- Применение TF-IDF для получения векторных представлений слов. TF-IDF — классический метод, преобразующий текст в числовые значения путем взвешивания терминов по частоте в документе относительно всего корпуса.
- Комбинация с двумя моделями из scikit-learn: логистическая регрессия и машины опорных векторов. Логистическая регрессия проста и интерпретируема, служит надежной базой для классификации текстов. Машины опорных векторов ищут оптимальную границу между классами и эффективны при низком уровне шума.
Обе модели демонстрируют практически идеальную производительность.

Для такого базового сценария с 1000 строками традиционный метод справляется безупречно. Нет необходимости в моделях с миллиардами параметров, подобных GPT.
4. Сложный случай: глубокое обучение
Второй набор данных также синтетический, но намеренно усложненный. Классы остаются прежними — положительный, отрицательный, нейтральный, — но твиты включают сарказм, смешанные интонации и завуалированные комплименты. Обучающий пул уменьшен, валидационный — увеличен, что усиливает неоднозначность.
В условиях неоднозначности требуются более мощные инструменты. Модели глубокого обучения для встраиваний сохраняют точность и масштабируемость (вспомним треугольник и график ошибки). Они улавливают смысл слов через контекст, а не как изолированные токены.
В материалах используется BERT — одна из наиболее известных моделей встраиваний. Сначала импорт библиотек:
Затем вспомогательные функции.
Эти инструменты позволяют сравнить модель встраиваний с TF-IDF.


TF-IDF сильно уступает в распознавании положительных меток, в то время как модель встраиваний (BERT) поддерживает высокий уровень точности.
5. Особо сложный случай: агент на базе LLM
Теперь усложним максимально:
- Доступно лишь 100 строк.
- Метки неизвестны, поэтому обучение моделей невозможно.
- Пять классов: зависть, отрицательный, положительный, отвращение, гнев.

Без возможности обучения классификация требует метода, уже содержащего знания о категориях. Большие языковые модели идеально подходят для этого.
Применение LLM к предыдущим случаям было бы избыточным, словно использовать пушку против мухи. Здесь же это оправдано: задача трудна, а без обучающего набора другие варианты исключены.
Достигается высокая точность на большом масштабе, но API требует времени — около секунды-двух на ответ (вспомним треугольник).
Импорт библиотек:
Вызов API для классификации:
LLM выполняет классификацию на отличном уровне:
6. Итоги
За минувшее десятилетие роль специалиста по данным эволюционировала параллельно с технологиями. Это может создать впечатление, что стоит сразу прибегать к самым мощным инструментам, но такой путь не всегда оптимален.
Вместо этого задача анализировалась через призму точности, задержки и стоимости.
В частности, процесс включал:
- Определение сценария как классификации настроений твитов для выявления положительного, отрицательного или нейтрального намерения. Созданы три набора данных возрастающей сложности: чистый, саркастический и без обучения.
- Решение простого случая с TF-IDF в сочетании с логистической регрессией и машинами опорных векторов. Твиты были четкими, и модели показали почти идеальные результаты.
- Переход к сложному случаю с сарказмом, смешанными тонами и контекстными нюансами. Применены встраивания BERT для захвата смысла за пределами отдельных слов.
- Наконец, особо сложный случай без обучающих данных решен с помощью большой языковой модели через нулевое обучение.
Каждый этап подчеркивает, что выбор инструмента зависит от задачи. Традиционное машинное обучение быстро и надежно для структурированных данных. Модели глубокого обучения полезны, когда смысл скрыт в контексте. Большие языковые модели эффективны при отсутствии меток или необходимости широкой обобщаемости.