Логотип seo-prodvizhenie-biznesa.ru
+7 (921) 333-77-45

Алгоритм стемминга

Алгоритм стемминга
Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога seo-prodvizhenie-biznesa.ru о продвижении и доработке сайтов.

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

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

Как устроено отсечение основ

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

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

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

Историческая справка тут важна для понимания, откуда взялись требования к текстам. Первые поисковые системы строили индекс именно по нормализованным строкам: документ считался релевантным, если в нём встречалась та же строка, что и в запросе. Отсюда родилась идея «вхождения» и вся культура подсчёта плотности ключевых слов. Механика давно другая, а требования в технических заданиях местами остались прежними — их переписывают из шаблонов десятилетней давности.

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

Где отсечение окончаний ломается на русском

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

Тему разбирал отдельно: «Алгоритм Яндекса изменился: что нужно сделать на сайте уже сейчас, чтобы не вылететь из ТОПа».

Слово Что даст отсечение Настоящая словарная форма Тип проблемы
бегущий бегущ бежать Чередование в корне
лучше лучш хороший Супплетивная форма
детей дет ребёнок Разные корни у форм одного слова
шёл шёл идти Не сводится правилами вообще
окон окон окно Беглая гласная
мир, мирный, мириться мир три разных слова Слипание несвязанных слов
стекло, стеклянный, стекать стек три разных слова Слипание при агрессивных правилах

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

Добавьте к этому омонимию форм. «Стекло» — существительное или глагол прошедшего времени. «Печь» — существительное или инфинитив. «Мыла» — форма слова «мыло» или глагола «мыть». Без разбора предложения различить их нельзя в принципе, а стемминг предложения не видит: он работает с отдельным словом.

Лемматизация: чем пользуются поисковые системы

Помогу с продвижением: SEO-специалист Анатолий Кузнецов — вывожу сайты в топ Яндекса белыми методами.

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

Признак Стемминг Лемматизация
Что нужно для работы Набор правил отсечения Морфологический словарь и разбор
Результат Обрубок строки Настоящая словарная форма
Скорость Очень высокая Ниже, требует памяти под словарь
Неизвестные слова Обрабатывает всегда Требует правил-догадок для новых слов
Чередования и исключения Не справляется Справляется
Омонимия Не различает Различает по контексту
Где применяется Внутренний поиск, массовая обработка Поисковые системы, обработка языка

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

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

Что из этого следует для текстов на сайте

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

Что происходит, когда требование всё-таки выполняют:

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

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

Смежный материал по теме — «YATI и нейросети Яндекса: как алгоритм реально ранжирует ваш сайт (а не как пишут в учебниках)».

Полезно понимать и обратную сторону: отказ от точных вхождений не означает, что слова не важны вовсе. Система по-прежнему опирается на текст, просто оценивает его иначе — по составу понятий, по структуре, по тому, отвечает ли страница на вопрос целиком. Поэтому страница из трёх абзацев общих слов не выиграет у подробного разбора только потому, что в ней «нет переспама». Отмена одного требования не отменяет работы над содержанием, а переносит её с уровня строк на уровень смысла.

Отдельно про заголовок и метатеги. Здесь тоже не нужна точная форма, но нужна ясность: заголовок должен читаться как ответ на запрос, а не как склеенная строка из генератора. Пользователь выбирает по нему в выдаче, и кликабельность влияет на позиции сильнее, чем падеж.

Как это влияет на подбор запросов

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

Порядок работы, который из этого вытекает:

  1. Собрать запросы из Вордстата, подсказок и сервисов вроде Rush Analytics или Topvisor, не пугаясь дублей по формам.
  2. Свести формы к общему виду — большинство инструментов делают это автоматически, суммируя частотность.
  3. Проверить, не различаются ли внешне похожие запросы по смыслу выдачи. Здесь автоматика ошибается: «ремонт окон» и «ремонт окно» — одно, а «окна пвх» и «окна пвх цена» — часто разные интенты.
  4. Сгруппировать запросы по общности выдачи, а не по совпадению слов. Если по двум запросам топ состоит из одних и тех же страниц, им нужна одна посадочная.
  5. Проверить частотность в точной форме перед тем, как планировать под запрос отдельную страницу: широкое соответствие в Вордстате суммирует всё подряд и завышает картину в разы.

Если нужна помощь по теме — разработка сайта под ключ.

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

Где отсечение основ встречается в вашей работе

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

Если нужны детали, смотрите «Яндекс выкинул ваш сайт из выдачи за одну ночь — и это не баг, а новый алгоритм. Что делать прямо сейчас».

  • Внутренний поиск по сайту. Большинство встроенных решений в CMS и часть поисковых движков используют стемминг или вообще поиск по подстроке. Отсюда классика: «стеклопакеты» не находятся по запросу «стеклопакет».
  • Фильтры и автоподсказки в каталоге. Если подсказка ищет по началу строки, пользователь не найдёт товар, набрав слово в другом падеже.
  • Сервисы анализа текста. Часть из них считает «плотность ключей» по обрубкам основ, отсюда странные и завышенные результаты.
  • Кластеризаторы и группировщики запросов. Дешёвые инструменты группируют по совпадению строк, а не по выдаче, и склеивают несвязанные запросы вроде «мир» и «мирный».
  • Системы модерации и антиспам-фильтры на сайтах. Правила по основам слов дают ложные срабатывания на безобидных словах с общим началом.
  • Поиск по базе клиентов и по документам. Внутренние системы компании чаще всего построены на самом простом варианте нормализации.

Как проверить и починить внутренний поиск

Из перечисленного больше всего денег теряется на поиске по сайту: в каталогах через него проходит заметная доля посетителей, и они, как правило, ближе к покупке, чем те, кто листает категории. Проверка занимает десять минут.

  1. Возьмите пять товаров или услуг и наберите их название в единственном и во множественном числе, в именительном и в родительном падеже. Отметьте, где результаты расходятся.
  2. Добавьте опечатку в одну букву. Хороший поиск исправляет, плохой отдаёт пустую страницу.
  3. Наберите название с пробелом и через дефис, латиницей и кириллицей, если в нём есть заимствование.
  4. Посмотрите, что показывается при нулевом результате: пустой экран или подборка популярных товаров с формой запроса.
  5. Откройте в Метрике отчёт по внутреннему поиску, если он настроен, и посмотрите список запросов с нулевой выдачей. Это готовый список того, что люди ищут и не находят.

Что делать по итогам. Минимальный вариант — добавить словарь синонимов и типовых форм для главных категорий вручную: он закрывает большинство расхождений без замены движка. Средний — подключить поисковый движок с морфологией для русского языка вместо встроенного в CMS. И в любом случае — настроить в аналитике отслеживание внутреннего поиска и раз в месяц просматривать нулевые результаты: там же обнаруживаются и товары, которых у вас нет, а спрос на них есть.

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

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

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

Считать ли плотность ключевых слов в тексте?
Как контрольную величину — можно, чтобы заметить перебор. Как цель — нет: заданного «правильного» процента не существует, а сервисы считают его по-разному, часть из них как раз по обрубкам основ.

Поисковая система понимает опечатки в запросе?
Да, исправление опечаток и работа с раскладкой встроены в обработку запроса. Поэтому создавать страницы под опечатки бессмысленно, а вот учесть их во внутреннем поиске по сайту стоит.

Влияет ли порядок слов в запросе на подбор страницы?
На выдачу — почти нет, порядок нормализуется. На восприятие человеком — да, поэтому в заголовке пишите так, как говорят люди, а не так, как выглядит строка из сервиса подбора.

Различает ли поиск слова, написанные с ошибкой в корне, а не в окончании?
Обычно да: исправление опечаток работает по частотным моделям и не зависит от морфологии. Но если ошибка превращает слово в другое существующее слово, исправления не будет — система решит, что вы искали именно его.

Нужны ли отдельные страницы под единственное и множественное число?
Нет. Это один запрос с точки зрения системы, а две страницы под него начнут конкурировать между собой, и позиции станут нестабильными.

Коротко

  • Стемминг сводит слова к общей строке отсечением хвоста по правилам, без словаря; для русского языка этого недостаточно из-за чередований, беглых гласных и супплетивных форм.
  • Ошибки идут в обе стороны: формы одного слова получают разные основы, а несвязанные слова вроде «мир» и «мириться» — одну.
  • Поисковые системы используют лемматизацию со словарём и разбором, а поверх неё — смысловое сопоставление запроса и документа.
  • Отсюда главный практический вывод: подгонять падежи в тексте не нужно, а неестественные вхождения ухудшают поведение пользователей и повышают риск фильтра.
  • Запросы, различающиеся только формой слова, — это один запрос; отдельные страницы под них создают внутреннюю конкуренцию и скачки позиций.
  • Стемминг остался во внутреннем поиске по сайту, автоподсказках, дешёвых кластеризаторах и сервисах анализа текста — и именно там портит пользователю опыт.
  • Проверка поиска по сайту занимает десять минут: разные падежи, опечатка, дефис, поведение при нулевом результате и отчёт по внутренним запросам в аналитике.

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

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

Комментарии

Наум Стрельцов

Пришёл сюда именно из-за внутреннего поиска. У нас магазин запчастей, каталог на 12 тысяч позиций, и поиск не находит половину товаров, если написать название чуть иначе. Разработчик говорит, что нужно менять поисковый движок и это дорого. Есть ли способ обойтись малой кровью, пока бюджета нет?

Анатолий Кузнецов автор

Способ есть, и в запчастях он даёт больше эффекта, чем смена движка. Начните с данных: включите в аналитике отслеживание внутреннего поиска и соберите за месяц список запросов с нулевым результатом. У вас там будет три типа строк — артикулы в другом формате, народные названия деталей и обычные словоформы. Дальше заведите таблицу синонимов и подключите её к поиску: для каждого товара добавьте альтернативные написания артикула, разговорное имя детали и пару типовых форм. Это делается не разработчиком, а контент-менеджером, и покрывает большинство промахов. Отдельно закройте два технических момента: нормализуйте артикулы при поиске, убирая пробелы, дефисы и регистр, и сделайте так, чтобы при нулевом результате показывалась подборка похожих товаров и форма запроса, а не пустой экран. По моему опыту, именно нулевые страницы поиска в каталоге дают больше всего потерянных покупателей.

Феодора Синицкая

Спасибо за таблицу с ошибками. Отправила её копирайтеру, который третий год присылает мне тексты с «окна пластиковые купить недорого Москва» посреди предложения и объясняет, что «так требует SEO». Кажется, спор наконец закончился.

Ждан Забелин

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

Анатолий Кузнецов автор

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

Лия Хабарова

Работаю с базой документов в компании, там поиск построен на обрезании слов до шести символов. Результат ровно такой, как в статье: по запросу «командировка» находятся «командир» и «команда». Показала руководству эту статью, впервые получилось объяснить проблему без технических подробностей.

Аверьян Круподёров

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

Эвелина Осташкова

Присоединяюсь к предыдущему замечанию, у нас в одежде та же картина. Как понять, когда формы действительно один запрос, а когда за ними стоят разные намерения пользователя? По статье получается, что всегда один, а на практике не так.

Анатолий Кузнецов автор

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

Бронислав Ярыгин

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

Клавдия Синеокова

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

Савватий Лебяжьев

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

Анатолий Кузнецов автор

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

Инесса Куракина

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

Никодим Кулебякин

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

Анатолий Кузнецов автор

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

Марфа Овчинникова

Забрала себе пункт про раздувание структуры. Проверила сайт и нашла четыре страницы, которые фактически про одно и то же, просто с разными формулировками в заголовках. Позиции по этому запросу у нас действительно скачут между ними уже год. Теперь понятно, откуда качели.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Нажимая «оставить комментарий» вы принимаетеправила конфиденциальности 

Прокрутить вверх