Как обычно выполняется ранжирование в веб-поиске?

Насколько я понимаю, для ранжирования веб-страниц существует оценка, зависящая от запроса (например, насколько документ релевантен запросу, который был введен в поисковую систему), и оценка, независимая от запроса (например, PageRank страницы). веб-страницу, например).

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

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


person Joebevo    schedule 10.04.2019    source источник


Ответы (2)


Конечно, это часть большого секрета Google, о чем рассказал Геза Керечени.

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

  1. Аналитическая формула. Не так уж сложно смешать два ранга вместе с их линейной комбинацией. Предположим, что P — это рейтинг страницы, а Q — рейтинг запроса-документа. Затем вы можете сказать что-то вроде этого:

TotalRank = a*P + b*Q

Второй вопрос заключается в том, как правильно подобрать эти коэффициенты a и b, верно?

Что ж, тут мы можем помочь себе «мерой качества»:

  • «набор данных для измерения»: набор пар запроса и страницы с «эталонным рейтингом» (общим рейтингом, который вы ожидаете получить для этой пары query-page). Мы можем собрать этот набор данных вручную. Чем больше мы соберем, тем более точные измерения мы получим.
  • и сама «мера»: еще одна формула, которая скажет нам, насколько «хороша» или «плоха» наша формула. Например, это может быть MSE (Mean Squared Error) — грубо говоря, он вычисляет разница между двумя значениями: вашим рангом и эталонным рангом для всего набора данных. И, таким образом, чем ближе MSE к нулю, тем лучше вы подогнали a и b и тем лучше ваша формула TotalRank удовлетворяет ваши ожидания.

Имея такую ​​меру, вы можете подогнать эти a и b вручную, убедившись, что ваша TotalRank-формула удовлетворяет вашим ранговым ожиданиям: вы просто видите, что MSE все ближе и ближе к нулю. Но это очень рутинная работа, поэтому вы можете использовать...

  1. Машинное обучение. Я не буду здесь объяснять, как применять машинное обучение для вашей конкретной цели - все это вы можете найти в Интернете, на Coursera и т.д. Но скажу, что имея "измерительный набор данных", достаточно выучить какой-нибудь алгоритм, типа линейной регрессии. (или более сложные, такие как деревья решений), чтобы автоматически соответствовать этим a и b.

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

Кроме того, я бы порекомендовал взглянуть на Стэнфордское Introduction to Information Retrieval< /а>книга. Это объясняет множество таких вопросов.

P.S.: извините за мой плохой английский и удачи! :)

person Alex Medveshchek    schedule 11.08.2019
comment
Учитывая, что показатель PageRank сильно неравнозначен для разных веб-страниц, было бы неплохо использовать его в аналитической формуле для TotalRank так, как вы его использовали? Если бы мы это сделали, большинство страниц имели бы незначительный или нулевой вклад от PageRank, а для некоторых других страниц PageRank доминировал бы над рейтингом запроса-документа, Q. Разве это не было бы проблемой? - person Joebevo; 27.07.2021

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

Фактические логические / теоретические вещи

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

query: "dog"

returned objects to rank:

1. "dogs are awesome! find out more about owning a dog today!"
   Query relevance: 9/10
   From: some obscure blog that no-one cares about (2/10 according to PageRank)

2. "doge memes for you. Get the finest memes - doge and more!"
   Query relevance: 7/10 (only 1 letter difference! Could be a typo, maybe?)
   From: 9gag, first search result for anything trendy-related, so it must be good (9/10 according to PageRank)

Как бы вы ни пытались согнуть, исказить и взвесить данные, 9gag окажется наверху, несмотря на то, что он явно неверен (извините за нелепый пример). Ясно, что это не так просто, как сложить эти два числа вместе.

Время спекуляций

(Обратите внимание, что этот раздел длиннее предыдущего. Воспринимайте его с недоверием.)

Представьте себе всю паутину в виде графа (например, графа теории графов) или своего рода «карты» со взаимосвязанными вещами. Расстояния между точками — это расстояния PageRank (некоторая мера того, насколько сплоченными PageRank считают два сайта, где более высокое значение представляет большее расстояние, а, в свою очередь, более низкий показатель PageRank — следовательно, pr_n=1/sum(length of all edges connecting to n)), а «веса» внутри кругов — это релевантность. на ваш запрос. Наша задача состоит в том, чтобы найти числа, которые относительно близки к своим аналогам (т. е. имеют высокий показатель PageRank), но также имеют более высокие веса. Затем мы можем использовать выбранный вами алгоритм для извлечения лучших из них. Но таким образом, мы все еще получаем результаты, которые мы получили раньше, где dogs и doge разделены всего 1 буквой. Причина в том, что мы игнорируем оценку запросов других страниц. Поэтому то, что мы будем делать, выглядит следующим образом:

  • Допустим, мы начинаем с этого графика:

(да, я понимаю, что он неполный и не хватает некоторых связей. Но у меня есть основания полагать, что @Joeebevo — человек, который оценил бы визуально интерпретируемый график и математику, которая не продолжается в течение получаса.)

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

  1. Сначала возьмем узел с наибольшим количеством подключений: синий узел. Мы рассмотрим все его окружение, возьмем нашу оценку «8» и разделим ее на части, взвешенные в соответствии с оценками PageRank вокруг нее. Эти новые числа представлены фиолетовым текстом.

график, неподвижный

  1. Затем мы делим эти числа на узлы, к которым они подключены (деление, поскольку чем меньше расстояние PageRank, тем лучше, но с учетом релевантности, чем выше значение, тем лучше), присваивая этим узлам новое значение (обозначенное белым цветом). Наконец-то это рейтинг! (правда, это не окончательный счет, так как мы еще не учли кучу расстояний):

график

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

Математически мы не сделали ничего сложного — мы просто вычислили своего рода «среднее» из двух оценок, взвешенных по важности среднего узла. Это своего рода алгоритм, который путает «дож» с «собакой». Красный узел ничего не знает об оранжевом, его волнует только синий. Чтобы исправить это, нам нужно повторить процесс.

Чтобы решить, к какому узлу идти дальше, мы воспользуемся этим алгоритмом (он основан на теории Дейкстры, самом эффективном алгоритме поиска пути):

блок-схема

  • Итак, мы перейдем к узлу со следующими по количеству соединениями. В этом случае все они равны (3), поэтому мы перейдем к узлу с наивысшим баллом (обратите внимание, что если баллы также равны, какой из них вы выберете, не имеет значения для вывода), поэтому фиолетовый. Мы просто повторим процесс, чтобы получить: (новые расстояния оранжевым цветом, новые размеры бирюзовым цветом)

график

Обратите внимание, что с узлами белого текста мы можем умножать расстояние вместо деления, так как мы уже нормализовали его до положительного масштаба (жаргон для «сделал увеличение обеих осей по мере того, как результат становится более точным, вместо увеличения одного и уменьшения другого». ').

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

график

а затем перейдем к красному (зеленые узлы, черные линии):

график

и, наконец (прежде чем мы остановимся) к зеленому (красные узлы, красные линии):

график

Итак, чтобы просмотреть результаты:

  • Purple, blue and orange seem perfectly ordered, based on common sense! Of course, the numbers are a lot different from a simple average, and this is good because it:
    • Considers all other nodes in the calculation, not just that one node and its one PageRank score
    • Лучше для сравнения с большим количеством точек данных, так как мы принимаем во внимание множество других вещей
  • Однако то, что произошло с красным и зеленым, кажется очень запутанным. Они внезапно уменьшились по сравнению с другими, несмотря на то, что красный цвет даже изначально был выбором №2! Это ошибка?

Давайте проанализируем этот второй бит. Поначалу это действительно довольно запутанно, но нам нужно взглянуть на то, что мы на самом деле только что сделали, на абстрактном уровне. Представьте себе цепь: от каждой ячейки/амперметра/блока питания течет ток к другим, но по проводам с определенным сопротивлением. Мы берем значение каждого узла и передаем его соседним узлам в зависимости от расстояния. Другая аналогия — это как человек со льдом, несущий лед к домам жарким летом. Вы с радостью возьмете поровну льда для всех, но много тает по дороге к каждому дому. Следовательно, каждый получает количество, пропорциональное их расстоянию (хотя мне не нравится эта аналогия, поскольку она дает представление о том, что числа могут просто «просачиваться» из узлов)

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

график лучше, но без цифр

Теперь не все нужно учитывать: нужно соединить только квадратный корень подмножества (т.е. 50*sqrt(2)% узлов): те, которые разделены 1 или 2 узлами, но не более. В противном случае все стало бы слишком неуклюжим, так как алгоритм определения следующего узла стал бы двойным-рекурсивным — и так уже плохо! (честно говоря, математическое обоснование тоже есть, но оно выходит за рамки этого ответа (но, по сути, числа будут менее близки к «оптимальному» ответу)).

В заключение, ваше понятие независимого от запроса технически правильно, но важно отметить, что оно не комбинируется полностью независимо от запроса. Это зависит от других результатов, чтобы сформировать своего рода средневзвешенное значение, чтобы убедиться, что два результата, которые полностью находятся на противоположных концах спектра, не получают одинаковый балл (например, релевантность 2 + PR 8 против релевантности 8 + PR 2). Нерелевантный запрос, очевидно, не является более релевантным, поскольку он имеет высокий показатель PageRank, а высокий показатель PageRank бесполезен, если он получен только в результате ссылки на нерелевантные для запроса страницы (например, несмотря на то, что 9gag связан с много мест, если вы видите, что ни одно из этих мест не имеет ничего общего с собаками, почему этот высокий показатель PageRank должен что-то значить?).

Я знаю, что этот ответ длинный, но я надеюсь, что он достаточно ясно ответит на ваш вопрос. Обратите внимание, что это только один используемый алгоритм, но этого достаточно, чтобы 99% разработчиков вообще не пытались использовать поисковую систему.

person Geza Kerecsenyi    schedule 09.08.2019
comment
Спасибо. Мне все еще нужно это переварить, так как это выглядит сложнее, чем я думал. Не могли бы вы сказать мне название алгоритма графа, который вы описали выше, чтобы я мог исследовать его дальше? - person Joebevo; 10.08.2019
comment
Кроме того, мне интересно, почему оценка, зависящая от запроса, и PageRank НЕ являются независимыми. Это потому, что страницы, ориентированные на популярные темы/запросы, такие как мемы, скорее всего, будут иметь более высокий PageRank? - person Joebevo; 10.08.2019
comment
@Joeebevo, именно по поводу вашего второго комментария. Поскольку веб-сайт с мемами имеет более высокий рейтинг, чем случайный блог в целом, он будет занимать первое место. Я полагаю, моя точка зрения заключается в том, что для начала понимания ответа на ваш вопрос нужно понять, что PageRank не является какой-то объективной вещью, одинаковой во всех контекстах. Что ж, это так, но способ его применения должен зависеть от контекста окружающих результатов на графике. Однако я не знаю названия алгоритма, поскольку концептуально (очевидно, не математически) он настолько очевиден/прост, что никому не нужно было «открывать его». - person Geza Kerecsenyi; 10.08.2019
comment
@Joebevo см. мои последние изменения для получения дополнительной информации. - person Geza Kerecsenyi; 10.08.2019