Data Science
NLP для Data Science
Twitter обрабатывает 500 миллионов твитов в день. Каждый - классифицируется, анализируется на sentiment, токсичность, категорию. Без NLP это 200 000 модераторов. С NLP - несколько сотен ML-инженеров и GPU-кластер. Один алгоритм TF-IDF + LogReg, запущенный в 2006, до сих пор работает в production у крупнейших компаний.
- Gmail использует Naive Bayes + embeddings для спам-фильтрации 1.5 млрд пользователей - точность 99.9%, от 1 до 3 ГБ спама блокируется ежеминутно
- Amazon применяет BERT-based модели для анализа 100+ миллионов отзывов - автоматически выделяет аспекты (качество, цена, доставка) и агрегирует sentiment
- Bloomberg Terminal интегрировал NLP sentiment из 1.5 млн новостных источников - trading-алгоритмы реагируют на изменение sentiment за миллисекунды
Классификация текста: от Bag-of-Words до BERT
Классификация текста - одна из самых коммерчески ценных NLP-задач. Спам или не спам. Токсичный комментарий или нет. Категория жалобы пользователя. В 2024 году крупные компании обрабатывают миллиарды текстовых событий в сутки именно через классификацию.
Пайплайн классификации: токенизация -> векторизация -> классификатор. Традиционный подход: TF-IDF векторизация + Logistic Regression или SVM. Быстро, интерпретируемо, работает с малыми данными. Современный: fine-tuned BERT через Hugging Face, точность выше на 5-15%, но требует GPU и больших данных.
TF-IDF (Term Frequency-Inverse Document Frequency) - весовая схема. TF: как часто слово встречается в документе. IDF: логарифм обратной частоты документов со словом. Слово 'хороший' встречается везде - низкий IDF, мало информативно. 'Нейронная' встречается редко - высокий IDF, информативно. Произведение TF*IDF = вес.
Когда TF-IDF достаточно: коммерческое NLP при <10K обучающих примеров, latency критична (inference < 1мс против 100мс у BERT), нужна интерпретируемость (важные фичи видны через коэффициенты LogReg). BERT выигрывает при >50K примеров, сложных семантических зависимостях, multilingual задачах.
Почему IDF часть в TF-IDF важна для классификации?
Sentiment Analysis: полярность и нюансы
Sentiment analysis - частный случай классификации. Positive/Negative/Neutral. Или 5-звёздочная шкала. Или аспектный sentiment (в отзыве: еда отличная, сервис плохой). Коммерческое применение: мониторинг репутации бренда в Twitter, анализ отзывов товаров, трейдинговые сигналы из новостей.
Лексические подходы (VADER, TextBlob) - без обучения, через словари полярных слов. VADER специально настроен для социальных сетей: учитывает капслок ('AWFUL' хуже 'awful'), пунктуацию ('!!!'), эмодзи, сленг. Работает без обучения - удобно для прототипов.
Аспектный sentiment (ABSA - Aspect-Based Sentiment Analysis) - сложная задача. Отзыв 'Еда была вкусной, но официанты грубые' содержит positive к еде и negative к сервису. Twitter API + GPT-4 structured output - популярный production подход 2024: gpt-4o-mini обрабатывает 1000 отзывов за 20 центов с точностью 92%.
Торговые сигналы из sentiment: Bloomberg Terminal, Reuters Eikon интегрируют NLP sentiment из новостей. Исследования (Бюро Финансовых исследований, 2019) показывают: sentiment из Twitter коррелирует с рыночными движениями за 3-5 дней. Но корреляция не причинность - всегда помни об этом.
В чём преимущество VADER перед ML-моделью для sentiment?
Topic Modeling: структура без разметки
Topic modeling - unsupervised: нет разметки, нет классов. Алгоритм сам находит скрытые темы в корпусе. 10 000 новостных статей - алгоритм выделяет: тема 1 (спорт: футбол, игрок, мяч), тема 2 (политика: президент, закон, парламент), тема 3 (технологии: AI, стартап, инвестиции).
LDA (Latent Dirichlet Allocation, Blei 2003) - классический алгоритм. Предположение: документ - смесь тем, тема - распределение слов. Bayesian inference через вариационный EM или Gibbs sampling. Гиперпараметры alpha (диrichlet prior на темы в документе) и eta (prior на слова в теме) контролируют разреженность.
BERTopic (2022) - современная альтернатива LDA. Embeddings через Sentence-BERT, UMAP для dimensionality reduction, HDBSCAN для кластеризации. Качество тем значительно выше LDA при больших данных. Недостаток: требует GPU, медленнее. LDA на 100K документов - 5 минут. BERTopic - 30 минут на CPU, 5 минут на GPU.
Coherence score - метрика качества тем. CV-coherence измеряет семантическую согласованность слов в теме через PMI (Point-wise Mutual Information). Чем выше coherence, тем 'понятнее' темы для человека. Оптимальное N тем: строить coherence curve по N от 5 до 50, выбирать elbow.
Почему для LDA используют CountVectorizer, а не TF-IDF?
Text Embeddings: смысл в пространстве векторов
Word2Vec, 2013. Mikolov et al. Google. 'king - man + woman = queen'. Слова в 300-мерном пространстве, арифметика смысла работает. Это был прорыв - не потому что магия, а потому что со-встречаемость слов в огромном корпусе кодирует семантику.
В 2024 году используют sentence embeddings, а не word embeddings. `text-embedding-3-small` от OpenAI: 1536-мерный вектор для фразы, 0.02 цента за 1 млн токенов. Sentence-BERT (SBERT): локальная модель, 768 или 1024 измерения. Косинусное сходство двух векторов = семантическое сходство предложений.
RAG (Retrieval-Augmented Generation) строится поверх embeddings. Документы -> embeddings -> Qdrant/Pinecone. Запрос -> embedding -> ANN search -> топ-K релевантных чанков -> GPT-4 с контекстом. Perplexity.ai обрабатывает 100M+ запросов в месяц именно так. Качество RAG критически зависит от качества embeddings.
Матрёшка embeddings (Matryoshka Representation Learning, MRL): одна модель, несколько уровней детализации. text-embedding-3-small поддерживает dimension reduction до 512 или 256 без переобучения. Короткий вектор = быстрый поиск, длинный = точнее. Можно адаптивно выбирать под latency бюджет.
NLP задачи всегда требуют больших языковых моделей и GPU
TF-IDF + LogReg покрывает 80% коммерческих NLP задач с меньшими данными, без GPU и с интерпретируемостью
BERT/GPT точнее, но требуют 100K+ размеченных примеров, GPU для инференса, более сложного деплоя. TF-IDF + классический ML работает с 1000 примерами, инференс < 1мс на CPU. Для спам-фильтра или категоризации тикетов классика часто лучший выбор
Почему sentence embeddings точнее word embeddings для semantic search?
Связанные темы
NLP пересекается с Deep Learning, рекомендательными системами и RAG:
- Recommender Systems — Text embeddings используются для content-based рекомендаций
- RAG: Retrieval-Augmented Generation — Text embeddings - фундамент RAG pipeline
Ключевые идеи
- Классификация: TF-IDF + LogReg для малых данных, fine-tuned BERT для больших - выбор по объему данных
- Sentiment: VADER без данных, ML-модели для точности, LLM для аспектного анализа
- Topic Modeling: LDA для интерпретируемости, BERTopic для качества - CV-coherence как метрика
- Embeddings: sentence > word, RAG строится поверх, cosine similarity = семантическая близость
Вопросы для размышления
- Как выбрать оптимальное число тем в LDA - без ручной проверки каждого варианта?
- Когда sentence embeddings лучше TF-IDF для классификации, и как проверить это эмпирически?
- Какие NLP задачи ещё не решаются embeddings хорошо, и почему?
Связанные уроки
- ds-16 — NLP embeddings - основа для recommender systems
- dl-08 — Deep learning для NLP - BERT и трансформеры
- gai-16 — RAG строится поверх text embeddings
- ds-14 — Feature engineering - базис для NLP пайплайна
- ml-34-text-preprocessing