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
NLP для Data Science

0

1

Войти