Разработка клиентского приложения для социальной сети
Обзор основных аналогов программных продуктов для разработки клиентского приложения ВКонтакте. Проектирование базы данных. Обоснование выбора языка программирования. Разработка клиент-серверного приложения и его интерфейса. Создание и запуск программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 09.06.2022 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
])
[ ] %%time
sgd.fit(x_train, y_train)
Y_pred = sgd.predict(X_test)
На рисунке 24 представлен результат работы алгоритма.
Рисунок 24 - Результат работы алгоритма
Далее следует проверить точность обученной модели при помощи accuracy_score (рисунок 25). Метрики качества данного алгоритма показали лучший результат, чем наивный байесовский классификатор. Однако, следует отметить, что точность по каждой категории все же отличается. В данном примере темы спорт, политика и книги были точно определены, ошибки возникали только в категориях путешествия и IT.
Рисунок 25 - Точность алгоритма
Логистическая регрессия - метод построения линейного классификатора, который прогнозирует вероятность возникновения некоторого события путем его сравнения с логистической прямой по значениям множества признаков [7].
Данный алгоритм работает по следующему принципу: вводится переменная y, которая в последствии будет принимать значение 1 (событиенаступило) или 0 (событие не наступило) и множество переменных x, которые влияют на вероятность принятия того или иного значения зависимой переменной. Важность логистический регрессии обусловлена тем, что многие задачи анализа данных могут быть решены с помощью бинарной классификации или сведены к ней. Например, с помощью логистической регрессии можно оценивать вероятность наступления какого-либо события: решается задача принадлежности тестовой информации к конкретной категории. Зачастую данный алгоритм используется как инструмент для принятия решений.
Метод логистической регрессии можно рассмотреть, как предсказание непрерывной переменной со значением на отрезке [0, 1] при любых значениях независимых переменных.
Для этого используется регрессионное уравнение, или как его еще называют, логистическое преобразование (2):
?? = 1 + ????? ,
где р - вероятность наступления события, e - натуральный логарифм, у -стандартное уравнение регрессии.
К достоинствам логистической регресии относится:
эффективность;
нетребуетнастройки;
не требует большого количества вычислительных ресурсов;
простота;
может использоваться как база для измерения других более сложных алгоритмов.
К сожалению, данный алгоритм не является одним из самых мощных, и он не может решать нелинейные задачи. Также он плохо работает с независимыми переменными, которые не связаны между собой целевой функцией.
Вкачестве параметров для модели LogisticRegression передаетсяn_jobs (количество ядер ЦП, используемых при распараллеливании классов) и C (инверсия силы регуляризации).
[ ] from sklearn.linear_model import LogisticRegression
logreg = PipeLine([(`vect', CountVectorizer()),
(`tfidf', TfidTransformer()),
(`clf', LogisticRegression(n_jobs=1, C=1e5)),
])
[ ] %%time
logreg.fit(x_train, y_train)
Y_pred = logreg.predict(X_test)
Стоит отметить, что время обучения и построения предсказания заняло 152 миллисекунды. Это является достаточно плохим показателем, если учесть, что объем данных относительно невелик.
Теперь следует проверить точность работы модели. Напомним, что метрики качества измеряются при помощи функции accuracy_score(), на вход которой подаются предсказанные и фактические категории. На рисунке 26 представлены результаты применения данной функции. Точность логистической регрессии равна 0.85. Стохастический градиентный спуск показал такой же результат.
Рисунок 26 - Результат алгоритма
Теперь нам необходимо выбрать алгоритм, который будет интегрироваться в социальную сеть. В таблице 6 приведена сравнительная характеристика всех алгоритмов социальной сети. При анализе учитывались такие параметры, как масштабируемость, трудоемкость в реализации, время обучения, широта используемости и точность предсказания.
Рассмотрев 3 алгоритма социальной сети, для интегрирования в приложение социальной сети нами был выбран стохастический градиентный спуск. Данный выбор обусловлен тем, что 1 тип алгоритма показал достаточно плохое качество предсказаний. 2 и 3 тип выдали одинаковый результат, однако логистическая регрессия заняла большое количество времени для обучения. При том, что имеется относительно небольшой датасет. При его увеличении в несколько раз время также увеличится, что значительно скажется на работе приложения.
Будут взяты заранее подготовленный текст на тему информационных технологий, будет произведена предобработку путем удаления знаков препинаний, цифр и стоп-слов, применятсястемминг и лемматизацию. Далее, используя градиентный стохастический спуск, сделается предсказание. На рисунке 27 можно увидеть, что данный алгоритм отнес текст к категории IT, что является верным ответом.
Таблица 6 - Сравнение алгоритмов машинного обучения социальной сети
Алгоритм |
Масштабируемость |
Трудоемкость в реализации |
Времяобучения |
Широтаиспользуемости |
Точностьпредсказаний |
|
Наивныйбайесовский классификатор |
Низкая |
Высокая |
36,7 ms |
Высокая |
0,525 |
|
Стохастический градиентный спуск |
Высокая |
Нейтральная |
51,5 ms |
Высокая |
0,85 |
|
Логистическаярегрессия |
Высокая |
Нейтральная |
152 ms |
Высокая |
0,85 |
.
Рисунок 27 - Результат предсказания
3.3 Разработка клиент-серверного приложения
Теперь, когда методы машинного обучения были проанализированы и был сделан выбор среди 3 алгоритмов, можно приступить к написанию социальной сети. В первую очередь, необходимо разработать серверную часть приложения. Для этого будут использовать веб-фреймворк Django.
Для программирования воспользуемся средой разработки PycharmIDE версии Professional. PyCharm поддерживает современные фреймворки для веб- разработки: Django, Flask, GoogleAppEngine, Pyramid и web2py [14].
Сначала создается новое приложение Django. Виртуальное окружение при создании из выбранной среды разработки активируется автоматически. Теперь нам необходимо подключить базу данных согласно техническому заданию. В pgAdminбыл создан сервер Messenger для пользователя postgres. Заполнив все поля, требуется протестировать подключение. Как показано на рисунке 28, подключение прошло успешно.
Рисунок 28 - Подключение базы данных
Теперь, когда проект настроен, можно начать разработку сервера. Данный процесс состоит из следующих шагов:
подключениенеобходимыхбиблиотек;
созданиемоделей;
созданиесериализаций;
созданиепредставлений;
настройкастраницыадминистратора;
подключениеконечныхточек.
Через команду pipinstall … будут установлены библиотеки corsheaders (разрешение на доступ к серверу с других адресов) и authtoken (подключение возможностей авторизации через токен).
Теперь создадются новые модели. Модели определяют структуру хранимых данных, включая типы полей и, возможно, их максимальный размер, значения по умолчанию, параметры списка выбора, текст справки для документации, текст меток для форм и т. д. Согласно построенной er-диаграмме, у нас должно быть 4 модели: пользователь, категории, чат и сообщение. Поле creator отвечает за создателя чата и связано с моделью пользователя; поле date_creation - за дату создания, при добавлении нового чата данное поле будет автоматически заполняться текущей датой; поле name - название канала; поле category - за категорию, к которой относится чат, оно связано с моделью категории.
Методstrопределяет, что будет отображаться в личном кабинете администратора при просмотре чатов.
Сlass Chat(models.Model):
Creator = models.ForeignKey(User, verbose_name='Создательканала',
On_delete=models.CASCADE)
Date_creation =models.DatetimeField(verbose_name='Датасоздания',
Auto_now=True
Name = models.CharField(verbose_name='Названиеканала',
Max_length=100, unique=True)
Category = models.ForeignKey(Category,
On_delete=models.CASCADE, default=4)
Def_ _str_ _(self):
Return self.name
Class Meta:
Verbose_name_plural = `Чаты'
Verbose_name ='Чат'
Далее для того, чтобы связать данные из моделей с базой данных, необходимо создать сериализаторы. Они преобразуют информацию, хранящуюся в базе данных и определенную с помощью моделей Django, в формат, который легко и эффективно передается через API. Сериализаторывыступают адаптером между моделями и базой данных. В качестве модели использовалсяChat и указали поля, которые необходимо сериализировать.
ClassChatDetailSerializer(serializers.ModelSerializer):
“””Сериализация чата с выводом детальной информации”””
Creator =UserSerializer()
Category =CategorySerializer()
Class Meta:
Model =Chat
Fields = `_ _all_ _'
Теперь создается представления. Они определяют функции (get, post, de- lete, update), которые будут доступны через API. В POST-запросе указываетсясериализатор, которых будет обрабатывать запрос и далее проверяется валидность данных. Если все поля заполнены и соответствуют типам данных, новый чат будет сохранен в базу данных и будет возвращен http-ответ 201, который обозначает, что запрос выполнен успешно и привёл к созданию ресурса.
@staticmethod
Def post(request):
Chat = ChatPostSerializer(data=request.data)
If chat.is_valid():
Chat.save(creator=request.user)
Return Response(chat.data, status=status.HTTP_201_CREATED)
Else:
ReturnResponse(status=400)
На данном этапе имеютя все средства для работы с APIDjango. Но для того, чтобы со стороны клиентской части можно было отправлять запросы, необходимо создать пути, по которым они будут производиться. В файле urls.pyопределяются все конечные точки.
Urlpatterns = [
Path(`chat/', ChatView.as_view()),
Path(`message/', MessageView.as_view()),
Path(`search/', ChatSearch.as_view()),
|]
Также необходимо добавить метод, который будет классифицировать чаты по категориям. При создании чата ему автоматически будет присвоена категория «Все чаты». Далее, по мере отправки сообщений, их содержимое будет анализироваться методами машинного обучения и отнесено к одной из выделенных категорий.
3.4 Разработка интерфейса приложения
Создание нового приложения:
npx create-react-app my-app
Подключение VKUI:
npm install @vkontakte/vkui || yarn add @vkontakte/vkui
Запуск приложения:
npmstart
Теперь можно работать с компонентами VKUI.
Использовать компонент PanelHeader на каждом экране приложения. Он должен содержать название приложения и иконку «Назад» на тех экранах, где она требуется.
Не занимать правый верхний угол PanelHeader -- это место зарезервировано для нативного бара с кнопками «Меню» и «Закрыть», который отображается всегда.
Использовать стилизованную под платформу иконку «Назад». Для этого используйте компонент <PanelHeaderBack />.
На устройствах с Android нажатие кнопки «Назад» вызывает в вебвью событие history.back.
По нажатию этой кнопки официальное приложение сделает возврат на предыдущую страницу приложения или закроет его, если вернуться невозможно. Поэтому для корректной навигации необходимо обрабатывать нажатие аппаратной клавиши в мини-приложении и реализовывать роутинг, например, при помощи библиотеки react-router.
Для корректной работы приложения используйте следующие атрибуты viewport:
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover">
Теперь можно приступать к разработке интерфейса социальной сети. Требуется создать новое приложение при помощи команды vuecreateappname.
Напомним, что фреймворк vue.js позволяет создавать интерфейсы приложения, используя компоненты. Такимобразом, в социальнойсетибудет 2 компонента:
RegistrationPage - отвечает за авторизацию и регистрацию;
MainPage - отвечает за отображение главной страницы социальной сети.
Требуется рассмотреть детально каждый компонент. При загрузке страницы откроется модальное окно для регистрации с полями логин, email и пароль. Заполнив все поля и нажав на кнопку «регистрация», отправится post-запрос к серверу с данными. Если все данные указаны верно, в базе данных появится новый пользователь. Согласно техническому заданию, пароль должен содержать не менее 8 символов, и как минимум одну цифру. Если данное условие не будет соблюдено, будет получено сообщение об ошибке. Также пользователь не будет зарегистрирован, если такой логин уже занят другим человеком. Далее можно авторизоваться (рисунок 29), нажав на кнопку «уже есть аккаунт?». Перед нами откроется новое модальное окно, где будет расположено 2 поля: логин и пароль. Заполнив их, снова будет отправлен post-запрос к серверу, только с другой ссылкой.
Рисунок 29 - Регистрация нового пользователя
Если учетные данные будут найдены в базе данных, сервер вернет нам токен пользователя и перед нами откроется главная страница социальной сети (рисунок 30). Слева можно увидеть список всех каналов, а над ними строку для быстрого поиска по названию. В правой части экрана расположен блок с сообщениями в канале, где в каждой карточке отображен текст сообщения и дату отправки.
Если чат принадлежит авторизованному пользователю, в правой нижней части экрана будет доступно текстовое поле для отправки сообщений. Иначе, можнотолькоознакомиться с содержимымканала.
Рисунок 30 -Главная страница
Для быстрой навигации было добавлено меню, где можно создать новый чат, просмотреть все каналы, открыть только те каналы, которые были созданы авторизованным пользователем и выйти из социальной сети (рисунок 31).
Рисунок 31 - Пункт меню
И заключительный этап - это просмотр каналов по категориям (рисунок 32). В левой верхней части экрана можно раскрыть список со всеми категориями, которые были созданы заранее. Так, например, выбрав категорию «путешествия», откроются каналы с названиями «записки путешественника»,«aviasales», «лучшие места мира» и т.д.
Рисунок 32 - Категории каналов
Теперь не нужно будет искать каналы, если захоется почитать новости из IT-мира, достаточно просто перейти по данной категории. Здесь будут расположены все чаты, относящиеся к данной теме.
Как описывалось во 2 главе для того, чтобы производить запросы с клиентской части к серверной, используютсяajax-запросы, которые позволяют запрашивать и обновлять данные не перезагружая страницу. Метод myChat() предназначен для того, чтобы получить все каналы текущего пользователя.
Для отправки запроса указываются следующие параметры:
url: ссылка, по которой производится запрос. В данном случае, дополнительно передается параметр username в строку запроса, потому что хочется получить только те каналы, которые принадлежат пользователю.
type: тип запроса. В данном случае - get.
Success: в случае получения успешного ответа, сохраняются полученные данные в переменную chats.
Error: иначе выводится сообщение об ошибке. Самая распространенная ошибка в данном случае - неавторизованный пользователь.
Данный метод срабатывает, когда пользователь выбирает пункт меню«мои каналы» myChat() {
$.ajax( url: {
type: `GET',
success: (response) => {
this.chats = response
},
error: (response) => {
console.log (response)
alert(“Не удалось загрузить список чатов. Возможная ошибка: вы не авторизованы!”)
}
})
},
Чтобы добавить к записи аудио, видео или фото, передайте в параметре attachments тип объекта и его строковый идентификатор.
Типобъекта -- audio, video, photo или doc.
Строковый идентификатор -- это строка, включающая идентификатор владельца объекта (owner_id) и идентификатор самого объекта (audio_id, video_id и т.д.).
Например, для фотографии photo34_408897832 в attachments нужно передать значение photo34_408897832.
?owner_id=-1
&message="Tanya"
&attachments="photo34_408897832"
&access_token={YOUR_ACCESS_TOKEN}
&v=5.131
Запрос к методу wall.post для публикации записи с текстом "Tanya" и прикрепленной фотографией photo34_408897832 на стену сообщества ВКонтактеAPI.
Если требуется прикрепить новый объект к записи на стене, необходимо сначала загрузить его на сервер ВКонтакте. В зависимости от типа контента используйте один из подходов, описанных на этой странице. Затем используйте идентификатор загруженного объекта в параметре attachments.
Предложенные и отложенные записи можно создавать с помощью wall.post. Этот инструмент позволяет работать с предложенными и отложенными записями. Чтобы создать предложенную запись, передайте в owner_id идентификатор публичной страницы, в которой текущий пользователь не является руководителем.
Чтобы создать отложенную запись, передайте время публикации в параметре publish_date.
Для публикации предложенных и отложенных записей используйте параметр post_id, значение для которого можно получить методом wall.get с filter=suggests и postponed соответственно.
Чтобы добавить к записи сниппет ссылки с внешнего сайта (превью-изображение, заголовок и описание), передайте URL в параметре attachments. Например, http://yandex.ru. Сниппет генерируется автоматически.
VKMiniApps -- это платформа встраиваемых кроссплатформенных приложений ВКонтакте. Они создаются на базе стандартных веб-технологий: HTML, JavaScript, CSS.
3.5 Создание и запуск приложения
npx @vkontakte/create-vk-mini-appvk-apps-currency
В созданном проекте уже подключены все необходимые для работы библиотеки: VKUI, VKBridge и VKIcons.
При регистрации приложения Создайте приложение с типом VK Mini Apps на платформе ВКонтакте. Для этого следует перейти в раздел создания приложения (рисунок 33).
Рисунок 33 - Создание приложения
Выбирается пункты как на рисунке. Подтвердить создание приложения можно при помощи сообщения или push-уведомления.
В случае локального запуска приложения надо установить пакет VKTunnel:
npm install @vkontakte/vk-tunnel -g
Перейти к папке проекта при помощи команды
cdvk-apps-currency
Запустить проект командой
npmstart
И сделать вызов в консоли проекта:
env NODE_TLS_REJECT_UNAUTHORIZED=0 \
PROXY_HTTP_PROTO=https \
PROXY_WS_PROTO=wss \
PROXY_HOST=localhost \
PROXY_PORT=10888 \
vk-tunnel
Или, используя опции:
vk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=localhost --port=10888
После успешной авторизации в терминале появится ссылка вида
Скопируйте ее.
После чего можно включить режим разработки и вставить скопированную ссылку.
Для облегчения работы можно добавить следующие команды в блок scripts в файле package.json:
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
Файл конфигурации (рисунок 34) будет выглядеть примерно так:
Рисунок 34 - Файл конфигурации
Деплой - команда, переопределяющая адрес приложения. Деплой запускается командой:
“npmrundeploy”
После выполнения этой команды приложение будет доступно по адресу, указанному в homepage.
Публикация приложения осуществляется следующим образом. В настройках созданного приложения и прописывается адрес из поля в homepage в поле «Мобильный URL». Чтобы приложение было доступно другим пользователям, нужно поменять статус в пункте «Состояние» на «Приложение включено и видно всем».
3.6Тестирование приложения
Django предоставляет фреймворк для создания тестов, построенного на основе иерархии классов, которые, в свою очередь, зависят от стандартной библиотеки Pythonunittest. Он позволяет имитировать URL-запросы, добавление тестовых данных, а также проводить проверку выходных данных приложений.
Чтобы убедиться в корректности работы функциональных возможностей приложения, было произведено тестирование конечных точек сервера. Другими словами, были протестированы пути на предмет правильного ответа от сервера. Метод setUp() запрашивает авторизацию пользователя с заданными учетными данными. Далее проверяется действительно ли был авторизован пользователь. При помощи функции assertEqual проверяем, чтобы ответ о сервера был с кодом 200, что обозначает успешное получение ресурса. Далее можно получить список всех пользователей в методе test_userprofile_list_authen- ticated.
def setUp(self):
self.user = self.client.post(`/auth/users'),
data={`username': `new_user', `password': `pass_user'})
# получениевеб-токена JSON
response = self.client.post (`/auth/jwt/create/',
data={`username': new_user', `password': `pass_user'})
self.token = response.data[`access']
self.api_authentication()
# проверка успешной авторизации
def test_userprofile_detail_retrieve(self):
response = self.client.get(reverse(`profile', kwards={`pk': 1}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
# получитьсписоквсехпрофилейпользователей
def test_userprofile_list_authenticated(self):
response = self.client.get(self.profile_list_url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
Также были протестированы модели, сериализаторы и представления. В данном тестировании нам были важны следующие моменты:
все данные при запросах отображаются корректно;
сохранение новых полей происходит правильно;
при сохранении срабатывает автоматическая валидация данных;
проверкаограниченийдоступа;
обновление каких-либо полей уже существующих данных происходит корректно.
Все тесты были пройдены успешно, что говорит о стабильности работы социальной сети.Не стоит оставлять без внимания тестирование клиентской части приложения, ведь именно конечный пользователь определяет используемость системы. Для проверки использовалсяSeleniumIDE. Selenium - это встроенный в браузер плагин, который позволяет записывать и производить сценарии использования системы необходимое число раз. Для использования необходим браузер GoogleChrome, либо MozillaFirefox [16].Перед тем, как начать тестирование, были разработаны тест-кейсы, которые представлены в таблице 7.
Таблица 7 - Тест-кейсы
№теста |
Название |
Описание |
|
1 |
Авторизация |
Пользователь, используя логин и пароль, пробует авторизоваться. В результате должна открыться главная страница с социальной сетью. |
|
2 |
Регистрация |
Пользователь регистрирует новую страницу всоциальной сети. Для этого ему потребуется новый логин и пароль, а также e-mail. В результате должна появиться возможность авторизоваться. Если такой пользователь уже существует, выдается сообщение об ошибке. |
|
3 |
Создатьновыйчат |
Пользователь создает канал. В результате всписке появляется новый канал. Если имя чата уже занято, выдается сообщение об ошибке. |
|
4 |
Новоесообщение в канале |
Отправка нового сообщения. В результате должна появиться новая карточка с сообщением и временем отправки. Время отправки должносовпадать с текущим временем. |
|
5 |
Выход |
Выход из аккаунта. В результате должна открыться страница с возможностью авторизации. |
Теперь, используя Selenium, буду записаны сценарии тест-кейсов. На рисунке 35 показано, что все сценарии были записаны и успешно пройдены. Для подробной информации по каждому тестированию можно обратиться к окну Log, в которой будут отображаться все ошибки, в случае их возникновения (рисунок 35)
Рисунок 35 - Тестирование клиентской части
Таким образом, тестирование серверной и клиентской части завершено. Результат показал стабильную работу и правильное функционирование приложения. В дальнейшем, написанные тесты могут так же использоваться для автоматического тестирования, позволяя сконцентрироваться на поиске ошибок в новых разделах сайта, при условии их добавления.
В таблицах 8 и 9 представлены основные таблицы, медиаконтент и вложения.
Таблица 8 - Основныеобъекты
Объект |
Примериспользования |
|
Пользователь |
users.get |
|
Сообщество |
groups.get |
|
Записьнастене |
wall.get |
|
Объект |
Примериспользования |
|
Комментарийнастене |
wall.getComments |
|
Личноесообщение |
messages.getById |
|
Беседа |
messages.getConversationsById |
|
Чат |
messages.getChat |
|
Заметка |
notes.get |
|
Вики-страница |
pages.get |
|
Товар |
market.get |
|
Подборкатоваров |
market.getAlbums |
|
Заказ |
market.getOrders |
|
Обсуждение |
board.getTopics |
|
Комментарий в обсуждении |
board.getComments |
|
Приложение |
apps.get |
|
Опрос |
polls.getById |
|
Данныестатистики |
stats.get |
|
Адрес |
groups.getAddresses |
Таблица 9 - Медиаконтент и вложения
Объект |
Примериспользования |
|
Фотография |
photos.get |
|
Аудиозапись |
audio.get |
|
Видеозапись |
video.get |
|
Документ |
docs.get |
|
Медиавложения в записях на стене |
wall.get |
|
Медиавложения в личныхсообщениях |
messages.get |
|
Прикрепленнаяссылка |
wall.get |
|
Стикер |
messages.get |
|
Подарок |
messages.get |
|
Геометка |
messages.get |
|
Объект |
Примериспользования |
|
Виджетыприложенийсообществ |
appWidgets.update |
|
История |
stories.get |
|
Блоклентыисторий |
stories.get |
|
Кликабельныйстикер в истории |
stories.getPhotoUploadServer |
В таблице 10 представлены вспомогательные объекты.
Таблица10 - Вспомогательные объекты и наборы значений
Объект |
Примериспользования |
|
Форматописанияразмеровфотографии |
photos.get |
|
Жанрыаудиозаписей |
audio.getById |
|
Источникзаписи |
wall.getById |
|
Приватность |
photos.getAlbums |
|
Настройки Push-уведомлений |
account.getPushSettings |
Заключение
В результате выполнения работы было разработано приложение к социальной сети ВКонтакте, особенность которого заключается в том, что его каналы автоматически сортируются по категориям при помощи методов: наивный байесовский классификатор, логистическая регрессия, стохастический градиентный спуск.
Были рассмотрены аналоги социальных сетей с возможностью сортировки чатов и каналов, а также сферы применения автоматической классификации текстовой информации. Среди них: автоматическое обнаружение спама, классификация обращений, классификация документов и обнаружение мошеннических операций при проведении финансовых транзакций. Применение автоматических систем классификации текстов позволит сократить трудозатраты человека на рубрикацию и поиск необходимой информации, предоставляемой информационными системами.
Был подготовлен датасет в ходе поиска различных статей, книг, рассказов в сети Интернет по категориям путешествия, политика, книги, IT и спорт. Далее проводилась предобработка текста, включающая в себя: удаление знаков препинания, цифр, стоп-слов, лемматизацию, токенизацию и стемминг.
Были рассмотрены такие алгоритмы машинного обучения, как наивный байесовский классификатор, стохастический градиентный спуск и логистическая регрессия. Далее был проведен сравнительный анализ, в ходе которого были исследованы метрики качества построенных моделей и время их обучения. На этой основе для интеграции в социальную сеть ВКонтакте был выбран стохастический градиентный спуск, так как он показал наилучшую точность предсказаний, наименьшую величину ошибки и время обучения модели.
При помощи встроенного плагина SeleniumIDE были протестированы функциональные возможности социальной сети. Ошибки обнаружены не были, что говорит о стабильности веб-приложения.
В процессе разработки были использованы следующие инструментальные средства: среда разработки PyCharm, СУБД Postgres, графический клиент pgAdmin, Python, Vue.js, HTML, CSS, для автоматизации тестирования юниттесты и Selenium.
В продолжении разработки приложения данной социальной сети планируется расширить функционал, например, удаление сообщений, их редактирование, отправка в каналы фотографий. Также, рассматривается возможность применения методов машинного обучения не только к текстовой информации, но и к графической. Таким образом, распределение по категориям будет происходить с помощью анализа текстов и фотографий в совокупности.
Список использованных источников
1. Конноллн, Томас, Бегг, Карелии. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. 3-е издание. : Пер. с англ. -- М. : Издательский дом "Вильяме", 2003. -- 1440 с. : ил. -- Парал. тит. англ.
2. Официальный сайт языка программирования С++
3. Стауструп, Бьярне. Программирование: принципы и практика использования С++. : Пер. с англ. - М. : ООО «И. Д. Вильямс», 2011. - 1248 с: ил. - Парал. тит. англ.
4. Документация языка программирования C#
5. Албахари, Джозеф, Албахари, Бен. С# 7.0 Справочник. Полное описание языка: Пер. с англ. - Пер. с англ. Спб. : ООО «Альфа-книга», 2017. - 1507 с. :ил. - Парал. тит. англ.
6. Официальный сайт языка программирования Python
7. Стандартная библиотека Python 3: справочник с примерами, 2-е изд. Пер. с англ. -- СПб. : ООО “Диалектика”, 2019. -- 1376 с. : ил. -- Парал. тит. англ
8. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание Москва: Техносфера, 2004. - 368с. ISBN 5-94836-005-9
9. Документация к PostgreSQL 13.3 Байесовский классификатор
10. Введение -- Vue.js Графический клиент pgAdmin
11. Документация | Node.js Кантор И. Современный учебник JavaScript
12. Кластеризация: алгоритмы k-means и c-means / Хабр
13. Логистическая регрессия Метод стохастического градиента
14. Обзор алгоритмов кластеризации данных/ Хабр Теорема Байеса
15. Официальная документация DjangoRestFramework Django введение
16. Django учебник JetBrainsPyCharm
Размещено на Allbest.ru
...Подобные документы
Автоматизация системы снятия показаний счетчиков энергии. Разработка базы данных и клиентского приложения для структур жилищно-коммунального хозяйства, занимающихся составлением квитанций. Описание предметной области. Тестирование клиентского приложения.
курсовая работа [953,3 K], добавлен 01.09.2016Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.
курсовая работа [700,0 K], добавлен 14.01.2015Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.
курсовая работа [3,3 M], добавлен 15.09.2014Сетевое программное обеспечение: общее понятие, содержание, функции. Этапы развития теории компьютерных сетей. Проектирование в среде программирования Borland Builder C++ клиент серверного приложения с использованием сокетов, листинг данной программы.
курсовая работа [191,5 K], добавлен 07.01.2015Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Обзор существующих систем управления базами данных. Концептуальное, логическое и физическое проектирование и создание базы данных. Обзор языков программирования. Создание и реализация клиентского приложения с помощью выбранного языка программирования.
дипломная работа [2,4 M], добавлен 02.06.2013Обзор технологической платформы для разработки клиентского веб-интерфейса. Выбор платформы базы данных, языка разработки, фреймворка на стороне сервера и клиента. Создание схемы данных MySQL. Работа пользователя и оператора с программным продуктом.
курсовая работа [4,1 M], добавлен 17.07.2012Анализ существующих систем организации аудиосвязи. Протоколы аудиопереачи. Архитектура сетевого взаимодействия. Алгоритм серверного приложения. Структура клиентского приложения. Выбор языка программирования и средств разработки. Требования к системе.
курсовая работа [1,2 M], добавлен 28.04.2014Последовательность разработки системы для оптимизации работы магазина интерьерных товаров, позволяющей хранить данные в одной базе и работать с ней с помощью удобного интерфейса клиентского приложения. Тестирование информационной системы. Листинг модулей.
дипломная работа [2,9 M], добавлен 07.07.2012Проектирование физической и логической моделей удаленной базы данных для АЗС. Разработка базы данных в СУБД Firebird с помощью утилиты IBExpert. Создание клиентского приложения для Windows с использованием клиент-серверной технологии в среде C++ Builder.
курсовая работа [3,9 M], добавлен 18.01.2017Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.
дипломная работа [2,2 M], добавлен 08.06.2017Эксплуатация анализатора качества электроэнергии Satec PM175. Создание документов "Видение" и "Спецификация требований" для системы сбора данных с анализатора. Проектирование серверного и клиентского приложения в среде программного обеспечения LabVIEW.
курсовая работа [830,6 K], добавлен 25.09.2013Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".
дипломная работа [974,7 K], добавлен 08.06.2013Реализация проекта по оптимизации отделений почтовой связи. Направления деятельности в области кадровой политики. Автоматизация обработки получаемой техническим отделом информации. Разработка приложения клиент-сервер. Описание клиентского приложения.
курсовая работа [34,3 K], добавлен 07.08.2013Разработка Web-приложения для ООО "Научно-производственная фирма по применению информационных технологий в электрических сетях". Техническое задание, проектирование процессов, создание базы данных, разработка дизайна, тестирование и отладка сайта.
дипломная работа [3,8 M], добавлен 24.06.2011Основные концепции разработки приложения в архитектуре MVVM. Проектирование базы данных, предназначенной для сбора информации о дорожно-транспортных происшествиях. Классификация и типы архитектуры "клиент–сервер", ее основные достоинства и недостатки.
курсовая работа [4,1 M], добавлен 25.11.2015Общая характеристика и структурная схема приложения, требования к нему и функциональные особенности, сферы практического применения. Обоснование выбора языка программирования. Описание интерфейса и инструкция пользователя. Проведение листинга программы.
дипломная работа [1,0 M], добавлен 10.07.2017Многоуровневые архитектуры клиент–сервер. Диаграммы классов, реализующих уровни презентации, бизнес–логики и базы данных приложения. Словесное описание процесса выполнения транзакций. Создание, изменение и удаление хранимых процедур, их выполнение.
курсовая работа [3,4 M], добавлен 23.03.2013Основные концепции разработки приложения в трёхуровневой архитектуре. Проектное решение, реализующее модель реляционной БД. Спецификация на разработку интерфейса. Описание выполнения транзакций прибытия и убытия судна. Инсталляционные файлы приложения.
курсовая работа [4,0 M], добавлен 26.12.2011