Компания
510,13
рейтинг
17 октября 2013 в 14:22

Разработка → Технология Блендер. Как Яндекс умно смешивает разные виды ответов

Сегодня мы расскажем вам о нашей технологии под названием Блендер. Она обеспечивает ранжирование и встраивание блоков с вертикальными поисками в страницу поисковой выдачи Яндекса.

image

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

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

Но определить, насколько та или иная вертикаль соответствует конкретному запросу не так-то просто. Ведь запрос не всегда полностью отражает потребности пользователя. Проще говоря, мы не можем точно знать, что было у пользователя в голове, когда он этот запрос создавал. Например, если в качестве запроса выступает название банка, трудно сходу сказать, что хотел увидеть пользователь: ссылку на официальный сайт или расположение ближайшего к нему отделения. Бывает, что в запросе присутствует еще более многозначный объект. Допустим, пользователь вбил запрос [Гарри Поттер]. Он мог иметь в виду, как серию книг, так и серию фильмов. И допустим, что один из этих фильмов в данный момент идет в кинотеатрах, а все остальные уже выпущены на дисках. Сходу определить, хотел ли пользователь почитать книгу, заказать билет в кинотеатр, купить диск, посмотреть фильм онлайн или скачать файл с ним, невозможно. Наша задача заключается в том, чтобы определить, какие вертикали соответствуют возможным потребностям и встроить их на страницу выдачи.

Определяем потребности

image

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

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

Теперь, когда мы можем определить вероятность потребности для каждой вертикали, нужно произвести ранжирование. У нас есть как достаточно обособленные вертикали с совершенно отдельными алгоритмами ранжирования (картинки, видео), так и небольшие надстройки над веб-поиском, добавляющие новые критерии. Если в качестве потребности выступает тип необходимого пользователю контента, на помощь приходят обособленные вертикали со своим ранжированием. Но бывают запросы, для которых наиболее релевантными оказываются вертикали второго типа: поиски по веб-документам с дополнительными критериями и учетом новых данных. Например, мы можем отранжировать документы по свежести, по цене товара и т.п. Мы можем строить такие вертикали непосредственно над основной веб-базой, предварительно собрав данные, на основе которых будет проводиться ранжирование. Для этого нам требуется следующее:

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


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

Качество

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

image

Где pLook[i] – вероятность просмотреть i-й документ из списка, pRel[i] – вероятность того, что i-й документ окажется релевантным. Значения pRel[i] в нашей модели вычисляются из оценок релевантности по запросу. Вероятность просмотра документа рассчитывается при помощи каскадных моделей. В нашем случае пользователь просматривает результаты сверху вниз один за другим. Он продолжает просмотр в случае, если предыдущий вариант оказался неподходящим, и прекращает поисковую сессию с вероятностью pBreak:

image

Представить все это в динамике можно следующей схемой:

image

Пользователь просматривает страницу выдачи сверху вниз. С вероятностью pRel он найдет то, что искал и с вероятностью pBreak устанет и уйдет со страницы выдачи.

Блендер же встраивает в поисковую выборку результаты сразу по нескольким вертикалям и потребностям. Соответственно, тут лучше работает метрика wide pFound. Она определяет вероятность того, что пользователь будет удовлетворен ответом на неоднозначный запрос. Wide pFound – это сумма вероятностей потребностей, помноженная на pFound определенной потребности. Иначе говоря, сумма вероятностей того, что пользователь увидит определенный результат, помноженная на вероятность релевантности этого результата.

image

Вертикали в Островах

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

image

Помимо ссылок на левой панели, вертикальные поиски отображаются в виде блоков на странице основного поиска. Это еще один путь к конкретным вертикальным движкам.
Автор: @styskin
Яндекс
рейтинг 510,13

Комментарии (13)

  • +5
    А вот интересно, должна ли как то оплачиваться реклама, которая попадает на сайт случайно в виде скриншота?
    • +5
      Правильный вопрос: «Случайно», ли она попала на скриншот?
    • +7
      Зачем оплачивать рекламу, размещение которой ты не заказывал?

      image
  • 0
    Вопрос немного не в тему, но все же — а острова уже вышли в паблик?
    • 0
      Нет, существует только в бете
      • 0
        Спасибо. В бете видел, просто вся статья привязана к островам — думал они уже в паблике и опробованы. Если бы была возможность включить для зарегистрированного пользователя бету островов по умолчанию — было бы круто.
        • 0
          Мы идем к этому, не все функциональные элементы в островах пока работают (колдунщик отключения горячей воды например), поэтому не раскатываем ее на пользователей
  • 0
    Чорт, почему у Яндекса все время такие статьи что прочитаешь, вроде круто, но ничего особого для себя не выносишь.
    • +1
      Если вы не можете применить это прямо сейчас, это не значит, что информация бесполезна. Может быть однажды пригодится. На это принципе, в общем-то, и строится образование.
      • 0
        я к тому что может быть было бы интереснее почитать про
        мы можем применить собственную схему майнинга

        то есть как вы выковыриваете структурированные данные если нет микродаты, og и прочего. «Оператор» вручную просто заводит нечто вроде xpath чтобы понять где что в доме лежит?
        Или что-то типа http://diffbot.com/ где используется computer vison для извлечения контента, или путь read it later, когда находятся куски большого человеко подобного текста.

        В общем более мелкие темы но освещенные подробнее были поприкольнее, ИМХО
        • +1
          О, про это у меня есть крутой скринкаст, как происходит обучение: майнинг xpath-ов. И как это переиспользуется между сайтами.
          Собственно на этой технологии сделан Турецкий маркет market.yandex.com.tr/?clid=505, если понимаете по Турецки. Я подумаю, как его оформить и выложить в паблик
          • 0
            да да )
          • 0
            Было бы интересно.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка