Стемминг ключевых слов

Оригинальное название: keyword stemming

Коротко

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

Что такое «Стемминг ключевых слов»

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

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

Пример на Python

from nltk.stem.snowball import SnowballStemmer

stemmer = SnowballStemmer("russian")
for word in ["ремонт", "ремонта", "ремонтом", "окна", "окнами"]:
    print(word, "→", stemmer.stem(word))

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

Где встречается на практике

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

Обновлено:

Все термины раздела «SEO»

Что будем искать? Например,Продвижение