48
технологии хранения и обработки больших объёмов данных Информационный поиск Дмитрий Барашев 11 марта 2016 г. Computer Science Center

Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

Embed Size (px)

Citation preview

Page 1: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

технологии хранения и обработкибольших объёмов данныхИнформационный поиск

Дмитрий Барашев11 марта 2016 г.

Computer Science Center

Page 2: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

Этот материал распространяется под лицензией

Creative Commons”Attribution - Share Alike” 3.0

http://creativecommons.org/licenses/by-sa/3.0/us/deed.ru

сверстано в онлайн LATEX редакторе

P

a

peeriapapeeria.com

Page 3: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

сегодня в программе

Введение

Модели информационного поиска

Вычислительная часть

3/43

Page 4: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

постановка задачи

• Документом называется некоторая единицапоиска и результата• веб-страница• абзац текста (например библиотечная запись)• коллекция страниц (например патент)

• Документы образуют корпус

4/43

Page 5: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

постановка задачи ii

• У пользователя есть поисковая потребность¹• Потребность более или менее точно выражаетсязапросом• запрос ̸=потребность

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

¹information need

5/43

Page 6: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

поисковая система

6/43

Page 7: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

основные проблемы

• Большой размер корпуса• Слабая структура или отсутствие структуры• Плохие пользователи с неточными запросами• Нетерпеливые пользователи не хотят ждать дажеминуту

7/43

Page 8: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

запрос и результат

• Как выглядит запрос?• Каким должен быть результат?• Что означает «документ удовлетворяет запросу» ?• Все ли документы одинаково хорошоудовлетворяют запросу?

• Как измерить релевантность документа(соответствие его запросу) ?

• Насколько точные запросы формулируютпользователи?

8/43

Page 9: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

сегодня в программе

Введение

Модели информационного поиска

Вычислительная часть

9/43

Page 10: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

некоторые модели

• Строковое совпадение• Булевская модель• Векторная модель• Вероятностная модель

10/43

Page 11: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

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

• Запрос – одна строка или одно регулярноевыражение• ”Database query optimization” илиDatabase\s+query\s+optimization

• Документ рассматривается как одна большаястрока или как список строк

• Документ, в котором нашлось совпадениеподстроки/выражения, считается релевантным

• Обычно все документы в результате одинаковорелевантны

• Самый простой инструмент – утилита grep

11/43

Page 12: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

булевский поиск

• Документ рассматривается как (мульти)множествослов

• Запросом являются слова, объединённыелогическими операторами

• Слово в запросе заменяется на true если оносодержится в документе

• Релевантным называется документ, для которогополученное логическое выражение вернуло true

ПримерKing AND Richard AND NOT Queen• Булевский поиск тоже можно сделатьконсольными утилитами

12/43

Page 13: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

булевский поиск: расширенные модели

• Дополнительные операции: «находится рядом»,совпадение по подстроке или регулярномувыражению

• Некоторое ранжирование: документ делится на«зоны» и зонам назначаются веса

13/43

Page 14: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

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

• Запросы точны: вы получаете ровно то, чтопросили

• Запросы могут передавать довольно сложныеинформационные потребности

14/43

Page 15: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

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

• Формулировка запросов – непростая задача• выпускник технического вуза может и справится,обычный человек нет

• Классическая модель бедна, расширенныесложны

• «Неустойчивость» результата к операторам• AND может сильно сократить множестводокументов в результате

• OR наоборот, может его сильно расширить

• Классическая модель не подразумеваетранжирования документов

15/43

Page 16: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

векторный поиск: мотивация

• Пользователь может и не знать какие словаприсутствуют в корпусе• сколько нужно SEOшников чтобы вкрутитьлампочку, лампочки, лампы накаливания, бра,светильники, доставка

• Если слова в документе нет то это не поводдокумент отвергать

• Не все слова одинаково ценны• купить синхрофазотрон онлайн

16/43

Page 17: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

векторный поиск: мотивация

• Пользователь может и не знать какие словаприсутствуют в корпусе• сколько нужно SEOшников чтобы вкрутитьлампочку, лампочки, лампы накаливания, бра,светильники, доставка

• Если слова в документе нет то это не поводдокумент отвергать

• Не все слова одинаково ценны• купить синхрофазотрон онлайн

16/43

Page 18: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

векторный поиск: абстрактная модель

• Документ d и запрос q – векторы в многомерномпространстве

• Измерениями являются слова, значениямикоординат вектора – некоторые числа,соответствующие паре (d,w)

• Релевантность документа запросу – какая-то мераблизости двух векторов sim(d,q)

17/43

Page 19: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

наивный пример

• Три измерения• Координата равна 1 если слово есть вдокументе/запросе

• Мера близости – модуль разности векторов

18/43

Page 20: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

локальная частота слова

• Слова в каждом документе неравноправны• Если текст про конечные автоматы случайносодержит слово ”Калашников” то для запросаавтомат Калашникова он будет равноправен стекстом, описывающим историю автоматаКалашникова

• Давайте посчитаем ft,d – «сырую» частотувхождения каждого слова в документ

теперь текст про автомат Калашникова скорее всеговыиграет

19/43

Page 21: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

локальная частота слова

• Слова в каждом документе неравноправны• Если текст про конечные автоматы случайносодержит слово ”Калашников” то для запросаавтомат Калашникова он будет равноправен стекстом, описывающим историю автоматаКалашникова

• Давайте посчитаем ft,d – «сырую» частотувхождения каждого слова в документ

теперь текст про автомат Калашникова скорее всеговыиграет

19/43

Page 22: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

нормализация сырой частоты

• Если просто считать число вхождений то болеедлинные документы будут выигрывать

• Сырую частоту можно нормализовать:• длиной документа:

tft,d =ft,d|d|

• максимальной сырой частотой:

tft,d =ft,d

max fw,d,w ∈ d• или сделать ее рост нелинейным:

tft,d = 1+ log ft,dесли ft,d > 0

20/43

Page 23: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

обратная встречаемость слова

• Слова вообще неравноправны• я, мы, что, где, когда встречаются чуть менее чемвезде, а вот синхрофазотрон еще надо поискать• кошмар гуглера: ансамбль The The

• Можно посчитать частоту слова во всем корпусе

• Но более разумно:

• посчитать сколько документов в корпусе содержатслово:

|d : t ∈ d|• и взять логарифм от обратной дроби:

idft = log |D||d : t ∈ d|

21/43

Page 24: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

обратная встречаемость слова

• Слова вообще неравноправны• я, мы, что, где, когда встречаются чуть менее чемвезде, а вот синхрофазотрон еще надо поискать• кошмар гуглера: ансамбль The The

• Можно посчитать частоту слова во всем корпусе• Но более разумно:

• посчитать сколько документов в корпусе содержатслово:

|d : t ∈ d|

• и взять логарифм от обратной дроби:

idft = log |D||d : t ∈ d|

21/43

Page 25: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

обратная встречаемость слова

• Слова вообще неравноправны• я, мы, что, где, когда встречаются чуть менее чемвезде, а вот синхрофазотрон еще надо поискать• кошмар гуглера: ансамбль The The

• Можно посчитать частоту слова во всем корпусе• Но более разумно:

• посчитать сколько документов в корпусе содержатслово:

|d : t ∈ d|• и взять логарифм от обратной дроби:

idft = log |D||d : t ∈ d|

21/43

Page 26: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

tf-idf

• Получили IDF - глобальную характеристику словаи TF - характеристику слова в конкретномдокументе

tf ∗ idft,d = tft,d ∗ idft

• увеличивается когда вообще редкое слово частовстречается в одном документе

• уменьшается когда слово встречается реже вдокументе или чаще в коллекции

• равен нулю если слово присутствует во всехдокументах

22/43

Page 27: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

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

• вектор документа−→d состоит из tf*idf, вектор

запроса −→q из 1 или 0•−→d состоит из tf, −→q из idf

• скалярное произведение−→d · −→q нормализуется

эвклидовыми длинами:

sim(d,q) =−→d · −→q

|−→d | ∗ |−→q |

• или как-то иначе• или рассматривается модуль расстояния междувекторами: sim(d,q) = |

−→d −−→q |

23/43

Page 28: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

сегодня в программе

Введение

Модели информационного поиска

Вычислительная часть

24/43

Page 29: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

эффективный поиск

• Линейно просмотреть все документы! O(N)!• При 1млрд документов и 1мс на документуложимся в 1млн секунд :)

• Если найдем 10000 процессоров, уложимся в 100секунд

• O(результата), а не O(корпуса) было бы лучше

25/43

Page 30: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

эффективный поиск

• Линейно просмотреть все документы! O(N)!• При 1млрд документов и 1мс на документуложимся в 1млн секунд :)

• Если найдем 10000 процессоров, уложимся в 100секунд

• O(результата), а не O(корпуса) было бы лучше

25/43

Page 31: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

матрица инцидентности

• Построим матрицу с терминами в строках идокументами в столбцах

compscicenter amazon microsoft iStorecomputer 1 1 0 1science 1 0 0 0center 1 0 1 1

research 0 0 1 0book 0 1 0 0sale 0 1 0 1

• булевский запрос computer AND center AND NOTscience вычислится как 1101 AND 1011 AND 0111и вернет 0001 – iStore

26/43

Page 32: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

булевский поиск по матрице инцидентности

• Каждое слово запроса – бинарная строка матрицы

compscicenter amazon microsoft iStorecomputer 1 1 0 1science 1 0 0 0center 1 0 1 1

research 0 0 1 0book 0 1 0 0sale 0 1 0 1

• булевский запрос computer AND center AND NOTscience вычислится как 1101 AND 1011 AND 0111и вернет 0001 – iStore

27/43

Page 33: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

матрица инцидентности великовата

• Пусть в корпусе 1млрд. документов• Битовая маска для 1млрд битов займет порядка100Мб, но слов сотни тысяч

• Матрица сильно разреженная

28/43

Page 34: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

инвертированный индекс

• Отображение терма в список содержащих егодокументов

• Документ идентифицируется численнымидентификатором docid

• Множество термов называется словарем(vocabulary, dictionary)

• Списки называются списками вхождений (postinglists)

• Кроме docid элемент списка может содержатьtf*idf и еще какую-нибудь информацию

29/43

Page 35: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

булевский поиск с использованием индекса

• Пусть списки вхождений отсортированы повозрастанию docid

• Тогда запрос computer AND center можновычислить алгоритмом похожим на merge sort

30/43

Page 36: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

более сложные запросы

• В запросе несколько термов: computer ANDcenter AND NOT science

• Можно воспользоваться multiway merge sort• Можно составить деревянный план выполнения иначать оптимизировать:• сначала пересечь самые короткие списки• или положить самый маленький список в память иначать вычеркивать лишние документы

31/43

Page 37: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

а может sql?

Запрос a AND b:1 SELECT doc_id FROM PL JOIN T WHERE PL.term_id = T.id AND

T.value=’a’2 INTERSECT3 SELECT doc_id FROM PL JOIN T WHERE PL.term_id = T.id AND

T.value=’b’

32/43

Page 38: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

векторный поиск с использованием индекса

• Общая мысль: нужны не все документы, а толькосамые релевантные

• Два подхода: пословный (term-at-a-time) иподокументный (document-at-a-time)

33/43

Page 39: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

пословный поиск

1 scores = {}2 for qt in query:3 for dt in posting_lists[qt]:4 scored[dt.doc] += qt.weight * dt.weight5

6 return top_k(scores)

34/43

Page 40: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

подокументный поиск

1 top_k = TopK()2 plists = {}3 for qt in query:4 plists[qt] = posting_lists[qt]5 cur_doc_id = None6 score = 07 while len(plists) > 0:8 qt, dt = pull_min_doc_id(plists)9 if dt.doc_id != cur_doc_id:

10 top_k[cur_doc_id] = score11 score = 012 cur_doc_id = dt.doc_id13 score += qt.weight * dt.weight

35/43

Page 41: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

размер результата

• Мало кому нужны все 100500 релевантныхдокументов

• Нужно обычно K самых релевантных (Top-K)• Варианты:

• «точный» – это действительно Top-K• «приблизительный» – K похожих на самыерелевантные

36/43

Page 42: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

стратегии поиска top-k

• Сортировка всех документов :)• Отбрасывание тех кто заведомо хуже ужеотобранных

• Ограниченное время на поиск – что нашли тонашли

37/43

Page 43: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

сделать приблизительный поиск поточнее

• Рассматривать только термы с большим IDF• Рассматривать только документы, содержащиенесколько слов запроса

• Специальная организация списков вхождений

38/43

Page 44: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

разбиение списков вхождений

• Чемпионский список для терма t: документы свесом tft выше какого-то порогового значенияили просто top-m документов в порядке убываниявеса терма

• Слоеный индекс, делящий документы по«важности», «свежести», и т.д.

39/43

Page 45: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

упорядочивание списков вхождений

• Нужно любое, одинаковое во всех списках• Возрастание docid – окей, но можно ли лучше?• Например чтобы самые «ценные» документыбыли в начале списка

40/43

Page 46: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

ценность документа

• Некоторая характеристика, не зависящая отзапроса

• Выше ранг – ценнее документ• Упорядочивание по статическому рангу позволитзакончить поиск быстрее

• Примеры статического ранга: количествоцитирований статьи, индекс Хирша автора, индексцитируемости СМИ, pagerank в вебе

41/43

Page 47: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

инструменты веб поиска

• Библиотека Apache Lucene• Одно из лучших Open-source решений• Написана на Java• Работает ”из коробки” и позволяет встраивать инастраивать всё, от структур хранения до моделейранжирования

• Надстройки над Lucene: ElasticSearch, Solr• Sphinx• Реляционные СУБД не сдаются: в PostgreSQLвстроена поисковая система

42/43

Page 48: Технологии хранения и обработки больших объёмов данных, весна 2016: Информационный поиск

поисковик на коленке

• Нужно сделать списки вхождений и найти tf/idf• И то и другое можно сделать при помощиmap-reduce

43/43