ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА
Сер. 10. 2011. Вып. 3
ИНФОРМАТИКА
УДК 519.61
М. С. Агеев, Б. В. Добров
МЕТОД ЭФФЕКТИВНОГО РАСЧЕТА МАТРИЦЫ БЛИЖАЙШИХ СОСЕДЕЙ ДЛЯ ПОЛНОТЕКСТОВЫХ ДОКУМЕНТОВ*)
1. Введение. Поиск похожих документов является ключевым компонентом множества широко используемых алгоритмов машинного обучения для кластеризации и классификации текстовых коллекций. Алгоритм k ближайших соседей (k nearest neighbours, kNN) известен как один из эффективных методов машинного обучения, применяемых для автоматической классификации текстов [1, 2] и оценки консистент-ности экспертной разметки документов [3, 4].
Ключевой и наиболее ресурсоемкий этап работы алгоритма kNN - расчет матрицы ближайших соседей для примеров, подлежащих классификации. Для коллекций документов размером 100 000 и более расчет матрицы близости требует значительных вычислительных ресурсов. Разработка более быстрых алгоритмов является нетривиальной задачей.
В данной работе будут рассмотрены несколько алгоритмов вычисления матрицы близости: очевидный метод расчета «в лоб», методы, описанные в литературе, и разработанный нами эффективный алгоритм. Этот алгоритм позволяет рассчитать матрицу 100 ближайших соседей для 1.5-миллионной коллекции документов за 1 неделю работы кластера из четырех обычных компьютеров (3 GHz CPU, 2 Gb RAM), что примерно на порядок быстрее, чем наилучший из известных методов, опубликованный в работе [5] в 2008 г.
2. Постановка задачи. На вход алгоритма поступают две коллекции текстовых документов, Di и D-2.
Результатом работы алгоритма является матрица близости: для каждого документа
Агеев Михаил Сергеевич — кандидат физико-математических наук, старший научный сотрудник Научно-исследовательского вычислительного центра Московского государственного университета имени М. В. Ломоносова. Количество опубликованных работ: более 30. Научные направления: методы машинного обучения, методы автоматической классификации текстов. E-mail: ageev@mail.cir.ru.
Добров Борис Викторович — кандидат физико-математических наук, заведующий лабораторией анализа информационных ресурсов Научно-исследовательского вычислительного центра Московского государственного университета имени М. В. Ломоносова. Количество опубликованных работ: более 90. Научное направление: системы обработки неструктурированной информации. E-mail: dobroff@mail.cir.ru.
+ ) При выполнении работы использовались ресурсы суперкомпьютерного центра Московского государственного университета имени М. В. Ломоносова, в рамках НОЦ «Суперкомпьютерные технологии».
© М. С. Агеев, Б. В. Добров, 2011
! из коллекции набор из не более к документов коллекции В2, наиболее близких к ! по определенной мере оценки близости документов.
Опишем стандартный [6] способ вычисления меры оценки близости документов.
Первым этапом работы алгоритма является преобразование текстов документов в векторы в пространстве признаков. Все слова, встретившиеся в документе, приводятся к нормальной форме (так называемые «леммы»).
Вес слова для этого документа вычисляется по формуле TF*IDF [6, 7], которая учитывает частоту вхождения слова в документ и количество документов коллекции, содержащих данное слово. Мы используем широко распространенный вариант формулы TF*IDF - ВМ25 INQUERY [7]:
В (1) tfD(l) («term frequency») - учет частотности леммы в документе; freqD(l) - частотность леммы l в документе, dl_o - мера длины документа, avg_dl - средняя длина документа, в = 0.4, idf(l) («inverse document frequency») - фактически форма штрафования часто используемых в коллекции слов, |с| - количество документов в коллекции, df(l) - количество документов, где встретилась лемма l.
Таким образом, текстовый документ преобразуется в вектор признаков в пространстве Rn, где n - количество различных (нормализованных) слов, встретившихся в коллекции документов. Слова, встретившиеся в документе, получают ненулевой вес, вес остальных слов равен нулю.
Задача расчета ближайших соседей для коллекции документов имеет высокую вычислительную сложность. Типичными характеристиками задачи являются:
• размер коллекции документов - от 104 до 108;
• размерность пространства признаков - от 104 до 107;
• количество ненулевых компонент вектора признаков (слов документа); в среднем для каждого документа - от 100 до 10 000;
• количество соседей k - от 10 до 100.
В качестве меры оценки близости документов x Є D\ и у Є D2 используем косинус между векторами документов в пространстве признаков:
где п - размерность пространства признаков (количество различных слов в коллекции); хг, уг - TF*IDF-вес *-го признака документа х и у соответственно.
Формула (2) может быть записана в более простом виде, если веса слов документа нормализовать:
TFIDFd (l)
tfD (l)
в +(1- в) • tfD (l) • idfD(l),
freqD (l)
freq^O + O.S+l.S-^iV
(1)
ісВД) = —7ТГГТГ-
log( |с| + 1)
n
cos(x, y)
(2)
n
n
Vi
i=l
\
J2vi
i=1
cos(x, y) = ^2 Xi ■ Vi.
i=1
X
2
3. Известные подходы. Рассмотрим различные варианты вычисления к ближайших соседей для коллекции документов. Пусть на вход алгоритма подаются коллекции Di и D2 обработанных документов, представленных как векторы признаков. А именно, в виде таблицы значений (doc_id, word_id, weight), где doc_id - идентификатор документа, word_id - идентификатор слова, weight - нормализованный вес слова в документе.
Существующие алгоритмы можно разделить на следующие категории:
1) алгоритмы, основанные на полном расчете матрицы ближайших соседей;
2) алгоритмы ускоренного поиска ближайших соседей на основе неравенства треугольника;
3) методы решения близкой задачи - поиска полудубликатов документов.
В п. 3 будут описаны известные алгоритмы. Начнем с анализа приближенных методов и методов, основанных на неравенстве треугольника, и покажем, что они не применимы для поиска близких документов по полным текстам. Затем опишем три алгоритма, основанных на полном расчете: очевидный алгоритм расчета по прямому индексу документов и два алгоритма, опубликованных в литературе. В п. 4 опишем разработанный нами алгоритм. Экспериментальная оценка скорости работы различных алгоритмов представлена в п. 5.
3.1. Близкие задачи: методы поиска полудубликатов. Методы поиска почти одинаковых документов используются для удаления дублей при индексировании web [8, 9] и выявления плагиата [10]. Для эффективного поиска полудубликатов применяются методы индексирования документов на основе выделения специальных факторов, выделяемых из текста, называемых также шинглами [9]. При использовании метода индексирования текстов на основе шинглов документ преобразуется в вектор чисел (шинглов), обладающих следующими полезными свойствами:
1) документу сопоставляется относительно небольшое количество шинглов - порядка 10;
2) малые изменения текста документа приводят к изменениям небольшого числа шинглов в шингл-векторе документа;
3) сильное совпадение шингл-векторов документов означает высокую вероятность совпадения значительных фрагментов текстов документов.
В качестве примера опишем один из методов преобразования документа в вектор шинглов, описанный в работе [8]. Документ преобразуется во множество непрерывных (и пересекающихся) последовательностей из S слов (например, S = 10). Для каждой последовательности S слов вычисляется хэш-сумма. Из полученного набора хэш-сумм выбираются F наибольших значений, которые и образуют шингл-вектор документа.
Для рассматриваемой нами задачи поиска тематически близких документов методы на основе шинглов не подходят, так как такие документы могут не иметь совпадающих фрагментов текстов.
3.2. Близкие задачи: методы на основе неравенства треугольника. Задача поиска тематически близких документов есть частный случай более общей задачи поиска близких объектов в произвольном метрическом пространстве.
Действительно, косинусная мера близости между документами соответствует евклидовой метрике близости между нормализованными векторами документов. Для нормализованных векторов х и у, все координаты которых неотрицательные, евклидово расстояние р (х, у) является монотонной функцией от косинусной меры:
Р(х,у) = л/2\Л - со в (ж, у). (3)
Для задачи поиска близких точек в метрическом пространстве разработан широкий класс методов эффективного поиска, основанных на неравенстве треугольника [11].
Метод усечения поиска близких объектов для точки X по неравенству треугольника: ху ^ хх — ху
Общая идея этих методов заключается в следующем. Пусть для данных х Е X, £ > 0 и метрики р (х, у) требуется найти множество объектов, близких к данному: N (х) = {у Е X\р (х,у) ^ £}. Пусть на некотором шаге алгоритма известно, что расстояние от х до некоторой точки г довольно большое, р (х, г) > Я (рисунок). Тогда для любой точки у, если р (у, г) ^ Я — £, то из неравенства треугольника следует, что р (х, г) ^ р (х, у) + р (у, г) и р (х,у) > £, у Е N (х). Если тем или иным способом сохранить информацию
о расстояниях между некоторыми объектами, то можно не вычислять р (х,у) для тех объектов у, которые находятся близко к «далеким» объектам г и таким образом найти N (х) быстрее, чем с помощью полного вычисления р (х, у) для всех у.
Методы, основанные на неравенстве треугольника, широко применяются при индексировании географических данных, в мультимедиа и других областях, где задача обладает хотя бы одним из следующих свойств:
- объекты находятся в пространстве малой размерности (порядка 2-10);
- функция расстояния р (х, у) вычисляется долго по сравнению с накладными расходами на использование метрических индексов.
Нам не известны работы, в которых методы, основанные на неравенстве треугольника, успешно использовались бы для поиска похожих документов с косинусной мерой близости. На наш взгляд, эти методы не эффективны для рассматриваемой задачи,
потому что для задачи поиска близких документов условие р (x, z) > R, р (у, z) ^ R — е обладает низкой селективностью и не позволяет существенно сократить вычисления.
Поясним сказанное на примере: пусть требуется найти документы, для которых cos(x,y) ^ 0.5 (это вполне типичный порог для близких документов по косинусной мере). Из формулы (3) следует, что cos (ж, у) > 0.5 <i=> р (х, у) < е, е = 1. Так как р (ж, z) ^ \/2, той-£<л/2-1< 0.42, и, следовательно, отсечение по неравенству треугольника можно выполнить лишь для тех документов у, которые сильно похожи на образец z: р (у, z) < 0.42 (или cos (x, у) ^ 0.91). На практике это практически дубликаты. Таких документов немного - доли процента для больших коллекций документов.
Например, мы рассчитали среднее количество соседей, находящихся на расстоянии р (у, z) < 0.42, для коллекции из 100 000 документов - подмножества коллекции РОМИП BY.WEB. Среднее количество соседей составило 121, или 0.12% документов. Таким образом, мы показали, что условие отсечения далеких документов по неравенству треугольника обладает низкой селективностью.
3.3. Алгоритм расчета по прямому индексу документов. Самый простой и очевидный способ расчета ближайших соседей состоит в том, чтобы для каждого документа вычислить расстояния до других документов коллекции, используя таблицу «документ-слово-вес», упорядоченную по паре (doc_id, word_id). Из полученного вектора расстояний выбираются к документов с наибольшими значениями cos(x,y). Данный алгоритм можно записать в виде псевдокода:
1 Input: index D1, index D2
2 for doc_id1 in D1:
3 List dw1 := List of (word_id, weight) from D1 for doc_id1
4 Dist := Vector of |D2| floats
5 for doc_id2 in D2:
6 Dist[doc_id2] := 0
7 List dw2 := List of (word_id, weight) from D2 for
doc_id2
8 for (word_id1, weight1) in dp1:
9 for (word_id2, weight2) in dp2:
10 Dist[doc_id2] += weight1*weight2
Этот алгоритм легко реализовать на языке SQL в любой реляционной СУБД. Код на языке SQL для нахождения ближайших соседей для одного документа выглядит следующим образом:
SELECT i1.doc_id AS doc_id1, i2.doc_id AS doc_id2,
SUM(i1.weight*i2.weight) AS cos FROM doc_word_index i1, doc_word_index i2 WHERE i1.word_id=i2.word_id AND i1.doc_id=:INPUT_DOC_ID GROUP BY i1.doc_id, i2.doc_id ORDER BY cos DESC
Возможна более эффективная по сравнению с СУБД реализация данного алгоритма: во-первых, индекс «документ-слово-вес» можно хранить в сжатом виде,
с учетом избыточности повторения doc_id в соседних строках таблицы [6, 12]; во-вторых, при обработке сортированных списков (word_id, weight) для пар документов, необходимо использовать алгоритм слияния сортированных списков [12].
Асимптотическая сложность алгоритма - O {\D\2Avg_dl), где \D\ - количество документов в коллекции, Avg_dl - среднее количество слов в документе.
Алгоритм применяет прямой просмотр таблицы «документ-слово-вес» и поэтому может быть реализован без использования индексов, хранящихся в памяти (не требуются накладные расходы на операции seek). Поэтому минимальный требуемый объем оперативной памяти - O (max(Avg_dl)) - не зависит от размера коллекции. В то же время кэширование индексов в памяти, естественно, повышает скорость работы алгоритма.
Основными достоинствами данного алгоритма являются:
1) простота реализации;
2) возможность работы с большими индексами документов, которые не помещаются в оперативную память (используется линейный проход по индексу документов);
3) легкость распараллеливания вычислений (можно производить вычисления ближайших соседей независимо для разных документов).
Основной недостаток такого алгоритма - низкая скорость работы.
3.4. Алгоритм расчета с использованием поиска по инвертированному индексу. Более эффективный алгоритм вычисления ближайших соседей можно реализовать при помощи инвертированного индекса документов - отсортированного и сжатого списка троек (word_id, doc_id, weight). Инвертированные списки известны как наиболее эффективная структура данных для выполнения поиска документов по запросу [12].
Первым этапом работы алгоритма является построение инвертированного индекса для коллекции D2. Затем для каждого документа из коллекции Di производится поиск ближайших документов по коллекции D2. Для этого применяется алгоритм, аналогичный поиску документов по запросу пользователя [6], ив качестве запроса используется полный текст документа. В отличие от обычного поиска документов по запросу для данного алгоритма:
• используются очень длинные запросы, порядка нескольких сотен слов (это характерное количество уникальных слов в документе);
• необходим поиск документов с учетом неточного совпадения (не все слова запроса
встречаются в документе);
• элементам запроса присваивается вес, соответствующий нормализованному TF*IDF
весу слова в документе.
Данный алгоритм применяется, например, в системе кластеризации новостей Яндекс [13, 14]. К сожалению, указанные публикации не позволяют оценить скорость этого алгоритма.
Алгоритм допускает эффективное распараллеливание поиска двумя способами:
- распараллеливание по документам коллекции D2 ;
- поиск по нескольким индексам (распараллеливание по документам коллекции Di).
3.5. Алгоритм расчета с использованием двух инвертированных индексов и MapReduce. В статье [5] описан метод вычисления полной матрицы близости документов, в котором применяются инвертированный индекс документов и метод распараллеливания MapReduce [15] в варианте Hadoop [16].
В [5] решается задача расчета полной матрицы близости между всеми документами коллекции, однако данный алгоритм легко адаптировать для рассматриваемого несимметричного случая поиска ближайших соседей.
Алгоритм [5] состоит из следующих этапов:
1) построение инвертированного индекса с нормализованными весами слов;
2) усечение индекса выкидыванием наиболее часто встречающихся слов;
3) для всех слов коллекции:
3.1) для всех пар документов (word_id, doc_id1, weightl) и (word_id, doc_id2, weight2) выдать тройку (doc_id1, doc_id2, weight1*weight2) - операция MAP,
3.2) отсортировать тройки (doc_id1, doc_id2, w) по полям (doc_id1, doc_id2),
3.3) вычислить сумму w для каждой пары (doc_id1, doc_id2) - операция REDUCE; в результате получаем искомый результат - список троек (doc_id1, doc_id2, distance).
Алгоритм реализован на языке Java, операции по распараллеливанию вычислений и распределенная сортировка данных и суммирование на шагах 3.2-3.3 выполняются средой выполнения MapReduce - программ Hadoop. Среда выполнения также берет на себя управление памятью.
Отметим, что распределенная сортировка данных и суммирование на шагах 3.2-3.3 требуют интенсивной коммуникации между узлами сети: даже при распараллеливании на два компьютера потребуется передать по сети как минимум половину полной матрицы близости между документами, т. е. O ^|-D|2^ троек (doc_id1, doc_id2, w).
Существенным шагом, позволяющим радикально упростить задачу и ускорить вычисление, является усечение индекса на шаге 2. Авторы [5] использовали стратегию усечения 1% наиболее часто встречающихся слов. Для коллекции 906 000 новостей, применяемых для тестирования, это составляет 9093 слова. Усечение словаря дало возможность сократить количество пар весов, вычисляемых на шаге 4 с 8 • 1012 до 4 • 109 - в 2000 раз. Соответственно возрастает и скорость работы алгоритма.
В [5] приведены следующие данные о скорости работы алгоритма:
• коллекция документов - новостные сообщения AQUAINT-2 на английском языке [17], 906 000 документов общим объемом 2.5 Гб (т. е. около 3 кб на документ);
• количество различных слов в коллекции (без усечения слов) - 909 326;
• использование кластера из 20 компьютеров, 2.4GHz CPU, 4GB RAM;
• время вычисления матрицы близости для усеченного индекса составило 2 ч, из них
3.5 мин - на построение инвертированного индекса;
• таким образом, общее время работы для усеченного индекса - 2-20 = 40 ч машинного
времени.
Авторы статьи [5] не произвели оценку влияния усечения индекса на качество результата. В то же время «честный» расчет похожих документов таким способом вряд ли возможен, так как при увеличении количества троек (doc_id1, doc_id2, w) в 2000 раз время работы алгоритма выросло бы пропорционально и стало бы неприемлемо большим.
4. Алгоритм расчета с использованием инвертированного индекса. Предлагаемый нами алгоритм, подобно [14, 5], использует инвертированные индексы для коллекций документов, но при этом применяется более эффективная организация вычисления ближайших соседей одновременно для множества документов:
1) пусть \\ = М, \В2 \ = N; в памяти создается матрица расстояний между М х N документами, изначально инициализированная нулями;
2) для слова word_id в память загружаются соответствующие фрагменты инвертированных списков из и В2';
3) далее для каждой пары документов (31, ¿2) из этих фрагментов произведение весов добавляется в матрицу расстояний;
4) затем для каждой строки матрицы расстояний вычисляется к элементов с наибольшим весом.
Этот алгоритм можно записать в виде псевдокода:
1 Input: inverted index D1, inverted index D2
2 Dist := Matrix[M*N]
3 for word_id in D1:
4 List dp1 := List of (doc_id, weight) from D1 for word_id
5 List dp2 := List of (doc_id, weight) from D2 for word_id
6 for (doc_id1, weight1) in dp1:
7 for (doc_id2, weight2) in dp2:
8 Dist[doc_id1][doc_id2] += weight1*weight2
Для больших коллекций расчет ближайших соседей необходимо производить, разбив матрицу M x N документов на полосы размером m x N так, чтобы в оперативную память помещались матрица m x N и соответствующие фрагменты инвертированного индекса для каждого из слов коллекции.
Асимптотическая сложность данного алгоритма - O ^|D|2 • Avg_wi^, где \D\ - количество документов в коллекции, Avg_wi - среднее количество документов для одного слова. Асимптотическая сложность этого алгоритма равна общему количеству операций сложения и умножения элементов матриц весов документов и совпадает с асимптотической сложностью метода, использующего прямой индекс «документ-слово-вес», однако практическая скорость самого алгоритма на несколько порядков выше за счет эффективного использования архитектуры современных процессоров:
• Основной объем вычислений приходится на обработку наиболее частотных слов на простых операциях умножения декартова произведения двух векторов (строки 6-8 алгоритма), что позволяет эффективно работать алгоритму предсказания переходов, реализованному в современных процессорах. В то же время алгоритм расчета по прямому индексу документов выполняет обработку наиболее частотных слов в рамках менее эффективной операции слияния сортированных списков.
• Обрабатываемые данные компактно располагаются в памяти, что дает возможность эффективно использовать кэш современных процессоров.
4-1- Распараллеливание по полосам. Алгоритм расчета с помощью инвертированного индекса легко поддается распараллеливанию на кластерной архитектуре. Наиболее вычислительно сложная часть алгоритма содержит независимые вычислительные блоки, связанные с расчетом ближайших соседей для отдельной полосы m x N документов, поэтому естественным способом распараллеливания является разделение по полосам.
Каждому узлу кластера выделяется задание, состоящее из:
• инвертированного индекса коллекции D2 по N документам;
• прямого индекса документов по коллекции Di;
• интервала документов из коллекции Di, для которых необходимо вычислить к ближайших соседей.
При выполнении задания интервал документов разбивается на полосы шириной не более m, затем для каждой полосы строится инвертированный индекс и производится вычисление соседей.
Общее время выполнения параллельного алгоритма состоит из:
1) времени построения инвертированного индекса документов (на одном компьютере) ;
2) времени копирования индексов на узлы кластера;
3) времени параллельного расчета ближайших соседей по полосам;
4) времени объединения результатов.
В п. 5 мы покажем, что на практике время выполнения последовательных операций (шаги 1, 2 и 4) для коллекции из 1.5 млн документов составляет 0.4% общего времени работы алгоритма, и, таким образом, на такой коллекции алгоритм допускает эффективное распараллеливание приблизительно до 100 компьютеров.
При увеличении размера коллекции время построения инвертированного индекса и размер индекса растут как O(\D\ log \D|) от количества документов, а время расчета
ближайших соседей - как O ^|D\2 • Avg_wi^, поэтому процент времени, затрачиваемый
на последовательные операции, будет снижаться обратно пропорционально размеру коллекции и соответственно будет улучшаться масштабируемость алгоритма.
Отметим, что этап построения инвертированного индекса допускает эффективное распараллеливание. Алгоритм параллельного построения инвертированного индекса на основе технологии Hadoop MapReduce описан в [5].
4.2. Оценка максимального размера полосы. Оценим максимальный размер полосы m, доступный для вычисления на компьютере, имеющем H Гб оперативной памяти. Предположим, что для матрицы расстояний можно выделить h = 0.8H Гб (остальная память используется для фрагментов индекса и среды исполнения программы).
Пусть ячейка матрицы (накопитель расстояния) имеет размер 4 байта (float).
Тогда
h • 109 ^
то = ------. (4)
4-N V ’
Размер инвертированного индекса зависит от суммарного объема документов коллекции. Использование алгоритмов сжатия инвертированного индекса [12] позволяет добиться сжатия индекса до 10-40% от исходного размера текстовых файлов. Предположим, размер индекса составляет 1 кб на документ. Общий объем данных, которые необходимо прочитать из индекса, равен размеру индекса, умноженному на количество полос (в предположении, что индекс не помещается в память, и его необходимо читать при каждом проходе).
Пусть h = 1.6 Гб. Оценка размера полосы m (по формуле (4)) и размера инвертированного индекса для коллекций различного размера приведена в табл. 1.
Таким образом, для коллекций размера до 1 000 000 документов, с одной стороны, размер полосы m достаточно велик, что позволяет за один проход по индексу решать задачу для большого количества документов, а с другой - размер индекса достаточно мал (весь или почти весь индекс можно поместить в оперативной памяти), и общий объем чтения индекса является приемлемым.
Таблица 1. Оценка размера и количества полос в зависимости от размера коллекции документов при размере матрицы 1.6 Гб
Размер коллекции документов, N Размер полосы в документах, т Количество полос Размер индекса Объем чтения индекса
10 ООО 10 000 1 10 Mb 10 Mb
100 ООО 4 000 25 100 Mb 2.5 Gb
1 ООО ООО 400 2 500 1 000 Mb 2.5 Tb
10 ООО ООО 40 250 000 10 000 Mb 2 500 Tb
100 ООО ООО 4 25 000 000 100 000 Mb 2 500 000 Tb
400 ООО ООО 1 400 000 000 400 000 Mb 160 000 000 Tb
Для коллекций размером 10 000 000 документов и более квадратичный характер асимптотической сложности алгоритма делает задачу трудно решаемой на обычных компьютерах. Данный метод плохо применим из-за огромного объема данных, которые необходимо прочитать при большом количестве итераций.
В предельном случае очень большой коллекции в оперативную память помещается лишь полоса документов ширины 1 (матрица 1 х N), и в этом случае алгоритм эквивалентен алгоритму расчета с использованием поиска по инвертированному индексу.
5. Экспериментальная оценка эффективности алгоритмов расчета ближайших соседей. Были реализованы следующие алгоритмы поиска похожих документов:
1) базовый алгоритм на основе SQL, с использованием СУБД Огас1е 9 ;
2) алгоритм расчета с использованием инвертированного индекса, с применением распараллеливания по полосам (будем называть его INVMUL);
3) метод усечения инвертированного списка документов, описанный в [5].
Для тестирования скорости работы алгоритма применялась коллекция документов РОМИП BY.WEB [18], представляющая собой 1.5 млн документов, собранных с русскоязычных сайтов белорусского Интернета (домены *.Ьу), и подмножества данной коллекции (выбранные в порядке следования документов в дистрибутиве коллекции) BY.WEB_10k и BY.WEB_100k, состоящие из 10 000 и 100 000 документов соответственно.
Таблица 2. Характеристики различных коллекций
Коллекция Количество документов Общий объем Средний размер документа Количество различных слов Размер инв. индекса
BY.WEB [18] AQUAINT-2 [17] BY.WEB 100k BY.WEB 10k 1 524 676 906 000 100 000 10 000 7.3 Gb 2.5 Gb 477 Mb 51 Mb 4.8 Kb 3 Kb 4.8 Kb 5.1 Kb 3 377 564 909 326 726 889 136 063 2.8 Gb 193 Mb 18 Mb
В табл. 2 собраны характеристики используемой нами коллекции по сравнению с коллекцией AQUAINT-2, тестированной в статье [5]. Для коллекции BY.WEB приведены размеры текстовых файлов, полученных из исходных HTML очисткой тегов и другой неотображаемой информации. Из таблицы видно, что количество документов коллекции BY.WEB в 1.7 раз больше, чем в коллекции AQUAINT-2, и документы BY.WEB
*) Применялся оптимизированный план выполнения Oracle SQL с использованием прямых индексов по документам на основе index organized tables и метода объединения таблиц HASH JOIN.
больше, чем документы AQUAINT-2. 'Учитывая асимптотическую зависимость времени вычисления ближайших соседей O ^|D|2 • Avg_wi^, можно оценить сравнительную сложность поиска похожих документов по коллекции BY.WEB как примерно в 3 раза большую, чем AQUAINT-2.
Для вычислений использовали четыре компьютера 3 GHz CPU, 2 Gb RAM. Для каждого документа производилось вычисление 100 наиболее близких документов. Время работы различных алгоритмов представлено в табл. 3.
В столбце «Послед. операции, %» приводится оценка доли времени, затраченного на операции, выполняемые в последовательном режиме для алгоритма распараллеливания по полосам. Время последовательных операций состоит из фактического времени построения инвертированного индекса плюс оценки времени на копирование индекса на разные компьютеры в предположении, что скорость копирования по сети составляет
2 Мб/с.
Таблица 3. Время работы различных алгоритмов для вычисления матрицы ближайших соседей, в компьютеро-часах (INVMUL = основной алгоритм, описанный в п. 4)
Коллекция Алгоритм Общее время выполнения Послед, операции, % Среднее время на документ, с
BY.WEB 1.5 • 106 документов шумиь, без усечения слов 640 ч (7 суток на 4 компьютерах) 0.42 1.5
шумиь, отсечение 0.1% 38 ч 2.8 0.09
шумиь, отсечение 1% 10 ч 24 0.024
BY.WEB_100k 10Б документов шумиь, без усечения слов 2 ч 3.8 0.076
BY.WEB_10k 104 документов шумиь, без усечения слов 75 с 37 0.007
Огасіе 2778 с 0.28
Можно сопоставить скорость работы предложенного нами алгоритма INVMUL с использованием стратегии отсечения 1% наиболее частых слов и алгоритма [5], основанного на перемножении инвертированных индексов с помощью Hadoop MapReduce. Получим 10 компьютеро-часов для INVMUL на BY.WEB против 40 компьютеро-часов Hadoop MapReduce на AQUAINT-2. Учитывая сравнительную оценку сложности коллекции AQUAINT-2 как приблизительно в 3 раза меньшую, чем BY.WEB, можно сделать вывод, что разработанный нами алгоритм примерно в 12 раз эффективнее алгоритма [5].
При сопоставлении скорости работы алгоритма INVMUL с простым решением на основе SQL видно, что она примерно в 37 раз выше даже на очень маленькой коллекции документов. Попытки применить SQL для коллекций большего размера показали, что соотношение эффективности возрастает при увеличении размера коллекции. Для коллекций из нескольких сот тысяч документов SQL не применим.
5.1. Оценка влияния усечения индекса на результаты поиска похожих документов. Стратегия усечения наиболее часто используемых слов из индекса, предложенная в статье [5], весьма сомнительна, с точки зрения влияния на качество получаемого результата. Рассмотрим результаты отсечения на коллекции BY.WEB.
Отсечение 1% наиболее частотных слов составляет 33 000 слов, в которые попадает большинство общезначимых слов языка. В индексе остаются лишь слова, имеющие частотность не более 550 документов из 1.5 млн, т. е. встречающиеся реже, чем в 0.04% документов. Поиск близких документов по таким признакам не имеет практического смысла.
Даже при использовании отсечения по порогу 0.1% получаем отсечение 3300 наиболее частотных слов. В индексе остаются лишь слова, имеющие частотность не более 13 329 документов, встречающиеся реже, чем в 1% документов. Отсекаются, например, такие тематически значимые слова как МИНСК, БЕЛАРУСЬ, РОССИЯ, МОСКВА, РУБЛЬ, ТЕЛЕФОН, ПРАВИТЕЛЬСТВО, ИНТЕРНЕТ-СПРАВОЧНИК, ФЕН, ПЛЯЖ, ЗОЛОТО, КОНТРАКТ, ПОЕЗД, АВТОШКОЛА, ТРЕНЕР, СЫРЬЕ и др.
Поэтому, по нашему мнению, данная стратегия не применима для использования результатов поиска похожих документов на практике.
6. Заключение. Были рассмотрены различные алгоритмы для вычисления матрицы наиболее близких соседей в больших коллекциях документов, при использовании стандартного векторного представления документов с TF^DF-весами слов, и получены следующие основные результаты:
1) предложен алгоритм полного попарного расчета матрицы ближайших соседей, применимый на практике для коллекций размером порядка 1 млн документов;
2) реализованный алгоритм опробован на коллекции BY.WEB, состоящей из 1.5 млн документов, время работы составило 7 суток на четырех обычных компьютерах, что примерно в 12 раз эффективнее, чем алгоритм Hadoop-MapReduce [5].
Несмотря на достигнутый прогресс, практически важная задача расчета матрицы близости для коллекций существенно большего размера - от 10-100 млн документов и более - требует разработки новых методов решения.
Литература
1. Joachims T. Text Categorization with Support Vector Machines: Learning with Many
Relevant Features // Proc. of ECML-98. 10th European Conference on Machine Learning. 1998. URL: http://www.cs.cornell.edu/people/tj/publications/joachims_98a.ps.gz.
2. Yang Y., Liu X. A re-examination of text categorization methods // Proc. of SIGIR-99. 22nd ACM Intern. Conference on Research and Development in Information Retrieval / eds: M. A. Hearst, F. Gey, R. Tong. New York, Berkeley: ACM Press, 1999. P. 42-49.
3. Агеев М. С., Добров Б. В., Лукашевич Н. В. Автоматическая рубрикация текстов: методы и проблемы // Учен. зап. Казанск. гос. ун-та. Сер. Физико-математические науки. 2008. Т. 150, кн. 4. С. 25-40.
4. Агеев М. С., Добров Б. В., Лукашевич Н. В. и др. Классификация запросов и оптимизация факторов для поиска нормативных документов // Рос. семинар по оценке методов информационного поиска: Труды Р0МИП’2009: cеминар в рамках Всерос. науч. конференции RCDL’2009. 16 сентября 2009 г. Петрозаводск; Санкт-Петербург: НУ ЦСИ, 2009. С. 151-162.
5. Elsayed T., Lin J., Oard D. W. Pairwise document similarity in large collections with Map-Reduce // Proc. of the 46th Annual Meeting of the Association for Computational Linguistics on Human Language Technologies: Short papers (Columbus, Ohio, June 16-17, 2008). Human Language Technology Conference. Association for Computational Linguistics. Morristown, NJ, 2008. P. 265-268.
6. Manning C. D., Raghavan P., Schutze H. Introduction to Information Retrieval. Cambridge, 2008. URL: http://nlp.stanford.edu/IR-book/information-retrieval-book.html.
7. Агеев М. С., Добров Б. В., Лукашевич Н. В., Сидоров А. В. Экспериментальные алгоритмы поиска/классификации и сравнение с «basic line» // Рос. семинар по оценке методов информационного поиска: Труды второго рос. семинара Р0МИП’2004 (Пущино, 01.10.2004). СПб.: Науч.-исслед. ин-т химии С.-Петерб. ун-та, 2004. С. 62-89.
8. Зеленков Ю., Сегалович И. Сравнительный анализ методов определения нечетких дубликатов для Web-документов // Девятая Всерос. науч. конференция RCDL’2007 «Электронные
библиотеки: Перспективные Методы и Технологии, Электронные коллекции». Переславль-Залесский, 2007. URL: http://rcdl.ru/doc/2007/paper_65_v1.pdf.
9. Ilyinsky S., Kuzmin M., Melkov A., Segalovich I. An efficient method to detect duplicates of Web documents with the use of inverted index // WWW-2002 — Eleventh Intern. World Wide Web Conference. URL: http://www2002.org/CDR0M/poster/187/.
10. Butakov S., Scherbinin V. The toolbox for local and global plagiarism detection // Comput. Educ. 2009. Vol. 52, N 4. P. 781-788. URL: http://dx.doi.org/10.1016/j.compedu.2008.12.001.
11. Lifshits Y. Algorithms for Nearest Neighbor Search // Tutorial at RuSSIR’07. Ekaterinburg, September 2007. URL: http://simsearch.yury.name/tutorial.html.
12. Zobel J., Moffat A. Inverted files for text search engines // ACM Comput. Surv. 2006. Vol. 38, N 2. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.105.8844rep=rep1type=pdf.
13. Сегалович И., Маслов М. Яндекс на Р0МИП-2004. Некоторые аспекты полнотекстового поиска и ранжирования в Яндекс // Рос. семинар по оценке методов информационного поиска: Труды второго рос. семинара РОМИП’2004 (Пущино, 01.10.2004). СПб.: Науч.-исслед. ин-т химии С.-Петерб. ун-та, 2004. С. 100-109.
14. Как работают новые Яндекс.Новости // Яндекс. 2003. URL: http://company.yandex.ru/public/ articles/smi-mirror.xml.
15. Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // Proc. of the 6th conference on Symposium on Opearting Systems Design & Implementation. San Francisco, CA. December 06-08, 2004. P. 10-12.
16. Apache Hadoop. URL: http://hadoop.apache.org/.
17. AQUAINT-2 Information-Retrieval Text Research Collection. URL: http://www.ldc.upenn.edu/ Catalog/CatalogEntry.jsp?catalogId=LDC2008T25.
18. Веб коллекция BY.web. 2007. URL: http://romip.ru/ru/collections/by.web-2007.html.
Статья рекомендована к печати проф. В. Ю. Добрыниным.
Статья принята к печати 10 марта 2011 г.