Вы читаете plakhov

Не кинокритик. Не палеонтолог. - Яндекс.Телепатия или from Russia with love

дек. 15, 2010

02:17 pm - Яндекс.Телепатия или from Russia with love

Previous Entry Поделиться Next Entry

Запустили систему, над которой я работал последний год. За это время я успел её сначала полюбить, а потом возненавидеть (не переставая любить).

Технология "Спектр"

Здесь могу рассказать некоторые технические подробности, которые в официальный пост не вошли.

Система исследует запросы всех пользователей Яндекса и выделяет в них различные объекты
Тут произошла интересная вещь. Самым мощным источником информации для построения этой онтологии оказываются результаты выделения в массе поисковых запросов типичных "контекстов" и "концептов". Позже я ознакомился с работами A.Clark и некоторых других авторов, и оказалось, что этот сигнал неспроста. Подобный "парсинг" представляет собой некоторое (естественно, пока что крайне примитивное) приближение к тому, как человеческие существа учатся разговаривать на естественных языках. Такие вот 2017-дела.

Естественно! поверх всего этого работает много ручных правил всяких, фикслистов ("бензопила такая-то это не автомобиль" и т.п.), хаков, "чтение" википедии происходит по совершенно другим правилам, производится финальный проход совсем уж прямо алгоритмом Ахо-Корасик по заголовкам и снипетам готовых результатов в поисках спамоглупостей, и т.д. и т.п. Но все равно интересно, что из этого всего может выйти в прекрасном далёком.

поиск Яндекса максимизирует вероятность того, что человек найдет именно то, что искал
Это предложение описывает не столько результат, каким его хотелось бы видеть :), сколько процесс: используется честная вероятностная модель пользователя и его поведения, и выдача составляется таким образом, чтобы максимизировать некоторое матожидание в этой модели. Если обозначить количество url'ов на первой странице выдачи за N, то сложность этой процедуры экспоненциально растет с увеличением N (задача является NP-сложной, кроме шуток). К счастью, N, как правило, равно 10, к тому же простой "жадный" алгоритм для неё работает хорошо.

Эта вероятностная модель схожа с яндексовской метрикой pfound, о которой и Паша Карпович, и Илья Сегалович уже рассказывали в разных местах, и даже называется похоже. Она используется не только в текущем запуске, но и во многих других местах, где приходится иметь дело с тем, что разные пользователи хотят видеть в выдаче разные вещи (например, хоть как-то приближает к пониманию того, как определить, насколько уместны русскоязычные результаты в результатах украинского поиска). Я не могу сказать, что прямо изобрёл её (после некоторого количества размышлений такая модель кажется самоочевидной, так что её не раз переизобретали, а "о чем-то таком" в отделе качества поиска думали, наверное, вообще все), но всё-таки довел её до состояния named entity и популяризовал внутри компании.

И про название. Практически "всю дорогу" технология называлась "Разнообразием" ("Diversity"). Переименовать решили ближе к концу, когда после анонса во внутренней рассылке выяснилось, что "разнообразие" люди склонны понимать слишком буквально, и ожидают увидеть выдачу не сбалансированную по потребностям пользователей, а именно что максимально разнообразную. А "Спектром" при этом внутри называли совсем другую штуку. Ну что, всё как всегда.

Upd. Огромное спасибо прекрасной petsen, которая героически менеджила проект всё это время, проводила со мной ликбез насчёт всяких лингвистических тонкостей, уговаривала меня оставить одни безумные идеи и всерьез рассмотреть другие, ну и вообще подымала боевой дух. И Грише привет! :)

Comments:

[User Picture]
From:rocketsan
Date:Декабрь 15, 2010 12:07 pm none (UTC)
(Link)
А у тебя какая должность в Яндексе?
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 01:31 pm none (UTC)
(Link)
Старший программист
(Ответить) (Parent) (Thread)
[User Picture]
From:petsen
Date:Декабрь 15, 2010 12:29 pm none (UTC)
(Link)
Поздравляю!Ура!
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 01:30 pm none (UTC)
(Link)
И тебя я поздравляю!
Сейчас небольшой апдейт напишу
(Ответить) (Parent) (Thread)
[User Picture]
From:petsen
Date:Декабрь 15, 2010 02:02 pm none (UTC)
(Link)
:) так я примазалась и постояла рядом с легендой
С тобой отлично работать (не только потому, что ты пишешь апдейты :)
(Ответить) (Parent) (Thread)
[User Picture]
From:802_11
Date:Декабрь 15, 2010 12:34 pm none (UTC)
(Link)
нечаянно семантиквеб :>
куал
(Ответить) (Thread)
[User Picture]
From:itman
Date:Декабрь 15, 2010 02:40 pm none (UTC)
(Link)
+1
(Ответить) (Parent) (Thread)
[User Picture]
From:avkh
Date:Декабрь 15, 2010 12:41 pm none (UTC)
(Link)
а в картинках цапка всё по-прежнему неадекватно
http://images.yandex.ru/yandsearch?text=%D1%86%D0%B0%D0%BF%D0%BE%D0%BA

тормоза у вас там в картинкопоиске работают
(Ответить) (Thread)
[User Picture]
From:avkh
Date:Декабрь 15, 2010 12:43 pm none (UTC)
(Link)
а, нет, присмотрелся, чуть получше стало, результат уже ненулевой
извиняйте
(Ответить) (Thread)
[User Picture]
From:alll
Date:Декабрь 15, 2010 12:45 pm none (UTC)
(Link)
Круто! Поздравляю!

А самому пользователю посмотреть спектр объектов, опознанных в его запросе и выбрать "ручками" подходящее можно будет?
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 01:18 pm none (UTC)
(Link)
персонализация в планах
но вряд ли именно в такой форме
(Ответить) (Parent) (Thread)
[User Picture]
From:petsen
Date:Декабрь 15, 2010 02:03 pm none (UTC)
(Link)
Выбрать ручками чаще всего можно прямо в саджесте, неспа?. В противном случае нужное вряд ли опознается (пока).
(Ответить) (Parent) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 02:06 pm none (UTC)
(Link)
Это тоже правда, я просто так понял, что ув. alll имел в виду что-то вроде болотовского "суперколдунщика".
(Ответить) (Parent) (Thread)
[User Picture]
From:alll
Date:Декабрь 21, 2010 12:42 pm none (UTC)
(Link)
если в саджесте можно посмотреть только одномерный список, сгенерированный вариацией десятка параметров, каждый из которых имеет по десятку вариантов, то быстрее десяток ручек покрутить, чем 10^10 элементов просматривать, неспа?

а если эти 10^10 редуцируются до влезающих на экран 10^2 сколь угодно гениальным, но далёким от неразрушающей телепатии алгоритмом, то всё может оказаться ещё печальнее
(Ответить) (Parent) (Thread)
[User Picture]
From:itman
Date:Декабрь 15, 2010 02:41 pm none (UTC)
(Link)
Поздравляю.
Кстати, хороший термин спектр. Мне он нравится даже больше, чем диверсификация результатов. Хотя диверсификация, наверное, более понятный термин.
(Ответить) (Thread)
(Удалённый комментарий)
[User Picture]
From:itman
Date:Декабрь 15, 2010 04:33 pm none (UTC)
(Link)
Меня доставляют комментарии на тему того, что я должен, а что нет!
(Ответить) (Parent) (Thread)
[User Picture]
From:n0mad_0
Date:Декабрь 15, 2010 08:25 pm none (UTC)
(Link)
а если "специалист по информационному поиску"? хотя да, какая это Наука =)
(Ответить) (Parent) (Thread)
[User Picture]
From:Roman Frolin
Date:Декабрь 15, 2010 07:53 pm none (UTC)
(Link)
Поздравляю! Главное, что-бы пользователям понравилось!
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 08:20 pm none (UTC)
(Link)
Спасибо!
(Ответить) (Parent) (Thread)
[User Picture]
From:freedom_of_sea
Date:Декабрь 15, 2010 08:12 pm none (UTC)

Яндекс.ИскИн

(Link)
и Не разнообразие, а СВОЕОБРАЗИЕ "Singularity"
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 08:20 pm none (UTC)

Re: Яндекс.ИскИн

(Link)
это пока в планах
(Ответить) (Parent) (Thread)
[User Picture]
From:photographer
Date:Декабрь 15, 2010 08:24 pm none (UTC)
(Link)
Следом за alll-ом и в развитие идеи попрошу показывать сверху над результатами выдачи все угаданные категории, давая возможность мне ткнуть в ту, которую я вот сейчас имею в виду, но не запоминая её навсегда, потому что если сегодня я искал обзоры, завтра вполне могу искать где купить изученное вчера.
(Ответить) (Thread)
[User Picture]
From:project_leader
Date:Декабрь 15, 2010 10:01 pm none (UTC)
(Link)
на http://blekko.com/ похоже, хотя у них несколько иное
(Ответить) (Parent) (Thread)
[User Picture]
From:alamar
Date:Декабрь 15, 2010 08:26 pm none (UTC)
(Link)
Кстати, а на зарубежную выдачу эта штука в какой мере сейчас работает?
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 08:39 pm none (UTC)
(Link)
очень ограниченно
(Ответить) (Parent) (Thread)
[User Picture]
From:alamar
Date:Декабрь 15, 2010 08:59 pm none (UTC)
(Link)
Нет ресурсов ее обучать и вычищать упячки? Или она может совсем самонастраиваться?
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 08:38 pm none (UTC)

нет, не только

(Link)
чтобы не повторяться:
http://habrahabr.ru/company/yandex/blog/110059/#comment_3499287
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]
From:plakhov
Date:Декабрь 16, 2010 09:20 am none (UTC)

Re: добавляется некий бонус

(Link)
Нет, это не очень похоже на правду. Факторы тематического совпадения у нас есть давным-давно, я еще в Яндексе не работал, а они уже были внедрены. Если категория всего одна, то MatrixNet'овские формулы отлично их используют и сами по себе, никакой "Спектр" дополнительно не нужен.

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

Посмотрите еще вот этот комментарий: http://habrahabr.ru/company/yandex/blog/110059/#comment_3498186
Боюсь, лучше я уже не объясню.
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
[User Picture]
From:plakhov
Date:Декабрь 16, 2010 09:52 am none (UTC)
(Link)
Нет, ни технологически, ни идеологически это не wizard.
(Ответить) (Parent) (Thread)
[User Picture]
From:liveuser
Date:Декабрь 16, 2010 11:39 am none (UTC)

Re: добавляется некий бонус

(Link)
Не увидел в списке источников "смежные запросы". Соответственно, например, Вордстат знает, что Белый - это поэт или цвет, а "Спектр" нет. Действительно не используется или недочет алгоритма?

Если можно, еще несколько сумбурных вопросов:
1. Эти 60 категорий - это крупные категории, охватывающие примерно все запросы Яндекса или это небольшие категории, охватывающие его часть? Вообще, с примерным списком категорий можно ознакомиться (штук 10 покажите хотя бы, чтобы характер был ясен). Вообще, странно, что всего 60 категорий - и при этом находится место для категории "Поэты".
2. Что с порно? Помнится, Яндекс заявлял в качестве политики - не показывать порно по двусмысленным запросам (т.е. если порно-тематика не задана явно; один из классических примеров - "училки"); теперь же "Спектр" должен делать прямо противоположное; если он понимает, что 99% пользователей по запросу "училки" ожидают увидеть порно, то что покажет Яндекс? (Сейчас мне на первом месте показывают "Когда треугольничек ее ануса достаточно размягчился...". Не знаю, как было вчера, но вот этот "треугольничек ануса" - это "Спектр" постарался или как?)
2а. Или вообще у вас какая-то беда приключилась с порно-запросами? Мне вот даже по "орфографическому" запросу "делает" - поочередно медсестра, Бритни Сприс, блядь и манда делают минет.
3. "Спектр" планируют прикрутить к Директу (т.е. Яндекс возьмет на себя фильтрацию показа объявлений по тематикам)?
4. "Поэтому все эти способы дополняют и исправляют друг друга; здесь я уже не буду вдаваться в подробности (не потому, что секрет, а потому что скучно)" - мне не скучно, расскажите. Просто коэффициентами? (Можно на примерах: откуда Яндекс знает, что "кризис 2" и "кризис 2 видео" - это игры, но не знает, что "кризис 2 фото" - это снова они; или почему пользователи часто делают запросы "мешок денег торт", "мешок денег фото" и "мешок денег картинки", но Яндекс все равно не знает, что "мешок денег" относится к категориям "кулинария" и "картинки").
5. Вообще, самое интересное здесь - это как именно определяется категория запроса пользователя. Какой-нибудь семинар или подробный рассказ будет? Или это уже секрет?
(Ответить) (Parent) (Thread) (Развернуть)
From:9000
Date:Декабрь 15, 2010 08:48 pm none (UTC)

(Link)
Поздравления.
(Ответить) (Thread)
From:(Anonymous)
Date:Декабрь 15, 2010 08:57 pm none (UTC)
(Link)
Очень поздравляю вас со стариной Петсоном! Круто получилось. И название неплохое досталось:) Надеюсь на совместное продолжение банкета.
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 15, 2010 08:58 pm none (UTC)
(Link)
спасибо!
(Ответить) (Parent) (Thread)
From:lgershenzon
Date:Декабрь 15, 2010 08:59 pm none (UTC)
(Link)
Это лева, а не аноним, извините.
(Ответить) (Parent) (Thread)
[User Picture]
From:dtjurev
Date:Декабрь 16, 2010 06:10 am none (UTC)
(Link)
Такой вопрос. Если я ввожу текст запроса "наполеон" и система определит, что большинство пользователей при этом имели в виду торт, а не полководца, то она выдаст мне первые результаты именно про торт, так? Но если я всё-таки имел в виду полководца, то получается, что я не получу желаемого? :)
А как насчёт такой системы. При вводе неоднозначного запроса, система просто задаёт вопрос:
- Вы имели в виду торт или полководца?
Я выбираю ответ, получаю адекватные результаты и... profit! :)
Такую фичу можно сделать опциональной, типа расширенного поиска. Если ограничить число уточняющих вопросов, скажем, двумя или тремя, то это не усложнит заметно процесс поиска, но драматически увеличит его качество. С такой системой работать будет даже интересно, имхо. :)
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 16, 2010 09:06 am none (UTC)
(Link)
Идея в том, чтобы экономить клики и внимание пользователей. Всё должно как можно чаще работать "само", не требуя дополнительных действий.

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

Часто, кстати, этой системой удобно пользоваться вполне сознательно, когда хочешь получить разностороннюю информацию о некотором вполне определенном объекте. Я вот по мотивам поста bik_top ввёл запрос [терскол] поностальгировать: http://yandex.ru/yandsearch?text=%D1%82%D0%B5%D1%80%D1%81%D0%BA%D0%BE%D0%BB&lr=213
Выдача как руками нарисованная. Лепота.
(Ответить) (Parent) (Thread)
[User Picture]
From:fregimus
Date:Декабрь 16, 2010 10:40 am none (UTC)
(Link)
Поздравляю, невероятно интересно! Если я что-то понял из описания и комментариев, наполеоны-торты и Наполеоны-полководцы разводятся по категориям и не конкурируют между собой, так?

А статьи будут, или это какбэ секрет фирмы?
(Ответить) (Thread)
[User Picture]
From:novik65
Date:Декабрь 16, 2010 12:56 pm none (UTC)
(Link)
Неладно что-то у вас там в яндексе - http://just-hoaxer.livejournal.com/264711.html
Не иначе, эта новая технология советы не любит ;)
(Ответить) (Thread)
[User Picture]
From:ljstructure
Date:Декабрь 17, 2010 09:12 am none (UTC)

Search Result Diversification

(Link)
Это связано с "Search Result Diversification" ?
http://www.google.com/search?hl=en&newwindow=1&biw=1272&bih=829&q=Search+Result+Diversification&aq=f&aqi=g1&aql=&oq=&gs_rfai=

(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 17, 2010 09:17 am none (UTC)

Re: Search Result Diversification

(Link)
Да, Спектр "об этом же". Другое дело, что повышение разнообразия выдачи для нас не было самоцелью, это ожидаемый, но все-таки не главный эффект.
(Ответить) (Parent) (Thread)
[User Picture]
From:ilya_stremovsky
Date:Декабрь 17, 2010 03:30 pm none (UTC)
(Link)
Во-первых, поздравляю!
во-вторых, дилетантский вопрос. Мне кажется, или именно упорное неугадывание подобных контекстов, это главная видная невооруженным проблема AI переводчиков? Когда оно сует пирожных вместо полководцев.
Ваши (или они твои личные?) наработки, они в переводах применимы? Или не про то, не спасут и т.п.?
(Ответить) (Thread)
[User Picture]
From:ilya_stremovsky
Date:Декабрь 17, 2010 03:35 pm none (UTC)
(Link)
Хм, ты сам же пишешь про языки... но если можешь чуть более развернуто, ответить..

Кстати вдогонку. Почему я спросил... Удивило, что неоднозначностей при запросах, которые вообще-то немногословны (или я чудовищно ошибаюсь) и довольно бедны собственным контекстом всего 20%.

Обычный AI переводчик, ухитряется переврать как бы не половину слов. Меня всегда это удивляло.
(Ответить) (Parent) (Thread)
[User Picture]
From:arikon
Date:Декабрь 21, 2010 10:23 am none (UTC)
(Link)
Андрей, поздравляю с запуском!
(Ответить) (Thread)
[User Picture]
From:milevsky
Date:Декабрь 29, 2010 01:52 pm none (UTC)
(Link)
Скажите, какой подход используется в Спектре: pointwise, listwise или pairwise?
(Ответить) (Thread)
[User Picture]
From:plakhov
Date:Декабрь 30, 2010 09:36 am none (UTC)
(Link)
Сложно ответить, потому что Спектр не является learning to rank методом и, соответственно, не очень хорошо ложится в классификацию Liu (в отличие от Матрикснета, скажем). Там, где оцениваются характеристики документа, это скорее pointwise, там, где по ним строится итоговая выдача - listwise.
(Ответить) (Parent) (Thread)
[User Picture]
From:milevsky
Date:Декабрь 30, 2010 12:36 pm none (UTC)
(Link)
Спасибо за ответ =)
(Ответить) (Parent) (Thread)