Оглавление 1
Перечень условных обозначений, символов, единиц, сокращений и
терминов 3
Введение 5
Глава 1 7
1.2 Постановка требований 9
1.3 Обзор программных систем существующих на рынке 9
Глава 2 11
2.1 Проектирование архитектуры 11
2.2 Формат сообщений 12
2.3 Формат общения между модулями 12
2.4 Организация работы 12
2.5 Выбор технологии 13
Глава 3. Реализация 15
3.1 Реализация поискового робота 15
3.1.1 Организация проекта 15
3.1.2 Использование JRuby 15
3.1.3 MainCrawler 15
3.1.4 ThreadCrawlBody 17
3.1.5 HtmlParser 17
3.1.6 StorageManager 18
3.1.7 Производительность 19
3.1.8 Механика сбора интернет страниц 21
3.2 Реализация полнотекстового поиска 21
3.2.1 Организация проекта 21
3.2.2 Операция MapReduce 22
3.2.3 Полнотекстовый поиск средствами MongoDB 23
3.2.4 Изучение способов улучшение производительности 24
3.2.5 Интеграция найденного решения с MongoDB 24
3.3 Реализация ранжирующей системы 25
3.3.1 Исследование и организация архитектуры ранжирования 25
3.3.2 Learner 30
3.3.3 RankSVM 32
3.4 Реализация сервера 33
3.4.1 Организация проекта 33
3.4.2 Реализация 36
3.4.3 SearcnEngineSystem 36
3.4.4 Coincidence 37
3.4.5 Структура 38
Выводы 39
Заключение 40
Список использованных литературных источников 42
Приложения 43
Листинг 43
Поисковый робот 43
Скрипт подключение поисковой системы Sphinx к MongoDB 50
Модуль сервер и ранжирующая система
Поиск документов является одной из важных задач в сфере IT. Об этом говорит постоянное развитие поисковых систем: ведутся работы над улучшением алгоритмов, персонализацией поисковой выдачи и пр. В отличие от поиска по базе данных, где результатом являются записи, удовлетворяющие некоторому условию, поиск в поисковой системе накладывает дополнительные требования к выдаче результата. Ранжирование - процесс сортировки документов по качеству информаций в них. Раньше для решения проблемы ранжирования использовались различные количественные оценки документа: частота слов, удовлетворяющих запросу, обратная частота и пр. Но с ростом числа документов такие способы решения проблем стали неэффективны. Все чаще для ранжирования и персонализации выдачи используются различные алгоритмы машинного обучения и нейронные сети. В таких системах документ представляет из себя объект с некоторыми атрибутами и их весами. В процессе выдачи производятся операции над коллекцией таких документов. Результатом служит коллекция, где все документы будут отсортированы по релевантности.
Актуальность и практическая значимость дипломной работы заключается в том, что изучение влияния искусственных нейронных сетей на результаты ранжирования позволит понять, насколько качественно можно изменить процесс выдачи релевантных данных и насколько данная обработка является необходимой.
Цель данной дипломной работы - построить качественную модель документа, исследовать методы машинного обучения и нейронных сетей и применить их на задаче ранжирования в информационно-поисковой системе.
Объектом исследования в данной работе является система информационно-поисковой выдачи.
Для разработки программного средства необходимо решить следующие задачи:
• Провести анализ предметной области.
• Изучить аналоги программного средства.
• Разработать архитектуру программного обеспечения.
• Изучить и реализовать алгоритмы программного средства.
Для выполнения поставленной цели необходимо выполнить следующие этапы работы:
• Исследовать процесс ранжирования и персонализации поисковой выдачи в поисковых системах.
• Собрать большую коллекцию документов для ранжирования.
• Обеспечить быструю выдачу документов, удовлетворяющих запросу пользователя.
• Построить модель документа и реализовать алгоритм машинного обучения применительно к задачам ранжирования.
• Разработать архитектуру собственной поисковой системы, использующей реализованный алгоритм обучения.
• Выбрать необходимые технологии и средства для решения поставленных целей.
• Организовать рабочий процесс для решения поставленных задач.
Результатом данной выпускной квалификационной работы является прототип поисковой системы, ранжирующая документы с помощью машинного обучения, однако без использования нейронных сетей.
В первой главе проведен анализ предметной области, произведена постановка требований. Также выделены проблемы, решаемые с помощью реализованной системы:
• Описание влияния повторной оценки и повторного ранжирования с помощью нейронных сетей: насколько данный подход является эффективным и затратным.
В рамках данной работы описан процесс реализации поисковой машины, ранжирующей достаточно большую коллекцию документов. Описаны основные требования к разработанному программному обеспечению.
Во второй главе приведено описание выбранной архитектуры для разработки системы:
• Обоснование выбора используемой архитектуры
• Описание выбранных форматов сообщений от сервера
• Описание и оценка выбранных технологий для решения поставленных задач.
В третьей главе приведено описание непосредственной реализации поискового робота, индексирующей системы и серверной части системы:
• Описаны основные модули системы и их структура.
• Показаны тонкости взаимодействия компонентов
• Приведено описание используемых при разработке программных средств.
• Проиллюстрированы диаграммы важнейших классов системы Возможности системы и решенные задачи:
• Произведен анализ предметной области.
• Использование ранжирующей системы в качестве компоненты сервера - позволяет произвести развертывание на любом интернет хостинге либо виртуальном сервере.
• Собрана достаточно большая коллекция документов для ранжирования, включающая в себя около 300 000 документов.
• Поисковый робот способен собирать большое число документов в сети интернет за минимально возможное время (300 000 документов за 3 часа)
• Сервер отвечает на поисковый запрос в среднем 3-5 секунд, что при текущей конфигурации системы является приемлемым.
• Система применяет методы машинного обучения для ранжирования коллекции
• Модель ранжируемых документов содержит достаточное количество атрибутов, позволяющих говорить о качестве документа.
• Система не использует нейронные сети для улучшения ранжирования: практическая реализация данного функционала осталось не реализована по причине недостатка времени. Однако была подготовлена теоретическая база и данные для ее реализации в дальнейшем.
• Система имеет удобный графический интерфейс
1. Информационный поиск [Электронный ресурс]. Точка доступа: https://www.searchengines.ru/004603.html
2. Неструктурированные данные [Электронный ресурс]. Точка доступа:http://www. math.spbu. ru/user/boris novikov/courses/mtim3/5 -semistructured.pdf
3. Инвертированный индекс [Электронный ресурс]. Точка доступа: https: //xlinux.nist. gov/dads/HTML/invertedIndex.html
4. Обучение ранжированию [Электронный ресурс]. Точка доступа: http://www.machinelearning.org/proceedings/icml2007/papers/139.pdf
5. Д. Блэк - The Well-Grounded Rubyist, 2009. - 536 с
6. А. Аксенов - Introduction to Search with Sphinx, 2011. - 148 c.
7. А. Видела, Д. Уильямс- RabbitMQ in Action: Distributed Messaging for Everyone, 2010. - 312 c.
8. А.Мюллер, С.Гвидо - Введение в машинное обучение с помощью Python. Руководство для специалистов по работе с данными, 2017. - 480 с.
9. Б. Любанович - Простой Python, 2016. - 480 с.
10. В.В. Глазкова - исследование и разработка методов построения программных средств классификации многотемных гипертекстовых документов, 2008. - 103 с.
11. Л. П. Коэльо, В. Ричард - Построение систем машинного обучения на языке Python, 2016. - 302 с.
12. К. Секвин - The Little MongoDB Book, 2011. - 10 с.