Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования

advertisement
Правительство Российской Федерации
Федеральное государственное автономное образовательное
учреждение высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"
Отделение программной инженерии
Кафедра Управления разработкой программного обеспечения
УТВЕРЖДАЮ
Зав. кафедрой УРПО
________________ С.М. Авдошин
«__» _______________ 20__ г.
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
по направлению 231000.62 Программная инженерия
подготовки бакалавра
На тему: “Мультиагентная система для анализа интересов
и предоставления рекомендаций пользователям
сети ʺВКонтактеʺ ”
Студента группы № 471 ПИ
_____________
подпись
Авхадеева Булата Ринатовича
(ФИО)
_________________
(Дата)
Научный руководитель
д. ф. – м.н., проф.
(должность, звание)
_____________
подпись
Воронова Лилия Ивановна
(ФИО)
_________________
(Дата)
Москва, 2014 г.
Реферат
Объем работы:

Страниц - 31

Количество глав работы – 3

Иллюстраций – 18

Таблиц – 2

Приложений – 3

Использованных источников - 14
Ключевые слова: рекомендательные системы, мультиагентные системы, агенты,
рекомендации, система, фильтрация содержимого, социальные сети, рекомендательный
контент, веб-сёрфинг
В данной работе рассматривается проблема автоматизации процесса веб-сёрфинга
и фильтрации контента. Цель работы – разработать мультиагентную систему для анализа
интересов и предоставления рекомендаций пользователям сети “ВКонтакте” под
названием «EZSurf», которая направлена на решение данной проблемы.
В ходе работы были проанализированы различные методы
и технологические
решения, их плюсы и минусы, проведен сравнительный анализ существующих продуктованалогов. В итоге для решения проблемы фильтрации контента была реализована
рекомендательная
система,
основанная
на
подходе
фильтрации
содержимого,
использующая профиль в социальной сети “ВКонтакте” для сбора данных, о пользователе
и API сторонних сервисов (LastFM, TheMovieDB) для получения сведений о схожих
объектах. Такой подход значительно оптимизирует систему, поскольку не требует
создание собственной системы классификаций и базы объектов.
В рамках мультиагентной системы было реализовано три агента. Первый агент
(Сборщик) собирает данные из профиля пользователя “ВКонтакте” посредством API.
Второй агент (Анализатор), также посредством API, собирает данные о схожих объектах
из сторонних сервисов. Для поиска контента был реализован агент по принципу
поискового робота (Рекомендатель).
Система «EZSurf» может применяться в повседневной жизни пользователями
социальной сети “ВКонтакте” для уменьшения времени затрачиваемого на поиск в
Интернете
интересующей
их
информации,
при
этом
получая
рекомендации,
отфильтрованные в зависимости от предпочтений каждого конкретного пользователя.
2
Данная система имеет возможности дальнейшего развития, среди которых можно
выделить следующие:

Увеличение реестра сайтов

Использование других всевозможных данных из профиля

Оптимизация алгоритма поискового агента (Рекомендателя) для индексации
страниц и парсинга их содержимого

Сбор данных из профиля в нескольких социальных сетях.
3
Содержание
Введение .........................................................................................................................................5
Анализ предметной области .........................................................................................................6
Анализ объекта автоматизации ................................................................................................6
Анализ информационных технологий по направлению разработки ....................................6
Продукты аналоги .....................................................................................................................9
Требования к системе «EZSurf» .............................................................................................11
Функциональные требования .............................................................................................11
Требования к надежности ...................................................................................................12
Требования к программной и информационной совместимости ...................................12
Требования к составу и параметрам технических средств..............................................12
Требования к маркировке и упаковке................................................................................13
Проектирование системы............................................................................................................14
Система агентов .......................................................................................................................14
Схема базы данных системы «EZSurf» .................................................................................17
Реализация ....................................................................................................................................20
Реализация интерфейса ...........................................................................................................21
Реализация агентов ..................................................................................................................24
Заключение...................................................................................................................................29
Список литературы ......................................................................................................................31
Приложение А ............................................................................................................................313
Приложение Б ..............................................................................................................................50
Приложение В ..............................................................................................................................31
4
Введение
Многие пользователи Интернета встречались с такой проблемой, как поиск
интересной, актуальной информации. Зачастую этот процесс отнимает немало времени,
чтобы найти именно то, что нужно. Автоматизация процесса веб-сёрфинга, с фильтрацией
контента от неподходящей информации весьма интересная и нетривиальная задача.
Все сервисы желают достичь успеха в своей сфере, отсюда цель каждой компании
узнать, что хочет их пользователь, что понравиться именно ему. Для этой цели
используются
рекомендательные
системы,
которые
выявляют
предпочтения
пользователей, и на их основе рекомендуют своим покупателям товары, услуги или
контент, которые могут понравиться именно ему.
Однако, многие рекомендательные системы сталкиваются с проблемой “холодного
старта”, ситуацией, когда в системе появляется новый пользователей, и нет никакой
информации о том, что ему нравится. Во избежание данной проблемы отсутствия
начальных данных, будет использоваться профиль социальной сети “ВКонтакте”. На
сегодняшний день социальные сети являются частью жизни огромного количества людей,
а Россия занимает первое место в мире по времени, проводимому в социальных сетях, что
подтверждает их популярность.
Целью выпускной квалификационной работы является разработка мультиагентной
системы для анализа интересов пользователя по данным из профиля социальной сети
“ВКонтакте” (название «EZSurf»), которая направлена на автоматизацию процесса вебсёрфинга с фильтрацией контента.
Для достижения данной цели необходимо решить следующие задачи:
1. Провести анализ предметной области;
2. Выполнить проектирование системы;
3. Разработать базу данных;
4. Разработать клиентское приложение, с помощью которого пользователи смогут
взаимодействовать с системой;
5. Разработать агента для сбора данных из профиля “ВКонтакте”;
6. Разработать агента, который анализирует полученные данные и на их основе
создает список схожих объектов для дальнейшего поиска рекомендаций;
7. Разработать
агента
для
индексации
веб
страниц
и
сбора
на
них
рекомендованного контента.
5
Анализ предметной области
Анализ объекта автоматизации
В век информационных технологий, если человеку необходимо найти какую-то
информацию, например, почитать новости, он прибегает к помощи сети Интернет, а не
идет покупать газету. Процесс поиска в Интернете необходимой или просто интересной
информации, так называемый веб-сёрфинг, зачастую отнимает немало времени. А если у
человека еще и несколько интересов, то этот показатель вырастет в разы.
Обычно, описанный выше процесс происходит следующим образом: пользователь
вводит запрос в поисковую систему, в ответ на который, как бы хорошо не был
сформирован этот запрос, получает множество страниц; затем, он просто начинает
переходить с одной страницы на другую в поисках нужной информации. Этот процесс
может происходить в цикле до тех пор пока человек не найдет то, что его интересует.
Ниже представлено схематичное описание этого процесса:
Рисунок 1. Процесс веб-сёрфинга.
Целью данной работы является именно автоматизация процесса веб-сёрфинга.
Анализ информационных технологий по направлению разработки
Для того чтобы автоматизировать процесс веб-сёрфинга необходимо понимать, что
же интересует каждого отдельного пользователя, его увлечения, то, что он мог бы искать
в Интернете. Проблемами выявления предпочтений пользователей занимается такая
область информационных технологий как рекомендательные системы [6].
На данный момент существует несколько основных алгоритмов рекомендательных
систем, однако, как правило, для большинства случаев нет универсального алгоритма, и
6
всё зависит от поставленной задачи и ее особенностей. К известным алгоритмам
относятся:
1. Коллаборативная фильтрация
Метод построения рекомендательных систем, основанный на предположении о
том, что пользователям со схожими оценками к предметам, просмотренным
ранее, будет нравиться одно и то же в будущем. Группа пользователей наиболее
схожая по интересам с активным, называется “соседями” [1][6].
2. Фильтрация содержимого
При данном подходе каждому пользователю создается профиль в системе,
который хранит историю его оценок объектам этой системы. Система выдает
пользователю предметы схожие с теми, которые ему понравились в прошлом
[6].
3. Гибридные рекомендательные системы
Гибридные системы строятся с использованием комбинации подходов
перечисленных выше. Такие системы направлены на то, чтобы компенсировать
недостатки одного подхода, внедрением другого[6].
Рисунок 2. Виды рекомендательных систем [13].
Однако каждый из подходов обладает некоторыми недостатками, которые могут
помешать при выполнении поставленной задачи. К примеру, рекомендательные системы,
использующие метод коллаборативной фильтрации зачастую сталкиваются с проблемой
“холодного старта”, ситуацией, когда в системе появляется новый пользователей, и нет
никакой информации о том, что ему нравится [7]. Во избежание данной проблемы
7
отсутствия начальных данных, будет использоваться профиль социальной сети
“ВКонтакте”. Но, проблема “холодного старта” не уходит полностью, поскольку
возможна ситуация, когда профиль пользователя будет пустым. Однако, главная проблема
в том, что сбор данных будет производиться через профиль “ВКонтакте”, и возникает
сложность определения “соседей”, что делает использование коллаборативного подхода
невозможным.
Что же касается подхода основанного на данных, здесь возникает проблема
отсутствия в разрабатываемой системе профилей, потому что пользователи заходят через
профиль “ВКонтакте”. Однако, почему бы не использовать профиль “ВКонтакте”, как
основу рекомендательной системы, который будет использоваться не только во избежание
проблемы “холодного старта”, но и как историю его активности в данной системе. Таким
образом, решено было остановиться на подходе фильтрации содержимого, с небольшими
доработками, но как уже было сказано выше, не бывает уникального алгоритма, всё
зависит от поставленной задачи.
Данный проект будет иметь клиент-серверную архитектуру, с целью оптимального
распределения нагрузки и для ее реализации, рассматривалось несколько языков
программирования.
C#
Для написания клиента с помощью C# можно было бы использовать Windows
Forms, встроенные в Microsoft Visual Studio. Windows Forms представляет собой
технологию, используемую в Visual C# для создания интеллектуальных клиентских
приложений на основе Windows, выполняемых в среде .NET Framework. Технология
Windows Forms специально создана для быстрой разработки приложений, в которых
обширный графический пользовательский интерфейс не является приоритетом [5].
Серверный компонент можно было бы разработать с использованием технологии
ASP.NET . Однако, есть один нюанс, когда дело дойдет до выбора инструмента для
разработки агентов. Для C# не было найдено ни одной библиотеки или фреймворка, для
выполнения данного рода задач [14].
Python
Язык программирования Python прекрасно подходил по всем параметрам для
выполнения поставленых задач, но опять же не подходит из-за, того что стоит задача
проектирования и реализации мультиагентной системы. Во всех инструментах для языка
Python, позволяющих реализовать мультиагентную архитектуру отсутствует возможность
создания систем агентов, способных интегрировать в Windows-приложения [9].
8
В итоге в качестве языка программирования для реализации обоих компонентов
архитектуры был выбран язык Java. На это есть несколько причин:
1. Высокая производительность приложений написанных на Java;
2. Кроссплатформенность;
3. Бесплатность;
4. Большое количество библиотек;
5. Надежность.
Выбор языка во многом определил и выбор других технологий. Для реализации
клиента выбор стоял между JavaFX, и Java Swing. Обе библиотеки используются для
создания интерфейсов приложений. Однако, определяющий стало быстродействие и
возможности каждой из библиотек. В то время как Java Swing позволяет создавать
приложения со строгими типичными интерфейсами, JavaFX, обладая большим
количеством
графических
компонентов,
позволяет
строить
унифицированные
приложения, обладающие богатым графическим интерфейсом пользователя, которые
могут быть запущены как непосредственно из-под операционных систем, так и в
браузерах и на мобильных телефонах. Самым важным стало наличие в JavaFX удобных
компонентов и библиотек для работы с вебом [12].
Для реализации агентов на Java существует наибольшее количество инструментов
для создания агентов, что также повлияло на выбор этого языка. В ходе выбора
инструмента для разработки агентов были рассмотрены такие библиотеки как - Java
Application Development Environment (JADE), Framework for Agent-based MOdeling with
Java (FAMOJA) и Java Agent-based Simulation library (JAS). Так как, данный проект - это
первая случай разработки агентов, выбор библиотеки происходил по принципу наличия
понятной, подробной документации и примеров. Все три упомянутых выше библиотеки
имеют это в своем арсенале, и каждая из них имеет GUI для управления агентами. Выбор
был сделан в пользу JADE, только по причине наличия еще и книги посвященной
разработке мультиагентных систем с помощью данной библиотеки – “Developing MultiAgent Systems with JADE” [2].
Продукты аналоги
Для определения функциональности системы «EZSurf» проведен сравнительный
анализ проектов-аналогов схожих по функциональности с текущим проектом. Также были
рассмотрены проекты, использующие различные рекомендательные системы.
9
На данный момент главным аналогом является российский сервис Surfingbird с
интегрированной
рекомендательной
системой,
который
занимается
подборкой
персонально интересных веб-страниц [8]. Таким образом, Surfingbird также подбирает
контент на основе рекомендаций, и автоматизирует процесс веб-сёрфинга, однако разница
в том, что данный сервис, использует для сбора данных опрос нового пользователя, чтобы
избежать проблемы “холодного старта”, а в дальнейшем опирается на оценки
пользователя. В отличие от Surfingbird, в текущем проекте сбор данных будет
происходить через профиль в социальной сети “ВКонтакте”, тем самым избавляя
пользователя от необходимости проходить опрос. Помимо этого, как уже ранее
упоминалось, использование профиля “ВКонтакте” скажется и на всей концепции
рекомендательной системы.
На данный момент в социальной сети “ВКонтакте”, есть встроенные рекомендации,
но распространяются они только на музыку, и далеко не всем нравится, как этот сервис
работает.
Рисунок 3. Рекомендации музыки ВКонтакте.
Следующие аналоги относятся к сервисам другой направленности, но также
используют рекомендательные системы:

IMDb
Сайт IMDb.com крупнейшая в мире база данных кинофильмов,
сериалов, и телешоу. Под каждым фильмом можно найти раздел “People who
liked this also liked…”, что значит, что эти фильмы рекомендуют вам на
основании схожести ваших вкусов со вкусом других людей. Очевидно, что в
данном сервисе используется коллаборативная фильтрация, основанная на
принципе поиска “соседей”.

Amazon.com
Крупнейший интернет-сервис продажи товаров. Пройдя регистрацию
и начав просматривать товары, пользователь заполняет историю активности
своего профиля, затем под каждым товаром можно найти рекомендации по
10
тому же принципу что и у IMDb: “ Customers Who Bought Items in Your
Recent History Also Bought ”.

Grooveshark
Музыкальный веб-сайт с потоковым мультимедиа и
интегрированной рекомендательной системой, позволяющий пользователям
искать, слушать, загружать и сохранять музыку бесплатно. Одной из
особенностей сайта является его рекомендательный сервис, подбирающий
песни, похожие на те, которые находятся в очереди воспроизведения у
пользователя. Специальной иконкой (смайликом) можно сообщить сервису
была ли та или иная рекомендация удачной. В данном сервисе используется
рекомендательная система, основанная на фильтрации содержимого [3].
Требования к системе «EZSurf»
Функциональные требования
Система должна обеспечивать возможность выполнения перечисленных функций.
1. Авторизация в системе «EZSurf» должна происходить через социальную
сеть “ВКонтакте”;
2. Система не должна производить каких-либо действий до прохождения
корректной авторизации.
3. При первом запуске системы «EZSurf» после успешной авторизации
система должна потребовать разрешения пользователя на обработку
данных с его страницы “ВКонтакте”.
4. Система должна выполнять сбор аудио, видео данных, а также данных об
интересах из профиля пользователя “ВКонтакте”;
5. Система должна хранить собранные данные в базе данных
6. Система должна производить ранжирование аудио данных по количеству
их встречаемости на странице “ВКонтакте”
7. Система должна находить аудио и видео объекты (рекомендации)
схожие с теми, что были собраны из профиля “ВКонтакте”, посредством
обращения к сторонним базам и API (lastFM, IMDb).
11
8. Система должна производить индексацию веб-страниц для каждого
сайта из реестра, созданного модератором.
9. Система должна производить поиск рекомендаций на
проиндексированных страницах
10. Система должна отображать конечный результат работы в виде
рекомендации, содержащей заголовок, изображение и краткое описание
статьи.
Требования к надежности
Система должна обеспечивать
устойчивое функционирование при любых
возможных вариантах ее эксплуатации пользователем.
Требования к программной и информационной совместимости
На компьютере пользователя должны быть установлены следующие продукты:
- JDK 1.7 или старше;
- ОС Windows 7 или старше;
- ПО для создания зашифрованных каналов типа точка-точка или серверклиенты между компьютерами, в случае если интернет провайдер блокирует порты
необходимые для доступа к серверу базы данных(OpenVPN GUI, ShadeYouVpn и
т.д.);
Требования к составу и параметрам технических средств
-Подключение к интернету (рекомендуемая скорость подключения от 50 Мбит/с.)
-Монитор
-Устройства ввода
Необходимый
процессор
32-разрядный
(x86) или 64разрядный
(x64) процессор
с тактовой
Рекомендуемый
процессор
32-разрядный
(x86) или 64разрядный (x64)
процессор с
тактовой частотой
Необходимое
ОЗУ
1,5 гигабайт
(ГБ) (для 32разрядной
системы) или 2
ГБ (для 64-
Рекомендуемое
ОЗУ
4 гигабайт (ГБ)
(для 32разрядной
системы) или
4,5 ГБ (для 64-
Прочие
требования
графическое
устройство
DirectX 9 с
драйвером
WDDM версии
12
частотой 2
гигагерц (ГГц)
2,6 гигагерц (ГГц)
или выше
разрядной
разрядной
1.0 или выше
системы)
системы)
оперативной
оперативной
памяти (ОЗУ)
памяти (ОЗУ)
Таблица 1. Требования к техническим характеристикам компьютера
Требования к маркировке и упаковке
Система предоставляется заказчику в виде архива содержащего *.jar файл проекта
и *.bat файл для запуска приложения на компьютере заказчика, удовлетворяющего
составу и параметрам технических средств.
13
Проектирование системы
Система агентов
Ввиду того, что данный проект обладает широким функционалом и затрагивает
различные сферы информационных технологий (ИТ), была выбрана мультиагентная
архитектура, с целью распределить выполнение задач между несколькими агентами.
1. Первой встает задача сбора информации и необходим агент для выполнения
этой задачи.
Сборщик. Агент для сбора информации из профиля пользователя сети
“ВКонтакте”. Это такая информация, как статус, оценки “мне нравится”,
сообщества, аудиозаписи, видео, всё, что может помочь выявить интересы
пользователя.
2. Затем стоит задача, выявления того, что же пользователю нравиться больше из
того что есть, у него на странице и определение рекомендаций по выявленным
интересам.
Анализатор. Агент для осуществления анализа контента со страницы
пользователя,
определения
предпочтений
и
контента
который
можно
порекомендовать данному пользователю.
3. Ну и последняя масштабная задача – поиск и сбор рекомендуемого контента в
сети Интернет для последующего предоставления пользователю.
Рекомендатель. Агент, собирающий подходящий контент в сети Интернет
основываясь на рекомендациях для каждого конкретного пользователя.
Исходя из описанной выше функциональности агентов, архитектура системы будет
выглядеть следующим образом:
14
Временная база
данных
Профиль
ВКонтакте
The Internet
Реестр сайтов
Сбор
информации
Заносит
собранные
данные в базу
Сборщик
Собирает
рекомендованный
контент
Собирает
данные для
анализа
Запрашивает сайты
для поиска
рекомендательного
контента
Собирает
информацию о
схожих объектах
Анализатор
Посылает
сигнал о
начале анализа
Рекомендатель
Посылает сигнал
о начале поиска
Заполняет базу
знаний
собранную в
интернете
Запрашивает
объекты для
критериев
поиска
База знаний
Заносит
собранные
рекомендации
База результатов
Рисунок 4. Архитектура системы
Профиль ВКонтакте в данном случае подразумевает под собой, все данные со
страницы пользователя в контакте. Страница пользователя “ВКонтакте” содержит
информацию разного рода: персональная информация, которую пользователь заполняет
сам, список сообществ, подписок, который формируется в ходе активности на сайте
ВКонтакте, медиа контент (фото, аудио, видео).
Агент Сборщик, посредством вызова методов ВКонтакте API, получает ответ в
формате JSON, откуда он вычленяет необходимую информацию. Пример:
15
Рисунок 5. Ответ в формате JSON на запрос audio.get VK API
Например, в случае с аудиозаписями из запроса ВКонтакте API audio.get (Рис. 5),
Сборщик извлечет только тег artist, так как именно по артисту будут выдаваться
рекомендации. Затем Сборщик заносит собранные данные в базу интересов для
дальнейшего анализа.
Когда Сборщик закончил сбор данных он подает сигнал Анализатору. Агент
Анализатор, в первую очередь производит ранжирование по данным, собранным
Сборщиком, то есть предполагает, что из того, что находится у пользователя на странице,
нравится ему больше. Это сделано, чтобы в дальнейшем расставить приоритеты для
рекомендаций: какие рекомендации будут более интересны, а какие менее. Для того чтобы
проранжировать объекты по важности будет использоваться метод схожий по смыслу с
количественным методом контент-анализа. В случае контент-анализа, по количеству
встречаемых слов в тексте определяется тематика, например, статьи в газете. По такому
же принципу можно попробовать оценить, какой исполнитель интересует пользователя
больше других, по количеству песен каждого исполнителя в списке аудиозаписей из
профиля социальной сети “ВКонтакте”. После ранжирования, Анализатор, путем
обращения к сторонним базам имеющим
классификацию объектов (IMDb, lastFM),
выявляет объекты, схожие с теми что были собраны со страницы пользователя
“ВКонтакте”, которые будут являться критериями поиска рекомендаций.
Закончив определение предпочтений пользователя, и выявив объекты для
рекомендаций, Анализатор подает сигнал Агенту Рекомендателю. Рекомендатель в свою
очередь обращается к реестру сайтов, где он получает список сайтов, на которых может
16
быть найден рекомендуемый контент. Реестр сайтов сократит масштаб поиска и
индексирования множества лишних страниц. Рекомендатель индексирует каждый сайт из
реестра и записывает список страниц каждого сайта в базу данных. Затем имея список
URL
для поиска и объекты, которые могут заинтересовать активного пользователя,
Рекомендатель собирает в Интернете контент и затем предоставляет его пользователю.
Схема базы данных системы «EZSurf»
В связи с заявленной функциональностью системы необходимо составить модель
предметной области. Выявленные сущности и инфологическая модель базы данных
представлена на рисунке 7.
Рисунок 6. Инфологическая модель системы «EZSurf»
При выборе модели данных будущей СУБД были рассмотрены иерархическая,
сетевая и реляционная модели данных. В данной ситуации наиболее подходящей была
принята реляционная модель, в связи с этим даталогическая проекция базы выглядит
следующим образом:
17
Рисунок 7. Даталогическая модель базы данных системы «EZSurf»
Таблицы artist и video, это данные о музыкальных исполнителях и видеозаписях из
профиля пользователя социально сети “ВКонтакте” соответственно.
artist_id и video_id – идентификатор записи в соответствующей таблице
user_id – идентификатор пользователя “ВКонтакте”
artist_name и video_name – имя артиста и название видео соответственно
rank – приоритет артиста или видео для поиска
Таблица interests представляет собой список интересов из графы персональной
информации на странице пользователя “ВКонтакте”.
interest_id – идентификатор интереса
user_id - идентификатор пользователя “ВКонтакте”
interest_name – название хобби, интереса.
Таблица recommendation, хранит в себе данные об объектах схожими с теми, что
есть в профиле “ВКонтакте” у пользователя.
rec_id – идентификатор объекта-рекомендации
rec_info –
информация об
объекте, которую
будет
использовать
Агент
Рекомендатель для поиска
source_id – идентификатор объекта из профиля “ВКонтакте”, к которому подобрана
данная рекомендация
type – определитель типа объекта (артист, видео)
owner_id – идентификатор пользователя, которому предназначены рекомендации
Список сайтов для поиска, который составляется модератором, будет храниться в
таблице registry.
site_id – идентификатор сайта
18
site_url – адрес сайта
type – определитель того, поиск какого рода объектов может выполняться на
данном сайте.
Таблица search отвечает за хранение результатов поиска.
id – идентификатор результата поиска
type – определитель типа объекта поиска (артист, видео)
source_url – адрес найденного рекомендованного контента(статьи)
description – описание статьи
title – название статьи
image_url – url обложки статьи
owner_id – идентификатор пользователя для которого выполнялся поиск
Таблица pages хранит url страниц после индексации реестра сайтов.
page_id – идентификатор страницы
site_url – url сайта из реестра
page_url – url проиндексированной страницы
19
Реализация
Для реализации системы «EZSurf» была использована среда разработки Netbeans
IDE 8.0. Для проверки используемых API(lastfm.ru, themoviedb.com, VK API) применялся
такой
инструмент
как
«Postman-REST
Client»,
который
позволяет
проверить
работоспособность API, рассмотреть структуру JSON ответа. На рисунке 8 показан
пример работы c LasfFM API.
Рисунок 8. Пример работы с LastFM API через «Postman-REST Client»
Для разработки базы данных и последующего с ней взаимодействия использовался
инструмент pgAdmin III для работы с СУБД PostgreSQL (Рис. 9).
20
Рисунок 9. Пример работы с pgAdmin III
Реализация интерфейса
Реализация интерфейса при написании системы «EZSurf» вызвала немало
сложностей, по большей части, потому что толком никакой информации о создании
интерфейсов для мультиагентных систем найдено не было. Изначально было задумана
полная реализация интерфейса на JavaFX, необходимо было, каким то образом, создавать
экземпляр агента и передавать его контроллеру, однако возникла проблема с потоками
JADE агентов и JavaFX Application Thread, при исполнении которых возникали
исключительные ситуации.
В итоге при реализации интерфейса использовались две стандартных библиотеки
Java Swing и JavaFX (начиная с JDK 1.7). Был найден способ использования отдельных
компонентов интерфейса библиотеки JavaFX в Java Swing фрейме, который в свое время
мог принимать экземпляр агента в качестве параметра в конструкторе. Такой подход
позволил создавать окно приложения из потока агента в методе setup посредством
передачи в конструктор объекта формы указателя на самого себя – this (см. стр.
Приложения текст программы строка…).
Весь интерфейс прописан в классе CollectorGuiAuth.java (см. Рис. 14), который
наследует класс JFrame – стандартный класс Java Swing для создания форм приложения.
21
Из-за такого не стандартного подхода к созданию интерфейса, все состояния интерфейса
рисуются на одном и том же фрейме, посредством установки свойства видимости
компонентов в значение false и динамического создания компонентов. То есть экраны
разные, но объект используется для их отображения один и тот же.
На первом экране приложения использованы компоненты библиотеки JavaFX
WebView, WebEngine и компонент библиотеки Java Swing – JFXPanel, который позволил
встроить JavaFX объекты в JFrame(Рис. 10).
Рисунок 10. Первый экран приложения – Авторизация “ВКонтакте”
На втором экране после успешного прохождения авторизации появляется экран с
кнопкой запуска основного функционала. JFXPanel принимает значение видимости false, и
создается объект обычной JPanel из библиотеки Java Swing (Рис. 11).
22
Рисунок 11. Второй экран приложения – Запуск сбора, обработки, анализа
На третьем экране снова понадобился компонент из библиотеки JavaFX –
ProgressIndicator. Для того чтобы наглядно показать процесс сбора, обработки, анализа
данных добавляем JFXPanel с ProgressIndicator на основной фрейм, а у JPanel второго
экрана устанавливаем свойство видимости в значение false (Рис. 12).
Рисунок 12. Третий экран приложения – индикатор процесса обработки, сбора и
анализа данных
23
Четвертый экран – последний, показывает результаты работы системы –
рекомендации. Обратно возвращается JPanel, делая не видимой JFXPanel, и динамически
создаются блоки рекомендации. Каждый блог предствляет собой JLabel – заголовок
статьи по нажатию на который статья открывается в браузере, JLabel созданный из
объекта ImageIcon, который в свою очередь создан из URL обложки статьи, и JTextArea –
описания статьи (Рис. 13).
Рисунок 13. Последний экран приложения – результаты работы системы
Реализация агентов
Для удобства разъяснения реализации агентов ниже представлена диаграмма
классов системы “EZSurf” (Рис. 14). Для создания агентов использовалась сторонняя
библиотека JADE(Java Agent Development Environment), каждый агент представлен
отдельным классом, который наследует класс jade.core.agent.
24
Рисунок 14. Диаграмма классов системы «EZSurf»
Все агенты инициализируется при запуске программы. Происходит вызов метода
setup всех трех агентов. Дальнейшее взаимодействие происходит посредством обмена
ACL сообщениями, где JADE создает очередь и управляет потоком ACL-сообщений[10].
Агент Сборщик представленный классом Collector, в котором происходит сбор
данных из профиля пользователя в социальной сети “ВКонтакте”, также отвечает за
создание окна приложения в методе setup, который вызывается при создании агента.
После того как пользователь авторизуется “ВКонтакте”, и нажмет кнопку «SURF»
сработает обработчик событий actionPerformed в классе CollectorGuiAuth, в котором
происходит вызов метода агента onGuiEvent, который в свою очередь производит вызов
метода сбора данных(collectData). Перед тем как начать собирать новые данные метод
clearDBs удаляет данные из базы по текущему пользователю.
Метод сбора данных использует объект класса VKCommunication, содержащий
методы вызова VK API для получения списков аудио, видео и персональной информации,
в которых также происходит парсинг JSON ответов для получения нужных данных. В
25
случае с аудио это исполнитель. На рисунке 15 представлен пример ответа на вызов
метода audio.get из VK API.
Рисунок 15. JSON ответ на вызов метода VK API audio.get
По окончанию сбора данных происходит отправление ACL сообщения агенту
Анализатору при помощи средств библиотеки JADE, класса ACL Message.
Агент Анализатор представленный классом Analyzer на диаграмме классов (Рис.
14) производит вызов методов API LastFM и TheMovieDB для сбора схожих объектов для
аудио и видео соответственно. Затем Анализатор посылает ACL сообщение-сигнал агенту
Рекомендателю. На рисунке 16 виден результат работы Анализатора, во второй колонке
информация об объекте, в третьей колонке id объекта для которого, данный объект
является схожим и в четвертой колонке тип объекта.
Рисунок 16. Таблица recommendation
Получив сообщение о начале поиска, Рекомендатель (класс Recommender), по сути,
поисковый робот, производит индексацию каждого сайта из реестра, где реестр
представляет собой таблицу базы данных, содержащую URL сайта и тип контента,
который может быть найден на этом сайте (Рис. 17). Индексация страниц происходит в
классе Crawler по следующему алгоритму:
26
Рисунок 17. Таблица registry
Код
Тип контента
0
Интересы
1
Музыка
2
Видео
3
Все типы
Таблица 2. Расшифровка значений колонки type в таблице registry.

Загрузить страницу с адресом pageURL.

Поместить адрес pageURL в список посещенных страниц.

Найти ссылки на загруженной странице с адресом pageURL.

Для каждой найденной ссылки не находящейся в списке посещенных
страниц запустить процедуру из пункта 1.[11]
Таким образом, выходит, что алгоритм использует рекурсивный вызов, что означает
большую трудоемкость и ресурсоемкость. Однако если для каждого сайта запустить
данный алгоритм в разном потоке параллельно, то это ускорит процесс. Также для
управления заданиями и потоками использованы такие структуры данных как пул потоков
- ThreadPoolExecutor и связанная блокирующая очередь – LinkedBlockingQueue[11] из
стандартной библиотеки java.util, что также позволяет оптимизировать данный процесс.
Если создано заданий больше чем может пул потоков обработать одновременно, то задачи
простаивают в этой очереди, и время их жизни задается в конструкторе пула потоков. В
данном случае время жизни заданий 5 минут. За хранение адресов уже посещенных
страниц отвечает такая структура данных как hash map из той же библиотеки java.util.
27
Рисунок 18. Схема алгоритма индексации [11]
В процессе каждая страница проверяется на наличие рекомендательного контента.
Из таблицы recommendation в структуру данных List<String> записывается колонка
rec_info. В rec_info будет записано имя артиста, название видео или хобби, в случае если в
колонке type значение audio, video или hobby соответственно. Для каждого объекта в этом
List<String>, выявленного анализатором, как рекомендуемого, происходит поиск
совпадений на странице. С помощью сторонних библиотек Jericho и jSoup происходит
извлечение содержимого мета тегов title, description и keywords. Если хотя бы в одном из
мета тегов присутствует вхождение искомой строки и хотя бы одно вхождение найдено в
теле HTML страницы, то есть внутри тега body, то страница принимается за
рекомендуемую. Содержимое тегов title и description записываются в базу результатов как
заголовок и описание статьи соответственно.
28
Заключение
Основной идеей данной работы была попытка сделать минимально нагруженную
рекомендательную систему, основанную на подходе фильтрации содержимого(contentbased). Использование профиля социальной сети “ВКонтакте” избавило как от
необходимости хранения данных об истории активности пользователя внутри системы,
поскольку профиль пользователя “ВКонтакте” регулярно обновляется (добавление новой
музыки, видео и т.д.), так и от проблемы холодного старта за исключением случая, когда
пользователь имеет пустой профиль.
Во избежание большого количества данных об объектах рекомендаций системы и
введения своей системы классификаций объектов были использованы базы данных и
системы классификаций сторонних сервисов, таких как lastfm и themoviedb.
Все поставленные задачи выполнены в полном объеме, а именно:
1. Был проведен анализ предметной области;
2. Выполнено проектирование системы;
3. Разработана база данных;
4. Разработано клиентское приложение, с помощью которого пользователи смогут
взаимодействовать с системой;
5. Разработан агент для сбора данных из профиля “ВКонтакте”;
6. Разработан агент, который анализирует полученные данные и на их основе
создает список схожих объектов для дальнейшего поиска рекомендаций;
7. Разработан агент для индексации веб страниц и сбора на них рекомендованного
контента, который представляет поискового робота.
Данная система имеет возможности дальнейшего развития, среди которых можно
выделить следующие:

Увеличение реестра сайтов

Использование других всевозможных данных из профиля

Оптимизация алгоритма поискового агента (Рекомендателя) для индексации
страниц и парсинга их содержимого

Сбор данных из профиля в нескольких социальных сетях.
В ходе работы было изучено множество источников информации по таким
областям информационных технологий как рекомендательные системы, разработка
мультиагентных систем, освоено множество библиотек, API сторонних сервисов и
инструментов разработки. Проведен анализ предметной области, инструментов и
29
технологий разработки. В целом, все поставленные задачи выполнены, программный
продукт разработан полностью.
30
Список литературы
1. Ekstrand, M. D. & Riedl, J. T. & Konstan, J. A. (2011). Collaborative Filtering
Recommender Systems // Retrieved January 26, 2014, from Social Computing Research
at
the
University
of
Minnesota
website.
URL:
http://files.grouplens.org/papers/FnT%20CF%20Recsys%20Survey.pdf
2. JADE.
Official
library
website//
Retrieved
April
24,
2014,
URL:
http://jade.tilab.com/index.html
3. Lane J. (2009). Musicians Find Fans At Grooveshark Artists // Retrieved April 24, 2014,
from online magazine Blogcritics. URL: http://blogcritics.org/musicians-find-fans-atgrooveshark-artists/
4. Little M. (2008). A Comparison of JAX-RS Implementations // Retrieved April 24, 2014,
from InfoQ. Facilitating the spread of knowledge and innovation in professional software
development. URL: http://www.infoq.com/news/2008/10/jaxrs-comparison
5. MSDN (2007). Создание приложений Windows Forms (Visual C#) // Microsoft
Developer Network [Электронный ресурс]. URL: http://msdn.microsoft.com/ruru/library/hk4ts42s(v=vs.90).aspx (дата обращения: 24.04.2014)
6. Ricci, F. & Rokach, L. & Shapira, B. (2011) Introduction to Recommender Systems
Handbook, Recommender Systems Handbook, Springer.
7. Sahebi, S. & Cohen, W. W. (2011). Community-Based Recommendations: a Solution to
the Cold Start Problem // Retrieved February 2, 2014, from Institutional Repository at
The University of Pittsburgh website. URL:http://d-scholarship.pitt.edu/13328/
8. Surfingbird.
Официальный
сайт
компании
[Электронный
ресурс].
URL:
http://surfingbird.ru/about (дата обращения: 22.04.2014)
9. Анализ существующих средств создания многоагентных систем (МАС) //
ProGrammer
сайт
-
о
программировании,
математике
и
моделировании
[Электронный ресурс]. URL: http://progrm.ru/?p=238 (дата обращения: 24.04.2014)
10. Глибовец Н.Н. Использование JADE (Java Agent Development Environment) для
разработки компьютерных систем поддержки дистанционного обучения агентного
типа
[Электронный
ресурс].
2005.
URL:
http://www.ebiblioteka.lt/resursai/Uzsienio%20leidiniai/IEEE/Russian/2005/Nr%203/OT
O_2005_3_04.pdf
11. Журавский В. Простой поисковый робот // Блог Виталия Журавского. URL:
http://juravskiy.ru/?p=1005 (дата обращения 28.04.2014)
31
12. Кузнецов А. JavaFX 2.1 - следующее поколение клиентской Java. 2012. URL:
http://www.slideshare.net/Alexander_K/javafx-21-java (дата обращения: 24.04.2014)
13. Сборник статей по рекомендательным системам [Электронный ресурс]. URL:
https://widjer.com/interests/Коллаборативная
фильтрация
(дата
обращения:
24.04.2014)
14. Сборник
словарей
и
энциклопедий
[Электронный
ресурс].
URL:
http://dic.academic.ru/dic.nsf/ruwiki/686609 (дата обращения: 24.04.2014)
32
Download