Ющук Евгений Леонидович (yushchuk) wrote,
Ющук Евгений Леонидович
yushchuk

Поисковые машины | Алгоритм Яндекса как результат исследования "черного ящика" | Этапы "поиска" и ра

http://www.minich.ru/business/seo/index.htm

Поисковые машины | Алгоритм Яндекса как результат исследования "черного ящика" | Этапы "поиска" и ранжирования документов

12 апреля 2005 года. 23 часа. Во-первых, с Днем Космонавтики!
Это достижение уже никто не отнимет у НАШЕГО СОВЕТСКОГО НАРОДА! Запуск первого в мире Спутника я помню довольно отчетливо, хотя мне было 5 лет. Всеобщее возбуждение и радость, толпы людей у нас во дворе ночью, пытающихся разглядеть движущуюся точечку на небе. Мне даже папа пытался показать ее на огромном небе (а ночи были ясные), но я ее никак не мог разглядеть и было страшно обидно.
Дома было
много разговоров, что мы утерли нос американцам. Я, собственно говоря, не понимал, зачем надо было утирать нос (только гораздо позже я, например, узнал, что у нас были названия станков ДИП-1, ДИП-2, что означало: Догоним И Перегоним Америку). Люди с огромным интересом слушали простое бибикание НАШЕГО СПУТНИКА по радио и обмывали это событие с большим энтузиазмом. Сейчас бы для этих, близких мне людей, можно было бы употребить выражение "простые работяги", но тогда я этих слов не знал. С тех пор у меня в голове заложилась мысль, присущая обычно женщинам, что ЕСЛИ СИЛЬНО ЗАХОТЕТЬ, то МОЖНО СДЕЛАТЬ ВСЕ, в том числе утереть нос кому угодно, а Америке в первую очередь :) Папа также не отставал от соседей и после просмотра телевизора (в нашей коммуналке телевизор был только у нас) все дружно брали на грудь.
Запуск в космос Юрия Гагарина я помню гораздо лучше. После школы пошел на улицу гулять и вдруг ко мне подбегает знакомый мальчишка и говорит, что мы запустили в космос космонавта. Мы побежали быстрей к телевизору, а там передавали сообщение, что Юрий Гагарин уже приземлился. Чепчики в воздух, конечно не бросали по причине отсутствия чепчиков, а вот фуражки - в большом количестве...
Однажды с папой поехали на речку Ворю в д. Авдотькино и там местный житель рассказал, что Гагарин тоже приезжал на эту речку и нырял с высокого берега с доски, причем ВОТ ЭТА доска на том берегу - та самая доска, с которой Гагарин и нырял. Мне тоже захотелось нырнуть, но было очень страшно - доска длинная, толстая, метра на два выступает над водой по длине, высота метра 3, качается и ходит ходуном. Но на людях бояться стыдно и хоть и с шумом, но свалился головкой вниз :)

Алгоритм Яндекса - "поиск" и ранжирование документов

Решил начать публиковать результаты некоторых экспериментов, которые я проводил по исследованию алгоритма "поиска" Яндексом документов в Интернете и ранжированию "найденных" документов. Насколько мне известно, некоторые из полученных результатов практически неизвестны даже профессионалам, в частности формула для кворума получена вообще впервые (если не считать сотрудников самого Яндекса).
Толчком к изучению алгоритмов Яндекса послужило мое удивление тем фактом, что многие общепринятые представления об этом алгоритме совершенно не соответствуют действительности. Наткнулся я на это совершенно случайно - "разозлившись" на Рамблер, который "убрал" две ссылки на мои сайты со 2 и 3 места в результатах выдачи на запрос "книжные магазины Москвы". Решил еще раз покопаться в "теории" и к своему удивлению обнаружил, что мои представления о принципах поиска и ранжирования документов, почерпнутые из Интернета, НЕПРАВИЛЬНЫ. Оказалось, что более-менее ценные сведения "профессионалы" либо держат в секрете, либо сами пропагандируют сведения на уровне АБС (Адна Баба Сказала).
В деле продвижения бизнеса с помощью Интернет поисковая оптимизация занимает не более 20 процентов, но это те 20 процентов, которые могут превратить остальные 80 процентов в бесполезный мусор. Снимите с Кадиллака рулевое колесо и он станет бесполезней Запорожца. Поэтому мне показалось важным получить достоверную информацию о работе поисковых машин. Классический метод исследования давно известен - метод "черного ящика", а поисковые машины идеально подходят для такого метода. Достаточно системно подойти к проблеме, продумать систему "входных сигналов" (запросов) и процедуру анализа "выходных сигналов" (выдача документов). Надо сказать, что одна из милых наших девушек, программистка Наташа, в Газресурсе даже защищала диплом по "черному ящику" поисковых машин, но в то время я еще не дозрел до желания в этом разобраться (защита диплома была ее личным делом и делом ее научного руководителя и в ее рабочие обязанности не входила). В то время (2002 год) я считал, что такого рода работу давно уже делают на серьезном научном уровне, дипломы и степени пачками защищают, но сейчас к своему удивлению обнаружил, что дело обстоит иначе. Всеобщий кризис российской науки, памперсы, прокладки и пиво сделали свое дело...
Результаты буду выкладывать постепенно, насколько позволит время и некоторые соображения финансового характера :) Общеизвестно, что Яндекс свой алгоритм держит в секрете. Иногда некоторые данные публикуются, но делается все возможное, чтобы "напустить туман", что уже не вызывает удивления при общем помрачении умов так называемым бизнесом.
Некоторая корпоративность и замкнутость сообщества оптимизаторов не позволила получить сколько-нибудь ценной информации по алгоритму поиска данных Яндексом. Попытки активного диалога на searchengines.ru к сожалению закончились запретом писать на форум (из-за моей несдержанности по отношению к невежливости и "воде") и полным нулем полезной информации. Самым полезным для анализа оказалась статья Сегаловича и Маслова и обсуждение "колдунщика" Яндекса на сайте Евгения Трофименко http://blog.promosite.ru.

"Поиск" документов Яндексом можено условно разделить на этапы:

Анализ запроса и наложение контекстных ограничений по умолчанию ("переколдовка" запроса)
Отбор документов с найденными словами и с частично найденными словами(фильтрация)
Упорядочивание (ранжирование отобранных документов
Собственно говоря, Яндекс не ищет документы. Он их ОТБИРАЕТ и УПОРЯДОЧИВАЕТ.

"Переколдовка" запроса: анализ запроса и наложение контекстных ограничений по умолчанию

Основываясь на своих внутренних соображениях Яндекс для отбора документов налагает дополнительные условия на порядок следования слов (заданных в поисковом запросе) в документе и их значимость для запроса. Каждому слову из запроса Яндекс назначает вес. Вес составляется, скорее всего, по частоте встречаемости слов в эталонной коллекции документов. До сегодняшнего дня вес легко определяется для любого слова, а когда Яндекс закроет к этому доступ, то его можно будет определить из проиндексированных страниц, либо измеряя вес по эталонному слову, вес которого известен. Для редких слов вес "обрезается" на большом значении и одинаков для всех редких слов. Можно даже предположить, что "максимум" веса (число 2063133498) совсем не вес, а признак "редкого" слова, так как слов с весом более 5000000 и не равных при этом числу 2063133498, я не встречал.
Какие именно ограничения накладываются Яндексом легко определяется путем анализа URL ссылки "Найденные слова" в результатах выдачи Яндекса. Обратите особое внимание на поле "reqtext=". Если для удобства преобразовать строку URL к русскому шрифту (известно, что для преобразования в URL некоторые символы должны быть преобразованы в так называемые escape последовательности), то, например для запроса (proplex salamander сравнение профилей) подстрока URL "Найденные слова" (поле reqtext) будет выглядеть так:

&reqtext=(proplex::3637618+&&+salamander::3027057+&&/(-7+7)+сравнение::12142+&+профилей::3936)//6

Вес слова - это число, которое идет после двойного двоеточия. Двойное && между словами означает, что эти два слова могут находиться в любом месте документа. Одинарное & означает, что эти слова должны находиться в одном предложении. Конструкция &&/(-7+7) говорит, что слова salamander и сравнение должны быть в тексте не далее чем на плюс-минус семь предложений. Если бы мы увидели конструкцию &/(-2+4), то это бы означало условие " не далее чем на 4 слова вперед и два назад". //6 обозначает "мягкость" запроса равна 0,06 (смотрите далее - отбор по кворуму).
Иногда исходный запрос так переколдовывается, что некоторые слова вообще выпадают из поиска, а некоторые слова добавляются к запросу Самые яркие примеры: "что такое стеклопакет" и "человек года". "Что такое" в поиске заменяется на слова "это", "аббревиатура", "обозначает"... Вместе со словом "человек" Яндекс будет искать также "люди", а наряду со словом "года" - "лето".
У Яндекса Вы можете встретить утверждение, что пробел в поисковой фразе означает поиск в одном предложении, но как мы видим, это не соответствует действительности. Можно заметить также общую тенденцию, что чем выше вес слов, тем слабее ограничение по расстоянию между словами.
Достаточно важным является термин "предложение". Разделителем предложения могут быть точка, восклицательный и вопросительный знаки, а также некоторые тэги html кода блокового уровня, например < td>, < div>, < br>, < p> и т.д. (в том числе и "завершающие" тэги). Заметим, что "точка" НЕ ВСЕГДА делит текст на предложения (инициалы и т.п.). Имеется также ограничение на длину предложения в словах. Например, если задать ограничение при поиске "не менее 63 слов между словами в одном предложении" &/(63 2000), то ничего не будет "найдено". "Двойной" (тройной,...) разделитель считается за один.

Отбор по кворуму

В поисковом запросе может быть не одно слово, а много. С учетом контекстных ограничений число документов, содержащих ВСЕ слова из запроса, может быть очень малым. Яндекс решает эту проблему введением "кворума", т.е. такой комбинации слов из запроса, при котором заданная комбинация считается достаточной для того чтобы документ считался "найденным" при наличии в нем этой комбинации слов из запроса (с учетом контекстных ограничений). Какая именно комбинация слов может составить кворум определяется весами всех слов из запроса и формулой:

Сумма_по_словам_из_кворума(вес_слова^0,38)>=
(1-мягкость)^sqrt(число_слов_запроса-1)*Сумма_по_всем_словам_запроса(вес_слова^0,38)

Эту формулу я получил в результате экспериментов и "подсказок" в статье Сегаловича и Маслова (разработчиков алгоритма).
Знак ^ означает возведение в степень. SQRT - квадратный корень. Мягкость - параметр, определяемый из reqtext (смотрите выше). Обычно Яндекс (сейчас) использует значение 0,06. Значение 0,38 определено по методу наименьших квадратов. Проверено для запросов длиной в 2 и три слова.
Кворум очень важен не только для отбора документов, но и для ранжирования документов, так как "неполные" пассажи ("кворумы" запроса), найденные в документе, вносят свою лепту в вес документа для конкретного запроса.

Ранжирование документов

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


E-mail: ikozlov@minich.ru
Тел. дом. 8-251-565-30 (для звонков из Москвы)



Тел. дом. (096-51)-565-30
Козлов Игорь Минович

 

 

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments