Стемминг и лемматизация: как привести слово к базовой форме

Стемминг и лемматизация приводят разные формы одного слова к общему виду перед обучением NLP-модели. Разбираем определения, разницу на примерах русских слов, когда какой метод выбирать и нужны ли они вообще при современных трансформерах.

Автор: Редакция DataMarkupОпубликовано: 2026-07-14

Что такое стемминг?

Стемминг — это метод предобработки текста, который отбрасывает окончания и суффиксы слова по формальным правилам, сводя разные словоформы к общей укороченной основе. Алгоритм не обращается к словарю и не учитывает грамматику, поэтому работает быстро, но результат не всегда совпадает с реальным словом языка.

Например, слова «бежал», «бежит» и «побежали» стеммер может свести к разным, но похожим обрубленным основам — единого правильного результата формальный алгоритм не гарантирует. Зато скорость и простота делают стемминг удобным для задач, где точность не критична: например, для быстрой группировки похожих слов при поиске.

Классические алгоритмы стемминга для русского языка — вариации алгоритма Портера, адаптированные под кириллицу, и библиотека Snowball. Они применяют последовательность правил отсечения типовых окончаний и суффиксов, подобранных вручную для конкретного языка, поэтому качество результата напрямую зависит от того, насколько хорошо правила покрывают морфологию русского языка.

Главный риск стемминга — переусечение и недоусечение слова: если правило отрезает слишком много, разные по смыслу слова случайно схлопываются в одну основу, а если слишком мало — родственные словоформы остаются несвязанными. Разработчики стемминговых алгоритмов балансируют между этими двумя видами ошибок, но полностью избежать их в языке со сложной морфологией вроде русского не получается.

Что такое лемматизация?

Лемматизация приводит слово к его словарной начальной форме — лемме — с опорой на грамматику и словарь языка: для глагола это инфинитив, для существительного именительный падеж единственного числа. В отличие от стемминга, результат лемматизации — всегда существующее слово, а не произвольно усечённая основа.

Продолжая пример с «бежал», «бежит» и «побежали» — лемматизатор корректно сведёт все три формы к одной лемме «бежать», потому что учитывает часть речи и грамматические правила конкретного языка, а не просто отрезает конец слова. Это требует более сложных языковых моделей и словарей, чем стемминг, но даёт заметно более надёжный результат.

Для русского языка популярные лемматизаторы вроде pymorphy2 или Mystem опираются на словари словоформ и морфологические правила, а в неоднозначных случаях — например, когда одна и та же форма слова может относиться к разным частям речи — дополнительно учитывают контекст соседних слов, чтобы выбрать правильную лемму.

Пример такой неоднозначности — слово «стекло»: в зависимости от контекста это либо существительное («разбитое стекло»), либо форма глагола «стечь» («молоко стекло со стола»). Формальный стеммер не различит эти случаи вовсе, а качественный лемматизатор с учётом контекста определит нужную часть речи и вернёт корректную лемму именно для этого употребления слова.

Чем стемминг отличается от лемматизации?

Стемминг — быстрое и грубое усечение слова без обращения к словарю, результат которого может не быть настоящим словом. Лемматизация — точное приведение слова к словарной форме с учётом грамматики, результат которого всегда существующее слово. На неправильных и нестандартных формах разница между двумя методами особенно заметна.

Словоформы Стемминг (примерная основа) Лемматизация (словарная форма)
бежал, бежит, побежали разные, не всегда совпадающие основы бежать
хорошая, лучше, лучший разные основы, связь не очевидна хороший
стола, столом, столе стол стол
собаки, собаку, собаками собак собака

На регулярных словоформах вроде склонения существительных оба метода часто дают одинаковый или очень похожий результат: и стемминг, и лемматизация сведут «стола», «столом» и «столе» к общему корню «стол». Разница проявляется на неправильных формах и сравнительных степенях прилагательных, где стемминг не способен связать, например, «лучше» с исходным словом «хороший», а лемматизация делает это корректно за счёт словаря и знания грамматики.

Когда использовать стемминг, а когда лемматизацию?

Стемминг подходит там, где важна скорость и допустима приблизительность: полнотекстовый поиск, быстрая кластеризация большого объёма текста, черновая фильтрация данных. Лемматизацию выбирают, когда важна лингвистическая точность: анализ тональности, извлечение сущностей, любые задачи, где неверно нормализованное слово меняет смысл результата.

На практике выбор часто определяется и языком: для английского с его сравнительно простой морфологией разница между методами не так критична, а для русского с богатым набором словоформ грубый стемминг чаще приводит к ошибкам — слова с разным смыслом могут случайно получить одинаковую усечённую основу. Ещё один фактор выбора — объём данных: на миллионах документов разница в скорости между стеммингом и лемматизацией становится заметной, и это может перевесить потерю точности при неответственных задачах.

Какую роль стемминг и лемматизация играют в предобработке текста?

Оба метода — часть классического пайплайна предобработки текста перед обучением модели: они сокращают словарь уникальных форм, объединяя вариации одного слова, и так снижают размерность данных и разреженность признаков. Это упрощает работу классических алгоритмов машинного обучения, которые иначе видели бы «бежал» и «бежит» как два независимых, не связанных друг с другом слова.

Помимо экономии вычислительных ресурсов, нормализация словоформ повышает полноту поиска и классификации: запрос «купить дом» находит документы со словами «дома», «домом» или «домов», хотя пользователь ввёл только одну форму. Без этого шага система пропускала бы часть релевантных результатов просто из-за различия окончаний.

В классическом пайплайне предобработки нормализация словоформ обычно идёт после токенизации и удаления стоп-слов, но до построения числовых признаков — например, частотных векторов TF-IDF или мешка слов (bag of words). Порядок этих шагов важен: если сначала не привести слова к общей форме, признаковое пространство модели окажется избыточно большим и разреженным, а статистика по каждому отдельному слову — менее надёжной.

Нужны ли стемминг и лемматизация при использовании трансформеров?

Современные трансформерные модели используют подсловную токенизацию, которая сама разбивает редкие словоформы на устойчивые фрагменты и обучается на контексте без отдельного этапа стемминга или лемматизации. Модель фактически учится собственной внутренней нормализации слов в процессе обучения на большом корпусе текста.

Тем не менее оба метода остаются востребованы вне обучения самих нейросетей: в индексации поисковых систем, в классических алгоритмах вроде TF-IDF, в быстрой предобработке данных перед разметкой и в задачах с ограниченными вычислительными ресурсами, где развернуть полноценную языковую модель нецелесообразно. Так что списывать стемминг и лемматизацию рано — они остаются рабочим инструментом там, где не нужна вся мощь современной языковой модели.

Ещё одна область, где нормализация словоформ по-прежнему полезна, — подготовка и контроль качества обучающих датасетов перед разметкой: приведение текста к базовым формам помогает быстрее находить дубликаты и похожие примеры в большом корпусе, прежде чем передавать выборку на разметку командой лингвистов или асессоров.

Частые вопросы

Что такое стемминг простыми словами?

Стемминг — это грубое усечение слова до его приблизительной основы по формальным правилам, без обращения к словарю. Алгоритм отбрасывает окончания и суффиксы, поэтому результат — не всегда настоящее слово, а просто общая часть, по которой разные словоформы можно сгруппировать вместе.

Чем лемматизация лучше стемминга?

Лемматизация опирается на словарь и грамматику языка и всегда возвращает существующее слово в начальной форме — например, «бежал» превращается в «бежать». Она точнее стемминга, особенно на неправильных формах, но требует больше вычислительных ресурсов и лингвистических правил под конкретный язык.

Используют ли стемминг и лемматизацию вместе с трансформерами?

Современные языковые модели вроде BERT или GPT работают с подсловными токенами и не требуют отдельного этапа стемминга или лемматизации для обучения. Но эти методы остаются полезны в поисковых системах, индексации документов и классических алгоритмах, где не нужна полноценная нейросетевая модель.

Почему для русского языка лемматизация особенно важна?

Русский язык обладает богатой морфологией — одно существительное или глагол может иметь десятки словоформ по падежам, числам и временам. Без приведения слов к базовой форме поисковые и классификационные алгоритмы будут считать «дом», «дома» и «домом» разными словами и терять релевантные совпадения.

Смотрите также