Upload
dbarashev
View
338
Download
2
Embed Size (px)
Citation preview
Алгоритмы в поисковых системахисследование, программирование и соревнование
Дмитрий Барашев
11 марта 2010
Дмитрий Барашев | Алгоритмы в поисковых системах 1/26
1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 2/26
1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 3/26
Что будем делать
ИсследоватьПрограммироватьСоревноваться
Дмитрий Барашев | Алгоритмы в поисковых системах 4/26
Исследование(настоящее)
Приличная научная работа включает в себя несколькочастей
Анатомия научной работыИзучение предыдущего опыта, похожих работ исмежных областейРазработка своего подходаПроведение экспериментов
Ваша работа тоже хочет быть приличной.
Дмитрий Барашев | Алгоритмы в поисковых системах 5/26
Исследование(ваше)
У вас нет своего подхода, но исследование есть.
Анатомия вашего исследованияПрочитать и понять несколько книг и статейРеализовать один или несколько алгоритмов исравнить их характеристикиВыбрать наиболее приемлемый для вас подходОформить результаты в виде прототипа научнойстатьи на 2-3 страницы.
Дмитрий Барашев | Алгоритмы в поисковых системах 6/26
Программирование
Мы хотим не только почитать книги и статьи но иприменить знания на практике
Прототип поисковикаМожет проиндексировать некоторое количество HTMLфайловМожет отвечать на пользовательские запросы
Данных будет много, поместиться целиком в памятьшансов нет.
Дмитрий Барашев | Алгоритмы в поисковых системах 7/26
Соревнование
Просто так читать статьи и писать код скучно. Статьлучшим – интересно!
СоревнованиеВ конце семестра мы проведём сравнительноетестирование поисковых системОдин и тот же запрос, слева результаты поисковикаA, справа результаты поисковика B. Чьи лучше?
Хорошее неленивое исследование и аккуратноепрограммирование – больше шансов на победу
Дмитрий Барашев | Алгоритмы в поисковых системах 8/26
Формат работы
Семинар.Основную работу вы делаете самостоятельно:
Изучаете литературуПишете код и проводите экспериментыПишете текст работы
Очные встречи и специальные лекции будутБольшая часть работы и общения будет в online наbarashev.net
Дмитрий Барашев | Алгоритмы в поисковых системах 9/26
Командывеселее вместе
Teh teamВ команде 2-4 человекаКаждый самостоятельно изучает литературу,договаривается с товарищами о формате обменаданными, реализует понравившиеся алгоритмы иоценивает их характеристикиИз полученных компонент команда собираетпоисковикПоисковик у команды получается общий, аисследования в значительной степени индивидуальные
В поисковике как минимум две большие компоненты икаждую можно реализовать несколькими способами.Работы на всех хватит.
Дмитрий Барашев | Алгоритмы в поисковых системах 10/26
1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 11/26
Базовая терминологиячтобы слова что-то означали
Документ (document) – некоторая атомарная единицарезультатов поискаКорпус (corpus) – множество документов, средикоторых идёт поискЗапрос (query) – одно или более искомое словоРелевантный документ (matching document) –документ который по какому-то критериюудовлетворяет запросуРезультат (result) – множество релевантныхдокументов
Дмитрий Барашев | Алгоритмы в поисковых системах 12/26
Давайте начнём(что может быть проще)
Наивная реализацияПолучает запросПеребирает все документы в корпусе, проверяеткаждый на релевантность методом поиска подстрокидля каждого слова запроса.Если документ релевантный, записывает его врезультат
К сожалению она работать не будет...Стоимость поиска равна O(C ∗Q), где C и Q размерыкорпуса и запросаВаши пользователи просто заснут, не дождавшисьрезультатов
Дмитрий Барашев | Алгоритмы в поисковых системах 13/26
Давайте начнём(что может быть проще)
Наивная реализацияПолучает запросПеребирает все документы в корпусе, проверяеткаждый на релевантность методом поиска подстрокидля каждого слова запроса.Если документ релевантный, записывает его врезультат
К сожалению она работать не будет...Стоимость поиска равна O(C ∗Q), где C и Q размерыкорпуса и запросаВаши пользователи просто заснут, не дождавшисьрезультатов
Дмитрий Барашев | Алгоритмы в поисковых системах 13/26
Индексированиечто это такое
Чтоб поиск выполнялся быстрее, корпус надопроиндексировать.
Построение примитивного индексаКаждый документ разбиваем на токены (слова).Получаем отображение документ → список токенов.Полученное отображение инвертируем, то есть делаемотображение токен → список документов.
В полученном инвертированном индексе стоимость поискабудет O(R ∗ Q), где R – размер результата.
Дмитрий Барашев | Алгоритмы в поисковых системах 14/26
Пример
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
Индексированиевариации
Количественные характеристикиМинимизация размера индекса (меньше занимаетместа ⇒ больший корпус можно проиндексировать)Минимизация времени построения (быстрее строим⇒ быстрее можем обновлять)
Качественные характеристикиВ индексе могут присутствовать позиции вхождениятокенов в документыДля разных зон документа могут быть разныеиндексыДокументы в постинг-листах могут быть упорядоченыпо-разному
Дмитрий Барашев | Алгоритмы в поисковых системах 16/26
Поискчто значит "релевантен"
Определять релевантность можно по-разному.
Модели поискаБулевская: запрос является логическим выражениемключевых слов (например все объединены AND’ом).Релевантны те документы, которые удовлетворяютвыражению. Все релевантные документы имеютодинаковую ценность.Векторная: документ и запрос представлены каквекторы в пространстве токенов. Мера релевантности– косинус угла между векторами. У результатовразная ценность.
Дмитрий Барашев | Алгоритмы в поисковых системах 17/26
Поискне всё одинаково полезно
Два документа, одинаково релевантные запросу, могутиметь существенно разную ценность.
Что важнее?Ваш запрос: "Бюджет фильма Аватар"Результат 1 лежит на avatarmovie.com, результат 2 наafisha.ru, результат 3 в безвестном ЖЖ с 3-мячитателями.
Слова в запросе имеют разную важность
Какое слово важнее?Ваш запрос: "килограмм плутония цена"
Дмитрий Барашев | Алгоритмы в поисковых системах 18/26
Условия работы прототипапрограммное окружение и входные данные
Все прототипы должны быть написаны на Java или наязыке, компилирующемся в Java байткод. Все прототипыбудут работать в одинаковых условиях.
Программное окружениеЕдиный интерфейс обмена данными с дискомЕдиный интерфейс для чтения исходного корпуса
Корпус документовКаждый документ – это XHTML файл сидентификатором и списком идентификаторовдокументов, в которые идут ссылки.Будет тренировочный корпус, помещающийся в RAMи боевой, который в RAM не поместится.
Дмитрий Барашев | Алгоритмы в поисковых системах 19/26
1 Кружок
2 Поисковик
3 Что будет дальше
Дмитрий Барашев | Алгоритмы в поисковых системах 20/26
Ближайшие шаги
Что нужно сделать в ближайшие дниСобрать команды и "зарегистрировать" их наbarashev.netПостараться в команде распределить роли – кто будетиндексировать, кто искать, а кто может будет делатьранкингНачать читать литературуУбедиться что вы знаете и помните:
как программировать на Javaкак парсить XHTMLкак писать тесты (пригодится)как работает жёсткий диск (пригодится тем более)
Дмитрий Барашев | Алгоритмы в поисковых системах 21/26
Подробности о программном окружении
Подробности о программном окружении в теченииближайших дней на сайте или на ближайшей очнойвстрече.
Дмитрий Барашев | Алгоритмы в поисковых системах 22/26
Основная литература
Читать, к сожалению, придётся по-английски.
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
Как это сделали вы?расскажите, не стесняйтесь
В конце семестра попросим команды, а победителяособенно, рассказать о применённых алгоритмах.
Дмитрий Барашев | Алгоритмы в поисковых системах 24/26
А как это делается по-настоящему?
Большие поисковики конечно гораздо сложнее. Всехсекретов они не откроют. Но кое-что будет.
Бонусные лекцииMapReduce – технология параллельной обработкибольшого количества информацииBigtable – распределённая слабоструктурированнаятаблица
Дмитрий Барашев | Алгоритмы в поисковых системах 25/26
Какое у этого продолжение
У конкретно этой работы продолжения скорее всего небудет. Это всего лишь введение в исследованиявообще и в тему information management.В группе исследования методов организацииинформации (http://meta.math.spbu.ru) можнозаниматься дальнейшими исследованиями в самыхразнообразных направлениях, востребованных как внауке так и в промышленности.
Дмитрий Барашев | Алгоритмы в поисковых системах 26/26