Распределенная реализация построения индекса поискового каталога

Информационные технологии Вестник Нижегородского университета им. Н.И. Лобачевского, 2011, № 1, с. 201-204

УДК 025.4.03; 002.53:004.65

РАСПРЕДЕЛЕННАЯ РЕАЛИЗАЦИЯ ПОСТРОЕНИЯ ИНДЕКСА ПОИСКОВОГО КАТАЛОГА

© 2011 г. Ф.В. Борисюк

Нижегородский госуниверситет им. Н.И. Лобачевского

fedorvb@gmail.com

Поступила в редакцию 21.11.2010

Рассматривается задача построения индекса текстовой коллекции документов поискового каталога с использованием платформы для распределенных вычислений Apache Hadoop. Основное внимание уделяется применению парадигмы MapReduce к решению поставленной задачи. Приводятся результаты вычислительных экспериментов.

Ключевые слова: индексирование, поисковый каталог.

Введение

Индексирование текстовой коллекции документов в поисковых системах представляет собой процесс добавления сведений о документах в поисковую базу данных [1]. При построении индекса из документа выделяется набор наиболее значимых слов (ключевых слов). Поисковый индекс используется для увеличения скорости и быстродействия при поиске релевантных документов по коллекции текстовых документов.

Рассматриваемая в данной статье задача построения индекса текстовой коллекции возникла при реализации системы поискового каталога, который подробно описан в [2]. При проведении вычислительных экспериментов [2] было обнаружено, что значительные вычислительные затраты требуются на этапе подготовки исходных данных для алгоритма кластеризации, когда каждый документ представляется в виде вектора ключевых слов (индексирование текстовой коллекции документов). Поэтому для сокращения времени построения индекса текстовой коллекции в данной работе было решено применить вычислительную парадигму MapReduce [3], реализованную на платформе для распределенных вычислений Apache Hadoop [4].

Предлагаемый подход к построению индекса текстовой коллекции

В рассматриваемой работе образом каждого документа в индексе является вектор пар <слово, вес слова по отношению к документу>. Множество ключевых слов представляет собой

пространство признаков. Для уменьшения пространства признаков из документов исключаются стоп-слова (слова, которые обычно не используются для поиска, например союзы и предлоги). Для оценки веса слова в документе использовалась формула TF-IDF [5], которая рассматривает, насколько часто слово встречается в данном документе при учете встречаемости в других документах. Наконец, слова с наиболее высоким весом по отношению к документу выбираются для представления этого документа. Таким образом, следующий алгоритм используется для извлечения ключевых слов из документов:

1) Для всех слов документа извлекается основа слова с использованием алгоритма Портера [6]. Подсчитывается TFt частота встречаемости основы слова tг- в документе D.

2) Стоп-слова удаляются из списка извлеченных основ слов.

3) Удаляются слова, которые имеют частоту встречаемости в коллекции более предопределенной максимальной частоты или менее предопределенной минимальной частоты.

4) Вес каждой основы слова tг- в документе D рассчитывается с использованием формул TF-IDF (1), и если ввести обозначения IDF (inversed document frequency) - обратная частота встречаемости основы tг- в документах коллекции, N — общее количество документов коллекции, DNj _ количество документов, содержащее основу tb то имеем следующие формулы для вычисления веса основы слова:

IDF {ti ) = log2

(

1 +

N

Л

DN {ti)

Рис. 1. Схема вычислений MapReduce

Becсft)- .

VI у Nfy ^ Ь Г

Распределенное построение индекса

Для проведения распределенных вычислений в данной работе используется программная модель MapReduce, предложенная компанией Google. Концепция MapReduce состоит в том, что производимые вычисления разбиваются на функции Map и Reduce. Функция Map трансформирует входные данные в промежуточный список пар ключ/значение. Reduce-функция берет список пар ключ/значение, который генерирует Map, и свертывает его по ключу (только одна пара ключ/значение для каждого ключа).

Алгоритм построения образов текстовых документов представлен в виде двух шагов. На первом шаге происходит построение вектора DF (встречаемости слов в документах коллекции), который состоит из записей <основа слова, количество документов, содержащее данную основу>: в функции Map производится подсчет уникальных вхождений основ слов в рассматриваемый документ, в функции Reduce аккумулируются результаты подсчетов для каждой основы слова по всей коллекции документов. На втором шаге происходит формирование образов текстовых документов:

Входные данные Документы в текстовом формате

Map Построить вектор частот встречаемости основ слов документа

Reduce Из построенного на шаге Map вектора основ слов рассчитать вес каждой основы слова, отбросить стоп-слова и слова, частота которых в коллекции не входит в заданные пределы. В качестве результата (образ документа) построить вектор основ слов, имеющих наибольший вес

Схема параллельных вычислений Для проведения вычислительных экспериментов была выбрана платформа для распреде-

ленных вычислений Apache Hadoop, реализующая программную модель MapReduce. Для хранения данных, которые необходимо обработать, в Hadoop используется распределенная файловая система (Hadoop Distributed File System, HDFS), при записи в которую данные распределяются по вычислительным узлам сети. В реализации MapReduce от Hadoop процесс JobTracker на одном из узлов играет роль планировщика задач и распределителя кластера. Он распределяет задачи по TaskTrackerW каждого узла кластера. JobTracker - это ведущий сервер MapReduce, а TaskTracker'bi - это ведомые узлы MapReduce. Таким образом, при запуске задачи, реализованной с использованием парадигмы MapReduce, на кластере Hadoop ее выполнение автоматически распределяется по вычислительным узлам сети. Map-процессы запускаются над подмножествами исходных данных и выполняются независимо друг от друга. Reduce-процессы обрабатывают результаты Map-фазы, разбивая их по значениям ключей на непересе-кающиеся блоки, что также позволяет выполнять их независимо.

Таким образом, каждая из фаз может обрабатываться на любом количестве узлов параллельно. На рис. 1 изображена схема вычислений MapReduce.

Результаты экспериментов, масштабируемость алгоритма

Результаты вычислительных экспериментов были получены при использовании следующего программного и аппаратного обеспечения:

• Intel Core(TM) 2 Duo CPU T2310 1.46 ГГц, 2 Гб оперативной памяти;

• AMD Turion(TM) Mobile technology TL-56 1.8 ГГц, 2 Гб оперативной памяти;

• Intel  Core™ i3 CPU M330 2.13 ГГц, 4 Гб оперативной памяти;

• Беспроводная сеть 54 Mbps;

• Microsoft Windows XP;

• Apache Hadoop 20.1 [4].

12 4 6

Количество процессорных ядер

Время индексирования коллекции размером 1 ГБ

'Время индексирования коллекции размером 250 МБ

Время индексирования коллекции размером 50 М&

Рис. 2. Зависимость времени работы индексирования текстовой коллекции от количества задействованных в вычислениях процессорных ядер

Вычислительные эксперименты проводились на текстовой коллекции документов размером 1 Гб (коллекция статей журнала «Вестник ННГУ им. Н.И. Лобачевского»). Применение вычислительной парадигмы MapReduce, реализованной в Apache Hadoop, на двух процессорных ядрах позволило ускорить процесс индексирования примерно в 1.2 раза. Масштабирование на шесть процессорных ядер дало увеличение производительности в 2.47 раза. Также были проведены вычислительные эксперименты на меньших объемах текстовых данных. На рис. 2 приведены результаты вычислительных экспериментов для индексирования текстовых коллекций размером 1 ГБ, 250 МБ и 50 МБ. Отметим, что время вычислений и эффект, получаемый от количества задействованных в вычислениях процессорных ядер, зависят от объема данных, который необходимо обработать. При уменьшении объема данных (из-за накладных расходов, связанных с распределенными вычислениями) наблюдается уменьшение эффекта ускорения, получаемого от увеличения объема вычислительных ресурсов.

Из проведенных экспериментов следует, что подобное распараллеливание теоретически может привести к линейному ускорению при увеличении количества вычислительных узлов. При этом распараллеливание дает максимальный эффект при обработке больших объемов данных. Это объясняется тем, что каждая из фаз MapReduce запускается над подмножествами исходных данных, что позволяет выполнять обработку данных на любом количестве узлов параллельно.

Выводы

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

Список литературы

1. Arasu A., Cho J., Garcia-Molina H. et al. Searching the Web // ACM Transactions on Internet Technology (TOIT). 2001. V. 1. P. 2 - 43.

2. Borisyuk F., Shvetsov V. Adaptation of Hierarchical Clustering by Areas for Automatic Construction of Electronic Catalogue // Proceedings of the 4th Spring/Summer Young Researchers’ Colloquium on Software Engineering. 2010. P. 141-145.

3. Dean J., Ghemawat S. MapReduce: Simplified Data Processing on Large Clusters // Communications of the ACM. 2008. V. 51. P. 107-113.

4. Официальная Веб-страница проекта Apache Hadoop [Электронный ресурс]. - Электрон. дан. -Режим доступа: http://hadoop.apache.org/, свободный.

5. Kelleher D., Luz S. Automatic Hypertext Keyphrase Detection // Proceedings of the Nineteenth International Joint Conference on Artificial Intelligence. Edinburgh, Scotland, UK. 2005. P. 1608-1610.

6. Алгоритм выделения псевдооснов Мартина Портера [Электронный ресурс]. - Электрон. дан. -Режим доступа: http://snowball.sourceforge.net, свободный.

DISTRIBUTED IMPLEMENTATION OF INDEX CONSTRUCTION OF SEARCH CATALOGUE

F. V. Borisyuk

The problem of constructing an index of a text document collection for a search catalog using the Apache Hadoop distributed computing platform is considered. Primary emphasis is focused on the use of the MapReduce paradigm to solve the problem. The results of computing experiments are presented.

Keywords: indexing, search catalogue.