Перейти к основному содержимому

NLP и работа с текстом

Разработчику

Natural Language Processing (NLP) — область ИИ, где вход и выход — естественный язык: предложения, абзацы, диалоги, документы. В отличие от табличного машинного обучения (Scikit-learn), текст не подаётся в модель как набор числовых столбцов без предварительной обработки. Сначала его нормализуют, разбивают на токены, превращают в числа — и только потом обучают или вызывают нейросеть.

С 2017 года доминирующая архитектура для NLP — трансформер (следующая статья). До неё широко применялись bag-of-words, TF-IDF, рекуррентные сети (RNN, LSTM). Эти методы остаются полезны для baseline и узких задач, но для качества на сложном языке сегодня почти всегда берут предобученный трансформер.


Задачи NLP

ЗадачаВходВыходПример
Классификация текстаДокумент или фразаМетка классаСпам / не спам, категория тикета
NER (Named Entity Recognition)ТекстМетки сущностейИмя, организация, дата
ТональностьОтзыв, постpositive / negative / neutralАнализ отзывов
Машинный переводТекст на языке AТекст на языке Ben → ru
СуммаризацияДлинный документКраткий пересказНовостная выжимка
QA (question answering)Вопрос + контекстОтвет или spanПоиск по документу
ГенерацияПромпт или префиксПродолжение текстаЧат-бот, дополнение кода
Извлечение отношенийПара сущностей + контекстТип связи«работает в», «основан»

Многие продуктовые системы комбинируют несколько задач: чат-бот классифицирует намерение, извлекает сущности и генерирует ответ.


От текста к признакам

Классический pipeline NLP:

Очистка — Unicode, лишние пробелы, приведение регистра (если уместно), удаление HTML-разметки, нормализация дат и чисел по правилам домена.

Токенизация — разбиение на единицы для модели: символы, слова или подслова (BPE, WordPiece, SentencePiece). Современные LLM почти всегда используют subword — см. Большие языковые модели.

Числовое представление — ID токенов, one-hot (редко), эмбеддинги, контекстуальные векторы после прохода через трансформер.


Корпуса и разметка

Модель учится на корпусах — больших наборах текстов:

  • Неразмеченные — веб, книги, Wikipedia, Common Crawl; используются для предобучения (language modeling).
  • Размеченные — пары «текст — метка», «текст — перевод», span-аннотации для NER; нужны для fine-tuning и оценки.

Для русского языка часто используют

  • Russian SuperGLUE и аналоги для бенчмарков;
  • корпуса с Hugging Face (ai-forever/ru, sberbank-ai/ru, RuSentiment и др.);
  • внутренние документы компании (с учётом лицензий и персональных данных).

Качество данных
Смещение корпуса (гендер, регион, жаргон) переносится в модель. Перед обучением на внутренних текстах проверяют PII, секреты и баланс классов — как в кодировании признаков для табличных данных.


Метрики

ЗадачаТипичные метрики
КлассификацияAccuracy, F1, precision, recall, ROC-AUC
NEREntity-level F1 (exact match)
ПереводBLEU, chrF, COMET
СуммаризацияROUGE, BERTScore
QAExact Match, F1 по span
ГенерацияPerplexity, human eval, rubric-based eval

Для генерации одной цифры часто недостаточно — нужны эталонные промпты и ревью человеком или LLM-as-judge с осторожностью к смещению.


Классические baseline и нейросети

До трансформеров на практике часто пробовали:

  1. Bag-of-words + TF-IDF + логистическая регрессия или SVM — быстрый baseline для классификации.
  2. Word2Vec / GloVe / fastText — статические эмбеддинги слов; для русского есть fastText с подсловами.
  3. BiLSTM + CRF — сильный вариант для NER до появления BERT.
  4. Seq2seq на LSTM — перевод и суммаризация до Transformer.

Сравнение с трансформерами — в обзоре архитектур и трендах 2018–2021.


Инструменты

ИнструментНазначение
spaCyNER, токенизация, пайплайны, ru_core_news_*
NLTKобучение, простые корпуса
Hugging Face transformersпредобученные модели, fine-tuning
datasetsзагрузка корпусов
tokenizersбыстрые BPE/WordPiece
PyTorch / TensorFlowобучение и инференс

Практика с готовыми чекпоинтами — статья 6. Сквозной CV+NLP — распознавание текста.


Дальше


См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").