Интернет-сервис подбора мероприятий

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

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

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

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

15. J. Herlocker, J. Konstan, L. Terveen, and J. Riedl. Evaluating collaborative filtering recommender systems, ACM Translations on Information Systems, 2004.

16. Ржеуцкая, С.Ю. Базы данных. Теоретические и языковые основы: учебное пособие - Вологда: ВоГУ, 2016. - 112 с.

17. Кожевникова А.М. Исследование моделей и алгоритмов рекомендующих систем - Санкт-Петербург: СПбГЭТУ, 2016. 112с.

18. Каляшов Г. А., Кудряшов А.А. РАЗРАБОТКА РЕКОМЕНДАТЕЛЬНОЙ СИСТЕМЫ ДЛЯ МЕРОПРИЯТИЙ. - «Актуальные проблемы науки и практики в различных отраслях народного хозяйства» (Пенза, 28-29 марта 2018)

19. Using OAuth 2.0 to Access Google APis [Электронный ресурс]: документация по использованию OAuth. - Режим доступа: https://developers.google.com/identity/protocols/OAuth2.

ПРИЛОЖЕНИЕ 1

ПРИМЕР JSON-ОТВЕТА API МИНКУЛЬТУРЫ

(обязательное)

{

"status": 200,

"start": 0,

"limit": 1,

"total": 214575,

"filter": {

"odSchema": "59a423129a5a55204f05ac00",

"odSetVersions": {

"$in": [

"5a21136aeac434e206718f50"

]

},

"inactivated": {

"$exists": false

}

},

"data": [

{

"_id": "59a4275bf6e2c37b074998c4",

"created": "2017-08-28T14:23:23.264Z",

"nativeId": "155245",

"hash": "155245",

"odSchema": "59a423129a5a55204f05ac00",

"dataset": "57866908d95989950590d1d5",

"data": {

"general": {

"seances": [

{

"end": "2015-09-01T16:00:00Z",

"start": "2015-09-01T08:00:00Z"

}

],

"places": [

{

"videoHostings": [],

"tags": [],

"recommendations": [],

"locale": {

"id": 2038,

"sysName": "kaliningrad",

"timezone": "Europe/Kaliningrad",

"name": "Калининград"

},

"localeIds": [

2038,

237,

1

],

"image": {

"title": "8.jpg",

"url": "https://all.culture.ru/uploads/67dccf208eb81e47d2ca37799499c76b.jpg"

},

"gallery": [],

"externalInfo": [],

"category": {

"sysName": "muzei-i-galerei",

"name": "Музеи и галереи"

},

"address": {

"mapPosition": {

"coordinates": [

54.706630000000004,

20.500507

],

"type": "Point"

},

"fullAddress": "обл Калининградская,г Калининград,наб Петра Великого,д 1",

"fiasStreetId": "dff042a7-4305-44d1-8e5f-4a25367603cf",

"fiasHouseId": "f13969c2-7d77-4cbe-b3bf-51b99a995441",

"comment": "",

"street": "наб Петра Великого,д 1"

},

"name": "Научно-исследовательское судно «Витязь»",

"id": 10662

}

],

"organization": {

"locale": {

"id": 2038,

"sysName": "kaliningrad",

"timezone": "Europe/Kaliningrad",

"name": "Калининград"

},

"localeIds": [],

"subordination": {

"id": 1,

"sysName": "rf",

"timezone": "Europe/Moscow",

"name": "РФ"

},

"subordinationIds": [

1

],

"type": "mincult",

"name": "ФГБУК «Музей Мирового океана»",

"id": 4566

},

"category": {

"sysName": "vystavki",

"name": "Выставки",

"type": "events"

},

"image": {

"title": "SVi_17-04_0147.JPG",

"url": "https://all.culture.ru/uploads/af82283b2c6fe9a0ead85d2f577e81de.JPG"

},

"tags": [

{

"sysName": "nauka-i-tehnika",

"name": "Наука и техника",

"id": 23

},

{

"sysName": "otkrytye-ploshchadki",

"name": "Открытые площадки",

"id": 69

},

{

"sysName": "muzeimorskie",

"name": "Музеи.Морские",

"id": 408

}

],

"end": "2020-01-28T16:00:00Z",

"start": "2015-09-01T08:00:00Z",

"visitorsCount": 30000,

"needMedia": false,

"status": "accepted",

"maxPrice": 100,

"price": 0,

"isFree": false,

"ageRestriction": 0,

"description": "<p>Научно-исследовательское судно «Витязь» - судно-легенда, оно внесло выдающийся вклад в изучение Мирового океана. На протяжении 30 лет на судне было совершено 65 научных рейсов, пройдено около 800 000 миль, выполнено 7 942 научные станции. С его борта была измерена максимальная глубина (11 022м) в Марианской впадине. На «Витязе» сформировалась школа отечественной океанологии, в экспедициях работали ученые пятидесяти научных институтов нашей страны и двадцати стран мира.</p><p>Все желающие могут подняться на борт и совершить прогулку по открытым палубам легендарного судна, ставшего музеем. Посетители смогут познакомиться с оборудованием, расположенным на палубах и узнать о предназначении того или иного прибора. Подняться на носовую и кормовую надстройки, посетить бентосную лабораторию и ходовую рубку, откуда осуществлялось управление судном.</p>",

"shortDescription": "На открытых палубах «Витязя» можно увидеть судовые и научные приборы и оборудование, подняться на надстройки, покрутить штурвал и ударить в рынду",

"name": "Экспозиция «Открытые палубы НИС «Витязь»»",

"id": 155245

},

"info": {

"updateDate": "2017-08-28T14:14:43Z",

"createDate": "2017-08-28T14:14:43Z",

"category": "event",

"path": "/cdm/v2/events/155245"

}

},

"nativeName": "Экспозиция «Открытые палубы НИС «Витязь»»",

"modified": "2018-01-26T19:33:44.682Z",

"activated": "2017-12-01T08:31:38.953Z",

"status": 0,

"odSetVersions": [

"5a21136aeac434e206718f50"

]

}

],

"count": 1,

"profile": {

"start": "2018-06-18T13:32:11.890Z",

"parsed": 30,

"counted": 32,

"db": 55,

"total": 62

}}

ПРИЛОЖЕНИЕ 2

ПРИМЕР ПРОТОТИПОВ UI МОБИЛЬНОГО ПРИЛОЖЕНИЯ

(обязательное)

Главный экран с лентой событий:

Профиль пользователя:

ПРИЛОЖЕНИЕ 3

РЕАЛИЗАЦИЯ СЕРВИСА ДЛЯ РАБОТЫ РАБОТЫ с API событий

(обязательное)

Описание endpoint'a:

package com.app.eventsapp.rest.postapi;

import com.app.eventsapp.modules.user.rest.request.Token;

import com.app.eventsapp.modules.user.rest.response.SimpleResponse;

import com.app.eventsapp.modules.postline.models.Post;

import java.util.List;

import retrofit2.Call;

import retrofit2.http.Body;

import retrofit2.http.GET;

import retrofit2.http.POST;

import retrofit2.http.Query;

/**

* Created by Grigory Kalyashov on 04.11.2016.

*

* Интерфейс для получения событий

*/

public interface EventsAPI

{

/**

* Получить список событий

* @param offset сдвиг

* @param count количество событий

* @return список

*/

@GET("events/list")

Call<List<Post>> getPosts(@Query("offset") int offset, @Query("count") int count);

/**

* @param id - id события

* @return пост

*/

@GET("events/get")

Call<Post> getPost(@Query("id") long id);

/**

* Оценить событие

* @param token

* @return

*/

@POST("events/rateup")

Call<SimpleResponse> rateUp(@Body Token token);

}

Реализация EventService:

package com.app.eventsapp.rest.postapi;

import com.app.eventsapp.core.cache.PostCacheUtils;

import com.app.eventsapp.modules.user.rest.request.Token;

import com.app.eventsapp.modules.user.rest.response.SimpleResponse;

import com.app.eventsapp.modules.postline.models.Post;

import com.app.eventsapp.rest.base.RestService;

import com.app.eventsapp.rest.request.RequestCallback;

import com.app.eventsapp.rest.request.RequestListener;

import java.util.List;

import javax.inject.Inject;

import retrofit2.Call;

import retrofit2.Response;

/**

* Created by Grigory Kalyashov on 04.11.2016.

*

* Сервис для работы с событиями

*/

public class EventsService extends RestService

{

@Inject

public EventsService()

{}

public void getPost(long id, final RequestListener<Post> requestListener)

{

getPostById(requestListener, id);

}

/**

* @return список постов

*/

public void getPosts(final RequestListener<List<Post>> requestListener,

int offset, int count)

{

sendPostRequest(requestListener, offset, count);

}

public void rateUp(String token, RequestListener<SimpleResponse> requestListener)

{

EventsAPI eventsAPI = buildRetrofit().create(EventsAPI.class);

Call<SimpleResponse> call = eventsAPI.rateUp(new Token(token));

call.enqueue(new RequestCallback<>(requestListener));

}

private void sendPostRequest(RequestListener<List<Post>> requestListener,

int offset, int count)

{

EventsAPI eventsAPI = buildRetrofit(PostJsonBuilder.buildPostGson()).create(EventsAPI.class);

Call<List<Post>> call = eventsAPI.getPosts(offset, count);

call.enqueue(new PostListRequestCallback<>(requestListener));

}

private void getPostById(RequestListener<Post> requestListener, long id)

{

EventsAPI eventsAPI = buildRetrofit(PostJsonBuilder.buildPostGson()).create(EventsAPI.class);

Call<Post> call = eventsAPI.getPost(id);

call.enqueue(new PostRequestCallback<>(requestListener));

}

private class PostListRequestCallback<T> extends RequestCallback<T>

{

PostListRequestCallback(RequestListener<T> listener)

{

super(listener);

}

@Override

public void onResponse(Call<T> call, Response<T> response)

{

super.onResponse(call, response);

if(response.isSuccessful())

{

PostCacheUtils.addPostsToCache((List<Post>) response.body());

}

}

}

private class PostRequestCallback<T> extends RequestCallback<T>

{

PostRequestCallback(RequestListener<T> listener)

{

super(listener);

}

@Override

public void onResponse(Call<T> call, Response<T> response)

{

super.onResponse(call, response);

if(response.isSuccessful())

{

PostCacheUtils.addPostToCache((Post) response.body());

}

}

}

}

ПРИЛОЖЕНИЕ 4

Пример скриптов для тестирования UI в Android

(обязательное)

Функция поиска и запуска приложения:

private void findAndRunApp() throws UiObjectNotFoundException { 

// Go to main screen 

getUiDevice().pressHome(); 

// Find menu button 

UiObject allAppsButton = new UiObject(new UiSelector() 

.description("Apps")); 

// Click on menu button and wait new window 

allAppsButton.clickAndWaitForNewWindow(); 

// Find App tab 

UiObject appsTab = new UiObject(new UiSelector() 

.text("Apps")); 

// Click on app tab 

appsTab.click(); 

// Find scroll object (menu scroll) 

UiScrollable appViews = new UiScrollable(new UiSelector() 

.scrollable(true)); 

// Set the swiping mode to horizontal (the default is vertical) 

appViews.setAsHorizontalList(); 

// Find application 

UiObject settingsApp = appViews.getChildByText(new UiSelector() 

.className("com.android.eventsapp"), "Spree"); 

// Open application 

settingsApp.clickAndWaitForNewWindow(); 

}

Функция открытия поста с информацией по событию:

private void openDetailPost() throws UiObjectNotFoundException { 

// Find and click post 

UiObject openButton = new UiObject(new UiSelector() 

.className("android.widget.CardView").description("Open")); 

openButton.clickAndWaitForNewWindow(); 

}

ПРИЛОЖЕНИЕ 5

пример ответа с рекомендациями событий

(обязательное)

{ "recommendations": [

{

"userId": 1,

"eventId": 217,

"name": "GRIME TING 28/10 @MOD CLUB",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 214,

"name": "Спектакль «Бременские музыканты»",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 219,

"name": "10 секретов денег,о которых молчат богатые люди",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 52,

"name": "Сплин |Самара | 25 ноября| МТЛ Арена",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 171,

"name": "9-11 июня Холотропное дыхание Екатеринбург",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 104,

"name": "г. Нижний Новгород 27-29 октября 2018 года",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 176,

"name": "9 июня | Каспийский Груз | Саратов",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 126,

"name": "Марш-бросок 22 июня по Большой Воронежской тропе",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 189,

"name": "06.11 Фолк -Фестиваль \"Самайн-2018\" (ЕКБ)",

"score": 5.481898245512628

},

{

"userId": 1,

"eventId": 136,

"name": "Asking Alexandria | 13.06.2018 | Тур во Вроцлав",

"score": 5.481898245512628

}

]

}

ПРИЛОЖЕНИЕ 6

КОНФИГУРАЦИЯ LENSKIT

import org.lenskit.transform.normalize.BaselineSubtractingUserVectorNormalizer

import org.lenskit.transform.normalize.UserVectorNormalizer

import org.lenskit.api.ItemScorer

import org.lenskit.baseline.BaselineScorer

import org.lenskit.baseline.ItemMeanRatingItemScorer

import org.lenskit.baseline.UserMeanBaseline

import org.lenskit.baseline.UserMeanItemScorer

import org.lenskit.knn.NeighborhoodSize

import org.lenskit.knn.item.ItemItemScorer

import org.lenskit.knn.item.ModelSize

// ... and configure the item scorer. The bind and set methods

// are what you use to do that. Here, we want an item-item scorer.

bind ItemScorer to ItemItemScorer.class

// Item-item works best with a minimum neighbor count

set NeighborhoodSize to 20

// Limit the model size

set ModelSize to 1000

// let's use personalized mean rating as the baseline/fallback predictor.

// 2-step process:

// First, use the user mean rating as the baseline scorer

bind (BaselineScorer, ItemScorer) to UserMeanItemScorer

// Second, use the item mean rating as the base for user means

bind (UserMeanBaseline, ItemScorer) to ItemMeanRatingItemScorer

// and normalize ratings by baseline prior to computing similarities

bind UserVectorNormalizer to BaselineSubtractingUserVectorNormalizer

ПРИЛОЖЕНИЕ 7

Функция для формирования рекомендаций

(обязательное)

public List<Recommendation> run() {

// Для начала нужно сконфигурировать data access

DataAccessObject dao;

try {

StaticDataSource data = StaticDataSource.load(recData.getDataFile());

// получем данные из DAO

dao = data.get();

} catch (IOException e) {

LOGGER.error("cannot load data", e);

throw Throwables.propagate(e);

}

// Далее: загрузить конфигурацию алгоритма LensKit

LenskitConfiguration config = null;

try {

config = ConfigHelpers.load(new File("etc/item-item.groovy"));

} catch (IOException e) {

throw new RuntimeException("could not load configuration", e);

}

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

// Он вычислит матрицу подобия и вернет рекоменд. движок, который её использует

LenskitRecommenderEngine engine = LenskitRecommenderEngine.build(config, dao);

LOGGER.info("built recommender engine");

try (LenskitRecommender rec = engine.createRecommender(dao)) {

LOGGER.info("obtained recommender from engine");

// мы хотим рекомендовать мероприятия (items)

ItemRecommender irec = rec.getItemRecommender();

assert irec != null; // not null because we configured one

// для пользователей

List<Recommendation> recommendations = new ArrayList<>();

for (long user : recData.getUsers()) {

// получим рекомендации

ResultList recs = irec.recommendWithDetails(user, 10, null, null);

for (Result item : recs) {

Entity itemData = dao.lookupEntity(CommonTypes.ITEM, item.getId());

String name = null;

if (itemData != null) {

name = itemData.maybeGet(CommonAttributes.NAME);

}

recommendations.add(new Recommendation(user, item.getId(), name, item.getScore()));

}

}

return recommendations;

}

}

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

...

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

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

    дипломная работа [4,1 M], добавлен 30.09.2016

  • Разработка web-сервиса как услуги, предоставляемой пользователю. Продажа товара (автомобилей) в Интернете, проблема выбора. Онтологии как часть концепции Semantic Web. Применение онтологий, их основные типы и свойства. Особенности реализации онтологии.

    курсовая работа [57,4 K], добавлен 17.04.2012

  • Системные службы хостинг-компании как целевая аудитория сервиса, общие требования к ним. Критерии оценки интерфейса и направления разработки. Проектирование интернет-сервиса, схема его функционирования и принципы реализации, оценка эффективности.

    дипломная работа [2,5 M], добавлен 18.11.2013

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

    курсовая работа [42,7 K], добавлен 28.02.2011

  • "Файл-серверная" и "клиент-серверная" архитектуры. Сетевые операционные системы. Одноранговые NOS и с выделенными серверами. Семейство сетевых ОС Windows, ОС UNIX, Linux. Программное обеспечение для работы в интернет. Назначение службы доменных имен DNS.

    учебное пособие [1,3 M], добавлен 19.01.2012

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

    дипломная работа [3,1 M], добавлен 19.11.2013

  • Характеристика разновидностей онлайн видеоредакторов. Суть облачного сервиса, который предоставляет пользователю различные возможности через Интернет. Редактирование видеоинформации. Видеомонтаж - процесс "сборки" фильма из отдельных элементов - кадров.

    презентация [442,0 K], добавлен 06.04.2014

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

    дипломная работа [3,7 M], добавлен 10.07.2017

  • Автоматизация работы систем управления управления ЖКХ. Технология SaaS - Интернет-сервис с бесплатным доступом к программам. Разработка облачного информационного сервиса для функционирования инновационной ИТ - инфраструктуры организации ЖКХ "Гармония".

    дипломная работа [1,4 M], добавлен 15.08.2014

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

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

    курсовая работа [95,4 K], добавлен 04.02.2011

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

    дипломная работа [1,0 M], добавлен 11.04.2012

  • Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.

    курсовая работа [1,0 M], добавлен 15.11.2012

  • Определение понятия и оценка современного состояния информационного сервиса, основные тенденции его развития. Понятие и управление доступом к ресурсам сети Интернет. Динамика роста информационных ресурсов и развития информационного общества в России.

    реферат [28,3 K], добавлен 29.05.2013

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

    курсовая работа [678,2 K], добавлен 31.08.2016

  • Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

    дипломная работа [2,7 M], добавлен 03.04.2015

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

    реферат [764,5 K], добавлен 21.02.2010

  • Обзор существующих решений построения систем взаимодействия. Классическая архитектура клиент-сервер. Защита от копирования и распространения материалов тестирования. Задачи ИБ компьютерных систем тестирования и обзор современных способов их реализации.

    курсовая работа [36,9 K], добавлен 26.04.2013

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

    курсовая работа [116,9 K], добавлен 20.07.2012

  • Преимущества и недостатки использования двух типов базовых архитектур Клиент-сервер и Интернет/Интранет, их компоненты и экономическая целесообразность. Информационные взаимосвязи компонентов WEB-узла, взаимодействие браузера, сервера и сценария CGI.

    реферат [324,4 K], добавлен 22.06.2011

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