Анализ предметной области
Что же касается подхода основанного на данных, здесь возникает проблема отсутствия в разрабатываемой системе профилей, потому что пользователи заходят через профиль «ВКонтакте». Однако, почему бы не использовать профиль «ВКонтакте», как основу рекомендательной системы, который будет использоваться не только во избежание проблемы «холодного старта», но и как историю его активности в данной… Читать ещё >
Анализ предметной области (реферат, курсовая, диплом, контрольная)
Анализ объекта автоматизации
В век информационных технологий, если человеку необходимо найти какую-то информацию, например, почитать новости, он прибегает к помощи сети Интернет, а не идет покупать газету. Процесс поиска в Интернете необходимой или просто интересной информации, так называемый веб-сёрфинг, зачастую отнимает немало времени. А если у человека еще и несколько интересов, то этот показатель вырастет в разы.
Обычно, описанный выше процесс происходит следующим образом: пользователь вводит запрос в поисковую систему, в ответ на который, как бы хорошо не был сформирован этот запрос, получает множество страниц; затем, он просто начинает переходить с одной страницы на другую в поисках нужной информации. Этот процесс может происходить в цикле до тех пор пока человек не найдет то, что его интересует. Ниже представлено схематичное описание этого процесса:
Рисунок 1. Процесс веб-сёрфинга.
Целью данной работы является именно автоматизация процесса веб-сёрфинга.
Анализ информационных технологий по направлению разработки
Для того чтобы автоматизировать процесс веб-сёрфинга необходимо понимать, что же интересует каждого отдельного пользователя, его увлечения, то, что он мог бы искать в Интернете. Проблемами выявления предпочтений пользователей занимается такая область информационных технологий как рекомендательные системы [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].