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

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

Если Вы понимаете это, то поймете, почему Google (и другие поисковые системы) используют сложный алгоритм для определения того, какие результаты они должны отдавать по тем или иным запросам.

Факторы алгоритма влияющие на ранжирование состоят из точных факторов – количество обратных ссылок и, возможно, некоторых социальных сигналов, такие как кнопки like и +1. Это, как правило, внешние воздействия. Еще есть внутренние факторы непосредственно на самой странице.

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

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

Будут некоторые формулы, но не паникуйте. Эта статья не только о формулах (кроме того, в тексте есть ссылка на файл-калькулятор в формате.xls). И еще кое-что: я буду иллюстрировать некоторые описания фотографиями голландских котлет :)

Правда или ложь

Поисковые системы чрезвычайно эволюционировали за последние годы, но поначалу они могли иметь дело только с логическими операторами. Проще говоря, термин был включен в документ или нет. Что-то было истинным или ложным, 1 или 0.

Кроме того, вы могли использовать операторы И, ИЛИ и НЕТ для поиска документов, которые содержали несколько терминов или исключали термины.

Звучит достаточно просто, но с этим есть некоторые проблемы. Предположим, у нас есть два документа с такими текстами:

Док1: «И наш ресторан в Нью-Йорке подает крокеты и тефтели.»

Док2: «В Голландии Вы получаете крокеты и тефтели с прилавка.»

Если мы должны построить поисковую систему, первый шаг – это разметка текста. Мы хотим иметь возможность быстро определить, какие документы содержат термин. Будет легче, если мы сложим маркеры в базу данных. Один маркер – какой-либо единственный термин в тексте. Итак, сколько маркеров содержит Док1?

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

Таким образом, мы имеем 10 маркеров в первом документе и 11 во втором. Чтобы избежать дублирования информации в нашей базе данных, мы сохраним типы, а не маркеры.

Типы – это уникальные маркеры в тексте. В примере Док1 дважды содержится маркер «И» (И наш ресторан в Нью-Йорке подает крокеты и тефтели.)

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

Храня все типы в базе данных с документами, где мы можем их найти, мы в состоянии искать в пределах базы данных с помощью логических операторов. Запрос «крокеты» приведет нас и к Дoк1 и Док2, а запрос «крокет и тефтели» вернет результатом только Док1.

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

Если бы вы были Google, то какие факторы на странице использовали бы для организации результатов?

Зональные Индексы

Относительно простой метод должен использовать зональные индексы. Веб-страница может быть разделена на различные зоны (title, description, author и body). Добавляя вес к каждой зоне, мы можем компетентно вычислить простую оценку для каждого документа. Это один из первых страничных методов поисковых системах, используемый для определения тематики на странице.

Действие по оценке зональной индексации:

Выполняем следующий поисковой запрос: «крокеты И тефтели». И у нас есть документ со следующими зонами:

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

Это довольно трудно, потому что сеть содержит разнообразные документов с различными структурами. Интерпретация документа XML для машины довольно проста, но с HTML уже сложнее.

Структура и теги довольно ограничены, что делает анализ более сложным. Конечно, скоро HTML5 станет более общеупотребимым, а кроме того, Google поддерживает микроформаты, но разметка все еще имеет ограничения. Например, если вы знаете, что Google присваивает больше веса на содержание внутри тега content и меньше на содержание тега footer – вы никогда не будете использовать footer.

Чтобы определить контекст страницы, Google делит веб-страницу на блоки. Таким образом поисковик может оценить, какие блоки на странице важны, а какие – нет. Один из методов, которые могут быть при этом использованы – текстовое / кодовое соотношение. Блок на странице, в котором больше текста, чем HTML кода, вероятно, содержит главный контент страницы. Блок, который содержит много ссылок / HTML кода и мало контента – вероятно, меню. Именно поэтому выбор правильного редактора WYSIWYG очень важен, некоторые из этих редакторов используют много мусорного HTML-кода.

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

Частота термина

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

Некоторые seo-агентства продолжают писать тексты с использованием определенного процента ключевых слов в тексте. Мы знаем, что этот прием уже не так хорошо работает, но разрешите мне показать – почему именно. Постараюсь объяснить это на основе следующих примеров.

Числа в таблице ниже – количество вхождений слова в документе (также называется частотой термина или tf). Так какой документ будет иметь лучшую оценку по запросу «крокеты и тефтели»?

Оценка для обоих документов будет выглядеть следующим образом:

оценка («крокеты и тефтели», Док1) = 8 + 10 + 2 = 20
оценка («крокеты и тефтели», Док2) = 1+20+9=30

В этом примере Док2 более соответствует запросу. Термин «и» получает больший вес, но разве это справедливо? Это стоп-слово, и мы хотели бы дать ему только небольшую ценность. Мы можем добиться этого с помощью обратной частоты документа (TF-IDF), который является противоположностью частоте документа (DF).

Частота документов – это количество документов, где упоминается термин. Обратная частота документов – ну, в общем, противоположность. По мере увеличения количества документов с упоминанием термина IDF будет сокращаться.

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

Предположим, что IDF нашего запроса является следующим:

IDF (крокеты) = 5
IDF (и) = 0,01
IDF (тефтели) = 2

Тогда Вы получаете следующие оценки:

вес («крокеты и тефтели», Док1) = 8*5 + 10*0.01 + 2*2 = 44.1
вес («крокеты и тефтели», Док2) = 1*5 + 20*0.01 + 2*9 = 23.2

Теперь Док1 имеет большую оценку. Но сейчас мы учитываем длину. Один документ может содержать гораздо больше контента, чем другой, не будучи при этом более релевантным. С помощью этого метода большой документ довольно легко получает высокий бал.

Векторная модель

Мы можем найти выход их этой ситуации, посмотрев на сходство косинуса документа.

Точное объяснение теории, стоящей за этим методом, выходит за рамки этой статьи. Но вы можете думать об этом, как о своего рода золотой середине между запросами терминов в документе. Я сделал файл Excel, так что вы можете поиграть с ним самостоятельно. Объяснение есть в самом файле. Вам необходимы следующие показатели:

Запросы терминов – каждый отдельный термин в запросе
Частота документов – сколько документов, содержащих этот запрос, знает Google
Частота термина – частота для каждого отдельного запроса термина в документе

Вот пример, где я фактически использовал эту модель. У веб-сайта была целевая страница, разработанная, чтобы ранжироваться по запросу “fiets kopen” (по голландски – «купить велосипеды»). Проблема состояла в том, что по запросу ранжировалась домашняя страница.

Для формулы мы включаем ранее упомянутую обратную частоту документа (IDF). Для этого нам понадобится общее количество документов в индексе Google. Будем считать, что это N = 10.4 миллиардов (на время написания статьи).

Объяснение таблицы ниже:

TF = частота термина
DF = частота документа
IDF = обратная частота документа
Wt, q = вес для термина в запросе
Wt, d = вес для термина в документе
Продукт = Вес, q * Вес, d
Оценка = Сумма продуктов

Главная страница, которая ранжировалась – http://www.fietsentoko.nl/

 

Страница, которую я хотел ранжировать: http://www.fietsentoko.nl/fietsen/

Хотя во втором документе чаще упоминается нужный термин запроса, оценка документа по запросу была ниже (чем выше – тем лучше). Это произошло из-за отсутствия баланса между терминами запроса.

После этого расчета я изменил текст на странице, увеличив использование термина “fietsen” и снизив использование “kopen”, который является более общим термином в поисковых системах и имеет меньший вес. Это изменило оценку следующим образом:

Через несколько дней Google просканировал страницы, и документ, который я изменил, начал ранжироваться по нужному запросу. Из этого мы можем сделать вывод, что количество упоминаний термина не так важно, важно найти правильный баланс для терминов, которые вы хотите ранжировать.

Ускорение процесса

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

Например, PageRank является хорошим статическим значением. Когда вы впервые рассчитываете оценку для страниц, которые соответствуют запросу и имеют высокий PageRank, у вас есть хорошие переменные, чтобы найти некоторые документы, которые попадут в топ 10 в любом случае. Другая возможность – использование топ-списков. Для каждого отдельного слова брать только верхний документ N с лучшими результатами по этому слову.

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

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

Релевантная обратная связь

Релевантная обратная связь означает определенную ценность для слова в запросе, основанную на релеватности документа. Используя обратную связь, поисковая система может изменить запрос пользователя (не сообщая об этом самому пользователю).

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

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

Еще один способ для Google – сбор данных. Они могут смотреть на CTR различных страниц. Страницы с высоким CTR и низким показателем отказов можно считать актуальными. Страницы с высокими отказами будут просто неуместны.

(Прим.: данные по +1 и CTR сейчас применимы для продвижения на Западе. У нас это пока не применимо).

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

Таблица ниже – объяснение этой формулы. Допустим, мы применяем следующие ценности :

Термин запроса +1 (альфа)
Релевантный термин +1 (бета)
Нерелевантный термин –0.5 (гамма)

У нас есть следующий запрос: «крокеты и тефтели»

Релеватность следующих документов такова:

Док1: релевантный
ДОк2: релевантный
Док3: не релевантный

Новые запросы следующие: крокеты (2) и (1) тефтели(1) кафе(0.5)

Ценность для каждого отдельного термина – вес, котоый входит в ваш запрос. Мы можем использовать этот вес в наших векторных вычислениях. Хотя термину «Амстердам» дали счет –0.5, отрицательные величины скорректировались назад к 0. Таким образом мы не исключаем термины из результатов поиска. И хотя «кафе» не появлялось в оригинальном запросе, в новом запросе оно получило вес.

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

Выводы

Короче говоря, мы рассмотрели одну из возможностей назначения ценности на документ, основанный на содержании страницы. Хотя векторный метод довольно точен, это не единственный метод для вычисления релевантности. Есть много факторов ранжирования, и это также остается только частью полного алгоритма поисковых систем вроде Google.

Мы также рассмотрели релевантную обратную связь. Надеюсь, что показал вам некоторые методы работы поисковика, которые вы можете использовать в работе с внутренними факторами.

Все, хватит. Пока это обмозговать и пойти поиграться с файлом :).

————–

Оригинал: Search Engine Algorithm Basics.
Большое спасибо Роману Жаркову за помощь в переводе и вычитке.