Вы находитесь на странице: 1из 512

Кристофер Д.

Маннинг,
Прабхакар Рагхаван,
Хайнрих Шютце

nki
П Р О Ф Е С С И О Н А Л А М ОТ П Р О Ф Е С С И О Н А Л 0 1

Введение в информационный поиск — это первый учебник, который содержит


е изложение проблем классического информационного г
ка и поиска в вебе, включая смежные задачи классификации и кластеризации
текстов. Учебник написан с позиций информатики (computer science) и содержит
современное изложение всех аспектов проектирования и реализации систем
сбора, индексирования и поиска документов, методов оценки таких систем,
а также введение в методы машинного обучения на базе коллекций текстов.

06 авторах

Кристофер Д . М а н н и н г — профессор информатики и лингвистики


Станфордского университета.

Прабхакар Рагхаван — директор исследовательского департа­


мента Yahoo! Research и профессор-консультант информатики
Станфордского университета.

Х а и н р и х Шютце —заведующий кафедрой теоретической вычисли­


тельной лингвистики Института обработки текстов на естественных
языках Штутгартского университета.

/v.williamspublishing.o

I CAMBRIDGE
Яндекс
f UNIVERSITY PRESS
Introduction to
Information Retrieval

CHRISTOPHER D. MANNING Stanford University


PRABHAKAR RAGHAVAN Yahoo!Research
HINRICH SCHUTZE University ofStuttgart

CAMBRIDGE
UNIVERSITY PRESS
Введение
в информационный поиск

КРИСТОФЕР Д . МАННИНГ Станфордский университет


П Р А Б Х А К А Р Р А Г Х А В А Н Yahool Research
Х А Й Н Р И Х ШЮТЦЕ Университет Штутгарта

Москва • Санкт-Петербург • Киев


2011
Ы>К Ч2.У71.26
М23
УДК 681.3.07
И I щгсльский л о м "Вильяме"
1ан. редакцией L.H. Тригуб
I Icpoito I с HIM лийского доктора физ.-мат. наук Д.А. Клюшина
Под ре акцией канд. техн. н а у к / 7 . # Браславского,
lOKiopi фш.-мат. наук Д А Клюшина, И.В. Сегаловича
Научный консультант И.В. Сегалович
По общим ноиросам обращайтесь в Издательский дом "Вильяме" по адресу:
inlo((i>Willi imspublishing.com, http://www.vvilliamspublishing.com

М а и п и т , Кристофер Д . Pai хаван, Прабхакар, Ш ю т ц е , Хайнрих.


М23 Вне юиис и информационный поиск. : Пер. с англ. - М. : О О О "И.Д. Вильяме", 2 0 1 1 . -
428 е. : ил. — I lapan. тит. англ.
ISBN 978-5-8459-1623-5 (рус.)
Б Б К 32.973.26-018.2.75

Нес ишвнния программных продуктов являются зарегистрированными торговыми марками соответст­


вующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было
форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и
запись на магнитный носитель, если на это нет письменного разрешения издательства Cambridge University Press.
Auihori/ed translation from the English language edition published by Cambridge University Press, Copyright ©
2008 by Cambridge University Press.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic
or mechanical, including photocopying, recording or by any information storage retrieval system, without permission
from the Publisher.
Russian language edition published by Williams Publishing House according to the Agreement with R&I
Enterprises International, Copyright © 2010

Научно-популярное издание

Кристофер Д. Маннинг, Прабхакар Рагхаван, Хайнрих Шютце

Введение в и н ф о р м а ц и о н н ы й поиск
Литературный редактор Л.Н. Красножон
Верстка М.А. Удалое
Художественный редактор ЕЛ. Дынник
Корректор Л.А. Гордиенко

Подписано в печать 12.08.2010. Формат 70x100/16.


Гарнитура Times. Печать офсетная.
Усл. печ. л. 42,57. Уч.-изд. л. 34,2.
Тираж 1000 экз. Заказ № 23566.

Отпечатано по технологии CtP


в ОАО "Печатный двор" им. А. М. Горького
1471 Ю Санкт-Петербург, Чкаловскин пр., 15.

OUU И. Д. Вильяме", 127055. i. Москва, ул. Лесная, д. 43, crp. I

ISHN478 1 Н41У \t\l\ 1 ( p y i . ) I И vuiu iMkull IIIM "BliiiiiHMc", 2011


1SUN97K0 1 I 1 H M / I М ш и I ) ( iiiihiiuV IHHv wily IVNX. >(M№
Оглавление

Таблица обозначений 10
Предисловие 17
Глава 1. Булев поиск 23
Глава 2. Лексикон и списки словопозиций 41
Глава 3. Словари и нечеткий поиск 69
Глава 4. Построение индекса 85
Глава 5. Сжатие индекса 103
Глава 6. Ранжирование, взвешивание терминов и модель векторного
пространства 127
Глава 7. Ранжирование в полнофункциональной поисковой системе 151
Глава 8. Оценка информационного поиска 165
Глава 9. Обратная связь по релевантности и расширение запроса 189
Глава 10. XML-поиск 207
Глава 11. Вероятностная модель информационного поиска 231
Глава 12. Языковые модели для информационного поиска 247
Глава 13. Классификация текстов и наивный байесовский подход 263
Глава 14. Классификация в векторном пространстве 295
Глава 15. Метод опорных векторов и машинное обучение на документах 323
Глава 16. Плоская кластеризация 353
Глава 17. Иерархическая кластеризация 379
Глава 18. Разложение матриц и латентно-семантическое индексирование 403
Глава 19. Основы поиска в вебе 419
Глава 20. Обход и индексирование веба 439
Глава 21. Анализ ссылок 455
Библиография 473
Предметный указатель 506
Содержание

Таблица обозначений 10

Предисловие 17

Благодарности 21

Глава 1. Булев поиск 23


1.1. Пример информационного поиска 24
1.2. Первая попытка создать инвертированный индекс 28
1.3. Обработка булевых запросов 31
1.4. Сравнение расширенной булевой модели и ранжированного поиска 35
1.5. Библиография и рекомендации для дальнейшего чтения 38

Глава 2. Лексикон и списки словопизиций 41


2.1. Схематизация документа и декодирование последовательности символов 41
2.2. О п р е д е л е н и е л е к с и к о н а т е р м и н о в 44
2.3. Быстрое пересечение инвертированных списков с п о м о щ ь ю
указателей пропусков 57
2.4. С л о в о п о з и ц и и с к о о р д и н а т а м и и ф р а з о в ы е з а п р о с ы 60
2.5. Библиография и рекомендации для дальнейшего чтения 66

Глава 3. Словари и нечеткий поиск 69


3.1. Поисковые структуры для словарей 69
3.2. Запросы с джокером 72
3.3. Исправление опечаток 76
3.4. Фонетические исправления 82
3.5. Б и б л и о г р а ф и я и р е к о м е н д а ц и и для д а л ь н е й ш е г о ч т е н и я 84

Глава 4. Построение индекса 85


4.1. Основы аппаратного обеспечения 85
4.2. Блочное индексирование, основанное на сортировке 87
4.3. Однопроходное индексирование в оперативной памяти 91
4.4. Распределенное индексирование 93
4.5. Динамическое индексирование 96
4.6. Другие типы индексов 99
4.7. Библиография и рекомендации для дальнейшего чтения 101
Глава 5. Сжатие индекса 103
5.1. Статистические характеристики терминов в информационном поиске 104
5.2. Сжатие словаря 108
5.3. Сжатие инвертированного файла 113
5.4. Библиография и рекомендации для дальнейшего чтения 123

Глава 6. Ранжирование, взвешивание терминов и модель векторного

пространства 127
6.1. Параметрические и зонные индексы 128
6.2. Частота термина и взвешивание 134
6.3. Модель векторного пространства для ранжирования 137
6.4. В а р и а н т ы ф у н к ц и й tf-idf 143
6.5. Библиография и рекомендации для дальнейшего чтения 149

' Глава 7. Ранжирование в полнофункциональной поисковой системе 151


7.1. Эффективное ранжирование 151
7.2. К о м п о н е н т ы и н ф о р м а ц и о н н о - п о и с к о в о й с и с т е м ы 159
7.3. В л и я н и е о п е р а т о р о в я з ы к а з а п р о с о в н а р а н ж и р о в а н и е в в е к т о р н о м
пространстве 162
7.4. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 164

Глава 8. Оценка информационного поиска 165


8.1. Оценка информационно-поисковой системы 165
8.2. Стандартные тестовые коллекции 167
8.3. Оценка неранжированных результатов поиска 168
8.4. Оценка ранжированных результатов поиска 171
8.5. Оценка релевантности 177
8.6. Более широкая точка зрения: качество системы и ее полезность для
пользователя 181
8.7. С н и п п е т ы 183
8.8. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 185

Глава 9. Обратная связь по релевантности и расширение запроса 189


9.1. Обратная связь п о релевантности и псевдорелевантности 189
9.2. Г л о б а л ь н ы е м е т о д ы д л я п е р е ф о р м у л и р о в а н и я з а п р о с а 200
9.3. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 204

Глава 10. XML-поиск 207


10.1. Основные концепции языка X M L 209
10.2. Проблемы, связанные с XML-поиском 213
10.3. Модель векторного пространства для XML-поиска 217
10.4. Оценка XML-поиска 221
10.5. Методы XML-поиска, ориентированные на текст и на данные 225
10.6. Библиография и рекомендации для дальнейшего чтения 227
Глава 11. Вероятностная модель информационного поиска 231
11.1. Основы теории вероятностей 232
11.2. Принцип вероятностного ранжирования 233
11.3. Бинарная модель независимости 234
11.4. Вероятностные модели и некоторые модификации 241
11.5. Библиография и рекомендации для дальнейшего чтения 245

Глава 12. Языковые модели для информационного поиска 247


12.1. Я з ы к о в ы е м о д е л и 247
12.2. М о д е л ь п р а в д о п о д о б и я з а п р о с а 252
12.3. С р а в н е н и е я з ы к о в о г о м о д е л и р о в а н и я с д р у г и м и п о д х о д а м и к
информационному поиску 258
12.4. Р а с ш и р е н и я я з ы к о в ы х м о д е л е й 259
12.5. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 260

Глава 13. Классификация текстов и наивный байесовский подход 263


13.1. Классификация текстов 266
13.2. Наивная байесовская классификация текстов 267
13.3. Модель Бернулли 272
13.4. Свойства наивной байесовской модели 274
13.5. Выбор признаков 279
13.6. Оценка классификации текстов 287
13.7. Библиография и рекомендации для дальнейшего чтения 293

Глава 14. Классификация в векторном пространстве 295


14.1. Представление документов и меры близости в векторном пространстве 297
14.2. Метод Роккио 298
14.3. Метод к ближайших соседей 302
14.4. Линейные и нелинейные классификаторы 307
14.5. Классификация с несколькими классами 311
14.6. Компромисс между смещением и дисперсией 314
14.7. Библиография и рекомендации для дальнейшего чтения 321

Глава 15. Метод опорных векторов и машинное обучение

на документах 323
15.1. Метод опорных векторов: случай линейно разделимых классов 323
15.2. Расширения модели опорных векторов 330
15.3. Проблемы, связанные с классификацией текстовых документов 338
15.4. Методы машинного обучения для поиска по запросу 344
15.5. Библиография и рекомендации для дальнейшего чтения 349

Глава 16. Плоская кластеризация 353


16.1. Кластеризация в информационном поиске 354
16.2. Формулировка задачи 358
16.3. Оценивание кластеризации 359
16.4. Метод ^-средних 363
16.5. К л а с т е р и з а ц и я , о с н о в а н н а я н а м о д е л я х 370

16.6. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 376

Глава 17. Иерархическая кластеризация 379


17.1. А г л о м е р а т и в н а я и е р а р х и ч е с к а я к л а с т е р и з а ц и я 380
17.2. Кластеризация методами одиночной и полной связи 383
17.3. А г л о м е р а т и в н а я к л а с т е р и з а ц и я н а о с н о в е у с р е д н е н и я п о г р у п п е 390
17.4. К л а с т е р и з а ц и я м е т о д о м ц е н т р о и д о в 392
17.5. О п т и м а л ь н о с т ь а г л о м е р а т и в н о й и е р а р х и ч е с к о й к л а с т е р и з а ц и и 393
17.6. Н и с х о д я щ а я к л а с т е р и з а ц и я 396
17.7. И м е н о в а н и е к л а с т е р о в 397
17.8. В о п р о с ы р е а л и з а ц и и 399
17.9. Б и б л и о г р а ф и я и р е к о м е н д а ц и и д л я д а л ь н е й ш е г о ч т е н и я 401
Глава 18. Разложение матриц и латентно-семантическое
индексирование 403
18.1. Обзор сведений из линейной алгебры 403
18.2. Матрицы "термин-документ" и сингулярные разложения 407
18.3. Малоранговые аппроксимации 409
18.4. Латентно-семантическое индексирование 411
18.5. Библиография и рекомендации для дальнейшего чтения 417

Глава 19. Основы поиска в вебе 419


19.1. Основы и история 419
19.2. Характеристики веба 421
19.3. Реклама как экономическая модель 426
19.4. Опыт пользователей поисковых систем 428
19.5. Размер индекса и оценка его размера 430
19.6. Нечеткие дубликаты и алгоритм шинглов 434
19.7. Библиография и рекомендации для дальнейшего чтения 438

Глава 20. Обход и индексирование веба 439


20.1. Обзор 439
20.2. Обход веба 440
20.3. Распределение индексов 449
20.4. Серверы проверки ссылочной связности 450
20.5. Библиография и рекомендации для дальнейшего чтения 453

Глава 21. Анализ ссылок 455


21.1. Веб как граф 455
21.2. Метод PageRank 457
21.3. Порталы и авторитетные источники 466
21.4. Библиография и рекомендации для дальнейшего чтения 472

Библиография 473
Предметный указатель 506
Таблица обозначений

Символ Описание
у у-код
у Ф у н к ц и я к л а с с и ф и к а ц и и и л и к л а с т е р и з а ц и и : y(<f) — к л а с с и л и к л а с т е р
элемента d
Г М е т о д о б у ч е н и я с у ч и т е л е м в г л а в а х 13 и 14: Г(Ш>) — ф у н к ц и я
к л а с с и ф и к а ц и и у, н а с т р о е н н о й п о о б у ч а ю щ е м у м н о ж е с т в у
X Собственное значение
р (.) Ц е н т р о и д к л а с с а (в к л а с с и ф и к а ц и и Р о к к и о ) и л и кластера
(в м е т о д е К - с р е д н и х и ц е н т р о и д н о й к л а с т е р и з а ц и и )
Ф Обучающий пример
а Сингулярное значение
в(-) Строгая оценка сложности алгоритма
со, ь\ Кластер
Q Р а з б и е н и е и л и м н о ж е с т в о к л а с т е р о в {соь (й } к

arg m a x / ( х ) З н а ч е н и е х, в к о т о р о м ф у н к ц и я / д о с т и г а е т м а к с и м у м а

arg m i n f(x) З н а ч е н и е х, в к о т о р о м ф у н к ц и я / д о с т и г а е т м и н и м у м а

c, с Класс или категория в классификации

cl, Частота термина t в коллекции (общее количество словоупотреблений

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


С М н о ж е с т в о {с, с,}

С Случайная величина, принимающая значения в множестве С


С Матрица "термин-документ"
d И н д е к с d-то д о к у м е н т а в к о л л е к ц и и D
d Документ

d, д Вектор документа, вектор запроса


D М н о ж е с т в о {d\,..., d ] всех документов
N

D Множество документов, принадлежащих классу с


jj Множество {<d с > , < d u х N , c >} в с е х п о м е ч е н н ы х д о к у м е н т о в
N

в главах 13-15
df, Д о к у м е н т н а я ч а с т о т а т е р м и н а t ( о б щ е е к о л и ч е с т в о д о к у м е н т о в из
к о л л е к ц и и , с о д е р ж а щ и х т е р м и н г)
Н Энтропия
Н м М-е г а р м о н и ч е с к о е ч и с л о
Продолжение табл.

Символ Описание
I(X; У) Взаимная информация случайных величин X и Y
idf, Обратная документная частота термина t
J Количество классов
к П е р в ы е к э л е м е н т о в м н о ж е с т в а , т.е. к б л и ж а й ш и х с о с е д е й в м е т о д е k N N ,
п е р в ы е к в о з в р а щ е н н ы х д о к у м е н т о в , п е р в ы е к п р и з н а к о в , в ы б р а н н ы х из
словаря V
к Последовательность к символов
К Количество кластеров
L d Д л и н а д о к у м е н т а d (в л е к с е м а х )
L a Длина тестового документа (или документа приложения) в лексемах
L a v e С р е д н я я д л и н а д о к у м е н т а (в л е к с е м а х )
М Р а з м е р л е к с и к о н а (| V|)
М а Р а з м е р л е к с и к о н а т е с т о в о г о д о к у м е н т а (или д о к у м е н т а п р и л о ж е н и я )
M a v e Средний размер лексикона одного документа в коллекции
М й Языковая модель документа d
N Количество документов в коллекции
Л/с Количество документов в классе с
ЛГ(ю) К о л и ч е с т в о п о в т о р е н и й с о б ы т и я (а
0{) Оценка сложности алгоритма
0() Шансы события
Р Точность
Р(А Вероятность
Р Матрица вероятностей переходов
q Запрос
R Полнота
а, Строка
s- Булевы значения в зонном ранжировании
simW, ,d ) 2 Сходство документов d\wd 2

Т Общее количество лексем в коллекции документов


Т а Количество повторений слова / в документах из класса с
l И н д е к с t-то т е р м и н а в л е к с и к о н е V
t Термин в лексиконе
t f , Ч а с т о т а термина г в документе d (общее количество повторений термина
t в д о к у м е н т е d)

U, Случайная в е л и ч и н а п р и н и м а ю щ а я значение 0 (термин i есть) и 1

( т е р м и н а t нет)
V Лексикон терминов { г , , t ] M в коллекции
v (d) Вектор документа, нормализованный по длине
12 Таблица обозначений

Окончание табл.

Символ Описание
V(d) Вектор документа, не нормализованный по длине

wf ,,r
Вес термина t в документе d
w Вес, например, зоны или термина
wx T
=b Гиперплоскость; w — вектор нормали к гиперплоскости,
a w , — i-й к о м п о н е н т в е к т о р а w

X В е к т о р и н ц и д е н т н о с т и х = (х,,....х );
м представление признаков
документа
X С л у ч а й н а я в е л и ч и н а , п р и н и м а ю щ а я з н а ч е н и я из л е к с и к о н а V , н а п р и м е р ,
в п о з и ц и и с н о м е р о м с л о в а (координатой") к в н у т р и д о к у м е н т а

X Пространство документов в классификации текстов

W Кардинальное число множества Л: количество элементов множества Л

И Определитель квадратной матрицы 5

N Д л и н а с т р о к и s, в с и м в о л а х

И Длина вектора х

Е в к л и д о в о р а с с т о я н и е м е ж д у в е к т о р а м и х, и у , т . е . д л и н а в е к т о р а х — у
Введение в информационный поиск

Введение в информационный поиск — э т о п е р в ы й у ч е б н и к , к о т о р ы й с о д е р ж и т в з а и м о ­


связанное изложение проблем классического и н ф о р м а ц и о н н о г о поиска и поиска в вебе,
включая смежные задачи классификации и кластеризации текстов. Учебник написан
с п о з и ц и й и н ф о р м а т и к и и с о д е р ж и т с о в р е м е н н о е и з л о ж е н и е всех аспектов п р о е к т и р о в а н и я
и реализации систем сбора, индексирования и поиска документов, методов оценки таких
систем, а т а к ж е введение в м е т о д ы м а ш и н н о г о обучения н а базе к о л л е к ц и й текстов.
Н е с м о т р я н а т о ч т о у ч е б н и к з а д у м а н к а к в в о д н ы й к у р с п о и н ф о р м а ц и о н н о м у поиску,
о н б у д е т и н т е р е с е н и с с л е д о в а т е л я м и п р о ф е с с и о н а л а м . П о л н ы й н а б о р с л а й д о в д л я лек­
ций и упражнений, с о п р о в о ж д а ю щ и х книгу, доступен в Интернете.

Кристофер Д. Маннинг — профессор информатики в Стэнфордском университете


(Stanford University).

Прабхакар Рагхаван — директор исследовательского департамента корпорации Yahoo!


Research и профессор-консультант по компьютерным наукам Стэнфордского
университета

Х а й н р и х Ш ю т ц е — з а в е д у ю щ и й к а ф е д р о й теоретической в ы ч и с л и т е л ь н о й л и н г в и с т и к и
И н с т и т у т а о б р а б о т к и т е к с т о в н а е с т е с т в е н н ы х я з ы к а х ( Ш т у т г а р д с к и й университет).
Предисловие к русскому изданию
М ы рады предоставленной возможности написать краткое предисловие к русскому
и з д а н и ю к н и г и Introduction to Information Retrieval Поскольку оригинальное издание
в ы ш л о в 2 0 0 8 году, в а ж н о с т ь п о и с к а п о т е к с т о в ы м и д р у г и м н е с т р у к т у р и р о в а н н ы м
информационным источникам к текущему моменту е щ е бо ьше возросла. Этот поиск
в а ж е н и к а к т е х н и ч е с к а я задача, и как г л а в н а я ч а с т ь с о ц и а л ь н о г о и д е л о в о г о в з а и м о д е й ­
ствия людей в современном информационном мире. П р о ш е д ш и й период ознаменовался
широким распространением блогов, микроблогов и социальных сетей, а также все более
широким применением инструментов, использующих методы машинного обучения и бо­
лее глубокую интерпретацию текстов. В частности, в России это б ы л о восхитительное
и, в е р о я т н о , п о в о р о т н о е в р е м я п о я в л е н и я у с п е ш н ы х к о м п а н и й , з а н и м а ю щ и х с я в е б -
п о и с к о м , о п т и ч е с к и м р а с п о з н а в а н и е м с и м в о л о в и а в т о м а т и ч е с к о й о б р а б о т к о й текста.
Кроме того, за прошедшее время активизировалась организационная и академическая
д е я т е л ь н о с т ь . М ы х о т е л и б ы о т м е т и т ь , в ч а с т н о с т и , с е м и н а р Р О М И П у п о м я н у т ы й в гла­
ве 8, к о т о р ы й о р г а н и з о в а л ф о р у м п о о ц е н к е м е т о д о в и н ф о р м а ц и о н н о г о п о и с к а в р у с ­
скоязычных источниках ( h t t p : / / r o m i p . r u / ) , аналогичный конференциям T R E C , а
также недавно организованную Российскую летнюю школу по информационному поис­
ку. М ы н а д е е м с я , ч т о п у б л и к а ц и я э т о й к н и г и б у д е т с п о с о б с т в о в а т ь д а л ь н е й ш е м у р а з в и ­
тию методов информационного поиска и веб-поиска в русскоязычном мире.

Кристофер Д. Маннинг
Прабхакар Рагхаван
Хайнрих Шютие
Предисловие редакторов перевода

Информационный поиск, родившись на стыке библиотечного дела и информатики


в середине X X века, некоторое время оставался скромной научной и прикладной обла­
стью, в которой работало небольшое количество ученых. Бурный рост интернета в конце
прошлого — начале нынешнего века стал м о щ н е й ш и м стимулом развития дисциплины.
Современный информационный поиск — это миллионы пользователей, огромные объе­
мы данных, мощные вычислительные системы, изощренные алгоритмы. Д л я решения
изначальной задачи — поиска информации, соответствующей потребности пользовате­
ля, — привлекаются методы машинного обучения, анализа мультимедийной информа­
ции, компьютерная лингвистика, геоинформационные сервисы, исследуется психология
п о л ь з о в а т е л е й и и х с о ц и а л ь н ы е с в я з и , у д о б с т в о и н т е р ф е й с о в и т.д.
Создание учебника для такой динамичной и разносторонней дисциплины становится
очень сложной задачей Кристофер Маннинг, Прабхакар Рагхаван и Хайнрих Шютце с
этой задачей прекрасно справились. Книга представляет собой сбалансированное, после­
д о в а т е л ь н о е и о с н о в а т е л ь н о е в в е д е н и е в п р е д м е т н у ю о б л а с т ь . Д о к н и г и Введение в ин­
формационный поиск, о р и г и н а л ь н о е и з д а н и е к о т о р о й в ы ш л о в 2 0 0 8 г о д у , о с н о в н ы м и
у ч е б н и к а м и п о и н ф о р м а ц и о н н о м у п о и с к у б ы л и к н и г и 1 9 9 9 г о д а : W i t t e n e t al., Managing
Gigabytes и B a e z a - Y a t e s и R i b e i r o - N e t o , Modern Information Retries al ( с м б и б л и о г р а ф и ю ) .
С русскоязычной учебной и профессиональной литературой по информационному поис­
ку д е л о о б с т о я л о н а м н о г о х у ж е . З а и с к л ю ч е н и е м о т д е л ь н ы х в у з о в с к и х у ч е б н ы х п о с о б и й
и переводных изданий узкоприкладного характера, основательных книг п о информаци­
о н н о м у п о и с к у н а р у с с к о м я з ы к е н е в ы х о д и л о с н а ч а л а 8 0 - х г о д о в п р о ш л о г о века.
Благодаря интернет-магазинам не составляет большого труда стать обладателем
оригинального английского издания, к тому ж е электронная версия книги свободно дос­
тупна по адресу h t t p : / / w w w . i n f o r m a t i o n r e t r i e v a l . o r g / . Несмотря н а это, м ы
считаем, ч т о издание книги на русском языке — важное и полезное дело. Русская версия
призвана упросить знакомство с информационным поиском всем заинтересованным —
студентам, аспирантам, исследователям и инженерам-практикам Профессионалам, рабо­
тающим в этой области, книга поможет структурировать их знания и послужит анноти­
рованным библиографическим указателем. Е щ е одна важная задача книги — зафиксиро­
в а т ь ( а и н о г д а и в в е с т и в о б о р о т ) р у с с к у ю т е р м и н о л о г и ю п о и н ф о р м а ц и о н н о м у поиску.
Отсутствие профессиональной литературы п о информационному поиску в течение дол­
гого времени обусловило сложности, с которыми м ы столкнулись в процессе перевода.
При переводе терминологии м ы старались по возможности использовать устоявшие­
ся м а т е м а т и ч е с к и е т е р м и н ы , т е р м и н ы , п р и н я т ы е в о т е ч е с т в е н н о й и н ф о р м а т и к е ( c o m p u t e r
science), и т е , ч т о с т а л и о б щ е п р и н я т ы м и в п р а к т и к е р а з р а б о т к и п о и с к о в о й с и с т е м ы Я н ­
декс, & также в рамках Российского семинара п о оценке методов информационного п о ­
иска ( Р О М И П , h t t p : / / r o m i p . r u ) . П р и п е р е в о д е м ы и с к а л и н е п р о с т о п о н я т н ы е , н о и
по возможности однозначные и непротиворечивые варианты терминов. Поэтому, напри­
м е р , в к н и г е в е з д е , г д е т о л ь к о м о ж н о , dictionary ( с т р у к т у р а д а н н ы х ) п е р е в о д и т с я к а к с л о ­
в а р ь , a vocabulary — к а к л е к с и к о н , proximity — б л и з о с т ь , a similarity — с х о д с т в о . Т а к ж е
мы старались использовать устоявшуюся терминологию из других наук, например из
б и о л о г и и , в т е х с л у ч а я х , к о г д а о н а с у щ е с т в у е т ( н а п р и м е р , capture-recapture — метод по­
в т о р н о г о з а х в а т а ) . М н о г и е ч л е н ы с о о б щ е с т в а m_ir в Ж и в о м Ж у р н а л е о т к л и к н у л и с ь н а
наш призыв поучаствовать в коллективном переводе предметного указателя книги на
сайте t r a n s l a t e d . b y , за что м ы им очень благодарны.
М ы н е с т а л и п е р е в о д и т ь п р и м е р ы н а р у с с к и й язык, д л я э т о г о и х п р и ш л о с ь б ы с л и ш ­
ком с и л ь н о п е р е р а б о т а т ь . М ы н а д е е м с я , ч т о ч и т а т е л ь с м о ж е т в о с п о л ь з о в а т ь с я п о я с н е ­
ниями в тексте, да и точного понимания текста примеров для понимания работы алго­
ритмов и методов, как правило, не требуется.
Наконец, м ы взяли на себя смелость снабдить текст комментариями не только для
указания эквивалентных русских источников, если они имеются, и комментариев п о вы­
бору терминологии, но и в случаях, когда наш опыт разработчиков веб-поиска и иссле­
д о в а т е л е й п о з в о л я л д о п о л н и т ь о р и г и н а л ь н ы й т е к с т (в н е к о т о р ы х с л у ч а я х э т о п р о и с х о д и ­
л о из-за с п е ц и ф и к и р у с с к о я з ы ч н о г о п о и с к а ) .
М ы хотим поблагодарить тех, кто принял участие в переводе терминологии и при­
слал свои предложения и замечания по тексту: Андрей Белов, Леонид Бойцов, Констан­
тин Воронцов, Максим Захаров, Ю р и й Зеленков, Евгений Кирпичев, Константин Коло-
меец, Наташа Лауфер, Лидия Пивоварова, Денис Расковалов, Григорий Сапунов, Алек­
сандр Сигачёв, Павел Уваров, Евгений Харитонов.
М ы р а д ы отметить, что интерес к информационному поиску в России растет. В каче­
стве " т о ч е к к р и с т а л л и з а ц и и " т а к о г о и н т е р е с а м о ж н о н а з в а т ь с е м и н а р Р О М И П , с е р и ю
летних школ RuSSIR ( h t t p : / / r o m i p . r u / r u s s i r 2 0 1 0 / ) , "Школу анализа данных"
Яндекса ( h t t p : / / s h a d . y a n d e x . r u / ) , сообщество " И н ф о р м а ц и о н н ы й п о и с к " ( h t t p : / /
c o m m u n i t y . l i v e j o u r n a l . c o m / r u _ i r / ) . Вопросы информационного поиска обсу­
ждаются на конференциях "Электронные библиотеки" ( h t t p : / / r c d l . r u / ) и "Диалог"
( h t t p : / / w w w . d i a l o g - 2 1 . r u / ) . Надеемся, что эта книга поможет развитию инфор­
мационного поиска — научной и прикладной дисциплины — в России и ближнем зару­
бежье.
М ы благодарим О О О "Яндекс" за поддержку русского издания книги.

Павел Браславский
Дмитрий Клюшин
Илья Сегалович
Предисловие

Е щ е в 1990-х г о д а х р е з у л ь т а т ы с о ц и о л о г и ч е с к и х и с с л е д о в а н и й с в и д е т е л ь с т в о в а л и о
т о м , ч т о б о л ь ш и н с т в о л ю д е й п р е д п о ч и т а ю т п о л у ч а т ь и н ф о р м а ц и ю о т д р у г и х л ю д е й , а не
с п о м о щ ь ю и н ф о р м а ц и о н н о - п о и с к о в ы х ( I n f o r m a t i o n R e t r i e v a l — IR) с и с т е м . Н а п р и м е р ,
в то время для бронирования билетов и гостиниц л ю д и чаще обращались к сотрудникам
туристических агентств. Однако за последние десять лет благодаря постоянному совер­
шенствованию методов информационного поиска поисковые системы в вебе поднялись
н а н о в ы й к а ч е с т в е н н ы й у р о в е н ь , п о з в о л я ю щ и й л у ч ш е у д о в л е т в о р я т ь п о т р е б н о с т и все
большего количества людей, а веб-поиск стал стандартным и часто предпочтительным
механизмом поиска и н ф о р м а ц и и . Н а п р и м е р , в 2004 году опрос P e w Internet Survey
(Fallows, 2 0 0 4 ) п о к а з а л , ч т о " 9 2 % п о л ь з о в а т е л е й с е т и И н т е р н е т с ч и т а ю т е е у д о б н о й д л я
п о л у ч е н и я п о в с е д н е в н о й и н ф о р м а ц и и " . К у д и в л е н и ю м н о г и х , и н ф о р м а ц и о н н ы й п о и с к из
п р е и м у щ е с т в е н н о а к а д е м и ч е с к о й д и с ц и п л и н ы с т а л б а з и с о м д л я с р е д с т в д о с т у п а к ин­
ф о р м а ц и и , н а к о т о р ы й п о л а г а е т с я б о л ь ш и н с т в о л ю д е й . В к н и г е и з л о ж е н ы н а у ч н ы е осно­
в ы этой дисциплины на уровне, доступном как студентам старших курсов университетов,
так и с п о с о б н ы м с т у д е н т а м м л а д ш и х к у р с о в .
Информационный поиск возник раньше веба. Его эволюция стимулировалась раз­
нообразными проблемами, связанными с обеспечением поиска и доступа к информа­
ционным источникам. Сначала информационный поиск касался научных публикаций и
библиотечных каталогов, однако вскоре он распространился и на другие сферы, в ко­
торых важна роль информации, — на журналистику, право и медицину. Многие иссле­
дования в области информационного поиска проводились именно в этом контексте, и
до сих пор большая доля практических приложений этой дисциплины связана с обес­
печением доступа к неструктурированной информации, хранящейся в многочисленных
корпоративных и правительственных базах данных. Именно этим методам посвящена
большая часть книги.
Т е м н е м е н е е в п о с л е д н и е г о д ы о с н о в н ы м д в и г а т е л е м п р о г р е с с а я в л я е т с я в е б , от­
крывший возможность публиковать информацию десяткам миллионов пользователей.
Эта лавина публикаций осталась бы недоступной, если б ы информацию б ы л о невозмож­
но найти, сопроводить аннотацией и проанализировать так, чтобы каждый пользователь
мог быстро найти необходимые ему релевантные и исчерпывающие сведения. В конце
1990-х г о д о в м н о г и е л ю д и п о н я л и , ч т о д а л ь н е й ш а я и н д е к с а ц и я в с е г о в е б а в с к о р е с т а н е т
н е в о з м о ж н о й и з - з а его э к с п о н е н ц и а л ь н о г о р о с т а . О д н а к о з н а ч и т е л ь н ы е н а у ч н ы е и н н о в а ­
ции и превосходные инженерные решения, быстро снижающаяся стоимость компьютерно­
го аппаратного обеспечения и появление коммерческой заинтересованности в веб-поиске
в совокупности способствовали возникновению крупных поисковых систем, способных
с в ы с о к и м к а ч е с т в о м и за д о л и с е к у н д ы в ы п о л н и т ь с о т н и м и л л и о н о в з а п р о с о в в д е н ь по
б а з е , с о с т о я щ е й из м и л л и а р д о в в е б - с т р а н и ц .
Структура книги и учебного курса
Книга является результатом объединения нескольких учебных курсов, прочитан­
н ы х в С т э н ф о р д с к о м университете (Stanford University) и Ш т у т г а р т с к о м университете
(University of Stuttgart) в р а з н ы х в а р и а н т а х : н а п р о т я ж е н и и о д н о й ч е т в е р т и , о д н о г о с е м е ­
стра и д в у х ч е т в е р т е й . Э т и к у р с ы п р е д н а з н а ч а л и с ь д л я с т а р ш е к у р с н и к о в , и з у ч а в ш и х
компьютерные науки, но оказались полезными и для студентов младших курсов, а также
д л я с т у д е н т о в , о с в а и в а в ш и х ю р и с п р у д е н ц и ю , м е д и ц и н с к у ю и н ф о р м а т и к у , статистику,
л и н г в и с т и к у и р а з н о о б р а з н ы е т е х н и ч е с к и е д и с ц и п л и н ы . К н и г а о р г а н и з о в а н а так, ч т о б ы
осветить то, что м ы считаем важным для студентов, изучающих информационный поиск
на п р о т я ж е н и и о д н о г о с е м е с т р а . К р о м е т о г о , к а ж д а я г л а в а с о д е р ж и т м а т е р и а л о д н о й
лекции продолжительностью 7 5 - 9 0 минут.
Г л а в ы 1-8 п о с в я щ е н ы о с н о в а м и н ф о р м а ц и о н н о г о п о и с к а и, в ч а с т н о с т и , с у щ н о с т и
поисковых систем; м ы считаем, что этот материал является ядром любого курса по ин­
ф о р м а ц и о н н о м у п о и с к у . В г л а в е 1 в в е д е н ы и н в е р т и р о в а н н ы е и н д е к с ы (inverted indexes)
и показано, как с их п о м о щ ь ю можно обработать простые булевы запросы (Boolean
queries). В г л а в е 2 д е т а л ь н о о п и с ы в а ю т с я с п о с о б ы п р е д в а р и т е л ь н о й о б р а б о т к и д о к у м е н ­
тов перед индексированием и методы усовершенствования индексов для расширения
ф у н к ц и о н а л ь н ы х в о з м о ж н о с т е й и п о в ы ш е н и я с к о р о с т и поиска. В главе 3 р а с с м а т р и в а ю т с я
п о и с к о в ы е структуры д л я с л о в а р е й и м е т о д ы о б р а б о т к и з а п р о с о в , с о д е р ж а щ и х о р ф о г р а ф и ­
ч е с к и е о ш и б к и и д р у г и е неточности. В главе 4 о п и с ы в а е т с я н е с к о л ь к о а л г о р и т м о в п о ­
строения и н в е р т и р о в а н н о г о и н д е к с а п [лекции текстов с о с о б ы м а к ц е н т о м н а м а с ш т а ­
бируемые и распределенные алгоритмы, допускающие применение к очень большим кол­
л е к ц и я м . В главе 5 излагаются м е т о д ы с ж а т и я словарей и и н в е р т и р о в а н н ы х и н д е к с о в . Э т и
м е т о д ы о ч е н ь в а ж н ы д л я обеспечения б ы с т р о й (за д о л и секунды) о б р а б о т к и пользователь­
ских з а п р о с о в в б о л ь ш и х п о и с к о в ы х системах. И н д е к с ы и з а п р о с ы , и з у ч а е м ы е в главах 1-5,
касаются л и ш ь булева поиска (Boolean retrieval), п р и к о т о р о м д о к у м е н т л и б о соответствует
запросу, л и б о нет Ж е л а н и е и з м е р и т ь степень соответствия д о к у м е н т а запросу, и л и
релевантность (score) документа, с т и м у л и р о в а л о р а з р а б о т к у м е т о д о в в з в е ш и в а н и я т е р м и ­
нов (term weighting) и р а н ж и р о в а н и я (computation of scores), о п и с а н н ы х в главах 6 и 7, и да­
лее, к к о н ц е п ц и и списка д о к у м е н т о в , у п о р я д о ч е н н ы х по степени соответствия запросу.
Глава 8 п о с в я щ е н а оценке и н ф о р м а ц и о н н о - п о и с к о в ы х с и с т е м н а о с н о в а н и и э к с п е р т н ы х
оценок р е л е в а н т н о с т и н а й д е н н ы х д о к у м е н т о в , ч т о п о з в о л я е т с р а в н и в а т ь о т н о с и т е л ь н о е ка­
чество с и с т е м на с т а н д а р т н ы х коллекциях д о к у м е н т о в и запросов.

Главы 9-21 основаны на материале, изложенном в главах 1 8 , и охватывают широкий


спектр более сложных тем. В главе 9 обсуждаются методы повышения эффективности
п о и с к а с п о м о щ ь ю т а к и х п р и е м о в , к а к о б р а т н а я связь п о р е л е в а н т н о с т и (relevance
feedback) и р а с ш и р е н и е з а п р о с о в ( q u e r y e x p a n s i o n ) , п р е д н а з н а ч е н н ы х д л я у в е л и ч е н и я в е ­
р о я т н о с т и н а х о ж д е н и я р е л е в а н т н ы х д о к у м е н т о в . В г л а в е 10 р а с с м а т р и в а ю т с я м е т о д ы
информационного поиска по документам, структурированным с помощью языков раз­
метки, таких как X M L и H T M L . М ы сводим поиск п о структурированным документам к
п р и м е н е н и ю м е т о д о в р а н ж и р о в а н и я н а о с н о в е в е к т о р н о й м о д е л и (vector s p a c e scoring),
и з л о ж е н н ы х в г л а в е 6. В г л а в а х 11 и 12 д л я р а н ж и р о в а н и я д о к у м е н т а п о о т н о ш е н и ю к
з а п р о с у и с п о л ь з у е т с я т е о р и я в е р о я т н о с т е й . Г л а в а 11 п о с в я щ е н а т р а д и ц и о н н о м у в е р о я т ­
ностному информационному поиску, позволяющему вычислить вероятность релевантно­
сти д о к у м е н т а п р и з а д а н н о м н а б о р е с л о в з а п р о с а . В п о с л е д с т в и и э т у в е р о я т н о с т ь м о ж н о
и с п о л ь з о в а т ь к а к п о к а з а т е л ь р е л е в а н т н о с т и п р и р а н ж и р о в а н и и . В г л а в е 12 и л л ю с т р и р у -
ется альтернатива, в рамках которой для каждого документа в коллекции создается язы­
ковая м о д е л ь , п о з в о л я ю щ а я о ц е н и т ь в е р о я т н о с т ь т о г о , ч т о о н а п о р о ж д а е т з а д а н н ы й за­
прос. Эта вероятность является еще одним количественным показателем, с п о м о щ ь ю ко­
торого осуществляется ранжирование документов.
В главах 1 3 - 1 8 излагаются методы машинного обучения и численные методы ин­
формационного поиска. Главы 13-15 посвящены проблеме классификации документов
по и з в е с т н ы м к а т е г о р и я м н а о с н о в е н а б о р а д о к у м е н т о в и к л а с с о в , к о т о р ы м о н и п р и н а д -
т е ж а т . В г л а в е 13 п р е д с т а в л е н ы д о к а з а т е л ь с т в а т о г о , ч т о к л а с с и ф и к а ц и я н а о с н о в е ста­
т и с т и к и п р е д с т а в л я е т с о б о й о д н у из к л ю ч е в ы х т е х н о л о г и й , н е о б х о д и м ы х д л я у с п е ш н о г о
функционирования поисковой системы. В ней излагается наивный байесовский подход
(Naive B a y e s ) , п р е д с т а в л я ю щ и й с о б о й к о н ц е п т у а л ь н о п р о с т о й и э ф ф е к т и в н ы й м е т о д
классификации текстов, а также основы стандартной методологии оценки текстовых
к л а с с и ф и к а т о р о в . В г л а в е 14 о п и с а н о п р и м е н е н и е м о д е л и в е к т о р н о г о п р о с т р а н с т в а , в в е -
е н н о й в главе 6, а т а к ж е и з л о ж е н ы д в а м е т о д а к л а с с и ф и к а ц и и : м е т о д Р о к к и о ( R o c c h i o
m e t h o d ) и м е т о д к б л и ж а й ш и х с о с е д е й ( к nearest n e i g h b o r — k N N ) , п р и м е н я е м ы е к в е к т о ­
рам документов. В ней также рассматривается компромисс между смещением и разбро-
- ебм (дисперсией), представляющий собой важную характеристику задач обучения и по­
зволяющий установить критерии для выбора подходящего метода классификации тек­
стов. В г л а в е 15 в в о д и т с я м е т о д о п о р н ы х в е к т о р о в (support v e c t o r m a c h i n e ) , к о т о р ы й
м н о г и е и с с л е д о в а т е л и в н а с т о я щ е е в р е м я с ч и т а ю т н а и б о л е е э ф ф е к т и в н ы м м е т о д о м клас­
с и ф и к а ц и и т е к с т о в . К р о м е т о г о , в д а н н о й г л а в е и с с л е д у ю т с я с в я з и м е ж д у з а д а ч е й клас­
с и ф и к а ц и и и, н а п е р в ы й в з г л я д , с о в е р ш е н н о п о с т о р о н н и м и т е м а м и , т а к и м как в ы в о д
функций ранжирования по набору обучающих примеров
Главы 1 6 - 1 8 посвящены идентификации кластеров близких документов в коллекции.
В г л а в е 16 с н а ч а л а п р и в о д и т с я о б з о р н е с к о л ь к и х в а ж н ы х п р и л о ж е н и й к л а с т е р и з а ц и и в
о б л а с т и и н ф о р м а ц и о н н о г о п о и с к а , а з а т е м р а с с м а т р и в а ю т с я д в а а л г о р и т м а п л о с к о й кла­
с т е р и з а ц и и (flat c l a s t e r i n g ) : э ф ф е к т и в н ы й и ш и р о к о и с п о л ь з у е м ы й д л я к л а с т е р и з а ц и и
д о к у м е н т о в а л г о р и т м К с р е д н и х (АГ-means a l g o r i t h m ) и Е М - а л г о р и т м ( e x p e c t a t i o n -
m a x i m i z a t i o n algorithm), к о т о р ы й с в ы ч и с л и т е л ь н о й т о ч к и з р е н и я я в л я е т с я б о л е е затрат­
н ы м , н о б о л е е г и б к и м . В г л а в е 17 о б о с н о в ы в а е т с я н е о б х о д и м о с т ь и е р а р х и ч е с к и с т р у к т у ­
р и р о в а н н о й к л а с т е р и з а ц и и ( в м е с т о п л о с к о й ) для м н г и х п р и л о ж е н и й в о б л а с т и и н ф о р ­
мационного поиска, а также рассматриваются алгоритмы кластеризации, порождающие
иерархии кластеров. В этой главе также рассматривается сложная проблема автоматиче­
с к о й р а з м е т к и к л а с т е р о в . Г л а в а 18 п о с в я щ е н а м е т о д а м л и н е й н о й а л г е б р ы , п р е д с т а в л я ю ­
щим собой расширение методов кластеризации и открывающим захватывающие пер­
спективы для применения алгебраических методов, разрабатываемых в рамках латентно­
г о с е м а н т и ч е с к о г о и н д е к с и р о в а н и я (latent semantic indexing).
Г л а в ы 1 9 - 2 1 п о с в я щ е н ы п р о б л е м а м п о и с к а в в е б е . В г л а в е 19 п р и в о д я т с я к р а т к и й о б ­
зор основных задач, связанных с поиском в вебе, а также набор широко распространен­
ных методов информационного поиска в вебе. В главе 2 0 описываются архитектура и
т р е б о в а н и я , п р е д ъ я в л я е м ы е к в е б - р о б о т а м ( w e b - c r a w l e r s ) . В г л а в е 21 р а с с м а т р и в а е т с я
применение анализа ссылок для веб-поиска, где анализ проводится с использованием ме­
тодов линейной алгебры и теории вероятностей.
Эта книга является исчерпывающим источником знаний по всем темам, связанным с
информационным поиском. За ее пределами осталось множество тем, выходящих за
рамки вводного курса по информационному поиску. Тем не менее все, к о ш интересуют
эти т е м ы , м о г у т о б р а т и т ь с я к п е р е ч и с л е н н ы м н и ж е у ч е б н и к а м .
C r o s s - l a n g u a g e IR, G r o s s m a n a n d F n e d e r , 2 0 0 4 , ch. 4 , a n d O a r d a n d Dorr, 1996.
I m a g e a n d m u l t i m e d i a I R , G r o s s m a n a n d Frieder, 2 0 0 4 , c h . 4 ; B a e z a - Y a t e s a n d R i b e i r o -
N e t o , 1999, ch. 6 ; B a e z a - Y a t e s a n d R i b e i r o - N e t o , 1999, ch. 1 1 ; B a e z a - Y a t e s a n d R i b e i r o - N e t o ,
1999, ch. 12; del B i m b o , 1 9 9 9 ; L e w , 2 0 0 1 ; a n d S m e u l d e r s e t al., 2 0 0 0 .
S p e e c h retrieval, C o d e n et al., 2 0 0 2 .
M u s i c retrieval, D o w n i e , 2 0 0 6 a n d h t t p : / / w w w . i s m i r . n e t / .
1
U s e r i n t e r f a c e s f o r IR, B a e z a - Y a t e s a n d R i b e i r o - N e t o . 1999. c h . 1 0 .
S e a r c h U s e r Interfaces, M a r t i A . Hearst, 2 0 0 9 .
Parallel a n d peer-to-peer IR, Grossman and Frieder, 2004. ch. 7: Baeza-Yates and
R i b e i r o - N e t o , 1999, ch. 9 ; a n d A b e r e r , 2 0 0 1 .
Digital libraries, B a e z a - Y a t e s and R i b e i r o - N e t o , 1999, ch. 15, and Lesk, 2 0 0 4 .
I n f o r m a t i o n s c i e n c e p e r s p e c t i v e , Korfhage 1997, M e a d o w e J. 1999; a n d Ingworsen
and Jarvelin, 2 0 0 5 .
L o g i c - b a s e d a p p r o a c h e s t o IR, van Rijsbergen, 1989.
N a t u r a l l a n g u a g e p r o c e s s i n g t e c h n i q u e s , M a n n i n g and Schiitze, 1 9 9 9 ; Jurafsky a n d M a r ­
tin, 2 0 0 8 ; and L e w i s and J o n e s , 1 9 9 6 .

Предварительные требования к уровню подготовки читателей


Ч т о б ы понять содержание книги, достаточно знать основы структур д а н н ы х и алгоритмов,
линейной алгебры и теории вероятностей. Для удобства читателей и преподавателей, ж е л а ю ­
щ и х сосредоточиться л и ш ь н а отдельных главах, мы приводим с л е д у ю щ у ю и н ф о р м а ц и ю .
Д л я о с в о е н и я глав 1-5 необходимо знать основы структур д а н н ы х и а л г о р и т м о в . Гла­
в ы 6 и 7 т р е б у ю т в д о п о л н е н и е к этому знания о с н о в л и н е й н о й а л г е б р ы , в к л ю ч а я в е к т о р ы
и с к а л я р н о е п р о и з в е д е н и е . Далее вплоть д о г л а в ы 11 н и к а к и х д о п о л н и т е л ь н ы х з н а н и й
не требуется. Для освоения материала, и з л о ж е н н о г о в главе 1 1 , следует разбираться в осно­
вах т е о р и и в е р о я т н о с т е й ; краткий обзор п о н я т и й , и с п о л ь з у е м ы х в г л а в а х 11 1 3 , п р и в е д е н
в р а з д е л е 11.1. Глава 15 требует о т читателя знания понятий н е л и н е й н о й о п т и м и з а ц и и , х о т я
ее м о ж н о читать, не имея г л у б о к и х п о з н а н и й о б а л г о р и т м а х н е л и н е й н о й о п т и м и з а ц и и . Гла­
ва 18 предполагает з н а н и е о с н о в л и н е й н о й а л г е б р ы , в к л ю ч а я р а н г м а т р и ц ы и с о б с т в е н н ы е
в е к т о р ы ; к р а т к и й о б з о р этих п о н я т и й п р и в е д е н в р а з д е л е 1 8 . 1 . З н а н и е о п р е д е л е н и й с о б ­
ственных значений и с о б с т в е н н ы х векторов требуется т а к ж е при чтении главы 2 1 .

Разметка
(S^N^ Примеры в тексте сопровождаются пиктограммой, на которой изображен
карандаш.

Сложный материал выделяется пиктограммой с изображением ножниц.

Упражнения отмечены знаком вопроса. Сложность задачи указывается с п о ­


м о щ ь ю з в е з д о ч е к : п р о с т а я — о д н а [*], с р е д н я я — д в е [**] и с л о ж н а я три
[***] з в е з д о ч к и .

1
Можно также посоветовать недавнюю книгу Marti A. Hearst. Search User Interfaces, 2009. см.
http://searchuserinterfaces.com/. - Примеч. ред.
Благодарности

М ы б л а г о д а р и м и з д а т е л ь с т в о C a m b r i d g e University P r e s s з а т о , ч т о о н о п о з в о л и л о опуб­
ликовать рабочий вариант книги в Сети, благодаря чему м ы получили обратную связь с
п о т е н ц и а л ь н ы м и ч и т а т е л я м и у ж е в п р о ц е с с е н а п и с а н и я к н и г и . М ы т а к ж е в ы р а ж а е м при­
з н а т е л ь н о с т ь Л о р е н К о у л з ( L a u r e n C o w l e s ) , п р е в о с х о д н о м у р е д а к т о р у , м н о г о к р а т н о изу­
ч и в ш е м у р у к о п и с ь к а ж д о й г л а в ы и с д е л а в ш е м у м н о ж е с т в о п о л е з н ы х з а м е ч а н и й относи­
т е л ь н о стиля, о р г а н и з а ц и и и о х в а т а м а т е р и а л а , а т а к ж е р я д г л у б о к и х з а м е ч а н и й п о суще­
ству к н и г и . В т о м , ч т о м ы д о с т и г л и п о с т а в л е н н о й ц е л и , — б о л ь ш а я е е заслуга.
М ы о ч е н ь б л а г о д а р н ы м н о г и м л ю д я м , с д е л а в ш и м к о м м е н т а р и и , п р е д л о ж е н и я и ис­
правления, основываясь на черновом варианте книги. В о т их имена: Ш е р и л Аашейм
(Cheryl A a s h e i m ) , Д ж о ш А т т е н б е р г (Josh A t t e n b e r g ) , Б ъ е р н А н д р и с т ( B j o r n Andrist), Л ю к
Беланжер (Luc Belanger), Т о м Бройель ( T o m Breuel), Д а н и э л ь Буркхардт (Daniel
Burckhardt), Георг Б у ш е р (Georg Buscher), Фазли К а и (Fazli C a n ) , Д и н ц ю а н ь Ч е н
( D i n g q u a n C h e n ) , Э р н е с т Д э в и с (Ernest D a v i s ) , П е д р о Д о м и н г о с ( P e d r o D o m i n g o s ) , Родри-
г о П а н ч и н и а к Ф е р н а н д е с ( R o d r i g o P a n c h i n i a k F e r n a n d e s ) , П а о л о Ф е р р а д ж и н а ( P a o l o Fer-
ragina), Н о р б е р т Ф ю р ( N o r b e r t F u h r ) , В и г н е ш Г а н а п а т и ( V i g n e s h G a n a p a t h y ) , Э л м е р
Гард_уно ( E l m e r G a r d u n o ) , С ю б о Г э н ( X i u b o G e n g ) , Д э в и д Г о н д е к ( D a v i d G o n d e k ) ,
С е р д ж и о Г о в о н и (Sergio G o v o n i ) , М и к л о ш Э р д е л и ( M i k l o s E r d e l y i ) , К о р и н н а Х а б е т ц
(Corinna H a b e t s ) , Б е н Х э н д и ( B e n H a n d y ) , Д о н н а Х а р м а н ( D o n n a H a r m a n ) , Б е н д ж а м и н
Х а с к е л л (Benjamin Haskell), Т о м а с Х ю н н ( T h o m a s Htihn), Д и п а к Д ж е й н ( D e e p a k Jain),
Р а л ь ф Я н к о в и ч (Ralf J a n k o w i t s c h ) , Д и н а к а р Д ж а я р а д ж а н ( D i n a k a r Jayarajan), В и н а й
Какаде (Vinay Kakade), Марек Ковалькевич (Marek Kowalkiewicz), М э й Кобаяси (Mei
K o b a y a s h i ) , В е с с е л ь К р а и й ( W e s s e l Kraaij), Р и к Л е ф л е р (Rick Lafleur), Ф л о р и а н Л о у с
(Florian L a w s ) , Х а н Л и ( H a n g L i ) , Д э в и д М а н н ( D a v i d M a n n ) , Э н н и о М а з и ( E n n i o M a s i ) ,
Д ж у н а М а к к о н е н ( J u n a M a k k o n e n ) , Ф р э н к М а к к о у н (Frank M c C o w n ) , П о л М а к н а м и (Paul
McNamee), Свен М е й е р цу Эссен (Sven Meyer zu Eissen), Александер Мурзаку (Alexander
M u r z a k u ) , Г о н з а л о Н а в а р р о ( G o n z a l o N a v a r r o ) , С к о т т О л с с о н (Scott O l s s o n ) , Д а н и э л ь
Паива (Daniel Paiva), T a o Цинь (Tao Qin), Мега Рагхаван (Megha Raghavan), Картик
Рагунатан (Karthik Raghunathan), Гулям Раза (Ghulam Raza), М и х а л Розен-Цви (Michal
Rosen-Zvi), Клаус Ротенхауслер (Klaus Rothenhausler), Кенью Л . Раннер (Kenyu L,
Runner), Александер Саламанка (Alexander Salamanca), Григорий Сапунов (Grigory
S a p u n o v ) , Т о б и а с Ш е ф ф е р ( T o b i a s Scheffer), Н и к о Ш л а ф е р ( N i c o Schlaefer), Е в г е н и й
Ш а д ч н е в ( E v g e n y S h a d c h n e v ) , Я н С о б о р о ф ф ( I a n Soboroff), Б е н н о Ш т е й н ( B e n n o Stein),
М а р ц и н С и д о у ( M a r c i n S y d o w ) , Э н д р ю Т е р н е р ( A n d r e w T u r n e r ) , Д ж е й с о н У т т (Jason Utt),
Х ь ю и B o (Huey Vo), Трэвис У э й д (Travis Wade), М а й к У о л ш (Mike Walsh), Чанлян В а н
(Changliang W a n g ) , Ж э н ь ц з и н В а н (Renjing Wang), Д е л л Д ж а н г (Dell Zang) и Томас
Цойме (Thomas Zeume).

Многие люди присылали свои замечания к отдельным главам как по нашей просьбе,
так и п о с в о е й и н и ц и а т и в е . М ы о ч е н ь б л а г о д а р н ы з а э т о Д ж е й м с у А л л а н у ( J a m e s A l l a n ) ,
О м а р у А л о н з о ( O m a r A l o n s o ) , И с м а и л у С е н ь о р у А л ь т и н г о в д е (Ismail S e n g o r A l t i n g o v d e ) ,
В о Н г о к А н у ( V o N g o c A n h ) , Р у Б л а н к о ( R o i B l a n c o ) , Э р и к у Б р е к у (Eric B r e c k ) , Э р и к у
Б р а у н у (Eric B r o w n ) , М а р к у К а р м а н у ( M a r k C a r m a n ) , К а р л о с у К а с т и л ь о ( C a r l o s Castillo),
Ю н г х у Ч о ( J u n g h o o C h o ) , А р о н у К у л о т т е ( A r o n C u l o t t a ) , Д у г у К а т т и н г у ( D o u g Cutting),
Мегане Деодхар (Meghana Deodhar), С ь ю з а н Д ю м э (Susan Dumais), Йоханнесу Фюрнк-
р а н ц у ( J o h a n n e s F u r n k r a n z ) , А н д р е а с у Х е с с у ( A n d r e a s Н е б ) , Д ь о р д у Х и е м с т р а (Djoerd
Hiemstra), Дэвиду Халлу (David Hull), Торстену Йоахимсу (Thorsten Joachims), Сиддхарт-
х е Д ж о н а т а н у Д ж . Б . (Siddharth J o n a t h a n J. В . ) , Й а а п у К а м п с у ( J a a p K a m p s ) , М у н ь е Л а л -
м а с ( M o u n i a L a l m a s ) , Э м и Л э н г в и л ь ( A m y Langville), Н и к о л а с у Л е с т е р у ( N i c h o l a s Lester),
Дэйву Л ь ю и с у (Dave Lewis), Стивену Лиу (Stephen Liu), Д а н и э л ю Лоуду (Daniel Lowd),
Й о с и М а с с у ( Y o s i M a s s ) , Д ж е ф ф у М и ш е л з у (Jeff M i c h e l s ) , А л е с с а н д р о М о с к и т т и
(Alessandro Moschitti), А м и р у Н а й м и (Amir Najmi), М а р к у Найорку (Marc Najork),
Д ж о р д ж и о М а р и е Д и Н у н ц и о ( G i o r g i o M a r i a D i N u n z i o ) , П о л ю О г и л в и (Paul Ogilvie),
П р и я н к е П а т е л ь (Priyank Patel), Я н у П е д е р с е н у (Jan P e d e r s e n ) , К э т р и н П е д и н г с (Kathryn
P e d i n g s ) , В и с с и л и с у П л а х у р а с у (Vassilis P l a c h o u r a s ) , Д а н и э л ю Р а м а г е (Daniel R a m a g e ) ,
С т и в е н у Р и з л е р у (Stefan Riezler), М а й к л у Ш и е л е н у ( M i c h a e l Schiehlen), Х е л ь м у т у Ш м и д у
( H e l m u t S c h m i d ) , Ф а л ь к у Н и к о л а с у Ш о л е р у (Falk N i c o l a s S c h o l e r ) , С а б и н е Ш у л ь т е и м
В а л ь д е ( S a b i n e Schulte i m W a l d e ) , Ф а б р и ц и о С е б а с т и а н и (Fabrizio Sebastiani), С а р а б ж и т
С и н г х у (Sarabjeet Singh), В а л е н т и н у С п и т к о в с к о м у (Valentin I. S p i t k o v s k y ) , А л е к с а н д р у
Ш т р е л ю (Alexander Strehl), Джону Тейту (John Tait), Ш и в а к у м а р у Вайтианатану
( S h i v a k u m a r V a i t h y a n a t h a n ) , Э л л е н В о р х и з (Ellen V o o r h e e s ) , Г е р х а р д у В а й к у м у ( G e r h a r d
Weikum), Дэвиду Вайсу (Dawid Weiss), Джимингу Янгу (Yiming Yang), Йисонгу Ю
(Yisong Y u e ) , Д ж и а н у Ч а н г у (Jian Z h a n g ) и Д ж а с т и н Ц о б е л ь (Justin Z o b e l ) .
Кроме того, мы хотели бы упомянуть рецензентов, количество и качество коммента­
риев которых трудно переоценить. М ы благодарны Павлу Берхину (Pavel Berkhin), Сте­
фану Б ю т ч е р у (Stefan Biittcher), Д ж е й м и К а л л а н (Jamie Callan), Б а й р о н у Д о м у (Byron
Dom), Торстену Зулю (Torsten Suel) и Э н д р ю Т р о т м а н у (Andrew Trotman) за их значи­
тельное влияние на содержание и структуру книги.
Исходные черновики глав 13-15 были основаны на слайдах, созданных Рэем Муни
(Ray M o o n e y ) . Н е с м о т р я н а т о ч т о э т о т м а т е р и а л п о д в е р г с я с у щ е с т в е н н о й п е р е р а б о т к е ,
м ы б л а г о д а р н ы Р э ю з а е г о в к л а д в э т и т р и г л а в ы в ц е л о м и з а о п и с а н и е в о п р о с о в , свя­
занных с временной сложностью алгоритмов классификации текстов, в частности.
К с о ж а л е н и ю , м ы н е в с о с т о я н и и п е р е ч и с л и т ь всех, п о с к о л ь к у д о с и х п о р п о л у ч а е м от­
з ы в ы о т н а ш и х читателей. К а к и в с е с а м о у в е р е н н ы е а в т о р ы , м ы н е всегда п р и с л у ш и в а л и с ь
к и х советам. О п у б л и к о в а н н ы й в а р и а н т книги п о л н о с т ь ю остается на совести авторов.
А в т о р ы в ы р а ж а ю т б л а г о д а р н о с т ь С т э н ф о р д с к о м у у н и в е р с и т е т у (Stanford University)
и Ш т у т г а р д с к о м у университету (University of Stuttgart) за с о з д а н и е а к а д е м и ч е с к о й с р е д ы
для п л о д о т в о р н ы х н а у ч н ы х д и с к у с с и й и в о з м о ж н о с т ь читать у ч е б н ы е к у р с ы , с т а в ш и е о с ­
н о в а н и е м д л я э т о й книги. К р и с т о ф е р М а н н и н г (Christopher M a n n i n g ) б л а г о д а р и т с в о ю се­
м ь ю з а м н о г и е ч а с ы , к о т о р ы е о н а п о з в о л и л а е м у п р о в е с т и , р а б о т а я на к н и г о й , и надеется,
что е м у удастся наверстать у п у щ е н н о е н а уик-эндах в с л е д у ю щ е м году. П р а б х а к а р Рагаван
(Prabhakar R a g h a v a n ) б л а г о д а р и т с в о ю с е м ь ю за т е р п е н и е и п о д д е р ж к у в о в р е м я р а б о т ы над
книгой, а т а к ж е в ы р а ж а е т п р и з н а т е л ь н о с т ь к о м п а н и и Y a h o o ! Inc. за п л о д о т в о р н у ю а т м о ­
сферу, в к о т о р о й п р о х о д и л а эта работа. Х а й н р и х Ш ю т ц е (Hinrich Schiitze) х о т е л б ы побла­
годарить своих р о д и т е л е й , с е м ь ю и д р у з е й за п о д д е р ж к у в п р о ц е с с е р а б о т ы н а д книгой.

Веб-адреса и контактная информация


Этой книге посвящен веб-сайт h t t p : / / i n f o r m a t i o n r e t r i e v a l . o r g . который,
помимо ссылок на различные ресурсы, содержит слайды для каждой главы, которые
м о ж н о и с п о л ь з о в а т ь д л я л е к ц и й . М ы п р и в е т с т в у е м о б р а т н у ю с в я з ь с ч и т а т е л я м и и с бла­
годарностью примем их замечания и предложения по улучшению книги, которые можно
отсылать авторам по адресу i n f o r m a t i o n r e t r i e v a l @ y a h o o g r o u p s . com.
Глава 1

Булев поиск

С м ы с л т е р м и н а и н ф о р м а ц и о н н ы й п о и с к (information r e t r i e v a l — 1R) м о ж е т б ы т ь о ч е н ь
широким. Даже извлечение кредитной карточки и з бумажника для того, чтобы узнать ее
н о м е р , у ж е м о ж н о т р а к т о в а т ь к а к в и д и н ф о р м а ц и о н н о г о п о и с к а . Т е м н е м е н е е как н а у ч ­
ная дисциплина информационный поиск может быть определен следующим образом.

И н ф о р м а ц и о н н ы й п о и с к (IR) — э т о п р о ц е с с п о и с к а в б о л ь ш о й к о л л е к ц и и ( х р а н я ­
щейся, как правило, в памяти компьютеров) некоего неструктурированного мате­
р и а л а ("обычно — д о к у м е н т а ) , у д о в л е т в о р я ю щ е г о и н ф о р м а ц и о н н ы е п о т р е б н о с т и .

Если рассматривать информационный поиск таким образом, т о можно отметить, что


раньше подобной деятельностью занимались л и ш ь отдельные специалисты: библиогра­
фы-консультанты, помощники юристов и другие профессионалы. М и р изменился, и те­
перь сотни миллионов людей д е л а ю т это ежедневно, используя поисковые системы или
1
просматривая свою электронную почту. Информационный поиск быстро становится ос­
н о в н о й ф о р м о й д о с т у п а к и н ф о р м а ц и и , в ы т е с н я я т р а д и ц и о н н ы й п о и с к п о к л ю ч у (когда
продавец говорит вам: " К сожалению, я смогу найти в а ш заказ, только если в ы назовете
мне его номер").
К информационному поиску можно также отнести некоторые задачи, не подпадаю­
щие п о д данное в ы ш е базовое определение. Когда м ы говорим "неструктурированные
данные", м ы подразумеваем данные, которые н е имеют ясной, семантически очевидной
и легко реализуемой на компьютере структуры. Они представляют собой противополож­
ность структурированным данным, каноническим примером которых являются реляци­
онные базы данных наподобие тех, которые обычно используются предприятиями для
хранения реестров продукции и персональных данных сотрудников. В реальности ж е со­
вершенно "неструктурированных данных" практически н е существует. Например, обыч­
ные текстовые данные и м е ю т скрытую структуру, характерную д л я естественных язы­
к о в . О д н а к о д а ж е е с л и т р е б о в а т ь я в н о г о н а л и ч и я с т р у к т у р ы , т о б о л ь ш и н с т в о т е к с т о в та­
ковую очевидно имеют, поскольку в н и х есть заголовки, абзацы и сноски, которые
обычно представлены в тексте в виде явной разметки (например, в коде веб-страниц).
Поэтому методы информационного поиска используются также д л я "полуструктури­
рованного" поиска, например д л я нахождения документа, в заголовке которого содер­
ж и т с я с л о в о Java, а в т е л е — с л о в о threading.
К информационному поиску относятся и такие задачи, как навигация пользователей
по коллекции документов и фильтрация документов, а также дальнейшая обработка най­
денных документов. Если имеется набор документов, т о возникает задача кластеризации,
которая заключается в определении наилучшей группировки документов п о их содержа-

В современном английском языке слово "search" ("поиск"; все чаще вытесняет словосочета­
ние "(information) retrieval" (буквально — "получение информации"). И хотя термин "search" сам
по себе довольно многозначен, в данной книге эти слова используются как синонимы.
нию. Это напоминает расстановку книг н а полке п о темам. Если задан набор т е м , посто­
я н н ы е и н ф о р м а ц и о н н ы е п о т р е б н о с т и и д р у г и е к а т е г о р и и ( н а п р и м е р , п р и г о д н о с т ь тек­
стов д л я различных возрастных групп), т о возникает задача классификации - опреде­
лить, к какому классу относится (и относится л и вообще) каждая группа документов. Для
ее р е ш е н и я ч а с т о с н а ч а л а в р у ч н у ю к л а с с и ф и ц и р у ю т к а к о е - т о к о л и ч е с т в о д о к у м е н т о в ,
надеясь классифицировать новые документы автоматически.
Системы информационного поиска м о ж н о классифицировать п о масштабу и х дейст­
вия. Д л я э т о г о п о л е з н о в ы д е л и т ь т р и у р о в н я . В п р о ц е с с е в е б - п о и с к а ( W e b search) с и с т е ­
ма должна выполнить поиск среди миллиардов документов, размещенных на миллионах
компьютеров. Отличительными особенностями веб-поиска является необходимость сбо­
ра документов для индексации, способность создавать системы, эффективно работающие
с о г р о м н ы м и м а с с и в а м и и н ф о р м а ц и и , а т а к ж е у ч е т о п р е д е л е н н ы х а с п е к т о в веба, т а к и х
как и с п о л ь з о в а н и е г и п е р т е к с т а и п р о т и в о д е й с т в и е п о п ы т к а м в е б - м а с т е р о в и с к у с с т в е н н о
повысить позиции своих сайтов, манипулируя содержимым веб-страниц. Э т и вопросы
будут р а с с м о т р е н ы в г л а в а х 1 9 - 2 1 . Н а д р у г о м п о л ю с е н а х о д и т с я п е р с о н а л ь н ы й и н ф о р ­
м а ц и о н н ы й п о и с к (personal information retrieval). В п о с л е д н и е г о д ы м н о г и е о п е р а ц и о н ­
ные системы имеют встроенные возможности поиска (например, M a c O S X компании
A p p l e , р е а л и з у ю щ а я т е х н о л о г и ю Spotlight, и о п е р а ц и о н н а я с и с т е м а W i n d o w s Vista, пре­
доставляющая ф у н к ц и ю Instant Search). К р о м е того, п р о г р а м м ы электронной почты
обычно предоставляют н е только функции поиска, н о и средства классификации текстов,
п о к р а й н е й м е р е о н и д о л ж н ы и м е т ь ф и л ь т р ы о т с п а м а , а т а к ж е с р е д с т в а р у ч н о й и л и ав.»
томатической сортировки писем п о папкам. Д л я этих систем критично обрабатывать все
многообразие форматов документов на обычном персональном компьютере. Важны про­
стое сопровождение и инсталляция, а также небольшой объем занимаемой памяти, п о ­
зволяющий выполнять работу, н е раздражая пользователя. Промежуточное положение
м е ж д у у п о м я н у т ы м и д в у м я к л а с с а м и з а н и м а ю т с и с т е м ы к о р п о р а т и в н о г о (enterprise), в е ­
д о м с т в е н н о г о (institutional) и о р и е н т и р о в а н н о г о н а п р е д м е т н у ю о б л а с т ь (domain-specific)
поиска, к о т о р ы е р а б о т а ю т , н а п р и м е р , с к о л л е к ц и я м и в н у т р е н н и х д о к у м е н т о в к о р п о р а ­
ций, базами патентов или научными статьями п о биохимии. В эгих случаях документы,
как п р а в и л о , х р а н я т с я в ц е н т р а л и з о в а н н ы х ф а й л о в ы х с и с т е м а х , и о д н а и л и н е с к о л ь к о
специализированных машин осуществляют поиск по коллекции. В книге рассматривают­
ся м е т о д ы , п р и м е н я е м ы е в о в с е м с п е к т р е п р и л о ж е н и й , о д н а к о м е т о д ы п а р а л л е л ь н о г о и
распределенного поиска в системах веб-поиска излагаются нами довольно поверхностно,
поскольку детали их работы описаны лишь в небольшом количестве публикаций. Одна­
ко, к а к п р а в и л о , р а з р а б о т ч и к и п р о г р а м м н о г о о б е с п е ч е н и я и н т е р е с у ю т с я в о п р о с а м и п е р ­
сонального и корпоративного поиска, если, конечно, о н и н е работают в одной из немно­
гочисленных компаний, специализирующихся на веб-поиске.

Глава начинается с очень простого примера информационного поиска и введения


идеи м а т р и ц ы " т е р м и н - д о к у м е н т " ( р а з д е л 1.1). З а т е м р а с с м а т р и в а е т с я б а з о в а я с т р у к т у р а
д а н н ы х — и н в е р т и р о в а н н ы й и н д е к с ( р а з д е л 1.2). П о с л е э т о г о и з у ч а ю т с я м о д е л ь булева
п о и с к а ( р а з д е л 1.3), а т а к ж е м е т о д ы о б р а б о т к и б у л е в ы х з а п р о с о в ( р а з д е л ы 1.3 и 1.4).

1.1. Пример информационного поиска


В библиотеках многих людей есть толстый т о м собрания произведений Шекспира
Д о п у с т и м , в ы х о т и т е о п р е д е л и т ь , в к а к о й п ь е с е и с п о л ь з у ю т с я с л о в а Brutus AND Caesar
AND NOT Calpurnia. Д л я э т о г о м о ж н о , н а п р и м е р , п р о ч и т а т ь т е к с т о т н а ч а л а д о конца,
о т м е ч а я п ь е с ы , с о д е р ж а щ и е с л о в а Brutus и Caesar, и и с к л ю ч а я и з р а с с м о т р е н и я п ь е с ы ,
в к о т о р ы х в с т р е ч а е т с я с л о в о Calpurnia. П р о с т е й ш и й к о м п ь ю т е р н ы й м е т о д р е ш е н и я э т о й
з а д а ч и с в о д и т с я к п о с л е д о в а т е л ь н о м у п р о с м о т р у (linear scanning) всех д о к у м е н т о в . Э т о т
п р о ц е с с ч а с т о н а з ы в а ю т п р я м ы м п о и с к о м и л и , н а а н г л и й с к о м , g r e p p i n g (от н а з в а н и я к о ­
м а н д ы grep, к о т о р а я в о п е р а ц и о н н о й с и с т е м е U n i x в ы п о л н я е т этот п р о ц е с с ) . П р я м о й п о ­
иск по тексту может быть очень эффективным, особенно на современных компьютерах.
Д о в о л ь н о ч а с т о т а к а я о б р а б о т к а д о п у с к а е т п о и с к п о ш а б л о н у с д ж о к е р а м и (wildcard pat­
tern m a t c h i n g ) . Н а с о в р е м е н н ы х к о м п ь ю т е р а х в ы п о л н е н и я п р о с т ы х з а п р о с о в н а коллек­
циях данных среднего размера (общий объем т о м а собрания избранных произведений
Шекспира составляет чуть меньше одного миллиона слов) вполне достаточно для рядо­
вого п о л ь з о в а т е л я .
Тем не менее в о многих случаях необходимо нечто большее.

1. И н о г д а н у ж н о б ы с т р о о б р а б о т а т ь б о л ь ш у ю к о л л е к ц и ю д о к у м е н т о в . О б ъ е м д а н ­
ных, доступных онлайн, растет по меньшей мере с той ж е скоростью, с которой
увеличивается скорость работы компьютеров. Теперь м ы хотели бы выполнять
поиск информации в массивах данных, содержащих миллиарды и триллионы
слов.
2. И н о г д а т р е б у е т с я б о л ь ш а я г и б к о с т ь п р и в ы п о л н е н и и о п е р а ц и и с р а в н е н и я .
Н а п р и м е р , б ы л о б ы н е п р а к т и ч н о в ы п о л н я т ь з а п р о с Romans NEAR countrymen
с п о м о щ ь ю к о м а н д ы д г е р , г д е с л о в о NEAR м о ж е т о з н а ч а т ь " н е д а л е е 5 с л о в "
или " в пределах одного предложения".
3. Иногда необходимо выполнить ранжированный поиск. В о многих ситуациях нам
н у ж е н н е п р о с т о ответ, а н а и л у ч ш и й о т в е т н а з а п р о с о т н о с и т е л ь н о д о к у м е н т о в ,
содержащих определенное слово.

Для того чтобы избежать последовательного просмотра текстов при выполнении ка­
ждого запроса, заранее составляется индекс документов. Вернемся к тому Шекспира и
о п и ш е м н а его п р и м е р е о с н о в ы м о д е л и б у л е в а п о и с к а . Д о п у с т и м , что д л я к а ж д о г о д о к у ­
мента (в данном примере - для каждой пьесы Шекспира) м ы создали запись, в которой
указано, с о д е р ж и т л и о н конкретное слово и з лексикона Ш е к с п и р а (состоящего из
32 тысяч слов). В результате возникнет бинарная матрица инцидентности " т е р м и н -
д о к у м е н т " ( t e r m - d o c u m e n t incidence matrix), п р е д с т а в л е н н а я н а р и с . 1.1. Т е р м и н ы
(terms) — это е д и н и ц ы индексирования (это понятие обсуждается в разделе 2.2). К а к
п р а в и л о , это о б ы ч н ы е слова, н о в л и т е р а т у р е п о и н ф о р м а ц и о н н о м у п о и с к у у п о т р е б л я е т ­
ся н а з в а н и е т е р м и н , п о с к о л ь к у н е к о т о р ы е в ы р а ж е н и я могут б ы т ь н е п о х о ж и м и н а
" о б ы ч н ы е с л о в а " , н а п р и м е р 1—9 и л и Hong Копд. Т е п е р ь в з а в и с и м о с т и о т п о р я д к а п р о ­
смотра матрицы (по строкам или п о столбцам) м ы м о ж е м получить либо вектор термина,
в котором указано, в каких документах о н встречается, либо вектор документа, в кото­
2
ром указано, какие термины в нем у п о т р е б л я ю т с я .

Формально говоря, для того чтобы векторы терминов стали столбцами, достаточно транспо­
нировать матрицу.
Antony and Julius C a e s a r The Tempest Hamlet Othello Macbeth
Cleopatra
Antony 1 1 0 0 0 1
Brutus 1 1 0 1 0 0
Caesar 1 1 0 1 1 1
Calpurnia 0 1 0 0 0 0
Cleopatra 1 0 0 0 0 0
mercy 1 0 1 1 1 1
worser 1 0 1 1 1 0

Рис. 1.1. Матрица инцидентности "термин-документ". Элемент матрицы (t,d) равен 1, если
пьеса в столбце d содержит слово из строки t, и О, если не содержит

Д л я о б р а б о т к и з а п р о с а Brutus AND Caesar AND NOT Calpurnia м ы б е р е м в е к т о р


д л я т е р м и н о в Brutus, Caesar и Calpurnia, в ы ч и с л я е м д в о и ч н о е д о п о л н е н и е к п о с л е д н е ­
му в е к т о р у и в ы п о л н я е м п о р а з р я д н у ю о п е р а ц и ю AND.

110100 AND 110111 AND 101111 =100100


О т в е т н а з а п р о с в ы г л я д и т так: A n t o n y a n d C l e o p a t r a и H a m l e t (рис. 1.2).

Antony and Cleopatra, Act III, Scene ii


A g n p p a [Aside t o D o m i t i u s E n o b a r b u s ] Why, Enobarbus,
W h e n A n t o n y found Julius C a e s a r d e a d .
H e c r i e d a l m o s t t o roaring; and h e wept
W h e n a t Philippi h e found B r u t u s slain.
Hamplet, Act III, Scene ii
Lord Polonius: I did enact Julius Caesar: I w a s killed i' the
Capitol; B r u t u s killed m e .
Рис. 1.2. Результаты обработки запроса Brutus AND Caesar AND NOT Calpurnia

Модель булева поиска — это модель информационного поиска, в ходе которого мож­
но о б р а б а т ы в а т ь л ю б о й з а п р о с , и м е ю щ и й в и д б у л е в а в ы р а ж е н и я , т . е . в ы р а ж е н и я , в к о т о ­
ром термины используются в сочетании с операциями A N D , O R и N O T . В рамках этой
модели документ рассматривается просто как множество слов.
Р а с с м о т р и м т е п е р ь б о л е е р е а л и с т и ч н ы й с ц е н а р и й , н а п р и м е р е к о т о р о г о у д о б н о вве­
сти н е с к о л ь к о п о н я т и й и о б о з н а ч е н и й . Д о п у с т и м , ч т о в н а ш е м р а с п о р я ж е н и и е с т ь
N = 1 м и л л и о н д о к у м е н т о в . П о д д о к у м е н т а м и (documents) п о д р а з у м е в а ю т с я л ю б ы е объек­
ты, на основе которых решено строить систему информационного поиска. Документами
м о г у т б ы т ь л и ч н ы е з а м е т к и и л и г л а в ы к н и г и ( с м . р а з д е л 2.1.2). Г р у п п у д о к у м е н т о в , п о
которой осуществляется поиск, м ы будем называть коллекцией (collection). Е е также
и н о г д а н а з ы в а ю т к о р п у с о м (corpus) и л и м а с с и в о м т е к с т о в ( b o d y of texts). Д о п у с т и м , ч т о
к а ж д ы й д о к у м е н т с о с т о и т п р и м е р н о и з 1 000 с л о в ( 2 - 3 к н и ж н ы е с т р а н и ц ы ) . Е с л и п р е д ­
положить, что в среднем н а хранение слова с учетом пробелов и знаков препинания от­
в о д и т с я 6 байт, т о т а к а я к о л л е к ц и я д о к у м е н т о в з а й м е т о к о л о 6 Г б а й т ( G B ) . К а к п р а в и л о ,
в п о д о б н ы х д о к у м е н т а х м о ж е т о к а з а т ь с я о к о л о М - 5 0 0 ООО р а з н ы х т е р м и н о в В в ы б р а н ­
ных числах нет ничего особенного, и о н и могут варьироваться в т у или другую сторону,
но о н и в с е ж е д а ю т п р е д с т а в л е н и е о р а з м е р н о с т и р а с с м а т р и в а е м ы х з а д а ч Э т о т в о п р о с
б у д е т и з у ч е н в р а з д е л е 5.1.
Наша цель — разработать систему, выполняющую поиск п о произвольному запросу
(ad h o c retrieval). Э т о с а м а я р а с п р о с т р а н е н н а я з а д а ч а и н ф о р м а ц и о н н о г о поиска. Ц е л ь
системы - найти в коллекции документы, которые являются наиболее релевантными п о
отношению к произвольным информационным потребностям, сообщаемых системе при
помощи однократных, инициированных пользователем запросов. Информационная по­
требность (information n e e d ) — э т о т е м а , о к о т о р о й п о л ь з о в а т е л ь х о ч е т з н а т ь б о л ь ш е . Е е
следует о т л и ч а т ь о т з а п р о с а , т . е . о т т о г о , ч т о п о л ь з о в а т е л ь в в о д и т в к о м п ь ю т е р , п ы т а я с ь
выразить свою информационную потребность. Документ называется релевантным
(relevant), е с л и , с т о ч к и з р е н и я п о л ь з о в а т е л я , о н с о д е р ж и т ц е н н у ю и н ф о р м а ц и ю , у д о в л е ­
творяющую его информационную потребность. Приведенный выше пример был доволь­
но искусственным, поскольку информационная потребность была сведена к поиску кон­
кретных слов, в т о время как обычно пользователи интересуются более неопределенны­
м и т е м а м и , т а к и м и к а к "pipeline l e a k s " ("утечки и з т р у б о п р о в о д о в " ) , и х о т я т п о л у ч а т ь
документы независимо от того, употребляются в них именно эти слова или идея выража­
ется д р у г и м и с л о в а м и , н а п р и м е р pipeline rupture ( " п р о р ы в т р у б о п р о в о д а " ) . Д л я т о г о
чтобы оценить эффективность системы и н ф о р м а ц и о н н о г о поиска (качество результа­
т о в е е р а б о т ы ) , пользователь обычно желает знать два основных статистических показа­
теля, характеризующих результаты, возвращаемые системой.
Т о ч н о с т ь (precision). К а к а я д о л я р е з у л ь т а т о в я в л я е т с я р е л е в а н т н о й п о о т н о ш е н и ю к
информационной потребности?
П о л н о т а (recall). К а к а я д о л я р е л е в а н т н ы х д о к у м е н т о в и з к о л л е к ц и и в о з в р а щ е н а с и с ­
темой?
Подробнее релевантность и показатели качества, включая точность и полноту, рас­
с м а т р и в а ю т с я в г л а в е 8.
Теперь м ы у ж е не можем создать матрицу "термин-документ" наивным способом.
Матрица размером 500 К х 1 М содержит полтриллиона нулей и единиц — слишком
много, чтобы поместиться в памяти компьютера. Т е м н е менее следует подчеркнуть, что
эта м а т р и ц а я в л я е т с я ч р е з в ы ч а й н о р а з р е ж е н н о й , т . е . с о д е р ж и т л и ш ь н е б о л ь ш о е количе­
с т в о н е н у л е в ы х э л е м е н т о в . П о с к о л ь к у к а ж д ы й д о к у м е н т с о с т о и т и з 1 ООО с л о в , м а т р и ц а
будет содержать н е более одного миллиарда единиц, поэтому как минимум 4 9 , 8 % ячеек
б у д у т с о д е р ж а т ь нули. Н а м н о г о ц е л е с о о б р а з н е е х р а н и т ь в п а м я т и т о л ь к о е д и н и ц ы .
Эта идея является основной п о отношению к первой важной концепции информаци­
онного поиска — инвертированному индексу. Э т о название н а самом деле является из­
быточным: индекс всегда ставит в соответствие терминам те части документа, в которых
они встречаются. Т е м н е менее выражения инвертированный индекс, и иногда — инвер­
3
тированный файл — стали стандартными в области информационного поиска. Основ­
ная и д е я и н в е р т и р о в а н н о г о и н д е к с а п р о и л л ю с т р и р о в а н а н а р и с . 1.3. С н а ч а л а м ы з а п и с ы -

Некоторые специалисты по информационному поиску предпочитают термин инвертиро­


3

ванный файл, но выражения наподобие создание индекса и сжатие индекса стали более при­
вычными, чем создание инвертированного файла и сжатие инвертированного файла.
Для определенности мы на протяжении всей книги будем использовать термин (инверти­
рованный) индекс.
ваем в память словарь (dictionary) терминов (иногда его также называют словником
(vocabulary) и л и л е к с и к о н о м (lexicon); в э т о й к н и г е м ы н а з ы в а е м с л о в а р е м структуру
д а н н ы х , а л е к с и к о н о м — м н о ж е с т в о т е р м и н о в т о й и л и и н о й к о л л е к ц и и ) . З а т е м д л я каж­
дого термина м ы создаем список, в котором указаны документы, содержащие данный
термин. Каждый элемент списка, содержащий информацию о том, что термин находится
в документе, а также (довольно часто) о координате термина в этом документе, называ­
4
ется словопозицией (posting). Соответствующий список называется списком словопози-
ц и й (postings list) и л и и н в е р т и р о в а н н ы м с п и с к о м . С л о в а р ь , п р е д с т а в л е н н ы й н а р и с . 1.3,
упорядочен в алфавитном порядке, а каждый список словопозиций упорядочен п о иден­
т и ф и к а т о р а м д о к у м е н т о в . В р а з д е л е 1.3 п о к а з а н о , п о ч е м у э т о о к а з ы в а е т с я п о л е з н ы м ;
п о з д н е е ( в р а з д е л е 7.1.5) м ы р а с с м о т р и м а л ь т е р н а т и в ы э т о м у п р и е м у .

[ Brutus [- [~Г| 2 | 4 | 11 | 31 [ 45 | 173 | 174 |

Caesar | - ГП~2 I 4 I 5 I 6 I 16 I 57 I 132 ИГ]

| Calpurnia | - [ 2 | 31 | 54 [ 101 j

Словопозиций

Рис. 1.3. Две части инвертированного индекса. Словарь обычно находится в


памяти вместе с указателями на каждый список словопозиций, которые
хранятся па диске

1.2. Первая попытка создать инвертированный индекс


Для того чтобы получить в ы и г р ы ш в скорости поиска, необходимо построить инвер­
тированный индекс заранее. Этот процесс состоит из следующих этапов.

1. Собираем документы, подлежащие индексации.

[Friends, Romans, contrymen | S o let it b e with C a e s a r |..

2 Р а з м е ч а е м т е к с т , п р е в р а щ а я к а ж д ы й д о к у м е н т в с п и с о к л е к с е м (tokens).

| Friends | Romans 1 countrymen | So |... |

3 Проводим предварительную лингвистическую обработку, создаем список нор­


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

| friends |romans | countrymen | So |...~|

4
Если речь идет о "некоординатном" (то есть не содержащем координаты термина в документе)
инвертированном индексе, то "словопозицией" является только лишь идентификатор документа.
Словопозиций хранятся внутри связанного с термином списка (инвертированного, словопозиций);
поэтому иногда под словопозицией м ы будем подразумевать пару ("термин, идентификатор до­
кумента").
1.2. Первая попытка создать инвертированный индекс 29

4. Индексируем документы, в которых встречается термин, создавая инвертиро­


ванный индекс, состоящий из словаря и словопозиций.
Р а н н и е э т а п ы о б р а б о т к и , т . е . э т а п ы 1 - 3 , б у д у т р а с с м о т р е н ы в р а з д е л е 2.2. П о к а ж е
лексемы и нормализованные лексемы м ы будем считать приблизительным эквивалентом
слов. Далее м ы предположим, что первые три этапа уже выполнены, и рассмотрим про­
цесс с о з д а н и я и н в е р т и р о в а н н о г о и н д е к с а н а о с н о в е и н д е к с и р о в а н и я с с о р т и р о в к о й
Будем считать, что в коллекции документов каждый документ имеет уникальный по­
следовательный номер, который называется идентификатором документа (docID). В ходе
построения индекса м ы можем просто присваивать последовательные номера каждому
новому документу п р и первом обращении. Входной информацией для индексирования
является список нормализованных лексем д л я каждого документа, который м ы можем
р а с с м а т р и в а т ь к а к с п и с о к п а р " т е р м и н - d o c I D " , к а к п о к а з а н о н а р и с . 1.4. О с н о в н ы м эта­
п о м в п р о ц е с с е и н д е к с и р о в а н и я я в л я е т с я такая с о р т и р о в к а sorting) списка, в р е з у л ь т а т е
к о т о р о й т е р м и н ы р а с п о л а г а ю т с я в а л ф а в и т н о м п о р я д к е , как п о к а з а н о в с р е д н е й к о л о н к е
на р и с . 1.4. З а т е м м н о г о к р а т н ы е п о в т о р е н и я о д н о г о и т о г о ж е т е р м и н а в о д н о м и т о м ж е
5
д о к у м е н т е о б ъ е д и н я ю т с я . П о с л е э т о г о э к з е м п л я р ы одного и т о г о ж е т е р м и н а г р у п п и ­
р у ю т с я , а р е з у л ь т а т р а з д е л я е т с я н а с л о в а р ь (dictionary) и с л о в о п о з и ц и й (postings), к а к п о ­
к а з а н о в п р а в о й ч а с т и р и с . 1.4. П о с к о л ь к у т е р м и н о б ы ч н о в с т р е ч а е т с я в о м н о г и х д о к у ­
ментах, этот способ организации данных у ж е уменьшает объем индекса. В словаре также
хранятся некоторые статистические показатели, например количество документов, со­
д е р ж а щ и х к а ж д ы й т е р м и н , т.е. д о к у м е н т н а я ч а с т о т а ( d o c u m e n t frequency), к о т о р а я в д а н ­
ном случае равна длине каждого списка словопозиций. Эта информация н е существенна
д л я б а з о в о й с и с т е м ы б у л е в а п о и с к а , н о п о з в о л я е т у с к о р и т ь обработку з а п р о с о в , и э т и
данные могут быть использованы позже в о многих ранжирующих моделях информаци­
о н н о г о п о и с к а . З а т е м с п и с к и п о з и ц и й с о р т и р у ю т с я п о и д е н т и ф и к а т о р а м д о к у м е н т о в , что
п о з в о л я е т о б е с п е ч и т ь э ф ф е к т и в н у ю о б р а б о т к у з а п р о с о в . Т а к а я структура и н в е р т и р о в а н ­
н о г о и н д е к с а п р а к т и ч е с к и н е имеет к о н к у р е н т о в , п о с к о л ь к у является н а и б о л е е эффек­
т и в н о й д л я т е к с т о в о г о п о и с к а по п р о и з в о л ь н о м у з а п р о с у .

В результате м ы "платим" з а хранение словаря и списков словопозиций. Списки тре­


буют гораздо больше места, н о словари обычно хранятся в памяти, а списки — на жест­
ком д и с к е , п о э т о м у о п т и м и з а ц и я р а з м е р а к а ж д о г о и з них и г р а е т в а ж н у ю р о ь В главе 5
м ы покажем, как оптимизировать хранение этих данных и доступ к ним. Какой должна
быть структура данных для списков словопозиций? Массив фиксированной длины может
оказаться слишком затратным; одни слова могут встречаться в о многих документах, а
другие — лишь в нескольких. Для списков словопозиций, хранящихся в памяти, сущест­
вуют две альтернативы: односвязные списки или массивы переменной длины. Односвяз-
н ы е с п и с к и (singly linked lists) п о з в о л я ю т п р о с т о в с т а в л я т ь д о к у м е н т ы в с п и с к и с л о в о п о ­
з и ц и й ( н а п р и м е р , п р и о б н о в л е н и и д о к у м е н т о в в х о д е п о в т о р н о г о о б х о д а в е б а в поисках
обновившихся страниц) и естественным образом применять усовершенствованные
структуры индекса, н а п р и м е р списки с п р о п у с к а м и (раздел 2.3), т р е б у ю щ и е дополни­
тельных указателей. Массивы переменной длины позволяют сэкономить память, избежав
издержек н а указатели, и получить выигрыш в быстродействии за счет использования
непрерывных областей памяти н а современных процессорах с кэшем Н а практике до­
полнительные указатели можно встроить в списки как смещения.

Пользователи операционной системы Unix могут заметить, что эти этапы аналогичны ис­
пользованию команд s o r t и u n i q .
термин док. частота - » список словопозиций

Julius br utus 2 ambitious I 1 В


capital 1
be | 1 |
В
1
1
caesar
, br utus

capital
] 2 |

1
- в" 0
was caesar 2 - tj
killed 1 caesar 2 caesar
-в 0
t did 1 did ] I - JJ
the 1 enact 1 enact I 1 | - JJ
capital hath 1 hath | t | -в
br utus 1 | t | -и
killed
I' 1 1 - J]
==> ' it | t
-0
let 2
Julius

killed
7]
T]

it 2 killed - л
be 2 killed *|, -в
with 2 let 2 - 7J
caesar 2 me 1 noble
me J !
1 -0
the 2 noble 2 so 1 л -0
noble 2 so 2 the | 2 | -В 0
br utus 2 the 1 told

'I -в
hath

told
2
2
the

told
2
2
you

-в В
was 2 - л
you you 2 with | 1 |
2
was 2 was 2
ambitious 2 with 2

Рис. 1.4. Построение индекса с помощью сортировки и группирования. Последовательность


терминов в каждом документе в сопровождении соответствующих идентификаторов доку­
ментов (слева) упорядочивается в алфавитном порядке (посередине). После этого экземпляры
одинаковых терминов группируются по слову, а затем — по идентификатору документов. Далее
термины и идентификаторы документов отделяются друг от друга (справа). Термины хранятся
в словаре вместе с указателем на список словопозиций для каждого термина. Распространенной
практикой является хранение вместе с терминами другой описательной информации, например
документной частоты для каждого термина. Эта информация используется для повышения
эффективности обработки запросов и позднее — для взвешивания в моделях ранжирующего по­
иска. В каждом списке словопозиций хранится список документов, содержащих данный термин,
а иногда и другая информация, например частота термина (частота каждого термина в каж­
дом документе) или координата (координаты) термина в каждом документе
Если информация обновляется относительно редко, т о массивы переменной длины
оказываются более компактными, и проход по н и м осуществляется быстрее. М о ж н о
также использовать гибридные схемы со связанным списком массивов фиксированной
длины д л я каждого термина. Если списки словопозиций хранятся на диске (возможно, в
сжатом виде), т о о н и хранятся непрерывным блоком б е з явных указателей (как н а
р и с . 1.3), ч т о б ы м и н и м и з и р о в а т ь р а з м е р с п и с к а с л о в о п о з и ц и й и к о л и ч е с т в о п о з и ц и о н и ­
рований головки диска для считывания списков в память.

^ Упражнение 1.1 [*]. П о с т р о й т е и н в е р т и р о в а н н ы й и н д е к с д л я с л е д у ю щ е й к о л л е к -


. ц и и д о к у м е н т о в . (См., н а п р и м е р , р и с . 1.3.)
Doc 1 n e w h o m e sales t o p forecasts
Doc 2 h o m e sales rise in July
Doc 3 increase in h o m e sales in July
Doc 4 j u l y n e w h o m e sales rise

Упражнение 1.2 [*]. Р а с с м о т р и т е с л е д у ю щ и е д о к у м е н т ы .


Doc 1 b r e a k t h r o u g h d r u g for s c h i z o p h r e n i a
Doc 2 new schizophrenia drug
Doc 3 n e w a p p r o c h e for treatment o f schizophrenia
Doc 4 n e w h o p e s for s c h i z o p h r e n i a patients
1. П о с т р о й т е м а т р и ц у и н ц и д е н т н о с т и " т е р м и н - д о к у м е н т " д л я э т о й к о л л е к ц и и
документов.

2. Постройте инвертированный индекс для этой коллекции, к а к показано н а рис. 1.3.


Упражнение 1.3 [*]. К а к и е р е з у л ь т а т ы в ы п о л у ч и т е в о т в е т н а з а п р о с ы о т н о с и ­
т е л ь н о к о л л е к ц и и д о к у м е н т о в , и з о б р а ж е н н о й н а р и с . 1.2?

1. schoziphrenia AND drug

2. for AND NOT (drug OR approach)


1.3. Обработка булевых запросов
Как п р о и с х о д и т о б р а б о т к а з а п р о с о в с п о м о щ ь ю и н в е р т и р о в а н н о г о и н д е к с а и б а з о в о й
м о д е л и б у л е в а п о и с к а ? Р а с с м о т р и м о б р а б о т к у п р о с т о г о к о н ъ ю н к т и в н о г о з а п р о с а (simple
conjunctive q u e r y )

Brutus and Calpurnia (1.1)


по и н в е р т и р о в а н н о м у и н д е к с у , ч а с т и ч н о п о к а з а н н о м у н а р и с . 1.3. Э т а о б р а б о т к а с в о д и т ­
ся к с л е д у ю щ е м у .

1. О б н а р у ж и в а е м т е р м и н Brutus в с л о в а р е .
2. Находим список его словопозиций.
3. О б н а р у ж и в а е м т е р м и н Calpurnia в с л о в а р е .
4. Находим список его словопозипий.
5. Н а х о д и м п е р е с е ч е н и е э т и х д в у х с п и с к о в , к а к п о к а з а н о н а р и с . 1.5.
Brutus -Ч> , ^ 0 3 3 [зТ] [45] 1173 | \Х7А

Calpurnia —> Ц] [зГ] [Й] | 1_0lJ

Пересечение ==S> [¥] | 31 1

Рис. 1.5. Пересечение списков словопозиций для терминов Brutus и Calpurnia


из рис. 1.3

О п е р а ц и я пересечения (intersection) является ч р е з в ы ч а й н о важной: для т о г о ч т о б ы


быстро найти документы, содержащие оба термина, необходимо обеспечить эффектив­
н о е п е р е с е ч е н и е э т и х с п и с к о в . ( Э т у о п е р а ц и ю и н о г д а н а з ы в а ю т с л и я н и е м ( m e r g i n g ) спи­
сков словопозиций, хотя такое название немного противоречит интуиции, т а к как о н о
связано с использованием термина алгоритмы слияния (merge algorithms), обозначающе­
го семейство алгоритмов, которые объединяют несколько упорядоченных списков с по­
мощью чередования указателей, которые движутся п о каждому из списков; в данном
случае речь идет о слиянии списков с п о м о щ ь ю логической операции A N D . )
Существует простой и э ф ф е к т и в н ы й метод пересечения списков словопозиций с по­
м о щ ь ю а л г о р и т м а с л и я н и я ( р и с . 1.6). М ы с о х р а н я е м у к а з а т е л и н а д в а с п и с к а и п р о х о д и м
по этим спискам одновременно за время, линейно зависящее от количества словопози­
ций в списках. Н а каждом этапе м ы сравниваем идентификаторы документов, на которые
ссылаются о б а указателя. Если о н и совпадают, т о м ы помещаем идентификатор доку­
м е н т а в с п и с о к р е з у л ь т а т о в , а з а т е м п р о д в и г а е м о б а у к а з а т е л я в п е р е д . В п р о т и в н о м слу­
чае м ы продвигаем вперед только указатель, соответствующий списку с м е н ь ш и м иден­
т и ф и к а т о р о м . Е с л и д л и н ы с п и с к о в с л о в о п о з и ц и й р а в н ы х и у, т о п е р е с е ч е н и е о с у щ е с т в ­
л я е т с я з а 0 ( х + у) о п е р а ц и й . С ф о р м а л ь н о й т о ч к и з р е н и я с л о ж н о с т ь о б р а б о т к и з а п р о с а
6
равна 6 ( N ) , где N — количество документов в к о л л е к ц и и . С л о ж н о с т ь такого метода

I N T E R S E C T ^ , , рг)

1 answer*-О

2 while pi * N I L and p * N I L 2

3 d o i f docIDipi) = docID(p ) 2

4 t h e n Add(answer, docID{px))
5 pi *- nextipi)
6 p *- 2 next(p ) 2

7 e l s e i f docID{p ) x < docID(p )


2

8 t h e n pi *- next(pi)
9 else p *- 2 next(p )
2

10 return answer
Рис. 1.6. Алгоритм пересечения двух списков
словопозиций р, и р 2

Символ G(-) представляет собой строгую асимптотическую оценку сложности алгоритма.


Неформально говоря, его часто записывают как О(-), хотя этот символ относится к верхней
асимптотической оценке, которая может не быть строгой (Cormen et al., 1990).
1.3- Обработка булевых запросов 33

и н д е к с и р о в а н и я о т л и ч а е т с я от п о с л е д о в а т е л ь н о г о п р о с м о т р а л и ш ь к о н с т а н т о й , н о н а
практике эта константа часто оказывается огромной. Д л я использования данного алго­
ритма важно, чтобы словопозиций были упорядочены в соответствии с единым глобаль­
ным критерием Для этого можно, например, использовать сортировку числовых
идентификаторов документов docID.
Этот алгоритм можно обобщить для обработки более сложных запросов, таких как

(Brutus or Caesar) AND NOT Calpurnia (1.2)


Оптимизация запроса — это выбор такого способа организации обработки запроса,
чтобы м о ж н о было минимизировать о б щ и й объем работы, которую должна выполнить
система. Основным фактором, влияющим на эффективность обработки булевых запро­
сов, является порядок, в котором осуществляется доступ к спискам словопозиций. Какой
наилучший порядок обработки запроса? Рассмотрим запрос, состоящий из t терминов,
о б ъ е д и н е н н ы х о п е р а ц и е й AND. Н а п р и м е р ,

Brutus AND Caesar AND Calpurnia (1.3)


Для каждого из t терминов необходимо сначала найти списки словопозиций, а затем
п р и м е н и т ь к н и м о п е р а ц и ю AND. Н а п р а к т и к е и с п о л ь з у е т с я с т а н д а р т н ы й э в р и с т и ч е с к и й
прием, который заключается в том, что термины обрабатываются в порядке возрастания
частоты документов; если начать с пересечения двух наименьших списков словопозиций,
т о в с е п р о м е ж у т о ч н ы е р е з у л ь т а т ы не д о л ж н ы п р е в ы ш а т ь н а и м е н ь ш е г о с п и с к а с л о в о п о ­
зиций, а значит, м ы выполним при этом наименьший объем работы. Итак, для списков
с л о в о п о з и ц и й , п р е д с т а в л е н н ы х н а р и с . 1.3, о б р а б о т к а з а п р о с а д о л ж н а в ы г л я д е т ь так.

(Calpurnia AND Brutus) AND Caesar (1.4.


Это первый аргумент в пользу того, чтобы подсчитывать частоту терминов в словаре;
это п о з в о л я е т п р и н я т ь р е ш е н и е о б у п о р я д о ч е н и и н а о с н о в е д а н н ы х , х р а н я щ и х с я в п а м я ­
ти компьютера, не требуя доступа к спискам словопозиций.
Рассмотрим теперь оптимизацию запросов более обшего вида.

(madding AND crowd) AND (ignoble OR strife) AND (killed OR slain) (1.5)
Как и раньше, определим частоту каждого термина, а затем получим оценки сверху
р а з м е р а д л я к а ж д о г о о п е р а т о р а OR, с у м м и р у я ч а с т о т ы е г о о п е р а н д о в . П о с л е э т о г о за­
п р о с м о ж н о о б р а б а т ы в а т ь в п о р я д к е возрастания р а з м е р а к а ж д о г о д и з ъ ю н к т н о г о термина.
Д л я п р о и з в о л ь н ы х б у л е в ы х з а п р о с о в м ы д о л ж н ы н а й т и и в р е м е н н о с о х р а н и т ь ответь]
д л я п р о м е ж у т о ч н ы х в ы р а ж е н и й , в х о д я щ и х в б о л е е с л о ж н ы е в ы р а ж е н и я . О д н а к о в о мно­
г и х с и т у а ц и я х з а п р о с ы я в л я ю т с я и с к л ю ч и т е л ь н о к о н ъ ю н к ц и е й т е р м и н о в . Э т о объясняет­
ся л и б о п р и р о д о й я з ы к а з а п р о с о в , л и б о ш и р о к о й п о п у л я р н о с т ь ю т а к о й ф о р м ы з а п р о с о в
с р е д и п о л ь з о в а т е л е й . В э т о м с л у ч а е в м е с т о п р о с м о т р а о б ъ е д и н е н н ы х с п и с к о в словопо­
зиций с помощью функции, имеющей два входных аргумента и отдельное возвращаемое
значение, эффективнее пересечь все результирующие списки словопозиций с текущим
промежуточным результатом в памяти. П р и этом промежуточный результат инициали­
зируется путем загрузки списка словопозиций самого редко встречающегося термина
Э т о т а л г о р и т м п о к а з а н на р и с . 1.7. И з е г о о п и с а н и я следует, ч т о о п е р а ц и я п е р е с е ч е н и я
асимметрична: промежуточные результаты хранятся в памяти, в то время как очередной
список, с которым они пересекаются, считывается с диска. Кроме того, длина списка
п р о м е ж у т о ч н ы х р е з у л ь т а т о в н и к о г д а не п р е в ы ш а е т д л и н у д р у г и х с п и с к о в , а о б ы ч н о на
порядок короче этих списков. Конечно, пересечение словопозиций можно осуществить и
с п о м о щ ь ю а л г о р и т м а , о п и с а н н о г о н а р и с . 1.6, н о , е с л и д л и н ы с п и с к о в с и л ь н о о т л и ч а ю т ­
ся о д н а о т д р у г о й , в о з н и к а е т в о з м о ж н о с т ь п р и м е н и т ь а л ь т е р н а т и в н ы е м е т о д ы . В этих
м е т о д а х (рис. 1.7), к а к б ы л о с к а з а н о в ы ш е , о ч е р е д н о й и с к о м ы й о б ъ е к т б е р е т с я и з п о с л е ­
д о в а т е л ь н о с ч и т ы в а е м о г о с д и с к а д л и н н о г о и н в е р т и р о в а н н о г о списка, а п е р е с е ч е н и е с о ­
вершается с помощью удаления объектов или их пометки как удаленных в хранящемся
в п а м я т и контейнере д л я п р о м е ж у т о ч н ы х результатов. Э т о в о з м о ж н о с п о м о щ ь ю (1) пря­
мого доступа (если п р о м е ж у т о ч н ы е результаты п р е д с т а в л е н ы в п а м я т и к а к вектор) л и б о (2)
б и н а р н о г о п о и с к а , л и б о (3) х е ш - т а б л и ц ы . К а к б ы т о н и б ы л о , в х о ж д е н и е о ч е р е д н о г о д о ­
кумента в список промежуточных результатов м о ж н о вычислить за константное время.
Однако такие альтернативные методы трудно сочетать со сжатыми инвертированными
с п и с к а м и н а п о д о б и е о п и с а н н ы х в г л а в е 5. Б о л е е т о г о , б е з с т а н д а р т н ы х о п е р а ц и й п е р е с е ­
чения списков словопозиций нельзя обойтись, если оба термина запроса являются высо­
кочастотными.

INTERSECT^ О)
1 terms <- SortBylncreasingFrequency((ti t„»
2 result <— postings(first(terms))
3 terms <— rest(terms)
w h i l e terms Ф N I L a n d result Ф N I L
5 do result <— lntersect(resw/r, postings(first(terms))
6 terms <— rest(terms)
7 return results

Рис. 1.7. Алгоритм обработки конъюнктивных запро­


сов, возвращающий набор документов, которые со­
держат каждый из терминов, указанных во входном

Упражнение 1.4 [*]. М о ж н о л и д л я к а ж д о г о и з з а п р о с о в , у к а з а н н ы х н и ж е , в ы п о л ­


нить о п е р а ц и и п е р е с е ч е н и я з а в р е м я 0 ( х + у ) , г д е х и у - д л и н ы с п и с к о в с л о в о п о ­
з и ц и й д л я т е р м и н о в Brutus и Caesar? Е с л и нельзя, т о к а к и х р е з у л ь т а т о в с л е д у е т
ожидать?

1. Brutus AND NOT Caesar

2. Brutus OR NOT Caesar


Упражнение 1.5 [*]. У с о в е р ш е н с т в у й т е а л г о р и т м с л и я н и я с п и с к о в с л о в о п о з и ­
ций для произвольных булевых запросов. Какова его временная сложность? Рас­
смотрите следующий пример.
1. (Brutus OR Caesar) AND NOT (Antony OR Cleopatra)
В с е г д а л и м о ж н о в ы п о л н и т ь с л и я н и е з а л и н е й н о е в р е м я ? О т н о с и т е л ь н о к а к о г о па­
раметра эта оценка является линейной? М о ж н о л и ее улучшить?

Упражнение 1.6 [**]. Д л я и з м е н е н и я ф о р м ы з а п р о с а м о ж н о и с п о л ь з о в а т ь дист­


р и б у т и в н ы е з а к о н ы д л я о п е р а ц и й AND и OR.
1. П о к а ж и т е , к а к с п о м о щ ь ю д и с т р и б у т и в н ы х з а к о н о в м о ж н о п р е о б р а з о в а т ь з а ­
п р о с и з п р и м е р а 1.5 в д и з ъ ю н к т н у ю н о р м а л ь н у ю ф о р м у .
2. М о ж н о ли утверждать, что полученный запрос будет более (или менее) эффек­
0
тивно обрабатываться, чем и с х о д н ы й
3. Этот результат верен в л ю б о й ситуации и л и о н зависит от слов и содержания
коллекции документов?

Упражнение 1.7 [*]. П о р е к о м е н д у й т е п о р я д о к о б р а б о т к и с л е д у ю щ е г о з а п р о с а .


1. (tangerine OR trees) AND (marmalade OR skies) AND (kaleidoscope OR eyes)

Будем считать, что список словопозиций имеет следующий вид.

Термин Размер списка словопозиций


eyes 213312

kaleidoskope 87009

marmalade 107913

skies ^ 271658

tangerine 46653

trees 316812

Упражнение 1.8 [*"]. Д о п у с т и м , ч т о з а п р о с и м е е т с л е д у ю щ и й в и д .


1. friends AND romans AND (NOT countrymen)
К а к и с п о л ь з о в а т ь ч а с т о т у т е р м и н а countrymen д л я о ц е н к и н а и л у ч ш е ю п о р я д к а
о б р а б о т к и з а п р о с а ? В ч а с т н о с т и , п р е д л о ж и т е с п о с о б в ы п о л н е н и я о п е р а т о р а NOT
при определении порядка обработки запроса.

Упражнение 1.9 [**]. О б е с п е ч и в а е т л и о б р а б о т к а с п и с к о в с л о в о п о з и ц и й в п о р я д к е


возрастания их размера оптимальную обработку конъюнктивного запроса? Если
да, т о а р г у м е н т и р у й т е с в о й о т в е т , а е с л и нет, п р и в е д и т е п р и м е р .

Упражнение 1.10 [**]. Н а п и ш и т е п р о г р а м м у , р е а л и з у ю щ у ю а л г о р и т м с л и я н и я , пока­


з а н н ы й н а р и с . 1.6. д л я з а п р о с а х OR у.

Упражнение 1.11 [**]. К а к о б р а б о т а т ь б у л е в з а п р о с х AND NOT у? П о ч е м у н а и в н а я


оценка для этого запроса слишком завышена? Напишите программу, реализую­
щ у ю алгоритм слияния списков словопозиций и обеспечивающую эффективную
обработку запроса.

1.4. Сравнение расширенной булевой модели


и ранжированного поиска
Альтернативой модели булева поиска являются модели поиска с ранжированием
(ranked retrieval m o d e l s ) , н а п р и м е р м о д е л ь в е к т о р н о г о п р о с т р а н с т в а ( р а з д е л 6.3), в р а м ­
к а х к о т о р ы х п о л ь з о в а т е л и в о с н о в н о м п р и м е н я ю т с в о б о д н ы е т е к с т о в ы е з а п р о с ы (free
text q u e r i e s ) , т . е . н а б и р а ю т о д н о и л и н е с к о л ь к о с л о в , а н е и с п о л ь з у ю т с т р о г и е я з ы к о в ы е
конструкции с операторами; система ж е сама решает, какие документы лучше других
удовлетворяют этим запросам. Несмотря на десятилетия академических исследований
преимуществ ранжирующего поиска, системы, основанные на модели булева поиска, до
н а ч а л а 1990-х г о д о в ( п р и б л и з и т е л ь н а я д а т а п о я в л е н и я с е т и W o r l d W i d e W e b ) 3 0 л е т о с ­
тавались основным или даже единственным средством поиска в крупных коммерческих
информационных службах. Однако эти системы использовали не только логические опе­
рации ( A N D , O R и N O T ) , которые м ы рассматривали д о сих пор. Строгие логические
выражения с терминами с неупорядоченными результатами накладывают слишком мно­
го ограничений п р и поиске информации и н е позволяют полностью удовлетворить и н ­
формационные запросы пользователей, поэтому в этих системах были реализованы рас­
ширенные модели булева поиска с дополнительными операторами, такими как операто­
р ы б л и з о с т и т е р м и н о в . О п е р а т о р у ч е т а р а с с т о я н и я м е ж д у с л о в а м и з а п р о с а (proximity
operator) п о з в о л я е т у к а з а т ь , н а с к о л ь к о б л и з к о д р у г к д р у г у д о л ж н ы б ы т ь р а с п о л о ж е н ы
термины запроса в документе, причем близость между терминами может измеряться ко­
личеством слов между ними, или ж е задаваться структурными единицами, например
предложениями или абзацами.

(5£^ Пример 1.1. Коммерческая служба булева поиска: Westlaw. W e s d a w ( h t t p : / /


w w w . w e s t l a w . c o m / ) — крупнейшая юридическая поисковая служба (по ко­
личеству подписчиков). Ежедневно полмиллиона ее подписчиков выполняют
миллионы поисковых запросов в десятках терабайтов текстовых данных. Она основана в
1975 г о д у . В 2 0 0 5 г о д у б у л е в п о и с к ( к о т о р ы й в с и с т е м е W e s d a w н а з ы в а е т с я Terms and
Connectors) оставался основным механизмом поиска и использовался большим количе­
с т в о м пользователей, х о т я е щ е в 1992 г о д у у н и х появилась в о з м о ж н о с т ь представлять сво­
б о д н ы е т е к с т о в ы е з а п р о с ы ( к о т о р ы е в с и с т е м е W e s t l a w н а з ы в а ю т с я Natural Language).
Рассмотрим несколько примеров булевых запросов в системе Wesdaw.
Информационные потребности: информация о юридических теориях, связанных
с предотвращением раскрытия коммерческой тайны уволенными сотрудниками,
перешедшими на службу в конкурирующие компании.
Запрос: "trade s e c r e t " / s disclos! / s p r e v e n t Is e m p l o y e e !
Информационные потребности: требования людей с ограниченными возможно­
стями, касающиеся доступа к рабочему месту.
Запрос: d i s a b ! / р a c c e s s ! / s work-site w o r k - p l a c e ( e m p l o y m e n t / 3 place)
Информационные потребности: дела, к а с а ю щ и е с я о т в е т с т в е н н о с т и х о з я е в з а п о ­
ведение пьяных гостей.
Запро . host! / р е p o n s i b ! liab!) / р (intoxicat! d r u n k ! ) / р guest
Обратите внимание н а длинный и точный запрос и использование операторов близо­
сти, н е х а р а к т е р н ы х д л я веба. В с р е д н е м п р е д ъ я в л я е м ы е з а п р о с ы с о с т о я т и з д е с я т и с л о в .
В отличие о т правил, установленных в вебе, пробелы м е ж д у словами представляют со­
бой дизъюнкцию (оператор с наибольшим приоритетом), символ & означает оператор
A N D , а символы /s, /р и /к устанавливают поиск совпадений в одном и том ж е предложе­
н и и , в а б з а ц е и л и в о к р е с т н о с т и к с л о в с о о т в е т с т в е н н о . Д в о й н ы е к а в ы ч к и о з н а ч а ю т фра­
зовый поиск (phrase search), т.е. п о и с к п о с л е д о в а т е л ь н ы х с л о в (см. р а з д е л 2.4). З н а к в о с ­
к л и ц а н и я (!) п р е д с т а в л я е т с о б о й з а м ы к а ю щ и й д ж о к е р (см. р а з д е л 3.2); т а к и м о б р а з о м ,
с л о в о liab! с о о т в е т с т в у е т в с е м с л о в а м , н а ч и н а ю щ и м с я б у к в а м и liab. С л о в а work-site со­
о т в е т с т в у ю т л ю б о м у варианту: worksite, work-site и work site (см. р а з д е л 2.2.1). Т и п и ч н ы й
запрос э к с п е р т а о б ы ч н о т щ а т е л ь н о ф о р м у л и р у е т с я и п о с т е п е н н о у т о ч н я е т с я , п о к а н е
приведет к ж е л а е м о м у результату.
Многие пользователи, особенно профессионалы, предпочитают использовать булевы
з а п р о с ы . Т а к и е з а п р о с ы о т л и ч а ю т с я т о ч н о с т ь ю : д о к у м е н т л и б о у д о в л е т в о р я е т запросу,
либо не удовлетворяет. Э т о дает пользователю больше возможностей д л я контроля и
обеспечивает прозрачность результатов. Некоторые области знаний, такие как юриспру­
денция, д о п у с к а ю т э ф ф е к т и в н о е р а н ж и р о в а н и е документов в рамках булевой модели:
система Westlaw возвращает документы в о б р а т н о м х р о н о л о г и ч е с к о м порядке, ч т о на
практике достаточно эффективно. В 2007 г о д у б о л ь ш и н с т в о б и б л и о т е к а р е й , р а б о т а ю щ и х с
юридической литературой, продолжали рекомендовать использовать термины и логиче­
ские о п е р а ц и и д л я п о и с к а с в ы с о к о й п о л н о т о й , а б о л ь ш и н с т в о п о л ь з о в а т е л е й и н ф о р м а ­
ционно-правовых систем считают, что они получают с их помощью больший контроль
н а д с и с т е м о й . О д н а к о это н е з н а ч и т , ч т о б у л е в ы з а п р о с ы б о л е е э ф ф е к т и в н ы д л я л ю д е й ,
которые профессионально занимаются поиском. Н а самом деле, экспериментируя с ча­
с т ь ю коллекции д о к у м е н т о в в системе Westlaw, Т е р т а (Turtle, 1994) выяснил, ч т о в боль­
шинстве с л у ч а е в с в о б о д н ы е т е к с т о в ы е з а п р о с ы п р и в о д я т к л у ч ш и м р е з у л ь т а т а м , ч е м бу­
левы $апросы, п о д г о т о в л е н н ы е п р о ф е с с и о н а л ь н ы м и б и б л и о т е к а р я м и — с о т р у д н и к а м и
Westlaw, для информационных потребностей в рамках эксперимента. Общая проблема,
связанная с б у л е в ы м и з а п р о с а м и , з а к л ю ч а е т с я в т о м , ч т о и с п о л ь з о в а н и е о п е р а т о р а AND
п о в ы ш а е т т о ч н о с т ь з а п р о с а , н о п о н и ж а е т п о л н о т у п о и с к а , в т о в р е м я к а к о п е р а т о р OR
снижает точность, н о повышает полноту поиска, а компромисс между ними найти очень
трудно или даже невозможно.
В этой главе м ы изучили структуру и процесс создания базового инвертированного
индекса, в к л ю ч а я с л о в а р ь и с п и с к и с л о в о п о з и ц и й . М ы в в е л и м о д е л ь б у л е в а п о и с к а и
рассмотрели, к а к осуществить эффективный поиск на основе алгоритмов слияния с ли­
н е й н о й с л о ж н о с т ь ю и п р о с т о й о п т и м и з а ц и е й з а п р о с о в . В главах 2 - 7 м ы п о д р о б н е е р а с ­
смотрим более сложные модели запросов и более сложные структуры индекса, необхо­
димые для эффективной обработки таких запросов. Здесь ж е м ы просто перечислим не­
которые свои пожелания.

1. М ы х о т е л и б ы л у ч ш е о п р е д е л я т ь н а б о р т е р м и н о в в с л о в а р е и о с у щ е с т в л я т ь п о ­
иск, м а л о ч у в с т в и т е л ь н ы й к о п е ч а т к а м и н е ч е т к о м у в ы б о р у с л о в .
2. Ч а с т о х о т е л о с ь б ы и м е т ь в о з м о ж н о с т ь н а х о д и т ь с л о ж н о с о с т а в н ы е с л о в а и л и ф р а ­
з ы , о б о з н а ч а ю щ и е к а к о е - т о п о н я т и е , н а п р и м е р "операционная система". К а к
свидетельствуют примеры, связанные с системой Westlaw, хотелось б ы также
иметь возможность формулировать запросы о близости терминов, например
Gates NEAR Microsoft. Д л я о т в е т а н а т а к и е з а п р о с ы и н д е к с д о л ж е н б ы т ь с у щ е ­
ственно дополнен, чтобы отражать в какой-то форме близость между терминами
в документе.
3. М о д е л ь булева поиска позволяет л и ш ь определить наличие или отсутствие термина,
н о часто хотелось б ы использовать б о л ь ш е д о с т у п н о й н а м и н ф о р м а ц и и , например,
м ы м о г л и б ы присваивать б о л ь ш и й вес д о к у м е н т а м , в к о т о р ы х т е р м и н встречается
несколько раз, и м е н ь ш и й вес — д о к у м е н т а м , в к о т о р ы х т е р м и н встречается л и ш ь
о д н а ж д ы . Д л я этого в с п и с о к словопозиций н е о б х о д и м о ввести и н ф о р м а ц и ю о час­
тоте термина, т.е. о количестве появлений т е р м и н а в документе.
4. В о т в е т н а б у л е в ы з а п р о с ы п р о с т о в о з в р а щ а е т с я ( н е у п о р я д о ч е н н о е ) м н о ж е с т в о
документов, но обычно нам необходим эффективный метод, позволяющий упо­
р я д о ч и т ь (ранжировать) результаты поиска. Д л я этого нужен механизм опреде­
ления ранга документа, который включал б ы в себя степень соответствия доку­
м е н т а запросу.
М ы увидим далее, ч т о эти несколько идей, дополняющих и р а с ш и р я ю щ и х булеву м о ­
дель, составляют технологическую основу любого поиска произвольных запросов в мас­
сивах неструктурированной информации. Поиск п о произвольному запросу среди доку­
м е н т о в н е д а в н о з а в о е в а л м и р ; о н н е т о л ь к о б ы л р е а л и з о в а н в п о и с к о в ы х с и с т е м а х веба,
но и л е г в о с н о в у п о и с к а н а к р у п н ы х в е б - с а й т а х э л е к т р о н н о й т о р г о в л и . Н е с м о т р я н а т о
что п о и с к о в ы е с и с т е м ы в е б а д е л а ю т а к ц е н т н а о б р а б о т к е с в о б о д н ы х т е к с т о в ы х з а п р о с о в ,
базовые механизмы и технологии индексации и обработки запросов принципиально не
отличаются от изложенных в этой главе, к а к м ы увидим далее. Более того, с течением
времени поисковые системы веба включили в себя частичную реализацию некоторых
наиболее популярных операторов из расширенной булевой модели (особенно популярен
поиск фраз). Большинство поисковых систем имеет частичную реализацию логических
о п е р а т о р о в . Т е м н е м е н е е , н е с м о т р я н а т о ч т о эти о п ц и и о ч е н ь нравятся
"профессионалам поиска", о н и мало используются большинством пользователей и не
принадлежат к основным методам повышения эффективности работы поисковых веб-
систем.

*Р Упражнение 1.12 [*]. Н а п и ш и т е з а п р о с , и с п о л ь з у я с и н т а к с и с с и с т е м ы W e s t l a w , и


• н а й д и т е с л о в а professor, teacher и lecturer, в х о д я щ и е в о д н о и т о ж е п р е д л о ж е н и е
в м е с т е с л ю б о й ф о р м о й с л о в а explain.

Упражнение 1.13 [*]. И с п ы т а й т е о с н о в н ы е м е х а н и з м ы б у л е в а п о и с к а в наиболее


р а с п р о с т р а н е н н ы х п о и с к о в ы х в е б - с и с т е м а х . Н а п р и м е р , в ы б е р и т е с л о в о burlgar и
з а д а й т е з а п р о с ы ( 1 ) burlgar, (2) burlgar AND burglar и (3) burglar OR burglar.
Просмотрите примерное количество результатов и ответы, расположенные в на­
чале списка. Соответствуют л и о н и логике запроса? Довольно часто ответ на этот
вопрос оказывается отрицательным. Можете л и в ы предположить, почему это
происходит? А что произойдет, если поискать другие слова? Попробуйте предста­
в и т ь д р у г о й з а п р о с , н а п р и м е р ( 1 ) knight, (2) conquer и (3) knight OR conquer.
К а к а я связь с у щ е с т в у е т м е ж д у р е з у л ь т а т а м и о б р а б о т к и д в у х п е р в ы х з а п р о с о в и
третьего запроса? Обнаруживается л и эта связь?

1.5. Библиография и рекомендации для дальнейшего


чтения
Практические исследования поиска компьютеризированной информации начались в
к о н ц е 1940-х г о д о в (Cleverdon, 1 9 9 1 ; Liddy, 2 0 0 5 ) . О г р о м н ы й о б ъ е м н а у ч н о й л и т е р а т у р ы ,
часто представленной в виде менее формальных технических отчетов, а н е традицион­
ных журнальных статей, а также возросшая доступность компьютеров, повысили инте­
рес к автоматизированному поиску документов. Однако в т о время поиск документов
выполнялся п о фамилии автора, заглавию и ключевым словам; полнотекстовый поиск
появился позднее.
П р и в л е к а т е л ь н о с т ь этой области и с с л е д о в а н и й б ы л а о б о с н о в а н а в статье Б у ш а (Bush),
о п у б л и к о в а н н о й в 1945 году.

Представим себе будущее устройство для индивидуального пользования, похожее


на личный архив или библиотеку. Назовем его "memex". Н а этом устройстве чело­
в е к с м о ж е т х р а н и т ь все с в о и к н и г и , з а п и с и и п и с ь м а и к о н с у л ь т и р о в а т ь с я с н и м с
необыкновенной гибкостью и скоростью. Это расширенная память человека.

Т е р м и н и н ф о р м а ц и о н н ы й п о и с к (information retrieval) б ы л в в е д е н К е л ь в и н о м М у е р -
с о м (Calvin M o o e r s ) в 1 9 4 8 - 1 9 5 0 г о д ы ( M o o e r s , 1950).
В 1958 году г а з е т ы облетела н о в о с т ь о д е м о н с т р а ц и и н а к о н ф е р е н ц и и м а ш и н ы д л я а в ­
т о м а т и ч е с к о й индексации, созданной к о м п а н и е й ГВМ (Taube and Wooster, 1958). В о с н о в у
этой м а ш и н ы б ы л и п о л о ж е н ы р а б о т ы X . Л у н а ( Н . Р . L u h n ) . К о м м е р ч е с к и й и н т е р е с б ы с т р о
п р и в е л к п о я в л е н и ю систем булева поиска, н о в п е р в ы е г о д ы в о к р у г и с п о л ь з у е м ы х т е х н о -
тогий велись б у р н ы е дискуссии. Н а п р и м е р , в 1961 году М у е р с писал с л е д у ю щ е е .

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


с т и ц и я м и в р а з н ы е а п п а р а т н ы е п о и с к о в ы е у с т р о й с т в а , з а к л ю ч а е т с я в т о м , ч т о ал­
гебра Д ж о р д ж а Буля (1847) является приемлемым формализмом для разработки
поисковых систем. Эта точка зрения столь ж е общепринята, сколь и ошибочна.

Исследование операторов AND и O R емонстрирующее противоречия, а не компро­


м и с с м е ж д у т о ч н о с т ь ю и п о л н о т о й , м о ж н о н а й т и в р а б о т е Л и и Ф о к с а (Lee and F o x , 1988).
К н и г а У и т т е н а и др. (Witten et al., 1999 п р е д с т а в л я е т с о б о й с т а н д а р т н ы й с п р а в о ч н и к ,
в к о т о р о м п р о в е д е н о г л у б о к о е с р а в н е н и е и н в е р т и р о в а н н о г о и н д е к с а с д р у г и м и структу­
рами данных как с точки зрения памяти, так и с точки зрения скорости работы; книга
Ц о б е л я и М о ф ф а т а (Zobel a n d Moffat, 2 0 0 6 ) — б о л е е к р а т к а я и с о в р е м е н н а я п у б л и к а ц и я
н а э т у т е м у . Э т и в о п р о с ы м ы р а с с м о т р и м в г л а в е 5.
Практические аспекты использования регулярных выражений для поиска рассмотре­
н ы в р а б о т е Ф р и д л а (Friedl, 2006У Т е о р е т и ч е с к и е а с п е к т ы этих п р о б л е м и з л о ж е н ы в книге
Х о п к р о ф т а и д р . (Hopcroft et al., 2 0 0 0 ) .
Глава 2

Лексикон и списки словопозиций

Н а п о м н и м о с н о в н ы е этапы п о с т р о е н и я и н в е р т и р о в а н н о г о и н д е к с а .
1. С о б и р а е м д о к у м е н т ы , п о д л е ж а щ и е и н д е к с и р о в а н и ю .
2. Р а з б и в а е м т е к с т н а л е к с е м ы .
3. Выполняем предварительную лингвистическую обработку лексем.
4. Индексируем документы п о каждому термину.

В этой г л а в е м ы с н а ч а л а к р а т к о о п и ш е м , к а к о п р е д е л и т ь о с н о в н ы е е д и н и ц ы д о к у м е н ­
та и о б н а р у ж и т ь п о с л е д о в а т е л ь н о с т ь с и м в о л о в , к о т о р ы е в н е м с о д е р ж а т с я ( р а з д е л 2.1).
После этого м ы подробно исследуем несколько важных тем, связанных с выделением
лексем и предварительной лингвистической обработкой, в результате которой возникает
л е к с и к о н т е р м и н о в , и с п о л ь з у е м ы й с и с т е м о й ( р а з д е л 2 . 2 ) . Выделение лексем (tokeniza-
tion) — э т о п р о ц е с с р а з д е л е н и я п о т о к а с и м в о л о в н а л е к с е м ы . В х о д е п р е д в а р и т е л ь н о й
лингвистической обработки возникают классы эквивалентных лексем, образующие мно­
жество терминов, по которым происходит индексирование. Индексирование описано в
г л а в а х 1 и 4 . З а т е м р а с с м а т р и в а е т с я р е а л и з а ц и я и н в е р т и р о в а н н ы х с п и с к о в . В р а з д е л е 2.3
речь идет о расширенной структуре инвертированного списка, п о в ы ш а ю щ е й скорость
обработки запросов, а в разделе 2.4 — о построении структуры словопозиций, подходя­
щей для обработки фразовых запросов и запросов с указанием расстояния, которые час­
то в с т р е ч а ю т с я как в р а с ш и р е н н ы х б у л е в ы х м о д е л я х , т а к и в в е б е .

2 . 1 . Схематизация документа и декодирование


последовательности символов
2.1.1. Выделение последовательности символов в документе
Цифровые документы, являющиеся входной информацией для процесса индексиро­
вания, как правило, представляют собой набор байтов в файле и л и н а веб-сервере. Н а
первом этапе обработки эта последовательность байтов преобразуется в линейную п о ­
следовательность символов. Д л я английского текста, набранного в системе кодирования
ASCII, такая задача тривиальна. Однако часто задачи оказываются намного сложнее. П о ­
следовательность символов может быть закодирована в одной и з многих одно- или мно­
гобайтовых кодировок, например U N I C O D E UTF-8, а также в национальном стандарте
или в стандарте, зависящем от поставщика. Сначала необходимо определить правильную
кодировку. Эту проблему можно интерпретировать к а к задачу классификации на основе
м а ш и н н о г о о б у ч е н и я ( с м . главу 13 ' ) , н о н а п р а к т и к е е е ч а с т о р е ш а ю т с п о м о щ ь ю э в р и ­
стических м е т о д о в , в ы б о р а пользователя и л и и м е ю щ и х с я м е т а д а н н ы х о д о к у м е н т е . П о с л е
выявления кодировки последовательность байтов преобразуется в последовательность
символов. В ы б о р кодировки следует зафиксировать, поскольку это дает некоторое пред­
ставление о языке, на котором написан документ.
В о з м о ж н о , с и м в о л ы н у ж н о декодировать из двоичного представления, н а п р и м е р из
d o c - ф а й л а т е к с т о в о г о п р о ц е с с о р а Microsoft W o r d и / и л и а р х и в н ы х ф а й л о в н а п о д о б и е zip-
файлов. Следовательно, сначала необходимо определить формат документа, а затем вы­
брать соответствующий декодер. Д а ж е для простых текстовых документов может пона­
д о б и т ь с я д о п о л н и т е л ь н о е д е к о д и р о в а н и е . В X M L - д о к у м е н т а х ( р а з д е л 10.1) н е к о т о р ы е
символы, такие как & а т р ; , следует декодировать специально, так, чтобы в ы р а ж е н и ю
& а т р ; с о о т в е т с т в о в а л и м е н н о с и м в о л &, а н е ч т о - л и б о д р у г о е . В з а к л ю ч е н и е т е к с т о в у ю
часть д о к у м е н т а м о ж е т п о н а д о б и т ь с я о т д е л и т ь о т д р у г о г о м а т е р и а л а , к о т о р ы й н е п о д ­
вергается обработке. Это часто практикуется при обработке X M L - ф а й л о в , если требуется
п р о и г н о р и р о в а т ь р а з м е т к у , а т а к ж е п о ч т и в с е г д а п р и о б р а б о т к е postscript- и P D F - ф а й л о в .
Мы больше не будем возвращаться к этому вопросу в нашей книге и будем предпола­
гать, ч т о н а ш и д о к у м е н т ы п р е д с т а в л я ю т с о б о й с п и с к и с и м в о л о в . К о м м е р ч е с к и е п р о ­
граммы обычно поддерживают обработку широкого спектра форматов и кодировок до­
кументов, поскольку пользователи желают, чтобы программы работали с имеющимися
данными. Часто они трактуют документ как текст, п о м е щ е н н ы й в какую-то программу, и
совершенно не интересуются, как именно он записан на диск. Эта проблема обычно ре­
шается с п о м о щ ь ю лицензирования программных библиотек, обрабатывающих форматы
2
документов и кодировки.
Трактовка документа как линейной последовательности символов часто оказывается
неадекватной в некоторых системах письменности, например в арабских языках, в кото­
р ы х т е к с т я в л я е т с я д в у м е р н ы м и н е и м е е т с т р о г о г о п о р я д к а с л е д о в а н и я с и м в о л о в , как
п о к а з а н о н а р и с . 2.1 и 2 . 2 . О д н а к о , н е с м о т р я н а д о в о л ь н о с л о ж н ы е п р а в и л а п и с ь м а , т е к ­
с т у с о о т в е т с т в у е т п о с л е д о в а т е л ь н о с т ь з в у к о в и, т а к и м о б р а з о м , с о х р а н я е т с я п о с у щ е с т в у
л и н е й н а я с т р у к т у р а . И м е н н о э т о я в л е н и е п р о д е м о н с т р и р о в а н о н а р и с . 2.1 н а п р и м е р е
цифрового представления документа на современном арабском языке.

1
Классификатор — это функция, получающая объекты определенного вида и распределяющая
их по различным классам. Обычно классификация осуществляется с помощью методов машинного
обучения, например с помощью вероятностных моделей, но может быть реализована и на основе
эмпирических правил.
На практике системы веб-поиска сначала обрабатывают разные форматы файлов, а затем оп­
ределяют кодировку и язык. При обработке разных форматов возникает задача сохранения ин­
формации о разметке текста (заголовков, подзаголовков, списков, ссылок), которая часто содер­
жится в них (см. раздел 6.1). Еще один аспект — толерантность к ошибкам формата, например
к "супу тегов" ("tag soup"), описанному в черновике спецификации HTML5. При определении ко­
дировки стоит отметить связь этой задачи с определением языка, без предположений о котором
часто невозможно корректно определить кодировку. — Примеч. ред.
un b a t i к
/ k i t a b u n / 'книга'
Рис. 2.1. Пример озвученного слова в современном арабском языке. Запись выполни-
ется справа налево, а буквы сплетаются в сложные сочетания. Краткие гласные
(здесь — /U и /и/), а также финальная буква М (нунация) нарушают линейный по­
рядок следования и изображаются диакритическими символами выше и ниже
букв. Текст, даже в этом случае, - последовательная запись звуков. Полное озвучи­
вание, продемонстрированное здесь, обычно встречается только в Коране и в
детских книгах. Повседневные тексты либо не озвучиваются вообще (краткие
гласные не выделяются, хотя буква а по-прежнему встречается), либо озвучи­
вается частично, когда краткие гласные вставляются в те места, где может
возникнуть неоднозначность. Все это создает дополнительные сложности для
индексирования

jill J b M i j > Ur. 1 3 2 ли 1962

<- > <~ -> <— НАЧАЛО


"Алжир получил независимость в 1962 году после 132-летней французской оккупации"

Рис. 2.2. Концептуальный линейный порядок символов необязательно со­


ответствует порядку символов на странице. В языках с письмом справа
налево, например в иврите и арабском, встречается порядок следования
слева направо, например, при указании чисел и денежных единиц. В со-
временнЬй системе Unicode порядок символов в файле соответствует
концептуальному порядку, а обратный порядок представления символов
имитируется системой визуализации, хотя для документов, записанных
в старой системе кодирования, это правило может не выполняться

2.1.2. Выбор структурной единицы документа


Н а с л е д у ю щ е м э т а п е о п р е д е л я е т с я структурная единица документа ( d o c u m e n t unit)
для индексирования. Д о сих пор м ы предполагали, ч т о документы представляют собой
фиксированные единицы, предназначенные для индексирования. Например, м ы можем
рассматривать каждый файл в каталоге как документ. Однако в о многих ситуациях мо­
жет понадобиться сделать нечто иное. Например, в системе Unix (формат mbox) после­
довательность электронных сообщений (каталог писем) хранится в одном файле, н о в ы
можете пожелать работать с электронными сообщениями, как с отдельными документа­
ми. М н о г и е э л е к т р о н н ы е с о о б щ е н и я с о д е р ж а т п р и с о е д и н е н н ы е ф а й л ы , и в ы м о ж е т е с ч и ­
тать с о о б щ е н и е и к а ж д ы й п р и с о е д и н е н н ы й ф а й л о т д е л ь н ы м и д о к у м е н т а м и . Е с л и к э л е к ­
тронному сообщению присоединен архивный файл, т о в ы можете его распаковать и рас­
сматривать каждый файл, который в нем содержится, по отдельности. М о ж н о привести и
п р о т и в о п о л о ж н ы е п р и м е р ы Н е к о т о р ы е в е б - п р и л о ж е н и я ( т а к и е , к а к Iatex2html) р а б о т а ­
ют с единым документом (например, с файлом Powerpoint или документом LATEX) и
разделяют и х н а отдельные HTML-страницы для каждого слайда или подраздела, храня­
щегося в отдельных файлах. В этих ситуациях желательно объединить несколько файлов
в один документ.
Д л я о ч е н ь д л и н н ы х д о к у м е н т о в в о з н и к а е т п р о б л е м а детализации индексирования
(indexing granularity). Р а б о т а я с к о л л е к ц и е й к н и г , б ы л о б ы н е ц е л е с о о б р а з н о и н д е к с и р о ­
в а т ь в с ю к н и г у , к а к о т д е л ь н ы й д о к у м е н т . В э т о м с л у ч а е п о и с к ф р а з ы Chinese toys п р и ­
в е л б ы к т о м у , ч т о в о т в е т в ы п о л у ч и л и б ы к н и г у , в к о т о р о й с л о в о China в с т р е ч а е т с я
в п е р в о й г л а в е , а с л о в о toys — в п о с л е д н е й , ч т о б ы л о б ы н е у д о в л е т в о р и т е л ь н ы м р е з у л ь ­
татом. Вместо этого следовали б ы индексировать каждую главу или абзац как мини-
документ. В этом случае совпадения оказались б ы более релевантными, поскольку доку­
менты уменьшились б ы и пользователь быстрее находил б ы в них релевантные фрагмен­
ты. Однако почему на этом следует остановиться? М о ж н о было б ы рассматривать от­
дельные предложения как мини-документы. Очевидно, что в этом случае возникает про­
тиворечие между точностью и полнотой поиска. Если единицы разбиения слишком
маленькие, т о м ы м о ж е м пропустить важную и н ф о р м а ц и ю из-за того, что т е р м и н ы могут
быть распределены по разным мини-документам. Если ж е единицы разбиения слишком
велики, т о м ы чаще будем получать фиктивные совпадения и пользователю труднее най­
ти релевантную информацию.
Проблемы, возникающие при работе с большими документами, можно решить с по­
м о щ ь ю я в н о г о и л и н е я в н о г о поиска с учетом близости слов запроса в документе
(proximity search), о п и с а н н о г о в р а з д е л а х 2.4.2 и 7.2.2. В л и я н и е э т и х м е т о д о в п о и с к а н а
п р о и з в о д и т е л ь н о с т ь с и с т е м о б с у ж д а е т с я в г л а в е 8. П р о б л е м а д е т а л и з а ц и и и н д е к с а , в ч а ­
стности необходимость одновременной индексации документов н а разных уровнях дета­
лизации, ярко проявляется при поиске информации с помощью языка X M L . Эта пробле­
ма р а с с м а т р и в а е т с я в г л а в е 10. С и с т е м а и н ф о р м а ц и о н н о г о п о и с к а д о л ж н а п р е д о с т а в л я т ь
возможность выбора уровня детализации. Д л я того чтобы этот выбор б ы л правильным,
тот, кто внедряет э т у систему, должен иметь хорошее представление о коллекции доку­
ментов, а также о б информационных потребностях и привычках пользователей. Пока бу­
дем предполагать, что м ы выбрали элемент индексирования подходящего размера, а
также способ разделения или агрегации файлов, если это необходимо.

2.2. Определение лексикона терминов


2.2.1. Разделение текста на лексемы
После и д е н т и ф и к а ц и и п о с л е д о в а т е л ь н о с т и с и м в о л о в и в ы д е л е н и я с т р у к т у р н ы х е д и ­
н и ц д о к у м е н т а т е к с т р а з д е л я е т с я н а лексемы. К р о м е т о г о , и н о г д а и з н е г о о д н о в р е м е н н о
удаляют некоторые символы, например знаки пунктуации. Рассмотрим пример.

В в о д : F r i e n d s , R o m a n s , C o u n t r y m e n , lend m e y o u r e a r s

Вывод: Friends Romans Countrymen lend me your ears

Эти лексемы иногда ошибочно называют терминами или словами, н о иногда следует
ч е т к о о т л и ч а т ь к л а с с л е к с е м и э к з е м п л я р л е к с е м ы (type/token). Лексема (token) — э т о э к ­
земпляр последовательности символов в определенном документе, объединенных в се­
м а н т и ч е с к у ю е д и н и ц у д л я о б р а б о т к и . Тип (type) — э т о к л а с с всех л е к с е м , с о с т о я щ и х и з
о д н о й и т о й ж е п о с л е д о в а т е л ь н о с т и с и м в о л о в . Термин (term) — э т о ( в о з м о ж н о , н о р м а л и ­
зованный) тип, включенный в словарь системы информационного поиска. Множество
т е р м и н о в и н д е к с а м о ж е т п о л н о с т ь ю отличаться о т л е к с е м , к о т о р ы е , н а п р и м е р , могут б ы т ь
семантическими идентификаторами в иерархии, н о на практике в современных системах
информационного поиска они напрямую связаны с лексемами в документе. Однако тер­
мины - это н е лексемы в точно таком виде, в каком они встречаются в документе. Обыч­
н о к н и м п р и м е н я ю т р а з л и ч н ы е п р о ц е с с ы н о р м а л и з а ц и и , р а с с м а т р и в а е м ы е в разде­
3
л е 2 . 2 . 3 . Н а п р и м е р , е с л и и н д е к с и р у е м ы м д о к у м е н т о м я в л я е т с я ф р а з а to sleep perchance
to dream, т о с у щ е с т в у е т п я т ь л е к с е м , н о л и ш ь ч е т ы р е т и п а ( п о с к о л ь к у в э т у ф р а з у ч а с т и ­
ц а to в х о д и т д в а ж д ы ) . О д н а к о е с л и ч а с т и ц а to н е в к л ю ч е н а в и н д е к с (как с т о п - с л о в о ; с м
р а з д е л 2.2.2), т о о с т а н у т с я т о л ь к о т р и т е р м и н а : sleep, perchance и dream.
О с н о в н о й в о п р о с , с в я з а н н ы й с р а з д е л е н и е м т е к с т а н а л е к с е м ы , з в у ч и т так: " К а к п р а ­
вильно разделить текст на л е к с е м ы ? " В нашем примере ответ очевиден: достаточно раз­
делить текст п о пробелам и отбросить знаки пунктуации. Это отправная точка, но даже в
английском языке здесь таится много сложностей. Например, что делать с разными фор­
мами апострофа, используемого для образования притяжательной формы и сокращений.

M r . O ' N e i l l thinks that the b o y s ' stories about C h i l e ' s capital a r e n ' t a m u s i n g .

Какое и з следующих разбиений является правильным для имени O'Neill?

neili

oneill

o'neill
о' neill
о neill .

А д л я aren 7?

arent

are n't

aren t

С а м а я п р о с т а я стратегия сводится к р а з б и е н и ю п о н е б у к в е н н ы м с и м в о л а м , н о х о т я л е к с е м а

| о | neill |

в ы г л я д и т п р а в и л ь н о , и н т у и т и в н о о ч е в и д н о , что л е к с е м а

| агеп | t |
неверна. К а ж д ы й вариант определяет, каким булевым запросам будут найдены соответ­
с т в и я . З а п р о с у neill AND capital с о о т в е т с т в у ю т т р и в а р и а н т а и з п я т и . А с к о л ь к о р а з б ы л
б ы у д о в л е т в о р е н з а п р о с o'neill AND capital? Б е з п р е д в а р и т е л ь н о й о б р а б о т к и о н б у д е т
удовлетворен только в одном варианте из пяти. Как для булевых, так и для свободных

Иначе говоря, неиндексируемые лексемы (стоп-слова) — это не термины. Если после нор­
мализации несколько лексем "склеиваются", то они индексируются в нормализованной форме, как
один термин. Однако позднее, в главах 13-18, при обсуждении классификации и кластеризации, не
использующих индексирование, мы ослабим это определение. В этих главах мы отменим требова­
ние о включении в словарь. Термин — это нормализованное слово.
текстовых запросов желательно, чтобы разбиение н а лексемы запросов и документов
происходило одинаково. Д л я этого обработка запросов осуществляется с п о м о щ ь ю одно­
го и т о г о ж е л е к с и ч е с к о г о а н а л и з а т о р а . Э т о г а р а н т и р у е т , ч т о п о с л е д о в а т е л ь н о с т ь с и м в о ­
4
лов в тексте всегда совпадает с такой же последовательностью, набранной в з а п р о с е .
Эти проблемы существенно зависят о т языка. Следовательно, язык документа должен
быть известен р а н е е On еделение языка (language identification), о с н о в а н н о е н а клас­
сификаторах использующих в качестве признаков короткие подпоследовательности
символов, является очень эффективным. Большинство языков имеют отличительные ха­
рактерные черты (см. библиографию в конце главы).
В большинстве языков и конкретных предметных областей существуют необычные
специфические лексемы, которые следует распознавать, как термины: языки програм­
м и р о в а н и я С + + и С # , н а з в а н и я с а м о л е т о в , н а п р и м е р В-52, и л и т е л е ш о у , н а п р и м е р
M*A*S*H. Э т и с л о в а в о ш л и в к у л ь т у р н ы й к о н т е к с т , п о э т о м у в т е к с т а х м о ж н о в с т р е т и т ь
5
в ы р а ж е н и я M*A*S*H-style hospitals. Компьютерная технология породила новые типы
п о с л е д о в а т е л ь н о с т е й с и м в о л о в , к о т о р ы е с л е д у е т р а с п о з н а в а т ь , к а к о д н у л е к с е м у , в част­
н о с т и а д р е с а э л е к т р о н н о й п о ч т ы (jblack@mail.yahoo.com), в е б - а д р е с а ( U R L ) (http://
stuff.big.com/new/specials.html), ч и с л о в ы е I P - а д р е с а (142.32.48.231), н о м е р а д л я о т ­
с л е ж и в а н и я б а н д е р о л е й ( 1 Z 9 9 9 9 W 9 9 8 4 5 3 9 9 9 8 1 ) и т.д. М о ж н о б ы л о б ы о т к а з а т ь с я о т и н ­
дексирования таких лексем, как денежные суммы, числа и веб-адреса, поскольку их на­
личие существенно увеличивает размер лексикона. Однако это значительно снизило бы
п о л е з н о с т ь п о и с к о в ы х с и с т е м . Н а п р и м е р , л ю д и м о г у т и с к а т ь в базе д а н н ы х о ш и б о к н о ­
мер строки программы, в которой возникла проблема. Такие единицы текста, как даты и
электронные адреса, имеющие явный семантический тип, часто индексируются отдельно
как м е т а д а н н ы е д о к у м е н т а ( с м . р а з д е л 6.1)
В а н г л и й с к о м я з ы к е расстановка дефисов (hyphenation) и с п о л ь з у е т с я д л я р а з н ы х ц е ­
л е й : д л я р а з д е л е н и я гласных букв в с л о в а х (co-education), д л я объединения существи­
т е л ь н ы х в н а з в а н и я х (Hewlett-Packard), а т а к ж е д л я г р у п п и р о в а н и я с л о в (the hold-him-
back-and-drag-him-away maneuver). Легко видеть, ч т о первый пример нужно рассматри­
вать к а к о д н у л е к с е м у (на с а м о м д е л е э т о с л о в о а щ е :тся к а к coeducation), по­
следний следует разделить н а несколько слов, а второй пример остается неясным. Сле­
довательно, автоматическая обработка дефиса может оказаться сложной: можно либо
р а с с м а т р и в а т ь е е к а к з а д а ч у к л а с с и ф и к а ц и и , л и б о п р и м е н я т ь н е к и е э в р и с т и ч е с к и е пра­
вила, н а п р и м е р д о п у с к а т ь в т е р м и н а х т о л ь к о к о р о т к и е п р е ф и к с ы .
В принципе, разделение текста по пробелам приводит к разрыву слов, которые следо­
вало б ы р а с с м а т р и в а т ь к а к ц е л ь н ы е л е к с е м ы . Э т о ч а с т о п р о и с х о д и т с н а з в а н и я м и (San
Francisco, Los Angeles), а т а к ж е с ф р а з а м и , з а и м с т в о в а н н ы м и и з и н о с т р а н н ы х я з ы к о в (аи
fait), с л о ж н ы м и с л о в а м и , к о т о р ы е м о г у т з а п и с ы в а т ь с я к а к с п р о б е л а м и , т а к и с л и т н о
( н а п р и м е р , white space и whitespace). К с л о в а м с в н у т р е н н и м и п р о б е л а м и , к о т о р ы е сле­
довало б ы рассматривать как отдельную лексему, относятся телефонные номера

Для свободных текстовых запросов это очевидно. В случае логического поиска ситуация ус­
ложняется, так как соответствующий генератор лексем может и одно 'о слова запроса порождать
несколько терминов. Решить эту проблему можно, объединив термы с помощью оператора AND
или создав фразовый запрос (см. раздел 2.4). Намного сложнее для системы решить противопо­
ложную задачу, когда пользователь вводит два терма, в то время как соответствующие слова в
процессе разделения текста на лексемы были объединены в одну лексему.
5
Речь идет о культовой американской кинокомедии Роберта Олтмена "MASH" (1970), которая на
отечественном телевидении шла под названием "Военно-полевой госпиталь MASH". — Примеч. ред.
(800)-234-2333) и д а т ы (Маг 11,1983). Р а з д е л е н и е л е к с е м п о п р о б е л а м м о ж е т п р и в е с т и
к н е в е р н ы м р е з у л ь т а т а м п о и с к а . Н а п р и м е р , п р и о б р а б о т к е з а п р о с а York University в о с ­
н о в н о м в о з в р а щ а ю т с я д о к у м е н т ы , с о д е р ж а щ и е с л о в о с о ч е т а н и е New York University.
Проблемы, связанные с дефисом и неразделяющими пробелами, могут оказаться взаи­
мосвязанными. Например, реклама авиационных перелетов часто содержит слова
San Francisco-Los Angeles. С о в е р ш е н н о о ч е в и д н о , ч т о в э т о м с л у ч а е р а з д е л е н и е п о п р о ­
белам приведет к неправильным результатам. В подобных ситуациях проблемы выделе­
ния лексем пересекаются с проблемами обработки запросов н а поиск фраз (см. раз­
д е л 2.4), в ч а с т н о с т и , е с л и б ы м ы п о т р е б о в а л и , ч т о б ы з а п р о с ы н а п о и с к с л о в lowercase,
lower-case и lower case п р и в о д и л и к о д и н а к о в ы м р е з у л ь т а т а м . П о с л е д н и е д в а з а п р о с а
можно было б ы обработать, проведя разделение лексем п о дефисам и использовав фра­
зовый индекс. Для того чтобы получить правильный ответ при обработке первого запро­
са, н е о б х о д и м о з н а т ь , ч т о э т о с л о ж н о е с л о в о , с о с т о я щ е е и з д в у х с л о в , и и н д е к с и р о в а т ь
его с у ч е т о м э т о й и н ф о р м а ц и и . О д н а и з э ф ф е к т и в н ы х и п р а к т и ч н ы х с т р а т е г и й , р е а л и з о ­
ванных в с и с т е м а х б у л е в а п о и с к а W e s t l a w и L e x i s - N e x i s ( п р и м е р 1.1), з а к л ю ч а е т с я в т о м ,
чтобы п о о щ р я т ь п о л ь з о в а т е л е й в в о д и т ь д е ф и с ы в о в с е х с л у ч а я х , г д е о н и м о г у т в с т р е ­
титься. Е с л и з а п р о с с о д е р ж и т д е ф и с , т о э т и с и с т е м ы о б о б щ а ю т его т а к , ч т о б ы о х в а т и т ь
все т р и в а р и а н т а : с д е ф и с о м , с л и т н о и р а з д е л ь н о , т а к ч т о з а п р о с over-eager п р е о б р а з у ­
ется в ф о р м у over-eager OR "over eager" OR overeager. О д н а к о э т а с т р а т е г и я т р е б у е т
обучения пользователей; если пользователь введет одну и з двух остальных форм запро­
са, т о о б о б щ е н и е п р о в о д и т ь с я н е б у д е т .

Каждый новый язык порождает новые проб е Например, в французском языке


а п о с т р о ф м о ж е т использоваться д л я с о к р а щ е н и я о п р е д е л е н н о г о а р т и к л я п е р е д с л о в о м , на­
ч и н а ю щ и м с я с г л а с н о г о звука ( н а п р и м е р , Vensemble). Кроме того, в французском языке
6
д е ф и с м о ж е т использоваться в к л и т и ч е с к и х м е с т о и м е н и я х , р а с п о л о ж е н н ы х п о с л е сущест­
в и т е л ь н о г о в и м п е р а т и в н ы х и в о п р о с и т е л ь н ы х п р е д л о ж е н и я х ( н а п р и м е р , donne-moi —
"дай мне"). Правильная обработка первого случая приводит к корректному индексирова­
н и ю б о л ь ш о г о к о л и ч е с т в а с у щ е с т в и т е л ь н ы х и п р и л а г а т е л ь н ы х , т.е. к т р е б о в а н и ю , ч т о б ы
с л о в а Vensemble и ип ensemble и н д е к с и р о в а л и с ь т е р м и н о м ensemble. Другие языки
п о р о ж д а ю т е щ е б о л е е с л о ж н ы е п р о б л е м ы . Т а к , в н е м е ц к о м я з ы к е сложные слова
з а п и с ы в а ю т с я с л и т н о ( н а п р и м е р , Computerlinguistik — "компьютерная лингвистика";
Lebensversicherungsgesellschaftsangestellter— "сотрудник общества по страхованию
жизни"). Ч т о б ы повысить эффективность работы поисковых систем для немецкого язы­
ка, и с п о л ь з у е т с я м о д у л ь , р а з б и в а ю щ и й с л о ж н ы е с л о в а н а н е с к о л ь к о с о с т а в н ы х ч а с т е й
( c o m p o u n d splitter). Н а и б о л е е я р к о э т о т э ф ф е к т п р о я в л я е т с я в в о с т о ч н о - а з и а т с к и х я з ы к а х
(например, в китайском, японском, корейском и тайском): в них вообще нет пробелов.
Соответствующий пример приведен на рис. 2.3. Д л я решения этой проблемы можно бы­
л о б ы н а э т а п е п р е д в а р и т е л ь н о й л и н г в и с т и ч е с к о й о б р а б о т к и п р о в е с т и сегментацию на
слова ( w o r d s e g m e n t a t i o n ) . М е т о д ы с е г м е н т а ц и и н а с л о в а в е с ь м а р а з н о о б р а з н ы : о т и с ­
пользования б о л ь ш о г о л е к с и к о н а ( в ы п о л н я е т с я п о и с к с а м о й д л и н н о й последовательности,
представленной в лексиконе, дополнительно используются эвристики д л я незнакомых
с л о в ) д о и с п о л ь з о в а н и я м е т о д о в м а ш и н н о г о о б у ч е н и я , таких к а к с к р ы т ы е м а р к о в с к и е
м о д е л и и л и условные случайные поля ( C R F ) , о б у ч е н н ы е н а о с н о в е с л о в , в ы д е л е н н ы х
в р у ч н у ю (см. с с ы л к и в р а з д е л е 2.5). И з - з а н е о д н о з н а ч н о с т и с е г м е н т а ц и и п о с л е д о в а т е л ь -

Клитика это безударное слово, которое при произнесении сливается с соседним словом. —
Примеч. ред.
н о с т е й с и м в о л о в ( р и с . 2.4) в с е э т и м е т о д ы и н о г а п о р о ж д а ю т о ш и б к и и п о э т о м у н е м о ­
гут г а р а н т и р о в а т ь н е п р о т и в о р е ч и в о е и о д н о з н а ч н о е р а з б и е н и е н а л е к с е м ы . А л ь т е р н а ­
тивный метод основан н а отказе о т индексирования слов и переходе к индексированию
коротких подпоследовательностей символов независимо от того, пересекают л и эти под­
п о с л е д о в а т е л ь н о с т и г р а н и ц ы с л о в . В п о л ь з у э т о г о п о д х о д а м о ж н о в ы с к а з а т ь т р и довода»
символы китайского языка представляют собой скорее слоги, ч е м буквы, и обычно
и м е ю т с е м а н т и ч е с к о е с о д е р ж а н и е ; б о л ь ш и н с т в о с л о в я в л я ю т с я к о р о т к и м и ( ч а щ е всего
с л о в о с о с т о и т и з д в у х с и м в о л о в ) и, с у ч е т о м о т с у т с т в и я с т а н д а р т а р а з б и е н и я с л о в в р а з ­
н ы х с и с т е м а х п и с ь м е н н о с т и , н е в с е г д а я с н о , г д е р а с п о л о ж е н ы г р а н и ц ы с л о в . Д а ж е в анг­
лийском языке границы некоторых слов определяются в соответствии с орфографиче­
с к и м и с о г л а ш е н и я м и ( н а п р и м е р , notwithstandin поп tt mention, и into, н о on to), одна­
ко в процессе обучения л ю д и привыкают писать слова так, как принято.

э в, шшшш&ттт- - ш ё ш т i

Рис. 2.3. Стандартная несегментированная форма текста на китайском языке, в


которой использованы упрощенные иероглифы континентального, диалекта. Ме­
жду словами и даже между предложениями нет никаких разделителей — явный
символ пробела после символа конца предложения (°) является всего лишь типо­
графской иллюзией, вызванной размещением этого символа слева от его квадрат­
ной рамки. Первое предложение — это просто набор китайских слов, не разде­
ленных пробелами. Второе и третье предложения включают арабские цифры и
знаки пунктуации

Рис. 2.4. Неоднозначность выделения китайских слов. Эти два


символа могут означать одно слово "монах" или два слова, оз­
начающие "и

2.2.2. Игнорирование распространенных термининов: стоп-слова


Иногда некоторые очень распространенные слова, н е представляющие ценности для
удовлетворения информационных потребностей пользователей, вообще исключаются из
л е к с и к о н а . О н и н а з ы в а ю т с я стоп-словами (stop-words). К а к п р а в и л о , д л я с о з д а н и я с п и ­
сков с т о п - с л о в т е р м и н ы у п о р я д о ч и в а ю т с я п о частоте в коллекции ( к о т о р а я р а в н а о б щ е ­
му количеству повторений термина в коллекции документов), а затем наиболее часто
встречающиеся термины, часто отфильтрованные вручную с учетом и х семантической
с в я з и с п р е д м е т н о й о б л а с т ь ю и н д е к с и р у е м ы х д о к у м е н т о в , в к л ю ч а ю т с я в список стоп-
слов (stop-list), э л е м е н т ы к о т о р о г о п р и и н д е к с и р о в а н и и о т б р а с ы в а ю т с я . П р и м е р с п и с к а
стоп-слов приведен н а рис. 2.5. Списки стоп-слов существенно сокращают количество
позиций, которые должны храниться в системе; некоторые статистические показатели по
э т о й т е м е б у д у т п р и в е д е н ы в г л а в е 5 ( с м . т а б л . 5.1). В б о л ь ш и н с т в е с л у ч а е в и г н о р и р о в а ­
н и е с т о п - с л о в п р и и н д е к с и р о в а н и и н е в ы з ы в а е т п р о б л е м : п о и с к п о к л ю ч е в ы м с л о в а м на­
п о д о б и е the и by в р я д л и м о ж н о н а з в а т ь о ч е н ь п о л е з н ы м . О д н а к о п р и п о и с к е ф р а з э т о н е
так. З а п р о с н а п о и с к ф р а з ы President of the United States, с о д е р ж а щ е й д в а с т о п - с л о в а
точнее, ч е м з а п р о с President AND "United States". С м ы с л ф р а з ы flights to London, с к о ­
р е е в с е г о , б у д е т п о т е р я н , е с л и в ы б р о с и т ь и з н е г о с т о п - с л о в о to П о и с к с т а т ь и В а н н е в а р а
Б у ш а ( V a n n e v a r B u s h ) As we may think б ы л б ы в е с ь м а з а т р у д н е н , е с л и б ы п е р в ы е т р и с л о ­
ва б ы л и п р о и г н о р и р о в а н ы , а с и с т е м а п р о с т о и с к а л а б ы д о к у м е н т ы , с о д е р ж а щ и е с л о в о
think. О д н и т и п ы з а п р о с о в п о с т р а д а л и б ы б о л ь ш е д р у г и х . Н е к о т о р ы е н а з в а н и я п е с е н и
х о р о ш о и з в е с т н ы е о т р ы в к и с т и х о т в о р е н и й ц е л и к о м с о с т о я т и з с т о п - с л о в ( Т о be or not to
be, Let it be, I don't want to be,...)

a an and are as at be by for from


has he in is it its of on that the
to was were will with

Рис. 2.5. Список из 25 стоп-слов, не имеющих семантического значения, но


часто встречающихся в коллекции Reuters-RCVl

Со временем длина списков запретных слов в системах информационного поиска со­


кратилась с 2 0 0 - 3 0 0 д о 7 - 1 2 , а в н е к о т о р ы х с и с т е м а х о т н и х в о о б щ е отказались. Н а п р и м е р ,
в п о и с к о в ы х в е б - с и с т е м а х с п и с к и стоп-слов о б ы ч н о н е и с п о л ь з у ю т с я . Р а з р а б о т ч и к и неко­
т о р ы х с о в р е м е н н ы х и н ф о р м а ц и о н н о - п о и с к о в ы х систем с о с р е д о т о ч и л и свое в н и м а н и е на
использовании статистических характеристик я з ы к а , ч т о б ы н а и б о л е е э ф ф е к т и в н о обраба­
т ы в а т ь с а м ы е р а с п р о с т р а н е н н ы е слова. В р а з д е л е 5.3 б у д е т показано, к а к снизить стои­
мость х р а н е н и я п о з и ц и й д л я р а с п р о с т р а н е н н ы х с л о в с п о м о щ ь ю э ф ф е к т и в н ы х м е т о д о в
с ж а т и я . В р а з д е л е 6.2.1 о б с у ж д а е т с я с т а н д а р т н ы й м е т о д в з в е ш и в а н и я т е р м и н о в , п о з в о ­
л я ю щ и й снизить влияние слишком часто употребляемых слов на ранжирование доку­
ментов. В заключение, в разделе 7.1.5, м ы покажем, как системы информационного по­
и с к а с и н д е к с а м и , у п о р я д о ч е н н ы м и п о в а ж н о с т и , м о г у т п р е р в а т ь п р о х о д п о инвертирован­
ному списку, если веса становятся н е б о л ь ш и м и Это з н а ч т , что часто в с т р е ч а ю щ и е с я
слова не д о б а в л я ю т с у щ е с т в е н н о й нагрузки п р и о б р а б о т к е среднестатистических з а п р о с о в ,
хотя и н в е р т и р о в а н н ы е списки д л я стоп-слов о ч е н ь д л и н н ы е . Д л я с и с т е м и н ф о р м а ц и о н н о г о
поиска последнего времени дополнительная стоимость включения стоп-слов невелика ни
7
с точки зрения размера индекса, ни с точки зрения времени обработки запросов .

2.2.3. Нормализация (классификация терминов по классам


эквивалентности)
Д о п у с т и м , что в а ш д о к у м е н т и з а п р о с у ж е р а з д е л е н ы н а л е к с е м ы . В п р о с т е й ш е м слу­
чае лексемы в запросе точно совпадают с лексемами в документе. Однако очень часто
две последовательности символов не совпадают в точности, но считаются эквивалент­
н ы м и . Н а п р и м е р , е с л и в ы и щ е т е с л о в о USA. т о . в о з м о ж н о , х о т е л и б ы т а к ж е в и д е т ь д о к у ­
м е н т ы , с о д е р ж а щ и е а б б р е в и а т у р у U.S.A.
Нормализация лексем (token normalization) — э т о п р о ц е с с п р и в е д е н и я л е к с е м к к а н о ­
нической форме, чтобы устранить несущественные различия между последовательно­
8
стями с и м в о л о в . С а м ы й распространенный способ нормализации заключается в неяв­
н о м с о з д а н и и классов эквивалентности (equivalence classes), к о т о р ы е о б ы ч н о н а з ы в а ю т ­
ся по и м е н и о д н о г о из их ч л е н о в . Н а п р и м е р , если в тексте д о к у м е н т а и запросах

7
В частности, одним из практических подходов к обработке стоп-слов, является подход, при
котором система старается игнорировать стоп-слова везде, если они не расположены рядом с дру­
гими словами запроса. — Примеч. ред.
8
Этот процесс часто называют нормализацией терминов, однако мы предпочитаем зарезерви­
ровать слово термин за результатом процесса нормализации.
л е к с е м а м anti-discriminatory и antidiscriminatory с т а в и т с я в с о о т в е т с т в и е т е р м и н antidis-
criminatory, т о в х о д е п о и с к а о д н о г о т е р м и н а о б я з а т е л ь н о б у д у т в ы я в л е н ы д о к у м е н т ы ,
в которых встречается и другой
П р е и м у щ е с т в о и с п о л ь з о в а н и я п р а в и л о т о б р а ж е н и я , к о т о р ы е , скажем, у д а л я ю т симво­
л ы , н а п р и м е р д е ф и с , проявляется в т о м , ч т о классы э к в и в а л е н т н о с т и в о з н и к а ю т неявно, а
не в ы ч и с л я ю т с я заранее: т е р м и н ы , к о т о р ы е в результате п р и м е н е н и я этих п р а в и л становят­
ся и д е н т и ч н ы м и , относятся к о д н о м у и т о м у ж е классу эквивалентности. Н е с м о т р я н а т о
что п р а в и л а удаления с и м в о л о в и з л е к с е м написать о т н о с и т е л ь н о легко, о б р а т н а я задача
является д о в о л ь н о с л о ж н о й . П о с к о л ь к у классы э к в и в а л е н т н о с т и в о з н и к а ю т неявно, совер­
ш е н н о неясно, куда с л е д о в а л о б ы вставить н е д о с т а ю щ и е с и м в о л ы . Н а п р и м е р , трудно п о ­
нять, как превратить слово antidiscriminatory в слово anti-discriminatory.
Альтернативный метол создания классов эквивалентности основан на поддержании
связей между ненормализованными лексемами. О н может использовать списки синони­
м о в , с о с т а в л е н н ы х в р у ч н у ю , н а п р и м е р с п и с к и , с о д е р ж а щ и е с л о в а саг и automobile. Э т у
тему м ы рассмотрим в главе 9. Зависимости между терминами м о ж н о создать двумя спо­
с о б а м и . О б ы ч н о с н а ч а л а в ы п о л н я е т с я и н д е к с и р о в а н и е н е н о р м а л и з о в а н н ы х л е к с е м , а за­
тем д л я конкретного термина и з запроса создается список расширенных запросов, со­
стоящий из нескольких вариантов соответствующего термина, включенных в лексикон.
В этом случае термин запроса является результатом дизъюнкции нескольких инвертиро­
ванных списков. В качестве альтернативы расширение можно выполнять в ходе по­
с т р о е н и я и н д е к с а . Е с л и д о к у м е н т с о д е р ж и т с л о в о automobile, м ы его и н д е к с и р у е м в т о м
ч и с л е и т е р м и н о м саг (и, к а к п р а в и л о , н а о б о р о т ) . И с п о л ь з о в а н и е к а ж д о г о и з э т и х м е т о ­
дов менее эффективно, чем создание классов эквивалентности, поскольку в этих случаях
приходится хранить и объединять большее количество позиций. П е р в ы й метод преду­
сматривает создание дополнительного словаря для расширения запросов и увеличивает
в р е м я и х о б р а б о т к и , в т о в р е м я как в т о р о й м е т о д требует б о л ь ш е пространства д л я х р а н е ­
ния позиций. Т р а д и ц и о н н о д о п о л н и т е л ь н ы е т р е б о в а н и я к о б ъ е м у памяти, н е о б х о д и м о й для
х р а н е н и я и н в е р т и р о в а н н ы х списков, считались с е р ь е з н ы м н е д о с т а т к о м , н о с у ч е т о м сни­
ж е н и я с т о и м о с т и устройств х р а н е н и я д а н н ы х п о в ы ш е н и е г и б к о с т и поиска, к о т о р а я появля­
ется благодаря о т д е л ь н ы м и н в е р т и р о в а н н ы м спискам, з а с л у ж и в а е т в н и м а н и я .
Оба указанных подхода являются более гибкими п о сравнению с построением клас­
сов эквивалентности, поскольку списки расширений могут перекрываться, н о при этом
не совпадать полностью. Э т о значит, ч т о можно реализовать асимметричные расшире­
н и я . П р и м е р и с п о л ь з о в а н и я э т о й а с и м м е т р и и п р и в е д е н н а р и с . 2.6: е с л и п о л ь з о в а т е л ь
в в е д е т с л о в о windows, т о м ы д о п у с к а е м , ч т о о н и м е е т в в и д у о п е р а ц и о н н у ю с и с т е м у
Windows (с б о л ь ш о й б у к в ы ) . О д н а к о , е с л и п о л ь з о в а т е л ь в в е л с л о в о window, т а к о е п р е д ­
положение становится неправдоподобным, даже несмотря н а т о что для этого запроса
в п о л н е д о п у с т и м в а р и а н т windows (с м а л е н ь к о й б у к в ы ) .

Термин запроса Соответствующие термины в документе


Windows Windows
windows Windows, windows, window
window window, windows

Рис. 2.6. Пример, в котором асимметричное расширение терминов, вхо­


дящих в запрос, может удачно моделировать ожидания пользователей
Непонятно, д о какой степени следует использовать классы эквивалентности и расши­
рение з а п р о с о в . С о д н о й с т о р о н ы , и х п р и м е н е н и е к а ж е т с я х о р о ш е й и д е е й . С д р у г о й с т о ­
роны, с л и ш к о м ш и р о к о е и с п о л ь з о в а н и е м о ж е т б ы с т р о п р и в е с т и к н е п р е д в и д е н н ы м п о ­
следствиям в виде чрезмерного расширения запросов. Например, построение класса эк­
в и в а л е н т н о с т и д л я с л о в U.S.A. и USA п у т е м у д а л е н и я т о ч е к и з л е к с е м , н а п е р в ы й взгляд,
выглядит целесообразно, поскольку вторая форма аббревиатуры встречается чаще пер­
в о й . О д н а к о , в в е д я а б б р е в и а т у р у С.АЛ., в ы , с к о р е е в с е г о , в р я д л и б у д е т е д о в о л ь н ы , е с л и
в о т в е т п о л у ч и т е в с е д о к у м е н т ы , с о д е р ж а щ и е с л о в о cat.
Н и ж е п р и в е д е н о н е с к о л ь к о ш и р о к о р а с п р о с т р а н е н н ы х в и д о в н о р м а л и з а ц и и и показа­
ны с п о с о б ы и х р е а л и з а ц и и . В о м н о г и х с и т у а ц и я х о н и п о л е з н ы , н о и н о г д а м о г у т п р и ч и ­
нить вред. М о ж н о продумать массу деталей при построении классов эквивалентности, но
в итоге в ходе обработки запроса тщательно продуманные детали часто н е оказывают
значительного воздействия на эффективность поиска.
Ударения и диакритические символы. Д и а к р и т и ч е с к и е з н а к и (diacritics) в а н г л и й ­
с к о м я з ы к е в с т р е ч а ю т с я о ч е н ь р е д к о , п о э т о м у естественно считать, что слова cliche и cliche
или naive и naive с о в п а д а ю т . Д л я э т о г о в процессе н о р м а л и з а ц и и следует удалить д и а к р и ­
тические с и м в о л ы . В о м н о г и х д р у г и х я з ы к а х д и а к р и т и ч е с к и е с и м в о л ы я в л я ю т с я в а ж н о й
ч а с т ь ю п и с ь м е н н о с т и и п о з в о л я ю т о т л и ч а т ь р а з н ы е звуки. И н о г д а с л о в а о т л и ч а ю т с я л и ш ь
у д а р е н и е м . Н а п р и м е р , в и с п а н с к о м я з ы к е слово репа означает утёс, а с л о в о репа означает
горе. Т е м н е м е н е е н а п е р в ы й п л а н в ы х о д я т н е лингвистические и л и г р а м м а т и ч е с к и е п р о ­
б л е м ы , а в о п р о с , в к а к о м в и д е пользователи, скорее всего, будут писать эти слова. Ч а с т о
пользователи вводят с в о и з а п р о с ы , и г н о р и р у я д и а к р и т и ч е с к и е з н а к и л и б о д л я п о в ы ш е н и я
с к о р о с т и ввода, л и б о из-за л е н и , л и б о из-за о г р а н и ч е н и й п р о г р а м м н о г о обеспечения, л и б о
просто п о п р и в ы ч к е , в о з н и к ш е й в о в р е м е н а , когда в б о л ь ш и н с т в е к о м п ь ю т е р н ы х систем
д о с т у п н ы м и б ы л и л и ш ь A S C I I - с и м в о л ы . В этих случаях н а и л у ч ш и м р е ш е н и е м будет в с е
слова сделать э к в и в а л е н т н ы м и ф о р м е б е з д и а к р и т и ч е с к и х знаков.
Использование заглавных букв/обработка без учета регистра. К а к правило, в по­
и с к о в ы х с и с т е м а х и г н о р и р у е т с я р е г и с т р б у к в (case-folding), н а п р и м е р в с е б у к в ы п е р е в о ­
дятся в н и ж н и й регистр. Часто это оказывается удачным решением, позволяющим все
с л о в а Automobile, с к о т о р ы х н а ч и н а ю т с я с о о т в е т с т в у ю щ и е п р е д л о ж е н и я , с ч и т а т ь соот­
в е т с т в у ю щ и м з а п р о с у automobile. Э т о т а к ж е п о м о г а е т п о и с к о в ы м в е б - с и с т е м а м в ситуа­
ц и я х , к о г д а б о л ь ш и н с т в о п о л ь з о в а т е л е й н а б и р а ю т с л о в о ferrari, и н т е р е с у я с ь а в т о м о б и ­
л е м Ferrari. С д р у г о й с т о р о н ы , с в ё р т ы в а н и е р е г и с т р а м о ж е т п р и в е с т и к с о в п а д е н и ю
слов, которые следовало б ы считать разными. М н о г и е имена собственные являются про­
изводными от имен нарицательных и отличаются о т них л и ш ь прописной первой буквой.
Н а п р и м е р , э т о о т н о с и т с я к н а з в а н и я м к о м п а н и й (General Motors, The Associated Press) и
п р а в и т е л ь с т в е н н ы х о р г а н и з а ц и й (the Fed и fed), а г а к ж е к ф а м и л и я м (Bush, Black). М ы
уже п р и в о д и л и п р и м е р н е п р е д н а м е р е н н о г о р а с ш и р е н и я з а п р о с а , с о д е р ж а щ е г о а к р о н и ­
мы, в к о т о р ы х и с п о л ь з у е т с я н е т о л ь к о н о р м а л и з а ц и я а к р о н и м а (С.А.Т. —> CAT), н о и иг­
н о р и р о в а н и е р е г и с т р а (CAT —» cat).
В английском языке в качестве альтернативы переводу всех лексем в нижний регистр
можно использовать выборочный перевод. Простейшее эвристическое правило предпо­
лагает перевод в нижний регистр только слов, н а ч и н а ю щ и х предложения, и всех слов,

9
Во время написания этой главы (август 2005 года) поисковая машина Google так и делала:
в первой строке ответа на запрос С.А.Т. она вернула адрес веб-сайта, посвященного кошкам (Cat
Franciers Web Site, www. f r a n c i e r s . c o m / ) .
встречающихся в заглавиях, в которых все буквы являются прописными или в которых
б о л ь ш и н с т в о слов н а ч и н а ю т с я с п р о п и с н ы х б у к в . К а к п р а в и л о , э т о о б ы ч н ы е слова, кото­
р ы е д о л ж н ы б ы т ь н а б р а н ы п р о п и с н ы м и б у к в а м и . Слова, в с т р е ч а ю щ и е с я в середине пред­
л о ж е н и й и н а б р а н н ы е с п о м о щ ь ю п р о п и с н ы х букв, о с т а ю т с я н е и з м е н н ы м и (что о б ы ч н о
является п р а в и л ь н ы м р е ш е н и е м ) , и э т о п о з в о л я е т и з б е ж а т ь н е ж е л а т е л ь н ы х совпадений
слов, р а з л и ч а ю щ и х с я л и ш ь р е г и с т р о м . Д а н н у ю задачу м о ж н о р е ш и т ь точнее, п о с т р о и в с
п о м о щ ь ю м а ш и н н о г о обучения с о о т в е т с т в у ю щ у ю п о с л е д о в а т е л ь н у ю м о д е л ь , у ч и т ы в а ю ­
щ у ю б о л ь ш е п р и з н а к о в д л я п р и н я т и я р е ш е н и я о б и з м е н е н и и регистра. Э т а стратегия н а з ы ­
вается учетом истинного регистра (truecasing). О д н а к о п о п ы т к а у ч е с т ь и с т и н н ы й регистр
с п о м о щ ь ю э т о й стратегии м о ж е т оказаться безрезультатной, если пользователи регулярно
п р и м е н я ю т в з а п р о с а х н и ж н и й р е г и с т р в м е с т о о р ф о г р а ф и ч е с к и корректного.
Другие проблемы, связанные с английским языком. П р и д р у г и х п о д х о д а х к н о р ­
мализации учитываются особенности английского языка. Например, можно потребовать,
ч т о б ы с л о в а ne'er и never в с е г д а с ч и т а л и с ь о д и н а к о в ы м и и л и н е р а з л и ч а т ь б р и т а н с к о е
н а п и с а н и е с л о в а colour и а м е р и к а н с к о е color. Д а т ы , в р е м я и д р у г и е а н а л о г и ч н ы е э л е м е н ­
ты могут встречаться в разных форматах, что создает новые проблемы. Поэтому можно
п о т р е б о в а т ь , ч т о б ы з а п и с и 3/12/91 и Маг. 12, 1991 с ч и т а л и с ь о д и н а к о в ы м и . О д н а к о пра­
вильная о б р а б о т к а т а к и х з а п р о с о в у с л о ж н я е т с я т е м , ч т о в С Ш А з а п и с ь 3/12/91 о з н а ч а е т
Маг. 12, 1991, а в Е в р о п е — 3 Dec. 1991
Другие языки. А н г л и й с к и й я з ы к я в л я е т с я д о м и н и р у ю щ и м язътком в в е б е ; п р и м е р н о
6 0 % в е б - с т р а н и ц н а п и с а н ы н а а н г л и й с к о м я з ы к е (Gerrand, 2 0 0 7 ) . Т е м н е м е н е е о с т а л ь ­
ные 4 0 % в е б - с т р а н и ц с о з д а н ы н а д р у г и х я з ы к а х , п р и ч е м и х д о л я с о в р е м е н е м б у д е т воз­
р а с т а т ь , п о с к о л ь к у м е н ь ш е т р е т и п о л ь з о в а т е л е й И н т е р н е т а и м е н ь ш е 1 0 % л ю д е й в о всем
мире считают английский своим основным языком. Признаки изменений наблюдаются
у ж е : п о н е к о т о р ы м д а н н ы м (Sifry, 2 0 0 7 ) т о л ь к о т р е т ь з а п и с е й в б л о г а х н а п и с а н ы н а анг­
лийском языке.
Другие языки, в свою очередь, создают разнообразные проблемы в выделении клас­
сов эквивалентных слов. Например, французский определенный артикль имеет разные
ф о р м ы , з а в и с я щ и е не т о л ь к о о т р о д а ( м у ж с к о г о и л и ж е н с к о г о ) и о т к о л и ч е с т в а п о с л е ­
дующих имен существительных, н о и от того, с какого звука начинается следующее сло­
во (la, le, Г и л и les). Е с т е с т в е н н о с о з д а т ь к л а с с э к в и в а л е н т н о с т и д л я р а з н ы х ф о р м о п р е ­
деленного артикля. В немецком языке существует правило, согласно которому гласные
буквы с умлаутом могут быть представлены двумя буквами. П о этой причине слова
Schutze и Schuetze с ч и т а ю т с я э к в и в а л е н т н ы м и .
В с е м и п р и з н а н о , что я п о н с к а я система п и с ь м е н н о с т и является о ч е н ь с л о ж н о й (рис. 2.7).
Современный японский алфавит представляет собой смесь разных алфавитов (в основ­
н о м к и т а й с к и х с и м в о л о в ) , двух с л о г о в ы х азбук ( х и р а г а н а и к а т а к а н а ) , а т а к ж е с и м в о л о в
из западных языков (латинские буквы, арабские цифры и другие символы). Несмотря на
строгие правила и стандартизацию японской письменности, в о многих случаях одно и то
же слово может быть записано по-разному. Например, слово может быть записано с по­
м о щ ь ю с л о г о в о й азбуки к а т а к а н а д л я в ы р а з и т е л ь н о с т и ( а н а л о г и ч н о в ы д е л е н и ю к у р с и ­
вом) или слоговой азбуки хирагана, или китайскими символами. Таким образом, для ус­
п е ш н о г о п о и с к а и н ф о р м а ц и и н е о б х о д и м о в ы п о л н и т ь с л о ж н у ю п р о ц е д у р у с о з д а н и я клас­
сов эквивалентности слов и з разных систем японской письменности. В частности,
пользователь может применять исключительно слоговую азбуку хирагана, поскольку ее
символы легче набирать на клавиатуре, точно т а к ж е как западные пользователи в о с ­
новном применяют нижний регистр.
zpy^vxfe \%<о Л fcofcv^v^ шшьй-Го шт&в^ъ

Рис. 2.7. Японская система письменности является смесью разных систем и, как и китайская,
не предусматривает выделения слов. В этом тексте использованы в основном китайские
символы в сочетании со слоговой азбукой хирагана для флективных окончаний и служебных
слов. Латинские буквы на самом деле являются частью японских выражений, описывающих
кампанию за охрану окружающей среды, которую ведет Вангари Маатаи (Wangari Maathai),
нобелевский лауреат премии мира 2004 года. Его имя в середине первой строки записано с
помощью слоговой азбуки катакана. Первые четыре символа в последней строке представ­
ляют запись суммы, эквивалентной 500 тысячам иен

И н д е к с и р у е м ы е к о л л е к ц и и ч а с т о с о д е р ж а т д о к у м е н т ы на р а з н ы х я з ы к а х . В п р о ч е м ,
отдельный документ также может быть многоязычным. Например, электронное сообще­
ние на французском языке может содержать цитату из контракта на английском. Как
п р а в и л о , с н а ч а л а о с у щ е с т в л я е т с я р а с п о з н а в а н и е я з ы к а , а з а т е м — р а з б и е н и е т е к с т а на
л е к с е м ы и н о р м а л и з а ц и я п о п р а в и л а м д л я д а н н о г о я з ы к а , у ч и т ы в а ю щ и м з а р а н е е уста­
новленную степень детализации, например, по всему документу или по абзацам. Однако
такой подход не срабатывает, если документ содержит краткие цитаты на других языках.
Если коллекции документов являются многоязычными, то индекс может содержать тер­
мины из разных языков. В частности, можно сначала применить к документу классифи­
катор языков, а затем пометить термины в лексиконе соответствующего языка. Иногда
э т а р а з м е т к а и г н о р и р у е т с я , п о с к о л ь к у п о с л е д о в а т е л ь н о с т и с и м в о л о в на р а з н ы х я з ы к а х
редко совпадают.
П р и обработке иностранных или сложных слов, в особенности иностранных имен,
орфография может быть неясной или могут существовать различные правила транслите­
р а ц и и , п р и в о д я щ и е к р а з л и ч н ы м в а р и а н т а м ( н а п р и м е р , Chebyshev и Tchebycheff или
Beijing и Peking). Д л я р е ш е н и я э т о й п р о б л е м ы м о ж н о и с п о л ь з о в а т ь э в р и с т и ч е с к и е п р а ­
вила создания классов эквивалентности или расширять термины с п о м о щ ь ю фонетиче­
ских эквивалентов. Ч а щ е всего для этого применяются такие алгоритмы, как Soundex,
1 0
который м ы рассмотрим в разделе 3.4.

2.2.4. Стемминг и лемматизация


По грамматическим причинам в документах встречаются разные формы одних и
т е х ж е с л о в , н а п р и м е р organize, organizes и organizing. Кроме того, существуют семей­
с т в а п р о и з в о д н ы х с л о в , и м е ю щ и х б л и з к и й с м ы с л , н а п р и м е р democracy, democratic и

1 0
На практике и правила транслитерации, и словарь транслитерационных пар необходимо
строить с использованием статистики встречаемости в коллекциях запросов и текстов, так как эв­
ристические правила не дают удовлетворительного качества. — Примеч. ред.
democratization. В о м н о г и х с и т у а ц и я х к а ж е т с я п о л е з н ы м п о о д н о м у из н и х н а х о д и т ь д о ­
кументы, содержащие другие слова из этого семейства
Цель стемминга и л е м м а т и з а ц и и — привести словоформы и производные формы
слова к общей основной форме. Рассмотрим примеры.
a m , are, is => be
car, cars, c a r ' s , c a r s ' => car
В результате может возникнуть следующее преобразование текста.
the b o y ' s cars are different c o l o r s =>
the b o y car b e different color
О д н а к о с т е м м и н г о т л и ч а е т с я о т л е м м а т и з а ц и и . Стеммингом (stemming) о б ы ч н о на­
зывается приближенный эвристический процесс, в ходе которого от слов отбрасываются
о к о н ч а н и я в р а с ч е т е н а т о , ч т о в б о л ь ш и н с т в е с л у ч а е в э т о с е б я о п р а в д а е т . С т е м м и н г час­
т о п о д р а з у м е в а е т у д а л е н и е п р о и з в о д н ы х а ф ф и к с о в . Лемматизация (Iemmatization) — э т о
точный процесс с использованием лексикона и морфологического анализа слов, в ре­
зультате которого удаляются только флективные окончания и возвращается основная,
или с л о в а р н а я , ф о р м а слова, н а з ы в а е м а я леммой. Н а п р и м е р , л е к с е м а saw в х о д е с т е м ­
м и н г а м о ж е т п р е в р а т и т ь с я в б у к в у s, в т о в р е м я к а к л е м м а т и з а ц и я в е р н е т л и б о с л о в о see,
л и б о с л о в о saw в з а в и с и м о с т и о т т о г о , я в л я е т с я л и л е к с е м а г л а г о л о м и л и и м е н е м с у щ е ­
ствительным. Важное различие состоит в том, что обычно стемминг "склеивает" произ­
в о д н ы е о д н о к о р е н н ы е слова, а л е м м а т и з а ц и я " с к л е и в а е т " т о л ь к о ф л е к т и в н ы е ф о р м ы о д ­
ной леммы. Стемминг и лемматизация часто выполняются с помощью дополнительных
программных компонентов, встраиваемых в процесс индексирования. В настоящее вре­
м я с у щ е с т в у е т м н о ж е с т в о таких п р о г р а м м , как к о м м е р ч е с к и х , т а к и с в о б о д н о р а с п р о ­
страняемых.
Наиболее распространенным алгоритмом стемминга английских слов, который неод­
нократно демонстрировал свою эффективность в практических приложениях, является
алгоритм Портера (Porter, 1980). В е с ь а л г о р и т м с л и ш к о м д л и н н ы й и с л о ж н ы й д л я т о г о ,
ч т о б ы п р и в е с т и его з д е с ь п о л н о с т ь ю , н о м ы о п и ш е м е г о с у т ь . А л г о р и т м П о р т е р а с о с т о и т
из пяти этапов сокращения слов, выполняемых последовательно. Н а каждом этапе при­
м е н я ю т с я р а з н ы е с о г л а ш е н и я п о в ы б о р у п р а в и л , т а к и х как в ы б о р п р а в и л а из к а ж д о й
группы правил, применимых к самому длинному суффиксу. Н а первом этапе это согла­
шение применяется к следующей группе правил.

Правило Пример
SSES -»SS caresses -»caress
IES -» I ponies -»poni
SS —> S S caress —> caress
S —> cats —> cat

В о м н о г и х с о в р е м е н н ы х п р а в и л а х и с п о л ь з у е т с я к о н ц е п ц и я меры слова ( m e a s u r e of а
word), которая примерно оценивает количество слогов, чтобы определить, достаточно ли
длинным является слово для применения правила, относящегося к суффиксу, а не к ос­
нове. Рассмотрим пример.

( m > 1) E M E N T - »
Э т о п р а в и л о о т о б р а ж а е т с л о в о replacement в с л о в о replac, н о н е с л о в о cement в сло­
во с. О ф и ц и а л ь н ы й сайт, п о с в я щ е н н ы й а л г о р и т м у П о р т е р а (Porter S t e m m e r i , р а с п о л о ж е н
по следующему адресу.
www.tartarus.org/-martin/PorterStemmer/

Существуют и другие алгоритмы стемминга: относительно старый однопроходный


а л г о р и т м Л о в и н с а (Lovins, 1968) и о т н о с и т е л ь н о н о в ы й а л г о р и т м П е й с а - Х а с к а CPaice/
H u s k ) (Paice, 1990). О н и п р е д с т а в л е н ы н а с л е д у ю щ и х в е б - с т р а н и ц а х ,
www.cs.waikato.ас/nz/-eibe/stemmers/
www.comp.lanes.ac.uk/computing/research/stemming/

Пример. S u c h an analysis c a n reveal features that are n o t easily visible from the varia­
tions in the individual g e n e s a n d c a n l e a d to a picture of expression that is m o r e biologically
transparent a n d accessible t o interpretation.
Алгоритм Ловинса. S u c h an a n a l y s i s c a n r e v e featur that ar n o t e a s v i s f r o m th vari
in th i n d i v i d u g e n a n d c a n l e a d t o a p i c t u r o f e x p r e s t h a t i s m o r b i o l o g t r a n s p a r a n d a c -
c e s to i n t e r p r e s .
Алгоритм Портера. S u c h an analysi can r e v e a l featur that ar n o t easili visibl from the
variat in the individu g e n e a n d c a n l e a d to a pictur o f e x p r e s s that is m o r e b i o l o g transpar
a n d access t o interpret.
Алгоритм Пейса. S u c h an analysis c a n rev feat that a r e not easy vis from the vary in the
individ gen and c a n lead to a pict of express that is m o r biolog transp and access to interpret.

Рис. 2.8. Сравнение трех алгоритмов стемминга на конкретном примере

Н а р и с . 2.8 п р о д е м о н с т р и р о в а н ы р е з у л ь т а т ы н е ф о р м а л ь н о г о с р а в н е н и я т р е х разных
а л г о р и т м о в с т е м м и н г а . О н и и с п о л ь з у ю т п р а в и л а , х а р а к т е р н ы е д л я а н г л и й с к о г о я з ы к а , но
при этом требуют м е н ь ш е знаний, чем алгоритмы лемматизации, для работы которых
необходимы полный лексикон и морфологический анализ. Отдельные области знаний
т а к ж е м о г у т п о т р е б о в а т ь с п е ц и а л ь н ы х п р а в и л с т е м м и н г О д н а к о н а с и н т е р е с у ю т н е са­
м и ф о р м ы , п о л у ч е н н ы е в р е з у л ь т а т е с т е м м и н г а , а л и ш ь к л а с с ы э к в и в а л е н т н о с т и , кото­
рые они образуют.
В м е с т о а л г о р и т м а с т е м м и н г а м о ж н о и с п о л ь з о в а т ь чемматизатор (lemmatizer), инст­
р у м е н т и з о б л а с т и о б р а б о т к и е с т е с т в е н н о г о я з ы к а (natural l a n g u a g e p r o c e s s i n g ) , выпол­
н я ю щ и й п о л н ы й м о р ф о л о г и ч е с к и й а н а л и з д л я т о ч н о г о о п р е д е л е н и я л е м м ы к а ж д о г о сло­
ва. П о л н ы й м о р ф о л о г и ч е с к и й а н а л и з п р и н о с и т в е с ь м а с к р о м н ы й в ы и г р ы ш п р и и н ф о р ­
мационном поиске. Трудно сказать что-то более конкретное, так как ни одна из форм
н о р м а л и з а ц и и н е п о в ы ш а е т с у м м а р н у ю э ф ф е к т и в н о с т ь п о и с к а и н ф о р м а ц и и н а англий­
с к о м я з ы к е , п о к р а й н е й м е р е н е с п о с о б н а у в е л и ч и т ь ее з н а ч и т е л ь н о . Н е с м о т р я н а т о ч т о
д л я н е к о т о р ы х з а п р о с о в л е м м а т и з а ц и я м о ж е т о к а з а т ь с я о ч е н ь п о л е з н о й , д л я остальных
запросов она существенно снижает производительность. Стемминг повышает полноту,
но с н и ж а е т т о ч н о с т ь п о и с к а . Д л я т о г о ч т о б ы п р о д е м о н с т р и р о в а т ь н е д о с т а т к и э т и х алго­
ритмов, отметим, что алгоритм Портера обрезает все слова

operate operating operates operation operative operatives operational


д о с л о в а oper. П о с к о л ь к у с л о в о operate в о всех с в о и х ф о р м а х я в л я е т с я р а с п р о с т р а н е н ­
ным глаголом, точность для следующих запросов сильно снизится при использовании
алгоритма Портера.
operational AND research
operating AND system
operative AND dentistry
В т а к и х с и т у а ц и я х л е м м а т и з а ц и я н е п о м о г а е т п о л н о с т ь ю р е ш и т ь п р о б л е м у , т а к как
конкретные словоформы используются в словосочетаниях: предложение со словами
operate и system н е п о л н о с т ь ю с о о т в е т с т в у ю т з а п р о с у Operating AND system. Э ф ф е к т от
нормализации терминов зависит в большей степени от прагматических аспектов слово­
употребления, чем о т формальных морфологических аспектов.
Иначе обстоят дела для языков с более сложной морфологической структурой (на­
пример, для испанского, немецкого и финского). Результаты европейского форума CLEF
(Cross L a n g u a g e E v a l u a t i o n F o r u m ) м н о г о к р а т н о д е м о н с т р и р о в а л и , ч т о и с п о л ь з о в а н и е а л ­
горитмов стемминга (и разбиения составных слов для немецкого языка) дает существен­
н ы й в ы и г р ы ш . С о о т в е т с т в у ю щ и е с с ы л к и п р и в е д е н ы в р а з д е л е 2.5.

*Р Упражнение 2.1 [*]. О п р е д е л и т е , я в л я ю т с я л и с л е д у ю щ и е у т в е р ж д е н и я и с т и н н ы -


• ми или ложными.
1. В с и с т е м а х л о г и ч е с к о г о и н ф о р м а ц и о н н о г о п о и с к а с т е м м и н г н и к о г д а не с н и ж а ­
ет точность.
2. В с и с т е м а х л о г и ч е с к о г о и н ф о р м а ц и о н н о г о п о и с к а с т е м м и н г н и к о г д а н е с н и ж а ­
ет полноту. ,
3. Стемминг увеличивает размер лексикона.
4. Стемминг следует выполнять в ходе индексирования, а не п р и обработке за­
проса.

Упражнение 2.2 [*]. К а к у ю н о р м а л и з о в а н н у ю ф о р м у с л е д у е т и с п о л ь з о в а т ь д л я


следующих слов (включая как вариант само слово)?
1. 'Cos
2. Shi'ite
3. cont'd
4. Hawai'i
5. O'Rourke

Упражнение 2.3 [*]. С л е д у ю щ и е п а р ы с л о в а л г о р и т м П о р т е р а п р и в о д и т к о д н о й и


той же форме. Какие пары, по вашему мнению, н е следует объединять?
1. abandon/abandonment
2. absorbency/absorbent
3. marketing/markets
4. university/universe
5. volume/volumes

Упражнение 2.4 [*]. П р о а н а л и з и р у й т е г р у п п у п р а в и л а л г о р и т м а П о р т е р а , опи­


санную выше.
1. Д л я ч е г о в н е е в к л ю ч е н о п р а в и л о т о ж д е с т в а , н а п р и м е р SS —> S S ?
1
2. П р и м е н и т е э т у г р у п п у п р а в и л к с л е д у ю щ и м с л о в а м ,
circus c a n a r i e s b o s s
3. К а к о е п р а в и л о с л е д о в а л о б ы в к л ю ч а т ь в э т у г р у п п у , ч т о б ы п р а в и л ь н о о б р а б о ­
т а т ь с л о в о pony?
4. Р е з у л ь т а т ы с т е м м и н г а д л я с л о в ponies и pony м о г у т п о к а з а т ь с я с т р а н н ы м и .
М о ж е т л и это оказать вредное влияние на обработку запроса? Почему "да" или
почему "нет"?

2.3. Быстрое пересечение инвертированных списков


с помощью указателей пропусков
В оставшейся части главы м ы обсудим расширение структур данных д л я инвертиро­
ванных списков и способы повышения эффективности использования этих списков. На­
п о м н и м о с н о в н у ю о п е р а ц и ю п е р е с е ч е н и я и н в е р т и р о в а н н ы х с п и с к о в ( с м . р а з д е л 1.3): м ы
одновременно перемещаемся по двум инвертированным спискам за время, пропорцио­
н а л ь н о е о б щ е м у к о л и ч е с т в у э л е м е н т о в в э т и х с п и с к а х . Е с л и д л и н ы с п и с к о в р а в н ы иг и и,
т о п е р е с е ч е н и е в ы п о л н я е т с я з а 0(т+п) о п е р а ц и й . М о ж н о л и у л у ч ш и т ь э т у о ц е н к у ? И н а ­
че г о в о р я , н е л ь з я л и н а й т и э м п и р и ч е с к и й с п о с о б в ы п о л н и т ь п е р е с е ч е н и е с п и с к о в з а суб­
линейное время? М о ж н о , если индекс изменяется не слишком быстро.
Один из методов ускорения операции пересечения списков основан на использовании
списка с пропусками (skip list). Д л я э т о г о н а д о с н а б д и т ь и н в е р т и р о в а н н ы е с п и с к и указа­
телями пропусков (во время индексирования), как показано на рис. 2.9. Указатели про­
пусков представляют собой эффективный инструмент, позволяющий избежать обработки
элементов инвертированного списка, которые не будут включены в результаты поиска.
Возникают два вопроса: "Где разместить указатели пропусков?" и "Как осуществить э ф ­
фективное слияние списков с их помощью?"

Brutus

Caesa
Рис. 2.9. Инвертированные списки с указателями пропусков.
Операция пересечения списков может использовать эти ука­
затели, если последний элемент списка меньше, чем элемент в
другом списке

Р а с с м о т р и м с н а ч а л а э ф ф е к т и в н о е с л и я н и е , в з я в в к а ч е с т в е п р и м е р а р и с . 2.9. Д о п у с ­
тим, что м ы проходили по спискам, изображенным на рисунке, пока не н а ш л и число 8
в к а ж д о м и з с п и с к о в и н е в к л ю ч и л и его в с п и с о к р е з у л ь т а т о в . Т о г д а м ы п е р е м е с т и м о б а
у к а з а т е л я в п е р е д , т а к ч т о в п е р в о м с п и с к е у к а з а т е л ь б у д е т у с т а н о в л е н н а ч и с л о 16, а во
в т о р о м — н а ч и с л о 41. Н а и м е н ь ш и м и з э т и х д в у х э л е м е н т о в я в л я е т с я ч и с л о 16 в п е р в о м
с п и с к е . В м е с т о о б ы ч н о г о п е р е м е щ е н и я у к а з а т е л я в п е р е д п о п е р в о м у списку м ы с н а ч а л а
п р о в е р и м у к а з а т е л ь п р о п у с к о в и в ы я с н и м , ч т о ч и с л о 28 т а к ж е м е н ь ш е , ч е м 41. З н а ч и т ,
мы м о ж е м проследовать за указателем пропусков и переместить указатель в первом спи­
с к е в п е р е д , у с т а н о в и в его н а ч и с л о 28. Т а к и м о б р а з о м , м ы и з б е ж а л и п р о х о д а по ч и с л а м
19 и 23 в п е р в о м с п и с к е . В о з м о ж н ы н е с к о л ь к о в а р и а н т о в п е р е с е ч е н и я и н в е р т и р о в а н н ы х
списков в зависимости от того, когда именно проверяется указатель пропусков. Один из
этих в а р и а н т о в п о к а з а н н а р и с . 2.10. У к а з а т е л и п р о п у с к о в е с т ь т о л ь к о у и с х о д н ы х и н в е р ­
тированных списков. Для промежуточных результатов обработки сложных запросов вы­
з о в ф у н к ц и и hasSkip(p) в с е г д а в о з в р а щ а е т з н а ч е н и е false. В з а к л ю ч е н и е о т м е т и м , ч т о на­
личие указателей пропусков помогает обрабатывать запросы, содержащие операцию
AND, но не запросы, содержащие операцию O R .

lntersectWithSkips(p , рг) 1

1 answer <— <)


2 whilep, * N I L a n d p * N I L 2

3 d o if docID(p{) = docID(p ) 2

4 t h e n AManswer. docID(p,Yi
5 p, <r- nextKpx)
6 p <r-
2 next(p ) 2

7 else if doclD(p ) x < docID(p ) 2

8 t h e n if hasSkipfa) a n d (docID(skip(pi)) < docID(p )


2

9 t h e n w h i l e hasSkipypO a n d (docID(skip(p ))
x < docID(p )
2

10 d o pi <- skip(p{)
11 else pi <- next(p{)
12 else if hasSkip(p ) 2 a n d (doc!D(skip(p ))2 < docID(pi)
13 t h e n w h i l e hasSkip(p ) 2 a n d (docID(skip(p ))
2 < docID(p{)
14 d o pi <r- skip(p ) 2

15 else p <r- 2 next(p )


2

16 r e t u r n answer

Рис. 2.10. Операция пересечения инвертированных списков с указателями пропусков

Где лучше делать пропуски? Ответ на этот вопрос является результатом компром
са. Ч е м б о л ь ш е п р о п у с к о в , т е м м е н ь ш е их ш а г и т е м в ы ш е в е р о я т н о с т ь п р о п у с к о в . Од­
нако одновременно это означает, что количество сравнений с указателями пропусков и
о б ъ е м п а м я т и д л я их х р а н е н и я т а к ж е в о з р а с т а ю т . Ч е м м е н ь ш е п р о п у с к о в , т е м м е н ь ш е
с р а в н е н и й с у к а з а т е л я м и п р о п у с к о в , н о б о л ь ш е и х ш а г и м е н ь ш е в е р о я т н о с т ь перехода.
Простые эвристические правила размещения указателей пропусков, хорошо зарекомен­
д о в а в ш и е с е б я н а п р а к т и к е , у т в е р ж д а ю т , ч т о е с л и д л и н а и н в е р т и р о в а н н о г о с п и с к а рав­
на Р, т о с л е д у е т и с п о л ь з о в а т ь Jp р а в н о м е р н о р а з м е щ е н н ы х у к а з а т е л е й п р о п у с к о в . Т е м
не менее это эвристическое правило можно усовершенствовать, поскольку оно не учиты­
вает распределение терминов запросов.
С о з д а т ь э ф ф е к т и в н ы е у к а з а т е л и п р о п у с к о в л е г к о , е с л и и н д е к с и з м е н я е т с я р е д к о ; за-
1*ча н а м н о г о у с л о ж н я е т с я , е с л и и н д е к с п о с т о я н н о о б н о в л я е т с я . З л о н а м е р е н н ы е с т р а т е ­
гии у д а л е н и я м о г у т в о о б щ е с д е л а т ь с п и с к и у к а з а т е л е й п р о п у с к о в с о в е р ш е н н о н е э ф ф е к ­
тивными.
Выбор оптимального способа кодирования инвертированного индекса представляет
собой постоянно изменяющуюся задачу для разработчика системы, поскольку этот вы­
бор сильно зависит от используемых компьютерных технологий, их относительной ско­
рости работы и размера системы. В прошлом процессоры работали медленно, поэтому
стратегии сильного сжатия данных были неоптимальными. Однако в настоящее время
процессоры работают быстро, а дисковые устройства — относительно медленно, поэто­
му на первый план выходит задача сокращения длины инвер ированного списка, храня­
щегося на диске. Однако если запустить поисковую систему, при условии, что все дан­
ные загружены в оперативную память, то ситуация вновь изменится. Влияние парамет­
ров аппаратного обеспечения на время построения индекса обсуждается в разделе 4 . 1 , а
в л и я н и е р а з м е р а и н д е к с а н а с к о р о с т ь р а б о т ы с и с т е м ы — в г л а в е 5.

О Упражнение 2.5 [*]. П о ч е м у у к а з а т е л и п р о п у с к о в н е у с к о р я ю т о б р а б о т к у з а п р о с а


. в и д а X OR у?

Упражнение 2.6 [*]. Д о п у с т и м , ч т о в ы в в е л и з а п р о с , с о с т о я щ и й и з д в у х с л о в . Д л я


о д н о г о и з т е р м и н о в и н в е р т и р о в а н н ы й с п и с о к с о с т о и т и з 16 э л е м е н т о в .

[4, 6 , 1 0 , 12, 14, 16, 18, 2 0 , 2 2 , 3 2 , 4 7 , 8 1 , 1 2 0 , 1 2 2 , 1 5 7 , 1 8 0 ]

Инвертированный список для второго термина состоит из одного элемента.

[47]

Вычислите, сколько сравнений пришлось бы выполнить при пересечении этих


двух списков при использовании с л е д у ю щ и х двух стратегий. Кратко обоснуйте
свои ответы.

1. О б р а б о т к а в ы п о л н я е т с я с п о м о щ ь ю с т а н д а р т н ы х и н в е р т и р о в а н н ы х с п и с к о в .

2. И н в е р т и р о в а н н ы е с п и с к и х р а н я т у к а з а т е л и п р о п у с к о в с р е к о м е н д о в а н н ы м ш а ­

гом пропусков
Упражнение 2.7 [*]. Р а с с м о т р и т е п е р е с е ч е н и е у к а з а н н ы х в ы ш е и н в е р т и р о в а н н ы х
списков с использованием указателей пропусков

^92^96 97 100~ 115

и списка з а п и с и п р о м е ж у т о ч н ы х результатов (в к о т о р о м нет указателей про­


пусков)

3 5 8 9 9 5 9 9 100 101

Примените алгоритм пересечения инвертированных списков, описанный на рис. 2.10.


1. К а к ч а с т о п р о и с х о д и т п е р е х о д п о у к а з а т е л ю п р о п у с к о в (т.е. у к а з а т е л ь р х уста­
н а в л и в а е т с я в п о з и ц и ю skip(p\Y>.
2. С к о л ь к о с р а в н е н и й и н в е р т и р о в а н н ы х с п и с к о в в ы п о л н я е т с я в х о д е э т о г о а л г о ­
ритма при пересечении этих двух списков?
3. С к о л ь к о с р а в н е н и й и н в е р т и р о в а н н ы х с п и с к о в б ы л о б ы в ы п о л н е н о , е с л и б ы и х
пересечение вычислялось без использования указателей перехода?

2.4. Словопозиций с координатами и фразовые запросы


Многие сложные понятия, названия организаций и торговые марки представляют со­
бой многословные словосочетания и л и фразы. М ы хотели б ы иметь возможность т а к
п р е д с т а в л я т ь з а п р о с ы н а п о д о б и е Stanford University, р а с с м а т р и в а я и х к а к е д и н у ю ф р а ­
зу, ч т о б ы д о к у м е н т The inventor Stanford Ovshinsky never went to university не попадал
в список результатов. Современные поисковые системы поддерживают синтаксис двой­
н ы х к а в ь и е к ("Stanford university') д л я фразовых запросов (phrase queries). Этот син­
таксис прост и широко используется многими пользователями. Н е менее 10% всех веб-
запросов представляют собой фразовые запросы. Однако неявных фразовых запросов,
которые вводятся без двойных кавычек, намного больше (например, при поиске людей
по и м е н а м и ф а м и л и я м ) . Д л я о б р а б о т к и т а к и х з а п р о с о в и н в е р т и р о в а н н ы е с п и с к и у ж е н е
могут быть простыми списками документов, содержащих отдельные термины. В этом
разделе рассматриваются два подхода к обработке фразовых запросов и и х комбинация.
П о и с к о в ы е м а ш и н ы д о л ж н ы н е т о л ь к о п о д д е р ж и в а т ь в о з м о ж н о с т ь з а д а н и я ф р а з о в ы х за­
просов, н о и обеспечивать и х эффективную обработку. Связанная с этим, но все ж е от­
дельная концепция предусматривает взвешивание на основе близости терминов запроса
в документе: ч е м ближе термины запроса в документе, тем выше вес документа. Этот
м е т о д о п и с а н в р а з д е л е 7.2.2 в п р о ц е с с е а н а л и з а п о и с к а с р а н ж и р о в а н и е м .

2.4.1. Двухсловные индексы


Один из подходов к обработке фразовых запросов предусматривает интерпретацию
каждой пары последовательных терминов в документе к а к фразы. Например, текст
Friends, Romans, Countrymen порождает следуюшие лвухсловия.
friends romans
romans contrymen
В этой м о д е л и м ы р а с с м а т р и в а е м к а ж д о е д в у х с л о в и е к а к т е р м и н словаря. Э т о сразу
дает н а м в о з м о ж н о с т ь о б р а б а т ы в а т ь д в у х с л о в н ы е ф р а з о в ы е запросы. Б о л е е д л и н н ы е
ф р а з ы о б р а б а т ы в а ю т с я п у т е м р а з б и е н и я н а д в у х с л о в н ы е части. З а п р о с Stanford univer­
sity palo alto м о ж н о р а з б и т ь н а л о г и ч е с к и й з а п р о с , с о с т о я щ и й и з д в у х с л о в и й .
"Stanford university" AND "university palo" AND "palo alto"
Э т о т з а п р о с н а п р а к т и к е м о ж е т себя о п р а в д а т ь , н о и н о г д а о н м о ж е т и д о л ж е н воз­
в р а щ а т ь л о ж н о п о л о ж и т е л ь н ы е о т в е т ы . Б е з п р о в е р к и э т и х д о к у м е н т о в н е в о з м о ж н о убе­
диться, ч т о д о к у м е н т ы , у д о в л е т в о р я ю щ и е этому булеву запросу, д е й с т в и т е л ь н о содержат
п е р в о н а ч а л ь н у ю ф р а з у и з ч е т ы р е х слов.
С р е д и всех в о з м о ж н ы х з а п р о с о в и м е н а с у щ е с т в и т е л ь н ы е и и м е н н ы е с л о в о с о ч е т а н и я
занимают особое положение при описании понятий, которые хотят найти люди. Однако
с в я з а н н ы е м е ж д у с о б о й и м е н а с у щ е с т в и т е л ь н ы е ч а с т о о к а з ы в а ю т с я о т д е л е н н ы м и друг
от д р у г а р а з н ы м и с л у ж е б н ы м и с л о в а м и , к а к , н а п р и м е р , в ф р а з а х the abolition of slavery и
renegotiation of the constitution. Э т у о с о б е н н о с т ь м о ж н о у ч е с т ь в р а м к а х м о д е л и двух-
словной индексации следующим образом. Сначала необходимо разбить текст на лексемы
1 1
и в ы п о л н и т ь р а з м е т к у п о ч а с т я м р е ч и (part-of-speech t a g g i n g ) . З а т е м т е р м и н ы г р у п п и ­
руются по частям речи, в частности по именам существительным, включая собственные
имена (N), и служебным словам, включая артикли и предлоги (X). Теперь л ю б у ю строку
т е р м и н о в м о ж н о п р е д с т а в и т ь в в и д е N X * N , т.е. к а к р а с ш и р е н н у ю ф р а з у и з д в у х с л о в .
К а ж д о е т а к о е р а с ш и р е н н о е д в у х с л о в и е образует т е р м и н в л е к с и к о н е . Р а с с м о т р и м п р и м е р .

renegotiation of the constitution

N X X N
Для поиска п о такому расширенному двухсловному индексу запрос так ж е необходи­
м о п р о а н а л и з и р о в а т ь н а н а л и ч и е с у щ е с т в и т е л ь н ы х (N) и с л у ж е б н ы х с л о в (X), а затем
с е г м е н т и р о в а т ь з а п р о с н а р а с ш и р е н н ы е д в у х с л о в и я , п о к о т о р ы м м о ж н о п р о и з в о д и т ь по­
иск в индексе.
П р и п р е о б р а з о в а н и и д л и н н ы х з а п р о с о в в л о г и ч е с к и е з а п р о с ы э т о т а л г о р и т м н е всегда
работает оптимально. Например, с п о м о щ ь ю описанного в ы ш е алгоритма запрос
cost overruns on a power plant
преобразуется в запрос
"cost overruns" AND "overruns power" AND "power plant"
В т о ж е время было б ы л у ч ш е пропустить среднее двухсловие. Л у ч ш и е результаты
можно было б ы получить, используя более точные шаблоны частей речи, определяющие
двухсловные словосочетания, подлежащие индексированию.
К о н ц е п ц и ю д в у х с л о в н о г о и н д е к с а м о ж н о р а с ш и р и т ь н а б о л е е д л и н н ы е ц е п о ч к и слов.
Е с л и и н д е к с с о д е р ж и т ц е п о ч к и с л о в п е р е м е н н о й д л и н ы , г о в о р я т о б индексе фраз (phrase
index). Д е й с т в и т е л ь н о , б ы л о б ы н е е с т е с т в е н н о о б р а б а т ы в а т ь о д н о с л о в н ы е з а п р о с ы с по­
м о щ ь ю д в у х с л о в н ы х индексов (для э т о г о п р и ш л о с ь б ы п р о с м о т р е т ь все п а р ы с л о в словаря,
содержащие этот термин), поэтому нам нужен индекс однословных терминов. Несмотря на
то ч т о всегда есть ш а н с л о ж н о г о срабатывания, в е р о я т н о с т ь п о л у ч и т ь такой ответ п р и в ы ­
п о л н е н и и поиска п о фразам, с о д е р ж а щ и м т р и и б о л е е слов, становится весьма м&чой. О д ­
нако, с д р у г о й с т о р о н ы , х р а н е н и е д л и н н ы х ф р а з п р и в е д е т к з н а ч и т е л ь н о м у у в е л и ч е н и ю
р а з м е р а с л о в а р я . Н е о б х о д и м о с т ь п о д д е р ж к и п о л н о г о и н д е к с а фра;}, к о т о р ы е д л и н н е е
д в у х с л о в , — п у г а ю щ а я п е р с п е к т и в а , и д а ж е и с п о л ь з о в а н и е п о л н о г о д в у х с л о в н о г о ин­
декса очень сильно увеличивает размер лексикона. И все ж е в конце раздела м ы обсудим
целесообразность этой стратегии в рамках схемы составного индексирования.

2.4.2. Координатные индексы


По указанным причинам двухсловный индекс н е стал стандартным решением. Вме­
с т о н е г о ш и р о к о е р а с п р о с т р а н е н и е п о л у ч и л координатный индекс ( p o s i t i o n a l i n d e x )
В нем для каждого термина из лексикона хранятся словопозиций в формате docID:
(positionl, position2,...) (рис. 2.11), г д е positionl, position2 и т.д. представляют собой

" В результате разметки по частям речи слова разбиваются по классам как имена существи­
тельные, глаголы и т.д. или используются более мелкие классы, например "имя существительное
во множественном числе". В настоящее время существуют очень точные инструменты разметки
текста по частям речи (примерно 96% корректных меток), которые, как правило, используют ме-
оды машинного обучения на основе текстов, размеченных вручную (см. Manning and Schutzc,
1999, ch. 10).
координаты лексемы в документе В словопозициях обычно содержится частота термина
в д о к у м е н т е ( п р и ч и н ы э т о г о р е ш е н и я о б с у ж д а ю т с я в г л а в е 6).

to, 9 9 3 4 2 7 :
( 1 , 6: ( 7 , 1 8 , 3 3 , 7 2 , 86, 231);
2, 5 : ( 1 , 17, 7 4 , 2 2 2 , 2 5 5 ) ;
4, 5 : ( 8 , 1 6 , 1 9 0 , 4 2 9 , 4 3 3 ) ;
5, 2 : ( 3 6 3 , 3 6 7 ) ;
7 , 3 : (13, 23,191,...);...)
be, 178239:
( 1 , 2 : (17, 25);
4, 5: (17, 1 9 1 , 2 9 1 , 4 3 0 , 4 3 4 ) ;
5, 3 : ( 1 4 , 19, 1 0 1 ) ; . . . )

Рис. 2.11. Пример координатного индекса. Слово to встречается в документах


993 477раз, причем в документе 1 оно встречается на позициях 7, 18, 33 и т.д.

Для обработки фразовых запросов нам по-прежнему необходимо иметь доступ к эле­
ментам инвертированного индекса для каждого отдельного термина. Как и прежде, м ы
начинаем с наиболее редко встречающегося термина, а затем все больше ограничиваем
список кандидатов. П р и выполнении операции слияния испрльзуется прежний общий
подход, н о вместо простой проверки, что оба термина содержатся в документе, теперь
необходимо убедиться, что и х координаты в документе соответствуют фразовому запро­
су. Д л я э т о г о н е о б х о д и м о п о д с ч и т а т ь р а с с т о я н и е м е ж д у с л о в а м и .

^ Пример 2.1. Обработка фразовых запросов. Д о п у с т и м , ч т о и н в е р т и р о в а н н ы е


с п и с к и д л я с л о в to и be и м е ю т т а к о й в и д , как н а р и с . 2 . 1 1 , а п о л ь з о в а т е л ь в в е л за­
п р о с to be ОГ not to be. Н а м н е о б х о д и м д о с т у п к и н в е р т и р о в а н н ы м с п и с к а м д л я
с л о в to, be, or и not. П р о в е р я е м п е р е с е ч е н и е и н в е р т и р о в а н н ы х с п и с к о в д л я слов
to и be. С н а ч а л а с м о т р и м н а д о к у м е н т ы , в к о т о р ы х с о д е р ж а т с я о б а с л о в а . З а т е м
н а х о д и м м е с т а в с п и с к а х , г д е к о о р д и н а т а л е к с е м ы д л я с л о в а be н а е д и н и ц у б о л ь ш е
к о о р д и н а т ы л е к с е м ы to. П о с л е э т о г о н а х о д и м с л е д у ю щ е е в х о ж д е н и е к а ж д о г о с л о ­
ва, к о о р д и н а т а л е к с е м к о т о р ы х н а ч е т ы р е б о л ь ш е , ч е м п е р в о е в х о ж д е н и е . В ука­
занных в ы ш е списках этим условиям удовлетворяют с л е д у ю щ и е записи.
Ю: (...; 4 : (..., 4 2 9 , 4 3 3 ) ; . . . )
be: (...; 4 : (.... 4 3 0 . 4 3 4 ) : . . . )

Т о ч н о т а к о й ж е м е т о д м о ж н о п р и м е н и т ь д л я п о и с к а с р е д и к б л и ж а й ш и х слов,
о п и с а н н о г о в п р и м е р е 1.1.

employment /3 place

З д е с ь / к о з н а ч а е т " с р е д и к с л о в (с о б е и х с т о р о н ) " . О ч е в и д н о , ч т о к о о р д и н а т н ы й
индекс вполне подходит для обработки таких запросов, а двухсловный индекс —
н е п о д х о д и т . Н а р и с . 2.12 п р о д е м о н с т р и р о в а н а л г о р и т м п о и с к а с р е д и к б л и ж а й ­
ш и х с л о в ; м ы е щ е р а с с м о т р и м е г о в у п р а ж н е н и и 2.12.
Positional Intersect^, pi, k)
1 answer <— ()
- w h i l e p i Ф N I L and рг Ф N I L
I d o if docID(p ) t - docID(p ) 2

4 then/< (>
Л pp\ <r- positions(p ) x

б РРг <— positionsipz)


w h i l e рру Ф N I L
8 d o w h i l e pp * N I L
2

d o if \pos(ppi) - pos(pp )\ 2 <k


10 t h e n Add(Z, pos(pp )) 2

II else if pos(pp ) 2 > posipp i)


12 then break
pp 2 <- next(pp ) 2

14 while/^OandlZtOJ-po^pO^A:
15 d o Delete(Z[0])
16 f o r e a c h ps e I
d o Add(answer, (docIDipi), pos(pp\), ps)
18 p p , <r- next\pp ) x

19 p <r-
x next{p ) x

20 p 4-
2 next(p ) 2

21 else if docIDip ) x < doclD(p ) 2

t h e n p <— next(pi) x

23 else р г next(p ) 2

24 return a n s w e r

Puc. 2.72. Алгоритм пересечения инвертированных списков pi и р с учетом близости терминов. 2

оритм находит места, в которых два термина встречаются на расстоянии не более к слов, и
возвращает список троек, состоящих из идентификатора документа doclD, а также коорди­
нат терминов в списках P/up 2

Размер координатного индекса. Применение координатного индекса существенно


у в е л и ч и в а е т о б ъ е м х р а н и м ы х д а н н ы х , д а ж е если и с п о л ь з о в а т ь к о м п а к т н о е п р е д с т а в л е ­
ние координат, как описано в разделе 5.3. Действительно, переход к координатному ин­
дексу т а к ж е и з м е н я е т а с и м п т о т и ч е с к у ю с л о ж н о с т ь о п е р а ц и и п е р е с е ч е н и я и н в е р т и р о в а н ­
ных списков, поскольку количество сравниваемых элементов теперь ограничено не ко­
л и ч е с т в о м д о к у м е н т о в , а к о л и ч е с т в о м с л о в о у п о т р е б л е н и й в к о л л е к ц и и д о к у м е н т о в Т.
И н а ч е г о в о р я , с л о ж н о с т ь л о г и ч е с к о г о з а п р о с а р а в н а 0 ( 7 ) , а н е Q(N). О д н а к о в б о л ь ш и н ­
стве п р и л о ж е н и й э т о у ж е н е и з б е ж н о , п о т о м у ч т о б о л ь ш и н с т в о п о л ь з о в а т е л е й р а с с ч и т ы ­
вают, ч т о с и с т е м а о б л а д а е т ф у н к ц и о н а л ь н о с т ь ю п о и с к а ф р а з о в ы х з а п р о с о в и з а п р о с о в с
учетом близости терминов.
Рассмотрим требования к объему хранимых данных, возникающие при использова­
нии к о о р д и н а т н о г о и н д е к с а . Т е п е р ь в с л о в о п о з и ц и я х н е о б х о д и м о м е с т о д л я х р а н е н и я
координаты термина. Следовательно, размер индекса зависит о т среднего размера доку­
мента. Т и п и ч н а я в е б - с т р а н и ц а с о д е р ж и т м е н ь ш е т ы с я ч и т е р м и н о в , н о т а к и е д о к у м е н т ы ,
как б и р ж е в ы е л и с т и н г и к о м и с с и и S E C , к н и г и , а т а к ж е н е к о т о р ы е э п и ч е с к и е п о э м ы , с о ­
держит более ста тысяч терминов. Рассмотрим термин с о средней частотой появления,
равной единице среди тысячи терминов. В результате для обработки больших докумен­
тов требования к объему памяти, предназначенной для хранения инвертированного спи­
ска, в о з р а с т а ю т н а д в а п о р я д к а .

Размер Число Число координат термина


документа словопозиций на одну словопозицию
1 ООО 1 1
100 000 1 юо
Несмотря н а т о что точные числа зависят о т типа индексируемых документов и язы­
ка, с у щ е с т в у ю т э м п и р и ч е с к и е п р а в и л а , с о г л а с н о к о т о р ы м р а з м е р к о о р д и н а т н о г о и н д е к с а
в д в а - ч е т ы р е р а з а б о л ь ш е , ч е м р а з м е р н е к о о р д и н а т н о г о (документного) и н д е к с а , а сжа­
тый координатный индекс составляет о т трети д о половины размера исходного текста
( п о с л е у д а л е н и я р а з м е т к и и т.д.) в н е с ж а т ы х д о к у м е н т а х . К о н к р е т н ы е ч и с л а д л я коллек­
ций, к о т о р ы е м ы р а с с м а т р и в а е м в к а ч е с т в е п р и м е р а , п р и в е д е н ы в т а б л . 5.1 и 5.6.

2.4.3. Комбинированные схемы


Стратегии, основанные на двухсловных и координатных'индексах, можно плодотвор­
но к о м б и н и р о в а т ь . Е с л и п о л ь з о в а т е л и ч а с т о п о с ы л а ю т з а п р о с ы н а п о и с к к о н к р е т н о й
ф р а з ы , н а п р и м е р Michael Jackson, т о п р о д о л ж а т ь п е р е с е к а т ь с о о т в е т с т в у ю щ и е и н в е р ­
тированные списки нецелесообразно. Комбинированная стратегия д л я обработки опре­
деленных запросов использует индекс фраз или двухсловный индекс, а для всех осталь­
ных фразовых запросов — только координатный индекс. В индекс фраз включаются час­
то встречающиеся запросы пользователей. Однако это н е единственный критерий:
наиболее дорогостоящими являются т е фразовые запросы, в которых отдельные слова
являются распространенными, н о вся фраза встречается относительно редко. Например,
д о б а в л е н и е с л о в о с о ч е т а н и я Britney Spears в и н д е к с ф р а з м о ж е т л и ш ь п р и м е р н о в т р и
раза ускорить обработку этого запроса, поскольку большинство документов, содержа­
щ и х хотя б ы одно из этих слов, будут правильными ответами, в т о время как добавление
The Who м о ж е т у с к о р и т ь о б р а б о т к у э т о г о з а п р о с а в т ы с я ч у р а з . С л е д о в а т е л ь н о , в т о р о й
вариант является более предпочтительным, хотя такой запрос встречается реже.
В р а б о т е У и л ь я м с а и д р . ( W i l l i a m s e t al., 2004) п р и в о д и т с я о ц е н к а е щ е б о л е е с л о ж н о й
схемы, в которой используются индексы двух описанных типов, а также частичный и н
деке следующих слов, который представляет собой промежуточное решение п о отноше­
н и ю к д в у м п е р в ы м . Д л я к а ж д о г о т е р м и н а индекс "следующее слово " ( n e x t w o r d i n d e x )
хранит записи о терминах, которые следуют з а указанным термином в документе. Такая
стратегия позволяет обработать типичный набор фразовых веб-запросов примерно в че­
тыре раза быстрее, ч е м при использовании координатного индекса, в т о ж е время требо­
вания к размеру хранимых д а н н ы х увеличиваются л и ш ь н а 26%.

*Р Упражнение 2.8 [*]. Р а с с м о т р и м д в у х с л о в н ы й и н д е к с . П р и в е д и т е п р и м е р доку-


. м е н т а , к о т о р ы й будет в о з в р а щ е н п р и о б р а б о т к е з а п р о с а New York University, хотя
на самом деле его возвращать не следовало.
Упражнение 2.9 [*]. Н и ж е п р и в е д е н а ч а с т ь к о о р д и н а т н о г о и н д е к с а в ф о р м а т е
t e r m : d o c l : ( p o s i t i o n l , p o s i t i o n 2 , . . . ) ; d o c 2 : ( p o s i t i o n 1, p o s i t i o n 2 , . . . ) и т.д.
angels: 2 : ( 3 6 , 1 7 4 , 2 5 2 , 6 5 1 ) ; 4 : ( 1 2 , 2 2 , 1 0 2 , 4 3 2 ) ; 7 : ( 1 7 ) ;
fools: 2 : ( 1 , 1 7 , 7 4 , 2 2 2 ) ; 4 : ( 8 , 7 8 , 1 0 8 , 4 5 8 ) ; 7 : ( 3 , 1 3 , 2 3 , 1 9 3 ) ;
fear: 2 : ( 8 7 , 7 0 4 , 7 2 2 , 9 0 1 ) ; 4 : ( 1 3 , 4 3 , 1 1 3 , 4 3 3 ) ; 7 : ( 1 8 , 3 2 8 , 5 2 8 ) ;
in: 2 : ( 3 , 3 7 , 7 6 , 4 4 4 , 8 5 1 ) ; 4 : ( 1 0 , 2 0 , 1 1 0 , 4 7 0 , 5 0 0 ) ; 7 : ( 5 , 1 5 , 2 5 , 1 9 5 ) ;
rush: 2 : ( 2 , 6 6 , 1 9 4 , 3 2 1 , 7 0 2 ) ; 4 : ( 9 , 6 9 , 1 4 9 , 4 2 9 , 5 6 9 ) ; 7 : ( 4 , 1 4 , 4 0 4 ; ;
to: 2: ( 4 7 , 8 6 , 2 3 4 , 9 9 9 ) ; 4 : ( 1 4 , 2 4 , 7 7 4 , 9 4 4 ) ; 7 : ( 1 9 9 , 3 1 9 , 5 9 9 , 7 0 9 ) ;
tread: 2 : ( 5 7 , 9 4 , 3 3 3 ) ; 4 : ( 1 5 , 3 5 , 1 5 5 ) ; 7: ( 2 0 , 3 2 0 ) ;
where: 2 : ( 6 7 , 1 2 4 , 3 9 3 , 1 0 0 1 ) ; 4 : ( 1 1 , 4 1 , 1 0 1 , 4 2 1 , 4 3 1 ) ; 7 : ( 1 6 , 3 6 , 7 3 6 ) ;

Какие документы (если о н и есть) удовлетворяют к а ж д о м у из следующих фразо­


вых запросов?

1. "fools rush in"

2. "fools rush in" and "angels fear to tread"


Упражнение 2.10 [*]. П р о а н а л и з и р у й т е с л е д у ю щ и й ф р а г м е н т к о о р д и н а т н о г о и н ­
декса, и м е ю щ е г о ф о р м а т
w o r d : d o c u m e n t : ( p o s i t i o n , position, ...);document: ( p o s i t i o n , . . . )

Gates: 1: ( 3 ) ; 2 : ( 6 ) ; 3 : ( 2 , 1 7 ) ; 4 : ( 1 ) ;
IBM: 4 : (3); 7: (14);
Microsoft: 1: ( 1 ) ; 2 : ( 1 , 2 1 ) ; 3 : ( 3 ) ; 5 : ( 1 6 , 2 2 , 5 1 ) ;

О п е р а т о р /к в з а п р о с е wordl /к W 0 r d 2 н а х о д и т п о я в л е н и е с л о в а wordl в о к р е с т н о ­
сти к с л о в о т с л о в а word2 ( с о б е и х с т о р о н ) , г д е к — п о л о ж и т е л ь н о е ц е л о е ч и с л о .
Т а к и м о б р а з о м , п р и к - 1 с л о в о wordl д о л ж н о б ы т ь с о с е д о м с л о в а word2.

1. О п и ш и т е н а б о р д о к у м е н т о в , у д о в л е т в о р я ю щ и х з а п р о с Gates 12 Microsoft
2 . О п и ш и т е м н о ж е с т в а з н а ч е н и й к, п р и к о т о р ы х з а п р о с Gates /к Microsoft воз­
вращает разные наборы документов.

Упражнение 2.11 [**]. П р о а н а л и з и р у й т е о б щ у ю п р о ц е д у р у с л и я н и я д в у х и н в е р ­


тированных списков для заданного документа и определите позиции в документе,
где у д о в л е т в о р я е т с я у с л о в и е /к ( в п р и н ц и п е , д л я к а ж д о г о т е р м и н а с у щ е с т в у ю т н е ­
сколько позиций, г д е о н появляется в документе). Начните с указателя на пози­
ц и ю , в к о т о р о й в п е р в ы е появляется к а ж д ы й т е р м и н , и п е р е х о д и т е д а л е е п о с п и с к у
его п о я в л е н и й в д о к у м е н т е , п р о в е р я я у с л о в и е /к. К а ж д ы й п е р е н о с у к а з а т е л я сле­
дует считать о т д е л ь н ы м ш а г о м . О б о з н а ч и м через L о б щ е е количество появлений
двух терминов в документе. Какова 0-сложность процедуры слияния, если м ы же­
лаем в результате получить инвертированный список, содержащий позиции тер­
минов?
Упражнение 2.12 [**]. П р о д у м а й т е а д а п т а ц и ю о с н о в н о г о а л г о р и т м а п е р е с е ч е н и я
двух и н в е р т и р о в а н н ы х с п и с к о в (см. р и с . 1.6) к варианту, изображенному н а рис. 2.12,
в к о т о р о м обрабатываются запросы в окрестности термина. Н а и в н ы й алгоритм
д л я э т о й о п е р а ц и и и м е е т с л о ж н о с т ь 0(РЬ ?'),
па где Р — сумма длин инвертирован­
н ы х с п и с к о в (т.е. с у м м а д о к у м е н т н ы х ч а с т о т ) , a — максимальная длина доку­
м е н т а (в л е к с е м а х ) .

1. Т щ а т е л ь н о и з у ч и т е а л г о р и т м и о б ъ я с н и т е , к а к о н р а б о т а е т .

2. К а к о в а с л о ж н о с т ь а л г о р и т м а ? Т щ а т е л ь н о о б о с н у й т е с в о й ответ.
3. С у щ е с т в у е т л и б о л е е э ф ф е к т и в н ы й а л г о р и т м д л я о б р а б о т к и о п р е д е л е н н ы х за­
просов и распределений данных? Какую сложность он имеет?
Упражнение 2.13 [**]. П р е д п о л о ж и м , ч т о н е о б х о д и м о и с п о л ь з о в а т ь п р о ц е д у р у
пересечения лишь для определения списка документов, удовлетворяющих усло­
в и ю Л:, н е в о з в р а щ а я и н в е р т и р о в а н н ы й с п и с о к , к а к п о к а з а н о н а р и с . 2 . 1 2 . Д л я
п р о с т о т ы б у д е м с ч и т а т ь , ч т о k > 2. О б о з н а ч и м ч е р е з L о б щ е е к о л и ч е с т в о п о я в л е ­
ний двух терминов в коллекции документов (т.е. сумму и х частот в коллекции).
К а к о е и з с л е д у ю щ и х у т в е р ж д е н и й я в л я е т с я и с т и н н ы м ? О б о с н у й т е с в о й ответ.
1. С л и я н и е м о ж н о в ы п о л н и т ь з а к о л и ч е с т в о ш а г о в , к о т о р о е л и н е й н о з а в и с и т о т
п а р а м е т р а L и н е з а в и с и т о т п а р а м е т р а к, п р и ч е м м о ж н о д о к а з а т ь , ч т о к а ж д ы й
указатель перемещается только вправо.
2. С л и я н и е м о ж н о в ы п о л н и т ь з а к о л и ч е с т в о ш а г о в , к о т о р о е л и н е й н о з а в и с и т о т
п а р а м е т р а L и н е з а в и с и т о т п а р а м е т р а к, н о у к а з а т е л ь м о ж е т п е р е м е щ а т ь с я
н е м о н о т о н н о (т.е. н е т о л ь к о в п р а в о ) .

3. В н е к о т о р ы х с л у ч а я х д л я с л и я н и я м о ж е т п о т р е б о в а т ь с я кЬ ш а г о в .
Упражнение 2.14 [**]. К а к с и с т е м а и н ф о р м а ц и о н н о г о п о и с к а м о ж е т и с п о л ь з о ­
вать с о ч е т а н и е к о о р д и н а т н о г о и н д е к с а и с т о п - с л о в ? В ч е м з а к л ю ч а е т с я п о т е н ц и ­
альная проблема и как ее разрешить?

2.5. Библиография и рекомендации для дальнейшего


чтения
Исчерпывающее обсуждение посимвольной обработки текстов н а восточно-азиатских
я з ы к а х и з л о ж е н о в р а б о т е Л у н д е ( L u n d e , 1998). В е р о я т н о , н а и б о л е е р а с п р о с т р а н е н н ы м
подходом к индексированию китайских текстов являются индексы биграмм, хотя неко­
торые системы используют выделение слов из строки. Из-за различия между языком
и системой письменности выделение слов из строки наиболее полезно при обработке
я п о н с к и х т е к с т о в ( L u k a n d K w o k , 2 0 0 2 ; K i s h i d a e t al., 2 0 0 5 ) . С т р у к т у р а и н д е к с а &-грамм,
построенного н а основе несегментированного текста, отличается о т структуры, описан­
н о й в р а з д е л е 3.2.2: т а м с л о в а р ь &-грамм с с ы л а е т с я н а с п и с о к э л е м е н т о в в о б ы ч н о м с л о ­
варе, в т о в р е м я к а к з д е с ь о н с с ы л а е т с я н е п о с р е д с т в е н н о н а и н в е р т и р о в а н н ы е с п и с к и д о ­
кумента. Дальнейшее обсуждение вопросов выделения китайских слов можно найти
в работах Ш п р о т а , Эмерсона, Цзэна, Г а о и д р . (Sproat et al., 1 9 9 6 ; Sproat a n d E m e r s o n ,
2 0 0 3 ; T s e n g e t al., 2 0 0 5 ; и G a o e t al., 2 0 0 5 ) .
» У ч е т и с т и н н о г о регистра р а с с м а т р и в а е т с я в р а б о т е Л и т а и соавторов (Lita e t al., 2003).
№ б з о р работ по машинной морфологии содержится в работах Шпрота, Бисли и Картуне-
b(Sproat, 1992; B e e s l e y and Karttunen, 2 0 0 3 ) .
Идентификация языка, вероятно, впервые была применена в криптографии; напри-
ЧЬер, в р а б о т е К о х е й м а ( K o n h e i m , 1981) о п и с а н а л г о р и т м и д е н т и ф и к а ц и и я з ы к а н а о с н о в е
^ г р а м м символов. Несмотря на т о что позднее, п о мере все более широкого использова-
ШЯ т е к с т о в в э л е к т р о н н о й ф о р м е , б ы л и и с п о л ь з о в а н ы д р у г и е м е т о д ы , в ч а с т н о с т и н а о с -
- в е поиска характерных служебных слов и комбинаций букв, многие л ю д и довольно
п е ш н о и с с л е д о в а л и м е т о д fc-грамм (Beesley, 1 9 9 8 ; C a v n a r a n d T r e n k l e , 1994; D u n n i n g ,
• 9 9 4 ) . Определение языка письменного текста является относительно простой пробле­
м о й , в т о в р е м я как и д е н т и ф и к а ц и я я з ы к а з в у ч а щ е й р е ч и п р о д о л ж а е т сталкиваться с труд-
Ь о с т я м и ( H u g h e s e t al., 2 0 0 6 ) .
• Описанию экспериментов и обсуждению преимуществ и недостатков стемминга для
Ь н г л и й с к о г о я з ы к а п о с в я щ е н ы р а б о т ы С о л т о н а , Х а р м а н а , К р о в е ц а и Х а л л а (Salton, 1989;
Ш а г т а п , 1 9 9 1 ; K r o v e t z , 1 9 9 5 ; H u l l , 1 9 9 6 ) . В р а б о т е Х о л л и н к а и д р . ( H o l l i n k e t al., 2 0 0 4 )
I приведены п о д р о б н ы е результаты, х а р а к т е р и з у ю щ и е э ф ф е к т и в н о с т ь м е т о д о в , у ч и т ы в а ю ­
щих языковую специфику на примере восьми европейских языков. В процентном выра­
жении макроусредненная средняя точность, по сравнению с базовой системой, после
удаления диакритических символов увеличивается на 2 3 % (особенно полезным этот спо­
соб оказался п р и обработке текстов на финском, французском и шведском языках).
Стемминг особенно эффективен при обработке финских (улучшение н а 30%) и испан­
ских (улучшение н а 10%) текстов, однако д л я всех остальных языков, включая англий­
ский, в ы и г р ы ш с о с т а в и л о т 0 д о 5 % , а р е з у л ь т а т ы , п о л у ч е н н ы е с п о м о щ ь ю л е м м а т и з а -
ции, е щ е х у ж е . Р а з д е л е н и е с л о ж н ы х с л о в д а е т в ы и г р ы ш д л я ш в е д с к о г о я з ы к а н а 2 5 % ,
Жля н е м е ц к о г о — н а 1 5 % , а д л я г о л л а н д с к о г о — т о л ь к о н а 4 % В о т л и ч и е о т м е т о д о в ,
у ч и т ы в а ю щ и х с п е ц и ф и к у к о н к р е т н ы х я з ы к о в , и н д е к с а ц и я с и м в о л ь н ы х Jt-грамм ( к а к в
китайском языке) часто приводит к аналогичным или даже лучшим результатам: исполь­
зование внутрисловных 4-грамм вместо слов дает выигрыш в 3 7 % при работе с финским
языком, 2 7 % — при работе со шведским языком и 2 0 % — при работе с немецким язы­
ком, хотя для остальных языков, таких как голландский, испанский и английский, выиг­
р ы ш оказывается незначительным. В работе Томлисона (Tomlinson, 2003) представлены
п р и м е р н о т а к и е ж е р е з у л ь т а т ы . Б а р - И л а н и Г у т м а н (Ваг-Пап a n d G u t m a n , 2 0 0 5 ) п р е д п о ­
л о ж и л и , ч т о в в о в р е м я и х и с с л е д о в а н и я (2003) о с н о в н ы е к о м м е р ч е с к и е п о и с к о в ы е веб-
системы испытывали трудности о т недостатка подходящих методов обработки, учиты­
вающих специфику языка; например, поисковая система w w w . g o o g l e . f r в запросе
electricite о к а з а л а с ь н е с п о с о б н о й о т д е л и т ь а р т и к л ь Г и в о з в р а щ а л а с с ы л к и н а с т р а н и ц ы ,
12
на к о т о р ы х с о д е р ж а л а с ь т о ч н а я с т р о к а в и д а " а р т и к л ь + и м я с у щ е с т в и т е л ь н о е " .

Классическое описание указателей пропусков д л я систем информационного поиска


м о ж н о н а й т и в р а б о т е М о ф ф а т а и Ц о б е л я (Moffat a n d Z o b e l , 1996). Б о л е е с л о ж н ы е м е т о ­
д ы о п и с а н ы в р а б о т е Б о л д и и В и н ь я (Boldi a n d V i g n a , 2 0 0 5 ) . О с н о в н о й с т а т ь е й п о а л г о ­
р и т м а м э т о г о т и п а с ч и т а е т с я р а б о т а П у (Pugh, 1990), в к о т о р о й о п и с а н ы м н о г о у р о в н е в ы е
указатели пропусков, обеспечивающие ожидаемую сложность поиска по спискам с оцен­
кой C>(log Р) ( э т а с л о ж н о с т ь с р а в н и м а с о ц е н к о й с л о ж н о с т и п о и с к а п о д р е в о в и д н ы м
структурам данных) с меньшей сложностью реализации. Н а практике эффективность ис-

1 2
Для русского языка можно считать доказанной важность учета морфологии в процессе по­
иска: все известные коммерческие системы в настоящий момент ее учитывают. — Примеч. ред.
пользования указателей пропусков зависит от параметров системы. В работе М о ф ф а т а и
Ц о б е л я (Moffat a n d Z o b e l , 1996) с о о б щ а е т с я о к о н ъ ю н к т и в н ы х з а п р о с а х , к о т о р ы е с п о ­
м о щ ь ю указателей п р о п у с к о в о б р а б а т ы в а л и с ь п р и м е р н о в пять р а з б ы с т р е е , н о Б а л е и со­
а в т о р ы (Bahle et al., 2002) с о о б щ а ю т , ч т о на с о в р е м е н н ы х п р о ц е с с о р а х и с п о л ь з о в а н и е ука­
зателей п р о п у с к о в з а м е д л я е т поиск, поскольку п р и э т о м увеличивается р а з м е р инвертиро­
в а н н о г о с п и с к а (т.е. н а э ф ф е к т и в н о с т ь п о и с к а в л и я е т в о с н о в н о м с к о р о с т ь в в о д а - в ы в о д а
диска). В п р о т и в о п о л о ж н о с т ь э т о м у Ш т р о м а н и К р о ф т (Strohman and Croft, 2 0 0 7 ) вновь
продемонстрировали хорошую производительность, достигнутую благодаря указателям
пропусков в сочетании с архитектурой с и с т е м ы , п р е д н а з н а ч е н н о й д л я о п т и м и з а ц и и р а б о т ы
с большими объемами памяти и несколькими ядрами современных процессоров.
Д ж о н с о н и с о а в т о р ы ( J o h n s o n et al., 2 0 0 6 ) с о о б щ а ю т , ч т о 1 1 , 7 % в с е х з а п р о с о в в двух
логах веб-систем в 2002 году были фразовыми, хотя Камменхубер и соавторы (Kammen-
huber et al., 2 0 0 6 ) у т в е р ж д а ю т , ч т о ф р а з о в ы е з а п р о с ы о б р а з у ю т т о л ь к о 3 % в с е х з а п р о с о в
на д р у г о м н а б о р е д а н н ы х . С и л ь в е р с т е й н и с о а в т о р ы (Silverstein et al., 1999) о т м е ч а ю т ,
что м н о г и е з а п р о с ы , н е с о д е р ж а щ и е я в н ы х ф р а з о в ы х о п е р а т о р о в , н а с а м о м д е л е я в л я ю т ­
ся н е я в н ы м и з а п р о с а м и н а п о и с к ф р а з .
Глава 3
1
Словари и нечеткий поиск

В главах 1 и 2 и з л о ж е н ы и д е и , л е ж а щ и е в о с н о в е и н в е р т и р о в а н н ы х и н д е к с о в , к о т о р ы е
предназначены для обработки булевых запросов и запросов с учетом близости слов за­
проса в документе. В данной главе рассматриваются методы, устойчивые к опечаткам
в з а п р о с а х и а л ь т е р н а т и в н ы м в а р и а н т а м н а п и с а н и я с л о в . В р а з д е л е 3.1 о п и с ы в а ю т с я
структуры данных, облегчающие поиск терминов в лексиконе инвертированного индек­
са. В р а з д е л е 3.2 и с с л е д у е т с я и д е я о запросе с джокерами (wildcard query), т.е. о з а п р о с е ,
имеющем вид a * e * i * o * u * и предназначенном д л я поиска документов, содержащих
любой термин, в который входят все пять гласных букв в указанном порядке. Символ *
о з н а ч а е т л ю б у ю ( в о з м о ж н о , п у с т у ю ) с т р о к у с и м в о л о в . П о л ь з о в а т е л и п о с ы л а ю т т а к и е за­
просы в поисковые системы, когда о н и сомневаются в правильном написании термина
или и щ у т д о к у м е н т ы , с о д е р ж а щ и е р а з н ы е в а р и а н т ы у к а з а н н о г о т е р м и н а н а п р и м е р , за­
прос a u t o m a t * предназначен для поиска документов, содержащих термин a u t o m a t i c ,
a u t o m a t i o n или a u t o m a t e d .
В р а з д е л е 3.3 р а с с м а т р и в а ю т с я д р у г и е ф о р м ы н е т о ч н о с ф о р м у л и р о в а н н ы х з а п р о с о в с
акцентом на орфографические ошибки. Пользователи делают орфографические ошибки
либо случайно, либо потому, что искомый термин (например, H e r m a n ) в коллекции д о ­
кументов может встречаться в различных вариантах написания. В этом разделе подробно
описывается множество приемов исправления орфографических ошибок как в отдельных
т е р м и н а х , т а к и в о в с е й с т р о к е з а п р о с а в ц е л о м . В р а з д е л е 3.4 и с с л е д у е т с я м е т о д п о и с к а
в лексиконе фонетически схожих терминов. Это может оказаться особенно полезным в
ситуациях, к о г д а п о л ь з о в а т е л ь н е з н а е т т о ч н о , к а к п и ш е т с я и м я с о б с т в е н н о е в д о к у м е н ­
тах из коллекции (например, п р и поиске имени H e r m a n ) .
Поскольку в этой главе разрабатываются разные варианты инвертированных индек­
с о в , м ы и н о г д а и с п о л ь з у е м в ы р а ж е н и е стандартный инвертированный индекс (standard
inverted i n d e x ) , п о д р а з у м е в а я и н в е р т и р о в а н н ы й и н д е к с , о п и с а н н ы й в г л а в а х 1 и 2 , т . е .
индекс, в к о т о р о м к а ж д о м у п р о и н д е к с и р о в а н н о м у т е р м и н у с о о т в е т с т в у е т и н в е р т и р о в а н ­
ный список, в котором перечислены документы из коллекции.

3.1. Поисковые структуры для словарей


Имея инвертированный индекс и запрос, необходимо определить, существует ли в
тексиконе к а ж д ы й т е р м и н и з з а п р о с а , и в с л у ч а е п о л о ж и т е л ь н о г о о т в е т а и д е н т и ф и ц и р о ­
вать указатель на соответствующие термину словопозиций. В этой операции просмотра

1
В англоязычной литературе чаще употребляется "fuzzy", чем "tolerant". Соответственно, мы
выбрали наиболее распространенный русский вариант для перевода: "нечеткий" поиск, вместо не­
понятного русскоязычному читателю выражения "толерантный" поиск. Чуть реже используется
термин "поиск по сходству". — Примеч. ред.
лексикона используется классическая структура данных словарь ( d i c t i o n a r y ) . Д л я ее
реализации существует два семейства методов: хеширование и деревья поиска. В литера­
т у р е по с т р у к т у р а м д а н н ы м э л е м е н т ы л е к с и к о н а (в н а ш е м с л у ч а е — т е р м и н ы ) ч а с т о на­
з ы в а ю т с я ключами (keys). В ы б о р р е ш е н и я ( х е ш и р о в а н и е и л и д е р е в о п о и с к а ) з а в и с и т от
м н о ж е с т в а о б с т о я т е л ь с т в : 1) с к о л ь к о к л ю ч е й т р е б у е т с я , 2) о с т а н е т с я л и э т о к о л и ч е с т в о
н е и з м е н н ы м и л и б у д е т ч а с т о и з м е н я т ь с я (во в т о р о м с л у ч а е в о з н и к а е т н о в ы й в о п р о с :
"Хотите ли вы только включать в словарь новые ключи или еще и удалять старые?").
3) к а к о в а о т н о с и т е л ь н а я ч а с т о т а о б р а щ е н и я к р а з л и ч н ы м к л ю ч а м .
Некоторые поисковые системы для просмотра словаря используют хеширование
(hashing). К а ж д ы й э л е м е н т с л о в а р я ( к л ю ч ) о т о б р а ж а е т с я в ц е л о е ч и с л о ( х е ш и р у е т с я ) на
достаточно большом интервале, в котором коллизии маловероятны; коллизии разреша­
ю т с я с п о м о щ ь ю в с п о м о г а т е л ь н ы х с т р у к т у р , и н о г д а т р е б у ю щ и х д о п о л н и т е л ь н о й под­
2
держки. В момент запроса каждый термин запроса хешируется отдельно, затем совер­
ш а е т с я п е р е х о д по у к а з а т е л ю н а с о о т в е т с т в у ю щ у ю з а п и с ь . Д л я р а з р е ш е н и я к о л л и з и й
и с п о л ь з у е т с я д о п о л н и т е л ь н а я л о г и к а . К с о ж а л е н и ю б л и з к и е в а р и а н т ы т е р м и н а из за­
проса найти непросто (например, варианты слова r e s u m e со з н а к о м ударения и без),
поскольку они могут хешироваться в совершенно разные целые числа. Например, мы
н е м о ж е м н а й т и в с е т е р м и н ы , н а ч и н а ю щ и е с я с п р е ф и к с а a u t o m a t i c ( с м . р а з д е л 3.2).
В средах, где размер лексикона постоянно растет (например, в вебе), хеш-функция,
разработанная с учетом текущей ситуации, через несколько лет уже может оказаться
неработоспособной.
М н о г и е из э т и х п р о б л е м р е ш а ю т с я с п о м о щ ь ю д е р е в ь е в п о и с к а ; н а п р и м е р , о н и п о ­
зволяют легко находить все термины лексикона, начинающиеся со слова a u t o m a t . Наи­
более и з в е с т н ы м д е р е в о м поиска я в л я е т с я двоичное дерево (binary tree), в к о т о р о м к а ж д ы й
в н у т р е н н и й узел и м е е т д в а д о ч е р н и х узла. П о и с к т е р м и н а н а ч и н а е т с я с к о р н я д е р е в а .
К а ж д ы й в н у т р е н н и й узел ( в к л ю ч а я к о р е н ь ) п р е д с т а в л я е т с о б о й д в о и ч н ы й тест, в з а в и с и ­
м о с т и о т р е з у л ь т а т а к о т о р о г о п о и с к п р о д о л ж а е т с я п о о д н о м у и з д в у х п о д д е р е в ь е в , вет­
в я щ и х с я из д а н н о г о у з л а . Н а р и с . 3.1 п р и в е д е н о д в о и ч н о е д е р е в о п о и с к а , и с п о л ь з о в а н н о е
для организации словаря. Эффективный поиск (при котором количество сравнений со­
ставляет 0 ( l o g М)) требует, чтобы дерево было сбалансированным: количество терминов
в о б о и х п о д д е р е в ь я х л ю б о г о у з л а д о л ж н о б ы т ь о д и н а к о в ы м или о т л и ч а т ь с я т о л ь к о на
е д и н и ц у . П р и н ц и п и а л ь н ы м м о м е н т о м я в л я е т с я восстановление баланса: п о с л е в с т а в к и
или удаления термина следует восстановить баланс двоичного дерева.
Для того чтобы облегчить восстановление баланса, м о ж н о допустить наличие не­
скольких поддеревьев у каждого внутреннего узла в фиксированном интервале. Как пра­
в и л о , д л я о р г а н и з а ц и и с л о в а р е й и с п о л ь з у е т с я В-дерево ( B - t r e e ) — д е р е в о , к о л и ч е с т в о
д о ч е р н и х у з л о в к о т о р о г о у к а ж д о г о в н у т р е н н е г о узла и з м е н я е т с я в д и а п а з о н е \а, Ь], где а
и Ъ — с о о т в е т с т в у ю щ и е п о л о ж и т е л ь н ы е ц е л ы е ч и с л а . Н а р и с . 3.2 п о к а з а н п р и м е р , в ко­
тором а = 2, а Ъ - 4. Как и в д в о и ч н о м д е р е в е , и з о б р а ж е н н о м на р и с . 3 . 1 , к а ж д ы й узел
ветвления, р а с п о л о ж е н н ы й под внутренним узлом, представляет собой диапазон строк.
В-дерево может рассматриваться как дерево, в котором несколько уровней двоичного
дерева "сливаются" в один. Это обстоятельство является особенно ценным преимущест­
в о м в с и т у а ц и я х , к о г д а ч а с т ь с л о в а р я х р а н и т с я н а д и с к е . В т а к о м с л у ч а е э т о с л и я н и е по­
зволяет заранее загружать в память узлы дерева, участвующие в следующих операциях

Хеширование без коллизий возможно с использованием совершенных хеш-функций, но они


несколько сложнее с точки зрения реализации и вычислений.
сравнения и поиска.. В таких случаях числа а и b определяются размерами блоков памя­
т и н а д и с к е . Б и б л и о г р а ф и я о д е р е в ь я х п о и с к а и В - д е р е в ь я х с о д е р ж и т с я в р а з д е л е 3.5.

Рис. 3.1. Дерево двоичного поиска. В данном примере, начиная с корня, термины лекси­
кона разделяются на два поддерева: в первом дереве записаны все слова начинающиеся
с букв от а до т, а во втором — все остальные

Рис. 3.2. В-дерево. В данном примере каждый внутренний узел имеет от двух до четырех до­
черних узлов

С л е д у е т п о д ч е р к н у т ь , что в о т л и ч и е от х е ш и р о в а н и я , д е р е в ь я п о и с к а м о г у т б ы т ь ис
пользованы только с упорядоченными алфавитами; например, 26 букв алфавита англий­
с к о г о я з ы к а в с е г д а п е р е ч и с л я ю т с я в о п р е д е л е н н о м п о р я д к е о т А д о Z. Х о т я т а к и е я з ы к и
как к и т а й с к и й , и з н а ч а л ь н о н е и м е л и о д н о з н а ч н о г о п о р я д к а с и м в о л о в , в н а с т о я щ е е в р е м я ,
все я з ы к и ( в к л ю ч а я к и т а й с к и й и я п о н с к и й ) а д а п т и р о в а л и д л я с е б я с т а н д а р т н у ю систему
(Unicode), в которой символы упорядочены.
3.2. Запросы с джокером
З а п р о с ы с д ж о к е р а м и и с п о л ь з у ю т с я в с л е д у ю щ и х с и т у а ц и я х : 1) к о г д а п о л ь з о в а т е л ь
не з н а е т , к а к п р а в и л ь н о п и ш е т с я т е р м и н ( н а п р и м е р , в а р и а н т ы S y d n e y и л и S i d n e y
можно объединить в запросе с джокером S * d n e y ) ; 2) когда пользователь знает о суще­
ствовании нескольких вариантов написания термина и (сознательно) ищет документы, в
которых содержится хотя бы один из этих вариантов (например, c o l o r и c o l o u r ) ;
3) к о г д а п о л ь з о в а т е л ь и щ е т д о к у м е н т ы , с о д е р ж а щ и е в а р и а н т т е р м и н а , у н и ф и ц и р о в а н н ы й
в результате стемминга, но не уверен, что поисковая система выполняет стемминг
(например, варианты j u d i c i a l и j u d i c i a r y можно объединить в шаблонном запросе
j u d i c i a * ) ; 4) когда пользователь не уверен в правильности воспроизведения ино­
странного слова или фразы (например, U n i v e r s i t * Stuttgart).
Запрос, и м е ю щ и й вид, например, т о п * , называется запросом с замыкающим джокером
(trailing w i l d c a r d q u e r y ) , п о с к о л ь к у с и м в о л * и с п о л ь з у е т с я т о л ь к о о д и н р а з в с а м о м к о н ц е
поисковой строки. Д л я обработки таких запросов удобно использовать дерево поиска
над словарем: перемещаясь п о дереву вниз и поочередно переходя п о ветвям, соответст­
вующим буквам т , о и п, можно перебрать все множество W терминов словаря с пре­
ф и к с о м т о п . В з а к л ю ч е н и е , п о с л е \Щ п р о с м о т р о в с т а н д а р т н о г о и н в е р т и р о в а н н о г о и н ­
декса, м о ж н о и з в л е ч ь в с е д о к у м е н т ы , с о д е р ж а щ и е х о т я б ы о д и н т е р м и н и з м н о ж е с т в а W.
А ч т о м о ж н о сказать о шаблонных запросах, в которых символ * не обязательно сто­
ит в к о н ц е п о и с к о в о й с т р о к и ? П р е ж д е ч е м р е ш и т ь э т у о б щ у ю з а д а ч у , р а с с м о т р и м н е ­
б о л ь ш о е о б о б щ е н и е з а п р о с а с з а м ы к а ю щ и м д ж о к е р о м . С н а ч а л а р а с с м о т р и м запросы с
ведущим джокером (leading w i l d c a r d q u e r y ) , т . е . з а п р о с ы в и д а * m o n . З а т е м р а с с м о т р и м
обратные В-деревья (reverse B-tree) н а д словарем, в которых к а ж д ы й путь от корня
к л и с т у в В - д е р е в е с о о т в е т с т в у е т т е р м и н у в с л о в а р е , з а п и с а н н о м у в обратном порядке
(backwards). И т а к , т е р м и н l e m o n в В-дереве будет п р е д с т а в л е н п у т е м r o o t - n - o - m - e - 1 .
П р о х о д в н и з п о о б р а т н о м у В - д е р е в у п о з в о л я е т п е р е ч и с л и т ь в л е к с и к о н е в с е т е р м и н ы R,
имеющие заданный суффикс.
Фактически с помощью обычного В-дерева в сочетании с обратным В-деревом мож­
н о р е ш и т ь е щ е б о л е е о б щ у ю з а д а ч у : о б р а б о т к у з а п р о с о в , в к о т о р ы х е с т ь о д и н с и м в о л *,
например s e * m o n . П р и этом для перечисления множества W терминов, содержащих
префикс s e и непустой суффикс, можно использовать обычное В-дерево, а д л я перечис­
ления множества R терминов, заканчивающихся суффиксом т о п , можно использовать
о б р а т н о е В - д е р е в о . Д а л е е м ы о п р е д е л я е м п е р е с е ч е н и е Wr\R э т и х д в у х м н о ж е с т в и полу­
чаем множество терминов, начинающихся префиксом s e и заканчивающихся суффик­
сом т о п (например, запрос Ь а * Ь а приведет к совпадению с термином Ь а из w n R ; такой
случай надо устранить). В заключение с п о м о щ ь ю стандартного инвертированного ин­
декса м о ж н о получить все документы, содержащие хотя б ы один термин из пересечения
Следовательно, с помощью нормального и обратного В-деревьев можно обрабатывать
запросы, содержащие один символ *.

3.2.1. Запросы с джокером общего вида


Перейдем к изучению двух м е т о д о в обработки запросов с д ж о к е р о м общего вида. Э т и м е
тоды используют одну и т у ж е стратегию: сначала заданный запрос с д ж о к е р о м q выражает­ w

ся к а к булев запрос Q с п о м о щ ь ю специально сконструированного индекса, т а к чтобы ответ


на запрос Q являлся о б ъ е м л ю щ и м множеством (superset) множества т е р м и н о в лексикона, со-
-ующих запросу q . Далее, каждый термин, найденный по запросу Q , проверяет-
w

н а с о о т в е т с т в и е о р и г и н а л ь н о м у з а п р о с у q ,: т е р м и н ы , н е с о о т в е т с т в у ю щ и е q , о т б р а -
K w

аются. В этот момент м ы получаем термины лексикона, соответствующие запросу q , K

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


П е р е с т а н о в о ч н ы е и н д е к с ы . Первым специальным индексом для запросов с джоке-
puw о б щ е г о в и д а я в л я е т с я перестановочный индекс ( p e r m u t e r m i n d e x ) , п р е д с т а в л я ю щ и й
собой разновидность инвертированного индекса. Сначала введем в набор символов спе-
и в а л ь н ы й с и м в о л $, о б о з н а ч а ю щ и й к о н е ц т е р м и н а . С л е д о в а т е л ь н о , т е р м и н h e l l o п р е д ­
с т а в л я е т с я к а к д о п о л н е н н ы й т е р м и н h e l l o $ . Д а л е е п о с т р о и м п е р е с т а н о в о ч н ы й индекс
терминов, в котором все варианты, полученные циклической перестановкой символов
•сходного термина (снабженного символом $), связаны с исходным термином лексико-
• » Фрагмент перестановочного индекса, содержащий элементы для термина h e l l o ,
представлен на рис. 3.3.

hello$

ello$h
hello
llo$he ^ /

lo$hel

Рис. 3.3. Фрагмент перестановочного индекса

Н а б о р т е р м и н о в с п е р е с т а н о в к о й с и м в о л о в н а з ы в а е т с я лексиконом перестановок (per­


muterm vocabulary).
Как этот индекс помогает обрабатывать запросы с джокером? Рассмотрим запрос с
д ж о к е р о м m * n . К л ю ч е в о й м о м е н т — применить к запросу циклическую перестановку
(rotate) т а к , ч т о б ы с и м в о л * о к а з а л с я в к о н ц е с т р о к и . Т а к и м о б р а з о м , п р е о б р а з о в а н н ы й
запрос принимает вид n $ m * . Далее осуществляется просмотр этой строки в перестано­
в о ч н о м и н д е к с е , в х о д е к о т о р о г о п о и с к т е р м и н а n $ m * (по д е р е в у п о и с к а ) п р и в о д и т к н а ­
хождению перестановок (помимо прочих) терминов m a n и m o r o n .
Теперь, когда перестановочный индекс позволяет идентифицировать исходные тер­
мины лексикона, соответствующие запросу с джокером, с помощью стандартного инвер­
тированного индекса можно найти соответствующие документы. Таким образом, можно
обработать любой запрос с одиночным джокером. А как обработать запрос вида
f i * m o * e r ? В таком случае сначала следует перечислить термины словаря, которые
п р и н а д л е ж а т п е р е с т а н о в о ч н о м у и н д е к с у e r $ f i * . Н е все т а к и е т е р м и н ы с л о в а р я и м е ю т
в середине строку т о — м ы отфильтровываем их с п о м о щ ь ю полного перебора, прове­
ряя к а ж д о г о кандидата, с о д е р ж и т л и о н с и м в о л ы т о . В д а н н о м п р и м е р е т е р м и н f i s h ­
m o n g e r пройдет фильтрацию, а термин f i l i b u s t e r — нет. Затем с п о м о щ ь ю стан­
дартного инвертированного индекса производится поиск по терминам, которые прошли
ф и л ь т р а ц и ю . Н е д о с т а т к о м п е р е с т а н о в о ч н о г о и н д е к с а я в л я е т с я т о , ч т о его с л о в а р ь с т а н о ­
вится довольно большим, поскольку он содержит все перестановки каждого термина.
Обратите внимание на тесную связь м е ж д у В-деревом и перестановочным индек­
сом. Действительно, эту структур) можно интерпретировать как перестановочное
В-дерево. Однако м ы предпочитаем использовать стандартную терминологию и отли­
чаем перестановочный индекс от В-дерева, позволяюшего выбирать все перестановки
с заданным префиксом.

3.2.2. k-граммный индекс для шаблонных запросов


Н е с м о т р я на п р о с т о т у п е р е с т а н о в о ч н о г о и н д е к с а е г о и с п о л ь з о в а н и е м о ж е т п р и в е с т и
к ч р е з м е р н о м у у в е л и ч е н и ю из-за б о л ь ш о г о количества п е р е с т а н о в о к д л я к а ж д о г о т е р м и н а ;
для с л о в а р я а н г л и й с к и х т е р м и н о в это у в е л и ч е н и е м о ж е т о к а з а т ь с я д е с я т и к р а т н ы м . Р а с ­
с м о т р и м т е п е р ь в т о р о й м е т о д о б р а б о т к и з а п р о с о в с д ж о к е р а м и , о с н о в а н н ы й н а fc-грам-
м н о м и н д е к с е . Э т о т м е т о д и с п о л ь з у е т с я т а к ж е в р а з д е л е 3.3.4. К-грамма O g r a m ) - э т о
п о с л е д о в а т е л ь н о с т ь , с о с т о я щ а я из к с и м в о л о в . Т а к и м о б р а з о м , c a s , a s t и s t l — э т о 3 -
граммы, содержащиеся в термине c a s t l e . Для обозначения начала или конца термина
используется специальный символ $, так что полный набрр 3-грамм, образованных от
слова c a s t l e , таков: $ с а , c a s . a s t , s t l , t i e и l e $ .
П р и и с п о л ь з о в а н и и к-граммного индекса с л о в а р ь с о д е р ж и т в с е к - г р а м м ы , о б р а з о в а н ­
н ы е из в с е х т е р м и н о в л е к с и к о н а . К а ж д ы й и н в е р т и р о в а н н ы й с п и с о к с т а в и т в с о о т в е т с т ­
вие /.'-грамме в с е т е р м и н ы л е к с и к о н а , с о д е р ж а щ и е д а н н у ю /г-грамму. Н а п р и м е р , 3-грам-
м а e t r д о л ж н а с с ы л а т ь с я н а т е р м и н ы л е к с и к о н а , т а к и е как m e t r i c и r e t r i e v a l . С о ­
о т в е т с т в у ю щ и й п р и м е р п р и в е д е н н а р и с . 3.4.

etr - | beetroot \—А metric \ -A petrify — A retrieval


Рис. 3.4. Пример инвертированного списка для 3-граммного индекса. В данном
случае продемонстрирована 3-грамма etr. Соответствующие термины лек­
сикона в инвертированном списке перечислены в лексикографическом порядке

К а к о б р а б о т а т ь з а п р о с с д ж о к е р о м с п о м о щ ь ю т а к о г о и н д е к с а ? Р а с с м о т р и м в качест­
ве п р и м е р а з а п р о с r e * v e . М ы и щ е м д о к у м е н т ы , с о д е р ж а щ и е л ю б о й т е р м и н , н а ч и н а ю ­
щийся с префикса r e и заканчивающийся суффиксом v e . Соответственно, необходимо
о б р а б о т а т ь б у л е в з а п р о с $ r e AND v e $ . П о и с к п р о и з в о д и т с я п о 3 - г р а м м н о м у индексу.
В результате возникает список соответствующих терминов, таких как r e l i v e , r e m o v e
и r e t r i e v e . Затем осуществляется поиск каждого из этих терминов в стандартном ин­
вертированном индексе и выявляются документы, соответствующие данному запросу.
О д н а к о с и с п о л ь з о в а н и е м Л-граммных и н д е к с о в с в я з а н а о д н а т р у д н о с т ь , д л я у с т р а н е ­
ния которой требуется дополнительный шаг. Рассмотрим использование 3-граммного
индекса, предназначенного для обработки запроса r e d * . Следуя указанным инструкци­
ям, с н а ч а л а п е р е д а д и м 3 - г р а м м н о м у и н д е к с у б у л е в з а п р о с $ r e AND RED. В р е з у л ь т а т е
оказывается, что ему соответствуют такие термины, как r e t i r e d , содержащие конъ-
ю н к ц и ю д в у х 3 - г р а м м $ г е и r e d , н о н е с о о т в е т с т в у ю щ и е и с х о д н о м у ш а б л о н н о м у за­
и м к у red*.
L Для того чтобы справиться с этой проблемой, введем новый этап — постфилътра-
•ю (postfiltering), в х о д е к о т о р о й все т е р м и н ы , п о л у ч е н н ы е в р е з у л ь т а т е в ы п о л н е н и я бу-
. ва запроса к 3-граммному индексу, по отдельности сравниваются с исходным шабло-
» м r e d * . Эта операция сводится к простому сравнению строк и отбрасывает все тер-
.«ыны, не соответствующие исходному запросу, такие как r e t i r e d . Затем, как обычно,
осуществляется поиск оставшихся терминов в стандартном инвертированном индексе.
I Как м ы убедились, обработку шаблонного запроса можно свести к нескольким тер­
м и н а м , к а ж д ы й из к о т о р ы х с т а н о в и т с я о д н о с л о в н ы м з а п р о с о м к с т а н д а р т н о м у и н в е р т и ­
рованному индексу. Поисковые системы позволяют комбинировать запросы с джокера­
м и и л о г и ч е с к и е о п е р а т о р ы , н а п р и м е р r e * d AND f e * r i . К а к о в а с е м а н т и к а э т о г о за­
проса? Поскольку каждый запрос с джокером превращается в дизъюнкцию однословных
запросов такой запрос уместно интерпретировать как конъюнкцию дизъюнкций мы
ищем все документы, содержащие любой термин, соответствующий запросу r e * d , и
любой термин, соответствующий запросу f e * r i .
Д а ж е без л о г и ч е с к и х к о м б и н а ц и й з а п р о с о в с д ж о к е р а м и и х о б р а б о т к а т р е б у е т д о ­
вольно больших затрат, п о с к о л ь к у появляется д о п о л н и т е л ь н ы й п р о с м о т р специального
и н д е к с а , ф и л ь т р а ц и я и, в з а к л ю ч е н и е , п о и с к с и с п о л ь з о в а н и е м и н в е р т и р о в а н н о г о и н д е к ­
с а П о и с к о в а я с и с т е м а , р а з у м е е т с я , м о ж е т п о д д е р ж и в а т ь такие ш и р о к и е ф у н к ц и о н а л ь ­
н ы е в о з м о ж н о с т и , н о , как п р а в и л о , о н и с к р ы в а ю т с я з а и н т е р ф е й с о м ( н а п р и м е р , " Р а с ш и ­
ренный поиск"), который большинство пользователей никогда не применяют. Присутст­
вие т а к и х ф у н к ц и о н а л ь н ы х в о з м о ж н о с т е й в и н т е р ф е й с е п о и с к о в о й с и с т е м ы ч а с т о п р о ­
воцирует пользователей применять их без особой надобности (например, пользователи
могут набрать префикс запроса, за которым следует символ * ) , что приводит к увеличе­
н и ю нагрузки на поисковую систему.

'Р Упражнение 3.1. В п е р е с т а н о в о ч н о м и н д е к с е к а ж д ы й т е р м и н п е р е с т а н о в о ч н о г о


. лексикона ссылается на термин (или термины) исходного лексикона, от которого
он происходит. Как много терминов из исходного лексикона может оказаться в
инвертированном списке для термина из перестановочного лексикона?

Упражнение 3.2. З а п и ш и т е э л е м е н т ы п е р е с т а н о в о ч н о г о и н д е к с н о г о с л о в а р я , п о ­
рождаемые термином mama.

Упражнение 3.3. Д о п у с т и м , ч т о в ы х о т и т е о б р а б о т а т ь з а п р о с s*ng с п о м о щ ь ю п е ­


1
р е с т а н о в о ч н о г о ш а б л о н н о г о и н д е к с а . К а к и е к л ю ч и и л и к л ю ч с л е д у е т искать ?

Упражнение 3.4. П р о а н а л и з и р у й т е р и с . 3.4. В п о д п и с и к р и с у н к у у к а з а н о , ч т о


термины лексикона в инвертированном списке перечислены в лексикографиче­
ском порядке. Чем полезен такой порядок?

Упражнение 3.5. В е р н е м с я к з а п р о с у fi^mo^er и з р а з д е л а 3 . 2 . 1 . К а к о й б у л е в за­


прос по биграммному индексу порождается этим запросом? М о ж е т е л и вы при­
в е с т и п р и м е р т е р м и н а , к о т о р ы й соответствует п е р е с т а н о в о ч н о м у з а п р о с у и з разде­
л а 3.2.1, н о п р и э т о м н е у д о в л е т в о р я е т э т о м у б у л е в у з а п р о с у ?
Упражнение 3.6. П р и в е д и т е п р и м е р п р е д л о ж е н и я , к о т о р о е о ш и б о ч н о с о о т в е т с т ­
вует ш а б л о н н о м у з а п р о с у mon*h, е с л и в х о д е поиска п р о с т о используется к о н ъ ю н к ­
ция б и г р а м м .

3.3. Исправление опечаток


П е р е й д е м к п р о б л е м е и с п р а в л е н и я о п е ч а т о к в з а п р о с а х . П р е д п о л о ж и м , ч т о пользова­
тель желает найти документы, содержащие термин c a r r o t , введя запрос c a r o t . Поис­
ковая система Google ( w w w . g o o g l e . c o m / j o b s / b r i t n e y . h t m l ) сообщает, ч т о все
нижеперечисленные запросы считаются искаженным запросом b r i t n e y s p e a r s :
1
britian spears, britney s spears, brandy spears и p r i t t a n y spears.
Проанализируем два этапа решения этой проблемы: первый этап основан на расстоянии
редактирования (edit distance), а в т о р о й — н а пересечении k-грамм (&-gram o v e r l a p ) .
Прежде чем перейти к алгоритмическим деталям этих методов, посмотрим, как поиско­
вые системы исправляют опечатки.

3.3.1. Реализация исправления опечаток


В основе большинства алгоритмов исправления опечаток лежат два фундаменталь­
ных принципа.

1 Из всех альтернативных правильных способов написания искаженного запроса


в ы б и р а е т с я " б л и ж а й ш и й " . Д л я э т о г о н е о б х о д и м о понятие" б л и з о с т и м е ж д у д в у м я
запросами. М е р ы близости описываются в разделе 3.3.3.
2. Е с л и д в а п р а в и л ь н о з а п и с а н н ы х з а п р о с а с в я з а н ы ( и л и п о ч т и с в я з а н ы ) д р у г с д р у ­
гом, то выбирается более распространенный вариант. Например, запросы g r u n t
и g r a n t выглядят одинаково подходящими вариантами для исправления запроса
g r n t . Следовательно, алгоритм должен выбрать т о т вариант, который чаще ис­
пользуется. Наиболее простой оценкой частоты использования слова является ко­
личество появлений этого термина в коллекции документов; следовательно, если
слово g r u n t встречается чаще, чем слово g r a n t , то следует выбрать именно
его. В о м н о г и х п о и с к о в ы х с и с т е м а х , о с о б е н н о в в е б е , и с п о л ь з у е т с я д р у г о й с п о с о б
оценки распространенности термина. Е г о идея заключается в том, чтобы исполь­
зовать в качестве исправления т о , что чаще всего встречается в запросах других
пользователей. В частности, если слово g r u n t в запросах встречается чаще, ч е м
слово g r a n t , т о , скорее всего, пользователь, напечатавший слово g r n t . хотел
напечатать слово g r u n t .

В н а ч а л е р а з д е л а 3.3.3 м ы р а с с м о т р и м п о н я т и е б л и з о с т и м е ж д у з а п р о с а м и , а т а к ж е
алгоритмы ее эффективного вычисления. Методы исправления ошибок в запросе осно­
ваны на этих алгоритмах. Функциональность исправления ошибок предоставляются
пользователю одним из следующих способов:

1 В ответ на запрос c a r o t всегда возвращаются документы, содержащие слово


c a r o t , а также все возможные "исправленные" варианты этого слова, включая
carrot и tarot.
2. А н а л о г и ч н о п . 1 , н о т о л ь к о е с л и с л о в а c a r o t нет в с л о в а р е .
3. А н а л о г и ч н о п . 1 , но т о л ь к о е с л и в о т в е т н а о р и г и н а л ь н ы й з а п р о с с и с т е м а в е р н у л а
слишком мало документов (например, меньше пяти).
4. Если к о л и ч е с т в о д о к у м е н т о в , в о з в р а щ е н н ы х в о т в е т н а з а п р о с , м е н ь ш е у с т а н о в ­
л е н н о г о п о р о г а , т о п о и с к о в а я с и с т е м а п р е д л а г а е т п о л ь з о в а т е л ю вариант исправ­
ления ( s p e l l i n g s u g g e s t i o n ) : э т о п р е д л о ж е н и е с о с т о и т и з и с п р а в л е н н ы х т е р м и н о в .
Таким образом, поисковая система в ответ на запрос пользователя может спро­
сить: "Вы имели в виду слово c a r r o t ? "

3.3.2. Методы исправления ошибок


О с т а н о в и м с я н а д в у х м е т о д а х и с п р а в л е н и я о ш и б о к : исправлении изолированного тер­
мина (isolated-term correction) и исправлении с учетом контекста (context-sensitive cor­
rection). П р и и с п р а в л е н и и и з о л и р о в а н н о г о т е р м и н а т е р м и н ы з а п р о с а и с п р а в л я ю т с я п о
отдельности. Пример со словом c a r o t иллюстрирует этот подход. Этот метод не позво­
ляет, н а п р и м е р , о б н а р у ж и т ь , ч т о з а п р о с f l e w f o r m H e a t h r o w с о д е р ж и т и с к а ж е н н ы й
т е р м и н f r o m , поскольку к а ж д ы й и з т е р м и н о в запроса п о о т д е л ь н о с т и з а п и с а н правильно.
Рассмотрим два метода решения задачи исправления изолированных терминов: рас­
с т о я н и е р е д а к т и р о в а н и я и п е р е к р ы т и е fc-грамм. П о с л е э т о г о м ы п е р е й д е м к и с п р а в л е н и ю
у ч е т о м контекста.

3.3.3. Расстояние редактирования


Р а с с т о я н и е р е д а к т и р о в а н и я м е ж д у д в у м я с т р о к а м и с и м в о л о в si и д- — э т о м и н и м а л ь ­
2

н о е к о л и ч е с т в о операций редактирования (edit o p e r a t i o n s ) , с п о м о щ ь ю к о т о р ы х с т р о к у s x

можно трансформировать'в строку s . Операции редактирования, позволяющие это сде­


2

лать, в к л ю ч а ю т в с е б я с л е д у ю щ и е п р е о б р а з о в а н и я : 1) в с т а в к а с и м в о л а в с т р о к у , 2) уда­
ление с и м в о л а и з с т р о к и и 3) з а м е н а с и м в о л а в с т р о к е д р у г и м с и м в о л о м . П р и у к а з а н н о м
наборе операций редактирования расстояние редактирования называется расстоянием
Тевенштейна (Levenshtein distance). Н а п р и м е р , р а с с т о я н и е р е д а к т и р о в а н и я м е ж д у с л о ­
вами c a t и d o g равно трем. Расстояние редактирования можно обобщить, если разным
о п е р а ц и я м р е д а к т и р о в а н и я п р и с в о и т ь р а з н ы е веса. Н а п р и м е р , о п е р а ц и и з а м е н ы с и м в о л а
s символом р м о ж н о присвоить более высокий вес, чем операции замены символа s
с и м в о л о м а (так как буква а б л и ж е к б у к в е s на к л а в и а т у р е ) . П р и с в о е н и е в е с о в с у ч е т о м
п р а в д о п о д о б н о с т и з а м е н ы н а п р а к т и к е о к а з а л о с ь о ч е н ь э ф ф е к т и в н ы м ( с м . р а з д е л 3.4,
в котором рассматривается проблема фонетической схожести). Однако в нашем изложе­
нии м ы будем п р и д е р ж и в а т ь с я д о п у щ е н и я , что в с е о п е р а ц и и р е д а к т и р о в а н и я и м е ю т
один и тот же вес.
Х о р о ш о и з в е с т н о , как в ы ч и с л и т ь р а с с т о я н и е р е д а к т и р о в а н и я м е ж д у д в у м я с т р о к а м и
за в р е м я 0 ( | s i | x | s | ) , г д е |s,| — д л и н а с т р о к и я,-. Д л я э т о г о и с п о л ь з у е т с я а л г о р и т м д и н а м и ­
2

ч е с к о г о п р о г р а м м и р о в а н и я , п р е д с т а в л е н н ы й на р и с . 3.5, г д е с т р о к и s и s п р е д с т а в л е н ы
x 2

в в и д е м а с с и в о в . Э т о т а л г о р и т м з а п о л н я е т в с е ( ц е л о ч и с л е н н ы е ) я ч е й к и м а т р и ц ы т, р а з ­
м е р ы к о т о р о й р а в н ы д л и н а м с т р о к s и s ; п о с л е в ы п о л н е н и я а л г о р и т м а э л е м е н т (i,f) с о -
x 2

ержит расстояние редактирования между строками, состоящими из первых i символов


строки и первых j символов строки s . Основной шаг динамического программиро­
2

в а н и я о т о б р а ж е н в с т р о к а х 8 - 1 0 ( р и с . 3.5), в к о т о р ы х в ы ч и с л я е т с я м и н и м у м т р е х в е л и ­
чин с учетом замены символа в строке s , вставки символа в строку s и вставки символа
x x

в строку * - 2
EditDistance (s s ) (> 2

1 bit w[(si|, | S | ] = 0
2

2 f o r i < - 1 t o |s,|
3 d o m[i, 0] = i
4 forj 4 - 1 t o |s | 2

5 dom[0,/]=/
6 for i 1 t o \si\
7 do f o r 7 Ч - 1 to |s | 2

8 d o m[i,j] = m m { , n [ i - l j - l ] + in>,[i] = s [ / ] ) then 0 else 1 fi,


2

9 m[i-lj] +1,
10 m[v-l] + l}
11 r e t u r n m[|s,|, |s D 2

Рис. 5.5. Алгоритм динамического программирования для вычисления рас­


стояния редактирования между строками Sj и s 2

Пример вычисления расстояния Левенштейна п о алгоритму, представленному на рис. 3.5,


п р о д е м о н с т р и р о в а н н а р и с . 3.6. Т и п и ч н а я я ч е й к а р а з д е л е н а на ч е т ы р е части, обра­
з у ю щ и е я ч е й к и р а з м е р о м 2 x 2 . В п р а в о й н и ж н е й я ч е й к е з а п и с ы в а е т с я м и н и м у м осталь­
ных трех чисел, которые соответствуют основному шагу динамического программиро­
вания в алгоритме, представленном на рис. 3.5. Остальные три ячейки содержат числа
" * [ ' - 1 , 7 - 1 ] + 0 и л и 1 в з а в и с и м о с т и о т т о г о , в ы п о л н я е т с я л и у с л о в и е si[i] = s \j], а т а к ж е
2

ч и с л а m[i-l,j] + 1 и m\i-\,j\ + 1. Я ч е й к и с ч и с л а м и , в ы д е л е н н ы м и к у р с и в о м , о т р а ж а ю т
путь, о п р е д е л я ю щ и й р а с с т о я н и е Л е в е н ш т е й н а .

f t

1 -
0 1
1
1
2
Т 1

ь 3
4
il
I:
1 2 4 4
Г 2 1 2
-•' " ]
3
3 4
SI 1
Ы
2 2 з 4 5
ИЕ
2 1 3
2 3
3
1 2 2
3
3

2 4
1
I t
3
4
IK 2 3
3
2
3
И'
4 4 3
Р 4i
Рис. 3.6. Пример вычисления расстояния Левенштейна. Ячейка
<
таблицы раз­
5 2 3 3

бита на четыре части размером 2X2, в которых записаны три числа, минимум
которых дает четвертое число. Ячейки, определяющие расстояние редактиро­
вания в данном примере, выделены курсивом
Д л я исправления опечаток недостаточно уметь вычислять расстояние редактирова-
. ния для заданных множества строк V (соответствующих терминам в лексиконе) и строки
« п р о с а q необходимо найти строку или строки из множества V с минимальным расстоя­
н и е м р е д а к т и р о в а н и я д о з а п р о с а q. Э т у п р о б л е м у м о ж н о р а с с м а т р и в а т ь как з а д а ч у д е к о ­
д и р о в а н и я , в к о т о р о й к о д о в ы е с л о в а ( с т р о к и и з м н о ж е с т в а V) з а д а н ы з а р а н е е . О ч е в и д ­
н ы й с п о с о б р е ш е н и я - в ы ч и с л и т ь р а с с т о я н и е р е д а к т и р о в а н и я о т з а п р о с а q д о к а ж д о й из
с т р о к , п р и н а д л е ж а щ и х м н о ж е с т в у V, а з а т е м в ы б р а т ь с т р о к у и л и с т р о к и с м и н и м а л ь н ы м
расстоянием. Этот исчерпывающий поиск является чрезмерно затратным. П о этой при­
чине для эффективного поиска терминов в словаре, и м е ю щ и х небольшое расстояние ре­
дактирования до терминов запроса, на практике применяется большое количество эври­
стических правил.
П р о с т е й ш и й э в р и с т и ч е с к и й п р и е м з а к л ю ч а е т с я в о г р а н и ч е н и и п о и с к а т е р м и н а м и сло­
варя, н а ч и н а ю щ и м и с я с т о й ж е б у к в ы , ч т о и с т р о к а з а п р о с а ; р а с ч е т д е л а е т с я н а т о , что
орфографические ошибки редко делаются с первой же буквы запроса. Более сложный
вариант этого эвристического приема ма ивает использование перестановочного
индекса, в котором игнорируется заключительный символ $. Рассмотрим множество
всех перестановок строки запроса q. Для каждой перестановки г из этого множества м ы
п р о х о д и м по В - д е р е в у п е р е с т а н о в о ч н о г о индекса, т е м с а м ы м и д е н т и ф и ц и р у я все т е р м и н ы
словаря, п е р е с т а н о в к и к о т о р ы х н а ч и н а ю т с я с буквы г . Н а п р и м е р , е с л и з а п р о с q представ­
л я е т с о б о й с т р о к у m a s e и м ы р а с с м а т р и в а е м п е р е с т а н о в к у г = s e m a , т о м ы м о ж е м из­
влечь и з словаря т а к и е т е р м и н ы , как s e m a n t i c и s e m a p h o r e , и м е ю щ и е д о в о л ь н о боль­
ш о е р а с с т о я н и е р е д а к т и р о в а н и я д о з а п р о с а q. К с о ж а л е н и ю , п р и э т о м м ы м о ж е м пропус­
тить б о л е е п о д х о д я щ и е т е р м и н ы словаря, т а к и е к а к m a r e и m a n e . Д л я т о г о ч т о б ы р е ш и т ь
эту проблему, следует уточнить с х е м у перестановок: п р и к а ж д о й п е р е с т а н о в к е д о п р о х о д а
по В-дереву м ы п р о п у с т и м с у ф ф и к с , с о с т о я щ и й и з / с и м в о л о в . Э т о гарантирует н а м , ч т о
к а ж д ы й т е р м и н и з м н о ж е с т в а R, и з в л е ч е н н ы й и з словаря, будет с о д е р ж а т ь " д л и н н у ю " под­
строку, о б щ у ю с з а п р о с о м q. Ч и с л о / м о ж е т зависеть от д л и н ы с т р о к и q. В качестве альтер­
3
н а т и в ы ч и с л о / м о ж н о сделать ф и к с и р о в а н н о й константой, н а п р и м е р д в о й к о й .

3.3.4. К-граммные индексы для исправления опечаток


Для того чтобы е щ е больше ограничить множество терминов лексикона, для которых
в ы ч и с л я е т с я р а с с т о я н и е р е д а к т и р о в а н и я д о т е р м и н о в из з а п р о с а , м о ж н о и с п о л ь з о в а т ь
* - г р а м м н ы й и н д е к с , о п и с а н н ы й в р а з д е л е 3.2.2. Э т о т и н д е к с п о з в о л я е т н а й т и в л е к с и к о н е
т е р м и н ы с н е б о л ь ш и м р а с с т о я н и е м р е д а к т и р о в а н и я д о з а п р о с а q. Н а й д я э т и т е р м и н ы ,
мы можем определить среди них термины с минимальным расстоянием редактирования
д о з а п р о с а q.

Альтернативной эвристикой в методе расстояния редактирования является метод скелетов


(skeleton), заключающийся в выделении всех скелетов — подпоследовательностей букв из терми­
нов индекса и запроса, таких, что их длина меньше исходного термина на заданный порог (1 или 2
буквы). Хеширование скелетов терминов словаря и хеш-поиск всех скелетов термина из запроса
дают за линейное время полный список кандидатов на коррекцию. Мог, М., and Fraenkel, A.S., А
hash code method for detecting and correcting spelling errors, Communications of the ACM, 1982
(http://portal.acm.org/citation.cfm?id=358752), а также Pollock, J.J., and Zamora,
Automatic spelling correction in scientific and scholarly text, Journal of the American Society for
Information Science and Technology (JASIST), 1984, (http://portal.acm.org/citation.
cfm?id=358048) — Примеч. ред.
Ф а к т и ч е с к и fc-граммный и н д е к с и с п о л ь з у е т с я д л я п о и с к а т е р м и н о в л е к с и к о н а , с о д е р ­
ж а щ и х б о л ь ш о е к о л и ч е с т в о fc-грамм, о б щ и х с з а п р о с о м . И д е я з а к л ю ч а е т с я в т о м , ч т о п р и
р а з у м н о й т р а к т о в к е в ы р а ж е н и я " б о л ь ш о е к о л и ч е с т в о о б щ и х fc-грамм" п р о ц е с с п о и с к а
4
п о с у щ е с т в у с в о д и т с я к о д н о к р а т н о м у п р о с м о т р у " с л о в о п о з и ц и й " д л я &-грамм, в х о д я ­
щ и х в з а п р о с q.
Н а п р и м е р , н а р и с . 3.7 п о к а з а н а ч а с т ь с л о в о п о з и ц и й д л я т р е х б и г р а м м в з а п р о с е
b o r d . Д о п у с т и м , ч т о м ы ж е л а е м н а й т и т е р м и н ы л е к с и к о н а , с о д е р ж а щ и е п о к р а й н е й ме­
р е д в е и з э т и х т р е х б и г р а м м . О д н о к р а т н о е с к а н и р о в а н и е з а п и с е й (как о п и с а н о в г л а в е 1)
п о з в о л и л о б ы п е р е ч и с л и т ь в с е т а к и е т е р м и н ы ; в п р и м е р е , п о к а з а н н о м н а р и с . 3.7, п е р е ­
числены термины a b o a r d , b o a r d r o o m и b o r d e r .

1- н aboard | 1 about | 1 boardroom | 1 border j

1- н border | 1 lord | 1 morbid |- 1 sordid j

1- н aboard | 1 ardent |- -J boardroom |^—-j border j


Рис. 3 7 Совпадение no крайней мере двух из трех биграмм в запрвсе bord

Применение "в лоб" пересечения инвертированных списков с помощью их последо­


вательного просмотра сразу обнаруживает недостатки требования л и ш ь присутствия в
т е р м и н а х л е к с и к о н а ф и к с и р о в а н н о г о к о л и ч е с т в а &-грамм и з з а п р о с а q: п р и э т о м и д е н т и ­
фицируются термины наподобие b o a r d r o o m , представляющие собой "неправдоподоб­
ное" исправление слова b o r d . Следовательно, необходимы более тонкие меры перекры­
т и я &-грамм м е ж д у т е р м и н о м л е к с и к о н а и з а п р о с о м q. М е т о д п е р е с е ч е н и я с п и с к о в с п о ­
м о щ ь ю их последовательного просмотра можно модифицировать, применив коэффици­
ент Жаккара (Jaccard coefficient), х а р а к т е р и з у ю щ и й п е р е к р ы т и е д в у х м н о ж е с т в А и В и
р а в н ы й | A n B | / | A u B | . М ы р а с с м а т р и в а е м м н о ж е с т в о Л-грамм в з а п р о с е q и м н о ж е с т в о
fc-грамм в т е р м и н е л е к с и к о н а . В п р о ц е с с е с к а н и р о в а н и я м ы п е р е х о д и м о т о д н о г о т е р м и ­
на л е к с и к о н а t к с л е д у ю щ е м у , в ы ч и с л я я " н а л е т у " к о э ф ф и ц и е н т Ж а к к а р а д л я с т р о к q и f.
Если коэффициент превышает установленный порог, то термин г добавляется в результа­
ты; если нет, то происходит переход к следующему термину в инвертированном списке
Д л я т о г о ч т о б ы в ы ч и с л и т ь к о э ф ф и ц и е н т Ж а к к а р а , н е о б х о д и м о и м е т ь м н о ж е с т в а &-грамм
д л я с т р о к о и г.
П о с к о л ь к у м ы п р о с м а т р и в а е м " с л о в о п о з и ц и й " в с е х fc-грамм в з а п р о с е q, т о с р а з у п о ­
л у ч а е м все э т и /с-граммы в с в о е р а с п о р я ж е н и е . А к а к п о л у ч и т ь fc-граммы д л я т е р м и н а г?
В принципе, можно было бы выделить их все "на лету". На практике это не только не­
эффективно, но и нецелесообразно; в подавляющем большинстве случаев сами записи
с о д е р ж а т н е с а м у с т р о к у г, а л и ш ь е е и д е н т и ф и к а т о р . С л е д у е т п о д ч е р к н у т ь , ч т о д л я
в ы ч и с л е н и я к о э ф ф и ц и е н т а Ж а к к а р а н е о б х о д и м о з н а т ь л и ш ь д л и н у с т р о к и t. Д л я т о г о
ч т о б ы убедиться в этом, н а п о м н и м п р и м е р , и з о б р а ж е н н ы й на рис. 3.7, и обратим

4
В данном случае в качестве "слова" выступает k-грамма, а в качестве "документа" — весь
термин словаря. — Примеч. ред.
в н и м а н и е н а т о ч к у , в к о т о р о й с к а н и р о в а н и е з а п р о с а q = bord д о с т и г а е т т е р м и н а
г = boardroom. Н а м и з в е с т н о , ч т о о б е э т и б и г р а м м ы с о о т в е т с т в у ю т к р и т е р и ю п о и с к а
Е с л и с л о в о п о з и ц и й х р а н я т ( з а р а н е е в ы ч и с л е н н о е ) к о л и ч е с т в о б и г р а м м в с л о в е board­
room (а и м е н н о — 8), т о у н а с и м е е т с я в с я и н ф о р м а ц и я д л я в ы ч и с л е н и я к о э ф ф и ц и е н т а
Ж а к к а р а : 2 / ( 8 + 3 - 2 ) ; ч и с л и т е л ь в ы ч и с л я е т с я п о к о л и ч е с т в у с о в п а д е н и й в з а п и с я х (в дан­
н о м с л у ч а е — д в а : bo и rd), а з н а м е н а т е л ь — э т о р а з н о с т ь м е ж д у с у м м о й б и г р а м м в
с л о в а х bord и boardroom и к о л и ч е с т в о м с о в п а д е н и й в з а п и с я х .
Коэффициент Жаккара можно заменить другими показателями, допускающими эф­
фективное вычисление "на лету" в ходе сканирования записей. Как использовать и х для
и с п р а в л е н и я о п е ч а т о к ? О д и н и з э м п и р и ч е с к и х м е т о д о в з а к л ю ч а е т с я в с л е д у ю щ е м : сна­
чала д л я п е р е ч и с л е н и я м н о ж е с т в а к а н д и д а т о в с р е д и т е р м и н о в л е к с и к о н а , п р е д с т а в л я ю ­
щ и х с о б о й п о т е н ц и а л ь н ы е и с п р а в л е н и я з а п р о с а q, и с п о л ь з у е т с я &-граммный и н д е к с . За­
тем вычисляется расстояние редактирования между запросом q и каждым термином из
указанного множества. Далее из этого множества выбираются термины с небольшим
р а с с т о я н и е м р е д а к т и р о в а н и я о т з а п р о с а q.

3.3.5. Исправление опечаток с учетом контекста


Иногда механизм исправления ошибок в отдельных терминах н е срабатывает, как,
н а п р и м е р , в з а п р о с е flew form Heathrow, г д е в с е т р и т е р м и н а н а п и с а н ы п р а в и л ь н о .
Если в ответ на фразу, подобную этой, будет возвращено л и ш ь небольшое количество
документов, т о поисковая система м о ж е т принять решение исправить этот запрос н а
flew from Heathrow. П р о с т е й ш и й с п о с о б с д е л а т ь э т о — п е р е ч и с л и т ь и с п р а в л е н и я
д л я к а ж д о г о и з т р е х т е р м и н о в ( и с п о л ь з у я м е т о д ы , о п и с а н н ы е в р а з д е л е 3.3.4), д а ж е е с л и
все т е р м и н ы з а п р о с а н а п и с а н ы п р а в и л ь н о , а з а т е м п о п р о б о в а т ь п р о и з в е с т и з а м е н у к а ж ­
д о г о т е р м и н а ф р а з ы . В п р и м е р е flew form Heathrow п е р е ч и с л е н и е д о л ж н о с о д е р ­
ж а т ь ф р а з ы н а п о д о б и е fled from Heathrow и flew fore Heathrow. Д л я к а ж д о й
такой ф р а з ы поисковая система в ы п о л н я е т запрос и определяет количество соотвегствий.
Если исправлений отдельных терминов будет слишком много, т о такое перечисление
может оказаться очень затратным; м ы можем столкнуться с большим количеством ком­
бинаций альтернатив. Для того чтобы сэкономить память, используется несколько эври­
с т и ч е с к и х п р и е м о в . В н а ш е м п р и м е р е п р и с о з д а н и и а л ь т е р н а т и в д л я т е р м и н о в flew и
form м ы о с т а в и м т о л ь к о т е к о м б и н а ц и и , к о т о р ы е ч а щ е о с т а л ь н ы х в с т р е ч а ю т с я в к о л ­
лекции документов или в логах запросов, в которых хранятся предыдущие запросы поль­
з о в а т е л е й . Н а п р и м е р , м ы м о ж е м о с т а в и т ь с л о в о с о ч е т а н и е flew from к а к в о з м о ж н у ю
а л ь т е р н а т и в у и п о п р о б о в а т ь р а с ш и р и т ь е е д о т р е х с л о в н о г о з а п р о с а , п р о и г н о р и р о в а в ва­
р и а н т ы fled fore и flea form. В д а н н о м с л у ч а е с л о в о с о ч е т а н и е и з д в у х с л о в
filed fore я в л я е т с я м е н е е в е р о я т н ы м , ч е м с о ч е т а н и е flew from. З а т е м д о с т а т о ч н о
п р о с т о р а с ш и р и т ь с п и с о к н а и б о л е е ч а с т о в с т р е ч а ю щ и х с я с л о в о с о ч е т а н и й и з д в у х слов
( н а п р и м е р , flew from) с п о м о щ ь ю и с п р а в л е н и й т е р м и н а Heathrow. В к а ч е с т в е аль­
т е р н а т и в ы и с п о л ь з о в а н и ю с т а т и с т и к и б и г р а м м в к о л л е к ц и и м о ж н о и с п о л ь з о в а т ь л о г за­
просов, заданных пользователями; разумеется, он может содержать в том числе запросы
с ошибками.

Упражнение 3.7. Д о к а ж и т е , ч т о р а с с т о я н и е р е д а к т и р о в а н и я м е ж д у строками s и x

s н е м о ж е т п р е в ы ш а т ь max{|f i|, \s \], г д е


2 2 — д л и н а с т р о к и л,.
Упражнение 3.8. В ы ч и с л и т е р а с с т о я н и е р е д а к т и р о в а н и я м е ж д у с т р о к а м и paris и
alice. З а п и ш и т е м а с с и в р а з м е р о м 5 x 5 , с о д е р ж а щ и й р а с с т о я н и я м е ж д у в с е м и п р е ­
ф и к с а м и , в ы ч и с л е н н ы е п о а л г о р и т м у , о п и с а н н о м у н а р и с . 3.5.
Упражнение 3.9. Н а п и ш и т е п с е в д о к о д , д е м о н с т р и р у ю щ и й детали вычислений
к о э ф ф и ц и е н т а Ж а к к а р а " н а л е т у " п р и с к а н и р о в а н и и з а п и с е й &-граммного индекса.
Упражнение 3.10. В ы ч и с л и т е к о э ф ф и ц и е н т ы Ж а к к а р а д л я з а п р о с о в bord и к а ж д о ­
г о т е р м и н а , и з о б р а ж е н н о г о н а р и с . 3.7 и с о д е р ж а щ е г о б и г р а м м у or.
Упражнение 3.11. П р о а н а л и з и р у й т е з а п р о с catched in t h e r y e , с о с т о я щ и й и з ч е т ы ­
рех терминов, в предположении, ч т о каждый из этих терминов при изолированном
исправлении опечаток имеет пять альтернатив. Сколько возможных правильных
фраз следует рассмотреть, если память д л я хранения правильных фраз не ограни­
чена и д л я каждого из терминов м о ж н о испытать все шесть вариантов?
Упражнение 3.12. Д л я к а ж д о г о и з п р е ф и к с о в в з а п р о с е — c a t c h e d , c a t c h e d i n
и catched in the — существует б о л ь ш о е количество п о д с т а н о в о ч н ы х префиксов,
возникающих на основе каждого термина и его альтернатив. Допустим, что м ы
ограничились только десятью наиболее вероятными подстановочными префикса­
ми, ориентируясь на частоту их появления в коллекции документов. Остальные
префиксы исключаются из рассмотрения и не используются для расширения до
более д л и н н ы х префиксов. Таким образом, если словосочетание batched in не вхо­
д и т в п е р в у ю д е с я т к у н а и б о л е е р а с п р о с т р а н е н н ы х д в у х с л о в н ы х з а п р о с о в в кол­
лекции документов, м ы н е д о л ж н ы рассматривать никаких расширений комбина­
ции batched in в качестве возможных вариантов исправления catched in the rye.
Сколько возможных подстановочных префиксов м ы исключаем на каждом этапе?
Упражнение 3.13. М о ж н о л и утверждать, ч т о использование только десяти наиболее
вероятных подстановочных префиксов д л я ф р а з ы catched in приведет к о д н о м у и з д е ­
сяти наиболее распространенных подстановочных префиксов д л я фразы catched in the?

3.4. Фонетические исправления


Последний метод, используемый при нечетком поиске, предназначен для фонетиче­
ских исправлений (phonetic correction), т . е . о ш и б о к , в о з н и к а ю щ и х , к о г д а п о л ь з о в а т е л ь з а ­
писывает запрос так, как он его слышит. Такие алгоритмы особенно полезны для поиска
имен людей. Основная идея заключается в генерировании для каждого термина "фонети­
ческого хеша", т.е. терминам, звучащим одинаково, ставится в соответствие одно и т о ж е
число. Э т а идея возникла в начале X X века в международных отделах полиции, перед
которыми стояла задача поиска преступников, не обращая внимания на разное написание
этих имен в разных странах. В основном этот метод используется для исправления фоне­
тических ошибок в собственных именах.
А л г о р и т м ы ф о н е т и ч е с к о г о х е ш и р о в а н и я о б ы ч н о н а з ы в а ю т с я алгоритмами Soundex.
Однако существует оригинальный алгоритм Soundex, имеющий несколько вариантов.
Его схема выглядит так

1. П р е о б р а з у е м к а ж д ы й и н д е к с и р у е м ы й т е р м и н в ч е т ы р е х с и м в о л ь н у ю с о к р а щ е н ­
ную форму. П о этим сокращенным формам строим инвертированный индекс для
поиска исходных терминов; назовем его soundex-индексом.
3.4. Фонетические исправления 83

2. Д е л а е м т о ж е с а м о е д л я т е р м и н о в з а п р о с а .
3 . Е с л и п о с т у п а е т з а п р о с н а с р а в н е н и е с т р о к п о з в у ч а н и ю , в ы п о л н я е м п о и с к п о ин­
дексу Soundex.
Варианты реализации алгоритмов Sounde связаны с методом преобразования терми­
нов в ч е т ы р е х с и м в о л ь н о е п р е д с т а в л е н и е . В р е з у л ь т а т е п р и м е н е н и я н а и б о л е е р а с п р о ­
страненного метода возникает четырехсимвольный код, в котором первый символ — это
б у к в а а л ф а в и т а , а о с т а л ь н ы е т р и — п и ф р ы о т 0 д о 9.
1 Запишем первую букву термина.
2. З а м е н и м все б у к в ы А, Е , I, О , U , Н , W и Y н у л е м 'О'.
3. З а м е н и м б у к в ы ц и ф р а м и с л е д у ю щ и м о б р а з о м .
4. B,F,P,VHal.
5 . С , G , J, К , Q , S, X , Z н а 2.
6. D , Т н а 3.
7. 1на4.
8. М , N н а 5 .
9. Яна6.
10. Ц и к л и ч е с к и у д а л и м о д н у и з к а ж д о й п а р ы с о с е д н и х о д и н а к о в ы х ц и ф р .
11. И з п о л у ч е н н о й с т р о к и у д а л и м в с е н у л и . Д о п о л н и м р е з у л ь т а т з а м ы к а ю щ и м и ну­
л я м и и в о з в р а т и м п е р в ы е ч е т ы р е п о з и ц и и , п р е д с т а в л я ю щ и е с о б о й букву, з а кото­
рой следуют три цифры.

В качестве примера укажем, что слово H e r m a n n отображается в код Н 6 5 5 . Получив


з а п р о с ( с к а ж е м , h e r m a n ) , м ы в ы ч и с л я е м его s o u n d e x - к о д , а з а т е м н а х д и м в ексиконе
все т е р м и н ы , с о о т в е т с т в у ю щ и е э т о м у s o u n d e x - к о д у в s o u n d e x - и н д е к с е . Т е п е р ь в ы п о л н и м
поиск результирующего запроса в стандартном обратном индексе.
Э т о т а л г о р и т м о с н о в а н н а н е с к о л ь к и х н а б л ю д е н и я х : 1) г л а с н ы е м о г у т з а м е н я т ь друг
д р у г а в т р а н с к р и п ц и и и м е н ; 2) с о г л а с н ы е с п о д о б н ы м и з в у к а м и ( н а п р и м е р , D и Т ) о т н о ­
сятся к одному и тому ж е классу эквивалентности. Благодаря этому похожие имена часто
и м е ю т о д и н а к о в ы е s o u n d e x - к о д ы . Н е с м о т р я н а т о ч т о э т и п р а в и л а в о м н о г и х с л у ч а я х вы­
полняются, о с о б е н н о если р е ч ь идет о европейских языках, о н и зависят от системы
письменности. Например, китайские имена могут быть записаны как в транскрипции
В е й д а - Д ж а й л с а ( W a d e - G i l e s ) , т а к и в т р а н с к р и п ц и и п и н ь и н ь (Pinyin). Н е с м о т р я н а т о
что а л г о р и т м ы S o u n d e x с н е к о т о р ы м и и з м е н е н и я м и р а б о т а ю т с о б е и м и т р а н с к р и п ц и я ­
ми — например, термин h s в транскрипции Вейда-Джайлса и термин х в транскрипции
пиньинь переводятся в один и тот ж е код 2, — в некоторых случаях происходит сбой:
например, символ j в транскрипции Вейда-Джайлса и символ г в транскрипции пиньинь
переводятся в разные коды.

*Р Упражнение 3.14. У к а ж и т е д в а и м е н и с о б с т в е н н ы х , к о т о р ы е з а п и с ы в а ю т с я по-


• разному, но имеют одинаковые Soundex-коды.

Упражнение 3.15. У к а ж и т е д в а ф о н е т и ч е с к и с х о ж и х и м е н и с о б с т в е н н ы х имею­


щих разные soundex-коды.
3.5. Библиография и рекомендации для дальнейшего чтения
Исчерпывающим источником информации о деревьях поиска, включая В-деревья и
6
и х и с п о л ь з о в а н и е д л я п о и с к а п о с л о в а р я м , я в л я е т с я м о н о г р а ф и я К н у т а (Knuth, 1 9 9 7 ) .
Одно из первых полных описаний перестановочного индекса приведено в работе
Г а р ф и л д а (Garfield, 1976). М е т о д р е ш е н и я п р о б л е м ы р е з к о г о р о с т а о б ъ е м а п а м я т и , н е о б ­
ходимого для хранения перестановочных индексов, изложен в работе Феррагины и Вен-
т у р и н и (Ferragina a n d Venturini, 2 0 0 7 ) .
О д н о из наиболее ранних формальных описаний методов исправления орфографиче­
с к и х о ш и б о к с о д е р ж и т с я в р а б о т е Д а м е р о ( D a m e r a u , 1964). П о н я т и е р а с с т о я н и я р е д а к т и ­
р о в а н и я п р е д л о ж е н о Л е в е н ш т е й н о м ( В . И . Л е в е н ш т е й н , 1964), а л г о р и т м , п р е д с т а в л е н н ы й
7
н а р и с . 3.5, и з о б р е т е н В а г н е р о м и Ф и ш е р о м ( W a g n e r a n d Fischer, 1974) . В а р и а н т ы м е т о ­
д о в , о с н о в а н н ы х н а р а с с т о я н и и редактирования, п р е д л о ж е н ы П е т е р с о н о м (Peterson, 1980) и
К у к и ч е м (Kukich, 1992). О ч е н ь п о д р о б н о е о п и с а н и е этих м е т о д о в п р и в е д е н о в р а б о т е Ц о -
беля и Д а р т а (Zobel a n d Dart, 1995), показавших, ч т о и н д е к с и р о в а н и е с п о м о щ ь ю &-грамм
является очень э ф ф е к т и в н ы м с п о с о б о м выявления в о з м о ж н ы х несовпадений, н о д л я иден­
т и ф и к а ц и и н а и б о л е е в е р о я т н ы х о ш и б о к е г о следует сочетать с б о л е е т о н к и м и м е т о д а м и ,
т а к и м к а к метод, о с н о в а н н ы й н а р а с с т о я н и и редактирования. С т а н д а р т н ы м с п р а в о ч н и к о м
по алгоритмам работы с о строками, например по алгоритмам, использующим расстояние
8
редактирования, я в л я е т с я м о н о г р а ф и я Г а с ф и л д а (Gusfield, 1997).
В е р о я т н о с т н ы е м о д е л и ( м о д е л и " з а ш у м л е н н ы х каналов") д л я исправления о р ф о г р а ф и ­
ч е с к и х о ш и б о к в п е р в ы е б ы л и п р е д л о ж е н ы К е р н и г а н о м и с о а в т о р а м и (Kernigan e t al., 1990),
а в д а л ь н е й ш е м б ы л и у с о в е р ш е н с т в о в а н ы Б р и л е м и М у р о м (Brill a n d M o o r e , 2 0 0 0 ) , а
т а к ж е Т у т а н о в о й и М у р о м ( T o u t a n o v a a n d M o o r e , 2 0 0 2 ) . В этих м о д е л я х о ш и б о ч н ы й за­
прос рассматривается как вероятностное искажение правильного запроса. Э т и модели
основаны н а таком ж е математическом аппарате, к а к и модели языка, описанные в главе 12.
Кроме того, они позволяют включать в модель фонетическое сходство и близость на
клавиатуре, а также могут использовать данные о реальных орфографических ошибках
пользователей. Многие считают эти алгоритмы наиболее совершенными на данный м о ­
м е н т . К у ч е р ж а н и Б р и л ь ( C u c e r z a n a n d Brill, 2004) п р о д е м о н с т р и р о в а л и , к а к м о ж н о р а с ­
ширить эти алгоритмы д л я настройки моделей исправления орфографических ошибок на
основе переформулировок запросов в логах поисковых систем.
И з о б р е т е н и е алгоритма S o u n d e x п р и п и с ы в а е т с я М а р г а р е т К . О д е л л и Р о б е р т у С. Р у с -
селли (Margaret К . Odell a n d Robert С . Russelli), п о л у ч и в ш и м а м е р и к а н с к и е п а т е н т ы в 1918
и 1922 годах соответственно. В а р и а н т метода, о п и с а н н ы й в к н и г е , б ы л п р е д л о ж е н Б е р н о м
и Ф о р д о м (Bourne and Ford, 1961). Ц о б е л ь и Д а р т (Zobel and Dart, 1996) сравнили несколько
алгоритмов для сравнения строк по звучанию и выяснили, что алгоритм Soundex плохо
подходит д л я решения общей задачи исправления орфографических ошибок, а другие ал­
горитмы, основанные на фонетической схожести произношения терминов, работают хорошо.

Имеется русский перевод: Кнут Д., Искусство программирования. В 3-х т М.: Изда­
тельский дом Вильяме, 2000
7
Вагнер и Фишер не изобретали этот алогоритм, это была просто первая публикация в жур­
нале по computer science, в контексте распознавания речи это сделал Vintsyuk, 1968, в контексте
вычислительной билогии Needleman и Wunsch, 1970. Историю вопроса смотри в Sankoff, D., The
early introduction of dynamic programming into computational biology, Bioinformatics, 2000
8
Гасфилд Д. Строки, деревья и последовательности в алгоритмах. — СПб.: Невский диалект,
2003.
Глава 4

(Построение индекса

Из настоящей главы в ы узнаете, как создать инв ванный индекс. Этот процесс на­
з ы в а е т с я построением индекса ( i n d e x construction) и л и индексированием (indexing). П р о ­
ц е с с и л и м а ш и н а , в ы п о л н я ю щ а я т а к у ю р а б о т у , н а з ы в а е т с я индексатором (indexer). Р а з ­
р а б о т к а а л г о р и т м о в и н д е к с и р о в а н и я о г р а н и ч е н а в з м о ж н о с т я м и а п п а р а т н о г о обеспече­
ния. П о этой причине м ы начнем эту главу с обзора основ компьютерного аппаратного
обеспечения, имеющего отношение к индексированию. После этого м ы опишем блочное
и н д е к с и р о в а н и е , о с н о в а н н о е н а с о р т и р о в к е (blocked sort-based indexing) ( р а з д е л 4 . 2 ) , —
эффективный одномашинный алгоритм для работы со статическими коллекциями. Его
можно рассматривать как масштабируемый вариант простого алгоритма индексирова­
ния, о с н о в а н н о г о н а с о р т и р о в к е ( с м . г л а в у 1). В р а з д е л е 4 . 3 о п и с ы в а е т с я о д н о п р о х о д н о е
и н д е к с и р о в а н и е в о п е р а т и в н о й п а м я т и (single-pass i n - m e m o r y i n d e x i n g ) . Э т о т а л г о р и т м
обладает е щ е более ш и р о к и м и возможностями масштабирования, поскольку не преду­
сматривает хранения лексикона в памяти. Д л я поиска п о очень большим коллекциям
например, в сети в е б — индексирование должно быть распределено п о кластерам, со­
стоящим и з сотен и л и т ы с я ч к о м п ь ю т е р о в . Э т а проблема обсуждается в разделе 4.4. Д л я
работы с коллекциями, подверженными частым изменениям, необходимо динамическое
индексирование, описанное в разделе 4.5. О н о обеспечивает немедленное отражение в
индексе изменений, произошедших в коллекции. В заключение м ы рассмотрим несколь­
ко более сложных вопросов, возникающих в связи с индексам им р безо
и н д е к с ы д л я п о и с к а с р а н ж и р о в а н и е м ( р а з д е л 4.6).
Построение индекса связано с несколькими темами, изложенными в других главах.
Для индексирования необходим исходный текст, н о документы кодируются многими
способами (см. главу 2). Индексатор читает и пишет, а также сжимает и распаковывает
как п р о м е ж у т о ч н ы е ф а й л ы индекса, т а к и о к о н ч а т е л ь н ы й и н д е к с (глава 5). П р и веб-
поиске документы хранятся не в локальной файловой системе, а должны загружаться
специальным роботом (глава 20). В корпоративных системах большинство документов
и н к а п с у л и р о в а н ы в р а з н ы х и н ф о р м а ц и о н н ы х с и с т е м а х , п о ч т о в ы х п р и л о ж е н и я х и базах
данных. Соответствующие примеры описаны в разделе 4.7. Несмотря на т о ч т о боль­
ш и н с т в о э т и х п р и л о ж е н и й д о с т у п н ы п о п р о т о к о л у http, о б ы ч н о б о л е е э ф ф е к т и в н ы м и
о к а з ы в а ю т с я и х с о б с т в е н н ы е и н т е р ф е й с ы п р и к л а д н о г о п р о г р а м м и р о в а н и я (Application
P r o g r a m m i n g Interfaces — A P I ) . Ч и т а т е л я м с л е д у е т з н а т ь , ч т о п о с т р о е н и е п о д с и с т е м , п о ­
ставляющих исходный текст процессу индексирования, само п о себе может оказаться
сложной проблемой.

4.1. Основы аппаратного обеспечения


П р и построении систем и н ф о р м а ц и о н н о г о поиска многие решения зависят от ха­
рактеристик компьютерного аппаратного обеспечения на котором будет развернута
система. П о этой причине м ы начинаем изложение с краткого обзора компьютерного
аппаратного обеспечения. Рабочие характеристики типичных систем в 2007 году при­
ведены в табл. 4 . 1 .

Т а б л и ц а 4 . 1 . Параметры типичной системы в 2007 году. Время позиционирования


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

Символ Показатель Значение

s С р е д н е е время позиционирования 5 мс = 5 х 1 0 _3
с
b С р е д н е е время п е р е д а ч и б а й т а 0,02мкс = 2 х 1 0 " с 8

Тактовая частота процессора 10V 1

Р Н и з к о у р о в н е в а я о п е р а ц и я (например, сравнить с л о в а и 0,01 мкс =10"® с


п о м е н я т ь местами)
О б ъ е м о с н о в н о й памяти Несколько гигабайтов
Объем дисков 1 Тбайт или больше

Список характеристик аппаратного обеспечения, влияющих на архитектуру систем


информационного поиска, приведен ниже.

• Доступ к данным, находящимся в памяти, осуществляется намного быстрее,


ч е м доступ к д а н н ы м на диске. Д л я доступа к байту, з а п и с а н н о м у в памяти,
9
д о с т а т о ч н о н е с к о л ь к и х т а к т о в п р о ц е с с о р а ( в о з м о ж н о , 5 х 10 с), н о загрузка
8
байта с диска выполняется намного медленнее (около 2 х 10" с). Следователь­
но, к а к м о ж н о б о л ь ш е д а н н ы х ж е л а т е л ь н о х р а н и т ь в п а м я т и , о с о б е н н о д а н н ы х ,
к которым часто требуется доступ. Метод, при котором часто используемые
д а н н ы е х р а н я т с я в о с н о в н о й п а м я т и , н а з ы в а е т с я кэшированием (caching).

• При считывании д а н н ы х с диска и записи д а н н ы х на диск возникает интервал


времени, в течение которого головка диска перемещается на участок памяти,
где х р а н я т с я д а н н ы е . Э т о в р е м я н а з ы в а е т с я временем позиционирования (seek
time). Д л я т и п и ч н ы х д и с к о в о н о с о с т а в л я е т о к о л о 5 м с . В о в р е м я п о з и ц и о н и р о ­
вания головки никакие данные не передаются. П о этой причине для максималь­
н о г о у с к о р е н и я п е р е д а ч и д а н н ы х блоки, к о т о р ы е д о л ж н ы б ы т ь с ч и т а н ы вместе,
с л е д у е т х р а н и т ь н а д и с к е в с о с е д н и х участках. Н а п р и м е р , с у ч е т о м п а р а м е т р о в ,
п е р е ч и с л е н н ы х в т а б л . 4 . 1 , з а г р у з к а 10 М б а й т д а н н ы х с д и с к а в п а м я т ь м о ж е т
б ы т ь в ы п о л н е н а з а 0,2 с, е с л и д а н н ы е х р а н я т с я о д н и м н е р а з р ы в н ы м б л о к о м . В т о
ж е в р е м я , е с л и э т и д а н н ы е р а з б р о с а н ы п о с т а н е с в я з а н н ы м д р у г с д р у г о м фраг­
3
м е н т а м , н а и х з а г р у з к у п о т р е б у е т с я 0,2 + 100 х ( 5 х 10~ ) м с = 0.7 с. п о с к о л ь к у
при этом позиционирование головки будет выполнено сто раз.

• Операционные системы обычно считывают и записывают данные целыми бло­


ками. Таким образом, считывание одного байта с диска может продолжаться
столько ж е времени, сколько и считывание целого блока. Размеры блока обыч­
н о р а в н ы 8, 16, 3 2 и 6 4 К б а й т . Ч а с т ь о п е р а т и в н о й п а м я т и , в к о т о р у ю з а п и с ы ­
в а ю т с я б л о к и и и з к о т о р о й о н и с ч и т ы в а ю т с я , н а з ы в а е т с я буфером (buffer)

• Передача данных с диска в память обрабатывается системной шиной, а не про­


цессором. Это значит, что в м о м е н т выполнения д и с к о в ы х операций ввода-
вывода процессор м о ж е т обрабатывать данные. М ы м о ж е м использовать этот
факт для ускорения передачи данных, если будем хранить сжатые данные на
диске. Если распаковка данных выполняется с п о м о щ ь ю эффективного алго­
ритма, т о о б щ е е в р е м я с ч и т ы в а н и я и р а с п а к о в к и с ж а т ы х д а н н ы х о б ы ч н о
меньше, чем время считывания несжатых данных.
• Оперативная память серверов, используемых в системах информационного по­
иска, о б ы ч н о с о с т а в л я е т н е с к о л ь к о г и г а б а й т о в , и н о г д а — д е с я т к и г и г а б а й т о в .
Объем доступного пространства на диске, как правило, на несколько порядков
больше.

4.2. Блочное индексирование, основанное


на сортировке
О с н о в н ы е э т а п ы п о с т р о е н и я н е к о о р д и н а т н о г о и н д е к с а п р е д с т а в л е н ы н а р и с . 1.4.
Сначала выполняется проход п о коллекции и сбор всех пар "термин-docID". Затем эти
пары сортируются, причем в качестве главного ключа используется термин, а в качестве
в т о р и ч н о г о к л ю ч а — и д е н т и ф и к а т о р д о к у м е н т а d o c I D . Н а з а к л ю ч и т е л ь н о м э т а п е иден­
тификаторы документа для каждого термина заносятся в инвертировавзшй список и вы­
числяются статистические характеристики, например частота термина в документе ( T F j
и документная частота (DF). Д л я небольших коллекций все это можно проделать в опе­
ративной памяти. В этой главе описываются методы, предназначенные д л я обработки
крупных коллекций, которые требуют использования вторичной памяти.
Для повышения эффективности индексирования представим термины в виде иденти­
ф и к а т о р о в т е р м и н о в t e r m l D ( в м е с т о с т р о к , к а к п о к а з а н о н а р и с . 1.4), г д е к а ж д ы й и д е н ­
т и ф и к а т о р termID п р е д с т а в л я е т с о б о й у н и к а л ь н ы й п о р я д к о в ы й н о м е р . О т о б р а ж е н и е
терминов в идентификаторы терминов можно осуществить "на лету" в момент обработки
коллекции или, в двухпроходных методах, на первом проходе скомпилировать лексикон,
а на втором проходе — создать инвертированный индекс. В этой главе описаны только
однопроходные алгоритмы создания индекса. Ссылки н а работы, посвященные много­
проходным методам, которые являются предпочтительными в некоторых приложениях,
например, если память на диске ограничена, приведены в разделе 4.7.
В к а ч е с т в е п р и м е р а в э т о й г л а в е б у д е м и с п о л ь з о в а т ь к о л л е к ц и ю Reuters-RCVl, раз­
мер которой составляет примерно 1 Гбайт. О н а состоит приблизительно и з 8 0 0 тысяч
д о к у м е н т о в н о в о с т н о й л е н т ы а г е н т с т в а Р е й т е р н а п р о т я ж е н и и о д н о г о г о д а — с 2 0 авгу­
ста 1 9 9 6 г о д а п о 19 а в г у с т а 1 9 9 7 года. Н а р и с . 4.1 п о к а з а н т и п и ч н ы й д о к у м е н т . С л е д у е т
отметить, что в этой книге м ы игнорируем мультимедийную информацию и основное
внимание уделяем тексту. Коллекция R e u t e r - R C V l охватывает ш и р о к и й диапазон меж­
д у н а р о д н ы х т е м , в к л ю ч а я п о л и т и к у , б и з н е с , с п о р т и ( к а к в п р и в е д е н н о м п р и м е р е ) науку.
Н е к о т о р ы е к л ю ч е в ы е х а р а к т е р и с т и к и этой к о л л е к ц и и п р и в е д е н ы в т а б л . 4 . 2 .
О б ъ е м к о л л е к ц и и R e u t e r s - R C V l — 100 м и л л и о н о в л е к с е м . С л е д о в а т е л ь н о , д л я соз­
д а н и я м н о ж е с т в а всех п а р " t e i m T D - d o c I D " д л я э т о й к о л л е к ц и и , и с п о л ь з у ю щ е й п о 4 б а й т
на и д е н т и ф и к а т о р ы t e r m I D и d o c I D , т р е б у е т с я 0,8 Г б а й т п а м я т и . В н а с т о я щ е е в р е м я т и ­
пичные коллекции на один и даже на лва порядка больше, ч е м коллекция Reuters-RCV1
М о ж н о легко увидеть, что попытка отсортировать пары "termlD-docID" в оперативной
памяти для такой коллекции провалится даже на мощных современных компьютерах.
Т а б л и ц а 4 . 2 . Характеристики коллекции Reuters-RTV1. Значения округлены для удобства
вычислений, которые приводятся в данной книге. Неокругленные значения таковы:
806 791 документ, 222 лексемы на документ, 391 523 (разных) термина, 6,04 байт на лексему
с пробелами и знаками пунктуации, 4,5 байт на лексему б е з п р о б е л о в и знаков пунктуации,
7,5 байт на термин и 96 969 056 лексем. Числа в этой таблице соответствуют третьей строке
табл. 5.1 ("без учета регистра").

Символ Показатель Значение

N Документы 800 000

I Среднее количество лексем в документе 200

М Термины 400 000


Среднее количество байтов в лексеме 6
(включая п р о б е л ы и знаки пунктуации)
Среднее количество байтов в лексеме 4,5
(без п р о б е л о в и знаков пунктуации)

Среднее количество байтов в термине 75

Г лексемы 100 000 000

REUTERS I

Extreme conditions create rare Antarctic clouds

SYDNEY(Reuters) - Rare, mother-of-pearl colored clouds


caused by extreme weather conditions above Antarctica are a
possible indication of global warming. Australian scientists said on
Tuesday.
Known as nacreous clouds, the spectacular formations showing delicate
wisps of colors were photographed in the sky over an Australian
meteorological base at Mawson Station on July 25.

Puc. 4.1. Новостное сообщение агентства Reuters

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


оперативной памяти, то проблему м о ж н о решить с помощью методов сжатия, описанных
в главе 5. О д н а к о и н в е р т и р о в а н н ы е ф а й л ы д л я м н о г и х б о л ь ш и х к о л л е к ц и й н е п о м е щ а ­
ются в память даже после сжатия.
Е с л и о б ъ е м а о п е р а т и в н о й п а м я т и н е д о с т а т о ч н о , н е о б х о д и м алгоритм внешней сор­
тировки (external sorting algorithm), т.е. а л г о р и т м , и с п о л ь з у ю щ и й д и с к . Д л я т о г о ч т о б ы
д о с т и ч ь п р и е м л е м о й с к о р о с т и , т а к о й а л г о р и т м д о л ж е н м и н и м и з и р о в а т ь к о л и ч е с т в о слу­
ч а й н ы х п е р е м е щ е н и й г о л о в к и п о д и с к у во в р е м я с о р т и р о в к и - п о с л е д о в а т е л ь н о е с ч и ­
т ы в а н и е д а н н ы х в ы п о л н я е т с я н а м н о г о б ы с т р е е (см. р а з д е л 4.1). О д н и м и з р е ш е н и й э т о й
п р о б л е м ы я в л я е т с я алгоритм блочного индексирования, основанного на сортировке
( b l o c k e d s o r t - b a s e d i n d e x i n g ) , и л и BSBI, п р о д е м о н с т р и р о в а н н ы й н а р и с . 4 . 2 . А л г о р и т м
B S B I 1) с е г м е н т и р у е т к о л л е к ц и ю н а р а в н ы е ч а с т и ; 2 ) с о р т и р у е т п а р ы " t e r m l D - d o c I D "
каждой части в памяти, 3) сохраняет промежуточные отсортированные результаты на
диске и 4) объединяет все промежуточные результаты в окончательный индекс

BSBIndexConstruction()
1
2 while (не просмотрены все документы)
3 do п 4 - п + 1
4 block 4 - P a r s e N e x t B l o c k ( )
5 BSBI - Invert (block)
6 WriteBlockToDisk (block,f ) a

7 MergeBlocks ( f „ . . . , / . ; / « , „ , )

Рис. 4.2. Блочное индексирование, основанное на сортировке


Этот алгоритм хранит инвертированные блоки в файлах
а
fi> —>fn> объединенный индекс — в файле fmergea

А л г о р и т м ф о р м и р у е т п о д о к у м е н т а м п а р ы " t e r m l D - d o c I D " и н а к а п л и в а е т и х в памя­


ти, п о к а н е б у д е т з а п о л н е н б л о к ф и к с и р о в а н н о г о р а з м е р а ( ф у н к ц и я ParseNextBlock
на р и с . 4 . 2 ) . Р а з м е р б л о к а п о д б и р а е т с я т а к , ч т о б ы о н п о м е щ а л с я в п а м я т и и д о п у с к а л бы­
струю сортировку. Затем блок инвертируется и записывается на диск. Инвертирование
(inversion) в ы п о л н я е т с я в д в а э т а п а . В о - п е р в ы х , с о р т и р у ю т с я п а р ы " t e r n i l D - d o c i D " В о -
вторых, все пары ' Ч е г т Ю - З о с Ю " с одинаковыми идентификаторами termID формируют
и н в е р т и р о в а н н ы й с п и с о к , а в к а ч е с т в е словопозиций (posting) в ы с т у п а е т т о л ь к о и д е н т и ­
фикатор документа docID. Результат, представляющий собой инвертированный индекс
для считанного блока, записывается на диск. Применяя этот алгоритм к коллекции
R e u t e r s - R T V l и п р е д п о л а г а я , ч т о м ы м о ж е м р а з м е с т и т ь в о п е р а т и в н о й п а м я т и 10 м и л ­
лионов п а р "termlD-docID", м ы получаем десять блоков, каждый и з которых является
обратным индексом для одной из частей коллекции.
На заключительном этапе алгоритм одновременно выполняет слияние десяти блоков
в один большой объединенный индекс. Пример двух блоков представлен на рис. 4.3, где
1-й д о к у м е н т в к о л л е к ц и и о б о з н а ч е н к а к а\. Д л я с л и я н и я все д е с я т ь б л о к о в о т к р ы в а ю т с я
одновременно, д л я считывания используются небольшие буферы чтения, а д л я записи
о к о н ч а т е л ь н о г о о б ъ е д и н е н н о г о и н д е к с а и с п о л ь з у е т с я б у ф е р а з а п и с и . Н а к а ж д о й итера­
ции м ы выбираем наименьший идентификатор termID, не обработанный д о текущего
м о м е н т а . Д л я э т о г о и с п о л ь з у е т с я л и б о очередь с приоритетами, либо аналогичная
структура данных. Все инвертированные списки для данного идентификатора termID
считываются и объединяются, а затем объединенный список записывается обратно на
диск. К а ж д ы й б у ф е р ч т е н и я п о м е р е н е о б х о д и м о с т и с н о в а з а п о л н я е т с я о ч е р е д н о й пор­
ц и е й д а н н ы х и з файла.
Насколько з а т р а т н ы м является м е т о д B S B I ? Е г о в р е м е н н а я с л о ж н о с т ь р а в н а Q(TlogT).
поскольку наиболее сложным этапом является сортировка, а количество сортируемых
элементов ограничено числом Т (количеством пар "termlD-docID"). Однако главный
вклад в реальное время индексирования обычно вносят парсирование документов
(функция ParseNextBlock) и о к о н ч а т е л ь н о е с л и я н и е ( ф у н к ц и я MergeBlocks). В у п ­ 1

ражнении 4.6 предлагается вычислить общее время, затраченное на создание индекса для
коллекции R C V 1 . включая инвертирование блоков и и х запись на диск.

brutus dl,d3,d6,d7
caesar d1,d2,d4,d8,d< объединенные
Julius d10 словопозиции
killed d8
noble d5
with d1,d2.d3.d5

\ /

Рис. 4.3. Слияние в алгоритме блочного индексирования, основанного на сортировке.


Два блока ("списки словопозиции под ащих слиянию") загружаются с диска в па­
мять, объединяются там ("объединенные списки словопозиций") и записываются об­
ратно на диск. Для большей ясности вместо идентификаторов termID показаны
термины

Обратите внимание на то, что коллекция R e u t e r s - R C V l не считается большой в наше


время, когда один или несколько гигабайтов оперативной памяти являются стандартом
для персональных компьютеров. П р и соответствующем сжатии (глава 5), м ы могли б ы
создать инвертированный индекс д л я коллекции R C V 1 , используя л и ш ь оперативную
память и даже не имея мощного сервера. Методы, которые м ы описали, необходимы для
коллекций, размер которых на несколько порядков превышает размер коллекции R C V 1 .

^ Упражнение 4.1. Д о п у с т и м , ч т о н а м н е о б х о д и м о п р о в е с т и Tiog T 2 сравнений, где


• Т — количество пар "termlD-docID", и п р и каждом сравнении выполняется две
установки головки диска. Сколько времени понадобится д л я создания индекса
для коллекции Reuters-RCVl, если вместо памяти используется диск, а алгоритм
с о р т и р о в к и я в л я е т с я н е о п т и м а л ь н ы м (т.е. н е а л г о р и т м о м в н е ш н е й с о р т и р о в к и ) ?
Используйте параметры системы, указанные в табл. 4.1.

Упражнение 4.2 [*]. К а к " н а л е т у " с о з д а т ь с л о в а р ь в а л г о р и т м е б л о ч н о г о и н д е к ­


сирования, основанного на сортировке, чтобы избежать дополнительного прохода
по данным?

1
Однако при большом размере блока фазу сортировки нельзя сбрасывать со счетов, тем более
что в алгоритме BSB1 сортируются словопозиции, а не термины. — Примеч. ред.
4.3. Однопроходное индексирование в оперативной
памяти
Блочное индексирование, основанное на сортировке, обладает превосходными воз­
м о ж н о с т я м и д л я м а с ш т а б и р о в а н и я , н о д л я его р е а л и з а ц и и к а ж д о м у т е р м и н у н е о б х о д и м о
поставить в соответствие идентификатор termID. Для очень больших коллекций необхо­
2
димая структура данных может не поместиться в памяти. Более эффективным с точки
зрения м а с ш т а б и р о в а н и я является однопроходное индексирование в памяти (single-pass
i n - m e m o r y indexing), и л и а л г о р и т м SPIMI. Э т о т а л г о р и т м и с п о л ь з у е т т е р м и н ы , а н е и х
идентификаторы, записывает словарь каждого блока н а диск, а затем д л я нового блока
начинает создавать новый словарь. При наличии достаточного объема памяти на диске
с помощью алгоритма SPIMI можно проиндексировать коллекцию любого размера.
Алгоритм SPIMI продемонстрирован на рис. 4.4. Часть алгоритма, выполняющая
парсирование документов и превращающая их в поток пар "термин-docID", которые м ы
в д а н н о м к о н т е к с т е б у д е м н а з ы в а т ь лексемами (tokens), н а э т о м р и с у н к е п р о п у щ е н а .
Ф у н к ц и я SPIMI-Invert м н о г о к р а т н о п р и м е н я е т с я к п о т о к а м л е к с е м , п о к а н е будет
о б р а б о т а н а вся к о л л е к ц и я .

SPIMI-Invert (token_stream)
1 output_file <—NewFile()
2 dictionary <— NewHash()
3 while (есть с в о б о д н а я п а м я т ь )
4 d o token <— next(token_stream)
5 if term(token) g dictionary
6 t h e n p o s t i n g s j i s t - AddToDictionary(fl7cfc'owary, term(token))
7 e l s e p o s t m g s _ l i s i - GetPostingsList(«7cn'on«ry, term(token))
8 iffull(postings_list)
9 t h e n p o s t i n g s j i i s t = DoublePost inqsblst(dictionary, term(token))
10 AddToPostingsList(posf/«gs_/Jsr, docID(token))
11 sorted_terms <— SortTerms(dictionary)
12 WriteBlockToDisk(sorterf_terms, dictionary, output_file)
13 r e t u r n output Jile

Рис. 4.4. Инверсия блока с помощью однопроходного индексирования в оперативной памяти

Лексемы обрабатываются п о очереди (строка 4). Когда термин встречается впервые,


о н д о б а в л я е т с я в с л о в а р ь ( л у ч ш е й р е а л и з а ц и е й д л я с л о в а р я я в л я е т с я х е ш ) и создается
н о в ы й и н в е р т и р о в а н н ы й с п и с о к ( с т р о к а 6). В ы з о в в с т р о к е 7 в о з в р а щ а е т этот и н в е р т и ­
рованный список для последующих появлений данного термина.
Разница между алгоритмами BSBI и SPIMI заключается в том, что алгоритм SPIMI
д о б а в л я е т з а п и с и н е п о с р е д с т в е н н о в и н в е р т и р о в а н н ы й с п и с о к (строка 10). В м е с т о т о г о
ч т о б ы к о л л е к ц и о н и р о в а т ь в с е п а р ы " t e r m e d - d o c I D " , а з а т е м и х с о р т и р о в а т ь (как э т о д е -

2
Строго говоря, этот недостаток (необходимость глобального словаря) является совершенно
независимым от главной особенности алгоритма SPIMI (отделение словопозиций от терминов в
памяти), описываемой ниже, и вполне может быть преодолен независимо. — Примеч. ред.
лает а л г о р и т м B S B I ) , в а л г о р и т м е S P I M I к а ж д ы й и н в е р т и р о в а н н ы й с п и с о к я в л я е т с я д и ­
н а м и ч е с к и м (т.е. е г о р а з м е р п о м е р е н а д о б н о с т и в о з р а с т а е т ) и н е м е д л е н н о с т а н о в и т с я
доступным для хранения записей. У такого подхода есть два преимущества: о н быстрее,
поскольку не подразумевает сортировки, и экономит память, поскольку отслеживает
связь т е р м и н а с с о о т в е т с т в у ю щ и м и н в е р т и р о в а н н ы м с п и с к о м и х р а н и т ь и д е н т и ф и к а т о ­
ры termID для этих списков нет необходимости. В результате блоки, к которым применя­
ется ф у н к ц и я SPIMI-Invert, м о г у т б ы т ь н а м н о г о б о л ь ш е , а п р о ц е с с с о с т а в л е н и я и н ­
декса в целом становится более эффективным.
Поскольку нам неизвестно, насколько большим будет инвертированный список д л я
термина, когда м ы встретим е г о впервые, сначала м ы выделяем память д л я короткого
3
инвертированного списка, а затем к а ж д ы й р а з удваиваем е е после заполнения (строки 8 и 9 ) .
Это з н а ч и т , ч т о ч а с т ь п а м я т и б у д е т п о т е р я н а и с э к о н о м и т ь п а м я т ь з а с ч е т и г н о р и р о в а н и я
идентификаторов терминов в промежуточных структурах данных не удастся. Однако
общие требования к памяти для динамически конструируемого индекса блока в алгорит­
ме SPIMI ниже, чем в алгоритме BSBI.
После того как память будет исчерпана, м ы записываем индекс блока (состоящий из
с л о в а р я и и н в е р т и р о в а н н ы х с п и с к о в ) н а д и с к ( с т р о к а 12). О д н а к о п е р е д э т и м т е р м и н ы
н е о б х о д и м о о т с о р т и р о в а т ь ( с т р о к а 11), т а к к а к и н в е р т и р о в а н н ы е с п и с к и д о л ж н ы б ы т ь
записаны в лексикографическом порядке. Э т о облегчает выполнение заключительного
этапа с л и я н и я . Е с л и б ы и н в е р т и р о в а н н ы е с п и с к и к а ж д о г о б л о к а б ы л и з а п и с а н ы б е с п о р я ­
дочно, что слияние блоков в ходе однократного последовательного перебора каждого
блока выполнить не удалось бы.
П р и к а ж д о м в ы з о в е ф у н к ц и я SPIMI-Invert з а п и с ы в а е т б л о к н а д и с к , т а к ж е как и
в алгоритме BSBI. Н а последнем этапе алгоритма SPIMI (соответствующем строке 7 н а
р и с . 4 . 2 и н е п о к а з а н н о м н а р и с . 4.4) б л о к и о б ъ е д и н я ю т с я в о к о н ч а т е л ь н ы й и н в е р т и р о ­
ванный индекс.
П о м и м о с о з д а н и я н о в о й с л о в а р н о й с т р у к т у р ы д л я к а ж д о г о блока и и с к л ю ч е н и я затрат- _
4
ного этапа с о р т и р о в к и , а л г о р и т м S P I M I и м е е т е щ е о д н у в а ж н у ю о с о б е н н о с т ь : с ж а т и е . Ес­
ли п р и м е н и т ь с ж а т и е , т о как с л о в о п о з и ц и и , т а к и т е р м и н ы словаря м о ж н о к о м п а к т н о хра­
нить н а диске. С ж а т и е у в е л и ч и в а е т э ф ф е к т и в н о с т ь а л г о р и т м а е щ е б о л ь ш е , так к а к э т о по­
зволяет о б р а б а т ы в а т ь б о л е е к р у п н ы е блоки и э к о н о м и т ь п а м я т ь д л я х р а н е н и я отдельных
блоков н а диске. Э т о т аспект а л г о р и т м а п о д р о б н о о п и с а н в л и т е р а т у р е (см. р а з д е л 4.7).
В р е м е н н а я с л о ж н о с т ь а л г о р и т м а S P I M I р а в н а О ( Г ) , п о с к о л ь к у с о р т и р о в к а л е к с е м не
5
нужна и сложность всех операций н е более чем линейно зависит от размера коллекции.

3
Строки 8 и 9 говорят о том, что алгоритм SPIMI предполагает использование вектора (один
физически непрерывный отрезок памяти) в качестве структуры данных для хранения списков по­
зиций в оперативной памяти. Однако односвязный список в качестве контейнера для позиций яв­
ляется не менее, если не более, эффективной структурой данных в данном алгоритме, а он не тре­
бует этих проверок и реаллокаций. — Примеч. ред.
Это отличие также непринципиально отличает алгоритмы (см. предыдущее примечание). -
Примеч. ред.
5
Здесь термин "лексема" употребляется в смысле всех выделенных из входного потока лексем
(равно числу словоупотреблений). Сортировка же словаря в строке 11 (SortTerms) все равно нуж­
л
на, поэтому сложность алгоритма SPIMI равна к*ТЕТА( (Т/к) Ь), где к — число блоков, b — кон­
станта закона Хипса (обычно — 0.5-0.7-0.9, см. главу 5), связывающая число лексем в блоке и
размер его лексикона, т.е. число разных терминов блока. — Примеч. ред.
4.4. Распределенное индексирование
Коллекции документов бывают такими большими, что на отдельном компьютере не­
возможно осуществить их эффективное индексирование. Это особенно актуально для се­
ти веб; для создания веб-индекса разумного размера необходимы большие компьютер­
6
н ы е кластеры . П о этой причине поисковые м а ш и н ы в сети веб для создания индексов
и с п о л ь з у ю т а л г о р и т м ы распределенного индексирования (distributed indexing). Р е з у л ь т а ­
т о м э т о г о п р о ц е с с а я в л я е т с я распределенный индекс (distributed i n d e x ) , р а з д е л е н н ы й м е ­
жду несколькими машинами, — либо п о терминам, либо п о документам. В этом разделе
м ы опишем распределенное индексирование для создания индекса, разделенного п о тер­
минам. Большинство крупных поисковых машин предпочитают индексы, распределен­
ные по документам (которые легко создать на основе индексов, распределенных п о тер­
минам). К этой теме м ы е щ е вернемся в разделе 20.3.
М е т о д создания распределенного индекса, описанный в этой главе, основан на общей
а р х и т е к т у р е р а с п р е д е л е н н ы х в ы ч и с л е н и й MapReduce. Архитектура MapReduce разрабо­
тана для крупных компьютерных кластеров. Кластер предназначен для решения крупных
в ы ч и с л и т е л ь н ы х з а д а ч н а д е ш е в ы х с е р и й н ы х к о м п ь ю т е р а х , и л и узлах ( n o d e s ) , к о т о р ы е
состоят из стандартных частей (процессор, память, диск), в отличие от суперкомпьютера,
имеющего специализированное аппаратное обеспечение. Поскольку в такой кластер
в х о д я т с о т н и и т ы с я ч и м а ш и н , к а ж д а я и з н и х в л ю б о й м о м е н т м о ж е т в ы й т и и з строя.
Следовательно, для надежного индексирования необходимо разделить работу на порции,
которые легко распределить и в случае сбоя перераспределить Процессом распределе­
н и я и п е р е р а с п р е д е л е н и я з а д а ч с р е д и о т д е л ь н ы х р а б о ч и х у з л о в у п р а в л я е т главный узел
(master n o d e ) .
Ф а з ы о т о б р а ж е н и я ( т а р ) и с в е р т к и (reduce) а л г о р и т м а M a p R e d u c e р а з д е л я ю т в ы ч и с ­
л и т е л ь н у ю р а б о т у н а порции (chunk), с к о т о р ы м и с т а н д а р т н ы е м а ш и н ы м о г у т с п р а в и т ь с я
за к о р о т к о е в р е м я . Н е к о т о р ы е э т а п ы а л г о р и т м а M a p R e d u c e п о к а з а н ы н а р и с . 4 . 5 , а п р и ­
мер применения к коллекции, состоящей из двух документов, — на рис. 4.6. Н а первом
этапе в х о д н ы е д а н н ы е , в н а ш е м с л у ч а е — к о л л е к ц и я в е б - д о к у м е н т о в , р а з д е л я ю т с я н а п
разделов (splits), р а з м е р к о т о р ы х в ы б и р а е т с я т а к , ч т о б ы г а р а н т и р о в а т ь р а в н о м е р н о е
(порции не должны быть слишком крупными) и эффективное (общее количество порций
не д о л ж н о б ы т ь с л и ш к о м б о л ь ш и м ) р а с п р е д е л е н и е . У д о б н ы м и р а з м е р а м и р а з д е л о в д л я
р а с п р е д е л е н н о г о и н д е к с и р о в а н и я я в л я ю т с я 16 и 6 4 М б а й т . Р а с п р е д е л е н и е р а з д е л о в п о
компьютерам заранее не определено — эта задача возложена на главный узел, который
д о л ж е н е е р е ш а т ь п о с т о я н н о . К о г д а к о м п ь ю т е р з а к а н ч и в а е т о б р а б о т к у о д н о й ч а с т и , ему
назначается другая. Если компьютер выходит из строя или работает слишком медленно
из-за аппаратных проблем, т о соответствующая часть переназначается другому компьютеру.
Архитектура MapReduce разделяет большую вычислительную задачу на более мелкие
ч а с т и , м а н и п у л и р у я п а р а м и "ключ-значение" При индексировании пара "ключ-зна­
чение" имеет вид (termID, docID). П р и распределенном индексировании преобразование
терминов в идентификаторы терминов termID также является распределенным, а значит,
представляет собой более сложную задачу, ч е м при индексировании на отдельной маши­
не. Д л я э т о г о д о с т а т о ч н о п р о с т о п о д д е р ж и в а т ь ( в о з м о ж н о , з а р а н е е в ы ч и с л е н н о е ) п р е о б -

В этой главе под кластером подразумевается группа связанных друг с другом компьютеров,
которые работают координирование Эта трактовка отличается от интерпретации кластера как
группы документов, имеющих близкую семантику (см. главы 16-18).
р а з о в а н и е т е р м и н а в terrnID д л я ч а с т о в с т р е ч а ю щ и х с я т е р м и н о в на в с е х узлах, а п р и ра­
боте с о т н о с и т е л ь н о р е д к о в с т р е ч а ю щ и м и с я т е р м и н а м и и с п о л ь з о в а т ь с а м и т е р м и н ы , а не
их и д е н т и ф и к а т о р ы . Р е ш е н и е э т о й з а д а ч и з д е с ь не п р и в о д и т с я , и п р е д п о л а г а е т с я , ч т о
о т о б р а ж е н и е " t e r m —> t e r m I D " п р а в и л ь н о о с у щ е с т в л я е т с я во в с е х узлах.

разделы назначение назначение


\ ^гаел, ~ словопозиции

-1 a-f |g-p | q - z ^ инвертор у Н a-f

napcep -*]a-f|g-p [q-z


инвертор

инвертор у A g_ z

[ Г сегментные
файлы
отображения

Рис. 4.5. Пример распределенного индексирования с помощью архитектуры


MapReduce. Цитируется по работе Дина и Гемавата (Dean and Ghemawat, 2004)

Схема функций о обр*


map: input -* Ш(к, v)
reduce: (k, list(v)) -> output

Создание экземпляра для построения индекса


map: web collection -»ust(terrnID, docID)
reduce: ((termlDi. lisKdocIDn.. . (termID2, -»(postings list,, postingsJist-
list(docID)>,...)

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


1
map: d\. С d i e d . di: С came, С с e d ->«C, d ), ( d i e d , d ), (C, di), (came, rf,>, (C, di),
2 2

( c ' ed, d,))


reduce: «С, (d , d,, d,)), vdied, (di)
2 [came, (d,)/, -4(C, (da, d :l)), (.died, (<fe:l)>, (came, (rf :l)>,
2 2

(c'ed,(rf,)» = 'ed, (*:!)»


Рис. 4.6. Функции отображения и свертки в архитектуре MapReduce. Функция тар (отображе
ние) создает список пар "ключ-значение". На этапе reduce (свертка) все значения, соответст­
вующие ключу, собираются в один список. Затем этот список обрабатывается далее. На рисун­
ке продемонстрированы экземпляры двух функций и пример создания индекса. Поскольку на фазе
отображения документы обрабатываются в распределенном режиме, пары "termlD-docID" из
начально не обязательно должны быть упорядочены. Для большей ясности вместо идентифика­
торов терминов termID на рисунке приведены сами термины. Термин Caesar заменен аббревиа­
турой С, а термин conquered — аббревиатурой e'ed

Этап отображения (map phase) в а р х и т е к т у р е M a p R e d u c e с о с т о и т из о т о б р а ж е н и я


р а з д е л о в в х о д н ы х д а н н ы х в п а р ы " к л ю ч - з н а ч е н и е " . Э т а з а д а ч а н и ч е м н е о т л и ч а е т с я от
чи парсирования документов, которая решается в рамках алгоритмов BSB1 и SPIMI,
о м у м ы называем компьютеры, задействованные на этапе отображения, парсерами
гиьег). Каждый парсер записывает свои результаты в локальные промежуточные фай-
к о т о р ы е н а з ы в а ю т с я сегментными ( s e g m e n t files) ( р и с . 4.5).
Н а этапе свертки (reduce p h a s e ) в с е з н а ч е н и я , с о о т в е т с т в у ю щ и е з а д а н н о м у к л ю ч у ,
[ р м ш с ы в а ю т с я р я д о м д р у г с д р у г о м , так, ч т о б ы п р о ц е с с и х ч т е н и я и о б р а б о т к и в ы п о л -
I Швея быстро. Это достигается благодаря разделению ключей на j диапазонов терминов и
записи результата р а б о т ы парсера (пар "ключ-значение") над к а ж д ы м диапазоном в свой
^ с е г м е н т н ы й ф а й л . Н а р и с . 4.5 п о к а з а н о р а з д е л е н и е т е р м и н о в п о п е р в ы м б у к в а м : a-f, g - p ,
« z и j = 3 . ( Т а к о е р а з д е л е н и е в ы б р а н о и з с о о б р а ж е н и й н а г л я д н о с т и . В п р и н ц и п е диапа­
зоны к л ю ч е й н е о б я з а т е л ь н о с о о т в е т с т в у ю т с м е ж н ы м т е р м и н а м и л и и д е н т и ф и к а т о р а м ) .
• Разделение терминов на диапазоны определяется человеком, управляющим системой
•индексирования (упражнение 4.10). После этого парсер записывает соответствующие
еггментные файлы — по одному для каждого диапазона терминов. Т а к и м образом, каж-
L авму д и а п а з о н у т е р м и н о в с о о т в е т с т в у ю т г с е г м е н т н ы х ф а й л о в , г д е г — к о л и ч е с т в о п а р -
I с е р о в . Н а п р и м е р , н а р и с . 4.5 п о к а з а н ы т р и с е г м е н т н ы х ф а й л а д л я р а з д е л а a-f. И м соот-
I ветствуют три парсера, изображенные на этом рисунке.
L С б о р в с е х з н а ч е н и й (в д а н н о м с л у ч а е — и д е н т и ф и к а т о р о в d o c I D ) , с о о т в е т с т в у ю щ и х
1 з а д а н н о м у к л ю ч у (в д а н н о м с л у ч а е — и д е н т и ф и к а т о р у t e r m I D ) , в о д и н с п и с о к н а этапе
с в е р т к и в о з л а г а е т с я н а инвертор (inverter). Главный узел назначает каждый диапазон
т е р м и н о в р а з н ы м и н в е р т о р а м и, к а к и в с л у ч а е с п а р с е р а м и , е с л и и н в е р т о р в ы ш е л и з
строя или работает медленно, происходит переназначение диапазонов терминов. Каждый
диапазон терминов (которому соответствуют г сегментных файлов, по одному на каждый
парсер) обрабатывается отдельным инвертором. Здесь предполагается, что сегментные
I файлы и м е ю т размер, подходящий для обработки на одной машине Наконец, список
значений, соответствующих каждому ключу, упорядочивается и записывается в оконча­
тельный отсортированный инвертированный список. (Обратите внимание на то, что сло-
I вопозиции, изображенные на рис. 4.6, в к л ю ч а ю т в себя частоту термина в документе
I ( T F ) , в т о в р е м я как в д р у г и х р а з д е л а х г л а в ы о н и п р е д с т а в л я ю т с о б о й п р о с т о и д е н т и ф и ­
катор d o c I D б е з у к а з а н и я ч а с т о т ы т е р м и н а ) . Н а р и с . 4.5 п о к а з а н п о т о к д а н н ы х д л я д и а п а ­
зона " a - f . Н а э т о м с о з д а н и е и н в е р т и р о в а н н о г о и н д е к с а з а в е р ш а е т с я .
Парсеры и инверторы — это не разные машины. Главный узел идентифицирует про­
стаивающие машины и назначает им задания. Одна и та ж е машина на этапе отображе­
ния м о ж е т и г р а т ь р о л ь п а р с е р а , а н а э т а п е с в е р т к и — и н в е р т о р а . Ч а с т о в о з н и к а е т н е о б ­
ходимость параллельно с созданием индекса выполнять и другую работу, поэтому между
м о м е н т а м и , к о г д а к о м п ь ю т е р и г р а е т р о л ь п а р с е р а и л и и н в е р т о р а , о н м о ж е т р е ш а т ь дру­
гие з а д а ч и .
Для минимизации времени записи перед тем, как инверторы свернут данные, каждый
п а р с е р з а п и с ы в а е т с в о й с е г м е н т н ы й ф а й л н а с в о й локальный диск. Н а этапе свертки
главный узел сообщает инвертору расположение соответствующих сегментных файлов
| (например, г сегментных файлов для раздела " a - f ) . Для каждого сегментного файла тре­
буется т о л ь к о о д н о п о с л е д о в а т е л ь н о е с ч и т ы в а н и е , п о с к о л ь к у все д а н н ы е , п р е д н а з н а ч е н ­
ные конкретному инвертору, записываются парсером в отдельный сегментный файл. Та­
кой п р и е м м и н и м и з и р у е т о б ъ е м с е т е в о г о т р а ф и к а в о в р е м я и н д е к с и р о в а и я
Н а р и с . 4.6 п р о д е м о н с т р и р о в а н а о б щ а я с х е м а ф у н к ц и й а р х и т е к т у р ы M a p R e d u c e . В в о д
и в ы в о д ч а с т о п р е д с т а в л я ю т с о б о й с п и с к и п а р " к л ю ч - з н а ч е н и е " , п о э т о м у н е с к о л ь к о за­
даний в рамках архитектуры MapReduce могут выполняться по порядку. Фактически этот
подход б ы л разработан д л я системы индексирования поисковой м а ш и н ы Google в 2 0 0 4 году.
В этом разделе описывается только одна из пятидесяти операций библиотеки MapReduce
в этой системе индексирования. Другая операция библиотеки MapReduce преобразует
индекс, разделенный по терминам, в индекс, разделенный по документам.
Архитектура MapReduce представляет собой надежный и концептуально простой ин­
струмент для построения индексов в распределенной среде. Предоставляя возможность
п о л у а в т о м а т и ч е с к о г о р а з д е л е н и я п р о ц е с с а п о с т р о е н и я и н д е к с а н а б о л е е м е л к и е задачи,
при наличии компьютерных кластеров достаточного размера этот алгоритм позволяет
масштабировать сколь угодно большие коллекции.

*Р Упражнение 4.3. Д о п у с т и м , ч т о д а н н ы е д л я п о с т р о е н и я и н д е к с а р а з д е л е н ы на
• п - 15 ч а с т е й , к о л и ч е с т в о с е г м е н т о в г = 7 0 , а к л ю ч и р а з д е л е н ы н а j = 3 д и а п а з о ­
нов терминов. К а к долго будет выполняться создание индекса для коллекции
Reuters-RCVl в архитектуре MapReduce? П р и вычислении используйте данные
из т а б л . 4 . 1 .

4.5. Динамическое индексирование


Д о сих пор м ы предполагали, что коллекция документов является статической. Это
справедливо для коллекций, которые никогда не изменяются либо изменяются редко
(например, Библия и собрание сочинений Шекспира). Однако большинство коллекций
изменяются часто и при этом документы добавляются, удаляются или обновляются. Это
значит, ч т о в словарь необходимо добавлять новые термины, а инвертированные списки
необходимо обновлять с учетом изменений.
Простейший способ решения этой задачи заключается в периодической перестройке
индекса заново. Это хорошее решение, если частота изменений невелика, а задержка,
связанная с тем, что новые документы не сразу появляются в поиске, вполне приемлема,
причем в нашем распоряжении достаточно ресурсов, чтобы в процессе создания нового
индекса сохранить доступ к старому.
Если новые документы необходимо добавлять быстро, то целесообразно поддержи­
в а т ь д в а и н д е к с а : к р у п н ы й о с н о в н о й и н д е к с и н е б о л ь ш о й вспомогательный индекс
(auxiliary i n d e x ) , в к о т о р о м х р а н я т с я н о в ы е д о к у м е н т ы . В с п о м о г а т е л ь н ы й и н д е к с х р а н и т ­
ся в п а м я т и . П о и с к в ы п о л н я е т с я п о о б о и м и н д е к с а м , а р е з у л ь т а т ы о б ъ е д и н я ю т с я . У д а ­
ленные документы хранятся в битовом векторе недействительных документов. Таким
образом, перед возвращением результатов все удаленные документы можно отфильтро­
вать. Документы обновляются с п о м о щ ь ю удаления и повторной вставки.
Каждый раз, когда вспомогательный индекс становится слишком большим, м ы объе­
диняем его с основным индексом. Стоимость этой операции слияния зависит от того, как
индекс хранится в файловой системе. Если каждый инвертированный список хранится в
отдельном файле, то слияние сводится к расширению каждого списка из основного ин­
декса соответствующим списком из вспомогательного индекса. В этой схеме вспомога­
тельный индекс позволяет сократить количество позиционирований головки диска. Для
отдельного обновления каждого документа требуется M перемещений диска, где ave

М те— средний размер лексикона документов из коллекции. П р и работе с вспомогатель­


ным индексом дополнительная нагрузка н а диск возникает только п р и слиянии с основ­
ным индексом.
Динамическое индексирование 97

К с о ж а л е н и ю , схема, в к о т о р о й к а ж д ы й и н в е р т и р о в а н н ы й список хранится в отдельном


фяЛ е , н е о с у щ е с т в и м а , п о с к о л ь к у б о л ь ш и н с т в о ф а й л о в ы х с и с т е м н е м о г у т э ф ф е к т и в н о
jah 1ать с о ч е н ь б о л ь ш и м к о л и ч е с т в о м ф а й л о в . П р о щ е в с е г о х р а н и т ь и н д е к с в о д н о м
Л ш ы п о м файле, т.е. в виде конкатенации всех инвертированных списков. Н а практике
и используется компромиссное решение (раздел 4.7). Д л я простоты предположим.
то и н д е к с х р а н и т с я в о д н о м б о л ь ш о м ф а й л е .
В д а н н о й с х е м е к а ж д а я с л о в о п о з и ц и я о б р а б а т ы в а е т с я \_Т1п\ р а з , п о с к о л ь к у м ы о б р а -
щ ц м с я к н е й в х о д е к а ж д о г о и з \ Т1п\ с л и я н и й , г д е п — р а з м е р в с п о м о г а т е л ь н о г о индек-
а . а Т— о б щ е е к о л и ч е с т в о п о з и ц и й . С л е д о в а т е л ь н о , о б щ а я в р е м е н н а я с л о ж н о с т ь равна
• rVn). ( М ы п р е н е б р е г л и п р е д с т а в л е н и е м т е р м и н о в и у ч и т ы в а л и т о л ь к о и д е н т и ф и к а т о -
рш d o c I D . П р и о ц е н к е в р е м е н н о й с л о ж н о с т и и н в е р т и р о в а н н ы й с п и с о к р а с с м а т р и в а е т с я
в р о с т о к а к с п и с о к и д е н т и ф и к а т о р о в docID.)
1 2
В в е д я log (77w) и н д е к с о в / , 1 / , ... р а з м е р а 2 ° х л, 2 х и, 2 х и, ... с о о т в е т с т в е н н о ,
2 0 и 2

шш м о ж е м у л у ч ш и т ь о ц е н к у в р е м е н н о й с л о ж н о с т и . С л о в о п о з и ц и и " п р о ф и л ь т р о в ы в а ю т ­
с я " через э т у последовательность индексов, причем на каждом уровне обрабатываются
только о д и н р а з . Э т а с х е м а н а з ы в а е т с я логарифмическим слиянием (logarithmic merging)
ф и с . 4.7). К а к и п р е ж д е , в о в с п о м о г а т е л ь н о м и н д е к с е , х р а н я щ е м с я в п а м я т и , н а к а п л и в а ­
е т с я д о п п о з и ц и й , к о т о р ы е м ы н а з о в е м Z . К а к т о л ь к о п р е д е л п п р е в ы ш е н , 2° х п з а п и с е й
0

в индексе Z переносятся в новый индекс / , созданный н а диске В следующий раз, когда


0 0

индекс Z о к а ж е т с я з а п о л н е н н ы м , о с у щ е с т в л я е т с я е г о с л и я н и е с и н д е к с о м / и с о з д а е т с я
0

LMergeAddToken (indexes, Z , token)


0

1 Z <-Merge(Zo,
0 {token})
2 if|Zb| = «
3 t h e n f o r i < - 0 t o °°
4 d o if /, e indexes
5 then Z, +1 < - Me rge(4 Z,)
6 (Z,+i — временный индекс на диске)
7 indexes <— indexes - {/,}
8 else /, <— Zi (Z, становится постоянным индексом /,)
9 indexes <— indexes и {/,}
10 Break
11 Z o ^ - 0
LogarithmicMerge(;
1 Z 0 0 ( Z — индекс, хранящийся
0 в памяти)
2 indexes <— 0

3 while true

4 do LMergeAddToken(ma'ejces, Z , getNextToken () | 0

Рис. 4.7. Логарифмическое слияние. Каждая лексема (termlD.docID) сна­


чала с помощью алгоритма LMergeAddToken добавляется в индекс Zq,
хранящийся в памяти. Индекс Zq и множество indexes инициализируют­
ся алгоритмом LogarithmicMerge
и н д е к с Z i , и м е ю щ и й р а з м е р 2 ' х и . И н д е к с Z\ л и б о х р а н и т с я к а к /[ (если и н д е к с а U д о
этого м о м е н т а не было), л и б о объединяется с индексом / образуя индекс Z2 (если ин­ ь

д е к с U с у щ е с т в о в а л ) , и т.д. З а п р о с н а п о и с к н а п р а в л я е т с я и н д е к с у Z , х р а н я щ е м у с я в па­
0

м я т и , и в с е м с у щ е с т в у ю щ и м в д а н н ы й м о м е н т и н д е к с а м /,, з а п и с а н н ы м н а д и с к е , а р е ­
7
зультаты поиска объединяются. Читатели, знающие свойства биномиальной к у ч и , легко
узнают эту структуру данных в структуре обратных индексов, созданных методом лога­
рифмического слияния.
В р е м е н н а я с л о ж н о с т ь с о з д а н и я и н д е к с а р а в н а G(7iog(77«)), п о с к о л ь к у к а ж д а я с л о в о -
п о з и ц и я н а к а ж д о м и з log(77/7) у р о в н е й о б р а б а т ы в а е т с я т о л ь к о о д и н р а з . Э т о т в ы и г р ы ш
частично компенсируется замедлением обработки запроса; теперь нам необходимо про­
и з в о д и т ь с л и я н и е р е з у л ь т а т о в и з log(77w) и н д е к с о в , х о т я р а н ь ш е о б ъ е д и н я л и с ь т о л ь к о
два индекса (основной и вспомогательный). Как и в схеме со вспомогательным индек­
сом, иногда приходится объединять очень большие индексы, что замедляет процесс по­
иска, о д н а к о э т о п р о и с х о д и т р е ж е , а р а з м е р о б ъ е д и н я е м ы х и н д е к с о в в с р е д н е м м е н ь ш е .
Р а б о т а с м н о г о ч и с л е н н ы м и и н д е к с а м и у с л о ж н я е т с б о р с т а т и с т и к и п о к о л л е к ц и и . На­
п р и м е р , о н а влияет н а а л г о р и т м и с п р а в л е н и я о р ф о г р а ф и ч е с к и х о ш и б о к , о п и с а н н ы й в раз­
деле 3.3, который выбирает правильную альтернативу с наибольшим количеством совпа­
дений. При наличии многочисленных индексов и битового вектора недействительных
данных определение правильного количества совпадений термина уже не является про­
стой задачей. Ф а к т и ч е с к и все аспекты р а б о т ы и н ф о р м а ц и о н н о - п о и с к о в ы х систем —
п о д д е р ж к а и н д е к с а , о б р а б о т к а з а п р о с о в , р а с п р е д е л е н и е и т.д. — п р и л о г а р и ф м и ч е с к о м
слиянии усложняются.
Из-за сложности динамического индексирования некоторые крупные поисковые ма­
ш и н ы и с п о л ь з у ю т с т р а т е г и ю п о в т о р н о г о с о з д а н и я и н д е к с а " с н у л я " . О н и не п р и м е н я ю т
д и н а м и ч е с к о е п о с т р о е н и е индекса. В м е с т о э т о г о п е р и о д и ч е с к и с о з д а е т с я с о в е р ш е н н о
новый индекс. После этого все запросы перенаправляются этому индексу, а старый ин­
декс удаляется.

*Р Упражнение 4.4. Д о п у с т и м , ч т о и = 2 и 1 < Г < 3 0 . В ы п о л н и т е п о ш а г о в у ю т р а с -


• сировку алгоритма, приведенного на рис. 4.7. Создайте таблицу, демонстрирую­
щ у ю д л я к а ж д о г о м о м е н т а в р е м е н и , в к о т о р ы й о б р а б о т а н о Т=2хк л е к с е м (1 < к
< 15), к а к о й и з и н д е к с о в / , 1 \ , / используется П е р в ы е т р и с т р о к и э т о й т а б л и ц ы
0 2

приведены ниже.

h h h к
2 0 0 0 0

4 0 0 0 1

6 0 0 1 0

7
См, например, книгу Кормена и др. (Cormen et al., 1990). Русский перевод: Кормен Т., Лей-
зерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. — М.: Издательский дом
"Вильяме", 2005. — Примеч. ред.
Другие типы индексов 99

- . 6 . Другие типы индексов


В д а н н о й главе р а с с м а т р и в а е т с я п р о ц е с с п о с т р о е н и я т о л ь к о н е к о о р д и н а т н ы х индек-
П о м и м о б о л ь ш е г о о б ъ е м а д а н н ы х , к о т о р ы й с л е д у е т о б р а б о т а т ь , к о о р д и н а т н ы е ин-
ы о т л и ч а ю т с я т е м , ч т о х р а н я т т р о й к и ( t e r m I D , d o c I D , ( p o s i t i o n l , position2,...)), а не
ы (termID, d o c I D ) , а л е к с е м ы и с л о в о п о з и ц и и , п о м и м о и д е н т и ф и к а т о р а d o c I D , содер-
ВЩх и н ф о р м а ц и ю о п о з и ц и и т е р м и н а . С у ч е т о м этих о с о б е н н о с т е й в с е а л г о р и т м ы , опи-
в ш ь е в э т о й главе, м о ж н о п р и м е н я т ь и д л я к о о р д и н а т н ы х и н д е к с о в .
\ В индексах, рассмотренных нами выше, инвертированные списки были упорядочены
и д е н т и ф и к а т о р а м d o c I D . К а к б у д е т п о к а з а н о в главе 5 , э т о м о ж н о с у с п е х о м исполь-
шшя-* д л я с ж а т и я и н д е к с а . В м е с т о и д е н т и ф и к а т о р о в d o c I D м ы м о ж е м с ж и м а т ь м е н ь ш и е
ы (gaps) м е ж д у и д е н т и ф и к а т о р а м и d o c I D , с м я г ч и в т р е б о в а н и я к р а з м е р у индек-
О д н а к о п р и с о з д а н и и с и с т е м поиска с ранжированием ( г л а в ы 6 и 7 ) , а н е булева по-
структура индекса оказывается неоптимальной. П р и поиске с ранжированием
енты в инвертированном списке часто упорядочиваются п о весу или влиянию,
д о к у м е н т ы с м а к с и м а л ь н ы м в е с о м о к а з ы в а ю т с я п е р в ы м и . П р и т а к о й организа-
ю и с к а п р о с м о т р и н в е р т и р о в а н н ы х с п и с к о в в х о д е о б р а б о т к и з а п р о с о в о б ы ч н о пре­
в р а щ а е т с я тогда, к о г д а веса становятся н а с т о л ь к о м а л ы м и , ч т о л ю б ы е с л е д у ю щ и е доку­
м е н т ы м о ж н о з а в е д о м о с ч и т а т ь с л а б о с о о т в е т с т в у ю щ и м и з а п р о с у (глава 6 ) . В и н д е к с е ,
^ • р я д о ч е н н о м п о идентификаторам docID, новые документы всегда вставляются в ко-
и н в е р т и р о в а н н ы х с п и с к о в . В и н д е к с е , у п о р я д о ч е н н о м п о в л и я н и ю (раздел 7.1.5),
• с т а в к а может производиться в любое место, усложняя обновление инвертированного
• екса
f Безопасность ( s e c u r i t y ) — э т о в а ж н ы й аспект ф у н к ц и о н и р о в а н и я и н ф о р м а ц и о н н о -
• и с к о в ы х систем в корпорациях. Работники низших звеньев не должны иметь доступа к
» н н ы м о зарплатах сотрудников, а уполномоченные менеджеры должны иметь возмож-
австь н а й т и э т и д а н н ы е . С п и с к и р е з у л ь т а т о в н е д о л ж н ы с о д е р ж а т ь д о к у м е н т о в , з а к р ы -
IWA д л я д о с т у п а ; с а м а и н ф о р м а ц и я о с у щ е с т в о в а н и и э т и х д о к у м е н т о в м о ж е т б ы т ь к о н -
нциальной.
Г А в т о р и з а ц и я п о л ь з о в а т е л я ч а с т о у п р а в л я е т с я с п о м о щ ь ю списков контроля доступа
8
Iftccess Control List — A C L ) . С п и с к и A C L м о г у т в з а и м о д е й с т в о в а т ь с и н ф о р м а ц и о н н о -
гирисковой с и с т е м о й п у т е м с в я з ы в а н и я к а ж д о г о д о к у м е н т а с н а б о р о м п о л ь з о в а т е л е й ,
е ю щ и х к н и м д о с т у п (рис. 4 . 8 ) , и о б р а щ е н и я п о л у ч е н н о й м а т р и ц ы " п о л ь з о в а т е л ь -
кумент". Инвертированный индекс A C L для каждого пользователя содержит "инвер­
сированный с п и с о к " д о к у м е н т о в , к к о т о р ы м о н и м е е т д о с т у п , — с п и с о к д о с т у п а п о л ь з о -
1»ателя. О д н а к о т а к о й и н д е к с т р у д н о п о д д е р ж и в а т ь , е с л и п р а в а д о с т у п а и з м е н я ю т с я ; м ы
уже обсуждали подобные сложности в контексте инкрементального индексирования в
г-тучае о б ы ч н ы х и н в е р т и р о в а н н ы х с п и с к о в (см. р а з д е л 6.5). К р о м е т о г о , е с л и пользова-
щпъ и м е е т д о с т у п к б о л ь ш о м у п о д м н о ж е с т в у д о к у м е н т о в , т о п р и х о д и т с я о б р а б а т ы в а т ь
ень д л и н н ы е и н в е р т и р о в а н н ы е с п и с к и . П р а в а п о л ь з о в а т е л я ч а с т о в е р и ф и ц и р у ю т с я н е ­
п о с р е д с т в е н н о в х о д е п о и с к а и н ф о р м а ц и и в м о м е н т з а п р о с а , д а ж е если э т о з а м е д л я е т
сам поиск.

11 8
Аналогом этой постановки в веб-поиске может служить задача персонализированного и со­
п е л ь н о г о поиска, в которой идентифицированный пользователь может иметь индивидуальное
эанжирование, использующее данные о страницах, которые она посещала сама или прочитала в
Ъ е н т е друзей" той или иной социальной сети. — Примеч. ред.
0, если пользователь i
пользователи | о/1 | н е и м е е т
доступа к документу,
и 1 — в противном случае
Рис. 4.8. Матрица "пользователь-Оокумент" для списков контроля доступа. Элемент
(i, j) равен единице, если пользователь i имеет доступ к документу j , и нулю, если не име­
ет. Во время обработки запроса список записей о праве доступа пользователя пересека­
ется со списком результатов, возвращенным текстовой частью индекса

Индексы, используемые для хранения и поиска терминов (в противоположность до­


кументам), описаны в главе 3.

*Р Упражнение 4.5. М о ж е т л и и с п р а в л е н и е о р ф о г р а ф и ч е с к и х о ш и б о к н а р у ш и т ь
• безопасность на уровне документов? Рассмотрите случай, когда исправление ор­
фографических ошибок относится к документам, к которым пользователь досту­
па н е и м е е т .

Упражнение 4.6. О б щ е е время, затрачиваемое на создание индекса с п о м о щ ь ю блоч­


ного индексирования, основанного на сортировке, продемонстрировано в табл. 4.3.
Заполните столбец " В р е м я " на основе параметров системы, указанных в табл. 4 . 1 .

Т а б л и ц а 4 . 3 . Пять этапов построения индекса для коллекции Reuters-RCV1 с помощью


блочного индексирования, основанного на сортировке. Номера строк соответствуют рис. 4.2

Этап

1 Считывание к о л л е к ц и и ( с т р о к а 4)
7
2 10 начальных с о р т и р о в о к 10 записей ( с т р о к а 5)
3 Запись 10 б л о к о в ( с т р о к а 6)
4 О б щ е е время п е р е д а ч и данных на д и с к д л я с л и я н и я ( с т р о к а 7)
5 Время ф а к т и ч е с к о г о с л и я н и я ( с т р о к а 7)
Всего

Упражнение4.7. Повторите упражнение 4.6 для более крупной коллекции, опи­


санной в табл. 4.4. Выберите размер блока, соответствующий у р о в н ю современ­
ных технологий (помните, что блок должен без проблем помещаться в оператив­
ной п а м я т и ) . С к о л ь к о б л о к о в н а м п о т р е б у е т с я ?

Т а б л и ц а 4 . 4 . Статистические характеристики крупной коллекции

Символ Статистическая характеристика Значение

N Количество документов 1 ООО ООО ООО


L Количество лексем в документе 1 ООО
ave
М Kc~i4ei.iBU |jdjMbiA ie|JRIHHOB 44 000 000
Упражнение 4.8. П р е д п о л о ж и м , ч т о в н а ш е м р а с п о р я ж е н и и н а х о д и т с я к о л л е к ц и я
с р е д н е г о р а з м е р а , и н д е к с к о т о р о й м о ж н о п о с т р о и т ь с п о м о щ ь ю п р о с т о г о алго­
р и т м а и н д е к с и р о в а н и я в о п е р а т и в н о й п а м я т и , п р о д е м о н с т р и р о в а н н о г о на р и с . 1.4.
Сравните требования к размерам оперативной и дисковой памяти, а также к вре­
мени индексирования, которые предъявляют к этой коллекции простой алгоритм,
о п и с а н н ы й н а р и с . 1.4, и а л г о р и т м б л о ч н о г о и н д е к с и р о в а н и я , о с н о в а н н ы й н а с о р ­
тировке
Упражнение 4.9. П р е д п о л о ж и м , ч т о к о м п ь ю т е р ы в а р х и т е к т у р е M a p R e d u c e и м е ­
ю т п о 100 Г б а й т д и с к о в о й п а м я т и . Д о п у с т и м т а к ж е , ч т о и н в е р т и р о в а н н ы й с п и с о к
для термина the имеет размер 2 0 0 Гбайт. В таком случае архитектуру MapReduce
н е в о з м о ж н о п р и м е н и т ь д л я создания" и н д е к с а . Как модифицировать подход
MapReduce, чтобы решить эту проблему?

Упражнение 4.10. Д л я о п т и м а л ь н о г о б а л а н с и р о в а н и я з а г р у з к и и н в е р т о р ы в а р х и ­
тектуре MapReduce должны получать сегментированные инвертированные списки
примерно одинаковых размеров. Д л я новой коллекции распределение пар " к л ю ч -
значение" может оказаться заранее неизвестным. Как решить эту проблему?
Упражнение 4.11. П р и м е н и т е п о д х о д M a p R e d u c e д л я р е ш е н и я п р о б л е м ы подсче­
та п о я в л е н и я т е р м и н а в н а б о р е ф а й л о в . О п и ш и т е о п е р а ц и и о т о б р а ж е н и я и с в е р т к и
для этой задачи. Запишите пример по строкам, как на рис. 4.6.
Упражнение 4.12. М ы у т в е р ж д а л и ( в к о н ц е р а з д е л а 4 . 5 ) , ч т о в с п о м о г а т е л ь н ы й
индекс м о ж е т у х у д ш и т ь качество статистических характеристик коллекции. Н а п р и ­
мер, в методе в з в е ш и в а н и я т е р м и н о в ухудшается п а р а м е т р idf, р а в н ы й log(/V/df ), г д е (

N— о б щ е е к о л и ч е с т в о д о к у м е н т о в , a df, — к о л и ч е с т в о д о к у м е н т о в , с о д е р ж а щ и х
т е р м и н i '(раздел 6.2.1). П о к а ж и т е , ч т о д а ж е м а л е н ь к и й в с п о м о г а т е л ь н ы й и н д е к с
м о ж е т в ы з в а т ь з н а ч и т е л ь н ы е о ш и б к и п р и о п р е д е л е н и и п а р а м е т р а idf, е с л и о н бу­
дет вычислен только по основному индексу. Рассмотрите редкий термин, который
в д р у г стал в с т р е ч а т ь с я ч а с т о ( н а п р и м е р , Flossie в с т а т ь е T r o p i c a l S t o r m Flossie).

4.7. Библиография и рекомендации д л я дальнейшего


чтения
Глубокое исследование процесса построения индекса и дополнительных алгоритмов
ящексирввзнт с разными- требованиями к объемам оперативной и дисковой памяти, а
т а к ж е к в р е м е н н ы м р е с у р с а м и з л о ж е н о в р а б о т е У и т т е н а и д р . (Witten e t al., 1999). В ц е ­
л о м б л о ч н о е индексирование, о с н о в а н н о е н а сортировке, х о р о ш о соответствует всем т р е м
т р е б о в а н и я м . О д н а к о , е с л и о с н о в н ы м к р и т е р и е м является э к о н о м и я о п е р а т и в н о й и л и дис­
ковой п а м я т и , б о л е е п о д х о д я щ и м и м о г у т оказаться д р у г и е а л г о р и т м ы (Witten et al., 1999).
Больше остальных на алгоритм "параллельного слияния, основанного на сортировке"
(sort-based multi-way m e r g e ) п о х о ж а л г о р и т м B S B I . О д н а к о э т и два а л г о р и т м а р а з л и ч а ю т ­
ся с т р у к т у р о й с л о в а р я и п р и м е н е н и е м с ж а т и я .
В р а б о т е М о ф ф а т а и Б е л л а ( M o f f a t a n d B e l l , 1 9 9 5 ) п о к а з а н о , к а к с о з д а т ь и н д е к с in
situ, " н а м е с т е " , т . е . ч т о б ы р а з м е р д и с к о в о й п а м я т и , и с п о л ь з у е м о й в п р о ц е с с е п о с т р о е ­
ния, б ы л б л и з о к к р а з м е р у п а м я т и , к о т о р у ю б у д е т з а н и м а т ь о к о н ч а т е л ь н ы й и н д е к с , а к о ­
личество в р е м е н н ы х ф а й л о в было м и н и м а л ь н ы м (см. также работу Х а р м а н и Канделы
( H a r m a n a n d C a n d e l a , 1990)). А в т о р ы у к а з ы в а ю т , ч т о Л е е к (Lesk, 1988) и С о м о г и й ( S o m o -
giy, 1990) б ы л и с р е д и п е р в ы х , к т о п р е д л о ж и л и с п о л ь з о в а т ь с о р т и р о в к у д л я п о с т р о е н и я
индекса.
Метод SPIM1, описанный в разделе 4 . 3 , предложен Х а й н ц е м и Цобелем (Heinz and
Z o b e l , 2 0 0 3 ) . М ы у п р о с т и л и н е к о т о р ы е а с п е к т ы а л г о р и т м а , в к л ю ч а я с ж а т и е и т о т факт,
что с т р у к т у р а д а н н ы х д л я к а ж д о г о т е р м и н а , к р о м е и н в е р т и р о в а н н о г о с п и с к а , т а к ж е с о ­
держит частоту документа и другую вспомогательную информацию. В качестве наиболее
современного и глубокого исследования процесса конструирования индекса мы реко­
мендуем работы Хайнца и Цобеля (Heinz and Zobel, 2003) и Цобеля и М о ф ф а т а (Zobel
and Moffat, 2 0 0 6 ) . Д р у г и е а л г о р и т м ы с х о р о ш и м и в о з м о ж н о с т я м и м а с ш т а б и р о в а н и я по
р а з м е р у л е к с и к о н а т р е б у ю т н е с к о л ь к и х п р о х о д о в по д а н н ы м , н а п р и м е р F A S T - i N V (Fox
and L e e , 1 9 9 1 ; H a r m a n et al., 1992).
А р х и т е к т у р а M a p R e d u c e б ы л а п р е д л о ж е н а Д и н о м и Г е м а в а т о м ( D e a n and G h e m a w a t ,
2004). Открытая реализация архитектуры MapReduce доступна по адресу h t t p : / /
l u c e n e . a p a c h e . o r g / h a d o o p / . Другие подходы к распределенному индексирова­
н и ю о п и с а н ы в р а б о т а х Р и б е й р о - Н е т о и д р . ( R i b e i r o - N e t o et al., 1999) и М е л ь н и к а и д р .
(Melnik et al., 2 0 0 1 ) . В к а ч е с т в е в в е д е н и я в р а с п р е д е л е н н ы е и н ф о р м а ц и о н н о - п о и с к о в ы е
системы м о ж н о использовать главы из книг Баеза-Йейтса и Рибейро-Нето (Baeza-Yates
and R i b e i r o - N c t o , 1999) и Г р о с с м а н а и Ф р и д е р а G r o s s m a n and Frieder, 2 0 0 4 ) . С м . т а к ж е
р а б о т у К а л л а н а (Callan, 2 0 0 0 ) .
С в о й с т в а л о г а р и ф м и ч е с к о г о с л и я н и я и р е з у л ь т а т ы их с р а в н е н и я с д р у г и м и м е т о д а м и
о п и с а н ы в р а б о т а х Л е с т е р а и д р . (Lester e t al., 2 0 0 5 ) , а т а к ж е Б ю т ч е р а и К л а р к а (Buttcher
and C l a r k e , 2 0 0 5 а ) . О д н о й и з п е р в ы х п р и м е н е н и й э т и х м е т о д о в б ы л а с и с т е м а L u c e n e
( h t t p : / / l u c e n e . a p a c h e . o r g ) . Другие методы динамического индексирования об­
с у ж д а л и с ь в р а б о т е Б ю т ч е р а и д р . ( B u t t c h e r et al., 2 0 0 6 ) и Л е с т е р а и д р . (Lester, 2 0 0 6 ) . В о
второй статье также обсуждается стратегия замены старого индекса индексом, создан­
ным заново.
Х а й н ц и д р . ( H e i n z et al., 2 0 0 2 ) с р а в н и л с т р у к т у р ы д а н н ы х д л я н а к о п л е н и я л е к с и к о н а
в п а м я т и . Б ю т ч е р и К л а р к е (Buttcher a n d C l a r k e , 2 0 0 5 b ) р а с с м о т р е л и м о д е л и б е з о п а с н о ­
сти о б ы ч н о г о и н в е р т и р о в а н н о г о и н д е к с а и м н о г о ч и с л е н н ы х п о л ь з о в а т е л е й . П о д р о б н а я
х а р а к т е р и с т и к а к о л л е к ц и и R e u t e r s - R C V l и з л о ж е н а в р а б о т е Л ь ю и с а и д р . ( L e w i s e t al.,
2004). Эту коллекцию распространяет Национальный институт стандартов и технологии
(National Institute of S t a n d a r d s and T e c h n o l o g y — N I S T ) ( с м . h t t p : / / t r e e . n i s t . g o v /
d a t a / r e u t e r s / r e u t e r s . html).
Обзор компьютерного аппаратного обеспечения в контексте разработки информаци­
о н н о - п о и с к о в ы х с и с т е м с о д е р ж и т с я в р а б о т е Г а р с и я - М о л и н а и д р . ( G a r c i a - M o l i n a et al.,
1999).
Эффективный индексатор для корпоративного поиска должен иметь надежную и бы­
с т р у ю с в я з ь со м н о г и м и п р и л о ж е н и я м и , в к о т о р ы х х р а н я т с я т е к с т о в ы е к о р п о р а т и в н ы е
д а н н ы е , в к л ю ч а я п р о г р а м м ы Microsoft Outlook, э л е к т р о н н ы е т а б л и ц ы Lotus к о м п а н и и
I B M , б а з ы д а н н ы х , н а п р и м е р Oracle и M y S Q L , с и с т е м ы у п р а в л е н и я к о н т е н т о м , т а к и е к а к
Open Text, а также системы планирования ресурсов, например SAP.
Глава 5

Сжатие индекса

В главе 1 были описаны словарь и инвертированный индекс — основные структуры дан­


ных в системах информационного поиска. В этой главе м ы применим к словарю и инвер­
тированному индексу методы сжатия, позволяющие повысить производительность рабо­
ты информационно-поисковых систем.
П р е и м у щ е с т в а с ж а т и я о ч е в и д н ы : т р е б у е т с я м е н ь ш е д и с к о в о й п а м я т и и, к а к б у д е т п о ­
казано д а л е е , л е г к о м о ж н о д о с т и ч ь к о э ф ф и ц и е н т а с ж а т и я 1:4 и т е м с а м ы м с н и з и т ь с т о и ­
мость х р а н е н и я и н д е к с а н а 7 5 % .
О д н а к о у с ж а т и я есть д в а м е н е е з а м е т н ы х п р е и м у щ е с т в а . В о - п е р в ы х , о н о п о в ы ш а е т
эффективность использования кэша. Поисковые системы применяют некоторые части
словарей и индекса чаще остальных. Например, если поместить в кэш инвертированный
с п и с о к ч а с т о и с п о л ь з у е м о г о т е р м и н а з а п р о с а t, т о в с е в ы ч и с л е н и я , н е о б х о д и м ы е д л я п о ­
иска ответа н а з а п р о с , с о с т о я щ и й и з о д н о г о т е р м и н а t, м о ж н о в ы п о л н и т ь в о п е р а т и в н о й
памяти. Применив сжатие, мы можем поместить в оперативную память больше инфор­
м а ц и и . П р и о б р а б о т к е з а п р о с о в , с о д е р ж а щ и х т е р м и н t, в м е с т о в ы п о л н е н и я з а т р а т н ы х
операций по перемещению головки диска м о ж н о обращаться к инвертированному спи­
ску, х р а н я щ е м у с я в о п е р а т и в н о й п а м я т и , и р а с п а к о в ы в а т ь е г о . К а к б у д е т п о к а з а н о н и ж е ,
существуют простые и эффективные методы распаковки данных, поэтому накладные
р а с х о д ы н а р а с п а к о в к у и н в е р т и р о в а н н о г о с п и с к а н е в е л и к и . В р е з у л ь т а т е м ы м о ж е м су­
щ е с т в е н н о у м е н ь ш и т ь в р е м я ответа и н ф о р м а ц и о н н о - п о и с к о в о й с и с т е м ы . П о с к о л ь к у
оперативная память дороже, чем память на диске, основным стимулом для использова­
н и я с ж а т и я ч а с т о я в л я е т с я у с к о р е н и е р а б о т ы за с ч е т к э ш и р о в а н и я , а н е з а с ч е т у м е н ь ш е ­
ния т р е б о в а н и й к о б ъ е м у д и с к о в о г о п р о с т р а н с т в а .
Во-вторых, еще менее заметное преимущество с ж а т и я — более быстрая загрузка
данных с диска в оперативную память. На современном аппаратном обеспечении эффек­
тивные алгоритмы распаковки работают настолько быстро, что общее время, затрачи­
ваемое на передачу сжатой порции данных с диска, а затем на распаковку, обычно
меньше, чем время, необходимое для передачи той же самой порции данных в несжатом
виде. Например, загрузив инвертированный список намного меньшего размера, можно
сократить время на выполнение операций ввода-вывода, даже с учетом дополнительного
времени, требуемого для распаковки. Итак, в большинстве случаев системы информаци­
онного поиска, использующие сжатые инвертированные списки, работают быстрее, чем
системы, в которых эти списки хранятся в развернутом виде.
Е с л и о с н о в н о й ц е л ь ю с ж а т и я я в л я е т с я э к о н о м и я д и с к о в о й п а м я т и , т о с к о р о с т ь сжа-
не и г р а е т б о л ь ш о й р о л и . О д н а к о д л я б о л е е р а ц и о н а л ь н о г о и с п о л ь з о в а н и я к э ш а и б о -
irt быстрой загрузки данных с диска в оперативную память скорость распаковки должна
в ы т ь в ы с о к о й . А л г о р и т м ы с ж а т и я , о б с у ж д а е м ы е в э т о й г л а в е , в е с ь м а э ф ф е к т и в н ы , а зна­
чит, п о з в о л я ю т и с п о л ь з о в а т ь в с е п р е и м у щ е с т в а с ж а т и я и н д е к с а .
В д а н н о й г л а в е словопозиция (posting) в и н в е р т и р о в а н н о м с п и с к е и н т е р п р е т и р у е т с я
как и д е н т и ф и к а т о р документа d o c I D . Н а п р и м е р , и н в е р т и р о в а н н ы й с п и с о к (6; 2 0 , 4 5 , 100),
где 6 — идентификатор термина из списка, содержит три словопозиции. К а к указыва­
л о с ь в р а з д е л е 2.4.2, с л о в о п о з и ц и и в б о л ь ш и н с т в е п о и с к о в ы х с и с т е м , к а к п р а в и л о , с о ­
держат информацию о частоте и координатах термина. Однако м ы рассмотрим лишь
простые инвертированные списки, содержащие только идентификаторы документов.
Б и б л и о г р а ф и я о с ж а т и и и н ф о р м а ц и и о ч а с т о т а х и к о о р д и н а т а х п р и в е д е н а в р а з д е л е 5.4.
В начале главы приводятся статистические характеристики распределения сущно­
стей, к о т о р ы е м ы х о т и м с ж а т ь , — т е р м и н о в и с л о в о п о з и ц и й в б о л ь ш о й к о л л е к ц и и (раз­
д е л 5.2). З а т е м м ы р а с с м о т р и м с ж а т и е с л о в а р я с п о м о щ ь ю м е т о д а , т р а к т у ю щ е г о с л о в а р ь
как о д н у с т р о к у (dictionary-as-a-string), и х р а н е н и я п о б л о к а м ( р а з д е л 5.2). В р а з д е л е 5.3
описываются два метода сжатия инвертированного файла: байтовые коды переменной
д л и н ы (variable b y t e e n c o d i n g ) и у - к о д и р о в а н и е (y-encoding).

5.1. Статистические характеристики терминов


в информационном поиске
Как и в предыдущей главе, в качестве модельной коллекции м ы будем использовать
к о л л е к ц и ю R e u t e r s - R C V l (см. т а б л . 4.2). Д л я н а ч а л а в т а б л . 5.1 п р и в е д е м н е с к о л ь к о ста­
тистических показателей, характеризующих термины и словопозиции в этой коллекции.
С и м в о л А% о з н а ч а е т п р о ц е н т с ж а т и я п о о т н о ш е н и ю к п р е д ы д у щ е й с т р о к е . С и м в о л Т %
о з н а ч а е т о б щ и й п р о ц е н т с ж а т и я по о т н о ш е н и ю к и с х о д н ы м д а н н ы м .

Т а б л и ц а 5 . 1 . Эффект предварительной о б р а б о т к и терминов, некоординатных


словопозиций и лексем д л я к о л л е к ц и и R e u t e r s - R C V l . Символ Д% означает п р о ц е н т сжатия
по отношению к предыдущей строке, за исключением строк "30 стоп-слов" и "150 стоп-слов",
которые вычисляются по отношению к строке "Свертывание регистра". Символ Т %
означает о б щ и й процент сжатия п о отношению к исходным данным. Стемминг
осуществлялся с помощью алгоритма П о р т е р а (см. главу 2).

Количество Некоординатные Лексемы (= количество сло­


терминов словопозиции воупотреблений в индексе)
Кол-во Д% т% Кол-во д% Т% Кол-во Д% т%
И с х о д н ы е данные 484 494 109 971 179 197 879 290
Без ч и с е л 473 723 -2 -2 100 680 242 -8 -8 179158 204 -9 -9
Свертывание р е г и с т р а 391 523 - 1 7 -19 96 969 056 -3 -12 179158 204 -0 -9
30 с т о п - с л о в 391 493 -0 -19 83 390 443 -14 -24 121 857 825 -31 -38
150 с т о п - с л о в 391 373 -0 -19 67 001 847 -30 -39 94 516 599 -47 -52
Стемминг 322 383 -17 -33 63 812 300 -4 -А1 94 516 599 -0 -52

В э т о й т а б л и ц е п р и в е д е н о к о л и ч е с т в о т е р м и н о в на р а з н ы х у р о в н я х п р е д в а р и т е л ь н о й
о б р а б о т к и ( с т о л б е ц 2). К о л и ч е с т в о т е р м и н о в я в л я е т с я о с н о в н ы м ф а к т о р о м , в л и я ю щ и м
на о п р е д е л е н и е р а з м е р а с л о в а р я . К о л и ч е с т в о н е к о о р д и н а т н ы х с л о в о п о з и ц и й ( с т о л б е ц 3)
представляет собой индикатор ожидаемого размера некоординатного индекса коллекции.
Ожидаемый размер координатного индекса связан с количеством координат, которые он
должен закодировать (столбец 4).
Б - /. Статистические характеристики терминов в информационном поиске 105

I В ц е л о м с т а т и с т и ч е с к и е п о к а з а т е л и и з т а б л . 5.1 с в и д е т е л ь с т в у ю т о т о м , ч т о п р е д в а -
Ирительная о б р а б о т к а с и л ь н о в л и я е т н а р а з м е р с л о в а р я и к о л и ч е с т в о н е к о о р д и н а т н ы х
Н словопозиций. Стемминг и свертывание регистра сокращают количество различных тер-
Н м и н о в н а 1 7 % к а ж д ы й , а к о л и ч е с т в о н е к о о р д и н а т н ы х с л о в о п о з и ц и й — н а 4 и 3 % соот-
Н ветственно. О б р а б о т к а н а и б о л е е ч а с т о в с т р е ч а ю щ и х с я с л о в т а к ж е в а ж н а . Прави-
I Ш тридцати (rule o f 3 0 ) у т в е р ж д а е т , ч т о 3 0 н а и б о л е е р а с п р о с т р а н е н н ы х с л о в о б р а з у ю т
I Vc л е к с е м в п и с ь м е н н о м т е к с т е (в т а б л . 5.1 этот п о к а з а т е л ь р а в е н 3 1 % ) . И с к л ю ч е н и е и з
• процесса и н д е к с и р о в а н и я 150 н а и б о л е е р а с п р о с т р а н е н н ы х с л о в (так н а з ы в а е м ы х с т о п -
Н слов, о п и с а н н ы х в р а з д е л е 2.2.2) с о к р а щ а е т к о л и ч е с т в о н е к о о р д и н а т н ы х с л о в о п о з и ц и й
I а а 2 5 - 3 0 % . Н е с м о т р я н а т о ч т о с п и с о к 150 с т о п - с л о в с о к р а щ а е т к о л и ч е с т в о с л о в о п о з и -
Н они н а ч е т в е р т ь и л и б о л е е , э к в и в а л е н т н о г о у м е н ь ш е н и я р а з м е р а н е н а б л ю д а е т с я н а сжа-
• том индексе. Как будет показано далее, инвертированный список часто употребляемых
• слов после сжатия требует л и ш ь несколько битов на запись после сжатия.
I П о к а з а т е л и Д, у к а з а н н ы е в т а б л и ц е , т и п и ч н ы д л я б о л ь ш и х к о л л е к щ ш . О д н а к о следует
Н отметить, что у некоторых текстовых коллекций процентное сокращение может сильно
I с л и ч а т ь с я . Например, в коллекции веб-страниц с высокой долей французского текста
К. л е м м а т и з а т о р с о к р а щ а е т р а з м е р с л о в а р я н а м н о г о б о л ь ш е , ч е м с т е м м е р П о р т е р а , п р и м е -
Щ ненный к коллекции, состоящей только из английских документов, поскольку морфоло­
1
гия ф р а н ц у з с к о г о я з ы к а н а м н о г о б о г а ч е м о р ф о л о г и и а н г л и й с к о г о .
I М е т о д ы с ж а т и я , о п и с ы в а е м ы е в о с т а в ш е й с я ч а с т и г л а в ы , я в л я ю т с я м е т о д а м и сжатия
I шформации без потерь (lossless c o m p r e s s i o n ) , т.е. вся и н ф о р м а ц и я с о х р а н я е т с я . Сжа-
Н тие информации с потерями (lossy c o m p r e s s i o n ) п о з в о л я е т д о с т и ч ь б о л е е в ы с о к о й сте-
Н пени сжатия за счет отбрасывания некоторых данных. Примерами сжатия информации с
Н потерями являются свертывание регистра, стемминг и исключение стоп-слов. Аналогич-
Н в о , м о д е л ь в е к т о р н о г о п р о с т р а н с т в а (глава 6) и м е т о д ы у м е н ь ш е н и я р а з м е р н о с т и , т а к и е
Н как л а т е н т н о - с е м а н т и ч е с к о е и н д е к с и р о в а н и е (глава 18), п о з в о л я ю т с о з д а т ь к о м п а к т н о е
Н представление, п о которому невозможно восстановить исходную коллекцию. Сжатие с 2

И потерей информации целесообразно, когда "потерянная" информация н е используется


Н системой поиска. Например, для веб-поиска характерны огромное количество докумен-
тов, к о р о т к и е з а п р о с ы и п о л ь з о в а т е л и , п р о с м а т р и в а ю щ и е л и ш ь н е с к о л ь к о п е р в ы х стра-
Н ниц результата. Вследствие этого можно отбросить словопозиций для документов, рас-
• п о л о ж е н н ы х в с п и с к е р е з у л ь т а т о в с л и ш к о м д а л е к о . Т а к и м о б р а з о м , с у щ е с т в у ю т сцена-
Щ р и и п о и с к а , в к о т о р ы х м е т о д ы с ж а т и я и н ф о р м а ц и и с п о т е р я м и м о ж н о и с п о л ь з о в а т ь без
щиска с н и ж е н и я э ф ф е к т и в н о с т и .
П е р е д т е м как о п и с а т ь м е т о д ы с ж а т и я с л о в а р я , о ц е н и м к о л и ч е с т в о р а з н ы х т е р м и -
Н нов М в к о л л е к ц и и . И н о г д а г о в о р я т , ч т о я з ы к и и м е ю т с л о в а р ь о п р е д е л е н н о г о р а з м е р а .
Н В о в т о р о м и з д а н и и с л о в а р я Oxford English Dictionary ( O E D ) с о д е р ж и т с я б о л е е 6 0 0 т ы с я ч
Щ с*ов. О д н а к о с л о в а р и б о л ь ш и н с т в а к р у п н ы х к о л л е к ц и й н а м н о г о б о л ь ш е , ч е м с л о в а р ь

1
Стемминг в целом более агрессивно приводит словоформы к одной основе, чем принятая для
рчсского языка лемматизация, поэтому, хотя русская морфология ничуть не беднее французской,
х и м е р н о е соотношение числа форм и лемм в больших русских коллекциях с лемматизацией мо­
жет не сильно отличаться от приведенного примера — Примеч. ред.
Как ни странно, в практике поисковых систем иногда возникают задачи восстановления тек-
' ста документов только по индексу, например в условиях нехватки дискового пространства или
' # случаях аварии; для решения этой задачи необходимы алгоритмы эффективного восстановления
упрощенного текста по индексу (разындексации). — Примеч. ред.
O E D . Он не содержит фамилий большинства людей, географических названий, наимено­
ваний продуктов или научных понятий, например названий генов. Эти имена необходи­
мо в к л ю ч и т ь в и н в е р т и р о в а н н ы й и н д е к с , ч т о б ы п о л ь з о в а т е л ь м о г и х н а й т и .

5.1.1. Закон Хипса: оценка количества терминов


Л у ч ш и й с п о с о б о ц е н и т ь ч и с л о М — и с п о л ь з о в а т ь закон Хипса ( H e a p s ' l a w ) , п о з в о ­
л я ю щ и й определить размер словаря как функцию, зависящую от размера коллекции.
M = kt, (5.1)
г д е Т— количество лексем в коллекции Типичные значения параметров к и Ъ таковы:
3 0 < к < 100 и Ъ ~ 0,5. О б о с н о в а н и е д л я закона Х и п с а заключается в т о м , ч т о п р о с т е й ш е й
з а в и с и м о с т ь ю м е ж д у р а з м е р а м и к о л л е к ц и и и с л о в а р я является л и н е й н а я ф у н к ц и я в лога­
р и ф м и ч е с к о й системе координат, а п р е д п о л о ж е н и е о л и н е й н о с т и на практике часто о к а з ы ­
вается с п р а в е д л и в ы м (как п о к а з а н о на рис. 5.1 д л я к о л л е к ц и и R e u t e r s - R C V l ) . В д а н н о м
5
случае п р и Т> 1 0 = 100 0 0 0 совпадение является о т л и ч н ы м , п р и ч е м Ъ - 0,49 и к - 4 4 . На­
п р и м е р , д л я п е р в ы х 1 0 0 0 0 2 0 л е к с е м з а к о н Х и п с а п р е д с к а з ы в а е т 38 3 2 3 т е р м и н а
0 , 4 9
44 х 1 000 0 2 0 - 38 323
На самом деле количество терминов равно 38 365, что очень близко к предсказанно­
му значению.

0 2 4 6 8

Рис. 5.1. Закон Хипса. Размер словаря М как функция от размера


коллекции Т (количества лексем) для коллекции Reuters-RCVl.
Для этих данных пунктирная линия log M = 0,49 л log T + 1,64 10 w

построена методом наименьших квадратов. Следовательно,


ш
к=10 ~44иЬ = 0А9
П а р а м е т р к и з м е н я е т с я в д о в о л ь н о ш и р о к и х п р е д е л а х , п о с к о л ь к у р о с т л е к с и к о н а во
-
многом зависит от природы коллекции и способа ее обработки. Свертывание регистра и
с т е м м и н г у м е н ь ш а ю т с к о р о с т ь р о с т а р а з м е р а л е к с и к о н а , в т о в р е м я как в к л ю ч е н и е ч и с е л
и орфографических о ш и б о к увеличивает ее. Независимо от значений параметров для
к о н к р е т н о й к о л л е к ц и и з а к о н Х и п с а у т в е р ж д а е т , что 1) п р и у в е л и ч е н и и к о л и ч е с т в а д о к у ­
м е н т о в в к о л л е к ц и и р а з м е р л е к с и к о н а п р о д о л ж а е т в о з р а с т а т ь , п о к а не д о с т и г н е т м а к с и ­
м а л ь н о г о у р о в н я , и 2) р а з м е р л е к с и к о н а д л я к р у п н ы х к о л л е к ц и й д о с т а т о ч н о велик. Э т и
д в е г и п о т е з ы д л я б о л ь ш и х к о л л е к ц и й д о к а з а н ы э м п и р и ч е с к и ( р а з д е л 5.4). Т а к и м о б р а ­
зом, с ж а т и е с л о в а р я и г р а е т в а ж н у ю р о л ь д л я п о в ы ш е н и я качества с и с т е м и н ф о р м а ц и о н ­
ного п о и с к а .

5.1.2. Закон Ципфа: моделирование распределения терминов


Определим также распределение терминов среди документов. Это поможет нам опи­
сать с в о й с т в а а л г о р и т м о в с ж а т и я и н в е р т и р о в а н н ы х с п и с к о в в р а з д е л е 5 . 3 .
Д л я м о д е л и р о в а н и я р а с п р е д е л е н и я т е р м и н о в в к о л л е к ц и и ш и р о к о и с п о л ь з у е т с я закон
Ципфа ( Z i p f s l a w ) . О н у т в е р ж д а е т , ч т о , е с л и t\ — н а и б о л е е р а с п р о с т р а н е н н ы й т е р м и н в
коллекции, г — с л е д у ю щ и й п о р а с п р о с т р а н е н н о с т и т е р м и н и т.д., т о ч а с т о т а i-ro п о р а с ­
2

п р о с т р а н е н н о с т и т е р м и н а в к о л л е к ц и и cf, п р о п о р ц и о н а л ь н а 1Л".

cftocl/i (5.2)
Т а к и м о б р а з о м , е с л и н а и б о л е е р а о ф о с т р а н е н н ъ г й т е р м и н в с т р е ч а е т с я cfi раз, в т о р о й
по р а с п р о с т р а н е н н о с т и т е р м и н в с т р е ч а е т с я в д в о е р е ж е , т р е т и й — в т р о е р е ж е и т.д. И н ­
туиция подсказывает, что по мере увеличения ранга частота уменьшается очень быстро.
Р а в е н с т в о (5.2) — о д и н и з п р о с т е й ш и х с п о с о б о в ф о р м а л и з а ц и и т а к о г о б ы с т р о г о у б ы в а ­
ния; о н о п р е д с т а в л я е т с о б о й в п о л н е р а з у м н у ю м о д е л ь .
k
Э к в и в а л е н т н о м ы м о ж е м з а п и с а т ь з а к о н Ц и п ф а к а к cf; = ci и л и log cf, = log с + k l o g i,
г д е k = - 1 , а с — к о н с т а н т а , к о т о р у ю м ы о п р е д е л и м в р а з д е л е 5.3.2. С л е д о в а т е л ь н о , за­
кон Ц и п ф а я в л я е т с я степенным законом с п о к а з а е м k= - 1 . Д р у г о й с т е п е н н о й з а к о н ,
х а р а к т е р и з у ю щ и й р а с п р е д е л е н и е с с ы л о к м е ж д у в е б - с т р а н и ц а м и , о п и с а н в г л а в е 19.
Л о г а р и ф м и ч е с к и й г р а ф и к , п р е д с т а в л е н н ы й н а р и с . 5.2, и з о б р а ж а е т з а в и с и м о с т ь ч а с ­
тоты термина в коллекции R e u t e r s - R C V l от его ранга. Н а рисунке изображена также
иния, имеющая угловой коэффициент, равный - 1 . Это соответствует функции Ц и п ф а
log cf, = l o g с - log i". С о о т в е т с т в и е д а н н ы х з а к о н у Ц и п ф а в т а к о м с л у ч а е н е с л и ш к о м х о ­
рошее, но этого вполне достаточно для моделирования распределения терминов при вы­
числениях в разделе 5.3.

*Р Упражнение 5.1 [*]. Д о п у с т и м , ч т о к а ж д а я с л о в о п о з и ц и я з а н и м а е т о д н о м а ш и н -


. ное слово. Вычислите размер несжатого (некоординатного) индекса для разных
м е т о д о в в ы д е л е н и я л е к с е м п о д а н н ы м и з т а б л . 5 . 1 . С р а в н и т е эти ч и с л а с д а н н ы м и
и з т а б л . 5.6.

3
Коллекция Reuters отличается от коллекций веб-документов весьма существенно. В частно­
сти, она составлена из проверенных орфографическим корректором текстов, написанных профес­
сиональными, грамотными журналистами, не содержит искусственных, автоматически порождае­
мых лексем, например имен файлов или компонентов пути URL. Из-за опечаток и технических
тексем значение b в веб-коллекциях существенно ближе к 1.0, чем к 0.5. — Примеч. ред.
log 10 rank

Рис. 5.2. Закон Ципфа для коллекции Reuters-RTVl. Частота


представлена как функция, зависящая от частотного ранга
терминов в коллекции. Прямая представляет собой распределе­
ние, предсказанное по закону Цифпа (с помощью метода взве­
шенных наименьших квадратов: пересечение — в точке 6,95)

5.2. Сжатие словаря


В этом разделе описывается р я д структур данных, обеспечивающих последовательно
в о з р а с т а ю щ и е к о э ф ф и ц и е н т ы с ж а т и я . К а к с л е д у е т и з т а б л . 5.1, с л о в а р ь и м е е т м а л ы й
размер п о сравнению с инвертированным файлом. Зачем ж е его сжимать, если о н зани­
мает л и ш ь небольшую часть памяти, которая необходима информационно-поисковой
системе?
Одним из основных факторов, влияющих на время отклика информационно-поиско­
вой системы, является количество перемещений головки диска, необходимое для обра­
б о т к и з а п р о с а . Е с л и ч а с т и с л о в а р я р а з м е щ е н ы на д и с к е , т о д л я о б р а б о т к и з а п р о с о в п о ­
требуется намного больше п е р е м е щ е н и й . Следовательно, основная цель сжатия слова­
ря — разместить его в оперативной памяти целиком, или по крайней мере б о л ь ш у ю его
часть, чтобы обеспечить высокую производительность системы. Несмотря на то что лек­
сиконы для очень крупных коллекций помещаются в памяти стандартных настольных
компьютеров, во многих случаях это не так. Например, поисковый сервер большой кор­
п о р а ц и и , в о з м о ж н о , д о л ж е н и н д е к с и р о в а т ь к о л л е к ц и ю в н е с к о л ь к о т е р а б а й т о в со с р а в ­
нительно большим лексиконом из-за присутствия в коллекции документов на нескольких
языках. Кроме того, иногда возникает необходимость разрабатывать поисковые системы
на базе аппаратного обеспечения с ограниченными ресурсами, скажем, на основе мо­
бильного телефона или бортовых компьютеров. Другая причина для экономии памяти
может заключаться в желании обеспечить б ы с т р ы й запуск (старт) системы или необхо­
димость совместного использования ресурсов наряду с другими приложениями. Напри-
. мер, поисковая система на вашем персональном компьютере д о л ж н а функционировать
одновременно с "жадным до памяти" текстовым процессором, который вы используете
в это ж е в р е м я .

5.2.1. Словарь как строка


Для хранения словаря проще всего расположить его элементы в лексикографическом
порядке и записать в массив записей фиксированной длины, как показано на рис. 5.3. М ы
выделяем 20 байт для термина (поскольку в английском языке л и ш ь немногие термины
имеют больше 20 символов), 4 байт — для документной частоты и 4 байт — для указа­
теля на инвертированный список. Ч е т ы р е х б а й т н ы е указатели позволяют адресовать
4 Гбайт памяти. Для крупных коллекций, например, в сети веб, для указателя требуется
больше байтов. Поиск термина в массиве осуществляется с помощью метода бинарного
поиска. В коллекции R e u t e r s - R C V l по этой схеме для хранения словаря потребуется
W х ( 2 0 + 4 + 4 ) = 4 0 0 0 0 0 х 2 8 = 11,2 М б а й т .

Термин Частота документа Указатель на инвертирован


ный список

а 656 265
aachen 65

zulu 221

Н е о б х о д и м а я память, б а й т 20 4

Рис. 5.3. Хранение словаря в виде ма сива с элементами фиксированной длины

Х р а н и т ь т е р м и н ы как э л е м е н т ы ф и к с и р о в а н н и д л и н ы неце е о о б р а з н о . Средняя


| ш и н а термина в английском языке — примерно восемь символов (см. табл. 4.2), поэтому
*Ч|ри т а к о й с х е м е в с р е д н е м м ы т р а т и м в п у с т у ю 12 с и м в о л о в . К р о м е т о г о , у н а с н е т в о з ­
можности хранить т е р м и н ы длиннее 2 0 символов, такие как h y d r o c h l o r o f luoro-
^ c a r b o n s или s u p e r c a l i f r a g i l i s t i c e x p i a l i d o c i o u s . Для решения этой про­
б л е м ы м о ж н о х р а н и т ь с л о в а р ь в в и д е о д н о й д л и н н о й с т р о к и , к а к п о к а з а н о н а р и с . 5.4.
Указатель на следующий термин можно использовать для идентификации конца текуще­
го термина. Как и прежде, м ы и щ е м термины в структуре данных с п о м о щ ь ю бинарного
поиска в (теперь меньшей) таблице. П о сравнению с предыдущей схемой эта схема эко­
н о м и т 6 0 % п а м я т и , п о с к о л ь к у м ы в ы д е л я е м н а т е р м и н в с р е д н е м 12 б а й т в м е с т о 2 0 . О д -
I н а ш теперь нам требуется память для хранения указателей на термины. Указатели тер­
6
м и н о в а д р е с у ю т 4 0 0 0 0 0 х 8 = 3,2 х 1 0 к о о р д и н а т , п о э т о м у н а м н е о б х о д и м о l o g 2 3,2 х
6
1 0 ~ 2 2 б и т н а у к а з а т е л ь , и л и 3 байт.
В новой схеме для хранения лексикона коллекции R e u t e r s - R C V l требуется 4 0 0 000 х
#4 + 4 + 3 + 8 ) = 7,6 М б а й т : п о 4 байт — для хранения частоты и указателя на инверти­
рованный список, 3 байт — для хранения указателя на термин и 8 байт в среднем — для
хранения одного термина. Таким образом, требования к памяти снижаются на треть:
с 11,2 д о 7 , 6 М б а й т .
sys e s y z y g e t i c s y z y g i a l s y z y g y s z a i b e l y i t e s z e c i n s z o n o

частота

92

71

12

4 байт 4 байт Збайт

Рис. 5.4. Хранение словаря в виде одной строки. Указатели отмечаю/п конец предыдущего
термина и начало следующего. Например, первые три термина в данном примере— sys-
tile, syzygetic и syzygia2

5.2.2. Блочное хранение


Словарь можно сжать еще больше, сгруппировав термины в строке по блокам разме­
р о м к и х р а н я у к а з а т е л ь т о л ь к о н а п е р в ы й т е р м и н к а ж д о г о б л о к а (рис. 5.5). Д л и н а тер­
мина хранится в строке в виде дополнительного байта в начале термина. Таким образом,
м ы и с к л ю ч а е м к - 1 у к а з а т е л е й на т е р м и н ы , н о т р е б у е м д о п о л н и т е л ь н о к б а й т д л я хра­
н е н и я д л и н ы к а ж д о г о т е р м и н а . П р и к = 4 м ы э к о н о м и м (к - 1) х 3 = 9 б а й т н а к а ж д о м
у к а з а т е л е на т е р м и н , н о т р е б у е м д о п о л н и т е л ь н о к = 4 б а й т д л я х р а н е н и я д л и н т е р м и н о в
Итак, общие требования к памяти для хранения лексикона коллекции Reuters-RTVl
уменьшаются на 5 байт на каждый из блоков, состоящих из четырех терминов. В целом
э т о т о б ъ е м с о с т а в л я е т 4 0 0 ООО х 1 / 4 x 5 = 0,5 М б а й т , т.е. р а з м е р т р е б у е м о й п а м я т и с н и ­
ж а е т с я д о 7,1 М б а й т .
У в е л и ч и в а я р а з м е р б л о к а к, м ы м о ж е м д о с т и ч ь е щ е б о л ь ш е й с т е п е н и с ж а т и я . О д н а к о
с у щ е с т в у е т п р о т и в о р е ч и е м е ж д у с ж а т и е м и с к о р о с т ь ю п о и с к а т е р м и н а . Н а р и с . 5.6 п о к а ­
заны бинарный поиск (двойные линии) и поиск по списку (одинарные линии) в словаре
из в о с ь м и т е р м и н о в . П у н к т а соответствует б и н а р н о м у п о и с к у в н е с ж а т о м словаре. В с ж а ­
т о м словаре м ы сначала находим блок т е р м и н а с п о м о щ ь ю б и н а р н о г о поиска, а затем о п ­
р е д е л я е м е г о к о о р д и н а т у в с п и с к е п у т е м л и н е й н о г о п о и с к а п о б л о к у (п. б ) . П о и с к в н е ­
с ж а т о м с л о в а р е в п. а в с р е д н е м з а н и м а е т ( 0 + 1 + 2 + 3 + 2 + 1 + 2 + 2 ) / 8 = 1,6 ш а г о в , ес­
ли считать, что каждый термин с одинаковой вероятностью появляется в запросе. Напри­
мер, поиск д в у х т е р м и н о в , a i d и b o x , з а н и м а е т т р и и д в а ш а г а соответственно. В п. б п р и
размере блока, равном к = 4, в среднем требуется ( 0 + 1 + 2 + 3 + 4 + 1 +2 +
+ 3)/8 = 2 ш а г а , т . е . п р и м е р н о н а 2 5 % б о л ь ш е . Н а п р и м е р , д л я н а х о ж д е н и я т е р м и н а d e n
выполняется один шаг бинарного поиска для определения блока и два шага внутри блока.
. . 7 s y s t i I e 9 s y z y g e t i с 8 s y z y g i al 6 s y z y g y 11szai be l y i t e 6 s z e c i n .

Рис. 5.5. Хранение словаря no четыре термина в блоке. Первый блок содержит термины sys -
tile, syzygetic, syzygial и syzygy, имеющие длины,равные 7, 9, 8и6 символов соответ­
ственно. Перед каждым термином записывается байт, в котором кодируется его длина, указы­
вающая, сколько байтов следует пропустить, чтобы достичь следующего термина

Рис. 5.6. Поиск в несжатом словаре {а) и в словаре, сжатом с помощью мето­
да хранения по блокам при к = 4 (б)
У в е л и ч и в а я п а р а м е т р к, м ы м о ж е м с д е л а т ь р а з м е р с ж а т о г о с л о в а р я с к о л ь у г о д н о б л и з к и м
к м и н и м у м у , т . е . 4 0 0 ООО х ( 4 + 4 + 1 + 8 ) = 6,8 М б а й т , н о п о и с к т е р м и н а п р и б о л ь ш и х
значениях к становится недопустимо медленным.
М ы не использовали еще один источник избыточности при хранении словаря — тот
ф а к т , ч т о п о с л е д о в а т е л ь н ы е э л е м е н т ы в с п и с к е , у п о р я д о ч е н н о м п о а л ф а в и т у , имеют
о д и н а к о в ы е п р е ф и к с ы . Э т о н а б л ю д е н и е п р и в о д и т к фронтальной упаковке (front c o d i n g )
(рис. 5.7). М ы с н а ч а л а и д е н т и ф и ц и р у е м о б щ и й п р е ф и к с д л я ф р а г м е н т а с п и с к а т е р м и н о в ,
а затем помечаем его специальным символом. Эксперимент показал, что для коллекции
R e u t e r s ф р о н т а л ь н а я у п а к о в к а э к о н о м и т е щ е 1,2 М б а й т .
О д и н б л о к в с х е м е х р а н е н и я п о б л о к а м (к - 4)
8automata8automate9automaticl0automation
U
...дальнейшее сжатие с п о м о щ ь ю фронтальной упаковки
8autimat*al0e20ic30ion

Рис. 5.7. Фронтальная упаковка. ПослеОовательность терминов


с одинаковыми префиксами ("automat") кодируется с помощью
пометки конца префикса символом * и его замены в последующих
терминах символом 0. Как и раньше, первый байт каждого эле­
мента кодирует количество символов

Другие схемы с еще более высокой степенью сжатия основываются на минимальном


идеальном хешировании При этом функция хеширования отображает М терминов в
множество [ 1 - М ] без коллизий. Однако м ы не м о ж е м применять идеальное хеширо­
в а н и е н е о г р а н и ч е н н о , т а к к а к к а ж д ы й н о в ы й т е р м и н в ы з ы в а е т к о л л и з и и и, с л е д о в а т е л ь ­
но, требует с о з д а н и я н о в о й и д е а л ь н о й ф у н к ц и и х е ш и р о в а н и я . П о э т о й п р и ч и н е д а н н ы й
метод невозможно применять в динамической среде.
П р и работе с очень б о л ь ш и м и т е к с т о в ы м и коллекциями на аппаратном обеспечении с
ы р а н и ч е н н ы м и ресурсами даже при наилучшей схеме сжатия невозможно записать весь
словарь в оперативную память. Е с л и словарь н е о б х о д и м о разбить на части для записи на
диск, то м о ж н о проиндексировать первый термин каждой страницы с п о м о щ ь ю В-дере-
ва. Д л я о б р а б о т к и б о л ь ш и н с т в а з а п р о с о в п о и с к о в а я с и с т е м а в с е р а в н о д о л ж н а о б р а т и т ь ­
ся к д и с к у , ч т о б ы д о с т а т ь и н в е р т и р о в а н н ы е с п и с к и . О д н о д о п о л н и т е л ь н о е п о з и ц и о н и р о ­
вание головки для поиска страницы термина в словаре, записанном на диске, является
хотя и немаленькой, но приемлемой добавкой к времени обработки запроса.
Степени сжатия, достигнутые с п о м о щ ь ю четырех структур данных для хранения
с л о в а р я , у к а з а н ы в т а б л . 5.2.

Т а б л и ц а 5.2. Сжатие словаря для коллекции Reuters-RCV1

Структура данных Размер Мбайт

С л о в а р ь с фиксированным размером ячеек 11,2


С л о в а р ь с у к а з а т е л я м и на т е р м и н ы в с т р о к е 7,6
С л о в а р ь с у к а з а т е л я м и на т е р м и н ы в с т р о к е с б л о к а м и , k = 4 7,1
С л о в а р ь с у к а з а т е л я м и на т е р м и н ы в с т р о к е с б л о к а м и и ф р о н т а л ь н о й у п а к о в к о й 5,9
Упражнение 5.2. О ц е н и т е и с п о л ь з о в а н и е п а м я т и д л я х р а н е н и я с л о в а р я к о л л е к ц и и
R e u t e r s - R C V l п о б л о к а м п р и к = 8 и к - 16.

Упражнение 5.3. О ц е н и т е в р е м я , т р е б у е м о е д л я п о и с к а т е р м и н а в с ж а т о м с л о в а р е
коллекции R e u t e r s - R C V l п р и размерах блока, равных к = 4 (рис. 5.6, б), Ь 8 и
к - 16. Н а с к о л ь к о в е л и к о з а м е д л е н и е п о с р а в н е н и ю с в а р и а н т о м , в к о т о р о м р а з м е р
б л о к а р а в е н к = 1 ( р и с . 5.6, а ) ?

5.3. Сжатие инвертированного файла


Напомним (см. табл. 4.2), что коллекция R e u t e r s - R C V l содержит 800 тысяч докумен­
тов, 2 0 0 лексем в документе, шесть символов в лексеме и 100 миллионов словопозиций,
причем д л я простоты в рамках этой главы м ы считаем, что эта словопозиция состоит
только из идентификатора документа docID, т.е. н е содержит информации о частоте и
координатах слова в документе. Эти числа соответствуют строке 3 ("свертывание реги­
с т р а " ) в т а б л . 5 . 1 . И д е н т и ф и к а т о р ы д о к у м е н т о в з а н и м а ю т l o g 8 0 0 0 0 0 ~ 2 0 бит. С л е д о ­
2

вательно, размер коллекции равен примерно 8 0 0 0 0 0 х 2 0 0 х 6 байт = 9 6 0 Мбайт, а раз­


мер несжатого инвертированного файла равен 100 0 0 0 0 0 0 х 20/8 = 2 5 0 Мбайт.
Для более рационального представления инвертированных файлов, использующих
менее 20 бит на документ, отметим, что словопозиции частых терминов имеют близкие
значения. Мысленно пройдем по документам коллекции и поищем часто встречающийся
термин c o m p u t e r . М ы найдем документ, содержащий слово c o m p u t e r , затем пропус­
тим несколько документов, не содержащих это слово, после найдем документ, содержа­
щ и й этот термин, и т.д. (табл. 5.3). Ключевая идея заключается в т о м , что интервалы
между словопозициями являются короткими и для их хранения требуется меньше 2 0 бит.
На практике интервалы между наиболее частыми терминами, таким как t h e и f o r , чаще
всего равны единице. Однако пробелы м е ж д у редкими терминами, встречающимися в
коллекции л и ш ь один или д в а раза (например, слово a r a c h n o c e n t r i c в табл. 5.3), по
величине мало отличаются от идентификаторов документов и требуют для хранения
2 0 бит. Д л я э к о н о м н о г о п р е д с т а в л е н и я т а к о г о р а с п р е д е л е н и я и н т е р в а л о в н е о б х о д и м ме­
тод упаковки с использованием кодов переменной длины (variable e n c o d i n g m e t h o d ) , к о ­
торый для более коротких интервалов использует меньше битов.

Т а б л и ц а 5 . 3 . Кодирование интервалов вместо идентификаторов документов. Например,


мы храним интервалы 107, 5, 4 3 , . . . вместо идентификаторов документов 283154, 283159
2 8 3 2 0 2 , . . . для термина computer. Первый идентификатор документа остается неизменным
(показан только для термина arachnocentric)

Кодировки Инвертирован­
ный список

The ID документов 283042 283043 283044 283045


Интервалы I
C o m p u t e r ID документов 283047 283154 283159 283202
Интервалы 107 5 43
Arachno­ ID документов 252000 500100
centric Интервалы 252000 2481000
Для того чтобы закодировать небольшие числа, используя меньше памяти, чем для
к о д и р о в а н и я б о л ь ш и х ч и с е л , р а с с м о т р и м д в а в и д а м е т о д о в : б а й т о в о е с ж а т и е (bytewise
compression) и б и т о в о е с ж а т и е (bitwise c o m p r e s s i o n ) . К а к с л е д у е т и з и х н а з в а н и й , э т и м е ­
тоды колируют интервалы в минимальное количество байтов и битов соответственно

5.3.7. Байтовое кодирование переменной длины


Байтовое кодирование переменной длины (variable byte e n c o d i n g V B , и л и variable
byte coding — V B C ) и с п о л ь з у е т д л я к о д и р о в а н и я и н т е р в а л о в ц е л о е к о л и ч е с т в о байтов.
П о с л е д н и е 7 б и т в к а ж д о м байте я в л я ю т с я " п о л е з н о й н а г р у з к о й " и к о д и р у ю т ч а с т ь и н ­
т е р в а л а . П е р в ы й б и т б а й т а я в л я е т с я битом продолжения (continuation bit). О н равен
единице у последнего байта закодированного интервала и нулю в остальных случаях

VBEncodeNuraber(п)
1 bytes <г- О
2 w h i l e true
3 d o Prepend(fcytes, n m o d 128)
4 if«<128
5 t h e n Break
6 n <- n div 128
7 bytes[hength(bytes)] + = 128
8 r e t u r n bytes
VBEncode {numbers)
1 bytestream <— 0
2 for each n g numbers
3 d o bytes <— VBEncodingNuraber(«j
4 bytestream <— Extendibytestream, bytes)
5 return bytestream
VBDecode (bytestream)
1 numbers <— 0
2 n<-0
3 f o r i <— 1 t o hengzh(byte stream)
4 d o i f bytestream[i] < 128
5 t h e n n < - 128 x n + bytestream[i]
6 else n < - 128 x n + (bytestream[i] - 128)
7 Append(«Mwfcer5, n)
8 n<-0
9 return numbers
Рис. 5.8. Кодирование и декодирование по схеме VB. Функции div и mod
вычисляют целочисленное частное и остаток после целочисленного деле­
ния соответственно. Функция Prepend добавляет элемент в начало спи­
ска, например Prepend((l, 2), 3) = (3, 1, 2). Функция Extend расширяет
список, например E x t e n d ( ( l , 2), (3, 4 » = ( 1 , 2, 3, 4)
Д л я д е к о д и р о в а н и я к о д а , з а к о д и р о в а н н о г о перемеяжт к Ш И ч ^ т В Ш Г бяЙКЩ СЧИШ-
вается п о с л е д о в а т е л ь н о с т ь байтов, б и т п р о д о л ж е н и я к о т о р ы х равен н у л ю , завершаю­
щаяся байтом, в котором бит продолжения равен единице. Затем извлекаются и конкате­
нируются семибитовые части. Псевдокод байтового кодирования и декодирования пере­
м е н н о й д л и н ы п р и в е д е н н а р и с . 5.8. а п р и м е р и н в е р т и р о в а н н о г о списка, з а к о д и р о в а н н о г о
4
по схеме V B , — в табл. 5 . 4 .

Т а б л и ц а 5 . 4 . Байтовое кодирование переменной длины. Интервалы закодированы


с помощью ц е л о г о числа байтов. Первый бит представляет с о б о й бит продолжения
и означает, заканчивается код этим байтом (1) или нет (0).

ID д о к у м е н т о в 824 829 215406


Интервал 5 214577
КодУВ ОООООПО 10111000 10000101 00001101 00001101 10110001

Как показал эксперимент, при использовании байтового кодирования переменной дли­


н ы р а з м е р с ж а т о г о индекса д л я к о л л е к ц и и R e u t e r s - R C V l р а в е н 116 М б а й т . Э т о означает,
что э к о н о м и я п а м я т и п о с р а в н е н и ю с н е с ж а т ы м и н д е к с о м п р е в ы ш а е т 5 0 % (табл. 5.6).
Идею байтового кодирования переменной длины можно применить к единицам памя­
ти, к о т о р ы е м о г у т б ы т ь к а к б о л ь ш е , т а к и м е н ь ш е б а й т а : 3 2 - , 16- и 4 - б и т о в ы е с л о в а , и л и
полубайты (nibbles). Б о л е е к р у п н ы е с л о в а е щ е с и л ь н е е у м е н ь ш а ю т о б ъ е м н е о б х о д и м ы х
манипуляций битами за счет потери качества сжатия. Размеры слов, не превышающие
байта, п о з в о л я ю т д о с т и ч ь е щ е б о л е е в ы с о к и х с т е п е н е й с ж а т и я з а с ч е т у в е л и ч е н и я к о л и ­
чества манипуляций битами. В целом байты представляют собой приемлемый компро­
мисс между степенью сжатия и скоростью распаковки.
Для большинства систем информационного поиска байтовое кодирование перемен­
ной длины обеспечивает превосходный компромисс между скоростью поиска и разме­
р о м памяти. Кроме того, его легко реализовать — большинство альтернатив, упомяну­
т ы х в р а з д е л е 5.4, я в л я ю т с я б о л е е с л о ж н ы м и . О д н а к о , е с л и д и с к о в а я п а м я т ь о г р а н и ч е н а ,
м о ж н о д о с т и ч ь б о л е е в ы с о к о й с т е п е н и с ж а т и я , п р и м е н и в п о б и т о в о е к о д и р о в а н и е , в ча­
стности две тесно связанные одна с другой схемы: у-коды, которые будут рассмотрены
н и ж е , и 6 - к о д ы ( у п р а ж н е н и е 5.9).

В с х е м е V B п е р е м е н н о е к о л и ч е с т в о байтов зависит от размера интервала. Методы


б и т о в о г о у р о в н я а д а п т и р у ю т д л и н у к о д а на у р о в н е битов. Простейшим битовым кодом
я в л я е т с я унарный код (unary c o d e ) . У н а р н ы й к о д ч и с л а п п р е д с т а в л я е т с о б о й с т р о к у , с о ­
с т о я щ у ю и з п е д и н и ц , за к о т о р ы м и с л е д у е т н у л ь ( с м . п е р в ы е д в а с т о л б ц а в т а б л . 5.5).
Очевидно, что это не очень эффективный код, но в свое время он нам пригодится.

Обратите внимание на то, что в таблице начальное значение равно нулю. Поскольку кодиро­
вать идентификатор документа или нулевой интервал бессмысленно, на практике начальное зна­
чение обычно равно единице, так что 10000000 — это код единицы, 10000101 — шестерки (а не
пятерки, как в таблице), и т.д.
Т а б л и ц а 5 . 5 . Примеры унарных и у-кодов. Унарные коды показаны только для небольших
чисел. Запятые в / кодах вставлены только для читабельности и не являются частью
реальных кодов

Число Унарный код Длина Смещение у-код


0 0
1 10 0 0
2 110 10 0 10,0
3 1110 10 1 10,1
4 11110 110 00 110,00
9 1111111110 1110 001 1110,001
13 1110 101 1110,101
24 11110 1000 11110,1000
511 111111110 11111111 111111110,11111111
1025 11111111110 0000000001 11111111110,0000000001

Н а с к о л ь к о э ф ф е к т и в н ы м м о ж е т б ы т ь к о д в п р и н ц и п е ? П р е д п о л о ж и м , ч т о 2" и н т е р ­
в а л о в G, г д е 1 < G < 2", я в л я ю т с я р а в н о в е р о я т н ы м и Тогда о п т и м а л ь н о е к о д и р о в а н и е для
к а ж д о г о и н т е р в а л а G д о л ж н о и с п о л ь з о в а т ь п б и т о в . В т а к о м с л у ч а е н е к о т о р ы е интерва­
л ы ( в д а н н о м с л у ч а е — G = 2") н е в о з м о ж н о з а к о д и р о в а т ь с п о м о щ ь ю м е н е е ч е м log G 2

бит. Н а ш а ц е л ь — м а к с и м а т ь н о п р и б л и з и т ь с я к н и ж н е й г р а н и ц е .
М е т о д , б л и з к и й к о п т и м а л ь н о м у , н а з ы в а е т с я ^-кодированием (y-encoding). Эта схема
и с п о л ь з у е т к о д и р о в а н и е с п е р е м е н н о й д л и н о й с п о м о щ ь ю р а з б и е н и я и н т е р в а л а G н а па­
р у , с о с т о я щ у ю и з длины (length) и смещения (offset). Смещение п р е д с т а в л я е т с о б о й за­
5
п и с ь ч и с л а G в д в о и ч н о м в и д е с у д а л е н н о й в е д у щ е й е д и н и ц е й . Н а п р и м е р , д л я ч и с л а 13
( б и н а р н ы й к о д — 1101) смещение р а в н о 1 0 1 . П а р а м е т р длина кодирует длину смещения
в у н а р н о м к о д е . Д л я ч и с л а 13 д л и н а смещения р а в н а 3 б и т . В у н а р н о м к о д е э т о ч и с л о вы­
г л я д и т к а к 1 1 1 0 . С л е д о в а т е л ь н о , у - к о д ч и с л а 13 и м е е т в и д 1 1 1 0 1 0 1 . О н п р е д с т а в л я е т со­
б о й к о н к а т е н а ц и ю д л и н ы 1110 и с м е щ е н и я 1 0 1 . Д р у г и е п р и м е р ы у - к о д а п р и в е д е н ы в
п р а в о м с т о л б ц е т а б л . 5.5.
Д л я т о г о ч т о б ы д е к о д и р о в а т ь у - к о д , с н а ч а л а н е о б х о д и м о п р о ч и т а т ь у н а р н ы й к о д , по­
ка н е б у д е т о б н а р у ж е н н у л ь , к о т о р ы й е г о з а в е р ш а е т , н а п р и м е р ч е т ы р е б и т а 1 1 1 0 п р и
р а с ш и ф р о в к е ч и с л а 1 1 1 0 1 0 1 . Т е п е р ь н а м и з в е с т н а д л и н а с м е щ е н и я : 3 бит. П о с л е э т о г о
м о ж н о п р а в и л ь н о с ч и т а т ь с м е щ е н и е 101 и д о б а в и т ь е д и н и ц у , у д а л е н н у ю п р и к о д и р о в а ­
нии: 101 ^ 1101 = 13.
Д л и н а смещения (offset) р а в н а Llog Gj б и т , а д л и н а п а р а м е т р а длина
2 (length) р а в н а
Llog GJ + 1 бит. Т а к и м о б р а з о м , д л и н а в с е г о к о д а р а в н а 2 х |_log GJ + 1 бит. В с е у - к о д ы
2 2

имеют нечетную длину и всего в д в а раза больше длины оптимального кода, которая
р а в н а Llog GJ. Э т о о п т и м а л ь н о е з н а ч е н и е о п р е д е л е н о н а о с н о в е п р е д п о л о ж е н и я , ч т о в с е
2

2" и н т е р в а л о в о т 1 д о 2" я в л я ю т с я р а в н о в е р о я т н ы м и . О д н а к о н а п р а к т и к е э т о у с л о в и е
может не выполняться. К а к правило, априори распределение вероятностей интервалов
неизвестно.

5
Мы предполагаем, что интервал G не имеет ведущих нулей. Если бы они были, т о их следо­
вало бы удалить перед удалением ведущей единицы.
С в о й с т в а д и с к р е т н о г о р а с п р е д е л е н и я в е р о я т н о с т е й Р ( в к л ю ч а я т о , является л и к о д оп­
т и м а л ь н ы м ) х а р а к т е р и з у ю т с я энтропией Н(Р), к о т о р а я определяется с л е д у ю щ и м о б р а з о м .

tf(P) = -gP(*)log P(*) 2

Здесь X — м н о ж е с т в о всех в о з м о ж н ы х чисел, к о т о р ы е н е о б х о д и м о з а к о д и р о в а т ь (и сле­


д о в а т е л ь н о . ^Р(х) = 1.0). Энтропия (entropy) — э т о м е р а н е о п р е д е л е н н о с т и , ч т о и л л ю ­
с т р и р у е т р и с . 5.9 д л я р а с п р е д е л е н и я в е р о я т н о с т е й Р с р е д и д в у х и с х о д о в Х= [x x ]. h 2 Эн­
т р о п и я д о с т и г а е т м а к с и м а л ь н о г о у р о в н я (ЩР) = 1 ) п р и Р(х ) х = Р(х )2 - 0,5, когда неопре­
д е л е н н о с т ь о т н о с и т е л ь н о т о г о , к а к о й из и с х о д о в JC, б у д е т с л е д у ю щ и м , я в л я е т с я н а и б о л ь ­
ш е й . М и н и м а л ь н ы й у р о в е н ь э н т р о п и и (Н(Р) = 0) д о с т и г а е т с я п р и Р(х ) х = 0 и Р(х )= 2 1,
когда с у щ е с т в у е т п о л н а я о п р е д е л е н н о с т ь .

Рис. 5.9. Энтропия Н(Р) как функция, зависящая


от Р(х/) на пространстве, состоящем из двух ис
ходов, х/ и х 2

М о ж н о показать (см. библиографию), что при определенных условиях нижняя грани


ца E(L) о ж и д а е м о й д л и н ы к о д а L р а в н а ЩР). К р о м е т о г о , м о ж н о д о к а з а т ь , что п р и у с л о ­
в и и 1 < ЩР) < о° у - к о д и р о в а н и е н е б о л ь ш е ч е м в т р и р а з а о т л и ч а е т с я о т о п т и м а л ь н о г о , а
п р и б о л ь ш и х з н а ч е н и я х ЩР) э т о т п о к а з а т е л ь п р и б л и ж а е т с я к д в у м

я С) «С)
Примечательно, что это соотношение сохраняется при любых распределениях веро­
я т н о с т е й Р. И т а к , д а ж е н е з н а я н и к а к и х с в о й с т в р а с п р е д е л е н и я и н т е р в а л о в , м ы м о ж е м
применять у-кодирование и быть уверенными, что при большой энтропии полученный

6
Читатели, желающие ознакомиться с основными понятиями теории вероятностей, могут
обратиться к учебникам Раиса (Rice, 2006) и Росса (Ross, 2006). Отметим, что нас интересу­
ют распределения вероятностей среди целых чисел (интервалы, частоты и т.д.), но свойства
кодирования, присущие распределению вероятностей, не зависят от природы исходов (целые
числа или нет).
код л и ш ь примерно в два раза больше оптимального. Код, длина которого при произ­
в о л ь н о м р а с п р е д е л е н и и в е р о я т н о с т е й Р о т л и ч а е т с я о т о п т и м а л ь н о й л и ш ь на м н о ж и т е л ь ,
н а з ы в а е т с я универсальным (universal).
Кроме универсальности, у-коды обладают еще двумя свойствами, полезными при
с ж а т и и и н д е к с а . П е р в о е с в о й с т в о — у-код я в л я е т с я беспрефиксным (prefix free), т.е. н и
о д и н у-код н е я в л я е т с я п р е ф и к с о м д р у г о г о к о д а . Э т о з н а ч и т , ч т о д е к о д и р о в а н и е п о с л е д о ­
в а т е л ь н о с т и у-кодов в с е г д а я в л я е т с я о д н о з н а ч н ы м , и н а м н е н у ж н ы р а з д е л и т е л и м е ж д у
н и м и , к о т о р ы е с н и ж а ю т э ф ф е к т и в н о с т ь к о д о в . В т о р о е с в о й с т в о з а к л ю ч а е т с я в т о м , что
у-коды я в л я ю т с я непараметрическими ( p a r a m e t e r free). П р и и с п о л ь з о в а н и и м н о г и х д р у ­
гих эффективных кодов необходимо уточнять параметры распределения интервалов в
индексе (например, параметры биномиального распределения). Это усложняет реализа­
цию сжатия и распаковки. Например, параметры необходимо хранить в памяти и извле­
кать из нее. К р о м е т о г о , п р и д и н а м и ч е с к о м и н д е к с и р о в а н и и р а с п р е д е л е н и е и н т е р в а л о в
может изменяться, поэтому исходные параметры больше использовать нельзя. Непара­
метрический код позволяет избежать этих проблем.
К а к о й cieneHH с ж а т и я и н в е р т и р о в а н н о г о и н д е к с а д о с т и г а ю т у - к о д ы ? Д л я о т в е т а на
этот вопрос применим закон Ц и п ф а — модель распределения терминов, введенную в
р а з д е л е 5.1.2. В с о о т в е т с т в и и с з а к о н о м Ц и п ф а ч а с т о т а т е р м и н а в к о л л е к ц и и cf, о б р а т н о
п р о п о р ц и о н а л ь н а р а н г у , т.е. с у щ е с т в у е т к о н с т а н т а с', т а к а я , ч т о

cf,=j- (5.3)

М о ж н о в ы б р а т ь д р у г у ю к о н с т а н т у с, т а к у ю , что д р о б и c/i п р е д с т а в л я ю т с о б о й о т н о ­
с и т е л ь н ы е ч а с т о т ы , а и х с у м м а р а в н а е д и н и ц е (т.е. cli = cf,/7).
1 сН
=£^=Щ= » '5.4i
c= 5 5
ih <->
Здесь М — количество различных терминов, а Н м — М-е гармоническое число 7

В к о л л е к ц и и R e u t e r s - R C V l с о д е р ж и т с я М = 4 0 0 т ы с я ч р а з н ы х т е р м и н о в , аН ~ м 1пМ. Т а ­
ким образом,
1 1 ^ 1 1
Н м 1пМ 1п400000 13'
С л е д о в а т е л ь н о , о т н о с и т е л ь н а я ч а с т о т а i-го т е р м и н а п р и м е р н о р а в н а 1/(13/), а о ж и ­
даемое среднее количество терминов в документе длины L равно

2 0 0 Х
L c !3 15

Здесь вероятность появления термина заменена его относительной частотой. Напом­


ним, что 200 — это среднее количество лексем в документе из коллекции R e u t e r s - R C V l
(табл. 4 . 2 ) .
Итак, мы определили статистические показатели термина, характеризующие распре­
деление термина в коллекции и распределение интервалов в инвертированном списке. На

К сожалению, общепринятым обозначением как энтропии, так и гармонического числа явля­


ется буква Н. Какое понятие имеется в виду, ясно из контекста.
о с н о в е э т и х п о к а з а т е л е й м о ж н о в ы ч и с л и т ь т р е б о в а н и я к п а м я т и , н е о б х о д и м о й д л я хра­
нения инвертированного индекса, сжатого с п о м о щ ь ю у-кодирования. Сначала разобьем
о т с о р т и р о в а н н ы й п о у б ы в а н и ю ч а с т о т ы л е к с и к о н т е р м и н о в к о л л е к ц и и н а к в а н т и л и , раз­
м е р ы к о т о р ы х р а в н ы Lc- 15. В с р е д н е м i'-й т е р м и н в д о к у м е н т е в с т р е ч а е т с я 15Л" р а з .
Следовательно, среднее количество появлений в документе / для терминов из первого
к в а н т и л я у д о в л е т в о р я е т у с л о в и ю / > 1 , ч т о с о о т в е т с т в у е т о б щ е м у к о л и ч е с т в у интерва­
л о в в р а с ч е т е н а о д и н т е р м и н (gaps p e r t e r m ) , р а в н о м у /V. С р е д н е е к о л и ч е с т в о п о я в л е н и й
т е р м и н о в и з в т о р о г о к в а н т и л я в д о к у м е н т е у д о в л е т в о р я е т у с л о в и ю — < / < 1 , ч т о соот­
ветствует о б щ е м у к о л и ч е с т в у и н т е р в а л о в в р а с ч е т е н а о д и н т е р м и н , р а в н о м у N12. С р е д ­
нее к о л и ч е с т в о п о я в л е н и й т е р м и н о в и з т р е т ь е г о к в а н т и л я в д о к у м е н т е у д о в л е т в о р я е т ус­
л о в и ю — ^ / < —, ч т о с о о т в е т с т в у е т о б щ е м у к о л и ч е с т в у и н т е р в а л о в в р а с ч е т е н а о д и н

т е р м и н , р а в н о м у N13 и т.д. ( М ы в ы б и р а е м н и ж н ю ю г р а н и ц у , п о с к о л ь к у э т о у п р о с т и т
д а л ь н е й ш и е в ы ч и с л е н и я . К а к б у д е т п о к а з а н о , д а ж е п р и т а к о м п р е д п о л о ж е н и и оконча­
тельный результат слишком пессимистичен.) Примем довольно нереалистичное предпо­
ложение, что все интервалы для заданного термина и м е ю т одинаковые размеры, как по­
к а з а н о н а р и с . 5.10.

7
Л документов

Lc н а и б о л е е ч а с т ы х т е р м и н о в N интервалов размером 1 в каждом

Lc с л е д у ю щ и х п о ч а с т о т е т е р м и н о в N12 и н т е р в а л о в р а з м е р о м 2 в к а ж д о м

Lc с л е д у ю щ и х п о ч а с т о т е т е р м и н о в Л73 и н т е р в а л о в р а з м е р о м 3 в к а ж д о м

Рис. 5.10. Стратификация терминов для оценки размера инвертированного индекса


закодированного с помощью у-кода

С д е л а в п р е д п о л о ж е н и е , что и н т е р в а л ы р а с п р е д е л е н ы р а в н о м е р н о , м ы в п е р в о м кванти­
л е п о л у ч и м и н т е р в а л ы р а з м е р о м 1, во в т о р о м квантиле - и н т е р в а л ы р а з м е р о м 2 , и т.д.
К о д и р у я Nlj и н т е р в а л о в р а з м е р о м j с п о м о щ ь ю у - к о д о в , м о ж н о о п р е д е л и т ь к о л и ч е с т ­
в о б и т о в , н е о б х о д и м ы х д л я х р а н е н и я и н в е р т и р о в а н н о г о с п и с к а т е р м и н а в J'-M к в а н т и л е
( с о о т в е т с т в у е т о д н о й с т р о к е н а р и с . 5.10).

L
Бит в строке = — x ( 2 x [ / o g j \ + 1 ) =
2 ^

Д л я к о д и р о в к и в с е г о к в а н т и л я н е о б х о д и м о L c • 2Mog2/// бит. О б щ е е к о л и ч е с т в о к в а н ­
т и л е й р а в н о M/(Lc), п о э т о м у и н в е р т и р о в а н н ы й ф а й л в ц е л о м з а й м е т
(5.6)

Д л я к о л л е к ц и и R e u t e r s - R C V l — = 4 0 0 0 0 0 / 1 5 = 2 7 ООО и

(5.7)

Итак, инвертированный файл сжатого инвертированного индекса для коллекции объ­


е м о м 9 6 0 М б а й т з а н и м а е т 2 2 4 М б а й т , т.е. о д н у ч е т в е р т у ю и с х о д н о й к о л л е к ц и и .
Запустив у-сжатие коллекции R e u t e r s - R C V l , м ы сжали индекс еще б о л ь ш е — до
101 М б а й т , ч т о с о с т а в л я е т ч у т ь б о л ь ш е о д н о й д е с я т о й р а з м е р а к о л л е к ц и и . П р и ч и н ы та­
к о г о р а с х о ж д е н и я м е ж д у п р е д с к а з а н н ы м и р е а л ь н ы м з н а ч е н и я м и з а к л ю ч а е т с я в т о м , что
(1) з а к о н Ц и п ф а н е о ч е н ь х о р о ш о а п п р о к с и м и р у е т ф а к т и ч е с к о е р а с п р е д е л е н и е ч а с т о т
т е р м и н о в в к о л л е к ц и и R e u t e r s - R C V l и (2) и н т е р в а л ы р а с п р е д е л е н ы н е р а в н о м е р н о . В со­
о т в е т с т в и и с м о д е л ь ю Ц и п ф а д л я н е о к р у г л е н н ы х д а н н ы х и з т а б л . 4.2 р а з м е р индекса
должен быть равен 251 Мбайт. Если сгенерировать частоты терминов по модели Ципфа
и для этих искусственных терминов создать сжатый индекс, то его размер будет равен
254 Мбайт. Следовательно, предсказания модели остаются верными в той мере, в какой
выполняются предположения относительно распределения частот терминов.
Р е з у л ь т а т ы п р и м е н е н и я м е т о д о в с ж а т и я , о п и с а н н ы х в г л а в е , п р и в е д е н ы в т а б л . 5.6.
Р а з м е р м а т р и ц ы и н ц и д е н т н о с т и т е р м и н о в (рис. 1.1) д л я к о л л е к ц и и R e u t e r s - R C V l р а в е н
9
4 0 0 0 0 0 х 8 0 0 0 0 0 = 4 0 х 8 х 1 0 бит, и л и 4 0 Г б а й т .

Т а б л и ц а 5.6. С ж а т и е и н д е к с а и л е к с и к о н а д л я к о л л е к ц и и R e u t e r s - R C V 1 . К о э ф ф и ц и е н т
сжатия зависит о т д о л и собственно текста в к о л л е к ц и и . К о л л е к ц и я Reuters-RCV1 с о д е р ж и т
б о л ь ш о е количество разметки XML. Поэтому, используя две л у ч ш и е схемы сжатия —
у-кодирование и блочное хранение с фронтальной упаковкой, — м о ж н о получить очень
маленькие значения коэффициента сжатия индекса о т н о с и т е л ь н о размера исходной
к о л л е к ц и и д л я R e u t e r s - R C V 1 : (101 + 5,9)/3600 = 0,03

Структура данных Размер, Мбайт

С л о в а р ь с фиксированным размером ячеек 11,2


С л о в а р ь с указателями на т е р м и н ы в с т р о к е 7,6
С л о в а р ь с указателями на т е р м и н ы в с т р о к е с б л о к а м и , к = 4 7,1
С л о в а р ь с указателями на термины в строке с блоками и ф р о н т а л ь н о й упаковкой 5,9
К о л л е к ц и я (текст, разметка xml и т . д . ) 3600,0
К о л л е к ц и я (текст) 960,0
Матрица и н ц и д е н т н о с т и терминов 40 000,0
С л о в о п о з и ц и й (несжатые, 32-битовые с л о в а ) 400,0
С л о в о п о з и ц и й (несжатые, 20 б и т ) 250,0
С л о в о п о з и ц и й . переменное б а й т о в о е к о д и р о в а н и е 116.0
101
Словопозиций, у-кодирование .°

Схема у-кодирования коллекции R e u t e r s - R C V l позволяет достичь отличного сжа­


т и я — п о ч т и на 1 5 % л у ч ш е г о , ч е м с х е м а б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й д л и н ы . Од-
нако ее декодирование является затратным. Это объясняется большим количество поби­
товых операций — сдвигов и применения масок, — которые необходимы для дешифров­
ки п о с л е д о в а т е л ь н о с т и у-кодов, п о с к о л ь к у г р а н и ц ы м е ж д у к о д а м и о б ы ч н о р а с п о л о ж е н ы
где-то в середине машинного слова. В результате процесс обработки запроса при ис­
пользовании у-кодирования становится более затратным, чем при использовании схемы
байтового кодирования переменной длины. В ы б о р между этими двумя схемами зависит
от особенностей приложения, например от относительной важности экономии дисковой
памяти по сравнению со скоростью обработки запросов.
К о э ф ф и ц и е н т с ж а т и я и н д е к с а в т а б л . 5.6 п р и б л и з и т е л ь н о р а в е н 2 5 % : 4 0 0 М б а й т
(несжатый, каждая словопозиция хранится в виде 32-битового слова) по сравнению с
101 М б а й т ( у - к о д и р о в а н и е ; и 116 М б а й т ( б а й т о в о е к о д и р о в а н и е п е р е м е н н о й д л и н ы ) . Э т о
з н а ч и т , ч т о как с х е м а у - к о д и р о в а н и я , т а к и с х е м а б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й
длины достигают цели, поставленной в начале главы. Сжатие индекса существенно по­
вышает скорость поиска и эффективность использования памяти за счет уменьшения
требуемой дисковой памяти, одновременно увеличивая объем информации, которую не­
обходимо хранить в кэше, и ускоряя передачу данных с диска в оперативную память.

*Р Упражнение 5.4 [*]. В ы ч и с л и т е к о д ы , п о л у ч е н н ы е с п о м о щ ь ю с х е м ы б а й т о в о г о


• к о д и р о в а н и я п е р е м е н н о й д л и н ы , д л я ч и с е л и з т а б л . 5.3 и 5 . 5 .

Упражнение 5.5 [*]. В ы ч и с л и т е к о д ы , п о л у ч е н н ы е с п о м о щ ь ю с х е м б а й т о в о г о


кодирования переменной длины и у-кодирования для следующего инвертирован­
ного списка: (777, 17743, 294068, 31251336). Везде, где возможно, используйте
интервалы, а не и д е н т и ф и к а т о р ы д о к у м е н т о в . З а п и ш и т е б и н а р н ы е к о л ы б л о к а м и
п о 8 бит.

Упражнение 5.6. Р а с с м о т р и т е и н в е р т и р о в а н н ы й с п и с о к ( 4 , 10, 1 1 , 12, 15, 6 2 , 6 3 ,


2 6 5 . 2 6 8 , 2 7 0 , 4 0 0 ) и с о о т в е т с т в у ю щ и й с п и с о к и н т е р в а л о в ( 4 , 6 , 1, 1, 3 , 4 7 , 1, 2 0 2 ,
3 , 2 , 130). П р е д п о л о ж и м , ч т о д л и н а и н в е р т и р о в а н н о г о с п и с к а х р а н и т с я о т д е л ь н о ,
так что система знает, когда он заполняется полностью. Используя схему байтово­
г о к о д и р о в а н и я п е р е м е н н о й д л и н ы , о т в е т ь т е н а с л е д у ю щ и е в о п р о с ы . 1) К а к о й
м а к с и м а л ь н ы й и н т е р в а л м о ж н о з а к о д и р о в а т ь с п о м о щ ь ю о д н о г о б а й т а ? 2) К а к о й
м а к с и м а л ь н ы й и н т е р в а л м о ж н о з а к о д и р о в а т ь с п о м о щ ь ю д в у х б а й т о в ? 3) С к о л ь к о
байтов потребуется для кодировки указанного выше списка? (Учитывайте только
п а м я т ь , н е о б х о д и м у ю д л я к о д и р о в а н и я п о с л е д о в а т е л ь н о с т и чисел.)

Упражнение 5.7. З а м е т и в , ч т о и н т е р в а л н е м о ж е т и м е т ь н у л е в у ю д л и н у и ч т о ко­


д и р у е м а я ч а с т ь , о с т а в ш а я с я п о с л е с д в и г а , не м о ж е т б ы т ь н у л е в о й , м о ж н о п р и б е г ­
нуть к небольшому трюку.
1. П р е д л о ж и т е м о д и ф и к а ц и ю с х е м ы б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й д л и н ы ,
позволяющую кодировать немного более длинные интервалы, используя тот
же самый объем памяти.

2. Какой максимальный интервал можно закодировать с п о м о щ ь ю одного байта?

3. Какой максимальный интервал можно закодировать с п о м о щ ь ю двух байтов?


4. С к о л ь к о б а й т о в п о т р е б у е т с я д л я к о д и р о в к и с п и с к а и з у п р а ж н е н и я 5.6 п р и та­
ком подходе? (Учитывайте только память, необходимую для кодирования по­
с л е д о в а т е л ь н о с т и чисел.)
Упражнение 5.8 [*]. В о с с т а н о в и т е п о с л е д о в а т е л ь н о с т ь и н т е р в а л о в и п о с л е д о в а ­
т е л ь н о с т ь с л о в о п о з и ц и й , и с п о л ь з у я с л е д у ю щ у ю п о с л е д о в а т е л ь н о с т ь у-кодов:
1110001110101011111101101111011.

Упражнение 5.9. С х е м а у - к о д и р о в а н и я д л я б о л ь ш и х ч и с е л я в л я е т с я о т н о с и т е л ь н о
н е э ф ф е к т и в н о й ( н а п р и м е р , 1 0 2 5 в т а б л . 5.5), п о с к о л ь к у д л и н а с м е щ е н и я в э т о й
с х е м е к о д и р у е т с я с п о м о щ ь ю н е э ф ф е к т и в н о г о у н а р н о г о кода. С х е м а 5-кодиро-
вания отличается от у-кодирования тем. что она кодирует первую часть кода
(длину) с п о м о щ ь ю у-кода, а не у н а р н о г о кода. К о д и р о в а н и е смещения произво­
д и т с я т а к ж е . Н а п р и м е р , б-код ч и с л а 7 р а в е н 10,0,11 (как и п р е ж д е , м ы д о б а в и л и
запятую д л я наглядности). К о д 10,0 является у-кодом длины (в д а н н о м случае — 2). а
к о д и р о в к а смещения (11) о с т а е т с я н е и з м е н н о й .

1. В ы ч и с л и т е б-коды д л я д р у г и х чисел и з табл. 5.5. В к а к о м диапазоне ч и с е л б-ко-


д ы к о р о ч е у-кодов?
2. С х е м а у - к о д и р о в а н и я э ф ф е к т и в н е е с х е м ы б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й
д л и н ы (см. табл. 5.6), гак как индекс с о д е р ж и т стоп-слова, а значит, имеет
много маленьких интервалов. Покажите, что при доминировании более круп­
ных интервалов схема байтового кодирования переменной длины является бо­
лее компактной.
3 . С р а в н и т е к о э ф ф и ц и е н т ы с ж а т и я д л я б-кода и б а й т - к о д а п е р е м е н н о й д л и н ы д л я
распределения с преобладанием больших интервалов.

Упражнение 5.10 [*]. У н а р н ы й к о д " 1 0 " п р е д с т а в л я е т с о б о й п о с л е д о в а т е л ь н о с т ь


единиц, завершающуюся нулем. Если пометать нули и единицы ролями, то м ы
получим эквивалентный унарный код " 0 1 " . При использовании унарного кода
" 0 1 " с о з д а н и е у-кода м о ж н о н а ч а т ь так: а) з а п и ш е м и н т е р в а л G в д в о и ч н о м в и д е ,
и с п о л ь з у я Ъ - Llog2y'J+l бит; б) д о б а в и м с п е р е д и (Ь-1) нулей.
1. З а к о д и р у й т е ч и с л а и з т а б л . 5.5 с п о м о щ ь ю э т о г о а л ь т е р н а т и в н о г о у-кода.
2. П о к а ж и т е , ч т о э т о т м е т о д п о з в о л я е т с о з д а т ь д о с т о й н у ю а л ь т е р н а т и в у у-коду,
т.е. е г о к о д и м е е т т у ж е д л и н у и т а к ж е м о ж е т б ы т ь о д н о з н а ч н о р а с ш и ф р о в а н .

Упражнение 5.11 [ * * * ] . У н а р н ы й к о д н е я в л я е т с я у н и в е р с а л ь н ы м . О д н а к о с у щ е ­
ствует р а с п р е д е л е н и е и н т е р в а л о в , п р и к о т о р о м у н а р н ы й к о д с т а н о в и т с я о п т и ­
мальным. Какое это распределение?

Упражнение 5.12. П р и в е д и т е п р и м е р ы т е р м и н о в , н а р у ш а ю щ и х п р е д п о л о ж е н и е о
том, что интервалы имеют одинаковые размеры (которое м ы сделали при оценке
требований к объему памяти для у-кодирования). Какими свойствами обладают
эти т е р м и н ы ?

Упражнение 5.13. Р а с с м о т р и т е т е р м и н , и н в е р т и р о в а н н ы й с п и с о к к о т о р о г о и м е е т
р а з м е р п, г д е п р а в н о , с к а ж е м , 10 0 0 0 . С р а в н и т е р а з м е р и н в е р т и р о в а н н о г о с п и с к а ,
с ж а т о г о п о с х е м е у-кодирования интервалов, если р а с п р е д е л е н и е т е р м и н а является
р а в н о м е р н ы м (т.е. в с е и н т е р в а л ы и м е ю т о д и н а к о в ы й р а з м е р ) , с е г о р а з м е р о м , ко­
гда э т о р а с п р е д е л е н и е н е я в л я е т с я р а в н о м е р н ы м . К а к о й и з э т и х с п и с к о в м е н ь ш е ?
Упражнение 5.14. В ы ч и с л и т е с у м м у в р а в е н с т в е (5.7) и п о к а ж и т е , ч т о о н а с о ­
ставляет около 251 Мбайт. Используйте числа из табл. 4.2, н о не округляйте пара­
м е т р ы Lc, с и к о л и ч е с т в о б л о к о в л е к с и к о н а

Упражнение 5.15. П р о а н а л и з и р у й т е в ы ч и с л е н и е р а з м е р а индекса, п р и в е д е н н о е в ы ­


ше, и у к а ж и т е я в н о в с е о к р у г л е н и я , с д е л а н н ы е п р и в ы в о д е ф о р м у л ы (5.6).

Упражнение 5.16. Д л я в ы б р а н н о й в а м и к о л л е к ц и и о п р е д е л и т е к о л и ч е с т в о д о к у ­
ментов и терминов, а также среднюю длину документа.

1. Н а с к о л ь к о б о л ь ш и м я в л я е т с я р а з м е р индекса, п р е д с к а з а н н ы й п о ф о р м у л е (5.6)?
2. Реализуйте индексатор, создающий инвертированный индекс этой коллекции,
сжатый с п о м о щ ь ю у-кодирования. Насколько большим является реальный ин­
декс?
3. Реализуйте индексатор, использующий схему байтового кодирования перемен­
н о й д л и н ы . Н а с к о л ь к о б о л ь ш и м я в л я е т с я и н д е к с , с ж а т ы й по э т о й с х е м е ?

Упражнение 5.17. Д л я т о г о ч т о б ы х р а н и т ь в о п е р а т и в н о й п а м я т и к а к м о ж н о б о л ь ш е
инвертированных списков, целесообразно сжать промежуточный индекс в ходе
индексации. Во-первых, это усложняет слияние блоков в схеме блочного индек­
сирования, основанного на сортировке. В качестве примера примените эту схему
к о б ъ е д и н е н н о й п о с л е д о в а т е л ь н о с т и и н т е р в а л о в , с ж а т о й с п о м о щ ь ю у-кодирования
и п р е д с т а в л е н н о й в т а б л . 5 . 7 . В о - в т о р ы х , с о з д а н и е и н д е к с а с и с п о л ь з о в а н и е м сжа­
тия является более эффективным. М о ж н о л и ожидать, что такая схема окажется
еще и более быстрой?

Т а б л и ц а 5 7. Д в е п о с л е д о в а т е л ь н о с т и и н т е р в а л о в п о д л е ж а щ и х с л и я н и ю в с х е м е б л о ч н о г о
индексирования, основанного на сортировке

Последовательность интервалов, сжа­ 1110110111111001011111111110100011111001


т а я с п о м о щ ь ю у-кодирования н а пер­
вом шаге
П о с л е д о в а т е л ь н о с т ь и н т е р в а л о в , ежа- 1 11110100001111110001000111111100100000111111010101
тая с помощью у-кодирования на в т о ­
р о м шаге

Упражнение 5.18. 1) П о к а ж и т е , ч т о в с о о т в е т с т в и и с з а к о н о м Ц и п ф а р а з м е р л е к ­
с и к о н а я в л я е т с я к о н е ч н ы м , а п о з а к о н у Х и п с а о н б е с к о н е ч е н 2) М о ж н о л и в ы в е с ­
ти з а к о н Х и п с а и з з а к о н а Ц и п ф а ?

5.4. Библиография и рекомендации д л я дальнейшего


чтения
Закон Х и п с а б ы л о т к р ы т Х и п с о м (Heaps, 1978). С м . также учебник Баеза-Йейтса и
Р и б е й р о - Н е т о ( B a e z a - Y a t e s a n d R i b e i r o - N e t o , 1999). П о д р о б н о е и з у ч е н и е р о с т а л е к с и к о н а
в к р у п н ы х коллекциях п р о в е л и У и л ь я м е и Ц о б е л ь (Williams a n d Zobel, 2 0 0 5 ) . З а к о н Ц и п ф а
о т к р ы т Ц и п ф о м (Zipf, 1 9 4 9 ) . К а ч е с т в о п р о г н о з о в , с д е л а н н ы х с п о м о щ ь ю э т о г о з а к о н а ,
и с с л е д о в а л и У и т т е н и Б е л л (Witten a n d Bell, 1990). Д р у г и е м о д е л и р а с п р е д е л е н и я т е р м и -
нов, включая К-смеси и смеси двух пуассоновских распределений, рассматривались в
к н и г е М а н н и н г а и Ш ю т ц е ( M a n n i n g and S c h u t z e , 1999). К а р м е л и д р . (Carmel et al., 2 0 0 1 ) ,
Б ю т ч е р и К л а р к е (Buttcher and Clarke, 2 0 0 6 ) , Б л а н к о и Б а р р е й р о (Blanco and Barreiro, 2007),
а т а к ж е Н т у л а с и Ч о ( N t o u l a s and C h o , 2 0 0 7 ) п о к а з а л и , ч т о с ж а т и е с п о т е р е й и н ф о р м а ц и и
м о ж е т о б е с п е ч и т ь х о р о ш е е с ж а т и е без с у щ е с т в е н н о г о с н и ж е н и я к а ч е с т в а п о и с к а .
С ж а т и е с л о в а р я д е т а л ь н о и с с л е д о в а л о с ь в р а б о т е У и т т е н а и д р . ( W i t t e n e t al., 1 9 9 9 ) ,
которую м ы рекомендуем для дополнительного чтения.
М а т е р и а л , и з л о ж е н н ы й в п о д р а з д е л е 5 . 3 . 1 , о с н о в а н на р а б о т е Ш о л е р а и д р . ( S e n d e r et
al., 2 0 0 2 ) . Э т и а в т о р ы в ы я с н и л и , ч т о с х е м а б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й д л и н ы
позволяет обработать запрос вдвое быстрее, ч е м схема побитового сжатия индекса или
отказ от сжатия вообще. П р и этом коэффициент сжатия оказался на 3 0 % хуже, чем в
лучшей схеме побитового сжатия. Кроме того, они показали, что сжатые индексы имеют
п р е и м у щ е с т в о п е р е д н е с ж а т ы м и не т о л ь к о з а с ч е т э к о н о м и и д и с к о в о й п а м я т и , н о и з а
счет б о л е е б ы с т р о й о б р а б о т к и з а п р о с о в . В о д н о м из э к с п е р и м е н т о в к о д ы , о с н о в а н н ы е на
" п е р е м е н н ы х п о л у б а й т а х " (variable nibbles), о к а з а л и с ь н а 5 - 1 0 % к о м п а к т н е е с х е м ы б а й ­
т о в о г о к о д и р о в а н и я п е р е м е н н о й д л и н ы , н о и х э ф ф е к т и в н о с т ь о к а з а л а с ь на т р е т ь н и ж е
(Anh and Moffat, 2 0 0 5 ) . Т р о т м а н ( T r o t m a n , 2 0 0 3 ) т а к ж е р е к о м е н д у е т и с п о л ь з о в а т ь с х е м у
б а й т о в о г о к о д и р о в а н и я п е р е м е н н о й д л и н ы , е с л и т о л ь к о д и с к о в о е п р о с т р а н с т в о не я в л я ­
ется к р и т и ч е с к и м р е с у р с о м . В с в о и х п о с л е д н и х р а б о т а х А н и М о ф ф а т ( A n h and Moffat,
2 0 0 5 , 2 0 0 6 а ) , а т а к ж е Ж у к о в с к и й и д р . ( Z u k o w s k i e t al., 2 0 0 6 ) с к о н с т р у и р о в а л и б и н а р н ы е
к о д ы , в ы р о в н е н н ы е по г р а н и ц а м м а ш и н н ы х с л о в , к о т о р ы е не у с т у п а ю т с х е м е б а й т о в о г о
кодирования переменной длины по степени сжатия, при этом обеспечивая более быстрое
д е к о д и р о в а н и е . Ч ж а н и д р . ( Z h a n g e t al., 2 0 0 7 ) и с с л е д о в а л п о в ы ш е н н у ю э ф ф е к т и в н о с т ь
кэширования в сочетании с использованием многочисленных методов сжатия инверти­
р о в а н н ы х с п и с к о в на с о в р е м е н н о м а п п а р а т н о м о б е с п е ч е н и и .
С х е м ы 8- и у - к о д и р о в а н и я б ы л и п р е д л о ж е н ы Э л и а с о м (Elias, 1975). д о к а з а в ш и м , ч т о
о б а э т и к о д а я в л я ю т с я у н и в е р с а л ь н ы м и . К р о м е т о г о , 6-коды я в л я ю т с я а с и м п т о т и ч е с к и
о п т и м а л ь н ы м и п р и Н(Р) —» °°. П р и д о м и н и р о в а н и и б о л ь ш и х ч и с е л ( б о л ь ш е 15) с х е м а
6-кодирования является более эффективной, чем схема у-кодирования. Х о р о ш и м введе­
нием в теорию информации, включая концепцию энтропии, является книга Кавера и То­
м а с а ( C o v e r and T h o m a s , 1991). В т о в р е м я как к о д ы Э л и а с а я в л я ю т с я л и ш ь а с и м п т о т и ч е ­
с к и о п т и м а л ь н ы м и , м о ж н о п о с т р о и т ь а р и ф м е т и ч е с к и е к о д ы (Witten et al., 1999), с к о л ь
у г о д н о б л и з к и е к о п т и м а л ь н о м у з н а ч е н и ю ЩР) п р и л ю б о м р а с п р е д е л е н и и Р.
Н е с к о л ь к о д о п о л н и т е л ь н ы х м е т о д о в с ж а т и я и н д е к с а о п и с а н ы в книге У и т т е н а и д р .
( W i t t e n et al., 1999). А в т о р ы р е к о м е н д у ю т и с п о л ь з о в а т ь д л я с ж а т и я и н д е к с а параметри­
зованные коды (parametrized c o d e s ) , я в н о м о д е л и р у ю щ и е р а с п р е д е л е н и е в е р о я т н о с т е й
интервалов для каждого термина. Например, они показали, что для крупных коллекций
коды Голомба ( G o l o m b c o d e s ) о б е с п е ч и в а ю т б о л е е в ы с о к и й к о э ф ф и ц и е н т с ж а т и я , ч е м
у-коды. М о ф ф а т и Ц о б е л ь (Moffat a n d Z o b e l , 1992) с р а в н и л и н е с к о л ь к о п а р а м е т р и з о в а н ­
н ы х м е т о д о в , в к л ю ч а я м е т о д L L R U N (Fraenkel and Klein, 1985).
Распределение интервалов в инвертированном списке зависит от присвоения иденти­
фикаторов документам. Многие исследователи искали способ назначения идентификато­
р о в , о б е с п е ч и в а ю щ и х э ф ф е к т и в н о е с ж а т и е п о с л е д о в а т е л ь н о с т е й и н т е р в а л о в (Moffat a n d
Stuiver, 1 9 9 6 ; Blandforf a n d B l e l l o c h , 2 0 0 2 ; Silvestri et al., 2 0 0 4 ; B l a n c o and B a r r i e r o , 2 0 0 6 ;
Silvestri, 2 0 0 7 ) . Э т и м е т о д ы п о з в о л я ю т н а з н а ч а т ь и д е н т и ф и к а т о р ы и з н е б о л ь ш о г о д и а п а ­
з о н а д о к у м е н т а м , о б р а з у ю щ и м к л а с т е р . К л а с т е р м о ж е т с о д е р ж а т ь все д о к у м е н т ы з а о п ­
р е д е л е н н ы й в р е м е н н о й п е р и о д , н а х о д я щ и е с я на о п р е д е л е н н о м в е б - с а й т е или о б л а д а ю -
ш и е определенными о б щ и м и свойствами. В результате, когда последовательность доку­
ментов из кластера оказывается в инвертированном списке, их интервалы становятся ма-
тыми и могут быть эффективно сжаты.
Сжатие частот термина и координат слов отличается от сжатия идентификаторов до­
к у м е н т о в (Scholer et al., 2 0 0 2 ; Z o b e l and Moffat, 2 0 0 6 ) . Г л у б о к о е и с о в р е м е н н о е о п и с а н и е
инвертированных индексов, включая сжатие индексов, содержится в обзоре Цобеля и
М о ф ф а т а ( Z o b e l and Moffat, 2 0 0 6 ) .
В данной главе изложены методы сжатия индекса л и ш ь для логического поиска. При
р а н ж и р о в а н н о м п о и с к е (глава 6) в ы г о д н е е у п о р я д о ч и т ь с л о в о п о з и ц и и п о ч а с т о т а м тер­
минов, а не по идентификаторам документов. Тогда в ходе обработки запросов сканиро­
в а н и е м н о г и х и н в е р т и р о в а н н ы х с п и с к о в м о ж е т з а в е р ш а т ь с я н а р а н н и х э т а п а х , поскольку
б о л е е н и з к и е в е с а не и з м е н я ю т р а н ж и р о в а н и е к д о к у м е н т о в , и м е ю щ и х в т е к у щ и й момент
н а и в ы с ш и й показатель релевантности. В ы ч и с л я т ь заранее и х р а н и т ь веса в индексе (в от-
тичие о т частот) н е ц е л е с о о б р а з н о , п о с к о л ь к у их н е в о з м о ж н о с ж а т ь так ж е , как целые
ч и с л а ( с м . р а з д е л 7.1.5).
Сжатие документов (document compression) также может играть важную роль в ин­
ф о р м а ц и о н н о - п о и с к о в ы х с и с т е м а х . Д е М о у р а и д р . (de M o u r a e t al., 2 0 0 0 ) и Б р и с б о и д р .
( B r i s b o a e t al., 2 0 0 7 ) о п и с а л и с х е м ы с ж а т и я , о б е с п е ч и в а ю щ и е п р я м о й п о и с к т е р м и н о в
и фраз в сжатом тексте, к о т о р ы й невозможно осуществить с п о м о щ ь ю стандартных средств
сжатия наподобие g z i p и c o m p r e s s .
Глава 6

1
Ранжирование , взвешивание
терминов и модель векторного
пространства

Д о сих пор м ы рассматривали индексы, поддерживающие обработку булевых запросов:


д о к у м е н т л и б о с о о т в е т с т в о в а л , л и б о н е с о о т в е т с т в о в а л з а п р о с у При р а б о т е с б о л ь ш и м и
коллекциями документов итоговое количество документов, соответствующих запросу,
м о ж е т б ы т ь т а к и м б о л ь ш и м , ч т о ч е л о в е к п р о с т о н е в с о с т о я н и и п р о с м о т р е т ь их в с е . С о ­
о т в е т с т в е н н о , о д н о й и з в а ж н ы х з а д а ч п о и с к о в ы х м а ш и н является р а н ж и р о в а н и е д о к у ­
м е н т о в п о с т е п е н и и х с о о т в е т с т в и я запросу. Д л я р е ш е н и я э т о й задачи п о и с к о в ы е м а ш и н ы
для каждого найденного документа вычисляют е г о степень соответствия заданному за­
2
п р о с у , т . е . (вычисленная) релевантность ( s c o r e ) . В д а н н о й главе м ы н а ч и н а е м и з л о ­
ж е н и е с в ы ч и с л е н и я р е л е в а н т н о с т и п а р ы ( з а п р о с , д о к у м е н т ) . В главе о с в е щ а ю т с я т р и
основные идеи.

1. В р а з д е л е 6.1 о п и с ы в а ю т с я п а р а м е т р и ч е с к и е и з о н н ы е и н д е к с ы , п р е д н а з н а ч е н н ы е
для достижения двух целей. Во-первых, они позволяют индексировать и находить
документы п о метаданным, например п о языку, на котором этот документ напи­
сан. Во-вторых, они позволяют относительно просто ранжировать документы по
степени их соответствия запросу.
2. В р а з д е л е 6.2 р а з в и в а е т с я и д е я о в з в е ш и в а н и е т е р м и н о в п о в а ж н о с т и в д о к у м е н т е
на о с н о в е с т а т и с т и ч е с к и х д а н н ы х о б и х в с т р е ч а е м о с т и .

' Для перевода термина "scoring" мы выбрали в конце концов не "вычисление/присвоение рей­
тинга/релевантности", а "ранжирование", так как хотя и не совсем идентичный термин "ranking"
гораздо популярнее в англо- и русскоязычной литературе для описания тех же самых процесса и
задачи, в частности, потому что последние годы в машинном обучении ранжированию (machine
learning to rank) доминируют методы, решающие задачу упорядочивания (ранжирования) в аль­
тернативных постановках: pair-wise (попарное упорядочивание) или list-wise (списковое упорядо­
чивание). Они могут вообще не оперировать одним значением score (рейтинга или вычисленного
значения релевантности) для документа. Кроме того, физический и логический смысл этого значе­
ния (score) в них существенно утерян. — Примеч. ред.
2
Термин "релевантность" (полный вариант "вычисленное значение релевантности") избран на­
ми как перевод термина "score" вместо существенно более редко используемого слова "рейтинг''
В главах об оценке качества поиска термин "relevance" (также переводимый нами как "релевант­
ность") трактуется исключительно как бинарная оценка эксперта, но мы надеемся, что это не по­
мешает пониманию текста: в спорных случаях мы будем говорить "оценка релевантности экспер­
том". — Примеч. ред.
3. В р а з д е л е 6.3 п о к а з а н о , ч т о е с л и р а с с м а т р и в а т ь к а ж д ы й д о к у м е н т к а к в е к т о р та­
к и х в е с о в , т о м о ж н о в ы ч и с л и т ь с о о т в е т с т в и е м е ж д у з а п р о с о м и к а ж д ы м и з доку­
м е н т о в . Э т о т п о д х о д н а з ы в а е т с я р а н ж и р о в а н и е м на о с н о в е м о д е л и в е к т о р н о г о
п р о с т р а н с т в а (vector space scoring).

В р а з д е л е 6.4 и з л о ж е н о н е с к о л ь к о в а р и а н т о в в з в е ш и в а н и я т е р м и н о в в м о д е л и век­
т о р н о г о п р о с т р а н с т в а . В ы ч и с л и т е л ь н ы е а с п е к т ы и д р у г и е т е м ы , с в я з а н н ы е с ранжирова­
н и е м в векторном пространстве, изложены в главе 7.
Р а з р а б о т к а э т и х идей т р е б у е т у г о ч н е н и я п о н я т и я запроса. В р а з д е л е 6.1 р а с с м а т р и ­
ваются запросы, в которых конкретные термины встречаются в конкретных частях соот
ветствующего документа. Начиная с раздела 6.2 м ы ослабим требование, касающееся
соответствия конкретных частей документа, перейдя к так называемым свободным тек­
стовым запросам, состоящим из терминов без указания порядка их следования, важности
и местоположения в документе Основная часть нашего исследования методов ранжиро­
вания связана именно с представлением запроса к а к множества терминов.

6.1. Параметрические и зонные индексы


Д о сих пор м ы рассматривали документ как последовательность терминов. Н а самом
деле большинство документов и м е ю т дополнительную структуру. Электронные доку­
м е н т ы о б ы ч н о с о п р о в о ж д а ю т с я метаданными (metadata), которые кодируются в виде,
распознаваемом компьютерами. П о д метаданными м ы понимаем конкретные виды дан
ных о документе, например фамилию автора, название и дату публикации. Эти метадан­
н ы е о б ы ч н о с о д е р ж а т поля метаданных (fields), н а п р и м е р д а т у с о з д а н и я и ф о р м а т д о к у ­
3
м е н т а , а т а к ж е ф а м и л и ю а в т о р а и, в о з м о ж н о , н а з в а н и е д о к у м е н т а . М н о ж е с т в о в о з м о ж ­
ных значений этих полей следует считать конечным, например множество всех дат
создания документа ограничено.
Р а с с м о т р и м з а п р о с " Н а й т и д о к у м е н т ы , с о з д а н н ы е В и л ь я м о м Ш е к с п и р о м в 1601 г о д у
и с о д е р ж а щ и е с л о в а alas poor Ynrick". В э т о м с л у ч а е о б р а б о т к а з а п р о с а с в о д и т с я , к а к
обычно, к поиску пересечения инвертированных списков, за исключением того, что м ы
м о ж е м о б ъ е д и н и т ь с л о в о п о з и ц и й к а к и з с т а н д а р т н ы х и н в е р т и р о в а н н ы х , т а к и и з пара­
4
метрических индексов (parametric i n d e x e s ) . Д л я к а ж д о г о поля ( н а п р и м е р , д л я д а т ы с о з ­
дания) существует один параметрический индекс; он позволяет выбрать только те доку­
м е н т ы , к о т о р ы е с о о т в е т с т в у ю т д а т е , у к а з а н н о й в з а п р о с е . Н а р и с . 6.1 п о к а з а н и н т е р ф е й с
пользователя для параметрического поиска. Некоторые поля подразумевают упорядо­
ченные значения (например, даты); в указанном в ы ш е запросе одним из таких значений
я в л я е т с я г о д " 1 6 0 1 " . П о и с к о в а я м а ш и н а м о ж е т п о д д е р ж и в а т ь з а п р о с ы с у к а з а н и е м диа­
пазонов таких упорядоченных значений; для хранения набора значений поля м о ж н о ис­
пользовать такие структуры данных, как В-деревья.
Зоны (zones) н а п о м и н а ю т п о л я , н о с о д е р ж а н и е м з о н ы м о ж е т б ы т ь п р о и з в о л ь н ы й
текст. В т о время как поле может иметь относительно небольшое множество значений,
з о н а м о ж е т с о д е р ж а т ь п р о и з в о л ь н ы й и н е о г р а н и ч е н н ы й о б ъ е м т е к с т а . Н а п р и м е р , назва­
ния документов и аннотации обычно трактуются как зоны. Д л я того чтобы поддержать

3
В отечественной и зарубежной практике часто вместо "поле метаданных" или "поле" исполь­
зуется "атрибут" или "атрибут документа". — Примеч. ред.
4
Также "атрибутивный индекс", индекс "атрибутов документа" и "атрибутивный поиск". — При-
обработку запросов вида "Найти д о к у м е н т ы с о с л о в а м и merchant в названии и Wil­
l i a m — в с п и с к е а в т о р о в , а т а к ж е с ф р а з о й g e n t l e rain в т е к с т е " д л я к а ж д о й з о н ы д о к у ­
мента м о ж н о создать стандартный инвертированный индекс Такой индекс выглядит
п р и м е р н о так, к а к п о к а з а н о на р и с . 6.2. В т о в р е м я к а к с л о в а р ь д л я п а р а м е т р и ч е с к о г о
индекса создается на о с н о в е ф и к с и р о в а н н о г о с п и с к а з н а ч е н и й ( м н о ж е с т в а я з ы к о в , м н о ­
жества д а т ) , с л о в а р ь д л я з о н н о г о и н д е к с а ф о р м и р у е т с я на о с н о в е т е к с т о в р а з м е щ е н н ы х
| в д а н н о й зоне.

Bibliographic г>еагсЬ

Рис. 6.1. Параметрический поиск. В данном примере мы имеем коллекцию с полями,


щими отбирать публикации по зонам, например Author (автор) или Language (язык)

william.abstract
К ]—»| 121 |—»| 1441 |—>| 1729

| william .author j- -*| 2 j- -*J^

Рис. 6.2. Элементарный зонный индекс; зот ' кодируются как расширения

Н а с а м о м д е л е р а з м е р с л о в а р я м о ж н о у м е н ь ш и т ь , з а к о д и р о в а в зону, в к о т о р о й встре­
чается т е р м и н , в с л о в о п о з и ц и и . Н а п р и м е р , на р и с . 6.3 п о к а з а н о , к а к к о д и р у е т с я п о я в л е ­
ние с л о в а william в н а з в а н и и и в з о н е а в т о р о в р а з н ы х д о к у м е н т о в . Т а к о е к о д и р о в а н и е
полезно, когда размер словаря имеет значение (поскольку м ы требуем, чтобы словарь
хранился в оперативной памяти). Однако существует еще одна причина, по которой ко­
дирование, показанное на рис. 6.3, оказывается полезным: эффективное ранжирование
[взвешиванием по зонам (weighted zone scoring).
| william |- *[ 2.author,2.title |—•[ 3.author |—•[ 4.title |—•[ 5.author |

Рис. 6.5. Зонный индекс, в котором зона закодирована в словопозиций, а не в словаре

6.1.1. Взвешенное зонное ранжирование


Д о с и х п о р в р а з д е л е 6.1 м ы б ы л и с о с р е д о т о ч е н ы н а п о и с к е д о к у м е н т о в н а о с н о в е бу­
л е в ы х з а п р о с о в о т н о с и т е л ь н о п о л е й и з о н . Т е п е р ь п е р е й д е м к о в т о р о м у п р и л о ж е н и ю зон
и полей.
О б о з н а ч и м б у л е в з а п р о с б у к в о й q, а д о к у м е н т —- б у к в о й d. М е т о д в з в е ш е н н о г о з о н
н о г о р а н ж и р о в а н и я п р и с в а и в а е т п а р е (о, d) з н а ч е н и е р е л е в а н т н о с т и и з о т р е з к а [0,1], в ы ­
ч и с л я я л и н е й н у ю к о м б и н а ц и ю зонных показателей (zone score), в к о т о р у ю к а ж д а я з о н а
документа вносит булево значение. Говоря конкретнее, рассмотрим множество докумен­
тов, каждый из которых имеет / зон. Пусть g b g2 g / e [ 0 . 1 ] . так ч т о ^Tg, = 1 . Пусть

s г д е 1 < i < I, — б у л е в а в е л и ч и н а , о з н а ч а ю щ а я с о о т в е т с т в и е ( и л и е г о о т с у т с т в и е ) м е ж д у
h

з а п р о с о м q и i-й з о н о й . Н а п р и м е р , е с л и в с е т е р м и н ы з а п р о с а п р и н а д л е ж а т к о н к р е т н о й
з о н е , т о е е б у л е в о з н а ч е н и е д о л ж н о б ы т ь р а в н ы м е д и н и ц е , а ест и н е т — н у л ю . Д е й с т в и ­
т е л ь н о , э т о о т о б р а ж е н и е м о ж е т о с у щ е с т в л я т ь л ю б а я б у л е в а ф у н к ц и я , о т о б р а ж а ю щ а я на­
л и ч и е т е р м и н о в запроса в з о н е в м н о ж е с т в о {0, 1 } . Т а к и м о б р а з о м , в з в е ш е н н у ю з о н н у ю
релевантность можно определить как

!>.*• (6-1)

В з в е ш е н н о е з о н н о е р а н ж и р о в а н и е и н о г д а н а з ы в а е т с я булевым поиском с ранжи­


рованием (ranked B o o l e a n retrieval).

(S^s. Пример 6.1. Р а с с м о т р и т е запрос Shakespeare к коллекции, в к о т о р о й к а ж д ы й д о -


к у м е н т и м е е т т р и з о н ы : author (автор), title ( з а г о л о в о к ) и body ( о с н о в н о й т е к с т ) .
Б у л е в а ф у н к ц и я р а н ж и р о в а н и я ( B o o l e a n score function) д л я з о н ы п р и н и м а е т зна­
ч е н и е , р а в н о е е д и н и ц е , е с л и т е р м и н з а п р о с а shakespeare п р и н а д л е ж и т э т о й з о н е ,
и нулю, в противном случае. Взвешенное зонное ранжирование в такой коллек­
ции п о д р а з у м е в а е т и с п о л ь з о в а н и е т р е х в е с о в , g g и g с о о т в е т с т в у ю щ и х з о н а м
b 2 3 4

author, title и body. Д о п у с т и м , ч т о g = 0,2, g - 0,3 и g = 0,5 (так ч т о с у м м а всех


t 2 3

трех весов равна единице); э т о соответствует п р и л о ж е н и ю , в к о т о р о м соответ­


с т в и е в з о н е author м е н е е в а ж н о п о с р а в н е н и ю с о в с е м и д р у г и м и з о н а м и , с о о т ­
в е т с т в и е в з о н е title я в л я е т с я б о л е е в а ж н ы м , а с о о т в е т с т в и е в з о н е body в а ж ­
нее в с е г о .
Т а к и м о б р а з о м , е с л и т е р м и н shakespeare п о я в и л с я в з о н а х title и body, н о отсут­
ствует в з о н е author, т о р е л е в а н т н о с т ь д о к у м е н т а б у д е т р а в н а 0,8.

Как вычислить взвешенную зонную релевантность? Для этого можно просто пооче­
р е д н о в ы ч и с л и т ь р е л е в а н т н о с т ь д л я к а ж д о г о д о к у м е н т а , с у м м и р у я в к л а д ы р а з н ы х зон.
Однако взвешенную зонную релевантность можно вычислить прямо п о инвертирован­
н ы м и н д е к с а м . А л г о р и т м , п р и в е д е н н ы й н а р и с . 6.4, п р е д н а з н а ч е н д л я в а р и а н т а , в к о т о ­
р о м з а п р о с q с о д е р ж и т д в а т е р м и н а , q, и q , и б у л е в у ф у н к ц и ю A N D : 1 — е с л и о б а т е р ­
2

м и н а з а п р о с а п р и с у т с т в у ю т в з о н е , и 0 — е с л и нет. П о с л е алгоритма м ы о п и ш е м его рас­


ширение для более с л о ж н ы х запросов и булевых функций.
Ч и т а т е л и м о г л и з а м е т и т ь б о л ь ш о е с х о д с т в о м е ж д у а л г о р и т м а м и , п р е д с т а в л е н н ы м и на
р и с . 6.4 и 1.6. Д е й с т в и т е л ь н о , о н и р е а л и з у ю т о д и н и т о т ж е п р о х о д п о с л о в о п о з и ц и я м ,
за и с к л ю ч е н и е м т о г о , ч т о в м е с т о п р о с т о г о д о б а в л е н и я д о к у м е н т а в м н о ж е с т в о р е з у л ь ­
татов для булева запроса A N D в данном случае м ы вычисляем релевантность каждого
Аокумента. В н е к о т о р ы х р а б о т а х м а с с и в т е к у щ и х з н а ч е н и й р е л е в а н т н о с т и scores[] н а з ы ­
вается м н о ж е с т в о м накопителей (accumulator). Это объясняется тем, что для более
; а о ж н ы х п о сравнению с операцией A N D булевых функций релевантность документа
может быть ненулевой, даже если он не содержит все термины запроса

ZoneScore(o,, q ) 2

1 float scores[N] = [0]


2 constant g[l\
3 p, <- postings(q{)
4 p <r-postings(q )
2 2

5 II scores[] — массив релевантностей для каждого документа, инициализированный нулем


6 IIр\ ир 2 вначале ссылаются на начало соответствующих словопозиций
7 // массив g[] инициализируется соответствующими зонными весами
8 while р\ Ф N I L and р * N I L 2

9 do if docID(p ) x = docID(p ) 2

10 then score[doc!D(p )] l <- W e i g h t e d Z o n e ( p p , g)


b 2

11 pi<^next{pi)
12 p <-
2 next(p )
2

13 else if doflD(p{) < docID(p ) 2

14 then p <r- next(px)


x

15 then p <r- пехн[р )


2 г

16 return scores

Рис. 6.4. Алгоритм взвешенного зонного ранжирования по двум инвертированным спискам.


Функция WeightedZone (здесь не показана) вычисляется во внутреннем цикле формучы (6.1)

6.1.2. Определение весов на основе машинного обучения


К а к о п р е д е л и т ь веса g, п р и в з в е ш е н н о м з о н н о м р а н ж и р о в а н и и ? О н и м о г у т б ы т ь у к а ­
з а н ы э к с п е р т а м и (или п о л ь з о в а т е л е м ) . О д н а к о г о р а з д о ч а щ е в е с а о п р е д е л я ю т с я н а о с н о ­
ве о б у ч а ю щ и х п р и м е р о в , о ц е н е н н ы х з а р а н е е . Э т о т м е т о д о т н о с и т с я к о б щ е м у к л а с с у м е ­
тодов ранжирования в информационном поиске под названием "методы ранжирования
на основе машинного обучения" ( m a c h i n e - l e a r n e d relevance). В д а н н о м р а з д е л е м ы д а е м
краткое введение в эту тему, поскольку взвешенное зонное ранжирование — хороший
материал для такого изложения. Более полное описание требует понимания принципов
м а ш и н н о г о о б у ч е н и я , п о э т о м у о т л о ж е н о д о г л а в ы 15.

1. В н а ш е м р а с п о р я ж е н и и и м е е т с я м н о ж е с т в о о б у ч а ю щ и х п р и м е р о в (training e x a m ­
p l e s ) , к а ж д ы й и з к о т о р ы х п р е д с т а в л я е т с о б о й к о р т е ж , с о с т о я щ и й и з з а п р о с а о,
д о к у м е н т а d, а т а к ж е о ц е н к и р е л е в а н т н о с т и d и q. В п р о с т е й ш е м с л у ч а е к а ж д а я
оценка релевантности (relevance judgment) является бинарной, т.е. релевантный
и л и нерелевантный. В более сложных реализациях этой методологии использу­
ются более тонкие оценки.
2. В е с а g о п р е д е л я ю т с я п у т е м " о б у ч е н и я " н а д а н н ы х п р и м е р а х так, ч т о б ы п о л у ч е н н ы е
t

оценки аппроксимировали оценки релевантности обучающих примеров.


При взвешенном зонном ранжировании этот процесс можно рассматривать как под­
бор к о э ф ф и ц и е н т о в л и н е й н о й ф у н к ц и и о т булевых признаков в х о ж д е н и я в соответст­
вующие зоны. Затратной частью этой методологии является трудоемкий сбор оценок
р е л е в а н т н о с т и , п о к о т о р ы м п р о и з в о д и т с я о б у ч е н и е , о с о б е н н о е с л и к о л л е к ц и я ч а с т о из­
меняется (как веб). О п и ш е м простой п р и м е р , п о к а з ы в а ю щ и й , как с в е с т и задачу о п р е д е ­
л е н и я в е с о в gt н а о с н о в е о б у ч е н и я к п р о с т о й з а д а ч е о п т и м и з а ц и и .
Рассмотрим простой вариант взвешенного зонного ранжирования, в котором каждый
д о к у м е н т и м е е т з о н ы title и body. П р и м е н и м к заданным запросу q и документу d булеву
ф у н к ц и ю с о о т в е т с т в и я и в ы ч и с л и м б у л е в ы з н а ч е н и я s-j{d, q) и s (d, B q), у к а з ы в а ю щ и е , со­
о т в е т с т в у е т л и з а г о л о в о к ( с о о т в е т с т в е н н о , т е л о ) д о к у м е н т а d з а п р о с у q. Н а п р и м е р , алго­
р и т м , п р е д с т а в л е н н ы й н а р и с . 6.4, и с п о л ь з у е т д л я э т о г о ф у н к ц и ю A N D , п р и м е н е н н у ю к
терминам запроса. Вычислим значение, лежащее между нулем и единицей, для каждой
п а р ы ( д о к у м е н т , з а п р о с ) , и с п о л ь з у я з н а ч е н и я sj{d, q) и s (d,
B q) и к о н с т а н т у gs [0,1]:

score(d, q) = gsj(d, q) + ( l - g ) ^ , q). (6.2)


Т е п е р ь о п и ш е м , к а к о п р е д е л и т ь к о н с т а н т у g п о обучающим примерам, каждый из ко­
т о р ы х п р е д с т а в л я е т с о б о й т р о й к у в и д а Ф, = Щ, qj, r ( J „ qj)). К а ж д о м у о б у ч а ю щ е м у п р и ­
м е р у , с о д е р ж а щ е м у д о к у м е н т d, и з а п р о с q-„ ч е л о в е к о м - р е д а к т о р о м д а е т с я о ц е н к а р е л е ­
в а н т н о с т и r(d h q^, п р и н и м а ю щ а я з н а ч е н и е релевантный и л и нерелевантный. Этот про­
цесс проиллюстрирован на рис. 6.5, на котором показаны семь примеров.

Пример DocID Запрос ST s„ Суждение

Ф1 37 linux 1 1 Релевантный
Фг 37 penguin 0 1 Нерелевантный
Фз 238 system 0 1 Релевантный
Ф 4 238 penguin 0 0 Нерелевантный

Ф 5
1741 kernel 1 1 Релевантный

Фв 2094 driver 0 1 Релевантный

Ф 7
3191 driver 1 0 Нерелевантный

Рис. 6.5. Пример обучающих примеров

Д л я к а ж д о г о о б у ч а ю щ е г о п р и м е р а Ф, у н а с есть б у л е в ы з н а ч е н и я sj(dj, qj\ и s W „ ?/')• B

используемые для ранжирования п о формуле (6.2).

score(dj, q ) = gsj{d
t h q ) + (l-g)s^dj,
f qj) (6.3)

Т е п е р ь с р а в н и м этот в ы ч и с л е н н у ю р е л е в а н т н о с т ь с о ц е н к о й р е л е в а н т н о с т и т о й ж е п а р ы
(dj, qj), с д е л а н н о й ч е л о в е к о м ; д л я э т о г о к а ж д а я о ц е н к а релевантный кодируется еди­
н и ц е й , а нерелевантный — нулем. Допустим, что о ш и б к а весовой функции с весом g оп­
ределяется по следующей формуле.

£(g, Ф,) = - score(d q,)f


h

З д е с ь о ц е н к а р е д а к т о р а r{dj,qj) к о д и р у е т с я е д и н и ц е й и л и н у л е м . Т а к и м о б р а з о м , с у м м а р ­
ная ошибка, соответствующая множеству обучающих примеров, равна
(6.4)

Тслерь з а д а ч а о п р е д е л е н и я к о н с т а н т ы g п о о б у ч а ю щ и м п р и м е р а м с в о д и т с я к н а х о ж д е -
шт* з н а ч е н и я g, м и н и м и з и р у ю щ е г о с у м м а р н у ю о ш и б к у (6.4).
О п р е д е л е н и е н а и л у ч ш е г о з н а ч е н и я g н а о с н о в е ф о р м у л ы (6.4) в ф о р м у л и р о в к е разде-
• 6.1.3 с в о д и т с я к з а д а ч е м и н и м и з а ц и и к в а д р а т и ч н о й ф у н к ц и и , з а в и с я щ е й о т g, н а от­
резке [0,1]. Э т а т е м а о б с у ж д а е т с я в р а з д е л е 6.1.3

6.1.3. Оптимальный вес g


О т м е т и м , ч т о д л я л ю б о г о о б у ч а ю щ е г о п р и м е р а Ф^, т а к о г о , ч т о s-r{dj, qfi = 0 и
vdj,qj)=l, р е л е в а н т н о с т ь , в ы ч и с л е н н а я п о ф о р м у л е ( 6 . 2 ) , р а в е н 1—g. А н а л о г и ч н о
. ж н о з а п и с а т ь р е л е в а н т н о с т ь , в ы ч и с л е н н у ю п о ф о р м у л е 6.2 п р и т р е х д р у г и х в о з -
ю ж н ы х к о м б и н а ц и я х з н а ч е н и й sjidj, qj) и s^d, q); э т и к о м б и н а ц и и п р о д е м о н с т р и р о в а -
rw н а р и с . 6.6.

Релевантность

Рис?6.6 Четыре возможные комбинации Sr и SB

О б о з н а ч и м через и ( с о о т в е т с т в е н н о , n i„) к о л и ч е с т в о о б у ч а ю щ и х п р и м е р о в , д л я
0 1 г 0

в т о р ы х sj(dj,qj) = 0 и s^dj,qj)=\, а э к с п е р т н а я о ц е н к а — релевантный (соответ-


• в е н н о , нерелевантный). Т о г д а в к л а д в с у м м а р н у ю оигибку в в ы р а ж е н и и ( 6 . 4 ) о т о б у -
•v»» щ и х п р и м е р о в , д л я к о т о р ы х Sj(dj, qj) = 0 и s^dj, qj) = 1, р а в е н
2
[l-(l-g)] n ir+[0-(l-g)]W 0

и писав аналогичным образом вклады в ошибку от обучающих примеров при трех дру-
»х к о м б и н а ц и я х з н а ч е н и й sj(dj, qj) и s (dj, qj) ( и р а с ш и р и в о б о з н а ч е н и я о ч е в и д н ы м о б р а -
B

м), п р и х о д и м к в ы в о д у , ч т о с у м м а р н а я о ш и б к а , о п р е д е л я е м а я п о ф о р м у е 6.4), р а в н а
2
(n0lr + n )glm + (пюг + n „)(l-gf+
0l лоог + я ц -
я (6.5)
Д и ф ф е р е н ц и р у я в ы р а ж е н и е (6.5) п о g и п р и р а в н и в а я р е з у л ь т а т к н у л ю , п о л у ч а е м , ч т о
иггимальное з н а ч е н и е g р а в н о

и
(6.6)
ю, +n +n +n l0n 0lr 0ln

Упражнение 6.1. Н е о б х о д и м о л и , ч т о б ы п р и и с п о л ь з о в а н и и м е т о д а в
зонного ранжирования все зоны использовали одну и ту же булеву функцию сов­
падения (соответствия)?

Упражнение 6.2. П р и м е м в п р и м е р е 6.1 с л е д у ю щ и е в е с а : # , = 0 , 2 , g = 0,31 и 2

g = 0,49. П е р е ч и с л и т е в с е о т л и ч а ю щ и е с я д р у г о т д р у г а з н а ч е н и я , к о т о р ы е м о ж е т
3

иметь документ.
Упражн гние 6.3. П е р е п и ш и т е а л г о р и т м , п р е д с т а в л е н н ы й н а р и с . 6.4, д л я случая,
когда запрос содержит больше двух терминов.

Упражнение 6.4. Н а п и ш и т е п с е в д о к о д д л я ф у н к ц и и W e i g h t e d Z o n e д л я случая


д в у х и н в е р т и р о в а н н ы х с п и с к о в , к а к н а р и с . 6.4.

Упражнение 6.5. П р и м е н и т е ф о р м у л у (6.6) к н а б о р у о б у ч а ю щ и х п р и м е р о в , п р е д ­


с т а в л е н н о м у н а р и с . 6.5, и о ц е н и т е н а и л у ч ш е е з н а ч е н и е g.

Упражнение 6.6. Д л я з н а ч е н и я g, н а й д е н н о г о в у п р а ж н е н и и 6 . 5 , в ы ч и с л и т е р е л е ­
вантность документа с помощью метода взвешенного зонного ранжирования для
к а ж д о г о п р и м е р а (запрос, д о к у м е н т ) . К а к э т а р е л е в а н т н о с т ь соотносится с эксперт­
н ы м и о ц е н к а м и , у к а з а н н ы м и н а р и с . 6.5 ( с у ж д е н и я з а к о д и р о в а н ы ч и с л а м и 0 и 1)?

Упражнение 6.7. П о ч е м у в ы р а ж е н и е д л я в е л и ч и н ы g в ф о р м у л е (6.6) н е у ч и т ы в а ­


ет о б у ч а ю щ и е п р и м е р ы , д л я к о т о р ы х з н а ч е н и я s-jidj, qj) и s (tz„ qj) о д и н а к о в ы ?
B

6.2. Частота термина и взвешивание


Д о сих пор ранжирование документа зависело от того, присутствует л и термин запро­
са в з о н е д о к у м е н т а . Т е п е р ь м ы с д е л а е м с л е д у ю щ и й л о г и ч е с к и й ш а г : д о к у м е н т и л и зона,
где т е р м и н з а п р о с а в с т р е ч а е т с я ч а щ е , с л е д у е т с ч и т а т ь б о л е е р е л е в а н т н ы м з а п р о с у и п р и ­
своить е м у более высокое значение релевантности. Д л я обоснования этой точки зрения
н а п о м н и м п о н я т и е с в о б о д н о г о т е к с т о в о г о з а п р о с а , в в е д е н н о е в р а з д е л е 1.4: з а п р о с , в к о ­
тором термины вводятся в интерфейс поисковой м а ш и н ы в свободном виде, без соеди­
н и т е л ь н ы х о п е р а т о р о в (таких, к а к б у л е в ы о п е р а т о р ы ) . Т а к о й с т и л ь , в е с ь м а п о п у л я р н ы й в
сети в е б , р а с с м а т р и в а е т з а п р о с п р о с т о к а к м н о ж е с т в о с л о в . С л е д о в а т е л ь н о , д л я п о д с ч е т а
показателя документа достаточно просто суммировать показатели соответствия доку­
мента каждому из слов запроса.
Д л я э т о г о п р и с в о и м к а ж д о м у т е р м и н у , о б н а р у ж е н н о м у в д о к у м е н т е , вес (weight), з а ­
висящий от количества появлений этого термина в данном документе. М ы хотим оце­
н и т ь с о о т в е т с т в и е м е ж д у т е р м и н о м з а п р о с а t и д о к у м е н т о м d, о с н о в ы в а я с ь н а весе т е р ­
м и н а t в д о к у м е н т е d. П р о щ е в с е г о п о л о ж и т ь э т о т в е с р а в н ы м к о л и ч е с т в у в х о ж д е н и й
т е р м и н а t в д о к у м е н т d. Э т а с х е м а в з в е ш и в а н и я н а з ы в а е т с я частотой термина ( t e r m fre­
q u e n c y ) и о б о з н а ч а е т с я к а к tf г д е и н д е к с t о б о з н а ч а е т т е р м и н , а и н д е к с d — д о к у м е н т .
(>A

Д л я д о к у м е н т а d н а б о р в е с о в tf (или о п р е д е л е н н ы х с п о м о щ ь ю л ю б о й д р у г о й в е с о в о й
функции, которая ставит в соответствие количеству появлений термина t в документе d
некое положительное действительное число) можно интерпретировать как дайджест д о ­
кумента, выраженный в числовом виде. Эта модель в научной литературе называется
мешком слов ( b a g o f w o r d s m o d e l ) . В р а м к а х э т о й м о д е л и т о ч н ы й п о р я д о к с л е д о в а н и я
терминов в документе игнорируется, а основное значение придается количеству вхожде­
н и й к а ж д о г о т е р м и н а в д о к у м е н т (в п р о т и в о п о л о ж н о с т ь б у л е в у п о и с к у ) . М ы т о л ь к о н а ­
капливаем информацию о количестве вхождений каждого термина. Таким образом, до­
к у м е н т Mary is quicker than John в э т о й м о д е л и и д е н т и ч е н д о к у м е н т у John is quicker than
Mary. Т е м н е м е н е е и н т у и т и в н о я с н о , ч т о д в а д о к у м е н т а с о д и н а к о в ы м и " м е ш к а м и с л о в "
по содержанию очень сходны. М ы разовьем этот подход в разделе 6.3.
Сначала ответим н а с л е д у ю щ и й вопрос: все л и слова в документе одинаково важны? Оче­
видно, нет; в разделе 2.2.2 м ы рассмотрели и д е ю стоп-слов (stop words), т.е. слов, которые н е
включаются в и н д е к с в о о б щ е и, следовательно, никак не в л и я ю т н а п о и с к и р а н ж и р о в а н и е .
6.2.1. Обратная документная частота
Подсчет "в л о б " частоты термина, о п и с а н н ы й в ы ш е , имеет серьезный недостаток:
при ранжировании документа по запросу все т е р м и н ы считаются одинаково важными.
Н а с а м о м д е л е н е к о т о р ы е т е р м и н ы и м е ю т м а л у ю и л и н у л е в у ю р а з л и ч и т е л ь н у ю с и л у при
определении релевантности. Например, коллекция документов об автомобильной про­
мышленности, скорее всего, содержит термин "auto" практически в каждом документе.
Д л я т о г о ч т о б ы у с т р а н и т ь у к а з а н н ы й н е д о с т а т о к , м ы в в е д е м м е х а н и з м о с л а б л е н и я влия­
ния т е р м и н а , к о т о р ы й в с т р е ч а е т с я в к о л л е к ц и и с л и ш к о м ч а с т о , ч т о б ы е г о и м е л о с м ы с л
учитывать при определении релевантности документов. Н а у м сразу же приходит идея
с н и з и т ь в е с а у т е р м и н о в с в ы с о к о й частотой в коллекции (collection frequency), пред­
ставляющей собой общее количество вхождений термина в коллекцию. Идея состоит в том,
ч т о б ы у м е н ь ш и т ь вес т е р м и н а tf на к о э ф ф и ц и е н т , к о т о р ы й у в е л и ч и в а е т с я п о м е р е у в е л и ­
чения е г о ч а с т о т ы в к о л л е к ц и и .
В м е с т о этого ч а щ е встречается и с п о л ь з о в а н и е документной частоты df (document fre­ t

quency), п р е д с т а в л я ю щ е й с о б о й к о л и ч е с т в о д о к у м е н т о в в к о л л е к ц и и , с о д е р ж а щ и х т е р ­
мин г. Э т о о б ъ я с н я е т с я т е м , ч т о , п ы т а я с ь н а й т и р а з л и ч и я м е ж д у д о к у м е н т а м и с ц е л ь ю их
ранжирования по запросу, лучше использовать статистические показатели именно самих
д о к у м е н т о в ( н а п р и м е р , к о л и ч е с т в о д о к у м е н т о в , с о д е р ж а щ и х з а д а н н ы й т е р м и н ) , ч е м ста­
тистические показатели коллекции в целом. Преимущество документной частоты перед
ч а с т о т о й в к о л л е к ц и и п р о д е м о н с т р и р о в а н о н а р и с . 6.7, г д е на ггоостом п р и м е р е п р о д е ­
м о н с т р и р о в а н о , ч т о ч а с т о т а в к о л л е к ц и и (cf) и д о к у м е н т н а я ч а с т о т а df) м о г у т в е с т и с е б я
п о - р а з н о м у . В ч а с т н о с т и , ч а с т о т ы т е р м и н о в try и insurance в к о л л е к ц и и п р и м е р н о о д и н а ­
ковы, в то в р е м я как д о к у м е н т н ы е ч а с т о т ы этих т е р м и н о в с и л ь н о о т л и ч а ю т с я д р у г от
д р у г а . И н т у и т и в н о я с н о , чтЪ д о к у м е н т ы , с о д е р ж а щ и е с л о в о i n s u r a n c e , д о л ж н ы и м е т ь
большую релевантность по отношению к запросу, содержащему термин m urance, чем
д о к у м е н т ы , с о д е р ж а щ и е с л о в о try, п о о т н о ш е н и ю к з а п р о с у , с о д е р ж а щ е м у т е р м и н try.

Слово

Рис. 6.7. Частота в коллекции {ф и документная частота (df)

9
К а к и с п о л ь з о в а т ь д о к у м е н т н у ю частоту т е р м а д л я к о р р е к ц и и его в е с а О б о з н а ч и м , как
о б ы ч н о , о б щ е е к о л и ч е с т в о д о к у м е н т о в в коллекции через N и о п р е д е л и м обратную доку­
ментную частоту (inverse d o c u m e n t frequency) т е р м и н а t с л е д у ю щ и м о б р а з о м .

idf =log- (6.7)

Таким образом, обратная документная частота редко встречающегося термина


является большой, в то время как для часто встречающегося термина она невелика. На
р и с . 6.8 п р и в е д е н ы п р и м е р ы о б р а т н ы х д о к у м е н т н ы х ч а с т о т в к о л л е к ц и и R e u t e r s - R C V l ,
состоящей из 806 791 документа. В этих примерах использованы десятичные логариф­
м ы Н а с а м о м д е л е , к а к п о к а з а н о в у п р а ж н е н и и 6.12, в ы б о р базы л о г а р и ф м а п р и р а н ж и ­
р о в а н и и не и м е е т з н а ч е н и я . О б о с н о в а н и е к о н к р е т н о й ф о р м ы р а в е н с т в а (6.7) б у д е т п р и ­
ведено позднее.
Термин idf,

саг 18165 1,65


auto 6 723 2,08

insurance 19 241 1,62

best 25 335 1.6

Puc. 6.8. Примеры обратных документных частот.


Приведены обратные документные частоты тер­
минов с разными частотами встречаемости в кол­
лекции Reuters-RCVl (806 791 документ).

6.2.2. Взвешивание на основе комбинации частоты и обратной


документной частоты термина
С к о м б и н и р у е м ч а с т о т у т е р м и н а в д о к у м е н т е ( t e r m frequency tf) и о б р а т н у ю д о к у ­
м е н т н у ю ч а с т о т у (inverse d o c u m e n t frequency — idf), ч т о б ы п о л у ч и т ь в е с к а ж д о г о т е р м и ­
н а в к а ж д о м д о к у м е н т е . С х е м а в з в е ш и в а н и я tf-idf присваивает к а ж д о м у термину t его вес
в документе d на основе ф о р м у л ы

tf-idf, jrf = tf,, xidf;.


d (6.8)

И н а ч е г о в о р я , в е с tf-idf,, т е р м и н а t в д о к у м е н т е d о б л а д а е т с л е д у ю щ и м и с в о й с т в а м и
d

1. О н д о с т и г а е т м а к с и м а л ь н о г о з н а ч е н и я , е с л и т е р м и н / в с т р е ч а е т с я м н о г о р а з в не­
большом количестве документов (тем с а м ы м усиливая их отличие от других до­
кументов).
2. О н у м е н ь ш а е т с я , е с л и т е р м и н в с т р е ч а е т с я в к а к о м - т о д о к у м е н т е л и ш ь н е с к о л ь к о
раз или встречается во многих документах (тем самым формируя менее выражен­
ный сигнал о релевантности документа).
3 О н достигает минимального значения, если термин встречается практически во
всех д о к у м е н т а х .

К а ж д ы й д о к у м е н т м о ж н о и н т е р п р е т и р о в а т ь к а к вектор (vector), с о с т о я щ и й и з к о м ­
понент, соответствующих каждому т е р м и н у в словаре, и весов каждого компонента,
вычисленных п о ф о р м у л е (6.8). Вес к а ж д о г о с л о в а р н о г о термина, не встречающегося
в документе, равен нулю. Эта векторная форма весьма важна для взвешивания и ранжи­
р о в а н и я ( с в я з а н н ы е с н е й и д е и б у д у т р а з в и т ы в р а з д е л е 6.3). Н а п е р в о м э т а п е в в е д е м ме­
ру перекрытия (overlap score measure): релевантность документа d равна сумме вхожде­
ний всех т е р м и н о в з а п р о с а в этот д о к у м е н т . В п о с л е д с т в и и м ы у т о ч н и м эту и д е ю так,
ч т о б ы с у м м и р о в а т ь не к о л и ч е с т в о в х о ж д е н и й к а ж д о г о т е р м и н а з а п р о с а t в д о к у м е н т d, а
и х в е с а tf-idf.

Score(q,d) = £ { f - idf, d (.6.9)

В р а з д е л е 6.3 м ы п р и д е м к б о л е е т о ч н о м у в а р и а н т у ф о р м у л ы (6.9)
*Р Упражнение 6.8. П о ч е м у о б р а т н а я д о к у м е н т н а я ч а с т о т а т е р м и н а в с е г д а я в л я е т с я
• конечной?
Упражнение 6.9. Ч е м у р а в н а о б р а т н а я д о к у м е н т н а я ч а с т о т а т е р м и н а , в с т р е ч а ю ­
щегося в каждом документе? Сравните этот результат с использованием списка
стоп-слов.

Упражнение 6.10. Р а с с м о т р и т е т а б л и ц у ч а с т о т т е р м и н о в д л я т р е х д о к у м е н т о в ,
о б о з н а ч е н н ы х н а р и с . 6.9 ч е р е з D o c l , D o c 2 и D o c 3 . В ы ч и с л и т е в е с а t f - i d f д л я т е р ­
м и н о в car, auto, insurance и best д л я к а ж д о г о д о к у м е н т а , и с п о л ь з у я з н а ч е н и я idf
и з р и с . 6.8.

Термин Docl Doc2 Doc3

саг 27 4 24
auto 3 33 0
insurance 0 33 29
best 14 0 17

Рис. 6.9. Таблица частот терминов оля упражнения 6.10

Упражнение 6.11. М о ж е т л и в е с t f - i d f т е р м и н а в д о к у м е н т е п р е в ы с и т ь е д и н и ц у ?
Упражнение 6.12. К а к о с н о в а н и е л о г а р и ф м а в р а в е н с т в е (6.7) в л и я е т н а в ы ч и с л е ­
ния в формуле (6.9)? К а к основание логарифма влияет н а относительные реле­
вантности двух документов для заданного запроса?

Упражнение 6.13. П р е д л о ж и т е п р о с т у ю а п п р о к с и м а ц и ю о б р а т н о й д о к у м е н т н о й
ч а с т о т ы т е р м и н а , е с л и л о г а р и ф м в ф о р м у л е (6.7) в ы ч и с л я е т с я п о о с н о в а н и ю 2 .

6.3. М о д е л ь векторного пространства д л я


ранжирования
В разделе 6.2 м ы ввели представление документа в виде вектора, о т р а ж а ю щ е г о отно­
сительную важность терминов в документе. Представление множества документов в
в и д е в е к т о р о в в о б щ е м в е к т о р н о м п р о с т р а н с т в е н а з ы в а е т с я моделью векторного про­
странства (vector space model) и является фундаментальным д л я многих задач и н ф о р ­
мационного поиска, включая ранжирование документов п о запросу, классификацию и
кластеризацию документов. Сначала м ы изложим основные идеи, лежащие в основе
ранжирования документов в векторном пространстве; к л ю ч е в ы м моментом здесь являет­
с я п р е д с т а в л е н и е з а п р о с о в ( р а з д е л 6.3.2) в в и д е в е к т о р о в т о г о ж е в е к т о р н о г о п р о с т р а н ­
ства, ч т о и д о к у м е н т ы к о л л е к ц и и .

6.3.1. Скалярное произведение


О б о з н а ч и м ч е р е з V~(d) в е к т о р , п о с т р о е н н ы й п о д о к у м е н т у d, в к о т о р о м к а ж д о м у т е р ­
мину словаря соответствует отдельный компонент. Если не указано иное, читатели могут
с ч и т а т ь , ч т о к а ж д ы й к о м п о н е н т в ы ч и с л я е т с я п у т е м в з в е ш и в а н и я т е р м и н о в п о с х е м е tf-idf,
хотя к о н к р е т н а я с х е м а в з в е ш и в а н и я в этой м о д е л и з н а ч е н и я н е имеет. М н о ж е с т в о д о к у ­
ментов в коллекции можно представить в виде векторов в векторном пространстве, в к о ­
т о р о м к а ж д о м у т е р м и н у соответствует о т д е л ь н а я о с ь . П р и т а к о м п р е д с т а в л е н и и п р о и с х о ­
д и т потеря о т н о с и т е л ь н о г о п о р я д к а с л е д о в а н и я т е р м и н о в в к а ж д о м д о к у м е н т е ; н а п о м н и м
п р и м е р и з р а з д е л а 6.2, в к о т о р о м у к а з а н о , ч т о д о к у м е н т ы Mary is quicker than John и John is
quicker than Mary в р а м к а х м о д е л и " м е ш к а с л о в " и д е н т и ч н ы .
Как выразить сходство между двумя документами в векторном пространстве в коли­
ч е с т в е н н о й ф о р м е ? Н а п р и м е р , м о ж н о п о п ы т а т ь с я о ц е н и т ь м о д у л ь р а з н о с т и м е ж д у век­
торами, соответствующими р а з н ы м документам. Такая мера сходства имеет недостаток:
векторная разность между двумя документами с очень близким содержанием может быть
з н а ч и т е л ь н о й , е с л и о д и н из н и х с у щ е с т в е н н о длиннее другого. Иначе говоря, относи­
тельное распределение терминов в двух документах может быть идентичным, но абсо­
л ю т н ы е ч а с т о т ы т е р м и н о в в о д н о м из н и х м о г у т б ы т ь н а м н о г о б о л ь ш е .
Д л я т о г о ч т о б ы к о м п е н с и р о в а т ь в л и я н и е д л и н ы д о к у м е н т а , д л я д в у х д о к у м е н т о в , d\
и d , о б ы ч н о в ы ч и с л я е т с я косинусная
2 мера сходства ( c o s i n e similarity) м е ж д у и х в е к т о р ­
н ы м и п р е д с т а в л е н и я м и V(4) и V(d ).
2

(6.1U)

З д е с ь ч и с л и т е л ь п р е д с т а в л я е т с о б о й скалярное произведение (dot p r o d u c t , i n n e r p r o d u c t )


и a
в е к т о р о в v{d,) V(d ) 2 - з н а м е н а т е л ь р а в е н п р о и з в е д е н и ю евклидовых норм (Euclidean

lengths) э т и х в е к т о р о в . С к а л я р н о е п р о и з в е д е н и е (х,у) д в у х в е к т о р о в р а в н о ^]JC,>>,. О б о ­

з н а ч и м ч е р е з v(d) в е к т о р д о к у м е н т а d с к о м п о н е н т а м и V(d) V (d).


M Евклидова длина

вектораdравна ^jY^V^d)-

З н а м е н а т е л ь в ф о р м у л е (6.1U) нормирует по длине ( l e n g t h - n o r m a l i z e ) в е к т о р ы V(d,) и

C , 2
У ( й \ ) , т а к , ч т о б ы и х д л и н а стала р а в н а е д и н и ц е : v(d,) =„ ^ \, и v(d ) = , , ^ \ , • Теперь
И<0| |vK)|
ф о р м у л у (6.10) м о ж н о п е р е п и с а т ь в в и д е
sim(d„d )2 = (v(d ),v(d )).
t 2 (6.11)

(g^. Пример 6.2. Р а с с м о т р и м три документа, представленные на рис. 6.9. При-


меним к их векторам, содержащим частоты терминов, евклидову норми­

ровку. Величины для документов D o c l , Doc2 и Doc3 равны 30,56,

46,84 и 41,30 соответственно. Итоговые результаты евклидовой нормировки


этих в е к т о р о в п р и в е д е н ы н а р и с . 6.10.

Термин doc7 doc2 doc3

Со 0,88 0,09 0,58

auto 0,10 0,71 0

insurance 0 0,71 0,70

best 0,46 0 0,41

Puc. 6.10. Нормированные векторы


кументов. представленных на рис. 6.9
Таким образом, выражение (6.11) м о ж н о интерпретировать как скалярное произве-
х н и е н о р м и р о в а н н ы х векторов, с о о т в е т с т в у ю щ и х двум документам. Как показано на
• • с . 6 . 1 1 , эта м е р а с х о д с т в а р а в н а к о с и н у с у у г л а 6 м е ж д у д в у м я в е к т о р а м и . К а к и с п о л ь ­
з о в а т ь м е р у с х о д с т в а sim(tf"i, d )l2 Д л я д о к у м е н т а d ( в о з м о ж н о , о д н о г о и з д о к у м е н т о в d\
в к о л л е к ц и и ) п о п р о б у е м н а й т и д о к у м е н т из к о л л е к ц и и , б о л ь ш е д р у г и х п о х о ж и й на д о к у ­
м е н т d. Т а к о й п о и с к п о л е з е н в с и с т е м е , в к о т о р о й п о л ь з о в а т е л ь м о ж е т и д е н т и ф и ц и р о ­
вать д о к у м е н т и и с к а т ь п о х о ж и е н а н е г о , — в р е з у л ь т а т а х п о и с к о в ы х м а ш и н т а к а я ф у н к ­
ц и о н а л ь н о с т ь о б о з н а ч а е т с я к а к " п о х о ж и е д о к у м е н т ы " и л и " m o r e like t h i s " . С в е д е м з а д а ч у
п о и с к а д о к у м е н т о в , н а и б о л е е п о х о ж и х на д о к у м е н т d, к п о и с к у д о к у м е н т о в о", с н а и ­
б о л ь ш и м с к а л я р н ы м п р о и з в е д е н и е м (v(d),\>\ Для этого можно было бы вычислить
с к а л я р н ы е п р о и з в е д е н и я в е к т о р а v(d) и в с е х в е к т о р о в v(d ),...,v(d ),
t K а з а т е м взять д о ­
к у м е н т ы с м а к с и м а л ь н ы м и з н а ч е н и я м и м е р ы сходства.

gossip
1| Hdi)

v(d
-* jealous

Рис. 6.11. Косинусная мера сходства: sim(d\, d ) = cos в 2

S
(c
f^. Пример 6.3. Н а рис. 6.12 п о к а з а н о к о л и ч е с т в о в х о ж д е н и й т р е х т е р м и н о в (affec-
tion, j e a l o u s и gossip) в к а ж д ы й и з р о м а н о в Д ж е й н О с т и н " Ч у в с т в о и чувствитель­
н о с т ь " и " Г о р д о с т ь и п р е д у б е ж д е н и е " ( J a n e A u s t e n , Sense and Sensibility (SaS) и
Pride and Prejudice (PaP)), а также Эмили Бронте "Грозовой перевал" (Emily
Bronte, Wuthering Heights ( W H ) ) . Разумеется, в к а ж д о м и з чтих р о м а н о в с о д е р ­
жится м н о г о других т е р м и н о в . В д а н н о м п р и м е р е м ы представили к а ж д ы й из
этих р о м а н о в в в и д е е д и н и ч н о г о т р е х м е р н о г о вектора, с о о т в е т с т в у ю щ е г о т о л ь к о
этим т р е м терминам; в таблице приведены частоты терминов без умножения на
обратную документную частоту. Результаты расчетов приведены на рис. 6.13.

Термин SaS PoP WH

affection 115 58 20
jealous 10 7 11
gossip 2 0 6

Put: 6.12. Частоты терминов в трех романах. Джейн Остин "Чувство и чувст­
вительность' и Гордость и предубеждение" и Эмили Бронте "Грозовой перевал"
Термин SaS РаР WH

affection 0,996 0,993 0,847

jealous 0,087 0,120 0,466

gossip 0,017 0 0,254

Рис. 6.13. Векторы терминов для трех романов из рис. 6.12, основанные
на обычных частотах терминов в предположении, что в коллекцию не
входят никакие другие термины. (Поскольку термины affection и jealous
встречаются во всех трех документах, их вес tf-idf был бы равен нулю.)

Теперь рассмотрим косинусную меру сходства между парами итоговых трехмер­


н ы х в е к т о р о в . П р о с т ы е в ы ч и с л е н и я п о к а з ы в а ю т , ч т о sim(v(SaS).v(PaP)) = 0.999
и sim(v(SaS),v(WH)) = 0 . 8 8 8 . Т а к и м о б р а з о м , д в е к н и г и Д ж е й н О с т и н (SaS и Р а Р )
намного ближе друг к другу, чем к роману Эмили Бронте "Грозовой перевал"