Блог про интернет-маркетинг для бизнеса

SEO

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

68
16
4
24

Наш аналитический отдел (в лице Дениса Шенцева, Алексея Борща, Кирилла Левенца и меня) подготовил ряд статей про алгоритмы поисковых систем. Постараемся подавать информацию максимально доступным языком, чтобы приблизиться к пониманию того, как работают поисковые системы.

Данная статья — адаптация статьи Яндекса. Все комментарии, которые приведены ниже, касаются только этой конкретной публикации, а не поисковой системы в целом. Многое, что характерно для реальных поисковиков, в комментариях может быть не учтено.

Список показателей которые учитываются формулой описанной в статье:

  1. частота использования ключевых слов в других документах;
  2. частота использования ключевых слов внутри текущего документа;
  3. выделение ключевых слов тегами и их расстояние до начала документа;
  4. длина документа;
  5. число пар слов которые подряд идут в запросе в таком же виде встречаются в тексте;
  6. число ключевых слов из запроса которые вообще встречаются в тексте;
  7. встречается ли весь запрос в тексте.

Алгоритм ранжирования проводит лемматизацию слов документа и запроса, поэтому не имеет значения в какой форме будет использоваться слово или его синонимы (разные формы будут считаться за одну и туже лемму). Для запроса была использована строка: "купить ноутбук с доставкой одесса" (здесь и далее кавычки для того чтоб отделить слова от текста, при запросе их не было). Рассмотрим как будет работать формула для нашего примера и какие параметры будут у первых 4-х сайтов из выдачи Yandex.

Расчет релевантности документа к запросу производится по формуле:

  • Wsingle — вклад отдельных слов из запроса;
  • Wpair — вклад пар слов;
  • Wallwords — вклад вхождения всех слов из запроса;
  • Wphrase — вклад вхождения всего запроса;
  • Whalfphrase — вклад вхождения части запроса.

В оригинальной статье использовалось еще дополнительное слагаемое Wprf — за похожесть документа на документы из вершины выдачи, но мы его пока не будем учитывать. В наших расчетах коэффициенты k1, k2, k3 — нам также не известны поэтому предположим, что они равны 1.

1. Учет отдельных слов:

TF — частота вхождения слова в документ ( = число_вхождений_слова / длину_документа). Значения частот для слов из запроса, для каждого из мест в топ выдаче:

  • 1 место — "купить" 13, "ноутбук" 93, "с" 28, "доставкой" 7, "одесса" 11 раз
  • 2 место — "купить" 22, "ноутбук" 50, "с" 2, "доставкой" 2, "одесса" 2 раза
  • 3 место — "купить" 42, "ноутбук" 12, "с" 7, "доставкой" 10, "одесса" 9 раз
  • 4 место — "купить" 2, "ноутбук" 92, "с" 83, "доставкой" 7, "одесса" 5 раз

DocLength — длина документа в словах;

  • 1 место — 2589 слов
  • 2 место — 1385
  • 3 место — 1325
  • 4 место — 3425

Hdr — сумма весов слова за форматирование. Согласно авторам статьи:

Учитывается наличие слова в первом предложении, во втором предложении, внутри выделяющих html тегов.

Но какие конкретно числа используются авторы не уточнили (в наших расчетах будем считать этот параметр равным 0).

D — число документов в коллекции. Для получения конкретного значения  можно воспользоваться поиском фразы "lang:ru" с помощью yandex.ru. Полученное при этом количество документов и будем считать за число документов в коллекции. В нашем случае в выдачу попало 2379 млн. документов.

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

  • "купить" 651 млн. документов
  • "ноутбук" 35 млн.
  • "с" 2344 млн.
  • "доставкой" 163 млн.
  • "одесса" 68 млн.

Wsingle мы рассчитывали для каждого слова и в Score добавляли их сумму.

2. Учет пар слов:

p1, p2 — рассчитываются так-же как и для Wsingle; TF — количество вхождений пары слов, с учетом весов. Пара учитывается, когда слова запроса встречаются в тексте подряд (+1), через слово (+0.5) или в обратном порядке (+0.5). Плюс еще специальный случай, когда слова, идущие в запросе через одно, в тексте встречаются подряд (+0.1).

  • 1 место — "купить ноутбук" 6 раз, "ноутбук c доставкой" 1, "доставкой одесса" 2 раза
  • 2 место — "купить ноутбук" 1
  • 3 место — "купить ноутбук" 1
  • 4 место — ни одна пара не встретилась ни разу.

Остальные пары в документах не встречались.

3. Учет всех слов:

Nmiss — число слов которые не встретились в документе. Для рассматриваемых сайтов это число оказалось одинаковым.

4. Учет запроса целиком:

TF — число вхождений запроса целиком, деленное на длину документа. Для топа значение получилось 0 для всех сайтов.

5. Учет части запроса:

Это слагаемое учитывалось когда сумма idf слов запроса в предложении (в формуле — сумма логарифмов) больше половины суммы idf всех слов запроса. TF здесь – количество учитываемых предложений в тексте деленное на число предложений в документе. Для нашей 4-ки это опять получился 0, т.к. там таких предложений не оказалось. Для сравнения предположим что мы создали документ и хотим рассчитать его релевантность для запроса. Пусть числовые значения для него будут иметь вид:

  • слов в документе 400
  •  "купить" 3, "ноутбук" 10, "с" 1, "доставкой" 3, "одесса" 2
  • "купить ноутбук" 1, "ноутбук c доставкой" 1, "доставкой одесса" 1 раз.

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

Таблица полученных значений

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

  • относительно (первой 4-ки документов) небольшим размера документа;
  • наличия пар ключевых слов идущих подряд (даже небольшого количества)

Комментарии

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

Если слово будет только в одном документе из всей коллекции, то вклад этого слова в релевантность будет наибольшим. Если  слово встречается в каждом документе 1 или больше раз, то вклад такого слова в релевантность будет равен 0. При этом  чем больше документов в коллекции, тем большее количество употреблений допустимо (употребление прямо пропорционально числу документов), при сохранении той же релевантности. Если число документов увеличится в 2 раза, то релевантность сохранится если и частота употребления также увеличится в 2 раза. Поэтому стоит акцентировать внимание лишь на те слова, которые имеют относительно малую частоту, и использовать одно и тоже слово как можно в меньшем числе документов. Ключевые слова стоит выделять с помощью форматирования. Используйте их как можно ближе к началу документа.

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

Горизонтальная ось — частота слова. Вертикальная — релевантность

Размер документа не должен быть слишком объемным или слишком коротким (желательно таким же как среднее значение остальных документов или меньше).

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

III. Используйте ключевые слова в словосочетаниях. Ключевые слова по возможности должны образовывать все возможные парные  словосочетания друг с другом. Повторения одинаковых пар стоит избегать. Т.е. как и в пункте II лучше много разных, чем много повторяющихся. На словосочетания длиной больше 3-х слов не стоит акцентировать внимание.

IV. Желательно чтоб слова из потенциальных запросов присутствовали в документе. Не помешает наличие разных ключевых слов по тематике документа. При этом количество одинаковых слов или форм одного и того же слова должно быть как можно меньше.

V. Половина слов в предложениях — тематические. Желательно чтобы каждое предложение содержало половину слов из потенциального запроса. Порядок следования слов стоит согласовать с пунктом III.

VI. Зная какой должна быть релевантность к конкретному запросу мы можем указать конкретные значения для числа вхождений каждого слова. Взяв в качестве значения релевантности запросу оценку для сайтов из топа выдачи можно оптимально подбирать количество вхождений каждого отдельного слова. Из минусов такого подхода — мы становимся зависимыми от конкретного запроса или набора запросов (но это если не учитывать что поисковики расширяют запросы).

Комментарии (13)

  1. 0
    14 дней назад

    Приветствую. Олег, подскажите пожалуйста по Whalfphrase


    Это слагаемое учитывалось когда сумма idf слов запроса в предложении (в формуле - сумма логарифмов) больше половины суммы idf всех слов запроса. TF здесь – количество учитываемых предложений в тексте деленное на число предложений в документе. 


    "слов запроса в предложении", вы имеете ввиду в "полном запросе"? 

    Не совсем понял этот абзац. 


    Если не сложно, и будет время, подскажите пожалуйста. 

  2. 0
    год назад

    Спасибо за классный материал! У меня есть два вопроса:

    1) Какое основание у логарифма во всех формулах? Я проверил
    расчеты и, судя по всему, Вы взяли натуральный логарифм, но я не совсем понял
    почему, ведь его записывают обычно как ln, а тут log – может это десятичный?

    2) В итоговой табличке у меня расходятся данные при
    вычислении Wpair для 1-го столбца, все остальные вычисляются нормально, так
    что формулу я запрограммировал верно. Не могу понять, в чем ошибка, может Вы
    какие-то доп. вычисления делали не указанные в статье? У меня получается: Wpair =
    -0.0053934741212529

    • 0
      Дмитрий В
      год назад

      Всегда пожалуйста!
      1) Да Вы правы, при расчетах для примера использовался натуральный логарифм. В формулах запись с "log" была взята из оригинала статьи, в которой основание логарифма не оговаривается. Вообще основание может быть разным, на суть формул это не влияет. Главное чтоб оно везде было одно и тоже.

      2) Похоже ошибка была в том, что в тексте говорится "«доставкой одесса» 2 раза", а в расчетах использовалась единица. Числа в таблице исправлены соответственно тексту.

      Спасибо за внимательность!

  3. 0
    2 года назад

    Как определить "D – число документов в коллекции" и как получилось "2379 млн. документов"?

    • 0
      Дима
      2 года назад

      К уже написанному в статье добавлю, что приближенно значение для числа документов в коллекции можно считать равным количеству страниц на русском языке в индексе поисковика. Чтоб получить само число для Яндекса в его поисковой строке вводите "lang:ru" (без кавычек). Дальше смотрите сколько найдено результатов. На момент написания статьи их было 2379 млн. Но может быть и другое.

  4. 0
    2 года назад

    Дякую, корисна стаття, все ясно. Маю два питання: 1) Яндекс використовує цей алкгоритм? 2) Ви пробували застосувати на практиці це? Для НЧ запитів? Як результати?

    • 0
      Oleg
      2 года назад

      1. Точної відповіді на це питання немає, але модель яка запропонована цілком має право на існування.
      2. Ми використовували для визначення коефіцієнту релевантності і його зміну в різних текстах. Один з розрахунків приведений в таблиці.

  5. 1
    2 года назад

    У документі Яндекса була нормальна фраза "а встречаемость слов из запроса в документе", але навіщо ви її замінили на "вклад" зовсім не ясно. Що куди вклали?

    • 0
      Guest
      2 года назад

      Здесь "вклад" чего-либо нужно понимать как "числовое значение, которое будет учтено в общей оценке". Что по смыслу эквивалентно фразе "слагаемое за что-либо".

  6. 0
    2 года назад

    Скажите, а что такое p в формуле, и почему там возник логарифм?

    • 4
      Олег
      2 года назад

      p - это вероятность того, что случайно выбранный документ из коллекции будет “про это слово”. Т.е. чем чаще встречается слово в коллекции, тем ближе вероятность к 1. Если слово не встречалось вообще, то вероятность равна 0 (на практике такое слово исключается из запроса).

      Логарифм от вероятности отражает информативность данного слова в запросе:
      - если слово есть в каждом тексте (например стоп слова, p будет почти 1), то оно не позволит нам отличить тексты один от другого (логарифм от р будет стремится к 0 как и их вклад в релевантность);
      - если же слово наоборот встречается в коллекции редко, то документы в которых оно есть будут более релевантны чем другие (логарифм от 0 будет стремиться к бесконечности тем самым увеличивая релевантность).

      Добавлю (это явно не оговаривается ни в посте ни в оригинальной статье) что log(p) всегда меньше либо равен 0. Поэтому чтоб получить релевантность со знаком "+", при вычислениях нужно ставить "-" перед логарифмом.

  7. 1
    2 года назад

    Не осилил. Плохо у меня было с математикой.

Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое