Прогноз популярности статьи в блоге (командный проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Компания Yandex Data Factory
Учебный семестр Осень 2016
Учебный курс 3-й курс
Максимальное количество студентов, выбравших проект: 2-3



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

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

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

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

Чему научатся студенты? Что самое интересное в проекте?

Техники машинного обучения и анализа текстов (Natural Language Processing). Сбор данных со страниц интернета (краулинг). Забавное и потенциально резонансное приложение машинного обучения.

Организация работы (Как студенты будут работать в команде?)

Проект расчитан на команду из 2–3 студентов:

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

Возможен вариант с разделением работы аналитика при наличии детального плана экспериментов и опыта командной работы у третьего участника.

Компоненеты (Из каких частей состоит проект?)

  1. Сбор данных для анализа и построения модели
  2. Прототипирование модели прогноза популярности
  3. Разработка бэкенда системы: обученная модель как сервис
  4. Разработка расширения для браузера
  5. (*) Автоматическое поддержание модели в актуальном состоянии (обучение на свежих данных)
  6. (*) Рекомендации автору по улучшению статьи, используя методы объяснения прогноза

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

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

  • Бэкенд: Python, Flask, AWS EC2
  • Машинное обучение: SciKit-Learn, XGBoost
  • Обработка текстов: NLTK, Pymorphy2
  • Краулинг данных с веб-сайтов: Scrapy, HTML/CSS
  • Расширение для браузера: JavaScript, Chrome Extension API

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

Уверенное знание языка Python. Интерес к тебе блоггинга: регулярное чтение лент или даже опыт написания статей. Желательно иметь представление о веб-программировании.

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

  • Краулинг данных
  • Способы извлечения признаков из текстовых данных
  • Ликбез по машинному обучению
  • Ликбез по веб-разработке

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

  • 4-5: Работающий сервис, возможность по статье предсказывать популярность после ее публикации
  • 6-7: Отказоустойчивый сервис, детальная проработка признаков (учет всех возможных аспектов, влияющих на популярность), детальный анализ качества предсказаний и слабых мест модели
  • 8-10: Расширение для браузера выложено на Chrome Web Store + статья на Хабр + сервис выдерживает Хабраэффект (моментальный наплыв пользователей)

Похожие проекты

Контактная информация

Ромов Петр (peter@romov.ru), будет ко-ментор