Разработка клиентского приложения для социальной сети

Обзор основных аналогов программных продуктов для разработки клиентского приложения ВКонтакте. Проектирование базы данных. Обоснование выбора языка программирования. Разработка клиент-серверного приложения и его интерфейса. Создание и запуск программы.

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

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

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

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

1

МИНОБРНАУКИ РОССИИ

федеральное государственное бюджетное образовательное учреждение высшего образования

«Балтийский государственный технический университет «ВОЕНМЕХ» им. Д.Ф. Устинова» (БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова)

Выпускная квалификационная работа

По программе бакалавриата

На тему: Разработка клиентского приложения для социальной сети

Булгакова Артема Дмитриевича

Руководитель:

Ярошевская Е.Ю.

Реферат

Пояснительная записка 69 с., 35 рис., 10 табл., 29 источн.

КЛАССИФИКАЦИЯ, СОЦИАЛЬНАЯ СЕТЬ, АЛГОРИТМЫ, ПРОГРАММА, СЕТЬ ОБУЧЕНИЯ, ИМПОРТ ДАННЫХ, БАЗА ДАННЫХ, ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Объектом исследования является социальная сеть ВКонтакте.

Предметом исследования является использование клиентского приложения автоматической сортировки каналов в социальной сети ВКонтакте.

Был проведен анализ клиентского приложения автоматической сортировки каналов в социальной сети ВКонтакте.

Приводятся основные методы сортировки информационных каналов в социальной сети в контакте.

Перечень обозначений и сокращений

В настоящей пояснительной записке применяют следующие сокращения и обозначения:

Backend - Бекенд, серверная часть приложения

CMS (англ. ContentManagementSystem) - система управления содержимым

Frontend - Фронтенд, клиентская часть приложения

HTML - HyperTextMarkupLanguage

JSON- JavaScriptObjectNotation

БД - база данных

ИТ -информационные технологии

ОС - операционная система

ПО - программное обеспечение

СУБД - система управления базами данных

Содержание

Введение

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

1.1 Проблема предметной области

1.2 Обзор аналогов программных продуктов для разработки клиентского приложения ВКонтакте

2. Проектирование приложения социальной сети ВКонтакте

2.1 Выбор архитектуры приложения

2.2 Проектирование базы данных

3. Разработка приложения социальной сети

3.1 Обоснование выбора языка программирования

3.2 Алгоритмы создания сети

3.3 Разработка клиент-серверного приложения

3.4 Разработка интерфейса приложения

3.5 Создание и запуск приложения

Заключение

Список использованных источников

Введение

В современном мире существует множество различной информации, которая является очень значимой для нас. Это касается и Интернет-пространства. Согласно исследованиям аналитической компании IDC, объем данных, хранящихся в Интернете, приблизился к отметке в 500 экзабайтов (500 млрд Гб) (по состоянию на 2018год). Аналитики исследовали, что этот объем с каждым годом удваивается примерно в полтора раза. Одной из значимых причин быстрого роста, является распространение социальной информации в социальных сетях, в том числе российского контента ВКонтакте. В этой работе разрабатывается клиентское приложение для социальной сети ВКонтакте, которая на сегодняшний день очень распространена в сети интернет.

Целью работы являются анализ и разработка клиентского приложения для автоматической сортировки каналов в социальной сети ВКонтакте.

Задачи работы:

исследовать предметную область социальной сети ВКонтакте;

рассмотреть несколько методов машинного обучения для классификации текстов;

подготовить датасет для клиентского приложения;

разработатьсервернуючастьприложения;

разработатьклиентскуючастьприложения;

выполнить запуск приложения в социальной сети ВКонтакте;

протестироватьработуприложения.

В выпускную квалификационную работу входят введение, три раздела и заключение.

Во введении раскрывается значимость работы, актуальность исследования. Рассматривается проблематика данных, обозначаются цели и задачи.

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

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

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

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

Заключение включает обобщенные выводы по всей проделанной работе.

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

1.1 Проблема предметной области

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

Социальная структура - это структура, состоящая из группы узлов, которыми являются социальные объекты (люди или организации), и связей между ними (социальных взаимоотношений).

По такому принципу в Интернете действуют социальные сервисы. Социальные сервисы представляют собой сайты, созданные с целью, поиска, знакомств и общения людей.

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

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

Одна из обычных характеристик социальных сетей -- система друзей и групп, которая постоянно растет.

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

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

Сетевые социальные сервисы являются средствами, обеспечивая возможности:

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

Сначала были разработаны профессиональные социальные сайты, которые создавались для соискателей и работодателей, система рекомендаций, репутации и карьерного опыта в действии. Например, LinkedIn.com. В России пытались сделать, что-то похожее на moikrug.ru.

Начало социальным сетям в российском сегменте сети Интернет положил проект Оdnoklassniki.ru. Объединяющим фактором зарегистрированного пользователя, является место работы или место учебы. Зарегистрированный в 2002 году сайт, получил свою популярность к 2006 году. В это время появились уже несколько новых социальных сетей.

Понятие «Социальная сеть» интерпретируется различными пониманиями.

Так, с точки зрения М.Анисимова, социальная сеть -- это сайт, созданный с целью, поиска, знакомств и общений.

Специалистами из студии веб-дизайна «Антула», было дано определение социальной сети в Интернете. Они полагали, что социальная сеть в Интернете - сайт, позволяющий пользователям, после предварительной регистрации, размещать на сайте различную информацию: текст, фотографии, видео. При этом, пользователи социальной сети могут осуществлять поиск информации, обмениваться различной информацией, а также, находить старых и новых друзей.

Сайт «Галилео» опубликовал свое определение: «В Интернете социальная сеть -- это программный сервис, площадка для взаимодействия людей в группе или в группах».

Социальная сеть -- это сайт или ресурс в сети (социальный сервер), созданный с целью поиска, знакомств и общения людей. Социальная сеть содержит сетевые сервисы, которые объединяет общий сценарий наличия пользователей:

Создается личная страница со своими данными, которая содержит такую информацию(датарождения, местожительства, ФИО и т. п.)

Пользователь может добавиться в другие социальные группы. Например: места учебы, отдыха, работы, службы, группы по интересам.

Может осуществляться поиск знакомых по группам и вне других групп, что позволяет добавить их «в друзья».

Осуществляется переписка между друзьями внутренними сообщениями.

Все пользователи могут оценивать фотографии, видео и аудио файлы.

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

Доступ к социальным сетям осуществляется только зарегистрированными и авторизованными пользователями.

Согласно данным аналитической компании StrategyAnalytics около 1 млрд. человек будет пользоваться в перспективе. Согласно данным компании Symantec, около 50% подростков по всему миру (в США до 76%) в возрасте от 13 до 17 лет обмениваются и общаются информацией в социальных сетях. По результатам исследования "NeverEndingFriending", все новое поколение, которое общается в социальных сетях, обладает возможностью озвучивать свои интересы и разделять их с окружающими. Это дает возможность строить отношения с другими и в социальных сервисах Facebook и MySpace.

Распространенным примером приложения, использующим разбиение по категориям, является мессенджер ВКонтакте. В 2022 году была создана нейросеть, анализирующая миллионы постов ежесекундно. Этопозволяет в автоматическом режимеформировать ленту с трендами на выкладке дня «Актуальное».

В основе работы нейросети является алгоритм, который находит и определяет темы с высоким потенциалом цитируемости и обсуждаемости. Далее, автоматически группирует записи в удобном виде по тематическим сюжетам. С новой лентой выкладкой все читатели будут легко получать информацию в виде новостей. А, все авторы, легко получают новую аудиторию и дополнительный охват в сообществах и медиа контентах. Все желающие смогут протестировать ленту «Актуальное". Команда «ВКонтакте» будет развивать продукт и внимательно следить за экспериментом и обратной связью. На начальном этапе анализируются наиболее актуальные и свежие записи, а глубина просмотра источников и количество тем будут постепенно расширяться.

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

Рисунок 1 - Приложение ВКонтакте

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

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

классификация обращений - определение категорий новых обращений в службы клиентской поддержки;

обнаружение спама - электронная почта, комментарии в социальных сетях;

классификация документов - определение новых документов в одну из предопределенных категорий;

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

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

1.2 Обзор аналогов программных продуктов для разработки клиентского приложения ВКонтакте

Одни социальные сети ориентированы на поиск знакомых людей и общение с ними, другие представляют собой бизнес-сети, третьи созданы для общения людей, объединённых по интересам. Существуют различные условные классификации социальных сетей в Интернет-среде. В работе [14] предложен следующий подход:

1) социальные сети общей тематики (MySpace, Facebook, ВКонтакте, Одноклассники и др.) в плане неформального образования дают возможность доступа к информации, которая удовлетворяет их собственные интересы;

2) социальные специализированные сети, например: Last.Fm (музыкальная социальная сеть), Geni (семейная социальная сеть, объединяющая людей на основе семейных связей), Autokadabra.ru (социальная сеть автолюбителей). Сюда же относятся узкоспециализированные профессиональные сети, объединяющие специалистов и ученых, например, UkrainianScientistsWorldwide, e-LearningPRO, Scipeople.ru, и др. Исследователями Ж. Лейвом и Э. Венгером в работе «Ситуационное обучение: легитимное периферическое участие» [13] с целью эффективного обмена знаниями была обоснована необходимость создания профессиональных сообществ, раскрыто содержание деятельности и их виды. Изучая совместную деятельность людей в процессе обучения, они рассматривали приобретение знаний как социальный процесс, в котором участвуют люди с различным уровнем компетенций (от чего зависит их авторитет в группе);

3) деловые социальные сети - сети, способствующие профессиональному развитию и построению карьеры личности. Среди них МойКруг и Plaxo. Е.Д. Патаркин выделяет две категории социальных сетей:

1) сети, в которых основные типы узлов связаны с участниками и их профайлами или страницами участников (Facеbook, ВКонтакте, LinkedIn и др.),

2) сети, в которых наибольшее значение имеют узлы, которые представляют собой цифровые объекты - статьи, программы, видеозаписи, закладки (Википедия, YouTube, Flickr, Delicious и т.д.).

В работе [15] дается классификация социальных сетей с позиций коммуникативности и доминирования: 1) социальные сети с высокой доминантностью и высокой коммуникативностью; 2) социальные сети с высокой связанностью и низкой доминантностью; 3) социальные сети с низкой коммуникативностью и низкой доминантностью; 4) социальные сети с низкой коммуникативностью и высокой доминантностью. Анализ других источников позволяет классифицировать социальные сети по таким категориям, как [16]: 1) тип (личное общение, деловое общение, видео, аудио, фото, геолокация, покупки, блоггинг, новости, вопрос-ответ, закладки, виртуальные миры, тематические, развлечения / знакомства); 2) открытость информации (открытые, закрытые, смешанные); 3) географический охват (мир, страна, территориальная единица, без региона - международная); 4) уровень развития (веб 1.0 - веб 3.0). Наиболее распространенными сегодня сетями в странах СНГ, особенно в подростковой среде, являются сети «ВКонтакте», «Одноклассники», «Мир тесен», «Мой Круг» и другие [17]. Будут рассмотрены некоторые социальные сети, наиболее привлекательные для образовательной сферы [18].

ВКонтакте - популярная в странах СНГ социальная сеть, основанная в 2006 году выпускником Санкт-Петербургского государственного университета Павлом Дуровым и командой разработчиков. За основу была взята американская социальная сеть Facebook, которая тогда не имела русскоязычного интерфейса [23]. По данным на февраль 2013 года ежедневная аудитория «ВКонтакте» - более 43 миллионов человек [24]. По данным сайта Alexa.com, среди 500 сайтов «ВКонтакте» занимает 2-е место по посещаемости в России, 2-е место - в Украине и 19-е - в мире (рисунок 2).

Рисунок 2 - Общий вид интерфейса социальной сети «ВКонтакте»

В сети «ВКонтакте» существуют различные образовательные группы, среди которых: Проект «Освіта без кордонів», Познавательное видео, BBCDiscovery (документальные фильмы), Иллюстрированный журнал изящных искусств, Художественная Фотография, BeginEnglish, Английский язык для всех, Виртуальная школа научно-технического творчества и т.п. Для сети характерен стандартный набор возможностей: создание профиля с информацией о себе, создание и распространение контента, гибкое управление настройками доступа, взаимодействие с другими пользователями приватно (через личные сообщения) и публично (с помощью записей на «стене», а также через механизм групп и встреч), отслеживание через ленту новостей активности друзей и сообществ. Как правило, при написании сообщений можно «прикреплять» фотографии, рисунки, аудио-треки, видеозаписи и опросы.

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

В свежей подборке 2021 года собрал наиболее популярные и актуальные из них.

На рисунке 3 представлен дизайн KateMobile с прозрачной темой.

Рисунок 3 - KateMobile с прозрачной темой

Можно бесконечно противиться устаревшему дизайну KateMobile, но не признавать распространённость и высочайшую популярность клиента на фоне конкурентов никак нельзя. Почти 7 млн подписчиков в официальной группе проекта в «ВКонтакте» и более 10 млн скачиваний в магазине GooglePlay -- в течение последних нескольких лет приложение продолжает уверенно оставаться в лидерах рейтинга. Среди главных особенностей KateMobile: специфичный минималистичный интерфейс с горизонтальными вкладками разделов, кастомизация внешнего вида и немного желанных дополнительных возможностей, включая знаменитый режим невидимки и не только.

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

фильтр новостей и скрытие по ключевым словам;

установка на внешнюю SD-карту;

частичный режим невидимки (не работает при отправке сообщений и публикации записей);

поддержканесколькихаккаунтов;

установка PIN-кода или отпечатка пальца на запуск приложения.

VFeed - альтернативный клиент для вк, теперь и на Android! VFeed - приложение для iPhone, которое представляет собой клиент ВКонтакте, ориентированный на обеспечение удобного просмотра контента на основе списка новостей из популярных пабликов, сгруппированных в формате тематических подборок. То есть, кроме основных функций социальной сети, пользователь получает еще и набор приятных бонусов, например, знакомства внутри сообщества пользователей приложения.

Удобная нечиталка сообщений и ответовПин-код и TouchId, Смена вкакаунтов, Левый бар, Озвучивание сообщений ботами, интеграция с музыкальным сервисом Deezer.

Стоит отметить широкие возможности кастомизации внешнего вида приложения под себя любимого, да и в целом большое количество настроек, среди которых VFeed предлагает такие возможности как: поддержка мультиаккаунтов, переключение между ними, фильтрация постов в подборках по количеству лайков, установка пароля на приложение и разблокировка при помощи touchid, режим «невидимки» для пользователя.

На рисунке 4 показано приложение Vfeed для IPhone.

Рисунок 4 - VFeed - Приложение для iPhone

Twitter - международная социальная сеть микроблогов, позволяющая пользователям публиковать текстовые сообщения до 140 символов (включая пробелы), используя веб-интерфейс, SMS или сторонние программы-клиенты. Сообщение может включать также фотографию, видео-, аудио-приложения и Интернет-ссылки (рисунок 2). По данным сайта Alexa.com, среди 500 веб-сайтов сервис Twitter занимает 15-е место по посещаемости в России, 23-е - в Украине и 12-е место - в мире. Сегодня эту сеть используют для проведения исследований, опросов, установления новых контактов, ведения диалога с учеными и преподавателями - сервис осуществляет в среднем 1,6 млрд. поисковых запросов в день. Нарисунке 5 показанобщийвидинтерфейсасети Twitter.

Рисунок 5 - Общий вид интерфейса социальной сети «Twitter» Twitter в учебном процессе можно использовать для [20]:

коммуникативной поддержки семинаров;

проведения мозгового штурма в группе;

выбора тем для будущих семинаров;

размещения ссылок на учебные материалы;

информирования об изменениях в расписании занятий;

консультирования;

анализа деятельности конкретного учащегося;

проведения опросов;

ведения тематического журнала;

отслеживания новостей, опубликованных известными деятелями науки;

информирования о текущем состоянии выполнения научно-исследовательской или дипломной работы;

обмена ссылками.

К примеру, студент, участвуя в научной конференции, может своевременно делиться своими впечатлениями и идеями, передавать мнения других участников мероприятия.

Cоциальная сеть ВКонтакте очень распространенная социальная сеть в интернет. Это мощная платформа, созданная для регистрации миллионов пользователей. И сегодня, ВКонтакте -- наиболее известная социальная сеть Рунета.

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

В Контакте можно завести свою страничку, добавить личную информацию, фотографии, аудио- и видеозаписи. «Моя страница ВКонтакте» является одним из мест личного притяжения в интернете. Так как, всем хотелось бы содержать свою страничку в активном состоянии, любоваться ею, выкладывать фотки и писать популярные статусы. Кроме того, в социальной сети можно обмениваться личными сообщениями, вступать в группы по интересам и приглашать друзей, дарить подарки и, конечно же, смотреть ленту новостей. В нее попадает все, что будет доступно на личной странице, отметки или высказывания друзей, а также все обновления в тех группах, в которых состоит пользователь. Это делает социальную сеть ВКонтакте очень популярной и перспективной для большинства русскоязычных пользователей, особенно сегодня, когда в период санкций блокируются многие зарубежные социальные платформы, для доступа ко многим ресурсам в интернет.

2. Проектирование приложения социальной сети ВКонтакте

2.1 Выбор архитектуры приложения

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

Будут рассмотрены некоторые основные паттерны, разделив их на условные группы в зависимости от решаемой задачи.

Блок шаблонов предлагает готовые решения для декомпозиции разделения приложений на микросервисы.

Рисунок 7 - Общий вид паттерна Бизнес-возможности

Самым распространенным способом разбиения на микросервисы, является способ определения бизнес-возможностей приложения. И, как следствие, создание по одному микросервису для каждой. Бизнес возможности предполагают собой функции, доступные в процессе работы с приложениями социальной сети. Общийвидпаттерна Бизнес возможности изображен на рисунке 7

В процессе разбиения на бизнес возможностипоявляются сущности «божественные классы» (GodClasses). Это такие сущности, которые будут общими в пределах нескольких микросервисов. Для разделения они затруднительны.

Например, в приложении для интернет-магазина может стать заказ, который используется сразу в нескольких сервисах: доставка заказов (OrdersDelivery), оповещения о заказах (OrdersAlerts), предзаказы (Preorders), создание заказов (OrdersCreation).

Для устранения появления «GodClasses», используется альтернативный шаблон, который способен разложить на микросервисы, образуя поддомены. Этот процесс основан на концепции предметно-ориентированного проектирования (Domain-DrivenDesign, DDD). Этот шаблон разбивает всю модель предметной области (домен) на поддомены. Каждый поддомен имеет свою модель данных, которая образует в области действия ограниченный контекст (BoundedContext). В таких случаях, внутри этого ограниченного контекста образуется свой уникальный микросервис обработки. Основная задача использования предметно-ориентированного проектирования заключается вподбореподдоменов к границам таким образом, чтобы они могли быть максимально независимыми друг от друга.

При использовании интернет-магазина, котором все связано с заказами, рассматривается процесс создания микросервиса по управлению заказами внутри этого поддомена. Это позволяет сократить число микросервисов на основе бизнес-возможностей и декомпозиций. Четыре микросервиса преобразовываются в один. На рисунке 8 представлен общий вид паттерна «Разбиение по поддоменам».

Рисунок 8- Общий вид паттерна «Разбиение по поддоменам»

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

Это приводит к тому, что единовременный переход на микросервисную архитектуру оптимизирует процесс обработки информации, так как добавление поддоменов увеличивает задержки и затрудняет тестирование. Нарисунке 9 изображенобщийвидпаттерна «Разбиениепо поддоменам»

Рисунок 9- Общий вид паттерна «Разбиение по поддоменам»

Другой шаблон «База данных на сервис» (DatabasePerService). В данном шаблоне при переходе на микросервисы предоставляется возможность каждому сервису добавить собственное хранилище данных. При этом, имеется в виду логическое разделение данных, которое позволяет всем микросервисам совместно использовать общую физическую базу данных. Но, при этом, все микросервисы, должны функционировать с отдельной схемой, коллекцией или таблицей. Этот паттерн DatabasePerService, работающий по такому шаблону, повышает автономность микросервисов, что уменьшает связь между командами, которые конструируют отдельные сервисы обработки. На рисунке 10 изображен общий вид паттерна База данных на сервис» (DatabasePerService)

Рисунок 10- Общий вид паттерна База данных на сервис» (DatabasePerService)

Следующий шаблон, который именуется, как «Разделение команд и запросов» (CommandQueryResponsibilitySegregation, CQRS). Этот паттерн предполагает разделить процесс изменения данных (Command) и чтения данных (Query). В шаблоне CQRS присутствуют две формы разделения: простая и расширенная.

Простая форма представляет такой процесс, при котором используются отдельные модели ORM (Object-RelationalMapping), но общее хранилище данных. Расширенная форма использует разные хранилища данных. И все эти хранилища оптимизированы для записи и чтения данных. В этом шаблоне данные копируются из хранилища в хранилище для чтения и записи асинхронно. В результате чего, обмен информацией из хранилища для чтения отстает от обмена информацией у хранилища для записи. Но, в общем случае, весь процесс является согласованным. Расширенный паттерн CQRS часто используется совместно с паттерном EventSourcing. Паттерн CQRS (рисунок 11) обеспечивает высокую доступность данных, независимое масштабирование систем чтения/записи и быстрое чтение данных в сервисах, управляемых событиями.

Рисунок 11- Общийвидпаттерна «Разделениекоманд и запросов» (CommandQueryResponsibilitySegregation, CQRS)

Очень часто используется Шаблон «Поиска событий» (EventSourcing). Этот шаблон часто асинхронные методы связи: сообщения или события. В результате этого процесса приложения с микросервисной архитектурой имеютпостоянное количество операций. В традиционных базах данных объект с текущим состоянием сохраняется напрямую. Использование шаблона EventSourcing (рисунок 12) вместо объектов сохраняет события, которые изменяют их состояния. В результате чего, итоговое состояние объекта происходит путем повторной обработки серии событий, пришедших за определенное время. И в таких случаях, разные службы воспроизводят события из хранилища событий. Эта операция необходима для перевода соответствующего состояния в нужное из своих хранилищ данных.

Для реализации хранилища событий обычно применяется шаблон CQRS. программный приложение интерфейс серверный

Рисунок 12- Общий вид паттерна «Поиск событий» (EventSourcing)

Все приложения в процессе работы используют разнообразные конфигурационные параметры, такие как: адреса служб, строки подключения к базам данных, учетные данные, пути к сертификатам, и так далее. Но, в таких случаях, параметры могут отличаться в зависимости от среды выполнения: Dev, Stage, Prod, так далее. Сохранение конфигурации в локальной форме неприемлимо, особенно при переходе на микросервисы обработки. Это приводит к серьезным рискам безопасности и требует повторного развертывания при каждом изменении конфигурационных параметров. Поэтому в приложениях корпоративного уровня рекомендуется использовать шаблон ExternalConfiguration. Это позволяет хранить все конфигурации во внешнем хранилище. В качестве внешнего хранилища может выступать облачная служба хранения, база данных или другая система.

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

На рисунке 13 изображен общий вид паттерна «Внешняя конфигурация» (ExternalConfiguration)

Рисунок 13- Общийвидпаттерна «Внешняяконфигурация» (External Configuration)

Правильный подбор соответствующих паттернов во многом упрощает и ускоряет процесс создания конфигурации. При проектировании микросервисов приложений использован паттерн «Внешняя конфигурация» (ExternalConfiguration). Благодаря параметрам паттерна «Внешняя конфигурация» (ExternalConfiguration) можно добиться следующих преимуществ конфигурации архитектуры социальной сети:

уменьшение ошибок при проектировании микросервисов приводит к необходимости их рефакторинга в дальнейшем;

происходит более быстрая и качественная миграция монолитов на микросервисную архитектуру;

предотвращение ненужных вызовов и неэффективного использования ресурсов;

лучшая масштабируемость: добавление дополнительных сервисов не вызывает затруднений в обслуживании зависимостей;

повышениеотказоустойчивости;

минимизация угроз безопасности, в том числе сокрытие конечных точек микросервисов;

отсутствие проблем с подключением новых сервисов, и их интеграцией друг с другом и базами данных;

сокращение работ по обслуживанию и отладке.

Исходя из всего этого, паттерн «Внешняя конфигурация» наилучшим образом подходит для разработки приложений машинного обучения классификации текстов на базе социальной сети ВКонтакте.

2.2 Проектирование базы данных

При создании базы данных используется СУБД SQL. Это связано, прежде всего с тем, что язык структурированных запросов легко интегрируется в социальную платформу ВКонтакте. ER-диаграмма базы данных имеет упрощенныйвид (рисунок 14). Для разработки приложения необходимо создать 4 таблицы: User, Chat, Message,Category.

Инфологическая модель предметной области строится на следующих данных. Чаще всего предметную область представляют в терминах семантической модели данных, в виде ER -- диаграммы предметной области.

Необходимо отметить, что выявление в предметной области классов объектов, связей, описание и отображение их в диаграмме происходит параллельно.

На рисунке 14 представлена инфологическая модель предметной области.

Рисунок 14 - Инфологическая модель

Даталогическая модель данных - модель предметной области. Построение даталогической модели базы данных - это следующий этап проектирования базы данных методом «нисходящего» проектирования. Исходными данными для даталогического проектирования является модель предметной области. В результате должна быть получена логическая структура базы данных, описанная в терминах выбранной модели данных на основе физических записей. В настоящее время распространение получила реляционная модель данных, на рынке программного обеспечения наиболее широко представлены реляционные СУБД.На рисунке 15 представлена даталогическая модель.

Рисунок 15 - Даталогическая модель данных

Цeлью инфологического этапа проектирования является получение семантических (концептуальных) моделей, отражающих предметную область и информационные потребности пользователей. В качестве инструмента для построения семантических моделей данных на этапе инфологического проектирования является неформальная модель "Сущность-Связь" (ER модель - Entity-Relationship). Моделирование предметной области базируется на использовании графических диаграмм, включающих небольшое число разнородных компонентов.

Основными понятиями ER-модели являются сущность, связь и атрибут.

Сyщнoсть - oтoбражениеoбъекта в пaмяти человека или компьютера.

Oбъeкт - этo нeчтo сyщeствyeщee и различимое, oблдaющee нaбoрoм свoйств.

Даталогическая модель базы данных состоит из 4 таблиц. В таблице 1 приведены категории таблиц, в таблице 2 - атрибуты отношения User.

Таблица 1 - Категориитаблиц

Имясущности

Определение

User

Данные о пользователе

Category

Данные о типекатегории

Chat

Данные о типахчата

Message

Данные о возможных сообщениях в канале

Таблица 2 - Атрибутыотношения User

Атрибут

Типданных

Длина (симв)

id

int

5

login

char

15

e-mail

char

25

password

char

8

В таблице 3 приведены атрибуты отношения Chat, в таблице 4 - атрибуты отношения Category, в таблице 5 - атрибуты отношенияMessage.

Таблица 3 - Атрибутыотношения Chat

Атрибут

Типданных

Длина (симв)

id

int

5

Owner

char

15

name

char

25

category

Char

20

Date - join

date

6

Таблица 4 - Атрибутыотношения Category

Атрибут

Типданных

Длина(симв)

id

int

5

name

char

25

Таблица 5 - Атрибутыотношения Message

Атрибут

Типданных

Длина (симв)

id

int

5

chat

char

15

text

char

500

Date_send

date

6

Date - join

date

6

В данной работе разработаны следующие сущности.

Таблица User, которая предназначена для хранения данных пользователей: идентификатор, логин, пароль и email; таблицаCategory, содержащая название и идентификатор; таблица Chat, которая состоит из полей идентификатор, пользователь (связано с таблицей User), название канала, категория, к которой относится чат (связано с таблицей Category) и дата создания; и последняя таблица - это Message. Она отвечает за сообщения в каналах и содержит поля идентификатор, чат (связано с таблицей Chat), текст сообщения и дату отправки.

Для просмотра содержания базы данных можно воспользоваться графическим клиентом pgAdmin. PgAdmin - это программный инструмент, предназначенный для упрощения администрирования на сервере PostgreSQL[2]. Он входит в базовый комплект установки. С помощью данного инструмента можно в удобном виде создавать, удалять, редактировать базы данных и управлять ими. Чтобы воспользоваться pgAdmin, необходимо запустить его с рабочего стола и в открывшемся окне ввести пароль, заданный для пользователя в момент установки сервера на компьютер.

Как правило, работа с базой данных осуществляется с помощью специального языка запросов - SQL. Для того, чтобы просмотреть содержание базы данных можно воспользоваться командой SELECT (рисунок 16). Для этого выполняется следующий запрос:

select * fromdjango_messenger_chat

И внизу программы в поле DataOutput, в табличном представлении будут расположены те данные, которые ранее были добавлены, представлено на рисунке 16.

Рисунок 16 - Содержание базы данных

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

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

Для начала необходимо выбрать категории, которые будут доступны в социальной сети. Рассмотреть следует наиболее различные между собой темы: путешествия, IT-технологии, спорт, книги и политика. Далее, будет обработано множество текстов, статей, рассказов, соответствующих данным категориям. Таким образом, создается датасет в количестве 100 объектов (рисунок 17). Структура данных включает категорию и текст, относящийся к данной теме.

Рисунок 17 - Датасет для социальной сети ВКонтакте

Вывод: задачи, связанные с вопросами проектирования представляют собой получение семантических (концептуальных) моделей, отражающих предметную область и информационные потребности пользователей. В качестве инструмента для построения семантических моделей данных на этапе инфологического проектирования является неформальная модель "Сущность-Связь" (ER модель - Entity-Relationship). Моделирование предметной области базируется на использовании графических диаграмм, включающих небольшое число разнородных компонентов. Таким образом, проектирование, отражающее приложения социальной сети было получено в виде датасет - обработанной информации в виде табличных данных.

3. Разработка приложения социальной сети

3.1 Обоснование выбора языка программирования

Для разработки приложения были выбраны средства разработкиDjango и Vue.js.

Django - это высокоуровневый веб-фреймворк для языка Python, позволяющий быстро разрабатывать динамические веб-приложения, а также он дает возможность разделить процессы программирования, верстки и дизайна. Он был разработан в 2005 году и предназначался изначально для создания новостных сайтов. Первый релиз был выпущен в сентябре 2008 года. Данный фреймворк следует философии DRY (Don'trepeatyourself). Также стоит отметить, что он имеет открытый исходный код.

Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных. Данный веб-фреймворк используется на таких известных сайтах, как Instagram, Pinterest, YouTube, Google и другие.

Архитектура Django (рисунок 18) похожа на архитектуру MVC (model-view- controller). Urls - отвечаетнаобработку HTTP-запросов.

View - обрабатывает запросы и возвращает ответы. Данная функция имеет доступ к данным, которые нужны для удовлетворения запроса.

Models - это объекты, которые определяют структуру данных.

Template - это шаблоны, в которых описывается структура или разметка HTML-страницы.

К особенностям Django относятся:

Разносторонность - фреймворк может быть использован практически для любых видов веб-приложений;

Безопасность - фреймворк помогает избегать распространенных ошибок программистов;

Масштабируемость - его можно достаточно легко расширить при необходимости;

Отображение ресурсов с использованием новой функции Django

-- Class Based Views.

Автоматическая проверка учетных данных при авторизации;

Автоматическаявалидациявводимыхданных;

Авторизация, аутентификация, права доступа могут быть легко подключены;

Встроенныйудобныйинтерфейсадминистратора

Рисунок 18 - Архитектура Django

Следует рассмотреть разработку клиентской части. Она реализует пользовательский интерфейс, формирует запросы к серверу и обрабатывает их. Самым известным фреймворком является Vue.js. Для работы с данным фреймворком необходимо скачать и установить себе на компьютер Node.js. Node позволяет подключать внешние библиотеки, написанные на различных языках программирования, обеспечивая вызовы к ним из JavaScript-кода [4].

Vue.js довольно новый веб-фреймворк - первый выпуск был сделан в 2014 году. Он также имеет открытый исходных код. Изначально задумывался как веб-фреймворк для разработки одностраничных приложений в реактивном стиле [18].

Особенности Vue.js [2]:

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

Собственные директивы (v-if, v-show, v-model)

Адаптивныйдизайн; Эффектыперехода.

Для запросов к серверной части с клиентской используется Ajax (AsynchronousJavascriptandXML). Он позволяет отправлять запросы и обновлять данные, не перезагружая страницу. Это избавляет пользователя от постоянной перезагрузки страницы, а также экономит время.

Алгоритмработы AJAX [5]:

Пользователь заходит на страницу и нажимает какой-нибудь элемент;

JavaScript определяет, какая информация необходимо для обновления страницы; Браузер отправляет соответствующий запрос на сервер;

3.2 Алгоритмы создания сети

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

Для начала необходимо выбрать категории, которые будут доступны в социальной сети. Будут рассмотрены наиболее различные между собой темы: путешествия, IT-технологии, спорт, книги и политика. Далее следует обработать множество текстов, статей, рассказов, соответствующих данным категориям. Таким образом, создается датасет в количестве 100 объектов (рисунок 19). Структура данных включает категорию и текст, относящийся к данной теме.

Рисунок 19 - Данные для социальной сети

Для того, чтобы создать новую модель сети, необходимо обработать входной текст. Данных процесс позволит убрать из текста грамматическую информацию, оставив смысловую составляющую. Обработка текставключает в себяследующиешаги [9]:

удаление всех знаков препинания, цифр, множественных пробелов;

удаление стоп-слов (союзы, частицы, междометия, предлоги и др.);

стемминг - процесс, который позволяет найти основу слова для ис- ходного [15];

токенизация - разбиение текста на отдельные слова [20];

лемматизация - процесс приведения слова к его нормальной форме [17].

Для начала нам нужно удалить все знаки препинания, цифры и пробелы из текста. Для этого необходимо создать код, имеющий 3 функции (рисунок 7). Первые две функции remove_punctuation() и remove_numbers() в цикле проходят по всем символам и заменяют цифры и знаки препинания на пробел. Далее функция remove_multiple_spaces() удаляет эти пробелы. Завершающее действие данного этапа обработки текста - замена всех прописных букв на строчные при помощи встроенной функции в Pythonlower().

import string

def remove_punctuation(text):

return””.join([ch if ch not in string.punctuation else ` ' for ch in text])

def remove_numbers(text):

return `'.join([i if not i.isdigit() else ` ` for i in text])

import re def remove_multiple_spaces(text):

return re.sub(r'\s+', ` `, text, flags=re.I)

Затем следует этап стемминга. Стемминг - это процесс нахождения основы слова. Например, исходное слово «компания» превратиться в «компан». Для реализации этого процесса в Python есть встроенная функция SnowballStemmer в пакете nltk.stem.snowball. Она самостоятельно преобразует исходный текст, необходимо лишь указать язык- русский.

Результат стемминга можно увидеть на рисунке 20. В колонке text_prep указан исходный текст, а в колонке text_stem - измененный.

Рисунок 20 - Результат стемминга

Далее следует этап лемматизации. Лемматизация - это процесс приведения словоформы к лемме - ее нормальной (словарной) форме. Имея теперь текст, который был обработан стеммингом, нам необходимо восстановить слова в тексте в нормальную форму. В Python также есть встроенный набор функций для лемматизации: word_tokenize в пакете nltk.

Результат данного процесса можно увидеть на рисунке 21. В колонке text_stem указан исходный текст, а в колонке text_sw - измененный.

Рисунок 21 - Результат лемматизации

Наивный байесовский классификатор - простой вероятностный алгоритм, основанный на применении теоремы Байеса с допущением о независимости признаков [10]. Иначе говоря, данный алгоритм предполагает, что наличие признака в классе никак не связано с наличием какого-либо другого признака. В его основе лежит теорема Байеса, которая позволяет определить вероятность какого-либо события при условии, что произошло другое статистически взаимосвязанное с ним событие. Другими словами, по формуле Байеса можно более точно пересчитать вероятность, взяв в расчёт как ранее известную информацию, так и данные новых наблюдений.

Формула Байеса:

,

где P(A) - вероятность наступления гипотезы А, P(B) - полная вероятность гипотезы В, P(B|A) - вероятность наступления события В при истинности гипотезы А.

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

В терминах наивного байесовского классификатора существует такое понятие, как «нулевая частота». Если в обучающем наборе данных какой-либо признак не встречался ранее, модель не сможет распознать данные из тестового набора и, таким образом, присвоит нулевую вероятность этому значению. Данную проблему можно решить с помощью методов сглаживания, например, сглаживание по Лапласу [1].

Теперь будет написаналгоритма байесовского классификатора, используя средства Python. Все необходимые нам библиотеки находятся в пакете scikit-learn. Scikit-learn - один из наиболее широко используемых пакетов Python для DataScience и MachineLearning. Он позволяет выполнять множество операций и предоставляет множество алгоритмов.

В первую очередь разделить требуетсядатасет на обучающую и тестовую выборку. В этом нам поможет встроенная функция train_test_split из пакета scikit-learn. Размер тестовой выборки будет равен 0.4 от 100 объектов, то есть 40 строк.

Далее будет создана модель наивного байесовского классификатора. Будет импортирован пакет Pipeline - конвейер обработчиков. Для него указаны следующие параметры:

CountVectorizer - векторизация текста в матрицу по частотам встречаемости токенов. Векторизация - этоизвлечениепризнаковизтекста [19].

TfidfTransformer - обратная частота встречаемости слов в документе, то есть игнорируются слова, которые не несут высокой смысловой нагрузки в данном контексте.

MultinominalNB - мультиноминальный наивный байесовский классификатор.

from sklearn.naive_bayes import MultinomialNB

from sklearn.pipeline import Pipeline

from sklearn.feature_ extraction.text import TfidfTransformer

from sklearn.feature_ extraction.text import CountVectorizer

nb = PipeLine([(`vect', CountVectorizer()),

(`tfidf', TfidTransformer()),

(`clf', MultinomialNB()),

])

[ ] %%time

nb.fit(x_train, y_train)

Y_pred = nb.predict(X_test)

На рисунке 22 представлен результат выполнения алгоритма.

Рисунок 22 - Результат выполнения алгоритма

Вызывая функцию fit(), обучается модель. Далее при помощи метода predict() делается предсказания к какой категории относятся тексты, относящиеся к тестовой выборке. Стоит отметить, что обучение заняло 36.7 миллисекунд.

Теперь можно вычислить метрику качества, используя функцию accuracy_score() из пакета scikit-learn. На вход должны подаваться предсказанные категории и фактические. На рисунке 23 видно, что точность модели равна 0.525, что является достаточно плохим показателем. В столбце precision указана метрика по каждой теме. Таким образом, можно сделать вывод, что категории IT и политика не были распознаны должным образом.

Рисунок 23 - Результат алгоритма

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

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

Достоинства данной модели: простота в реализации;

возможность добавить регуляризацию (сокращение весов с каждой итерацией); предназначен для задач с большим количеством данных;

функция потерь и семейство алгоритмов могут быть любыми.

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

Теперь требуется приступить к построению алгоритма стохастического градиентного спуска средствами Python. В данной модели используются те же параметры, что и в первой. Только вместо MultinominalNB, импортируетсяSGDClassifier (рисунок 24). Также необходимо указать еще несколько параметров:

Loss - используемаяфункцияпотерь;

Penalty - метод регуляризации (сокращение весов);

Alpha - коэффициентрегуляризации;

Random_state - используется для перемешивания данных при каж- дой итерации;

Max_iter - максимальное число итераций;

Tol - критерийостановки.

Для обучения модели воспользуемся уже известным нам методом fit(), а для предcказания - predict(). Процесс построения в данном случае занял 51.5 миллисекунд.

[ ]fromsklearn.linear_modelimportSGDClassifier

Sgd = Pipeline([(`vect', CountVectorizer()),

(`tfidf', TfidfTransformer()),

(`clf”, SGDClassifier(loss='hinge', penalty='12', alpha=1e-3,

Random_state=42, max_iter=5, tol=None)),

...

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

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