Изучаем алгоритм текстового ранжирования Яндекса на РОМИП-2006

“Алгоритм текстового ранжирования Яндекса на РОМИП-2006” – статья, написанная работниками Яндекса. Среди авторов сам Илья Сегалович. Описанный алгоритм – экспериментальная поисковая система, созданная для улучшения основного поиска.

Прочитать публикацию можно например здесь: http://www.romip.ru/romip2006/03_yandex.pdf

Стоит ли тратить на нее время? Ведь с момента публикации прошло более 10 лет: огромный срок для SEO. Стоит!

Дело не только в том, что нам ценна любая информация из первых рук – от представителей поисковой системы. И не в том, что ей можно доверять, как серьезной научной публикации.

Что можно узнать из этого исследования

Следите за руками:

  1. Создатели Яндекса конструируют поиск с нуля.
  2. В работе используется особая коллекция веб-страниц.
  3. Одна из характеристик этой выборки текстов – отсутствие поисковой оптимизации (см. пункт 4.3).

То есть. В статье описана не просто еще одна формула ранжирования. В ней также изложены характеристики естественных текстов, которые при этом являются релевантными поисковым запросам.

Алгоритмы ранжирования за 10 лет сильно поменялись и усложнились. Зато подходы к написанию текстов куда стабильнее. Качественная статья десятилетней давности мало отличается от современной в плане содержания. Понятно, что сайты стали сложнее и функциональнее, прибавилось мультимедиа, но основа неизменна. Поэтому многие факторы, работавшие в тогда, могут работать и сейчас – в “настоящем” поиске.

Факторы, определяющие текстовую релевантность

Скриншот формулы и пояснения к ней:

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

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

А вот насчет последнего слагаемого – PRF сказать то же самое нельзя. Это мера похожести страницы на документы, которые считаются релевантными. “Похожесть” может рассчитываться по самым разным алгоритмам и не завязана на текстовое содержание. Наверняка с внедрением Matrixnet подходы к оценке сходства сильно поменялась. Поэтому раздел “2.4 Pseudo-relevance feedback” стоит смотреть лишь для понимания общей логики работы поисковой системы.

Перейдем непосредственно к факторам.

Встречаемость слов в документе

Всем известный и самый очевидный фактор ранжирования. В экспериментальной формуле применяется модификация алгоритма BM25.

Интересно, что:

При подсчете количества вхождений слова в документ мы проводим предварительную лемматизацию слов запроса и слов документа. Результат поиска без лемматизации существенно уступает варианту с лемматизацией.

Лемматизация – это приведение слов к начальной форме (“пластиковые” -> “пластиковый”, “окна”->”окно”). То есть спамить сверхточными вхождениями было не слишком осмысленным занятием уже в 2006 году. С позиции этого фактора разные словоформы дают одинаковый вклад в релевантность (и выглядят на странице куда естественнее и привлекательнее).

Еще цитата:

Помимо учета количества слов в документе можно учитывать html-форматирование и позицию слова в документе. Мы учитываем это в виде отдельного слагаемого. Учитывается наличие слова в первом предложении, во втором предложении, внутри выделяющих html тегов.

Учет пар слов

Пара учитывается, когда слова запроса встречаются в тексте подряд (+1), через слово (+0.5) или в обратном порядке (+0.5). Плюс еще специальный случай, когда слова, идущие в запросе через одно, в тексте встречаются подряд (+0.1).

Далее интересная фраза:

Учет встречаемости трех и более слов запроса в документе улучшений в наших экспериментах не дал.

Из этого не следует, что для хорошего ранжирования всегда достаточно вхождения лишь пары слов из запроса. Очевидно, речь идет именно о Wpair слагаемом формулы. Вхождение остальных слов оценивается в следующем слагаемом.

Учет всех слов запроса в документе, учет фраз

Важным фактором помимо перечисленных является наличие в документе всех слов запроса. За наличие всех слов запроса мы добавляем дополнительный «бонус» , пропорциональный сумме idf слов запроса.

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

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

Чтобы автоматизировать решение этой проблемы, добавил в свой анализатор сайта инструмент, который подсказывает часто встречающиеся в ключевых фразах, но не используемые в тексте леммы.  Разумеется, все не сводится к простому набору слов. Я ставлю более амбициозную задачу – найти темы, интересные аудитории сайта, но недостаточно хорошо освещенные в тексте. Читайте подробнее в анонсе инструмента.

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

Насчет точного вхождения все очевидно, комментировать нечего. А вот второе предложение напоминает нам о том, что просто вхождения всех слов мало. Они должны быть логически связаны и располагаться в одном предложении.

Как все это использовать?

Итак, факторами текстовой релевантности можно считать:

  • Частота вхождения леммы в документ.
  • Вхождение в первое и второе предложения.
  • Вхождение в выделяющие html-теги.
  • Вхождение пар слов из запроса.
  • Наличие всех слов запроса в тексте (более редкие слова дают больший бонус).
  • Наличие точного вхождения фразы для многословных запросов.
  • Наличие пассажей (предложений), содержащих значительное количество слов запроса.

Как уже отмечал выше, это основы текстового ранжирования, характеристики естественных релевантных документов. Поэтому, размещая текст на сайте, стоит убедиться, что вы “отработали” каждый из пунктов короткого списка (по-минимуму, без фанатизма). Это отправная точка. Только если начальной оптимизации окажется недостаточно, стоит браться за текстовые анализаторы, ручной анализ ТОПа, LSI и прочую магию.

Работаем строго по закону Парето: простые действия, дающие 80% результата – в первую очередь!

12 комментариев

  1. О! Очень полезный материал!
    Особенно комментарии хороши, с ними все намного понятнее для неподготовленного к сложным выражениям мозга =)

  2. Значит html теги таки важны при выделении ключевых слов. Оно и к лучшему, так и пользователю удобнее и поисковикам. Спасибо за ссылку на оригинал!

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

  3. Алгоритм всегда не стоит на месте и постоянно меняется. Уникальность текста всегда будет стоять на первом месте + незаспамленность ключевыми словами + сам материал должен быть полезен конечному пользователю.

  4. Алексей, в связи с вышесказанным… Рекомендуете ли Вы выделять ключи в тексте тегами strong (bold)?
    Очень многие оптимизаторы отказались от данной практики. Проводились эксперименты, что после удаления данных тегов из текстов статьи не просели по ключемым позициям. Зато за переоптимизацию действительно наказывают.
    Но! Каждый может убедиться в том, что например, Google любит выделение жирным ключей в тексте. Порой встречаются на первых позициях в выдаче странички, где по 3-4 раза жирным выделено именно прямое вхождение ключа, что является явным фактором переоптимизации.
    Вобщем, какой Ваш взгляд на всё это?

    • Я думаю, что вклад в ранжирование в этого фактора очень незначителен, а вот сигналом переоптимизации это может быть.
      Так что сам применяю аккуратно. Например, если есть качественная статья, 100% “не спамная”, то не вижу ничего плохого в том, чтобы разок выделить ключи – разумеется, в составе фразы, так, чтобы получался логичный акцент на мысли. Ну а если работаем со страницей каталога, которая набита дублирующимися названиями товаров, то лишние strong-и я бы не стал ставить.

Оставить ответ