Получи клиентов из интернета!



Основы алгоритма поисковых систем

Дата: 18.01.2012
Рубрика: SEO

Вы прекрасно помните, что совсем недавно я участвовал в конкурсе «Буржуйское SEO». В качестве конкурсного поста была статья об алгоритмах поисковых систем, в частности Google. В ней все разжевано и про текстовое ранжирование, и про частотность ключевых слов, и про зоны на сайте с большим весом, и про поведенческие факторы. В общем полезной информации КУЧА! Поэтому я решил опубликовать статью и на своем блоге. Кто еще не читал, милости прошу.

Алгоритм поисковых систем изнутри

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

Алгоритм состоит из множества факторов:
внешних – это количество обратных ссылок, социальные рекомендации, например, через различные лайки и кнопку +1
внутренних – это текст, структура, скорость загрузки и многое другое

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

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

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


Croquets – длинные, Bitterballen – круглые

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

Поисковые системы очень сильно эволюционируют в последние годы, однако в первое время они могли иметь дело только с логическими данными. Проще говоря, включен этот запрос в документ или нет. В результате получается либо истина, либо ложь – 1 или 0. При поиске нужно было использовать операторы AND, OR и NOT, для запросов, состоящих из нескольких слов, например. На первый взгляд, это звучит достаточно просто , но и здесь могут возникнуть проблемы.

Пусть у нас есть два документа, состоящих из следующих текстов:
1. И в нашем ресторане в Нью-Йорке подают Croquets и Bitterballen
2. В Голландии вы получаете Croquets и Frikandellen из стены

Упс, чуть не забыл показать вам Frikandellen

Если мы создаем поисковую систему, первым шагом будет разметка текста на последовательность символов (лексемы). Мы должны быстро определить из каких выражений состоит документ. Это сделать проще, если мы разложим их на последовательность символов в нашей базе. Лексемы это, по сути, слова в тексте. Как много слов содержит первый документ?

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

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

За счет хранения всех типов в базе с документами, где мы можем найти эти типы, мы осуществляем поиск по базе данных. При поиске «Croquets» результатом поиска будет 1-ый и 2-ой документы, при поиске «Croquets и Bitterballen» — только 1-ый документ. Проблема этого метода в том, что вы можете получить как много, так и очень мало результатов. К том же, не хватает умения организовать эти самые результаты, т.е. как-то ранжировать. Если хотим улучшить наши методы, тогда мы должны использовать и другие слова в документе. Какие факторы страницы вы бы учитывали при ранжировании, находясь на месте Google?

Зона индексации

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

Зона Вес 
Заголовок 0.4
Описание 0.1
Контент 0.5

Итак, осуществляем поиск по запросу: “Croquets и Bitterballen”

У нас есть документ со следующими зонами

Зона

Контент

Логика

Вес

Заголовок

Нью-Йорк кафе

0

0

Описание

Кафе с очень вкусными Croquets и Bitterballen

1

0.1

Контент

В нашем ресторане в Нью-Йорке  подают Croquets и Bitterballen

1

0.5

Итоговый вес: 0.6

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

В любом случае, это не так уж и просто как кажется. Все потому, что в интернете каждая документ имеет свою структуру. Если бы все было по стандарту XML, тогда это намного проще. Но при HTML это тяжело даже для машины, т.к. и структуры и теги ограничены. Да, в ближайшем будущем будет HTML 5 и Google поддерживает все микроформаты, но все равно останутся ограничения. Например, если Google присваивает бОльший вес содержимому тега «content», нежели чем содержимому тега «footer», вы вряд ли будете активно использовать «footer».

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

Именно поэтому при публикации статей используйте правильный WYSIWYG-редактор (редактор аля MC Word), т.к. некоторые из них используют много ненужного html-кода.

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

Преимущество этого метода в том, что легко можете вычислить вес документа. Но в тоже время является недостатком то, что много документов могут получить один и тот же вес.

Частота запроса

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

Мы же с вами знаем, что это на самом деле не так, но позвольте мне вам показать почему. Я постараюсь это объяснить на основе следующих примеров.

Числа из таблицы ниже, количество вхождений слова в документ (также этот термин называется плотностью). Так какой же документ имеет большую релевантность при запросе: «croquets and bitterballen» ?

croquets

and

caf?

bitterballen

Amsterdam

Doc1

8

10

3

2

0

Doc2

1

20

3

9

2

DocN

Query

1

1

0

1

0

Результаты для обоих документов будут следующими:
Результат (“croquets and bitterballen”, Doc1) = 8 + 10 +2 = 20
Результат (“croquets and bitterballen”, Doc2) = 1 + 20 +9 = 30

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

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

Предположим, что IDF наших запросов следующий:
IDF(croquets) = 5
IDF(and) = 0.01
IDF(bitterballen) = 2

Тогда мы получим следующие результаты:
результат(“croquets and bitterballen”, Doc1) = 8*5 + 10*0.01 + 2*2 = 44.1
результат(“croquets and bitterballen”, Doc2) = 1*5 + 20*0.01 + 9*2 = 23.2

Теперь документ 1 имеет больше очков, но сейчас мы не берем во внимание объем. Один документ может содержать гораздо больше контента, чем другой. В таком случае, «длинный» документ очень легко получает больший вес.

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

Мы можем разрешить эту ситуацию, вычисляя косинус схожих документов. Точное объяснение теории данного метода выходит за рамки данной статьи, но вы можете считать, что это то самое среднее между ключевыми запросами в документе. Я сделал Excel файл, в котором вы можете самостоятельно с ним по играться. В самом файле есть пояснения по его использованию. Для него понадобятся следующие показатели:
1. ключевой запрос – каждое отдельное слово в запросе
2. частота документа – сколько документов знает Google, содержащих это ключевое слово
3. частота запроса – частота для каждого отдельного слова в документе

Вот конкретный пример, где я использовал актуальную модель. На сайте была страница, которая заточена под запрос «fiets kopen» (покупка велосипеда). Проблема была в том, что по данному запросу в выдаче присутствовала не эта страница, а главная.

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

Объяснение столбцов таблицы:
tf = частота запроса
df = частота документа
idf = обратная частота документа
Wt,q = вес слова в запросе
Wt,d = вес слова в документе
Product = Wt,q * Wt,d
Score = сумма product

Для главной страницы http://www.fietsentoko.nl/, которая появляется в выдаче:


Итоговый результат: 4.6356

Для страницы http://www.fietsentoko.nl/fietsen/, которая заточена под это ключевое слово


Итоговый результат: 4.54647

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


Итоговый результат: 4.6586

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

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

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

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

Поведенческие факторы

Используя Поведенческие факторы, поисковая система может изменить запрос пользователя, не сообщая ему. Для начала, здесь нужно определить релевантен документ запросу или нет. Однако в некоторых ПС можно указать это самостоятельно, в Google же такой функции не было в течение длительного времени. Первая попытка это добавление «звездочек», теперь же это осуществляется с помощью кнопки Google +1. Если достаточное количество людей начинают нажимать на кнопку +1, Google начинает пересматривать релевантность документа этому запросу.

Еще один способ для Google заключается в использовании интеллектуального анализа данных. А именно, всегда можно посмотреть CTR различных страниц. Страницы, где CTR высокий и при этом низкий показатель отказов (относительно среднего значения), можно считать актуальными и релевантными. Страницы со слишком высокими показателями отказов будут просто неуместны в выдаче.

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

Допустим, мы применяем следующие значения:
Ключевой запрос: +1 (alpha)
Релевантный запрос: +1 (beta)
Нерелевантный запрос: -0,5 (gamma)

У нас есть следующий запрос:
«croquets and bitterballen»

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

Новый запрос выглядит следующим образом:

croquets(2) and(1) bitterballen(1) cafe(0.5)

Значение для каждого слова – это вес, который он получает в запросе. Мы можем использовать эти веса в наших векторных расчетах. Слово «Amsterdam» получило отрицательный вес, мы его приравниваем к 0. Таким образом, мы не исключаем слова из результатов поиска. И хотя слова «cafe» не было в исходном запросе, он был добавлен и получил вес в новом запросе.
Предположим, что Google использует этот способ определения поведенческих факторов, тогда вы можете взглянуть на документы, которые ранжируются по этому запросу. Используя этот метод, вы можете быть уверены, что получите максимальную отдачу от ПФ.

Сейчас проводится конкурс среди сеошников под названием SEOCAFEинфошность. Уже почти 100 участников, следим за развитием событий.

Выводы:

Вес документу присваивается на основе его содержания. Хотя векторный метод и является достаточно точным, это, безусловно, не единственный метод для вычисления релевантности. Существует много корректировок данной модели, которые остаются только частью полного алгоритма поисковых систем, в частности Google. Мы заглянули в поведенческие факторы, а также *кххх *в панду *кххх (кашель). Надеюсь я дал вам некоторое представление об алгоритмах поисковых систем. Ну а теперь пришло время по играться с Excel-файлом 😉

SEOinSoul
Все формулы и методы актуальны и для Яндекса. Их почти в аналогичном формате можно перенести на российскую поисковую систему. Зная все тонкости и нюансы вам может покориться любой ТОП.

Моя же статья скомуниздена с форума Bizzteams
Оригинал статьи: Search Engine Algorithm Basics

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

Заявка на бесплатный аудит вашего сайта

Оставляйте адрес вашего сайта – мы найдем все ошибки, мешающие его продвижению и предложим дальнейшее его развитие!

x

Заявка на бесплатный аудит

Лайкаем!
Хочешь получать свежие статьи о продвижении, smm и заработке в интернете самым первым? Не забудь подписаться на рассылку!
Мнения:
  • alex_r00t
    23 декабря 2011 в 08:46

    интересная статейка получилась. читал в 2-а подхода, за раз мозг не осилил)

    • Yurisik
      29 декабря 2011 в 14:21

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

      • SEOinSoul
        30 декабря 2011 в 22:05

        Не читав ни разу, хрен поймешь, что это бессмыслица

  • Oleg Grabovsky
    24 декабря 2011 в 11:28

    Зачет.

  • Евгений Калентьев
    26 декабря 2011 в 12:56

    ошибки есть в тексте орфографические…

  • Денис
    23 декабря 2012 в 22:17

    Это невозможно осилить

Теперь ваше мнение:

x

Заявка на продвижение сайта

x

Заявка на бесплатный аудит