🏢 Ситуация
Руководитель поддержки приходит к Лене:
«5 000 обращений в день. Операторы тратят первые 40 секунд каждого тикета на то, чтобы понять, куда его отнести: платежи, доставка, возвраты, аккаунт, фрод. Это 55 человеко-часов в день на сортировку!»
Лена:
«Автоклассификация тикетов — идеальная первая NLP-задача. У нас 200 000 исторических тикетов с категориями, проставленными операторами. Начни с TF-IDF + линейной модели, потом сравни с предобученным трансформером. Русский язык, опечатки, сленг — добро пожаловать в реальный NLP.»
🎯 Ваша задача
- Понять, как текст превращается в числа: от мешка слов до эмбеддингов.
- Построить бейзлайн TF-IDF + логрег.
- Сравнить с дообученным трансформером и решить, что тащить в прод.
📚 Теория
Текст → числа: эволюция подходов
- Bag of Words: текст = вектор счётчиков слов. Теряет порядок слов.
- TF-IDF: счётчики, взвешенные редкостью слова в корпусе. Частое в документе, но редкое в корпусе слово («возврат») важнее, чем частое везде («здравствуйте»). До сих пор сильнейший бейзлайн для классификации.
- Word embeddings (word2vec, fastText): слово → плотный вектор; похожие по смыслу слова близки. fastText учит векторы по символьным n-граммам — устойчив к опечаткам.
- Трансформеры (BERT и наследники): вектор слова зависит от контекста («карта заблокирована» vs «карта города»). Предобучены на огромных корпусах, дообучаются (fine-tuning) под задачу.
Пайплайн классического NLP
- Токенизация — разбить на слова/токены.
- Нормализация: нижний регистр; лемматизация (для русского критична: «платежа», «платежу», «платежей» → «платёж»).
- N-граммы: пары слов ловят «не работает», «не пришли деньги» — отрицания меняют смысл.
Когда что использовать
| Подход | Плюсы | Минусы |
|---|---|---|
| TF-IDF + линейная модель | быстро, дёшево, интерпретируемо, CPU | не понимает контекст и синонимы |
| Fine-tuned трансформер | лучшее качество, устойчивость к формулировкам | GPU, латентность, сложнее поддержка |
Решение — как всегда, из требований: латентность, бюджет, размер выигрыша.