
Стемминг — это алгоритм, который отсекает у слова окончание и суффиксы, оставляя приблизительную основу. «Крышами», «крышу», «крыши» превращаются в «крыш», после чего поисковая система считает эти формы одним словом. Задача понятная: пользователь ищет «купить крышу», а на странице написано «крыши от производителя», и без нормализации совпадения не будет. В SEO с 2005 года я наблюдал, как из непонимания этого механизма рождались тексты, где в одном абзаце подряд шли «пластиковые окна», «пластиковых окон», «пластиковым окнам» — автор честно вписывал все словоформы, не зная, что алгоритм давно свёл их к одной основе.
Как работает стемминг: отсечение по правилам
Стеммер не знает языка. Он работает по списку правил вида «если слово оканчивается на -ами, отбрось -ами», «если на -ого, отбрось -ого». Правила применяются последовательно, пока не останется то, что алгоритм считает основой. Никаких словарей, никакого понимания частей речи — только строковые операции.
Для русского языка классический вариант — стеммер Портера, адаптированный под нашу морфологию. Он проходит слово в несколько этапов: сначала снимает деепричастные и причастные суффиксы, потом возвратный постфикс, потом падежные окончания, потом суффиксы прилагательных, в конце убирает мягкий знак.
| Исходное слово | Результат стемминга | Комментарий |
|---|---|---|
| крыша, крыши, крышами | крыш | Корректно, формы объединены |
| продвижение, продвижения | продвижен | Основа не является настоящим словом |
| окно, окна, окнами | окн | Корректно |
| кровля, кровельный | кровл / кровельн | Родственные слова не объединились |
| идти, шёл, шли | ид / шёл / шл | Супплетивные формы алгоритм не связывает |
Последние две строки таблицы показывают главное ограничение метода. Стеммер не понимает, что «шёл» — форма глагола «идти». Он видит только буквы на конце строки.
Лемматизация: другой подход к той же задаче
Лемматизация решает ту же проблему, но словарным путём. Алгоритм определяет, какой частью речи является слово в данном контексте, находит его в морфологическом словаре и возвращает начальную форму — лемму. Для существительного это именительный падеж единственного числа, для глагола — инфинитив.
Разница видна на примерах, где буквенные правила бессильны:
- Омонимия форм. «Стали» — это и форма глагола «стать», и родительный падеж существительного «сталь». Стеммер обрежет одинаково, лемматизатор по контексту различит.
- Нерегулярные формы. «Человек» и «люди», «ребёнок» и «дети» — словарь связывает их, правила отсечения нет.
- Короткие слова. «Мыло» стеммер может урезать до «мыл», что совпадёт с формой глагола «мыть».
- Точность выдачи. Лемматизация даёт меньше ложных объединений и потому лучше подходит для задач, где важна точность смысла.
| Критерий | Стемминг | Лемматизация |
|---|---|---|
| Основа метода | Правила отсечения окончаний | Морфологический словарь |
| Скорость | Очень высокая | Ниже, требует словаря в памяти |
| Результат | Псевдооснова, часто не слово | Настоящая словарная форма |
| Учёт контекста | Нет | Да, определяется часть речи |
| Ошибки | Лишнее и недостаточное отсечение | Проблемы с новыми словами и именами |
| Типичное применение | Поиск внутри сайта, быстрая индексация | Крупные поисковые системы, аналитика текста |
Почему для русского языка стемминг грубее
Русский — язык флективный, с богатой морфологией. У существительного шесть падежей и два числа, у прилагательного добавляются род и краткая форма, у глагола — вид, время, лицо, число, наклонение, причастия и деепричастия. Одно слово порождает десятки форм, а границы между основой и окончанием подвижны.
Добавьте сюда чередования в корне: «рука — ручной», «нога — ножной», «друг — друзья», беглые гласные «отец — отца», «сон — сна». Никакое правило отсечения хвоста не свяжет «рука» и «ручной» — для этого нужен словарь.
Для английского ситуация проще: там окончаний мало, и стеммера чаще достаточно. Именно поэтому подходы, отлично работающие в англоязычных инструментах, при переносе на русский текст дают заметно больше ошибок.
Ошибки стеммера делятся на два типа. Избыточное отсечение — когда алгоритм срезал слишком много и объединил разные по смыслу слова. Недостаточное отсечение — когда формы одного слова не свелись к общей основе и остались для системы разными.
Практический разбор: что это меняет для текстов на сайте
Теперь главное — как знание об этих алгоритмах меняет работу с контентом. Разберу на конкретном сценарии.
Допустим, вы продвигаете страницу услуги и собрали такие запросы: «ремонт кровли», «ремонт кровли цена», «ремонт кровли в Москве», «ремонта кровли», «отремонтировать кровлю». Классический подход десятилетней давности — вписать каждую формулировку дословно, чтобы «попасть» во все варианты.
Шаг 1. Приведите запросы к основам. После нормализации все пять запросов сводятся примерно к набору: ремонт, кровл, цен, москв. Разные строчки в таблице оказываются одной и той же лексической группой.
Шаг 2. Уберите дубли из ТЗ. Если в задании на текст стоят «ремонт кровли — 5 раз» и «ремонта кровли — 3 раза», это одно требование на восемь вхождений одной основы, а не два разных.
Шаг 3. Пишите естественными формами. Употребляйте ту форму, которой требует предложение. «Мы делаем ремонт кровли», «стоимость ремонта кровли», «после ремонта кровли» — для алгоритма это одинаковые сигналы, а для читателя — нормальный русский текст.
Шаг 4. Проверьте на неудобные конструкции. Фразы вроде «ремонт кровли Москва недорого» существуют только в поисковой строке. В тексте их нужно разворачивать: «ремонт кровли в Москве по цене ниже средней по рынку». Основы совпадут, а читаемость сохранится.
Шаг 5. Работайте с родственными словами отдельно. «Кровля», «кровельный», «кровельщик» имеют разные основы после стемминга. Их стоит употребить осознанно — не ради количества, а потому что они расширяют охват связанных запросов.
Где стемминг применяется на практике
Понимание области применения помогает не переносить выводы туда, где они не работают.
| Область | Что применяется | Почему |
|---|---|---|
| Поиск по каталогу интернет-магазина | Чаще стемминг | Скорость важнее точности, словарь тяжёлый |
| Большие поисковые системы | Лемматизация с языковыми моделями | Нужна точность и понимание контекста |
| Подсказки в строке поиска | Стемминг плюс префиксный поиск | Отклик за миллисекунды |
| Кластеризация семантического ядра | Лемматизация | Нужны корректные группы без ложных склеек |
| Проверка плотности вхождений | Обычно лемматизация | Считать нужно словоформы одного слова |
Отдельно отмечу поиск внутри сайта. Если у вас интернет-магазин и встроенный поиск не находит товар при запросе во множественном числе — почти наверняка нормализация вообще не настроена. Это типичная задача на доработку сайта, и решается она подключением морфологического модуля к поисковому индексу. Потери от такого бага измеряются напрямую: посетитель не нашёл товар и ушёл.
Чего делать не стоит
- Вписывать все словоформы подряд. «Купить окна, купить окон, купить окнам» — алгоритм видит одну основу трижды, читатель видит спам.
- Оставлять в тексте запросы в поисковом виде. «Двери межкомнатные купить Москва» в заголовке H1 не даёт преимущества, но портит впечатление.
- Считать вхождения строковым поиском. Проверка «сколько раз встречается точная фраза» игнорирует падежные формы и даёт заниженный результат.
- Гнаться за процентом плотности. Показатель из середины двухтысячных. Современные алгоритмы оценивают полноту раскрытия темы, а не долю ключа.
- Путать однокоренные слова с формами. «Кровля» и «кровельщик» — разные лексемы, они не взаимозаменяемы и не покрывают друг друга.
- Разбивать ключ знаками препинания. «Ремонт. Кровли» разрывает словосочетание, и близость слов теряется.
- Игнорировать синонимы. Нормализация форм не заменяет синонимический ряд: «кровля» и «крыша» для алгоритма разные слова, обе группы нужно раскрывать.
Как это влияет на структуру семантики
Ещё одно практическое следствие: запросы, отличающиеся только формой слова, нельзя разносить по разным страницам. «Ремонт кровли» и «ремонта кровли» — не два разных интента, а одна группа. Попытка сделать под них отдельные посадочные приводит к внутренней конкуренции, когда две страницы борются за одну позицию и обе проседают.
Правильная логика группировки: сначала нормализуем формы, потом смотрим на пересечение выдачи по запросам, потом принимаем решение о посадочной. Если по двум запросам выдача совпадает более чем наполовину — это одна страница, независимо от того, как запросы выглядят в таблице.
При аудите сайта я регулярно нахожу проекты, где под словоформы одного запроса созданы десятки почти одинаковых страниц. Это наследие старых подходов, и оно требует склейки, а не развития.
Частые вопросы
Нужно ли вписывать в текст все падежные формы ключевого запроса? Нет. Поисковые системы приводят слова к нормальной форме, поэтому «окна», «окон» и «окнами» для них одно слово. Пишите ту форму, которую требует предложение.
Стемминг или лемматизация используется в Яндексе и Google? Обе системы работают на полноценной морфологии со словарями, то есть ближе к лемматизации, плюс поверх этого — нейросетевые модели, которые учитывают смысл и контекст. Чистый стемминг сегодня встречается в основном во внутренних поисках сайтов и в утилитах обработки текста.
Влияет ли порядок слов в ключе на ранжирование? Влияет, но слабее, чем раньше. Нормализация снимает вопрос формы, а близость слов друг к другу и порядок остаются учитываемым фактором. Естественное словосочетание лучше искусственно перевёрнутого.
Как посчитать, сколько раз ключ реально встречается в тексте? Считать нужно по основам, а не по точным строкам. Подойдут инструменты анализа текста с морфологией: они соберут все словоформы в одну группу. Ручной поиск по точному совпадению всегда занижает результат.
Стоит ли использовать редкие словоформы ради охвата? Нет смысла. Форма нормализуется, а неуклюжая конструкция ухудшает восприятие и поведенческие показатели. Расширять охват нужно синонимами и смежными темами — этому принципу я учу и на обучении SEO, потому что он экономит массу времени при написании текстов.
Чеклист
- Приведите собранные запросы к нормальной форме перед группировкой — часть строк окажется дублями.
- Уберите из технического задания на текст требования вписать разные падежные формы одного слова.
- Проверьте посадочные страницы: нет ли отдельных URL под словоформы одного запроса.
- Замените в заголовках поисковые конструкции на нормальные фразы с теми же основами.
- Добавьте в текст однокоренные слова и синонимы — они расширяют охват, в отличие от словоформ.
- Считайте вхождения инструментом с морфологией, а не поиском по точной строке.
- Проверьте внутренний поиск сайта: найдите товар запросом во множественном числе и в косвенном падеже.
- Если внутренний поиск не понимает словоформы, поставьте задачу на подключение морфологии.
- Перечитайте текст вслух: если фраза звучит неестественно из-за ключа, перепишите её.
Если нужно заказать SEO-продвижение — помогу вывести сайт в топ Яндекса и удержать позиции.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →