Рекомендательная система (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Строка 61: Строка 61:
  
 
=== Направления развития ===
 
=== Направления развития ===
Два основных направления развития:
 
 
# Cоздание красивого web-интерфейса
 
# Cоздание красивого web-интерфейса
 
# Улучшение качества классификации
 
# Улучшение качества классификации
 +
# Масштабирование
  
 
=== Критерии оценки ===
 
=== Критерии оценки ===

Версия 03:58, 21 ноября 2015

Ментор Симагин Денис
Учебный семестр Весна 2016
Учебный курс 1-й курс
Проект можно развивать на летней практике
Максимальное количество студентов, выбравших проект: 6



Что это за проект?

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

Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет):

  1. Реализация crawler-а, собирающего статьи
  2. Реализация линейнего классификатора и консольной утилиты, позволяющая читать пользователю статьи и оценивать их.

Также есть части на выбор:

  1. Реализация web-интерфейса на основе библиотеки Django (4 балла)
  2. Поиск похожих документов по коллекции, удаление дубликатов (2 балла)
  3. Выделение семантического ядра языка (1 балл)
  4. Реализация распределенного crawler-а (master + workers + queue) (3 балла )
  5. Реализация линейнего классификатора в виде C/C++ модуля для Python3 (3 балла)
  6. Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла)
  7. Применить подход однорукого бандита для выбора следующей статья для показа/обучения (3 балла)
  8. Предложить и реализовать улучшение базового классификатора (до 6 баллов)

Чему вы научитесь?

Вы точно пройдете все круги ада, начиная от прототипирования интерфейсов и заканчивая тестированием ;)

В зависимости от выбранных заданий вы можете:

  1. Получить опыт написания кода на Python, создать собственный модуль для языка.
  2. Научиться работать с Unix-подобной системой.
  3. Изучить одну из популярных баз данных.
  4. Узнать что такое машинное обучение.

Какие начальные требования?

  1. Наличие машины с unix-подобной ОС
  2. Базовые знания Python или желание интенсивно изучать этот язык

Какие будут использоваться технологии?

Вы точно будете использовать:

  1. Unix подобную ОС + вашу любимую командную оболочку
  2. Python3
  3. Git

В зависимости от выбранных заданий вы можете изучить:

  1. Библиотеку Django
  2. Одну из популярных баз данных
  3. Библиотеку boost::python

Темы вводных занятий

  1. Обсуждение общих организационных вопросов
  2. Введение в git
  3. Введение в машинное обучение.
  4. Линейный классификатор.

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

Направления развития

  1. Cоздание красивого web-интерфейса
  2. Улучшение качества классификации
  3. Масштабирование

Критерии оценки

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

Ориентировочное расписание занятий

  1. ПН 18:00-20:00
  2. ВТ 8:00-10:00 либо 18:00-20:00
  3. CР Недоступен
  4. ЧТ 8:00-10:00 либо 18:00-20:00
  5. ПТ Недоступен
  6. СБ 8:00 - 20:00