Переформулировки поисковых запросов в Яндексе Введение

advertisement
promosite.ru - продвижение сайтов в поисковых системах
Евгений Трофименко, Москва (495) 669-32-81, order2@promosite.ru
Переформулировки поисковых запросов в Яндексе
Введение
В данной работе рассмотрены результаты, полученные из одной «недокументированной фичи» показа в Яндекс.XML запроса, который реально отрабатывает вместо введенного пользователем.
Эта возможность позволяла получить информацию о дополнительных словах в
переформулированном запросе, контрастностях слов и ограничении расстояний между словами
при поиске.
Расширение пользовательских запросов в Яндексе
Введенный пользователем запрос подвергается определенным изменениям перед отработкой
его поисковой машиной (историческое название «переколдовка»), изменения могли включать в
себя и добавление новых слов. Например, запрос что такое XYZ изменялся таким образом, что в
запрос добавлялись слова это, означает, аббревиатура, расшифровывается, которые также
подсвечивались в выдаче. Однако, если раньше это делалось в единичных случаях, то теперь
поисковик находит подходящие переформулировки для большого количества запросов – вручную
или автоматически – вопрос отдельный.
Летом 2008 года Яндекс сообщил [7] об изменениях в алгоритме переформулировки запросов,
которые предполагают сильные изменения, включающие автоматическое добавление новых слов
в запрос:
Одну и ту же поисковую потребность пользователь может выразить разными запросами. Например,
запрос «гамбургские гостиницы» кажется эквивалентным по смыслу запросу «гостиницы Гамбурга».
***
Теперь поиск Яндекса (версия «Магадан») еще учитывает следующие отношения:
а) некоторые типы переходов из одной части речи в другую («гамбург» -> «гамбургский»);
б) транслитерация («mazda» -> «мазда»);
в) аббревиатуры (МГУ -> Московский государственный университет).
Как именно происходит эта переформулировка запроса? Во-первых, некоторые слова могут быть
заменены по смыслу (в случае замены транслитерации или аббревиатуры). Во-вторых, в
некоторых случаях запрос может быть расширен с переходом между частями речи (недвижимость
в Москве -> московская недвижимость, продвижение сайта – продвигать сайт).
Важно не только знать, какие именно слова и расстояния находятся в переформулированном
запросе, но и каким именно образом «внутри» Яндекса отрабатывают эти переформулировки.
Если переформулировка происходила бы с использованием оператора «ИЛИ», то, вероятно,
разные варианты слов почти не «пересекались» бы в подсчете релевантности. Например, могло
оказаться, что дополненный/измененный запрос -- низкоконкурентный и более легкий для
продвижения. Тогда, установив особенности подмешивания выдачи по одному запросу к
результатам другого, мы найдем возможности оптимизации бюджета продвижения.
Если же дополнительные слова дают дополнительный вклад в релевантность, их имеет смысл
использовать в текстах и ссылках наравне с основными словами запроса.
История изменений
Изначально в «переколдовке» запросов были доступны данные о дополнительных словах,
расстояниях между словами и «весах» слов. Однако, Яндекс последовательно борется с
возможностями получения информации.
В 2008 году [3], [4] был доступен метод определения ограничений расстояния между словами с
помощью операторов исключения вида:
(+слова +запроса) ~~ (+слова [ОПЕРАТОР_РАССТОЯНИЯ] +запроса)
Перебирая различные операторы расстояния, можно было добиться ситуации, когда в результатах
Яндекс.XML-поиска, где показывалось отдельно число найденных документов в пределах
контекстных ограничений (strict) – оно обнулялось при увеличении подобранного расстояния
между словами:
<found priority="phrase">0</found>
<found priority="strict">0</found>
<found priority="all">7813345</found>
И подобранное таким образом расстояние соответствовало истинному расстоянию между
словами. Однако, в настоящее время Яндекс.XML «вылечил» эту возможность и перестал давать
разное число найденных документов для relevance priority = phrase, strict, all:
<found priority="phrase">7786843</found>
<found priority="strict">7786843</found>
<found priority="all">7786843</found>
Поэтому теперь подбор расстояний таким образом невозможен, можно только пользоваться
архивными данными. То, что данные по числу страниц показываются заведомо неверные –
видимо, стало новой его «фичей». 
Показ переформулированных запросов в Яндекс.XML
Летом 2010 мной случайно была обнаружена интересная возможность [11] – при задании
определенного вида запросов в Яндекс.XML в ответном результате появлялись данные
следующего вида, по запросу поисковая оптимизация:
((поисковая::17483 ^ поисковик::65545) &&/(-32768 32768) (оптимизация::32653 ^
оптимизировать::95157 ^ оптимизироваться::4208069))
Это происходило, как представляется, в результате ошибок в модуле подсказок в ответ на
опечатки в поисковом запросе. Например, при задании запроса вида
(fizi-olog) (поисковая оптимизация)
(fizi-olog) – воспринимался как не одна ошибка, а сразу две – Volapyuk (транслит запроса) и Undash
(что-то с разбиением слова на части). В результате в подсветке результата появлялась подсказка
такого вида:
<reask>
<rule>Undash</rule>
<source-text/>
<text-to-show/>
<text>(fizi::61543020-olog::1234567) ((поисковая::17483 ^ поисковик::65545) &&/(-32768 32768)
(оптимизация::32653 ^ оптимизировать::95157 ^ оптимизироваться::4208069))
</text>
</reask>
…которая и содержала (очевидно) переформулированный запрос.
Однако, эта подсказка появлялась только в том случае, когда в выдаче найден хоть один
результат, а это происходило далеко не всегда. Поэтому я пошел двумя путями – сделал свой
экспериментальный массив, содержащий рабочие «ошибочные» слова вместе со всеми словами
русского языка и собрал коллекцию из ~20 тыс. «воляпюков».
В результате удалось выкачать ~1.3 млн. разных переформулировок по популярным поисковым
запросам. Хотя я и скрывал метод получения, Яндекс нашел и прикрыл эту возможность, поэтому
о методе теперь можно и рассказать. 
При введении «переформулированного» запроса как исходного результаты выдачи изменяются.
Это может быть связано как с дополнительным переформулированием уже
переформулированного запроса, так и с изменениями в обработке «весов» слов.
Данные по переформулировкам доступны в сервисе [1], веса слов доступны в сервисе [2].
Оператор [^]: [|] или [%]?
Наиболее интересной особенностью переформулированных запросов является перечисление
дополнительных слов запроса через оператор ^.
Как работает этот оператор – нужно выяснять дополнительно. С одной стороны, он дает
результаты, похожие на работу оператора [%] - с необязательным включением дополнительных
слов при обязательном основном слове. С другой стороны, в выдаче иногда встречаются
результаты, не содержащие основного слова запроса. С третьей стороны, на классический
оператор «ИЛИ» [|] он тоже не похож – результаты выдачи значительно отличаются и, в отличие
от «или» меняются при «перемене мест слагаемых» (в зависимости от того, какое слово идет
первым до ^, а какое после него).
В любом случае, основной вопрос – дают ли дополнительные слова в переформулированном
запросе вклад в релевантность или считаются полностью независимо. Я остаюсь при мнении, что
дают, и что оператор ^ дает приоритет основному слову запроса и работает похожим на %
образом.
Особенности переформулировок
Все переформулировки содержали «веса» слов, более половины переформулировок содержали
расширение запроса дополнительными словами, около 10% содержали ограничение расстояния
между словами.
Особенности переформулировки полностью соответствуют предыдущим наблюдениям – очень
часто стало использоваться «длинное» расстояние между словами, как в приведенном примере –
32768 предложений.
Новые части речи, транслит, расшифровка аббревиатур – как и ожидалось, активно используются.
Часто используются возвратные глаголы («продвигаться» наравне с «продвигать»), аббревиатуры
расшифровываются с прямым порядком слов с расстоянием «плюс-минус одно слово» медлу
соседними словами.
Общее количество переформулированных сложным образом запросов довольно велико – более
70% процентов от всей базы. В принципе, и раньше «переколдовок» было много – видимо,
автоматическое расширение запросов имело место и тогда, и сейчас.
классическое "ИЛИ"
|
доля от
1.3 млн.
0.72%
расширение запроса
дополнительными
словами
^
64.10%
одноклассники::38226 ^ odnoklassniki::734294 ^
одноклассница::650388
поиск в пределах
соседних слов
&/
11.38%
adobe::18994 &/(-1 1) illustrator::192273
все словоформы
!!
10.51%
google::6272 ^ !!гугл::54546428
оператор
поиск имен и
фамилий
fioname[]
и др.
разбиение на
фрагменты
пример переформулировки
(dsl::91438 &/(-1 1) 200::4936) | dsl200::709103565
2.43%
(александр::4275 ^ aleksandr::259060 ^
alexander::68471 ^ alexandr::278003 ^ саня::142275)
&&/(-32768 32768) рыбак::58640) ...
(fioname[((александрfi::5221 &&/(-32768 32768)
рыбак::58640))] | fiinname[((аfi::1059 &&/(-32768 32768)
рыбак::58640))
7.11%
youtube::15650 ^ ((you::272-tube::11492))
Если дополнительные расширяющие запрос слова и можно найти в открытой выдаче, то с
расстояниями все гораздо сложнее. Яндекс последовательно борется с возможностью получения
внутренней информации о переформулировках.
Транслитерация запроса
ютуб
ютуб::956008 ^ utube::6608646 ^ yutub::27352453 ^ ((ю::7853-туб::342977))
hyundai
hyundai::93536 ^ !!хюндай::70910356 ^ !!хендай::709103565
Ограничения расстояний между словами – 10% запросов
Часто используются привычные нам расстояния, ставшие уже классическими – в одно слово, в три
и семь предложений:
в контакт
!(+в::51 &/(-1 1) контакт::19088
рабочий стол обои
рабочий::4494 &/(-1 1) стол::6379 &&/(-32768 32768) обои::7086
русская страховая компания
((русская::1225 ^ русско::49342) &/(-1 3) ((страховая::19855 ^ страховка::74092 ^
страховщик::125678 ^ страхование::12393) &&/(-32768 32768) компания::923) ^ ск::55022) ^
!рск::1487444
театр юного зрителя
((театр::9046 ^ theatre::57479 ^ театральный::46013) &&/(-32768 32768) юного::31141 &/(-1 3)
зрителя::30667) ^ тюз::928951
налоговая 46
(налоговая::12044 ^ налог::10340) &/(-3 3) 46::3495
6300 nokia
6300::270856 &/(-3 3) nokia::12493
нормативные документы дополнительного образования
нормативные::20026 &/(-1 1) документы::3472 &&/(-7 7) дополнительного::4085 &&/(-7 7)
образования::3396
Работа с фрагментами слов
Часто используется разбиение длинных слов на фрагменты и разбиение сложных обозначений из
букв и цифр:
Составные слова:
кинопоиск
кинопоиск::192359 ^ kinopoisk::830960 ^ ((кино::4292-поиск::775))
билайн
билайн::46541 ^ beeline::224866 ^ ((би::45262-лайн::28714))
Сложные обозначения могут искаться почти во всех возможных вариантах разбиений
w200i
w200i::4958766 ^ (!(w::1737 &/(1 1) 200::5303 &/(1 1) i::199)) ^ ((w200::633693 &/(1 1) !i::199)) ^
((!w::1737 &/(1 1) 200i::23636785))
Используется не только разбиение, но и склейка популярных фрагментов в одно слово:
dsl 200
(dsl::91438 &/(-1 1) 200::4936) | dsl200::709103565
Курьезы переформулировок запросов
В пользу автоматического подхода Яндекса к подбору переформулировок кроме общего
большого количества переформулированных запросов говорит еще и то, что зачастую
переформулировки встречаются явно бессмысленные. Например, по запросу витрины москва
вместо «витрин» находятся сайты с «окнами» [10]
То, что это не глюк, а фича - подтверждается исключением слова «витрина» из запроса – в этом
случае в выдаче остаются только «окна». Витрина, конечно, тоже может быть сделана из стекла,
однако сложно представить, что человек может назвать витрину окном – вероятно, тут
«поработал» алгоритм.
С другой стороны, некоторые другие примеры переформулировок явно показывают
вмешательство человека. Например, запрос партия единая россия переформулируется как
партия единая россия
(партия::10385 &&/(-32768 32768) ((единая::10481 &/(-1 3) россия::827) ^ ер::234393) ^
!!едро::2480323) ^ !!педирос::492344160
По данным http://wordstat.yandex.ru/
Что искали со словом «педирос» — 24 показа в месяц.
Мне лично не верится, что алгоритмы Яндекса способны на такие расширения запросов, тем
более непопулярными словами, которые редко задаются в поиске и статистика использования
слов в запросах вряд ли может помочь. 
Новые поисковые зоны и термы в большом поиске (ФИО)
Кроме расширений запросов дополнительными словами, в переформулировках видны также
новые операторы поиска и термы, соответствующие поиску по именам. Для запросов,
содержащих имена в виде нескольких слов, например:
вася пупкин
Переформулировка содержала фрагмент вида:
fioname[((васяfi::332552 &&/(-32768 32768) !!пупкин::901729))] |
fiinname[((вfi::1574 &&/(-32768 32768) !!пупкин::901729))] |
fiinoinname[((вfi::1574 &&/(-32768 32768) !!пупкин::901729))] |
finame[((васяfi::332552 &&/(-32768 32768) !!пупкин::901729))]
Здесь мы видим новые операторы поиска по новой поисковой зоне, соответствующей имени
fioname, fiinname, fiinoinname, finame
Кроме этого, в запросе присутствуют отдельные термы термы (вfi, васяfi) – поиск всех имен,
которые начинаются на фрагмент, стоящий перед fi и в сокращенном варианте тоже. Например,
если задать запрос вfi:
Мы найдем результаты, в которых будут все имена, начинающиеся на В, в том числе и
сокращения (пример здесь: В.И.Вернадского, Вл.С.Соловьев)
Использование новых поисковых зон и отдельных термов показывает нам, что выделение
сущностей (например, имени) – в большом поиске Яндекса уже началось и уже внедрено. Яндекс
начал в боевом режиме использовать выделение объектов без специальной разметки и
микроформатов.
«Веса» слов (контрастность по общей базе)
Вес, который используется и использовался при переформулировках через двойное двоеточие
после слова – является мерой контрастности, заметности этого слова в общей базе слов. Очень
популярные и стоп-слова имеют низкий «вес», редкие слова – наоборот, высокий вес. Как
правило, слова с низким весом стараются использовать как дополнительные для разбавления
текстов ссылок. А насколько на самом деле одно слово «весит» больше, чем другое?
Связь «двоеточечного веса» с классическим IDF (Inverse document frequency)
Часто можно услышать употребление термина «IDF» в отношении этого двоеточечного веса.
Однако некоторые особенности дают повод для сомнений в правильности этого.
Веса, которые наблюдались раньше и присутствуют в переформулировках, обладают некоторыми
особенностями, например – эти веса не непрерывны, есть фиксированный набор популярных
значений весов, также существует некий «максимальный» вес слова по коллекции.
В таблице приведен набор самых больших весов слов по части коллекции с небольшой
статистикой:
::вес
984688320
492344160
328229440
246172080
196937664
164114720
140669760
123086040
слов
2080
302
206
197
148
169
130
123
отличие, раз
1
2
3
4
5
6
7
8
При этом топовые веса, что интересно, кратны максимальному весу (984688320) и получаются
делением его на целое число. Однако, в формуле классической IDF используется логарифм, и
никаких целочисленных отношений (кроме как в 10, 100… раз) быть не может:
|D| — количество документов в корпусе;
— количество документов, в которых встречается ti
Однако по базе реальных весов целочисленное соотношение – скорее правило. По виду формулы
IDF становится очевидно, что вес – это отношение D/Di до логарифмирования.
Т.е., общее число документов в коллекции D = 984688320, самое редкое слово встречается в
коллекции 1 раз, и Di=1. Второе по редкости слово встречается в коллекции 2 раза, и
D/Di=(984688320/2)=492344160 и так далее.
Таким образом можно сделать вывод, что двоеточечный вес – это вовсе не IDF, а IDF получается
взятием логарифма от веса:
::вес=Dобщее/Dсо словом
IDF=log(::вес)
Если в Яндексе для взвешивания слов используется классическая IDF, отличия в контрастности
слов получаются не столь разительными:
::вес
984688320
492344160
328229440
246172080
196937664
164114720
140669760
123086040
слов
2080
302
206
197
148
169
130
123
отличие, раз
1
2
3
4
5
6
7
8
IDF
8.993299
8.692269
8.516178
8.391239
8.294329
8.215148
8.148201
8.090209
Связь «двоеточечного веса» с мерой по словоформам (ICF)
То, что веса рассчитываются по числу документов, содержащих слово, а не по общему числу
словоформ в базе – это еще большой вопрос. Похожие результаты можно получить, если
использовать вместо D общее число слов в коллекции и вместо Di – число выбранных слов.
Дополнительно следует отметить, что вес точной формы слова отличается от сыммарного веса
всех его словоформ – это было видно и в переформулировках.
Для примера рассмотрим связь истинных весов слов из переформулировок с числом слов (не
документов, а словоформ) в базе Яндекса:
log(::вес) vs. log(число словоформ в базе)
10
y = -Ax + B
R² = 0.9941
9
8
7
log(::вес) vs. log(число
словоформ в базе)
6
5
Linear (log(::вес) vs.
log(число словоформ в
базе))
4
3
2
1
3
5
7
9
11
Видно, что это практически точная линейная зависимость без отклонений в области малых весов
(популярных слов).
Если бы ::вес был документным, то в области малых весов, соответствующей популярным и стопсловам, линейность должна была быть искажена за счет того, что популярное слово используется
в одном документе много раз.
Однако то, что искажений линейности нет, как бы говорит нам - что веса считаются даже не по
документам, а по словоформам, и в качестве меры контрастности используется не IDF, а ICF.
Разные коллекции документов – разные веса
Так как при получении переформулировок в запросах часто присутствуют одни и те же слова, у
этих слов я ожидал увидеть одинаковые же веса. Однако было большим удивлением увидеть
разные веса для слова fizi в раздичных вариантах задания запроса:
коллекция
русская
англоязычная
украинская
вес слова fizi
61543020
10427993
113009721
пример запроса
mail.ru
музика безкоштовно
запросов
1100694
278056
321
Таким образом, у одного слова может быть несколько разных весов – в зависимости от того, к
какой области «приписан» запрос и по какой коллекции документов считается статистика по
слову. Всего было видно три коллекции – основная русскоязычная (когда запрос содержал
русские слова), англоязычная (когда запрос полностью состоит из цифр и английских букв) и
украинская (?) (когда запрос состоит полностью из украинских слов).
Поскольку число документов и сами документы в коллекциях разные, относительная
популярность одного и того же слова тоже получается разной. Максимальный вес тоже отличается
для этих разных коллекций.
Примеры тематических переформулировок
Вот как переформулируются поисковые запросы по тематике продвижения сайта:
запрос
продвижение сайта
оптимизация сайта
переформулировка
((продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208) &&/(-32768 32768)
сайта::410)
((оптимизация::32653 ^ оптимизировать::95157 ^
оптимизироваться::4208069) &&/(-32768 32768) сайта::410)
поисковая оптимизация
((поисковая::17483 ^ поисковик::65545) &&/(-32768 32768)
(оптимизация::32653 ^ оптимизировать::95157 ^
оптимизироваться::4208069))
поисковая оптимизация сайта
((поисковая::17483 ^ поисковик::65545) &&/(-32768 32768)
(оптимизация::32653 ^ оптимизировать::95157 ^
оптимизироваться::4208069) &&/(-32768 32768) сайта::410)
продвижение
(продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208)
раскрутка сайта
(раскрутка::42374 &&/(-32768 32768) сайта::410)
поисковое продвижение
((поисковое::17483 ^ поисковик::65545) &&/(-32768 32768)
(продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208))
web продвижение
((web::5561 ^ !!веб::8429) &&/(-32768 32768)
(продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208))
продвижение web сайтов
((продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208) &&/(-32768 32768)
(web::5561 ^ !!веб::8429) &&/(-32768 32768) сайтов::410)
заказать продвижение
(заказать::6844 &&/(-32768 32768) (продвижение::19047 ^
((про::2793-движение::8030)) ^ продвигать::40288 ^
продвигаться::199208))
поисковое продвижение сайта
раскрутка оптимизация
((поисковое::17483 ^ поисковик::65545) &&/(-32768 32768)
(продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208) &&/(-32768 32768)
сайта::410)
(раскрутка::42374 &&/(-32768 32768) (оптимизация::32653 ^
оптимизировать::95157 ^ оптимизироваться::4208069))
продвижение раскрутка сайта
((продвижение::19047 ^ ((про::2793-движение::8030)) ^
продвигать::40288 ^ продвигаться::199208) &&/(-32768 32768)
раскрутка::42374 &&/(-32768 32768) сайта::410)
продвижение сайта в поисковых системах
(продвижение::19047 &&/(-32768 32768) сайта::410 &&/(-32768
32768) в::51 &&/(-32768 32768) поисковых::17483 &&/(-32768
32768) системах::1143)
Заключение
Польза от знания переформулировок запросов очевидна для поисковой оптимизации–
использование дополнительных слов в текстах и ссылках, использование ограничения расстояний
при оптимизации текстов страниц, использование «весов» слов для разбавления текстов ссылок.
Не все данные вечны, многие теперь нельзя получить с помощью открытых методов, но большая
часть этих данных сохранена и может использоваться в seo-сервисах и системах автоматического
продвижения.
Литература
1. Сервис поиска переформулировок запросов в Яндексе по базе из 1.3 млн. запросов
http://tools.promosite.ru/use/perekoldovki.php
2. Сервис поиска «весов» слов в Яндексе
http://tools.promosite.ru/use/weight.php
3. Евгений Трофименко
доклад на конференции "Поисковая оптимизация и продвижение сайтов в Интернете" – 2008
http://promosite.ru/download/conference/ashmanov2008/
4. Евгений Трофименко
доклад на конференции " Практика поискового продвижения сайтов. NetPromoter 09" – 2009
http://promosite.ru/download/conference/netpromoter2009/
5. Синтаксис языка запросов Яндекса
http://help.yandex.ru/search/?id=481939
6. Илья Сегалович, Михаил Маслов
Яндекс на РОМИП-2004. Некоторые аспекты полнотекстового поиска и ранжирования в Яндекс
http://romip.ru/romip2004/07_yandex.pdf
7. Расширение запросов - переходы из одной части речи в другую, транслитерация,
аббревиатуры
http://webmaster.ya.ru/replies.xml?item_no=1030
8. О смягчении фильтрации найденных документов
Подлетая к "Магадану"
http://webmaster.ya.ru/replies.xml?item_no=645
9. Отмена показа переколдовки
http://forum.searchengines.ru/showthread.php?t=173853
10. Курьезы переформулировок: окна и витрины
http://forum.searchengines.ru/showpost.php?p=7794206&postcount=128
11. Евгений Трофименко
доклад на конференции " Практика поискового продвижения сайтов. NetPromoter 10" – 2010
http://promosite.ru/download/conference/netpromoter2010/
Download