2 - Кафедра анализа данных и исследования операций

advertisement
Принципы работы ИПС
Тема 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
Download