Мультиагентная система для анализа и веб-сёрфинга

EZSurf как мультиагентная система анализа интересов пользователя по данным из профиля социальной сети ВКонтакте. Автоматизация процесса веб-серфинга с фильтрацией контента. Клиентское приложение, с помощью которого пользователь взаимодействует с системой.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.07.2016
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Мультиагентная система для анализа и веб-сёрфинга

Содержание

Введение

1. Анализ предметной области

1.1 Анализ объекта автоматизации

1.2 Анализ информационных технологий по направлению разработки

2. Продукты аналоги

3. Требования к системе "EZSurf"

3.1 Функциональные требования

3.2 Требования к надежности

3.3 Требования к программной и информационной совместимости

3.4 Требования к составу и параметрам технических средств

3.5 Требования к маркировке и упаковке

4. Проектирование системы

4.1 Система агентов

4.2 Схема базы данных системы "EZSurf"

5. Реализация

5.1 Реализация интерфейса

5.2 Реализация агентов

Заключение

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

Введение

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

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

Однако, многие рекомендательные системы сталкиваются с проблемой "холодного старта", ситуацией, когда в системе появляется новый пользователей, и нет никакой информации о том, что ему нравится. Во избежание данной проблемы отсутствия начальных данных, будет использоваться профиль социальной сети "ВКонтакте". На сегодняшний день социальные сети являются частью жизни огромного количества людей, а Россия занимает первое место в мире по времени, проводимому в социальных сетях, что подтверждает их популярность.

Целью выпускной квалификационной работы является разработка мультиагентной системы для анализа интересов пользователя по данным из профиля социальной сети "ВКонтакте" (название "EZSurf"), которая направлена на автоматизацию процесса веб-сёрфинга с фильтрацией контента.

Для достижения данной цели необходимо решить следующие задачи:

1. Провести анализ предметной области;

2. Выполнить проектирование системы;

3. Разработать базу данных;

4. Разработать клиентское приложение, с помощью которого пользователи смогут взаимодействовать с системой;

5. Разработать агента для сбора данных из профиля "ВКонтакте";

6. Разработать агента, который анализирует полученные данные и на их основе создает список схожих объектов для дальнейшего поиска рекомендаций;

7. Разработать агента для индексации веб страниц и сбора на них рекомендованного контента.

1. Анализ предметной области

1.1 Анализ объекта автоматизации

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

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

Рисунок 1. Процесс веб-сёрфинга.

Целью данной работы является именно автоматизация процесса веб-сёрфинга.

1.2 Анализ информационных технологий по направлению разработки

Для того чтобы автоматизировать процесс веб-сёрфинга необходимо понимать, что же интересует каждого отдельного пользователя, его увлечения, то, что он мог бы искать в Интернете. Проблемами выявления предпочтений пользователей занимается такая область информационных технологий как рекомендательные системы [6].

На данный момент существует несколько основных алгоритмов рекомендательных систем, однако, как правило, для большинства случаев нет универсального алгоритма, и всё зависит от поставленной задачи и ее особенностей. К известным алгоритмам относятся:

1. Коллаборативная фильтрация

Метод построения рекомендательных систем, основанный на предположении о том, что пользователям со схожими оценками к предметам, просмотренным ранее, будет нравиться одно и то же в будущем. Группа пользователей наиболее схожая по интересам с активным, называется "соседями" [1][6].

2. Фильтрация содержимого

При данном подходе каждому пользователю создается профиль в системе, который хранит историю его оценок объектам этой системы. Система выдает пользователю предметы схожие с теми, которые ему понравились в прошлом [6].

3. Гибридные рекомендательные системы

Гибридные системы строятся с использованием комбинации подходов перечисленных выше. Такие системы направлены на то, чтобы компенсировать недостатки одного подхода, внедрением другого[6].

Рисунок 2. Виды рекомендательных систем [13].

Однако каждый из подходов обладает некоторыми недостатками, которые могут помешать при выполнении поставленной задачи. К примеру, рекомендательные системы, использующие метод коллаборативной фильтрации зачастую сталкиваются с проблемой "холодного старта", ситуацией, когда в системе появляется новый пользователей, и нет никакой информации о том, что ему нравится [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].

В итоге в качестве языка программирования для реализации обоих компонентов архитектуры был выбран язык 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 Multi-Agent Systems with JADE" [2].

2. Продукты аналоги

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

На данный момент главным аналогом является российский сервис Surfingbird с интегрированной рекомендательной системой, который занимается подборкой персонально интересных веб-страниц [8]. Таким образом, Surfingbird также подбирает контент на основе рекомендаций, и автоматизирует процесс веб-сёрфинга, однако разница в том, что данный сервис, использует для сбора данных опрос нового пользователя, чтобы избежать проблемы "холодного старта", а в дальнейшем опирается на оценки пользователя. В отличие от Surfingbird, в текущем проекте сбор данных будет происходить через профиль в социальной сети "ВКонтакте", тем самым избавляя пользователя от необходимости проходить опрос. Помимо этого, как уже ранее упоминалось, использование профиля "ВКонтакте" скажется и на всей концепции рекомендательной системы.

На данный момент в социальной сети "ВКонтакте", есть встроенные рекомендации, но распространяются они только на музыку, и далеко не всем нравится, как этот сервис работает.

Рисунок 3. Рекомендации музыки ВКонтакте.

Следующие аналоги относятся к сервисам другой направленности, но также используют рекомендательные системы:

· IMDb

Сайт IMDb.com крупнейшая в мире база данных кинофильмов, сериалов, и телешоу. Под каждым фильмом можно найти раздел "People who liked this also liked…", что значит, что эти фильмы рекомендуют вам на основании схожести ваших вкусов со вкусом других людей. Очевидно, что в данном сервисе используется коллаборативная фильтрация, основанная на принципе поиска "соседей".

· Amazon.com

Крупнейший интернет-сервис продажи товаров. Пройдя регистрацию

и начав просматривать товары, пользователь заполняет историю активности своего профиля, затем под каждым товаром можно найти рекомендации по тому же принципу что и у IMDb: " Customers Who Bought Items in Your Recent History Also Bought ".

· Grooveshark

Музыкальный веб-сайт с потоковым мультимедиа и

интегрированной рекомендательной системой, позволяющий пользователям искать, слушать, загружать и сохранять музыку бесплатно. Одной из особенностей сайта является его рекомендательный сервис, подбирающий песни, похожие на те, которые находятся в очереди воспроизведения у пользователя. Специальной иконкой (смайликом) можно сообщить сервису была ли та или иная рекомендация удачной. В данном сервисе используется рекомендательная система, основанная на фильтрации содержимого [3].

3. Требования к системе "EZSurf"

3.1 Функциональные требования

Система должна обеспечивать возможность выполнения перечисленных функций.

1. Авторизация в системе "EZSurf" должна происходить через социальную сеть "ВКонтакте";

2. Система не должна производить каких-либо действий до прохождения корректной авторизации.

3. При первом запуске системы "EZSurf" после успешной авторизации система должна потребовать разрешения пользователя на обработку данных с его страницы "ВКонтакте".

4. Система должна выполнять сбор аудио, видео данных, а также данных об интересах из профиля пользователя "ВКонтакте";

5. Система должна хранить собранные данные в базе данных

6. Система должна производить ранжирование аудио данных по количеству их встречаемости на странице "ВКонтакте"

7. Система должна находить аудио и видео объекты (рекомендации) схожие с теми, что были собраны из профиля "ВКонтакте", посредством обращения к сторонним базам и API (lastFM, IMDb).

8. Система должна производить индексацию веб-страниц для каждого сайта из реестра, созданного модератором.

9. Система должна производить поиск рекомендаций на проиндексированных страницах

10. Система должна отображать конечный результат работы в виде рекомендации, содержащей заголовок, изображение и краткое описание статьи.

3.2 Требования к надежности

Система должна обеспечивать устойчивое функционирование при любых возможных вариантах ее эксплуатации пользователем.

3.3 Требования к программной и информационной совместимости

На компьютере пользователя должны быть установлены следующие продукты:

- JDK 1.7 или старше;

- ОС Windows 7 или старше;

- ПО для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами, в случае если интернет провайдер блокирует порты необходимые для доступа к серверу базы данных(OpenVPN GUI, ShadeYouVpn и т.д.);

3.4 Требования к составу и параметрам технических средств

-Подключение к интернету (рекомендуемая скорость подключения от 50 Мбит/с.)

-Монитор

-Устройства ввода

Таблица 1. Требования к техническим характеристикам компьютера

Необходимый процессор

Рекомендуемый процессор

Необходимое ОЗУ

Рекомендуемое ОЗУ

Прочие требования

32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 2 гигагерц (ГГц)

32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 2,6 гигагерц (ГГц) или выше

1,5 гигабайт (ГБ) (для 32-разрядной системы) или 2 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ)

4 гигабайт (ГБ) (для 32-разрядной системы) или 4,5 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ)

графическое устройство DirectX 9 с драйвером WDDM версии 1.0 или выше

3.5 Требования к маркировке и упаковке

Система предоставляется заказчику в виде архива содержащего *.jar файл проекта и *.bat файл для запуска приложения на компьютере заказчика, удовлетворяющего составу и параметрам технических средств.

4. Проектирование системы

4.1 Система агентов

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

1. Первой встает задача сбора информации и необходим агент для выполнения этой задачи.

Сборщик. Агент для сбора информации из профиля пользователя сети "ВКонтакте". Это такая информация, как статус, оценки "мне нравится", сообщества, аудиозаписи, видео, всё, что может помочь выявить интересы пользователя.

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

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

3. Ну и последняя масштабная задача - поиск и сбор рекомендуемого контента в сети Интернет для последующего предоставления пользователю.

Рекомендатель. Агент, собирающий подходящий контент в сети Интернет основываясь на рекомендациях для каждого конкретного пользователя.

Исходя из описанной выше функциональности агентов, архитектура системы будет выглядеть следующим образом:

Рисунок 4. Архитектура системы

Профиль ВКонтакте в данном случае подразумевает под собой, все данные со страницы пользователя в контакте. Страница пользователя "ВКонтакте" содержит информацию разного рода: персональная информация, которую пользователь заполняет сам, список сообществ, подписок, который формируется в ходе активности на сайте ВКонтакте, медиа контент (фото, аудио, видео).

Агент Сборщик, посредством вызова методов ВКонтакте API, получает ответ в формате JSON, откуда он вычленяет необходимую информацию. Пример:

Рисунок 5. Ответ в формате JSON на запрос audio.get VK API

Например, в случае с аудиозаписями из запроса ВКонтакте API audio.get (Рис. 5), Сборщик извлечет только тег artist, так как именно по артисту будут выдаваться рекомендации. Затем Сборщик заносит собранные данные в базу интересов для дальнейшего анализа.

Когда Сборщик закончил сбор данных он подает сигнал Анализатору. Агент Анализатор, в первую очередь производит ранжирование по данным, собранным Сборщиком, то есть предполагает, что из того, что находится у пользователя на странице, нравится ему больше. Это сделано, чтобы в дальнейшем расставить приоритеты для рекомендаций: какие рекомендации будут более интересны, а какие менее. Для того чтобы проранжировать объекты по важности будет использоваться метод схожий по смыслу с количественным методом контент-анализа. В случае контент-анализа, по количеству встречаемых слов в тексте определяется тематика, например, статьи в газете. По такому же принципу можно попробовать оценить, какой исполнитель интересует пользователя больше других, по количеству песен каждого исполнителя в списке аудиозаписей из профиля социальной сети "ВКонтакте". После ранжирования, Анализатор, путем обращения к сторонним базам имеющим классификацию объектов (IMDb, lastFM), выявляет объекты, схожие с теми что были собраны со страницы пользователя "ВКонтакте", которые будут являться критериями поиска рекомендаций.

Закончив определение предпочтений пользователя, и выявив объекты для рекомендаций, Анализатор подает сигнал Агенту Рекомендателю. Рекомендатель в свою очередь обращается к реестру сайтов, где он получает список сайтов, на которых может быть найден рекомендуемый контент. Реестр сайтов сократит масштаб поиска и индексирования множества лишних страниц. Рекомендатель индексирует каждый сайт из реестра и записывает список страниц каждого сайта в базу данных. Затем имея список URL для поиска и объекты, которые могут заинтересовать активного пользователя, Рекомендатель собирает в Интернете контент и затем предоставляет его пользователю.

4.2 Схема базы данных системы "EZSurf"

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

Рисунок 6. Инфологическая модель системы "EZSurf"

При выборе модели данных будущей СУБД были рассмотрены иерархическая, сетевая и реляционная модели данных. В данной ситуации наиболее подходящей была принята реляционная модель, в связи с этим даталогическая проекция базы выглядит следующим образом:

Рисунок 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 - идентификатор сайта

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 проиндексированной страницы

5. Реализация

Для реализации системы "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).

Рисунок 9. Пример работы с pgAdmin III

5.1 Реализация интерфейса

Реализация интерфейса при написании системы "EZSurf" вызвала немало сложностей, по большей части, потому что толком никакой информации о создании интерфейсов для мультиагентных систем найдено не было. Изначально было задумана полная реализация интерфейса на JavaFX, необходимо было, каким то образом, создавать экземпляр агента и передавать его контроллеру, однако возникла проблема с потоками JADE агентов и JavaFX Application Thread, при исполнении которых возникали исключительные ситуации.

В итоге при реализации интерфейса использовались две стандартных библиотеки Java Swing и JavaFX (начиная с JDK 1.7). Был найден способ использования отдельных компонентов интерфейса библиотеки JavaFX в Java Swing фрейме, который в свое время мог принимать экземпляр агента в качестве параметра в конструкторе. Такой подход позволил создавать окно приложения из потока агента в методе setup посредством передачи в конструктор объекта формы указателя на самого себя - this (см. стр. Приложения текст программы строка…).

Весь интерфейс прописан в классе CollectorGuiAuth.java (см. Рис. 14), который наследует класс JFrame - стандартный класс Java Swing для создания форм приложения. Из-за такого не стандартного подхода к созданию интерфейса, все состояния интерфейса рисуются на одном и том же фрейме, посредством установки свойства видимости компонентов в значение false и динамического создания компонентов. То есть экраны разные, но объект используется для их отображения один и тот же.

На первом экране приложения использованы компоненты библиотеки JavaFX WebView, WebEngine и компонент библиотеки Java Swing - JFXPanel, который позволил встроить JavaFX объекты в JFrame(Рис. 10).

Рисунок 10. Первый экран приложения - Авторизация "ВКонтакте"

На втором экране после успешного прохождения авторизации появляется экран с кнопкой запуска основного функционала. JFXPanel принимает значение видимости false, и создается объект обычной JPanel из библиотеки Java Swing (Рис. 11).

Рисунок 11. Второй экран приложения - Запуск сбора, обработки, анализа приложение профиль вконтакте серфинг

На третьем экране снова понадобился компонент из библиотеки JavaFX - ProgressIndicator. Для того чтобы наглядно показать процесс сбора, обработки, анализа данных добавляем JFXPanel с ProgressIndicator на основной фрейм, а у JPanel второго экрана устанавливаем свойство видимости в значение false (Рис. 12).

Рисунок 12. Третий экран приложения - индикатор процесса обработки, сбора и анализа данных

Четвертый экран - последний, показывает результаты работы системы - рекомендации. Обратно возвращается JPanel, делая не видимой JFXPanel, и динамически создаются блоки рекомендации. Каждый блог предствляет собой JLabel - заголовок статьи по нажатию на который статья открывается в браузере, JLabel созданный из объекта ImageIcon, который в свою очередь создан из URL обложки статьи, и JTextArea - описания статьи (Рис. 13).

Рисунок 13. Последний экран приложения - результаты работы системы

5.2 Реализация агентов

Для удобства разъяснения реализации агентов ниже представлена диаграмма классов системы "EZSurf" (Рис. 14). Для создания агентов использовалась сторонняя библиотека JADE(Java Agent Development Environment), каждый агент представлен отдельным классом, который наследует класс jade.core.agent.

Рисунок 14. Диаграмма классов системы "EZSurf"

Все агенты инициализируется при запуске программы. Происходит вызов метода setup всех трех агентов. Дальнейшее взаимодействие происходит посредством обмена ACL сообщениями, где JADE создает очередь и управляет потоком ACL-сообщений[10].

Агент Сборщик представленный классом Collector, в котором происходит сбор данных из профиля пользователя в социальной сети "ВКонтакте", также отвечает за создание окна приложения в методе setup, который вызывается при создании агента. После того как пользователь авторизуется "ВКонтакте", и нажмет кнопку "SURF" сработает обработчик событий actionPerformed в классе CollectorGuiAuth, в котором происходит вызов метода агента onGuiEvent, который в свою очередь производит вызов метода сбора данных(collectData). Перед тем как начать собирать новые данные метод clearDBs удаляет данные из базы по текущему пользователю.

Метод сбора данных использует объект класса VKCommunication, содержащий методы вызова VK API для получения списков аудио, видео и персональной информации, в которых также происходит парсинг JSON ответов для получения нужных данных. В случае с аудио это исполнитель. На рисунке 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 по следующему алгоритму:

Рисунок 17. Таблица registry

Таблица 2. Расшифровка значений колонки type в таблице registry

Код

Тип контента

0

Интересы

1

Музыка

2

Видео

3

Все типы

· Загрузить страницу с адресом pageURL.

· Поместить адрес pageURL в список посещенных страниц.

· Найти ссылки на загруженной странице с адресом pageURL.

· Для каждой найденной ссылки не находящейся в списке посещенных страниц запустить процедуру из пункта 1.[11]

Таким образом, выходит, что алгоритм использует рекурсивный вызов, что означает большую трудоемкость и ресурсоемкость. Однако если для каждого сайта запустить данный алгоритм в разном потоке параллельно, то это ускорит процесс. Также для управления заданиями и потоками использованы такие структуры данных как пул потоков - ThreadPoolExecutor и связанная блокирующая очередь - LinkedBlockingQueue[11] из стандартной библиотеки java.util, что также позволяет оптимизировать данный процесс. Если создано заданий больше чем может пул потоков обработать одновременно, то задачи простаивают в этой очереди, и время их жизни задается в конструкторе пула потоков. В данном случае время жизни заданий 5 минут. За хранение адресов уже посещенных страниц отвечает такая структура данных как hash map из той же библиотеки java.util.

Рисунок 18. Схема алгоритма индексации [11]

В процессе каждая страница проверяется на наличие рекомендательного контента. Из таблицы recommendation в структуру данных List<String> записывается колонка rec_info. В rec_info будет записано имя артиста, название видео или хобби, в случае если в колонке type значение audio, video или hobby соответственно. Для каждого объекта в этом List<String>, выявленного анализатором, как рекомендуемого, происходит поиск совпадений на странице. С помощью сторонних библиотек Jericho и jSoup происходит извлечение содержимого мета тегов title, description и keywords. Если хотя бы в одном из мета тегов присутствует вхождение искомой строки и хотя бы одно вхождение найдено в теле HTML страницы, то есть внутри тега body, то страница принимается за рекомендуемую. Содержимое тегов title и description записываются в базу результатов как заголовок и описание статьи соответственно.

Заключение

Основной идеей данной работы была попытка сделать минимально нагруженную рекомендательную систему, основанную на подходе фильтрации содержимого(content-based). Использование профиля социальной сети "ВКонтакте" избавило как от необходимости хранения данных об истории активности пользователя внутри системы, поскольку профиль пользователя "ВКонтакте" регулярно обновляется (добавление новой музыки, видео и т.д.), так и от проблемы холодного старта за исключением случая, когда пользователь имеет пустой профиль.

Во избежание большого количества данных об объектах рекомендаций системы и введения своей системы классификаций объектов были использованы базы данных и системы классификаций сторонних сервисов, таких как lastfm и themoviedb.

Все поставленные задачи выполнены в полном объеме, а именно:

1. Был проведен анализ предметной области;

2. Выполнено проектирование системы;

3. Разработана база данных;

4. Разработано клиентское приложение, с помощью которого пользователи смогут взаимодействовать с системой;

5. Разработан агент для сбора данных из профиля "ВКонтакте";

6. Разработан агент, который анализирует полученные данные и на их основе создает список схожих объектов для дальнейшего поиска рекомендаций;

7. Разработан агент для индексации веб страниц и сбора на них рекомендованного контента, который представляет поискового робота.

Данная система имеет возможности дальнейшего развития, среди которых можно выделить следующие:

· Увеличение реестра сайтов

· Использование других всевозможных данных из профиля

· Оптимизация алгоритма поискового агента (Рекомендателя) для индексации страниц и парсинга их содержимого

· Сбор данных из профиля в нескольких социальных сетях.

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

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

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-at-grooveshark-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/ru-ru/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/OTO_2005_3_04.pdf

11. Журавский В. Простой поисковый робот // Блог Виталия Журавского. URL: http://juravskiy.ru/?p=1005 (дата обращения 28.04.2014)

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)

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.