Федор Романенко - "Ранжирование: от строчки кода до Матрикснета"
Запуск клуба "Поисковые системы"
1. Алгоритмы в поисковых системах
исследование, программирование и соревнование
Дмитрий Барашев
11 марта 2010
Дмитрий Барашев | Алгоритмы в поисковых системах 1/26
2. 1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 2/26
3. 1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 3/26
4. Что будем делать
Исследовать
Программировать
Соревноваться
Дмитрий Барашев | Алгоритмы в поисковых системах 4/26
5. Исследование
(настоящее)
Приличная научная работа включает в себя несколько
частей
Анатомия научной работы
Изучение предыдущего опыта, похожих работ и
смежных областей
Разработка своего подхода
Проведение экспериментов
Ваша работа тоже хочет быть приличной.
Дмитрий Барашев | Алгоритмы в поисковых системах 5/26
6. Исследование
(ваше)
У вас нет своего подхода, но исследование есть.
Анатомия вашего исследования
Прочитать и понять несколько книг и статей
Реализовать один или несколько алгоритмов и
сравнить их характеристики
Выбрать наиболее приемлемый для вас подход
Оформить результаты в виде прототипа научной
статьи на 2-3 страницы.
Дмитрий Барашев | Алгоритмы в поисковых системах 6/26
7. Программирование
Мы хотим не только почитать книги и статьи но и
применить знания на практике
Прототип поисковика
Может проиндексировать некоторое количество HTML
файлов
Может отвечать на пользовательские запросы
Данных будет много, поместиться целиком в память
шансов нет.
Дмитрий Барашев | Алгоритмы в поисковых системах 7/26
8. Соревнование
Просто так читать статьи и писать код скучно. Стать
лучшим – интересно!
Соревнование
В конце семестра мы проведём сравнительное
тестирование поисковых систем
Один и тот же запрос, слева результаты поисковика
A, справа результаты поисковика B. Чьи лучше?
Хорошее неленивое исследование и аккуратное
программирование – больше шансов на победу
Дмитрий Барашев | Алгоритмы в поисковых системах 8/26
9. Формат работы
Семинар.
Основную работу вы делаете самостоятельно:
Изучаете литературу
Пишете код и проводите эксперименты
Пишете текст работы
Очные встречи и специальные лекции будут
Большая часть работы и общения будет в online на
barashev.net
Дмитрий Барашев | Алгоритмы в поисковых системах 9/26
10. Команды
веселее вместе
Teh team
В команде 2-4 человека
Каждый самостоятельно изучает литературу,
договаривается с товарищами о формате обмена
данными, реализует понравившиеся алгоритмы и
оценивает их характеристики
Из полученных компонент команда собирает
поисковик
Поисковик у команды получается общий, а
исследования в значительной степени индивидуальные
В поисковике как минимум две большие компоненты и
каждую можно реализовать несколькими способами.
Работы на всех хватит.
Дмитрий Барашев | Алгоритмы в поисковых системах 10/26
11. 1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 11/26
12. Базовая терминология
чтобы слова что-то означали
Документ (document) – некоторая атомарная единица
результатов поиска
Корпус (corpus) – множество документов, среди
которых идёт поиск
Запрос (query) – одно или более искомое слово
Релевантный документ (matching document) –
документ который по какому-то критерию
удовлетворяет запросу
Результат (result) – множество релевантных
документов
Дмитрий Барашев | Алгоритмы в поисковых системах 12/26
13. Давайте начнём
(что может быть проще)
Наивная реализация
Получает запрос
Перебирает все документы в корпусе, проверяет
каждый на релевантность методом поиска подстроки
для каждого слова запроса.
Если документ релевантный, записывает его в
результат
Дмитрий Барашев | Алгоритмы в поисковых системах 13/26
14. Давайте начнём
(что может быть проще)
Наивная реализация
Получает запрос
Перебирает все документы в корпусе, проверяет
каждый на релевантность методом поиска подстроки
для каждого слова запроса.
Если документ релевантный, записывает его в
результат
К сожалению она работать не будет...
Стоимость поиска равна O(C ∗ Q), где C и Q размеры
корпуса и запроса
Ваши пользователи просто заснут, не дождавшись
результатов
Дмитрий Барашев | Алгоритмы в поисковых системах 13/26
15. Индексирование
что это такое
Чтоб поиск выполнялся быстрее, корпус надо
проиндексировать.
Построение примитивного индекса
Каждый документ разбиваем на токены (слова).
Получаем отображение документ → список токенов.
Полученное отображение инвертируем, то есть делаем
отображение токен → список документов.
В полученном инвертированном индексе стоимость поиска
будет O(R ∗ Q), где R – размер результата.
Дмитрий Барашев | Алгоритмы в поисковых системах 14/26
16. Пример
Example
Оригинальный корпус:
doc1: "foo bar baz"
doc2: "baz lorem ipsum"
doc3: "foo lorem amet"
Инвертированный индекс:
"foo": {doc1, doc3}
"bar": {doc1}
"baz": {doc1, doc2}
"lorem": {doc2, doc3}
"ipsum": {doc2}
"amet": {doc3}
Дмитрий Барашев | Алгоритмы в поисковых системах 15/26
17. Индексирование
вариации
Количественные характеристики
Минимизация размера индекса (меньше занимает
места ⇒ больший корпус можно проиндексировать)
Минимизация времени построения (быстрее строим
⇒ быстрее можем обновлять)
Качественные характеристики
В индексе могут присутствовать позиции вхождения
токенов в документы
Для разных зон документа могут быть разные
индексы
Документы в постинг-листах могут быть упорядочены
по-разному
Дмитрий Барашев | Алгоритмы в поисковых системах 16/26
18. Поиск
что значит "релевантен"
Определять релевантность можно по-разному.
Модели поиска
Булевская: запрос является логическим выражением
ключевых слов (например все объединены AND’ом).
Релевантны те документы, которые удовлетворяют
выражению. Все релевантные документы имеют
одинаковую ценность.
Векторная: документ и запрос представлены как
векторы в пространстве токенов. Мера релевантности
– косинус угла между векторами. У результатов
разная ценность.
Дмитрий Барашев | Алгоритмы в поисковых системах 17/26
19. Поиск
не всё одинаково полезно
Два документа, одинаково релевантные запросу, могут
иметь существенно разную ценность.
Что важнее?
Ваш запрос: "Бюджет фильма Аватар"
Результат 1 лежит на avatarmovie.com, результат 2 на
afisha.ru, результат 3 в безвестном ЖЖ с 3-мя
читателями.
Слова в запросе имеют разную важность
Какое слово важнее?
Ваш запрос: "килограмм плутония цена"
Дмитрий Барашев | Алгоритмы в поисковых системах 18/26
20. Условия работы прототипа
программное окружение и входные данные
Все прототипы должны быть написаны на Java или на
языке, компилирующемся в Java байткод. Все прототипы
будут работать в одинаковых условиях.
Программное окружение
Единый интерфейс обмена данными с диском
Единый интерфейс для чтения исходного корпуса
Корпус документов
Каждый документ – это XHTML файл с
идентификатором и списком идентификаторов
документов, в которые идут ссылки.
Будет тренировочный корпус, помещающийся в RAM
и боевой, который в RAM не поместится.
Дмитрий Барашев | Алгоритмы в поисковых системах 19/26
21. 1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 20/26
22. Ближайшие шаги
Что нужно сделать в ближайшие дни
Собрать команды и "зарегистрировать" их на
barashev.net
Постараться в команде распределить роли – кто будет
индексировать, кто искать, а кто может будет делать
ранкинг
Начать читать литературу
Убедиться что вы знаете и помните:
как программировать на Java
как парсить XHTML
как писать тесты (пригодится)
как работает жёсткий диск (пригодится тем более)
Дмитрий Барашев | Алгоритмы в поисковых системах 21/26
23. Подробности о программном окружении
Подробности о программном окружении в течении
ближайших дней на сайте или на ближайшей очной
встрече.
Дмитрий Барашев | Алгоритмы в поисковых системах 22/26
24. Основная литература
Читать, к сожалению, придётся по-английски.
Introduction to Information Retrieval (Manning,
Raghavan, Sch¨tze)
u
http://nlp.stanford.edu/IR-book/information-retrieva
Information Retrieval (Rijsbergen)
http://www.dcs.gla.ac.uk/Keith/Preface.html
Дмитрий Барашев | Алгоритмы в поисковых системах 23/26
25. Как это сделали вы?
расскажите, не стесняйтесь
В конце семестра попросим команды, а победителя
особенно, рассказать о применённых алгоритмах.
Дмитрий Барашев | Алгоритмы в поисковых системах 24/26
26. А как это делается по-настоящему?
Большие поисковики конечно гораздо сложнее. Всех
секретов они не откроют. Но кое-что будет.
Бонусные лекции
MapReduce – технология параллельной обработки
большого количества информации
Bigtable – распределённая слабоструктурированная
таблица
Дмитрий Барашев | Алгоритмы в поисковых системах 25/26
27. Какое у этого продолжение
У конкретно этой работы продолжения скорее всего не
будет. Это всего лишь введение в исследования
вообще и в тему information management.
В группе исследования методов организации
информации (http://meta.math.spbu.ru) можно
заниматься дальнейшими исследованиями в самых
разнообразных направлениях, востребованных как в
науке так и в промышленности.
Дмитрий Барашев | Алгоритмы в поисковых системах 26/26