27
Алгоритмы в поисковых системах исследование, программирование и соревнование Дмитрий Барашев 11 марта 2010 Дмитрий Барашев | Алгоритмы в поисковых системах 1/26

Запуск клуба "Поисковые системы"

Embed Size (px)

Citation preview

Page 1: Запуск клуба "Поисковые системы"

Алгоритмы в поисковых системахисследование, программирование и соревнование

Дмитрий Барашев

11 марта 2010

Дмитрий Барашев | Алгоритмы в поисковых системах 1/26

Page 2: Запуск клуба "Поисковые системы"

1 Кружок

2 Поисковик

3 Что будет дальше

Дмитрий Барашев | Алгоритмы в поисковых системах 2/26

Page 3: Запуск клуба "Поисковые системы"

1 Кружок

2 Поисковик

3 Что будет дальше

Дмитрий Барашев | Алгоритмы в поисковых системах 3/26

Page 4: Запуск клуба "Поисковые системы"

Что будем делать

ИсследоватьПрограммироватьСоревноваться

Дмитрий Барашев | Алгоритмы в поисковых системах 4/26

Page 5: Запуск клуба "Поисковые системы"

Исследование(настоящее)

Приличная научная работа включает в себя несколькочастей

Анатомия научной работыИзучение предыдущего опыта, похожих работ исмежных областейРазработка своего подходаПроведение экспериментов

Ваша работа тоже хочет быть приличной.

Дмитрий Барашев | Алгоритмы в поисковых системах 5/26

Page 6: Запуск клуба "Поисковые системы"

Исследование(ваше)

У вас нет своего подхода, но исследование есть.

Анатомия вашего исследованияПрочитать и понять несколько книг и статейРеализовать один или несколько алгоритмов исравнить их характеристикиВыбрать наиболее приемлемый для вас подходОформить результаты в виде прототипа научнойстатьи на 2-3 страницы.

Дмитрий Барашев | Алгоритмы в поисковых системах 6/26

Page 7: Запуск клуба "Поисковые системы"

Программирование

Мы хотим не только почитать книги и статьи но иприменить знания на практике

Прототип поисковикаМожет проиндексировать некоторое количество HTMLфайловМожет отвечать на пользовательские запросы

Данных будет много, поместиться целиком в памятьшансов нет.

Дмитрий Барашев | Алгоритмы в поисковых системах 7/26

Page 8: Запуск клуба "Поисковые системы"

Соревнование

Просто так читать статьи и писать код скучно. Статьлучшим – интересно!

СоревнованиеВ конце семестра мы проведём сравнительноетестирование поисковых системОдин и тот же запрос, слева результаты поисковикаA, справа результаты поисковика B. Чьи лучше?

Хорошее неленивое исследование и аккуратноепрограммирование – больше шансов на победу

Дмитрий Барашев | Алгоритмы в поисковых системах 8/26

Page 9: Запуск клуба "Поисковые системы"

Формат работы

Семинар.Основную работу вы делаете самостоятельно:

Изучаете литературуПишете код и проводите экспериментыПишете текст работы

Очные встречи и специальные лекции будутБольшая часть работы и общения будет в online наbarashev.net

Дмитрий Барашев | Алгоритмы в поисковых системах 9/26

Page 10: Запуск клуба "Поисковые системы"

Командывеселее вместе

Teh teamВ команде 2-4 человекаКаждый самостоятельно изучает литературу,договаривается с товарищами о формате обменаданными, реализует понравившиеся алгоритмы иоценивает их характеристикиИз полученных компонент команда собираетпоисковикПоисковик у команды получается общий, аисследования в значительной степени индивидуальные

В поисковике как минимум две большие компоненты икаждую можно реализовать несколькими способами.Работы на всех хватит.

Дмитрий Барашев | Алгоритмы в поисковых системах 10/26

Page 11: Запуск клуба "Поисковые системы"

1 Кружок

2 Поисковик

3 Что будет дальше

Дмитрий Барашев | Алгоритмы в поисковых системах 11/26

Page 12: Запуск клуба "Поисковые системы"

Базовая терминологиячтобы слова что-то означали

Документ (document) – некоторая атомарная единицарезультатов поискаКорпус (corpus) – множество документов, средикоторых идёт поискЗапрос (query) – одно или более искомое словоРелевантный документ (matching document) –документ который по какому-то критериюудовлетворяет запросуРезультат (result) – множество релевантныхдокументов

Дмитрий Барашев | Алгоритмы в поисковых системах 12/26

Page 13: Запуск клуба "Поисковые системы"

Давайте начнём(что может быть проще)

Наивная реализацияПолучает запросПеребирает все документы в корпусе, проверяеткаждый на релевантность методом поиска подстрокидля каждого слова запроса.Если документ релевантный, записывает его врезультат

К сожалению она работать не будет...Стоимость поиска равна O(C ∗Q), где C и Q размерыкорпуса и запросаВаши пользователи просто заснут, не дождавшисьрезультатов

Дмитрий Барашев | Алгоритмы в поисковых системах 13/26

Page 14: Запуск клуба "Поисковые системы"

Давайте начнём(что может быть проще)

Наивная реализацияПолучает запросПеребирает все документы в корпусе, проверяеткаждый на релевантность методом поиска подстрокидля каждого слова запроса.Если документ релевантный, записывает его врезультат

К сожалению она работать не будет...Стоимость поиска равна O(C ∗Q), где C и Q размерыкорпуса и запросаВаши пользователи просто заснут, не дождавшисьрезультатов

Дмитрий Барашев | Алгоритмы в поисковых системах 13/26

Page 15: Запуск клуба "Поисковые системы"

Индексированиечто это такое

Чтоб поиск выполнялся быстрее, корпус надопроиндексировать.

Построение примитивного индексаКаждый документ разбиваем на токены (слова).Получаем отображение документ → список токенов.Полученное отображение инвертируем, то есть делаемотображение токен → список документов.

В полученном инвертированном индексе стоимость поискабудет O(R ∗ Q), где R – размер результата.

Дмитрий Барашев | Алгоритмы в поисковых системах 14/26

Page 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

Page 17: Запуск клуба "Поисковые системы"

Индексированиевариации

Количественные характеристикиМинимизация размера индекса (меньше занимаетместа ⇒ больший корпус можно проиндексировать)Минимизация времени построения (быстрее строим⇒ быстрее можем обновлять)

Качественные характеристикиВ индексе могут присутствовать позиции вхождениятокенов в документыДля разных зон документа могут быть разныеиндексыДокументы в постинг-листах могут быть упорядоченыпо-разному

Дмитрий Барашев | Алгоритмы в поисковых системах 16/26

Page 18: Запуск клуба "Поисковые системы"

Поискчто значит "релевантен"

Определять релевантность можно по-разному.

Модели поискаБулевская: запрос является логическим выражениемключевых слов (например все объединены AND’ом).Релевантны те документы, которые удовлетворяютвыражению. Все релевантные документы имеютодинаковую ценность.Векторная: документ и запрос представлены каквекторы в пространстве токенов. Мера релевантности– косинус угла между векторами. У результатовразная ценность.

Дмитрий Барашев | Алгоритмы в поисковых системах 17/26

Page 19: Запуск клуба "Поисковые системы"

Поискне всё одинаково полезно

Два документа, одинаково релевантные запросу, могутиметь существенно разную ценность.

Что важнее?Ваш запрос: "Бюджет фильма Аватар"Результат 1 лежит на avatarmovie.com, результат 2 наafisha.ru, результат 3 в безвестном ЖЖ с 3-мячитателями.

Слова в запросе имеют разную важность

Какое слово важнее?Ваш запрос: "килограмм плутония цена"

Дмитрий Барашев | Алгоритмы в поисковых системах 18/26

Page 20: Запуск клуба "Поисковые системы"

Условия работы прототипапрограммное окружение и входные данные

Все прототипы должны быть написаны на Java или наязыке, компилирующемся в Java байткод. Все прототипыбудут работать в одинаковых условиях.

Программное окружениеЕдиный интерфейс обмена данными с дискомЕдиный интерфейс для чтения исходного корпуса

Корпус документовКаждый документ – это XHTML файл сидентификатором и списком идентификаторовдокументов, в которые идут ссылки.Будет тренировочный корпус, помещающийся в RAMи боевой, который в RAM не поместится.

Дмитрий Барашев | Алгоритмы в поисковых системах 19/26

Page 21: Запуск клуба "Поисковые системы"

1 Кружок

2 Поисковик

3 Что будет дальше

Дмитрий Барашев | Алгоритмы в поисковых системах 20/26

Page 22: Запуск клуба "Поисковые системы"

Ближайшие шаги

Что нужно сделать в ближайшие дниСобрать команды и "зарегистрировать" их наbarashev.netПостараться в команде распределить роли – кто будетиндексировать, кто искать, а кто может будет делатьранкингНачать читать литературуУбедиться что вы знаете и помните:

как программировать на Javaкак парсить XHTMLкак писать тесты (пригодится)как работает жёсткий диск (пригодится тем более)

Дмитрий Барашев | Алгоритмы в поисковых системах 21/26

Page 23: Запуск клуба "Поисковые системы"

Подробности о программном окружении

Подробности о программном окружении в теченииближайших дней на сайте или на ближайшей очнойвстрече.

Дмитрий Барашев | Алгоритмы в поисковых системах 22/26

Page 24: Запуск клуба "Поисковые системы"

Основная литература

Читать, к сожалению, придётся по-английски.

Introduction to Information Retrieval (Manning,Raghavan, Schutze)http://nlp.stanford.edu/IR-book/information-retrieval-book.html

Information Retrieval (Rijsbergen)http://www.dcs.gla.ac.uk/Keith/Preface.html

Дмитрий Барашев | Алгоритмы в поисковых системах 23/26

Page 25: Запуск клуба "Поисковые системы"

Как это сделали вы?расскажите, не стесняйтесь

В конце семестра попросим команды, а победителяособенно, рассказать о применённых алгоритмах.

Дмитрий Барашев | Алгоритмы в поисковых системах 24/26

Page 26: Запуск клуба "Поисковые системы"

А как это делается по-настоящему?

Большие поисковики конечно гораздо сложнее. Всехсекретов они не откроют. Но кое-что будет.

Бонусные лекцииMapReduce – технология параллельной обработкибольшого количества информацииBigtable – распределённая слабоструктурированнаятаблица

Дмитрий Барашев | Алгоритмы в поисковых системах 25/26

Page 27: Запуск клуба "Поисковые системы"

Какое у этого продолжение

У конкретно этой работы продолжения скорее всего небудет. Это всего лишь введение в исследованиявообще и в тему information management.В группе исследования методов организацииинформации (http://meta.math.spbu.ru) можнозаниматься дальнейшими исследованиями в самыхразнообразных направлениях, востребованных как внауке так и в промышленности.

Дмитрий Барашев | Алгоритмы в поисковых системах 26/26