Принципы работы ИПС Тема 1. Обратные индекы для поиска документов Запрос • В каких из русских сказок есть слово волк, но нет упоминания медведя и поросенка? Вектор слово-документной встречаемости Три поросенка медведь волк поросенок Красная Шапочка Колобок Теремок 0 0 1 1 1 1 1 1 1 0 0 0 мышь бабушка 0 0 0 1 0 1 0,если слова нет в документе,1 если есть 1 0 Векторы инциденции • Итак мы имеем 0/1 вектор для каждого слова размерности равной количеству документов. • Ответ на запрос: возьмем вектора для медведя (дополнение), волка и поросенка(дополнение) и выполним между ними побитное умножение 1100&1111&0111 = 0100 Ответы на запрос • Ответом на запрос будет сказка “Красная Шапочка” Большая энциклопедия сказок • Рассмотрим n=1 миллион документов, по 1К слов/ терминов в каждом • В среднем 6 байт/термин, включая пробелы, знаки пунктуации - 6 ГБ данных. • Будем предполагать, что среди них m=500 К разных терминов. Не можем построить матрицу • 500 К x 1 млн. - матрица имеет полтриллиона 0 и 1. • Но она имеет не больше Почему? 1 000 000 000 единиц – матрица крайне разреженная. • Какое представление лучше? Обратные индексы • Документы разбираются на слова, сохраняемые вместе с номером (идентификатором) документа. документ 1 Милый, милый Бармалей, Смилуйся над нами, Отпусти нас поскорей К нашей милой маме! документ 2 Милый, милый людоед, Смилуйся над нами. Мы дадим тебе конфет, Чаю с сухарями! Милый 1 милый 1 Бармалей 1 смилуйся 1 над 1 нами 1 отпусти 1 нас 1 поскорей 1 к 1 нашей 1 милой 1 маме 1 милый 2 милый 2 людоед 2 смилуйся 2 над 2 нами 2 мы 2 дадим 2 тебе 2 конфет 2 Чаю 2 с 2 сухарями 2 Затем для всех документов формируется общий обратный файл, термины в котором сортированы по алфавиту. Бармалей 1 дадим 2 К 1 конфет 2 Людоед 2 маме 1 Милой 1 милый 1 Милый 1 милый 2 Милый 2 Мы 2 над 1 Над 2 Нами 1 Нами 2 Нас 1 Нашей 1 Отпусти 1 Поскорей 1 с 2 смилуйся 1 Смилуйся 2 2 Сухарями 2 с 2 тебе 2 сухарями 2 чаю 1 милый 1 милый 1 Бармалей 1 смилуйся 1 над 1 нами 1 отпусти 1 нас 1 поскорей 1 к 1 нашей 1 милой 1 маме 1 милый 2 милый 2 людоед 2 смилуйся 2 над 2 нами 2 мы 2 дадим 2 тебе 2 конфет 2 Чаю Термины, которые несколько раз повторяются в документе соединяются, добавляем информацию о повторении, заменяем большие буквы на маленькие, нормализуем: имен.падеж, ед. число, муж.род, инфинитив. Бармалей 1 дадим 2 К 1 конфет 2 Людоед Термин № повтор бармалей 1 1 2 давать 2 1 маме 1 к 1 1 Милой 1 конфета 2 1 милый 1 людоед 2 1 Милый 1 мама 1 1 милый 2 Милый милый 1 3 2 Мы 2 милый 2 2 Над 1 мы 1 2 Над 2 мы 2 2 Нами 1 над 1 1 Нами 2 наш 1 1 Нас 1 отпустить 1 1 Нашей 1 поскорей 1 1 Отпусти 1 Поскорей с 1 1 1 с 2 смиловаться 1 1 смилуйся 1 смиловаться 2 1 Смилуйся 2 сухарь 2 1 Сухарями 2 чай 2 1 тебе 2 чаю 1 число докум. общее число повторов № док повторов 1 1 бармалей 1 1 2 1 давать 1 1 2 1 к 1 1 2 1 конфета 1 1 2 1 людоед 1 1 1 1 1 3 мама 1 1 2 2 милый 2 5 1 2 мы 2 4 2 2 над 2 2 1 1 наш 1 1 2 1 отпустить 1 1 1 1 поскорей 1 1 1 1 с 1 1 1 1 2 1 смиловаться 2 2 1 1 сухарь 1 1 2 1 чай 1 1 2 1 2 1 Термин Файл разделяется на словарь и собственно индекс. число докум. общее число повторов бармалей 1 давать № док повторов 1 1 1 2 1 1 1 2 1 к 1 1 2 1 конфета 1 1 2 1 людоед 1 1 1 1 1 3 мама 1 1 2 2 милый 2 5 1 2 мы 2 4 2 2 над 2 2 1 1 наш 1 1 2 1 отпустить 1 1 1 1 поскорей 1 1 1 1 с 1 1 1 1 2 1 смиловаться 2 2 1 1 сухарь 1 1 2 1 чай 1 1 2 1 2 1 Термин термины Что наиболее дорого при хранении? указатели Два крайних случая. • Термин луноход встречаются, возможно, в одном документе из миллиона - храним этот указатель, используя log21000000 ~ 20 бит. • Термин “и” встречается в каждом документе, поэтому 20 бит на указатель - это много. – Предпочитают 0/1 вектор в этом случае Элементы индекса • Хранить список документов с содержащимися терминами в возрастающем порядке ID документов. - Волк - 33,47,154,159,202… • Следствие достаточно хранить промежутки между ID • Надежда: большинство пробелов может хранится с помощью значительно меньшего количества битов, чем 20. Переменное кодирование • Для лунохода используется ~ 20 битов/промежуток. • Для “и” используется ~ 1 бит/промежуток. • Если средний промежуток для термина равен G, хотим использовать ~log2G бит/промежуток. Гамма - код для кодирования промежутков • Представим промежуток G как пару <длина, смещение> • Длина – в унарном коде и использует ceil(log2G)+1 бит для двоичного кодирования длины • остатка=G-2ceil(log2G). • Например, 9 = 23 + 1, 3 в унарном коде 1110; 1 в двоичном коде 001, таким образом, 9 -> 1110001. • Кодируем G, используя 2*ceil(log2G)+1 бит. Что мы уже сделали? • Закодировали промежутки так плотно, как возможно, сточностью до множителя - двойки. • Для лучшей настройки и простого анализа нужна информация о возможном распределении значений промежутков. Закон Зипфа. • к наиболее повторяющихся терминов имеют повторение пропорциональное 1/к. • Используем это для грубого анализа объема памяти, требуемой для хранения указателей файла обратного индекса. Грубый анализ, основанный на законе Зипфа. • Наиболее частое слово встречается в n документах. – n промежутков равных единице. • Второе по частоте слово встречается в n/2 документах. - n/2 промежутков величины два. • К-ое по частоте слово встречается в n/k документах. - n/k промежутков - используем 2*ceil(log G)+1 бит для каждого промежутка. - итак, ~(2n/k)log2k бит для к-го наиболее встречающегося термина. 2 Суммируем к от 1 до 500К. • Делаем это, разбивая к в группы: - i группа состоит из таких номеров к, что 2i-1< к <2i. • Группа i имеет 2i-1 компонент суммирования ,каждая делает вклад больше, чем (2ni)/2i-1. • Суммируя по i от 1 до 19, получаем итоговую оценку 310 Мбит~ 45Мб для нашего индекса. Возможные трудности • Это еще не все пространство требуемое для нашего индекса. -не учли хранение словаря. -в дальнейшем, нам потребуется сохранять больше информации в индексе. • Не всегда закон Зипфа может быть применимым к случайным терминам в документе. • Все промежутки для термина берем одинаковые. • Не говорим об обработке запросов. Вопросы по построенному индексу • Как обрабатывать запрос? • Какие термины в документе индексировать? – все слова или только важные? • Список стоп-слов: термины, которые повторяются так часто, что мы игнорируем их индексирование. - союзы, - специфические элементы языка. • Упражнение: повторить расчет размера индекса, если не включать 100 наиболее частых терминов Вопрос, что индексировать • волк или волка или волку. • ЗАмок или заМОК. ( ударение) • Пунктуация. -C.Ш. А. или США (сокращение, аббревиатура). • Числа (в каком формате?) – – – – – 3/12/91 Март 12,1991 55 В.С. В-55 100.2.86.144 Большие/маленькие буквы Что произойдет, если все большие буквы сделать маленькими • Теряем имена собственные – Например, General Motors – Верховный Совет Понятия и созвучия • Как обрататывать синонимы и омонимы, индексировать эквивалентность или расширять/уточнять запрос? – Классы эквивалентности: автомашина и автомобиль – опушка – край леса или меховая обшивка одежды? • подробнее далее… Орфографическое корректирование • Рассмотрим все близкие по написанию слова, в пределах 3-х простых операций редактирования (вставка, удаление, замена), в момент запроса. • значительно замедляет обработку запроса (до 100 раз). - используется только в случае, когда незультат запроса пуст, - что, если документы сами содержат орфографические ошибки? Выделение корня • Сокращаем слова к их корню до их индексирования -языковая зависимость -например, бегун, побег, пробежка все сокращаются к бег. Для примера, бегун и бегунок оба принимаются относящимися к бегу Для пример бег и бег оба принимать относиться бег. Алгоритм Портера • Обычный алгоритм для выделения корня в англолязычных текстах • Соглашения + 5-фазное сокращение – фазы применяют последовательно – каждая фаза состоит из набора команд – пример соглашения: из правил в составной команде, выбираем одно применимый к самому длинному суффиксу. • Типичные правила Портера – Прилагательное существительное – Множественное число един.число Накопление свидетельств • Обычно рассматривается случай поиска термина 1/0 (присутствует/не присутствует) -2 vs. 3 случай -3 vs. 2 и т.д. • Необходимо частота повторения термина в документе. Упорядочивание результатов поиска • Булевские запросы дают включение или исключение документов • Нуждаемся в измерение близости к запросу для каждого документа. • Документ в результате предлагается пользователю как единственный, отвечающий запросу, или как группа документов, охватывающие различные аспекты запроса. Кластеризация и классификация • Для заданного множества документов, группируем их в кластеры, базируясь на их содержании. • Для заданного множества тем, плюс новый документ D, решаем к какой теме он относится. WEB и его вызовы • Необычные и разнообразные документы • Необычные и разные пользователи, запросы, информационные потребности. • Кроме анализа на основе терминов, разрабатываются идеи на основе поаедения - анализ связей, какие из них чаще выбираются … Ресурсы для сегодняшней лекции • Managing Gigabytes, Глава 3. • Modern Information Retrieval, Глава 7.2. • Алгоритм Портера: http//www.sims.berkeley.edu/~hearst/irbook/porter.html