Эпоха правил и грамматик (до ML)

Вот здесь примеры кода: https://gitflic.ru/project/mviktorov/ml_training_exp/

Это 1950–1990-е. NLP было в основном про:

  • Регулярные выражения и парсеры — выделение шаблонов в тексте (даты, имена, адреса).
  • Грамматические правила (Chomsky-style, context-free grammars).
  • Словари (частотные списки, морфологические словари).

Библиотека NLTK (в 2000-е) собрала кучу этих подходов в удобную библиотеку для обучения студентов.

  • Токенизация текста.
  • POS-tagging (части речи, на готовых статистических моделях для английского).
  • Chunking / Parsing — поиск шаблонов («NNP NNP» → имя).
  • NE Chunker (maxent-модель + правила) → помечает PERSON, ORGANIZATION, LOCATION. То есть это супервайзед модель на ручных признаках (POS-теги, контекст), встроенная в «пайплайн правил».

NLTK был (есть) в основном для английского. С русским - не всё и не идеально.

Для русского сделали Наташу - более современное решение, заточенное под промышленное применение:

  • Segmenter — делит текст на токены и предложения.
  • MorphTagger — морфологическая разметка (части речи, леммы).
  • SyntaxParser — зависимый синтаксис.
  • NER Tagger — нейросетевой BiLSTM+CRF (натренированный на корпусе FactRuEval), помечает PER, LOC, ORG, DATE.
  • Normalizer — приводит сущности к канонической форме через словари (MorphVocab). Здесь уже нейросеть + эмбеддинги, а не правила. Но категории фиксированные (люди, места, организации, даты и т.д.).

NLTK мы активно использовали на одном американском стартапе в 2017 - 2021. Там нужно было подсвечивать в документах организации, имена, даты, адреса и т.п. Была библиотека на его основе, которая улучшала его результаты. Помню, что обучали модели на sklearn для более качественного поиска сущностей в тексте, и разметку от NLTK можно было использовать, как дополнительные признаки, подаваемые на вход классификатора.

Сейчас аналогичные вещи можно сходу делать с помощью промпта на LLM, но каждый вызов хорошей LLM стоит денег - для них нужно дорогое оборудование, и обычно используют АПИ к языковой модели, работающей у провайдера (OpenAI / Yandex / Сбер / ...). Но многие задачи, связанные с поиском сущностей в тексте и несложной классификацией можно решать с помощью таких библиотек, как Natasha на обычных маломощных серверах без лишних затрат.

Мой канал


В этом посте были ссылки, но мы их удалили по правилам Сетки