Курсовая работа на тему: "Архитектура и системы для комбинированных рекомендаций и поиска эстетичных изображений"

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

Но если вдруг:

Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!

Курсовая работа на тему: 

"Архитектура и системы для комбинированных рекомендаций и поиска эстетичных изображений"

Оглавление

Введение                                                                                                       3

1.      Обзор                                                                                                         5

1.1.  Обзор конкурентов  . . . . . . . . . . . . . . . . . . . . . .        5

1.2.  Обзор предметной области . . . . . . . . . . . . . . . . . .        6

2.     Описание подхода                                                                               9

2.1.       Условия решаемой задачи  . . . . . . . . . . . . . . . . . .        9

2.2.       Рекомендательная система . . . . . . . . . . . . . . . . . .       9

2.3.  Поиск  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      10

3.     Реализация                                                                                          11

3.1.  Архитектура  . . . . . . . . . . . . . . . . . . . . . . . . . .      11

3.2.  Модуль поиска по цвету   . . . . . . . . . . . . . . . . . . .      11

3.3.       Модуль поиска по текстовой информации  . . . . . . . . .     13

3.4.       Модуль комбинированного поиска  . . . . . . . . . . . . .      14

3.5.  Рекомендации   . . . . . . . . . . . . . . . . . . . . . . . . .      14

3.6.  Модуль рекомендаций по скрытым признакам  .  .  .  . . .      15

4.     Апробация                                                                                           17

4.1.       Демонстрация результатов . . . . . . . . . . . . . . . . . .      17

4.2.  Метрики   . . . . . . . . . . . . . . . . . . . . . . . . . . . .      21

Заключение                                                                                               24

Список литературы                                                                                25

 

Введение

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

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

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

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

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

    Поиск по тегам или ключевым словам.

    Поиск по категориям.

    Поиск визуально похожих изображений.

    Выдача рекомендаций по картинке.

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

 

Постановка задачи

 

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

    Проанализировать типы рекомендательных систем.

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

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

    Реализовать модуль поиска изображений, похожих по визуально- му стилю.

    Спроектировать общую архитектуру системы и интегрировать мо- дули друг с другом.

    Реализовать прототип системы и провести апробацию в проекте

graphica.ai graphica.ai.

1.       Обзор

1.1.      Обзор конкурентов

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

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

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

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

    

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

1google.com 2tumblr.com 3pinterest.com 4savee.it 5behance.net 6dribbble.com

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

В современном мире существует множество подходов к созданию рекомендательных систем [1, 2].

 

Неперсонализированные рекомендации (Summary based)

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

 

Коллаборативная фильтрация (Collaborative filtering)

Подход коллаборативной фильтрации [3, 4, 5, 6] разделяется на два похожих подхода:

    Кластеризация пользователей.

    Кластеризация товаров.

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

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

шие к понравившимся пользователю ранее.

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

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

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

 

Рекомендации по содержанию (Content Based)

Подход рекомендаций по содержанию [9, 10, 11] заключается в вы- делении единых ключевых характеристик всех товаров, по которым их можно сравнивать векторизации этих признаков, ивыдаче товаров, вектора которых максимально близки к векторам товаров, уже про- смотренных пользователем, в качестве рекомендаций. Проблема этого подхода заключается в сложности выделения ключевых характеристик, а также в слабой корреляции с глобальными предпочтениями пользова- теля. Преимуществом этого подхода можно считать решение проблемы холодногостарта и независимость качества рекомендаций от действий пользователя. Также для нас важно, что при использовании этого под- хода мы можем сами задавать, какие факторы имеют значение,пола- гаясь на мнение экспертов, а не на машину.

Смешанный подход

Идея смешанного подхода [12, 13] заключается в комбинации подхо- дов, рассмотренных выше. Популярны следующие виды комбинаций:

    Использование нескольких подходов параллельно, присвоение каж- дой рекомендации некоторого веса и вывод товаров смаксималь- ным весом.

    Передача вывода одного подхода на вход другому.

    Использование разных подходов для разных товаров.

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

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

2.     Описание подхода

2.1.     Условия решаемой задачи

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

 

2.2.   Рекомендательная система

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

1.     похожего по доминантным цветам;

2.     выполненного в том же визуальном стиле;

3.     использующего тот же шрифт;

4.     созданного тем же автором;

5.     относящегося к той же сфере,

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

Для решения этой задачи предлагается реализовать два модуля:

1.     Модуль рекомендаций по цвету.

2.     Модуль рекомендаций по доступной текстовой информации, вклю- чающей перечисленные выше понятия.

И интегрировать их друг с другом, реализуя смешанный подход к со- зданию рекомендательных систем.

2.3.   Поиск

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

1.     Имя автора.

2.     Используемый шрифт.

3.     Используемый стиль.

4.     Тип работы.

5.     Ключевые слова, описывающие работу.

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

3.        Реализация

3.1.      Архитектура

Архитектура разработанной системы состоит из двух модулей — модуля рекомендаций, который состоит из модулей рекомендаций по цвету и рекомендаций по текстовой информации, имодуля поиска, ко- торый состоит из модулей поиска по текстовой информации и по цве- там. Все модули получают запросы от клиента с помощью системы GraphQL7 и обращаются в базу данных PostgreSQL8, как указано на рисунке 1.

 

Рис. 1: Архитектура системы.

 

3.2.     Модуль поиска по цвету

Работа модуля поиска по цвету логически разбивается на несколько этапов:

1.     Вычисление доминантных цветов всех изображений.

2.     Создание и сохранение структуры, предоставляющей поиск.

3.    

Обработка поискового запроса и выдача результатов.

7graphql.org 8www.postgresql.org

Вычисление доминантных цветов

Для вычисления доминантных цветов используются алгоритмы кла- стеризации из библиотеки scikit-learn9. Были опробованы алгоритмы k-means10 и meanshift11. Приглашенные эксперты дизайнеры выделили алгоритм meanshift как более точный, поэтому мы выбрали его.

Выделенные доминантные цвета переводятся в цветовое простран- ство LAB12. Это цветовое пространство было выбрано, так как расстоя- ния между цветами в нем наиболее близки к человеческому восприятию[14]. Были реализованы системы, работающие с  цветовыми  пространства- ми RGB и HSL, и система, работающая с цветами, закодированными в LAB, была выбрана экспертами дизайнерами как более точная.

Полученные цвета сохраняются в базу данных.

 

Создание и хранение структуры, предоставляющей поиск

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

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

 

Обработка поискового запроса и выдача результатов

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

9scikit-learn.org

10scikit-learn.org/stable/modules/generated/sklearn.cluster.k_means.html?highlight=

kmeans#sklearn.cluster.k_means

11scikit-learn.org/stable/modules/generated/sklearn.cluster.MeanShift.html?highlight=

meanshift#sklearn.cluster.MeanShift

12en.wikipedia.org/wiki/CIELAB_color_space 13https://github.com/spotify/annoy

ится вектор того же размера и формата, что и сохраненные в индексе. Для этого вектора с помощью метода Approximate Nearest Neighbors, предоставляемого библиотекой annoy, в сохраненном индексе ищется требуемое количество наиболее похожих векторов. Изображения, век- тора которых были выбраны, возвращаются в качестве ответа. Так же в поисковом запросемогут быть переданы изображения, на которых сле- дуют осуществлять поиск. В таком случае возвращается пересечения переданных изображений с найденными ближайшими векторами.

Библиотека annoy была выбрана на основе исследования [15], так как она оптимальна с точки зрения времени построения индекса и скорости поиска по нему. Были также опробованы библиотеки faiss14, flann15 и NGT16, но они, как и указано в исследовании, показали худшие результаты для нашей задачи.

 

3.3.     Модуль поиска по текстовой информации

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

1.     Имя автора.

2.     Описание работы.

3.     Используемый шрифт.

4.     Используемый стиль.

5.     Тип работы.

6.     Дополнительные теги.

14github.com/facebookresearch/faiss 15github.com/mariusmuja/flann 16github.com/yahoojapan/NGT

Поисковый запрос к этому модулю состоит из набора ключевых слов и фраз. Для ответа на запрос используется движок полнотекстового по- иска17, встроенный в используемую нами базуданных PostgreSQL18, с его помощью мы находим вхождения фраз и слов из запроса в перечис- ленных выше категориях. Вывод сортируется по точности совпадения, и запрошенное количестволучших возвращается в качестве ответа на запрос. Все запросы сохраняются и переиспользуются для повышения скорости работы системы. В поисковом запросе могут быть переданы изображения, на которых следует осуществлять поиск. В таком случае создается комплексный запрос, первая часть которого отбирает в базе данных переданные изображения, а втораяосуществляет полнотексто- вой поиск и сортировку уже только на них.

 

3.4.    Модуль комбинированного поиска

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

 

3.5.     Рекомендации

Модули рекомендательной системы являются обертками над моду- лями поисковой системы, предоставляющими удобный интерфейс.

17www.postgresql.org/docs/current/textsearch-psql.html 18www.postgresql.org

Модуль рекомендации по цвету

Запрос к модулю рекомендаций по цвету содержит идентифика- тор изображения. Из базы данных достаются доминантные цвета этого изображения и передаются на вход модулю поиска поцвету.

 

Модуль рекомендаций по тексту

Запрос к модулю рекомендаций по тексту содержит идентификатор изображения. Из базы данных достаются:

1.     Имя автора.

2.     Дополнительные теги.

3.     Название шрифта.

4.     Название стиля.

5.     Тип работы.

и передаются на вход модулю поиска по цвету.

 

Модуль   комбинированных рекомендаций

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

 

3.6.    Модуль рекомендаций по скрытым признакам

Кроме описанных выше модулей поиска и рекомендаций был разра- ботан дополнительный модуль рекомендаций по скрытым признакам.

Он использует нейронную сеть NasNet19 из библиотеки Keras20, обу- ченную на данных aestetic dataset21 из исследнования[14]. NasNet была выбрана из-за ее структуры, это глубокаянейронная сеть, которая ши- роко используется для выделения скрытых признаков из изображений. Обученная нейронная сеть получает на вход изображение и выда-   ет вектор из четырех чисел, содержащий скрытые признаки. Среднее время работы для одного изображения в нашей базе данных — 1 секун- да. Все вектора добавляются в индекс и сохраняются на диск. Выдача рекомендаций происходят аналогично описанному ранее подходу с ис-

пользованием библиотеки annoy.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19www.tensorflow.org/api_docs/python/tf/keras/applications/nasnet 20www.tensorflow.org/guide/keras

21ritendra.weebly.com/aesthetics-datasets.html

4.       Апробация

Все описанные модули были интегрированы в проект “graphica.ai”. Они поддерживают запросы от клиента в формате, используемом в проекте, и работают с информацией из базы данных, существующей в проекте.

 

4.1.      Демонстрация результатов

Для демонстрации работы модулей были выбраны изображения из базы данных “graphica.ai”, содержащие различные работы дизайнеров.

 

Рекомендации по цвету

 

 

Рис. 2: Исходное изображение

 

 

Рис. 3: Результат работы модуля рекомендаций по цвету для изобра- жения (2)

 

Поиск по цвету

 

 

 

Рис. 4: Цвет 006F6F

 

4.2.     Метрики

Все реализованные модули были интегрированы в проект “graphica.ai”.

Для оценки проведенной работы мы использовали два типа метрик:

1.     Время работы.

2.     Удовлетворение пользователей.

 

Время работы

Рассмотрим таблицу, демонстрирующую среднее время ответа мо- дулей на запросы. Каждому модулю было передано 1000 случайных запросов, измерялось время работы модулей, время передачи запроса и ответа не учитывалось. Тесты проводились на основном сервере про- екта “graphica.ai”, на котором модули и будут использоваться.

 

 

 

Рис. 5: Поиск по цвету 006F6F (4)

Поиск по тексту

 

 

 

Рис. 6: Результат работы модуля поиска для запроса с ключевыми сло- вами “poster” и “letters”

Комбинированный поиск

 

 

 

 

Рис. 7: Результат работы модуля поиска для запроса с красным цветом и ключевым словом “book”

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

Вычисление доминантных цветов

10s

Создание индекса

50s

Удовлетворение пользователей

Было проведено исследование в форме опроса, участие в котором приняло 60 человек. Мы предложили им сравнить выдачу двух реко- мендательных систем — предыдущей системы“graphica.ai” и системы, разработанной в рамках курсовой работы. Опрос показал, что рекомен- дательная система, разработанная в рамках курсовой работы, нравится 80% пользователей сильнее(10).

 

 

 

 

Рис. 8: Результаты сравнения двух рекомендательных систем

 

Так же мы спросили у пользователей, какие понятия они считают ключевыми длярекомендаций, и удостоверились, что они являются ос- новными в нашей системе.

 

 

Рис. 9: Основные понятия схожести

 

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

 

 

 

 

Рис. 10: Типы ключевых слов

Заключение

1.     Произведен подробный обзор подходов к созданию рекоменда- тельных систем.

2.     Реализован и протестирован в проекте graphica.ai модуль поиска изображений, похожих по доминантным цветам.

3.     Реализован и протестирован в проекте graphica.ai модуль поиска изображений, похожих по текстовой информации.

4.     Реализован и протестирован в проекте graphica.ai модуль реко- мендательной системы.

5.     Реализованы и протестированы в проекте graphica.ai модули по- иска и рекомендаций по визуальному стилю.

6.     Реализован и протестирован в проекте graphica.ai дополнитель- ный модуль рекомендаций по скрытым признакам.

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

Список литературы

[1]     Liang Zhong Cui, Fu Liang Guo, and Ying Jie Liang. Research overview of educational recommender systems. In ACM International Conference Proceeding Series. Association for Computing  Machinery, oct 2018.

[2]     S. Sarika and Sanjeev Dhawan. Comparision of Recommendation System Approaches. In Proceedings of the International Conference on Machine Learning, Big Data, Cloud and Parallel Computing: Trends, Prespectives and Prospects, COMITCon  2019,  pages  76–78.  Institute  of Electrical and Electronics Engineers Inc., feb 2019.

[3]     Xiaowei Xu and Fudong Wang. Trust -based collaborative filtering algorithm. In Proceedings - 2012 5th International Symposium on Computational Intelligence and Design, ISCID 2012, volume 1, pages 321–324, 2012.

[4]     Sabanaz Sirajuddin Peerzade. Web service recommendation using PCC based collaborative filtering.  In 2017  International  Conference  on Energy, Communication, Data Analytics  and  Soft  Computing,  ICECDS 2017, pages 2920–2924. Institute of Electrical and Electronics Engineers Inc., jun 2018.

[5]     Gaojun Liu and Xingyu Wu. Using collaborative filtering algorithms combined with Doc2Vec for movie recommendation.  In Proceedings of  2019  IEEE  3rd   Information   Technology,   Networking,   Electronic   and Automation Control Conference, ITNEC 2019, pages 1461–1464. Instituteof Electrical and Electronics Engineers Inc., mar 2019.

[6]     Youngki Park, Sungchan Park, Sang Goo Lee, and Woosung Jung. Fast Collaborative Filtering with a k-nearest neighbor graph. In 2014 International Conference on Big Data and Smart Computing, BIGCOMP 2014, pages 92–95. IEEE Computer Society, 2014.

[7]     Markus  Weimer,   Alexandros  Karatzoglou,  and   Marcel   Bruch.

Maximum margin matrix factorization for code recommendation. In RecSys’09 - Proceedings of the 3rd ACM Conference on Recommender Systems, pages 309–312, 2009.

[8]     Thanh Tran and Kyumin Lee. Regularizing matrix factorization with user and item embeddings for recommendation. International Conference on Information and  Knowledge  Management,  Proceedings, pages 687–696, 2018.

[9]     Usman Saeed. Comparative analysis of lip features for person identification. In Proceedings of the 8th International Conference on Frontiers of Information Technology, FIT’10, 2010.

[10]      Leandro Figueira Lessa and Wladmir Cardoso Brandão. Filtering graduate courses based on LinkedIn profiles. In WebMedia 2018 - Proceedings of the 24th Brazilian Symposium on Multimedia and the Web, pages 141–147. Association for Computing Machinery, Inc, oct 2018.

[11]      Tudor Barbu. Content-based image retrieval using Gabor filtering. In Proceedings - International Workshop on Database and Expert Systems Applications, DEXA, pages 236–240, 2009.

[12]      Ashish Pal, Prateek Parhi, and Manuj Aggarwal. An improved content based collaborative filtering algorithm for movie recommendations. In  2017  10th  International  Conference  on  Contemporary  Computing, IC3 2017, volume 2018-January, pages 1–3. Institute of Electrical and Electronics Engineers Inc., feb 2018.

[13]      Carlos A. Gomez-Uribe and Neil Hunt. The netflix recommender system: Algorithms, business value, and innovation. ACM Transactions on Management Information Systems, 6(4), dec 2015.

[14]      Ritendra Datta, Jia Li, and James Z. Wang. Algorithmic inferencing of aesthetics and emotion in natural images: An exposition.Proceedings

- International Conference on Image Processing, ICIP, pages 105–108,

2008.

[15]      Martin Aumüller, Erik Bernhardsson, and Alexander Faithfull. Ann- benchmarks: A benchmarking tool for approximate nearest neighbor algorithms, 2018.