фффывффывфы
Министерство сельского хозяйства российской федерации
Федеральное государственное бюджетное образовательное учреждение
«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ
Факультет прикладной информатики
Кафедра системного анализа и обработки информации
Руководитель образовательной программы
_______________Замотайлова Д.А.
______________Барановская Т.П.
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
РАЗРАБОТКА РЕКОМЕНДАТЕЛЬНОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ОНЛАЙН-КИНОТЕАТРОВ
Направление подготовки 09.03.03 Прикладная информатика
Направленность «Менеджмент проектов в области информационных технологий, создание и поддержка информационных системы»
канд. физ.-мат. наук, доцент ______________Павлов Д.А.
Министерство сельского хозяйства российской федерации
Федеральное государственное бюджетное образовательное учреждение
«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ
Факультет прикладной информатики
Кафедра системного анализа и обработки информации
Заведующий кафедрой системного анализа и обработки информации КубГАУ д-р экон. наук, проф.
_________________ Барановская Т.П. «_____»______________2022 г.
ЗАДАНИЕ НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ
Направление подготовки: 09.03.03 – Прикладная информатика
обучающемуся учебной группы: ПИ1903
1 Тема работы: разработка рекомендательной информационной системы для онлайн-кинотеатров.
2. Цель работы: проектирование и разработка рекомендательной информационной системы для онлайн-кинотеатров.
3. Исходные данные и методические указания: исходные данные по предметной области; методические рекомендации по государственной итоговой аттестации по направлению 09.03.03 Прикладная информатика.
4. Содержание работы: Введение; 1. Анализ предметной области; 2. Теоретические основы проектирования и разработки информационной системы; 3. Разработка информационной системы; 4. Оценка экономической эффективности; Заключение; Список использованных источников; Приложения.
5. Перечень основной рекомендуемой литературы:
1. Ким Фальк. Рекомендательные системы на практике / пер. с англ. Д. М. Павлова. – М.: ДМК Пресс, 2020. – 448 с.
2. Лукьяненко Т. В. Базы и банки данных: учеб. пособие / Т. В. Лукьяненко, Т. А.Крамаренко. – Краснодар : КубГАУ, 2018. – 91 с.
Задание рассмотрено на заседании кафедры (протокол №2 от 10.10.2022г.)
Руководитель: канд. физ.-мат.наук., доцент Павлов Д.А. __________________
Задание к исполнению принял «____» __________ 2022 г. _______________
Выпускная квалификационная работа содержит 77 страниц, 34 рисунков, 8 таблиц, 28 используемых источников, 1 приложение.
Ключевые слова: РЕКОМЕНДАТЕЛЬНЫЕ СИСТЕМЫ, МАШИННОЕ ОБУЧЕНИЕ, USER-BASED ПОДХОД, ВЕБ-ПРИЛОЖЕНИЕ, БАЗА ДАННЫХ.
Цель работы – проектирование и разработка рекомендательной информационной системы для онлайн-кинотеатров, позволяющей строить релевантные предпочтениям пользователя предложения по просмотру фильмов с помощью интеллектуального анализа и созданной базы данных, содержащей информацию о фильмах с соответствующими оценками пользователей.
Объектом исследования является деятельность пользователя, использующего веб-ресурс для подбора рекомендаций к просмотру фильмов.
– проведен анализ предметной области;
– проведен теоретический анализ и обзор существующих систем;
– постановка задачи и определение требований к модулю;
– проведен выбор и обоснование среды разработки;
– разработаны функциональные требования к проектируемой информационной системе;
– спроектирована и реализована база данных, веб-приложение, извлекающее из нее данные с построением рекомендаций.
– разработано руководство пользователя;
– проведен расчет экономической эффективности.
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ.. 7
1.1... Общая характеристика объекта исследования. 7
1.3 Постановка задачи и определение требований к системе. 15
1.4... Обзор существующих решений. 23
2 ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ РАЗРАБОТКИ ИНФОРМАЦИОННОЙ СИСТЕМЫ... 27
2.2... Коллаборативная фильтрация. 29
2.3... Контентная фильтрация. 31
2.4... Реализация рекомендательных систем.. 34
2.5 Метрики качества рекомендаций. 41
3 РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ... 43
3.1 Информационно-логическая модель информационной системы.. 43
3.3 Используемый технологический стек. 49
3.4 Описание интерфейса веб-приложения. 52
3.5 Инструкция использования. 63
4 ОЦЕНКА ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ.. 65
4.1 Расчет трудоемкости выполнения работ. 65
4.2 Расчет затрат на разработку. 66
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ. 73
ВВЕДЕНИЕ
Сейчас мы живем в то, что некоторые называют «эпохой изобилия». Для любого данного продукта иногда есть тысячи вариантов на выбор. Подумайте о приведенных выше примерах: потоковое видео, социальные сети, онлайн-покупки; список можно продолжить. Рекомендательные системы помогают персонализировать платформу и помочь пользователю найти то, что ему нравится.
Самый простой и простой способ сделать это - порекомендовать самые популярные товары. Однако, чтобы действительно улучшить пользовательский опыт с помощью персонализированных рекомендаций, нам нужны специальные рекомендательные системы.
С точки зрения бизнеса, чем более релевантные продукты пользователь находит на платформе, тем выше его вовлеченность. Это часто приводит к увеличению доходов самой платформы. По разным данным, 35–40% выручки технологических гигантов приходится на одни только рекомендации.
Большинство современных платформ использует современные алгоритмы, которые определенным образом подбирают пользователям информацию релевантную их запросам, к примеру, YouTube рекомендует контент или Facebook рекомендует для вас, новых друзей. Возможно, вы заметили похожие рекомендации в связях с LinkedIn или то, как Amazon будет рекомендовать похожие продукты во время просмотра. Все эти рекомендации стали возможными благодаря внедрению рекомендательных систем.
Рекомендательные системы охватывают класс методов и алгоритмов, которые могут предлагать пользователям «соответствующие» элементы (товары, друзей). Они предсказывают будущее поведение на основе прошлых данных с помощью множества методов, включая матричную факторизацию.
Актуальность разработки рекомендательной информационной системы для онлайн-кинотеатров заключается в необходимости подбора фильмов для просмотра с учетом вкусов и предпочтений пользователей, отсутствием ангажированности рекомендаций, удобством использования. Даже несмотря на то, что у аналогов может быть огромная база данных с фильмами, в результате она может вообще никак не обрабатываться и не использоваться в полную силу, либо же предлагать платную подписку и при этом предлагать покупать фильмы.
Целью, разрабатываемой рекомендательной информационной системы является - добиться лояльности клиентов за счет предоставления релевантного контента и максимального увеличения времени, проведенного пользователем на веб-ресурсе.
Объектом исследования является деятельность пользователя, использующего веб-ресурс для подбора рекомендаций к просмотру фильмов.
Предметом исследования является методы и алгоритмы построения рекомендаций на основе пользовательских предпочтений, а также исторической информации о предпочтениях других пользователей в отношению их к просмотренным фильмам.
Практическая значимость результатов выпускной квалификационной работы заключается в возможности применения разработанных функций как типовых отдельных модулей на которых можно реализовать рекомендательные системы в различных областях.
Для разработки рекомендательной информационной системы онлайн кинотеатров, необходимо использовать широкий стек технологий: html5, CSS3, JavaScript, PHP.
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Общая характеристика объекта исследования
Рекомендательная система: система фильтрации информации, поддерживающая пользователя в заданной ситуации принятия решения путем сужения набора возможных вариантов и определения приоритетности его элементов в конкретном контексте. Приоритизация может основываться на явно или неявно выраженных предпочтениях пользователя, а также на предыдущем поведении пользователей с аналогичными предпочтениями.
Информация всегда была неотъемлемой частью природы. Когда наступит зима, когда перелетят птицы, где найти рыбу и как ее поймать; какие ягоды можно есть, а какие несут верную смерть? Наши предки передавали свой опыт еще в глубокой древности. Им двигал инстинкт выживания. Они видели себя в своем потомстве и таким образом хотели, большей частью бессознательно, добиться своего бессмертия. В конце концов, они не боролись со своим потомством, чтобы те умерли, съев горсть ягод.
Только недавно, пять тысячелетий назад, информация могла превратиться в силу, с изобретением письменности, ставшей краеугольным камнем современного мира. Записывание слов надолго сохраняет идею. Они отображают вибрации человеческой души в письменной форме, создавая тем самым новую форму вечной жизни.
Чтобы понять сущность информации, нам пришлось подождать до 20 века. Клод Шеннон понял, что информативность сообщения зависит исключительно от того, насколько оно отличается от среднего. Следовательно, это не тесно связано с содержанием или длиной сообщения, важно только то, неожиданно оно или нет. Политик на взятке нынче не информативен, а если выясняется, что он распоряжается доверенным ему общественным достоянием с должным вниманием, то это чуть ли не сенсация. Если бы вчерашние новости были объявлены сегодня по телевидению, то это было бы нулевой информативностью, кроме, может быть, осознания того, что редактор новостей сошел с ума.
Шеннон также обнаружил, что информацию можно преобразовать в числа или, точнее, в две системы состояний, создав тем самым базовую единицу нового, основанного на информации мирового порядка. Учитывая его содержание, один бит равен 0 или 1, да или нет, существует или нет, но его сила в том, что с помощью этой цепочки мы можем закодировать что угодно. Оцифровав вещи, человечество добилось того, что информация стала не только долговечной, но и может храниться практически в бесконечных количествах, и в то же время мы можем чрезвычайно быстро ее распространять.
Параллельно с распространением компьютеров, используемых в гражданских целях, удовлетворение ожиданий пользователей во все возрастающих масштабах попало в поле зрения компаний-разработчиков и исследователей.
За быстро растущей популярностью машин стоят чрезвычайно серьезные усилия, направленные на уменьшение «трений» между человеком и машиной. Благодаря попыткам понять потребности людей и персонализировать услуги, предоставляемые компьютерами, создаются все более удобные решения.
Основы рекомендательных систем были заложены исследованиями в области науки о познании [1] и информационного поиска [2], а ее первым проявлением стала коммуникационная система Usenet, созданная Университетом Дьюка во второй половине 1970-х годов [3], где пользователи могли обмениваться текстовым контентом друг с другом. Они были разделены на группы новостей и подгруппы для облегчения поиска, но не были напрямую построены на предпочтениях пользователей и не были ориентированы на них.
Первым известным таким решением был компьютерный библиотекарь Гранди, который сначала опрашивал пользователей об их предпочтениях, а затем рекомендовал им книги с учетом этой информации. На основе собранной информации система довольно примитивным способом распределяла пользователя в стереотипную группу, рекомендуя тем самым одни и те же книги всем лицам в одной группе. Для получения дополнительной информации о результатах решения Гранди и его популярности среди пользователей см. статью Рича 1979 года [1]. Сегодня этот подход может показаться немного устаревшим, но в то время это был сдвиг парадигмы в автоматизированных услугах, поскольку он был персонализирован. Важно отметить, что даже сейчас этот рубеж достигнут не всеми интернет-магазинами.
Однако решение Гранди быстро получило множество критиков в научном мире. Нисбетт и Уилсон констатируют, что «люди очень слабы в изучении и описании собственных когнитивных процессов» [4]. Согласно их исследованиям, люди часто подчеркивают свои качества, которые выделяют их среди остальной части определенной группы, что затрудняет работу по формированию стереотипов. Конечно, может случиться так, что мы просто хотим создать другой образ самих себя.
Как Хели Вайнио, менеджер одного из крупнейших торговых центров Северной Европы, несколько резко выразилась в своем предыдущем интервью: «Люди отвечают на анкеты таким образом, чтобы они выглядели лучше. Меня не волнует ложь. Меня интересуют факты». [5]. Именно поэтому она оборудовала свой торговый центр оборудованием Wi-Fi, которое может отслеживать посетителей внутри и в непосредственной близости от здания с точностью до 2 метров. Цель состоит в том, чтобы вместо посетителей говорили их действия.
По сути, со временем развились два очень разных направления рекомендательных систем: совместная фильтрация и фильтрация на основе контента. Первый пытается отобразить (профилировать) вкус пользователей и предлагает им контент, который понравился пользователям со схожими предпочтениями. Контентная фильтрация заключается в знании параметров объекта, который следует рекомендовать (например, система рекомендаций по музыкальному контенту может учитывать следующие параметры: стиль, исполнитель, эпоха, оркестровка и т. д.), а также предпочтения пользователя в отношении этих параметров или характеристики. Таким образом, каждый раз, когда пользователю нравится другая песня, эта новая информация добавляется в его профиль.
Первым примером совместной фильтрации, а также происхождением термина была система Tapestry, разработанная Xerox PARC, которая позволяла пользователям делать заметки и комментировать документы, которые они читали (первоначально в бинарной форме: нравится или не нравится). Таким образом, пользователи могли не только использовать содержание документов, чтобы вручную сузить свой поиск, но и на основе заметок и отзывов других пользователей, которые, достигнув соответствующего числа пользователей, смогли довольно хорошо ранжировать тематические документы в рейтинге. основе их актуальности и полезности [6].
GroupLens [3], запущенная в 1992 году, уже могла давать автоматические рекомендации для статей Usenet, если пользователь уже оценил некоторые статьи в системе. В последующие годы было разработано множество тематических сайтов рекомендаций, таких как Ringo, разработанный в Массачусетском технологическом институте, позже страницы музыкальных рекомендаций Firefly или система предложений фильмов BellCore.
Первым решением, которое не только пыталось охватить более узкие темы, но и не меньше, чем сам Интернет, был Yahoo!, тогда еще под другим названием. Два студента из Стэнфорда создали тематический каталог веб-сайтов с проиндексированными страницами, которые быстро завоевали популярность и упростили поиск для миллионов людей в Интернете, а на основе рейтинга Alexa он по-прежнему занимает пятое место среди самых посещаемых веб-сайтов.
Корни контентной фильтрации следует искать в области информационного поиска, откуда были перенесены многие методы. Первое задокументированное решение пришло от Эмануэля Голдберга в 1920-х годах (если не считать представленного в 1801 году ткацкого станка Жакара, предшественника перфокарт Холлерита), который представлял собой «статистическую машину», которая пыталась автоматически находить документы, хранящиеся на целлулоидных лентах, путем поиска узоры [7].
В 1960-х годах благодаря группе исследователей из Университета Корнуолла, собравшихся вокруг Солтона, за почти десятилетие была создана модель автоматического индексирования текстов, которая легла в основу известных нам сегодня процессов анализа текста [8]. Процедура очень проста, документы классифицируются по определенным заранее заданным критериям (размерам), которые собираются в вектор как индексы. Чем более похожи два документа друг на друга, тем меньше угол описывающих их векторов.
Следующей вехой стала система онлайн-каталога CITE, разработанная в 1979 году Тамашем Дошкочем для Национальной медицинской библиотеки, которая не только позволяла пользователям искать книги по категориям, но и сортировала их по релевантности на основе условий поиска.
Контентная фильтрация обрела смысл относительно поздно, в 1990-х годах, как раздел информационного поиска. Основная причина задержки заключалась в том, что создание хорошо функционирующей системы фильтрации на основе контента, даже в конкретном предмете, является огромной проблемой, поскольку задача состоит не меньше, чем в том, чтобы «понять» изучаемую тему и факторы, влияющие на взаимосвязь. пользователей к дисциплине.
Одним из первых и довольно успешных исследований на эту тему был проект Music Genome в 1999 году, целью которого было «понять» и уловить музыку через ее свойства. Для этого выявлено более 450 таких свойств и описана их взаимосвязь с помощью алгоритма. В основе процедуры лежит то, что когда пользователю нравится песня, ее конкретным свойствам (например, стилю, эпохе, исполнителю, оркестровке, ритму и т. д.) присваиваются положительные значения. Песни с похожими свойствами затем будут продвигаться в списке предпочтений и доводиться до сведения пользователя. Огромным преимуществом совместной фильтрации является то, что при запуске достаточно очень мало информации, в то время как первая, к сожалению, требует большого количества пользователей и отзывов для выявления людей со схожими вкусами. Однако недостатком является то, что обычно это вряд ли может, или вообще не давать рекомендаций за пределами музыкальных списков пользователя, так как это не строится на сходстве между пользователями, а только на «понимании» свойств музыки как объекта. Интернет-радио Pandora, у которого 250 миллионов пользователей, и сегодня основано на этом проекте [9].
Первым решением, объединяющим решения для совместной и контентной фильтрации, был Fab [10], разработанный студентами Стэнфорда и представленный в 1994 году. Они отмечают, что их цель с гибридной системой — устранить недостатки двух процедур, которые стали известны благодаря время. Их модель состоит из двух основных процессов: сначала они собирают контент по определенным темам (например, веб-сайты или статьи на финансовые темы), затем для каждого отдельного пользователя они выбирают те элементы, собранные по конкретным темам, которые, скорее всего, заинтересуют их конкретно, и, наконец, это содержимое дойдет до пользователя.
Объединение двух подходов может быть задумано несколькими способами, одна процедура может быть встроена в другую, как показывает пример Fab, или можно дать совместную рекомендацию в результате двух процедур, как это делает Netflix. Алгоритм Netflix, CineMatch, был самой успешной рекомендательной системой для онлайн-продажи фильмов в начале 2000-х годов. Это послужило серьезным катализатором для таких исследований, и научное направление, только начавшее свое самостоятельное существование в 90-е годы, стало стремительно развиваться. Задача премии Netflix 2006 года заключалась в том, чтобы создать алгоритм рекомендаций на основе 100 миллионов обзоров фильмов, предоставленных ими, который дает рекомендации как минимум на 10% лучше, чем результаты CineMatch. Премия в 1 миллион долларов в 2009 году была присуждена за решение, которое включало 107 различных алгоритмов и смешивало их рекомендации в зависимости от обстоятельств [11]. Мы не можем не упомянуть крупнейший на сегодняшний день пример реферальных онлайн-систем — amazon.com, который рекомендует продукты пользователю на основе метода совместной фильтрации, принимая во внимание ранее просматриваемые и приобретенные продукты, а также то, что они просматривают в данный момент.
Этот метод сейчас используется многими интернет-магазинами для улучшения показателей продаж. Цель рекомендательных систем, работающих в клиентском онлайн-пространстве, состоит в том, чтобы настроить витрину магазина в соответствии с текущим вкусом и потребностями клиентов. Это создает почти непревзойденное конкурентное преимущество для интернет-магазинов по сравнению с традиционными покупками в обычных магазинах, единственная сильная сторона которых заключается в том, что товар можно потрогать руками или примерить. В настоящее время более характерно, что после примерки в магазине товары заказываются онлайн, либо с использованием опции возврата товара покупаются без примерки [12].
1.2 Анализ деятельности организации
В силу особенности выбранной для разработки информационной системы, в выборе организации нет необходимости, поэтому следует рассматривать структуру разрабатываемой информационной системы в лице пользователей системы, а именно администратора и зарегистрированного/незарегистрированного пользователей, а также со стороны ее функционального предназначения. Для этого необходимо описать процесс выбора фильма в проектируемой информационной системе.
Незарегистрированный пользователь система имеет возможность получить список случайных фильмов, а также возможность воспользоваться фильтром поиска фильмов по определенному жанру. Для него также доступна регистрация, после которой пользователь получает более широкий функционал, включающий возможность ставить оценки фильмам, на основе которых будет строится дальнейший анализ предпочтений пользователя.
Таким образом деятельность разрабатываемой информационной рекомендательной системы состоит в возможности предоставления услуги подбора рекомендаций фильмов к просмотру различным пользователям, с использованием различных отчетов, построенных из фильмов, записанных в базе данных.
Так как реализация проектируемой информационной системы предполагает создание веб-ресурса, то и в документообороте фигурируют все уровни пользователей этой системы.
Незарегистрированный пользователь получает возможность пройти регистрацию, используя форму «регистрация», на основании которой получает возможность «авторизоваться» при следующих использованиях.
Зарегистрированный пользователь, при использовании системы получает возможность пройти авторизацию пользователя.
Администратор системы имеет право добавлять новые фильмы в систему через форму «добавить новый фильм». После этого запись о фильме и его параметрах добавляется в базу данных и зарегистрированные пользователи будут иметь возможность оценивать этот фильм. Также это фильм будет участвовать в случайных и целевых рекомендациях.
На рисунке 1 представлена схема документооборота информационной системы. На схеме видно, что незарегистрированный пользователь имеет возможность получать широкий список отчетов, а также доступ к форме регистрации, на основании которой предоставляется возможность авторизации в системе с дальнейшей возможностью оценивания фильмов на основании которого строятся отчеты «список оцененных фильмов» и «список рекомендованных фильмов по схожести с другим пользователем». Пользователь в статусе авторизированного пользователя может получить роль «администратора» для внесения информации о фильмах в базу данных системы.
Рисунок 1 - Документооборот ИС RandMovie
1.3 Постановка задачи и определение требований к системе
Актуальность разработки рекомендательной информационной системы для онлайн-кинотеатров заключается в необходимости подбора фильмов для просмотра с учетом вкусов и предпочтений пользователей, отсутствием ангажированности рекомендаций, удобством использования и сокращением времени поиска контента.
Таким образом, целью разработки является создание информационной системы, позволяющей обрабатывать и хранить информацию о фильмах и данных о пользователях и их предпочтениях.
Функциональные требования к разрабатываемой информационной системе следующие:
- Вести учет фильмов, функция, которая хранит информацию о фильмах, которая включает в себя год выпуска, жанр, краткое описание, оценках пользователей и т.д., а также возможность формирования отчетов об оценках пользователей по фильму;
- учет пользователей системы, функция, которая позволяет хранить список пользователей системы с паролями и учетными записями пользователей;
- учет оценок фильмов, функция, которая позволяет оценивать в информационной системе фильмы, на основе оценок зарегистрированных пользователей;
- подбор фильмов по схожести интересов пользователей, функция, которая позволяет проводить поиск схожих по интересам пользователей информационной системы и на основе проведенного анализа формировать рекомендации тех фильмов, которые не смотрел текущий пользователь, но смотрел пользователь с мерой схожести близкой к нему.
Совместная фильтрация дает рекомендации в соответствии с сочетанием вашего опыта и опыта других людей. Рассмотрим, как работает совместная фильтрация на основе пользователей или user based подход. Сначала нам нужно составить матрицу пользователя и элемента. Каждая строка — это пользователи, а каждый столбец — это такие элементы, как фильм. Во-вторых, вычисляются оценки сходства между пользователями. Каждая строка — это пользователи, а каждая строка — это вектор. Вычислите сходство этих строк (пользователей). В-третьих, найдите пользователей, которые похожи на вас, основываясь на прошлом поведении. Наконец, это говорит о том, что у вас раньше не было опыта.
Давайте рассмотрим пример совместной фильтрации на основе пользователей. Предположим, что есть два человека. Первый посмотрел 2 фильма: «Властелин колец» и «Хоббит». Второй посмотрел только фильм «Властелин колец». Совместная фильтрация на основе пользователей вычисляет сходство этих двух людей и видит обоих, которые смотрят фильм «властелин колец». Затем алгоритм рекомендует фильм «хоббит» второму пользователю, как это видно на рисунке 2.
Рисунок 2 –Пример user based рекомендации
Вся входная и выходная информация функций информационной системы представлена в таблице 1.
Таблица 1 - Входная и выходная информация функций ИС
Полная информация о фильме, такая как жанр, год экранизации и т.д.
Отчет обо всех фильмах, находящихся в системе
Данные для регистрации и авторизации (логин, пароль, e-mail)
зарегистрированных пользователей в
Информация об учтенных фильмах
Отчет список оцененных фильмов
Подбор фильмов по схожести интересов пользователей
Список рекомендованных фильмов по схожести с другим пользователем
Информация об учтенных пользователях
В результате проведенного анализа создана модель IDFE0 представленная на рисунке 3. На рисунке 4 выделены функции «учет фильмов», «учет пользователей», «учет оценок фильмов» и «подбор фильмов по схожести интересов пользователей»
Декомпозиции функций представлены на рисунках 5 - 8.
Рисунок 3 - Модель IDFE0 разрабатываемой ИС
Рисунок 4 - Функции разрабатываемой ИС
Декомпозиция функции «учет фильмов» изображена на рисунке 5, где в качестве входной информации является информация о фильмах, а выходной – информация об учетных фильмах и отчеты о жанрах и о фильмах.
Рисунок 5 – Декомпозиция функции «учет фильмов»
Декомпозиция функции «учет пользователей» изображена на рисунке 6.
Рисунок 6 – Декомпозиция функции «учет пользователей»
Декомпозиция функции «учет оценок фильмов» изображена на рисунке 7.
Декомпозиция функции «подбор фильмов по схожести интересов пользователей» изображена на рисунке 8.
Рисунок 7 - Декомпозиция функции «учет оценок фильмов»
Рисунок 8 - Декомпозиция функции «подбор фильмов по схожести интересов пользователей»
1.4 Обзор существующих решений
Рассмотрим существующие веб-ресурсы, функции которых связаны с предоставлением информации о фильмах пользователям.
Одним из крупнейший веб сервисов по предоставлению рекомендаций по фильмам является «Кинопоиск». «Кинопоиск» — российский стриминговый сервис, основанный на базе одноименного сайта, принадлежит компании «Яндекс». По некоторым оценкам, считается самым крупным оператором платного видеоконтента в стране. Это единственная служба, никак не связанная с телекомпаниями: вся работа ориентирована исключительно на пользователей интернета.
Сервис предоставляет доступ к эксклюзиву: сериалам по комиксам DC, «Южному парку» и «Рику и Морти». Перевод на русский делают популярные студии, поэтому можно выбрать привычные голоса героев.
На рисунке 9 изображена главная страница веб-ресурса по предоставлению рекомендации по фильмам «Кинопоиск».
Рисунок 9 - Главная страница ресурса «КиноПоиск»
Лидером по базе данных с фильмами является веб ресурс iMDb, которой по функциям напоминает «КиноПоиск». IMDB — самый популярный сайт фильмов с функцией пользовательского рейтинга. Он предоставляет всю необходимую информацию, такую как обзоры, рейтинги, изображения, видео и т. д., которые могут понадобиться вам, чтобы решить, стоит ли смотреть фильм или нет. IMDb насчитывает около 4,7 млн названий (включая эпизоды) и 83 млн пользователей в своей базе данных.
На рисунке 10 изображена главная страница сервиса IMDb.
Рисунок 10 – Главная страница ресурса «iMDB»
Проведем сравнительный анализ существующих сервисов с функцией рекомендации фильмов с разрабатываемой информационной системой. Результаты анализа приведены в таблице 2.
Таблица 2 - Сравнительный анализ существующих аналогов в сравнении с разрабатываемой информационной системой.
Возможность просматривать кино онлайн
В результате анализа существующих сервисов по выбранным характеристикам можно сделать вывод, что главные представители индустрии кинопоказов зарабатывают на стриминговых сервисах. Например, по итогам 2021 года всевозможные легальные Стриминговые сервисы и онлайн – кинотеатры заработали больше денег, чем весь мировой кинопрокат вместе взятый. Согласно исследованию аналитического агентства Markets&Markets совокупный доход официальных видеосервисов, функционирующих в виртуальном пространстве, превышает 70 миллиардов долларов.
В связи с сотрудничеством со стриминговыми сервисами, с большой долей вероятности рекомендательные системы платформ iMDb и Кинопоиск не являются объективными, а являются ангажированными и предоставляют тот контент, который предлагают маркетинговые компании и продюсерские службы.
Этим обосновывается решение создать рекомендательную информационную систему на основе User Based подхода к формированию рекомендаций.
2 ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ РАЗРАБОТКИ ИНФОРМАЦИОННОЙ СИСТЕМЫ
Система рекомендаций фильмов или система рекомендаций фильмов – это основанный на машинном обучении подход к фильтрации или прогнозированию предпочтений пользователей в отношении фильмов на основе их прошлого выбора и поведения. Это усовершенствованный механизм фильтрации, который предсказывает возможные варианты выбора фильма заинтересованным пользователем и его предпочтения в отношении элемента, относящегося к предметной области, также известного как фильм.
Основная концепция системы рекомендаций фильмов довольно проста. В частности, в каждой рекомендательной системе есть два основных элемента: пользователи (users) и элементы (items). Система генерирует прогнозы фильмов для своих пользователей, а элементами являются сами фильмы.
Основная цель систем рекомендаций фильмов — фильтровать и прогнозировать только те фильмы, которые соответствующий пользователь, скорее всего, захочет посмотреть. Алгоритмы ML для этих рекомендательных систем используют данные об этом пользователе из базы данных системы. Эти данные используются для прогнозирования будущего поведения соответствующего пользователя на основе информации из прошлого.
Системы рекомендаций фильмов используют набор различных стратегий и алгоритмов фильтрации, чтобы помочь пользователям найти наиболее подходящие фильмы. Наиболее популярные категории алгоритмов машинного обучения, используемых для рекомендаций фильмов, включают фильтрацию на основе контента и системы совместной фильтрации.
Стратегия фильтрации для систем рекомендаций фильмов, которая использует предоставленные данные о предметах (фильмах). Эти данные играют здесь решающую роль и извлекаются только от одного пользователя. Алгоритм машинного обучения, используемый для этой стратегии, рекомендует фильмы, похожие на предпочтения пользователя в прошлом. Таким образом, сходство в фильтрации на основе контента создается данными о прошлых выборах фильмов и лайках только одного пользователя.
Как это работает? Система рекомендаций анализирует прошлые предпочтения соответствующего пользователя, а затем использует эту информацию, чтобы попытаться найти похожие фильмы. Эта информация доступна в базе данных (например, исполнители главных ролей, режиссер, жанр и т. д.). После этого система предоставляет пользователю рекомендации фильмов. Тем не менее, основным элементом фильтрации на основе контента являются данные только одного пользователя, которые используются для прогнозирования.
Как следует из названия, эта стратегия фильтрации основана на сочетании поведения соответствующего пользователя и других пользователей. Система сравнивает и противопоставляет эти варианты поведения для получения наиболее оптимальных результатов. Это совместная работа кинопредпочтений и поведения нескольких пользователей.
Каков механизм этой стратегии? Основным элементом этой системы рекомендаций фильмов и алгоритма машинного обучения, на котором она построена, является история всех пользователей в базе данных. По сути, совместная фильтрация основана на взаимодействии всех пользователей системы с элементами (фильмами). Таким образом, каждый пользователь влияет на конечный результат этой системы рекомендаций на основе ML, в то время как фильтрация на основе контента строго зависит от данных от одного пользователя для ее моделирования.
Алгоритмы совместной фильтрации делятся на две категории:
Совместная фильтрация на основе пользователей. Идея состоит в том, чтобы искать похожие шаблоны в предпочтениях фильмов у целевого пользователя и других пользователей в базе данных.
Совместная фильтрация на основе элементов. Основная концепция здесь заключается в поиске похожих элементов (фильмов), которые целевые пользователи оценивают или с которыми взаимодействуют.
Современный подход к системам кинорекомендаций предполагает сочетание обеих стратегий для максимально постепенного и явного результата.
На рисунке 11 представлены два основных подхода к построению рекомендаций.
Рисунок 11 – Схема работы классических подходов к рекомендациям
2.2 Коллаборативная фильтрация
Благодаря совместной фильтрации система основана на прошлых взаимодействиях между пользователями и фильмами. Имея это в виду, входные данные для системы совместной фильтрации состоят из прошлых данных о взаимодействии пользователей с фильмами, которые они смотрят.
Например, если пользователь A просматривает M1, M2 и M3, а пользователь B просматривает M1, M3, M4, мы рекомендуем M1 и M3 аналогичному пользователю C. Вы можете увидеть, как это выглядит на рисунке ниже для наглядности.
Эти данные хранятся в матрице, называемой матрицей взаимодействия пользователя с фильмом, где строки — это пользователи, а столбцы — фильмы.
Рисунок 12 – Матрица взаимодействия пользователя (матрица предпочтений)
На нужно как можно лучше предсказать, какие оценки должны быть в ячейках со знаками вопроса.
Рисунок 13 – Предсказание оценок пользователей
Напомним, что основная идея коллаборативной фильтрации — похожим пользователям обычно нравятся похожие объекты. Начнем с самого простого метода.
· Выберем некоторую условную меру схожести пользователей по их истории оценок
· Объединим пользователей в группы (кластеры) так, чтобы похожие пользователи оказывались в одном кластере.
· Оценку пользователя объекту будем предсказывать как среднюю оценку кластера этому объекту:
У этого алгоритма есть несколько проблем:
· Нечего рекомендовать новым/нетипичным пользователям. Для таких пользователей не найдется подходящего кластера с похожими на них пользователями.
· Не учитывается специфика каждого пользователя. В каком-то смысле мы делим всех пользователей на какие-то классы (шаблоны).
· Если в кластере никто не оценивал объект, то предсказание сделать не получится.
2.3 Контентная фильтрация
Методы, основанные на содержании, основаны на сходстве атрибутов фильма. Используя этот тип рекомендательной системы, если пользователь смотрит один фильм, ему рекомендуются похожие фильмы. Например, если пользователь смотрит комедию с Адамом Сэндлером в главной роли, система порекомендует ему фильмы того же жанра или с одним и тем же актером в главной роли, или и то, и другое. Имея это в виду, входными данными для построения рекомендательной системы на основе контента являются атрибуты фильмов.
Попробуем несколько улучшить предыдущий метод и заменить жесткую кластеризацию на следующую формулу:
В предыдущем методе мы отталкивались от идеи, что, скажем, фильм понравится пользователю, если он понравился его друзьям. Здесь же мы считаем, что фильм понравится пользователю, если ему понравились похожие фильмы.
· Холодный старт — новые объекты никому не рекомендуются.
· Рекомендации часто тривиальны.
2.3 Наборы данных
Итак, нам нужно создать механизм, который изучает и распознает шаблоны в истории просмотров пользователя, прежде чем использовать эти шаблоны для создания новых рекомендаций. Что для этого требуется?
· Данные. Системам машинного обучения нужны данные, поэтому найдите и импортируйте необходимые библиотеки с наборами данных фильмов, которые уже имеют глобальные рейтинги.
· Анализ. Создайте общие рекомендации фильмов с самым высоким рейтингом из существующего набора данных.
· Персонализация. Получайте персонализированные рейтинги, предоставляя собственные оценки фильмам.
· Стратегия. Внедрите стратегию контентной или совместной фильтрации.
· Комбинация. Объедините списки рекомендаций, чтобы получить разумную оценку по рейтингам. Объединенный набор данных рейтингов фильмов теперь можно использовать для любой модели фильтрации.
Все, что нужно для создания механизма рекомендаций фильмов — это проанализировать данные, построить систему рекомендаций и получить рекомендации.
Поиск правильных наборов данных о фильмах имеет решающее значение для освоения основных методов машинного обучения, и попробуйте свой проект рекомендации фильмов. Правильные наборы данных о фильмах, наиболее ценные для проектов машинного обучения, должны содержать информацию об актерах, сценарии, экранном времени, обзорах, сюжете и т. д. Такие наборы данных может быть трудно найти, поэтому мы подготовили список самых популярных фильмов. наборы данных для машинного обучения для вашего удобства:
· Лингвистические данные 32-килобайтных субтитров к фильмам с метаданными IMBDb
· Полный набор данных MovieLens на Kaggle
· Данные обзора фильмов Корнелла
· Наборы данных Французского национального киноцентра
· Наборы данных фильмов на data.world
Для нашей собственной системы мы будем использовать набор данных MovieLens с открытым исходным кодом от GroupLens. Этот набор данных содержит 100 000 точек данных о различных фильмах и пользователях.
Мы будем использовать три столбца из данных:
Представление данных изображено на рисунке 13.
Рисунок 14 – Используемый набор данных
2.4 Реализация рекомендательных систем
Реализуем собственную систему рекомендаций фильмов, используя концепции, рассмотренные выше.
Чтобы получить рекомендации для наших пользователей, мы будем прогнозировать их оценки для фильмов, которые они еще не смотрели. Затем фильмы индексируются и предлагаются пользователям на основе этих прогнозируемых оценок.
Для этого мы будем использовать прошлые записи фильмов и рейтинги пользователей, чтобы предсказать их будущие рейтинги. На данный момент стоит упомянуть, что в реальном мире мы, скорее всего, столкнемся с новыми пользователями или фильмами без истории. Такие ситуации называются проблемами холодного запуска.
Давайте кратко рассмотрим, как можно решить проблемы с холодным запуском. Проблемы с холодным запуском можно решить с помощью рекомендаций, основанных на метаинформации, например: для новых пользователей мы можем использовать их местоположение, возраст, пол, браузер и пользовательское устройство для прогнозирования рекомендаций; для новых фильмов мы можем использовать жанр, актерский состав и съемочную группу, чтобы рекомендовать их целевым пользователям.
Для нашей рекомендательной системы мы будем использовать оба упомянутых выше метода: фильтрацию на основе контента и совместную фильтрацию. Чтобы найти сходство между фильмами для нашего метода, основанного на содержании, мы будем использовать функцию косинусного сходства. Для нашего метода совместной фильтрации мы будем использовать метод матричной факторизации.
Первым шагом к этому является создание модели на основе матричной факторизации. Мы будем использовать выходные данные этой модели и несколько созданных вручную функций, чтобы предоставить входные данные для окончательной модели. Основной процесс будет выглядеть следующим образом:
Шаг 1. Создайте модель на основе матричной факторизации.
Шаг 2: Создайте элементы ручной работы
Шаг 3: Реализуйте окончательную модель
Рассмотрим подробнее каждый из шагов.
Шаг 1: Алгоритм на основе матричной факторизации
Матричная факторизация — это класс алгоритмов совместной фильтрации, используемых в рекомендательных системах. Это семейство методов стало широко известно во время розыгрыша призов Netflix благодаря своей эффективности.
Алгоритмы матричной факторизации работают, разлагая матрицу взаимодействия пользователя с фильмом на произведение двух прямоугольных матриц меньшей размерности, скажем, U и M. Разложение выполняется таким образом, что произведение дает почти такие же значения, что и матрица взаимодействия пользователя с фильмом. Здесь U представляет матрицу пользователей, M представляет матрицу фильмов, n — количество пользователей, а m — количество фильмов.
Каждая строка пользовательской матрицы представляет пользователя, а каждый столбец матрицы фильмов представляет фильм.
Рисунок 15 – Матричная факторизация
Как только мы получим матрицы U и M на основе непустых ячеек в матрице взаимодействия пользователя с фильмом, мы произведем произведение U и M и предскажем значения непустых ячеек в матрице взаимодействия пользователя с фильмом.
Для реализации матричной факторизации мы используем простую библиотеку Python под названием Surprise, предназначенную для создания и тестирования рекомендательных систем. Фрейм данных преобразуется в набор train, формат набора данных, который должен быть принят библиотекой Surprise.
from surprise import SVD
import numpy as np
import surprisefrom surprise import Reader, Dataset
# It is to specify how to read the data frame.
reader = Reader(rating_scale=(1,5))# create the traindata from the data frame
train_data_mf = Dataset.load_from_df(train_data[['userId', 'movieId', 'rating']], reader)# build the train set from traindata.
#It is of dataset format from surprise library
trainset = train_data_mf.build_full_trainset()svd = SVD(n_factors=100, biased=True, random_state=15, verbose=True)
svd.fit(trainset)
Теперь модель готова. Мы сохраним эти прогнозы, чтобы передать их в окончательную модель в качестве дополнительной функции. Это поможет нам включить совместную фильтрацию в нашу систему.
#getting predictions of train set
train_preds = svd.test(trainset.build_testset())
train_pred_mf = np.array([pred.est for pred in train_preds])
Мы должны выполнить вышеуказанные шаги и для тестовых данных.
Шаг 2: Создание элементов ручной работы
Давайте преобразуем данные в формате фрейма данных в матрицу взаимодействия пользователя с фильмом. Матрицы, используемые в этом типе задач, обычно разрежены, потому что есть большая вероятность того, что пользователи могут оценить только несколько фильмов.
Преимущества разреженного матричного формата данных, также называемого форматом CSR, заключаются в следующем:
· эффективные арифметические операции: CSR + CSR, CSR * CSR и т. д.
· быстрые матрично-векторные произведения
· scipy.sparse.csr_matrix — это служебная функция, которая эффективно преобразует фрейм данных в разреженную матрицу.
# Creating a sparse matrix
train_sparse_matrix = sparse.csr_matrix((train_data.rating.values, (train_data.userId.values, train_data.movieId.values)))
«train_sparse_matrix» — это разреженное матричное представление фрейма данных train_data.
Мы создадим 3 набора функций, используя эту разреженную матрицу:
1. Особенности, которые представляют глобальные средние значения
2. Функции, которые представляют первую пятерку похожих пользователей
3. Особенности, представляющие пятерку похожих фильмов
Давайте рассмотрим, как подготовить каждый более подробно.
1. Характеристики, которые представляют глобальные средние значения
Мы будем использовать три глобальных средних показателя:
1. Средние оценки всех фильмов, данные всеми пользователями
2. Средние оценки определенного фильма всеми пользователями
3. Средние оценки всех фильмов, поставленные конкретным пользователем
4. train_averages = dict() # get the global average of ratings in our train set. train_global_average = train_sparse_matrix.sum()/train_sparse_matrix.count_nonzero() train_averages['global'] = train_global_average train_averagesOutput: {‘global’: 3.5199769425298757}Next, let’s create a function which takes the sparse matrix as input and gives the average ratings of a movie given by all users, and the average rating of all movies given by a single user.# get the user averages in dictionary (key: user_id/movie_id, value: avg rating) def get_average_ratings(sparse_matrix, of_users):# average ratings of user/axes ax = 1 if of_users else 0 # 1 - User axes,0 - Movie axes# ".A1" is for converting Column_Matrix to 1-D numpy array sum_of_ratings = sparse_matrix.sum(axis=ax).A1# Boolean matrix of ratings ( whether a user rated that movie or not) is_rated = sparse_matrix!=0# no of ratings that each user OR movie.. no_of_ratings = is_rated.sum(axis=ax).A1# max_user and max_movie ids in sparse matrix u,m = sparse_matrix.shape # create a dictionary of users and their average ratings.. average_ratings = { i : sum_of_ratings[i]/no_of_ratings[i]for i in range(u if of_users else m) if no_of_ratings[i] !=0}#return that dictionary of average ratings return average_ratings
Средняя оценка выставляется пользователем:
train_averages['user'] = get_average_ratings(train_sparse_matrix, of_users=True)
train_averages['movie'] = get_average_ratings(train_sparse_matrix, of_users=False)
2. Функции, которые представляют топ-5 похожих пользователей
В этом наборе функций мы создадим топ-5 похожих пользователей, которые оценили определенный фильм. Сходство вычисляется с помощью косинусного сходства между пользователями.
# compute the similar Users of the "user"user_sim = cosine_similarity(train_sparse_matrix[user], train_sparse_matrix).ravel() top_sim_users = user_sim.argsort()[::-1][1:] # we are ignoring 'The User' from its similar users.# get the ratings of most similar users for this movie top_ratings = train_sparse_matrix[top_sim_users, movie].toarray().ravel()# we will make it's length "5" by adding movie averages to top_sim_users_ratings = list(top_ratings[top_ratings != 0][:5]) top_sim_users_ratings.extend([train_averages['movie'][movie]]*(5 -len(top_sim_users_ratings)))
3. Особенности, которые представляют 5 лучших похожих фильмов.
В этом наборе функций мы получаем 5 лучших похожих фильмов, оцененных конкретным пользователем. Это сходство вычисляется с помощью косинусного сходства между фильмами.
# compute the similar movies of the "movie" movie_sim = cosine_similarity(train_sparse_matrix[:,movie].T, train_sparse_matrix.T).ravel() top_sim_movies = movie_sim.argsort()[::-1][1:]# we are ignoring 'The User' from its similar users. # get the ratings of most similar movie rated by this user top_ratings = train_sparse_matrix[user, top_sim_movies].toarray().ravel()# we will make it's length "5" by adding user averages to top_sim_movies_ratings = list(top_ratings[top_ratings != 0][:5]) top_sim_movies_ratings.extend([train_averages['user'][user]]*(5-len(top_sim_movies_ratings)))
Мы добавляем все эти функции для каждой пары «фильм-пользователь» и создаем фрейм данных. Рисунок 16 — это изображение фрейма данных.
Вот более подробная разбивка его содержания:
· GAvg: средний рейтинг всех рейтингов
· Рейтинг похожих пользователей этого фильма: sur1, sur2, sur3, sur4, sur5 (топ 5 похожих пользователей, оценивших этот фильм )
· Похожие фильмы, оцененные этим пользователем: smr1, smr2, smr3, smr4, smr5 (топ-5 похожих фильмов по оценке пользователя)
· UAvg: средний рейтинг пользователя
· MAvg: средний рейтинг этого фильма.
· рейтинг: Рейтинг этого фильма от этого пользователя.
Как только у нас будут готовы эти 13 функций, мы добавим выходные данные матричной факторизации в качестве 14-й функции. На рисунке 15 можно увидеть снимок данных после добавления выходных данных шага 1.
Рисунок – 17 Представление данных в табличном виде
Последний столбец с именем mf_svd — это дополнительный столбец, содержащий выходные данные модели, выполненной на шаге 1.
Шаг 3: Создание окончательной модели для нашей системы рекомендаций фильмов.
Чтобы создать нашу окончательную модель, давайте воспользуемся XGBoost, оптимизированной распределенной библиотекой повышения градиента.
# prepare train data
x_train = final_data.drop(['user', 'movie','rating'], axis=1)
y_train = final_data['rating']
# initialize XGBoost model
xgb_model = xgb.XGBRegressor(silent=False, n_jobs=13,random_state=15,n_estimators=100)
# fit the model
xgb_model.fit(x_train, y_train, eval_metric = 'rmse')
2.5 Метрики качества рекомендаций
Существует два основных способа оценки производительности рекомендательной системы: среднеквадратическая ошибка (RMSE) и средняя абсолютная ошибка в процентах (MAPE). RMSE измеряет квадрат потерь, а MAPE измеряет абсолютные потери. Более низкие значения означают более низкую частоту ошибок и, следовательно, более высокую производительность.
Обе метрики ведут себя на данных хорошо, поскольку позволяют легко интерпретировать их. Давайте посмотрим, что из себя представляет каждый из них:
Среднеквадратичная ошибка (RMSE)
RMSE представляет собой квадратный корень из среднего квадрата ошибок и определяется по приведенной ниже формуле.
r^ — прогнозируемые рейтинги, а
N — общее количество прогнозов.
Средняя абсолютная ошибка в процентах (MAPE), которая измеряет ошибку в процентах.
r^ — прогнозируемые рейтинги, а
N — общее количество прогнозов.
#dictionaries for storing train and test results
test_results = dict()
# from the trained model, get the predictions
y_est_pred = xgb_model.predict(x_test)
# get the rmse and mape of train data
rmse = np.sqrt(np.mean([ (y_test.values[i] - y_test_pred[i])**2 for i in
range(len(y_test_pred)) ]))
mape = np.mean(np.abs( (y_test.values- y_test_pred)/y_true.values )) * 100
# store the results in train_results dictionary
test_results = {'rmse': rmse_test, 'mape' : mape_test, 'predictions' : y_test_pred}
3 РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ
3.1 Информационно-логическая модель информационной системы
В силу особенностей решаемой задачи в рамках реализации рекомендательной информационной системы для онлайн кинотеатров, особенностей данных которые следует обрабатывать и учета развертывания системы в качестве веб-ресурса, было принято решение использовать реляционную модель баз данных. Использование такого модели баз данных позволяет представлять информацию с помощью взаимосвязанных таблиц. В каждой таблице базе данных существует первичный ключ-это поле или набор полей, которые определяют уникальность записи. Также использование реляционной модели баз данных позволяет оперировать информацией в разрабатываемых функциях с помощью SQL запросов.
Так как реализация системы будет осуществлена как веб-ресурс, то предлагается использовать MySQL, как наиболее популярную для веб-разработки. MySQL преуспел в быстром вводе данных и масштабируемости, сохранив при этом высокую доступность и производительность. Все это делает MySQL крайне полезным в веб-разработке и создании приложений.
На рисунке 16 представлена информационно-логическая модель данных для разрабатываемо системы, которая состоит из 4-х таблиц, с установленными связями (отношениями) между ними. В таблице 18 представлено описание атрибутов данных таблиц.
Рисунок 18 – Информационно-логическая модель информационной системы
Таблица 3 - Таблицы и их атрибуты модели информационной системы
Автоикрементное значение, код пользователя
Таблица содержит в себе информацию после регистрации пользователя, которая необходима для регистрации. А так же устанавливает роль пользователя.
Логин который пользователь ввел при регистрации
Пароль котороый пользователь ввел при регистрации
Еллектронный адрес пользователя введен при регистрации
Роль пользователя, по умолчанию роль равна «user»
Автоикрементное значение, код жанра
Таблица с необходимыми для фильтрации, рекомендации и т.д. жанрами фильмов.
Автоикрементное значение, код фильма
Таблица содержит в себе всю информацию о фильме, включая общую сумму оценок а также их колличества, необходимых для расчета рейтинга фильма.
Наименование фильма, на русском языке
Страна в который фильм был снят
Цифровое значение жанра к которому фильм пренадлежит
Автоикрементное значение, код оценки
Таблица содержит в себе все оценки всех
Оценка которую выставил пользователь оцениваемому фильму
Идентификатор жанра, фильма, которого оценил пользователь
Для разработки информационной системы формирования рекомендаций по подбору фильмов, как веб-сервиса потребуется на компьютере установить локальный сервер. Один из наиболее популярных, стабильных и бесплатных веб-серверов является Open Server. Open Server Panel — это портативная программная среда, созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий. Данный программный комплекс включает в себя тщательно подобранный набор серверного программного обеспечения, а также невероятно удобную и продуманную управляющую утилиту, которая обладает мощными возможностями по администрированию и настройке всех доступных компонентов. Open Server также поддерживает работу с большинством СУБД и современные стандарты веб-разработки. В веб-сервис Open Server есть приложение phpMyAdmin — это инструмент с открытым исходным кодом, построенный на PHP, который позволяет администрировать, просматривать и работать с базами данных MySQL версии 5.0.27 в режиме онлайн.
Созданную версию автоматизированной информационной системы следует разместить на веб-сервере, который мог бы реализовать функции системы. Для этого необходимо определить минимальные технические и программные требования к серверу:
В качестве пользователей рекомендательной системы будут:
- незарегистрированный пользователь – который получает случайно сгенерированную выборку фильмов с отображением на главной странице веб-ресурса, а также имеет доступ к формам регистрации и авторизации в системе;
- зарегистрированный пользователь - получает доступ к личному кабинету пользователя, где есть возможность внести данные о себе и возможностью воспользоваться сгенерированной рекомендательной системой выборкой фильмов с учетом цифрового следа оставленного в системе. Список рекомендаций будет доступен на главной странице и будет создан с помощью функции «подбор фильмов по схожести интересов пользователей»;
- администратор – имеет расширенную возможность пользоваться системой и вносить в ее базу данных информацию о фильмах с помощью соответствующего документа.
Программные и системные требования необходимы е со стороны пользователя системы – это наличие любого установленного веб-браузера, а также ПК с минимальными характеристиками:
- GPU: nVidia, Intel, AMD/ATI;
Предполагается, что информационная система может использоваться на мобильных устройствах, поэтому дизайн веб-ресурса должен быть должен быть адаптирован под них. Определим минимальные технические и системные требования для мобильных устройств:
Предполагается, что база данных рекомендательной информационной системы будет содержать информацию о более 500 фильмов, а также информацию о более 1000 пользователей системы.
К описанию фильмов будет прикреплено изображение (постер) в виде графической картинки, которую стоить оптимизировать под размер блоков в которых она будет размещаться, с целью снижения серверной нагрузки и оптимизации используемого трафика.
3.3 Используемый технологический стек
Для реализации рекомендательной информационной системы потребовался набор технологий (стек технологий), который состоит:
- Hyper Text Markup Language (HTML5) [18], стандартизированный язык гипертекстовой разметки документов для просмотра веб-страниц в браузере. Веб-браузеры получают HTML документ от сервера по протоколам HTTP/HTTPS или открывают с локального диска, далее интерпретируют код в интерфейс, который будет отображаться на экране монитора. Элементы HTML являются строительными блоками HTML страниц. С помощью HTML разные конструкции, изображения и другие объекты, такие как интерактивная веб-форма, могут быть встроены в отображаемую страницу. HTML предоставляет средства для создания заголовков, абзацев, списков, ссылок, цитат и других элементов. Элементы HTML выделяются тегами, записанными с использованием угловых скобок. Такие теги, как <img /> и <input />, напрямую вводят контент на страницу. Другие теги, такие как <p>, окружают и оформляют текст внутри себя и могут включать другие теги в качестве подэлементов. Браузеры не отображают HTML-теги, но используют их для интерпретации содержимого страницы. В HTML можно встроить программный код на языке программирования JavaScript, для управления поведением и содержанием веб-страниц. Также включение CSS в HTML описывает внешний вид и макет страницы.
- Cascading Style Sheets (CSS) [19] формальный язык декорирования и описания внешнего вида документа (веб-страницы), написанного с использованием языка разметки (чаще всего HTML или XHTML). Также может применяться к любым XML-документам, например, к SVG или XUL..
Для разработки front-end части, существует такие технологи как:
- JavaScript native (JS) [20], NativeScript - это основа для создания кросс-платформенных нативных мобильных приложений. Она позволяет разработчикам использовать XML, CSS и JavaScript для создания приложений для Android, iOS и даже для Windows Universal Platform. В отличие от Cordova, которая использует WebView для визуализации пользовательского интерфейса приложения, NativeScript использует механизм рендеринга собственной платформы, что означает, что он обеспечивает действительно собственный пользовательский интерфейс.
- AngularJS [11] - это фреймворк для работы с JavaScript, поддерживаемый Google. Он используется для создания одностраничных приложений и позволяет взаимодействовать с DOM (англ. Document Object Model — объектная модель документа). Работает Angular.JS по схеме MVC (англ. Model-View-Controller — модель-вид-контроллер) — она разделяет приложение на три отдельных части, которые можно изменять независимо друг от друга..
- ReactJS [13], это библиотека JavaScript с открытым кодом для создания внешних пользовательских интерфейсов. В отличие от других библиотек JavaScript, предоставляющих полноценную платформу приложений, React ориентируется исключительно на создание представлений приложений через инкапсулированные единицы (называются компонентами), которые сохраняют состояние и генерируют элементы пользовательского интерфейса.
- VueJS [12] - это JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Легко интегрируется в проекты с использованием других JavaScript-библиотек. Может функционировать как веб-фреймворк для разработки одностраничных приложений в реактивном стиле.
Представленные выше фреймворки являются лишь вспомогательными средствами или надстройками для native JavaScript, но им присущи свои особенности, которые влияют на скорость работы продукта. Таким образом наиболее разумным выбором будет JavaScript native.
Аналогичные выводы о фреймворках можно сделать и для back-end разработки. В результате для разработки back-end использовался PHP: Hypertext Preprocessor (PHP) [21] – это язык программирования, который позволяет веб-разработчикам создавать динамический контент, взаимодействующий с базами данных. PHP в основном используется для разработки веб-приложений. Его отличием от JavaScript является то, что он используется только для работы с сервером и серверной базой данных.
Также во время разработки информационной системы использовалась Model-View-Controller — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо[1].
· Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние[1].
· Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели[1].
· Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений[1].
3.4 Описание интерфейса веб-приложения
В разрабатываемой рекомендательной информационной системе предложено создать несколько справочников: filmdb, userdb, genresdb. Для работы с этими справочниками следует разработать несколько форм. Приведем описание представленных справочников и форм.
На рисунке 19 изображен фрагмент справочника userdb. В этом справочнике представлена информация о зарегистрированных пользователях, с полями id_users – идентификатор пользователя, login – логине, который указал пользователь при регистрации, password – пароле, который хранится в хэшированном с помощью метода md5 виде, а также email и роле пользователя в системе.
Рисунок 19 – Справочник userdb
Для ввода всей информации в справочник представленный выше используется форма регистрации / авторизации, изображенная на рисунке 20.
Рисунок 20 - Форма регистрации / авторизации
На рисунке 19 изображен фрагмент справочника genresdb, который содержит информацию о жанрах фильмов. Вносить информацию в этот справочник может только пользователь с расширенными правами – администратор. Данные вносятся администратором через форму, представленную на рисунке 21.
Рисунок 21 – Справочник genresdb
На рисунке 22 изображен фрагмент справочника filmdb, который хранит информацию о фильмах, содержащую идентификатор фильма, его название, года выпуска, стране, идентификаторе жанра, исполнительном директоре, описании, рейтинге и оценках к нему. Для заполнения справочника необходимы права «администратора». На рисунке 21 изображена форма внесения данных, которые хранятся в справочнике «filmdb».
Рисунок 22 - Справочник filmdb
Рисунок 23 – Форма добавления нового фильма с выбором жанра
Также в разрабатываемой рекомендательной информационной системе по подбору фильмов определен документ «оценивание фильма», который изображен на рисунке 24.
Как было сказано выше, документ «оценивание фильма» не доступен незарегистрированным пользователям. После регистрации и авторизации пользователя пользователю предлагается документ, представленный на рисунке 24. Его форма содержит описание и постер к фильму, а также доступна информацию по рейтингу фильма и возможности поставить оценку по 5-ти бальной шкале.
Рисунок 24 – Документ «оценивание фильма»
Также помимо документов в разрабатываемой рекомендательной информационной системе по подбору фильмов для просмотра определены отчеты.
На рисунке 25 изображен пример отчета обо всех фильмах, зарегистрированных в системе. Представленный в информационной системе отчет отображается как веб страница с сгруппированным по жанрам фильма. Для доступа к данному отчету имеют права любые пользователи системы. Формирование отчета происходит на стороне сервера при внесении или удалении из базы данных фильмов.
Рисунок 25 – Отчет обо всех фильмов, находящихся в системе
На рисунке 26 изображен отчет о самом популярном фильме, в рекомендательной системе. Этот отчет представлен отдельным html блоком, в котором доступно полное описание высокорейтингового фильма в системе (по оценкам пользователей системы). Если таких фильмов несколько, то система выбирает из них только один. Данный отчет формируется автоматически при входе на главную страницу.
Рисунок 26 - Отчет о самом популярном фильме
На рисунке 27 изображен отчет о самом многочисленном жанре, в рекомендательной системе. Это отчет представляется отдельным html блоком, в котором представлено какой жанр в информационной системе самый популярный. Популярность жанра определяется количеством фильмов. Помимо жанра определено полное описание случайного фильма который принадлежит к данному жанру, если таких фильмов несколько, то система выбирает случайный фильм из всего перечня доступных в системе фильмов данного жанра. Данный отчет формируется самостоятельно информационной системой при входе пользователя на главную страницу веб-ресурса.
Рисунок 27 - Отчет о самом многочисленном жанре
На рисунке 28 изображен отчет о количестве зарегистрированных пользователей в информационной системе. Данный отчет выполнен в виде отдельного небольшого html блока, в котором отображено количество пользователей, которые зарегистрировались в системе. Данный отчет формируется самостоятельно информационной системой при входе пользователя на главную страницу веб-ресурса. Реквизиты отчета представлены в таблице 9.
Рисунок 28 - Отчет о количестве зарегистрированных пользователей в
информационной системе
На рисунке 29 представлен отчет «случайный фильм», в информационной системе данный отчет выступает отдельным html блоком, в котором представлено полное описание случайного выбранного из базы данных фильма. Чтобы сгенерировать данный отчет, любой пользователь системы как незарегистрированный, так и зарегистрированный, должен использовать специальную кнопку информационной системы «Random» или «Давай еще!», иначе пользователи никак не могут управлять отчетом, данный отчет формирует информационная система каждый раз по нажатию на специально предназначенные для этого кнопки по средством скрипта.
Рисунок 29 - Отчет «Случайный фильм»
На рисунке 30 изображен отчет «Список случайных фильмов». Данный отчет выступает отдельным html блоком, в котором изначально представлен список из случайных фильмов. Генерация данного отчета происходит автоматически. Для формирования отчета необходимо нажать на постер фильма, в результате чего пользователь будет достуна карточка фильма с полным его описанием, рейтингом и возможностью его оценить (если он авторизирован), так же у пользователя будет возможность получить случайный фильм из базы данных путем использования кнопки «Давай еще!», так как карточка фильма, вызванная таким образом, полностью идентична отчету «Случайный фильм».
Рисунок 31 - Отчет «Список случайных фильмов»
На рисунке 32 изображен отчет «Список фильмов согласно выбранным критериям». Этот отчет выступает отдельным html блоком, в котором представлен список из фильмов соответствующих выбранных пользователем критериев. Далее пользователь может вызвать этот отчет аналогичными действиями отчету «Список случайных фильмов», т.е. пользователь должен нажать на постер фильма, в результате данного действия, в результате чего увидит карточку фильма с полным его описанием, рейтингом и возможностью его оценить (если он авторизирован). Так же у пользователя будет возможность получить случайный фильм из базы данных путем использования кнопки «Давай еще!» так как карточка фильма вызванная таким образом, полностью идентична отчету «Случайный фильм».
Рисунок 32 - Отчет «Список фильмов согласно выбранным критериям»
На рисунке 33 изображен отчет «Список оцененных фильмов». Этот отчет выступает отдельным html блоком, который доступен только авторизированным пользователям в личном кабинете, данный отчет представляет собой список из семи последних фильмов который оценил пользователь, отчет также отражает оценку, которую пользователь выставил представленным фильмам. Данный отчет генерируется автоматически информационной системой. Для вызова этого отчета, пользователь должен нажать на постер фильма, в результате данного действия, пользователь увидит карточку фильма с полным его описанием, рейтингом и возможностью его переоценить, так же у пользователя будет возможность получить случайный фильм из базы данных путем использования кнопки «Давай еще!» так как карточка фильма, вызванная таким образом, полностью идентична отчету «Случайный фильм».
Рисунок 33 - Отчет «Список оцененных фильмов»
На рисунке 34 изображен отчет «Список рекомендованных фильмов по схожести с другими пользователями». Этот отчет выступает отдельным html блоком, который доступен только авторизированным пользователям в личном кабинете, данный отчет представляет собой список из семи фильмов которые оценили похожие по интересам на авторизированного пользователя другие пользователи. Данный отчет генерируется автоматически информационной системой. Для вызова отчета пользователь должен нажать на постер фильма, в результате данного действия, пользователь увидит карточку фильма с полным его описанием, рейтингом и возможностью его оценить, так же у пользователя будет возможность получить случайный фильм из базы данных путем использования кнопки «Давай еще!» так как карточка фильма вызванная таким образом, полностью идентична отчету «Случайный фильм».
Рисунок 34 – Отчет «Список рекомендованных фильмов по схожести с другими пользователями»
Так как разрабатываемая рекомендательная информационная система подбора фильмов для просмотра является веб-ресурсом, то и взаимодействие с ним происходит через любой доступный веб-браузер. Так как информационная система реализована как веб-ресурс, то для работы с ней необходимо ввести url адрес ресурса.
Как только незарегистрированный пользователь попадает на главную страницу, ему сразу будет виден отчет «Список случайных фильмов», а также меню управления сайта, возможность выбрать жанр для выборки, кнопка Random которая сгенерирует карточку со случайным фильмом и возможность зарегистрироваться или авторизоваться в системе. Внизу страницы незарегистрированному пользователю будут доступы отчеты «Отчет о самом популярном фильме», «Отчет о самом популярном жанре», «Отчет обо всех фильмах, находящихся в системе». В футере для незарегистрованного пользователя будет доступен отчет о количестве зарегистрированных пользователей в информационной системе.
После того как пользователь авторизуется, ему становится доступна функция оценивания фильмов по 5-ти бальной шкале, после того, как пользователь оценит хотя бы один фильм, ему сразу становится доступен отчет «список оцененных фильмов» а также отчет «список рекомендованных фильмов по схожести с другим пользователем»
Если роль авторизированного пользователя «администратор», то ему также доступна функция добавления нового фильма в базу данных.
4 ОЦЕНКА ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ
4.1 Расчет трудоемкости выполнения работ
Рассчитаем трудоемкость выполнения работ при информационной системы.
Под определением трудоемкость работ будем понимать человеческие затраты труда, измеряемые в количестве часов, потраченных на выполнение поставленной задачи. В дальнейшем термин трудоемкость выполнения работ будем сокращенно обозначать ТВР.
Следует отметить, что ТВР зависит от множества факторов, имеющих вероятностный характер.
Для оценки ТВР необходимо определим список работ, примененных для реализации программного средства. ТВР рассчитывается как общее число трудодней затрачиваемых на каждую отдельную работу. Для этого используются оценки минимально возможной ВТР – Тmin(i) , максимально возможной - Tmax(i) и наиболее вероятной - Tож(i), рассчитанной по формуле.
Оценки трудоемкости и ее расчетные величины сведены и представлены в таблице 16. Степень неопределенности выполнения работы за ожидаемое время характеризуется дисперсией d(i), определяемой по формуле.
Разница между величинами Tmax(i) и Тmin(i) определяет степень вероятности выполнения работы без задержки. Рассмотрев формулу можно увидеть, что чем больше разность, тем вероятность станет меньше.
Таблица 4 – Оценка трудоемкости
1. Ознакомление с предметной областью
2. Разработка технического задания
3. Выбор алгоритма составления и свертки критериев и альтернатив
4. Создание интерфейса пользователя
5. Разработка программного продукта
6. Отладка и тестирование программы
7.Технико-экономическое обоснование разработки
После выполнения расчетов получаем следующие результаты:
¾ минимальная ТВР составляет 32 человеко-дня;
¾ максимальная ТВР составляет 50 человеко-дня;
¾ наиболее вероятная трудоемкость работ составила 40,4 человеко‑дня.
Произведя расчет данной таблицы можно сказать, что на всех этапах работы над информационной системой разница между максимальной и минимальной трудоемкостью выполнения работ составляет минимальное значение. Однако следует заметить, что показатель дисперсии на этапе разработки программного продукта равен 2,78. Данный показатель дисперсии указывает на то, что вероятность больших затрат времени на данный этап выше, чем у остальных, что обозначает на выход за временной интервал при разработки нашей системы.
4.2 Расчет затрат на разработку
Расчет себестоимости затрат на разработку системы позволяет дать экономическую величину затрат на ее реализацию. В плановую себестоимость входят все затраты, связанные с реализацией проекта. Для подсчета затрат связанных с выполнением работ, необходимо составить калькуляции плановой себестоимости. На основании этого документа осуществляется планирование учета затрат на выполнение работы.
В качестве основных затрат при расчете плановой себестоимости используются: материалы, оборудование, заработная плата, отчисления в социальные фонды, затраты по работам, выполняемым сторонними организациями, прочие прямые расходы, накладные расходы. В таблице 5 приведен основной перечень материалов.
Таблица 5 – Расчет стоимости материалов
Транспортно-заготовительные расходы
При разработке информационно-консультационной системы приобретение дополнительного оборудования и программных средств не понадобилось, в результате в статье затрат на специальное оборудование вычислить только амортизационные отчисления для использованного оборудования при разработке.
Амортизационные отчисления вычисляются по формуле:
где является стоимостью амортизационных отчислений выраженных в денежных единицах (рублях), m – количество оборудования одного типа, – годовая норма амортизационных отчислений (20%), – стоимость оборудования i-го вида в рублях, t – время использования оборудования i-го вида, выраженное в количестве лет.
Затраты на специальное оборудование рассчитаны в таблице 6.
Таблица 6 – Затраты на специальное оборудование
В результате вычислений, амортизационные отчисления оборудования составляют триста пять руб.. Затрат на программные средства не производились, так как использовалось свободное ПО или ПО с использованием академической лицензии университета.
Затраты на электроэнергию вычисляются по формуле .
где Сэн представляет собой стоимость затрат на электроэнергию в рублях, Wi – общая мощность оборудования i-го типа, измеряемого в кВт Ti – время пользования оборудованием i-го типа при реализации системы, которое измеряется в часах, С – стоимость одного кВт ч электроэнергии, Кi – коэффициент использования мощности i-го типа оборудования.
Перед расчетом Ti необходимо посчитать ожидаемое время разработки приложения, данные для расчета которого отображены в таблице расчета трудоемкости. В нашем случае ожидаемое время разработки составляет 32,2 человеко-дня. Тогда Ti = 32,2 (ч/д) * 8 (часов) = 257,6 часов.
Затраты на электроэнергию отображены в таблице 19.
Таблица 7 – Затраты на электроэнергию
На основании данных, вычисленных при расчете таблицы 19, затраты на электроэнергию составили двести четыре рубля.
Наиболее затратной статьей при выполнении проекта является заработная плата. Для расчета расходов на вычисление заработной платы используется заработная плата за один рабочий день и трудоемкость выполняемых работ. Учитывая среднюю заработную плату и количестве рабочих дней за месяц, можно вывести:
¾ среднее количество рабочих дней в месяце - 22;
¾ средняя заработная плата в день - 1000 рублей;
¾ заработная плата составит - 22000 рублей.
Учитывая трудоемкости работ равные 40,4 человеко-дня, вычислим заработную плату, которая будет равна 40,4*100=28 280 рублей.
Конечным этапом в вычислении затрат является расчет по статьям затрат. Накладные расходы включатся затраты на управление и хозяйственное обслуживание. Величина накладных расходов на разработку программного обеспечения определяется в процентах (50%) от заработной платы и будет равна 14 140 рублям.
К прямым расходам отнесем расходы на покупку и подготовку научно-технической информации и расходы, необходимые в момент автоматизации разрабатываемой системы.
Затраты вычисляются на основании статистических данных в процентах от затрат на общие расходы. При разработке данной информационно-консультационной системы этот процент соответственно равен 7%, или в денежном эквиваленте это равно 3 063,12 рублей.
Плановая стоимость представлена в таблице 8.
Таблица 8 – Расчет плановой себестоимости
Из таблицы 8 можно подсчитать общую плановая стоимость реализуемой информационно-консультационной системы, которая равна 64 921,81 рублей.
В процессе выполнения работы была разработана рекомендательная информационная системы для онлайн-кинотеатров, с функциями «учет фильмов», «учет пользователей», «учет оценок фильмов» и «подбор фильмов по схожести интересов пользователей», позволяющая производить поиск фильмов на не только по названиям и характеристикам фильмов, но и на основе релевантных предпочтений пользователей с учетом интеллектуальных рекомендаций.
Созданная рекомендательная система представляет собой веб-ресурс, разработанный с помощью следующего технологического стека: JavaScript, Python, PHP, CSS. Для реализации базы данных использовалась реляционная система управления базами данных MySQL 5.7.
Архитектура системы на основе которой построено приложение использует метод MVC (Model-View-Controller).
В результате выполнения выпускной квалификационной работы были получены следующие результаты:
– дана характеристика исследуемого объекта;
– сформулирована постановка задачи и определены требований к системе;
– проведен выбор и обоснование среды разработки;
– разработаны функциональные требования к проектируемой информационной системе;
– спроектирована архитектура системы;
– спроектирована и реализована база данных, веб-приложение;
– выбрана модель реализации рекомендаций пользователей;
– разработано руководство пользователя;
– проведен расчет экономической эффективности.
Практическая значимость результатов выпускной квалификационной работы заключается в возможности применения разработанных функций как типовых отдельных модулей на которых можно реализовать рекомендательные системы в различных областях.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Ким Фальк. Рекомендательные системы на практике / пер. с англ. Д. М. Павлова. – М.: ДМК Пресс, 2020. – 448 с.
2. Attention is all you need / Ashish Vaswani, Noam Shazeer, Niki Parmar et al. // arXiv preprint arXiv:1706.03762.–– 2017.
3. Bert: Pre-training of deep bidirectional transformers for language understanding / Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova // arXiv preprint arXiv:1810.04805.–– 2018.
4. Bostrom Kaj, Durrett Greg. Byte pair encoding is suboptimal for language model pretraining // arXiv preprint arXiv:2004.03720.–– 2020.
5. Competence-based curriculum learning for neural machine translation / Emmanouil Antonios Platanios, Otilia Stretcu, Graham Neubig et al. // arXiv preprint arXiv:1903.09848.–– 2019.
6. Curriculum learning / Yoshua Bengio, Jérôme Louradour, Ronan Collobert, Jason Weston // Proceedings of the 26th annual international conference on machine learning.–– 2009.–– P. 41–48.
7. Curriculum learning for natural language understanding / Benfeng Xu, Licheng Zhang, Zhendong Mao et al. // Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics.–– 2020.–– P. 6095–6104.
8. Curriculum learning for reinforcement learning domains: A framework and survey / Sanmit Narvekar, Bei Peng, Matteo Leonetti et al. // Journal of Machine Learning Research.–– 2020.–– Vol. 21, no. 181.––P. 1–50.
9. Domain-specific language model pretraining for biomedical natural language processing / Yu Gu, Robert Tinn, Hao Cheng et al. // arXiv preprint arXiv:2007.15779.–– 2020.
10. Exploring the limits of transfer learning with a unified text-to-text transformer / Colin Raffel, Noam Shazeer, Adam Roberts et al. // arXiv preprint arXiv:1910.10683.–– 2019.
11. Gage Philip. A new algorithm for data compression // C Users Journal.–– 1994.–Vol. 12, no. 2.––P. 23–38.
12. Hacohen Guy, Weinshall Daphna. On the power of curriculum learning in training deep networks // International Conference on Machine Learning / PMLR.––2019.–P. 2535–2544.
13. Hochreiter Sepp, Schmidhuber Jürgen. Long short-term memory // Neural computation.–– 1997.–– Vol. 9, no. 8.––P. 1735–1780
14. HuggingFace’s Transformers: State-of-the-art natural language processing / Thomas Wolf, Lysandre Debut, Victor Sanh et al. // arXiv preprint arXiv:1910.03771.–– 2019.
15. Kocmi Tom, Bojar Ondrej. Curriculum learning and minibatch bucketing in neural machine translation // arXiv preprint arXiv:1707.09533.–– 2017.
16. Kudo Taku. Subword regularization: Improving neural network translation models with multiple subword candidates // arXiv preprint arXiv:1804.10959.––2018.
17. Language models are few-shot learners / Tom B Brown, Benjamin Mann, Nick Ryder et al. // arXiv preprint arXiv:2005.14165.–– 2020.
18. Narvekar Sanmit. Curriculum Learning in Reinforcement Learning. // IJCAI.–2017.–– P. 5195–5196.
19. Pre-trained models for natural language processing: A survey / Xipeng Qiu, Tianxiang Sun, Yige Xu et al. // Science China Technological Sciences.–– 2020.–P. 1–26.
20. Revisiting pre-trained models for chinese natural language processing / Yiming Cui, Wanxiang Che, Ting Liu et al. // arXiv preprint arXiv:2004.13922.––2020.
21. Schuster Mike, Nakajima Kaisuke. Japanese and korean voice search // 2012 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) / IEEE.––2012.––P. 5149–5152.
22. Soviany Petru. Curriculum Learning with Diversity for Supervised Computer Vision Tasks // arXiv preprint arXiv:2009.10625.––2020.
23. Wang Shuohang, Jiang Jing. Learning natural language inference with LSTM // arXiv preprint arXiv:1512.08849.–– 2015.
24. Wu Xiaoxia, Dyer Ethan, Neyshabur Behnam. When Do Curricula Work? // arXiv preprint arXiv:2012.03107.–– 2020.
25. Zaremba Wojciech, Sutskever Ilya. Learning to execute // arXiv preprint arXiv:1410.4615.–– 2014.
26. A fully progressive approach to single-image super-resolution / Yifan Wang, Federico Perazzi, Brian McWilliams et al. // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops.––2018.––P. 864–873.
27. A unifying framework for complexity measures of finite systems / Nihat Ay, Eckehard Olbrich, Nils Bertschinger, Jürgen Jost // Proceedings of ECCS / Citeseer.–– Vol. 6.–– 2006. ЯргерР.Дж. MySQL и mSQL: Базы данных для небольших предприятий и Интернета / Р.Дж. Яргер, Дж. Риз, Т. Кинг. – М. : СПб : Символ-Плюс, 2015. – 560 c.