Исследуем аудиторию
Перед каждым автором на Хабре встает вопрос: «В какие же хабы разместить статью»? Безусловно, ответ прежде всего зависит от темы. С другой стороны, многие статьи достаточно широкого профиля и приходится тщательно выбирать в какие три хаба написать. Сам Хабр такого инструментария для анализа не предоставляет. А что делают обитатели хабра, когда инструмент нужен, а его нет? Они его пишут!
Тогда же мне пришла мысль, что неплохо было бы иметь простой визуализатор, который бы выдавал простую статистику по хабам и их совместной аудитории, например вот так:
По картинке сразу видно, насколько пересекаются читатели различных хабов и имеет ли смысл заменить какие-либо из них.
Представим, что мы хотим написать в хаб медиа и рассчитываем, а не стоит ли разместить статью в хаб Статистика в IT? Для того чтобы рассчитать целесообразность, необходимо найти пересечение аудитории хабов:
Мы видим, что, фактически, подавляющее количество читателей хабов видит статьи и там и там, а это хороший сигнал о том, что возможно стоить рассмотреть имеющиеся альтернативы.
Общее применение
Зачем еще может понадобиться такой инструмент? (Автор не нашел лучшего аналога для слова tool.) Допустим, что вы представитель какой-либо компании и хотите посмотреть как много читателей определенного хаба подписались на корпоративный блог после написания статьи. Например вы собираетесь написать Проверка фреймворка Qt 5 и хотите посмотреть сколько человек из хаба Qt подписались на корпоративный блог PVS студии, тогда решение построить две диаграммы «до» и «после» следующего вида (тут приводится только «после»):
Если по графику общая тенденция не слишком видна, то наш tool должен также предоставлять текстовую информацию о пересечении, в духе:
57% of pvs-studio(company) intersects with qt_software
И хаб, и корпоративный блог
Есть на Хабре такие компании, у которых присутствует и корпоративный блог, и собственно хаб, посвященный компании. Например у Яндекса: блог и хаб. Аудитория блога 11к, а хаба 85к, а значит казалось бы зачем размещать в корпоративном блоге, если уже поместили в хаб? Наверняка читатели блога и хаб читают, при соотношении-то 1 к 8 по читателям. Проверим же эту догадку:
Как можно заметить, примерно половина читателей корпоративного блога не читают общий хаб, а значит размещать в оба хаба имеет смысл.
Общий и технический блог
А бывает и такое, что есть общий хаб, например, Вконтакте и технический хаб Вконтакте API и встает вопрос, а имеет ли смысл постить в оба? Не будет ли аудитория второго полностью входить в первую? И это несложно проверить!
Отсюда следует, что догадка оказывается неверной, существуют определенный круг людей читающих технический хаб Вконтакте API и не читающий общий хаб Вконтакте.
Документация, код, данные
И тут, конечно же, внимательный читатель восклицает: а что со всех этих графиков простому хабра-автору? Действительно от одних только графиков приведенных выше пользы мало, но польза есть от инструмента, который их будет строить для автора! Настал момент предоставить первый (и пока единственный) tool в серии Habra Analytics Tools — Venn diagrams for Habrahabr: весь код, документация и примеры доступны через github.
Сам инструмент доступен в виде скрипта на python (с пачкой библиотек) и для тех, у кого нет желания ничего настраивать и скачивать замечательные библиотеки matplotlib_venn и urllib3 — доступны бинарники для трех платформ. (Автор приносит свои извинения за размер файлов — сделано всё с помощью pyinstaller, который запихивает все библиотеки в бинарник, но надеется, что для читателей полчаса свободного времени (который бы ушел на настройку и скачивание библиотек) важнее лишних 50МБ.)
Tool доступен в следующих версиях: исходники (python) и исполняемые файлы (все библиотеки включены).
- python скрипт venn.py и папка src/; необходимо установить библиотеки:
pip install beautifulsoup4 progress urllib3 matplotlib_venn
- venn.exe для Windows
- venn.elf для Linux
- venn.osx для Mac OS
Также необходимо скачать архив data.7z (~15МБ, unzipped ~ 200МБ) и распаковать его в той же директории, что и скрипт. Далее в зависимости от скаченной версии необходимо вызывать python venn.py
, ./venn
или venn.exe
, будем приводить первый вариант в статье.
Скрипт является консольным, поэтому его важнейшей командой является help, доступный через флаги -h, --help:
python venn.py -h
пример вывода на экран:
Пройдемся же по ключевым флагам и опциям:
Создание диаграммы
python venn.py -d space programming fido
или
python venn.py --draw space programming fido
Если данные не присутствуют ( в датасете собраны все доступные хабы на 26 апреля 2014), то программа автоматически проверит наличие данных на хабре и начнет скачивание, примерно 15-20 минут на хаб. Пример сообщения о скачивании:
Используемые имена хабов
Для каждого хаба в программе используется соответствующее имя из ссылки на этот хаб habrahabr.ru/hub/space — для хаба Космонавтика, space — это имя в программе.
Вывод доступных имен хабов и их полные названия, все операции производятся по коротким латинским именам из списка (они же используются в url на хабре)
python venn.py --hubs
В идеале используется вместе с командой grep:
Базовая статистика
Создание диаграммы вместе с базовой статистикой
python venn.py --stats -d space programming fido
или вывод только базовой статистики без диаграммы: ключ --onlystats или -o
python venn.py -o space programming fido
Хабы и компании
Как уже было отмечено ранее, yandex — это корпоративный блог и хаб, чтобы устранить неоднозначность используется ключ:
--company <argument_index>
Пример:
python venn.py -d yandex yandex --company 2
Первый хаб будет воспринят как обычный хаб (по умолчанию), а второй как блог компании.
Другие команды
Удаление хаба из списка (не удаляет данные)
python venn.py --removehublink space
Добавление хаба в список (не скачивает данные)
python venn.py --addhublink space
Обновление данных хаба, скачивает данные ~15-20 минут
python venn.py --updatehub space
Диаграммы иили статистика без заголовка про пиццу и котят
python venn.py -s -d space programming
добавление компании и её скачивание данных (также обновляет данные, если уже что-то скачено)
pytnon venn.py --downloadcompany yandex
Заключение
Вашему вниманию представлена самая первая альфа версия одного из инструментов для анализа хабра-данных. Комментарии, пожелания и всяческая поддержка, а особенно идеи широко приветствуются. Безусловно, если tool, окажется хоть в какой-то мере полезным, то необходимо расширить список доступных функций (например, сделать графический интерфейс — irony хотя кому это нужно? /irony), «причесать код» — автор отдает себе отчет, что написанный код ужасен и должен быть переработан.
Данный tool может служить вспомогательным инструментом для оценки аудитории перед размещением статьи или анализом аудитории корпоративного блога.
Во многом уже сами данные о пользователях хабов представляют интерес для анализа и разработки новых инструментов и программ, но об этом мы поговорим уже в следующих сериях.
Идеи для следующих tools
- Монитор статей: после написания статьи нужно будет вызвать тулзу
monitor $article_id
и она будет записывать и рисовать изменение просмотров (плюсов, etc) во времени, а так же shares and likes в социальных сетях и возможно комментарии читателей - Предпочтения пользователей хаба: пусть мы выбрали какой-нибудь хаб
hub1
и нам интересно, в каких хабах читатели еще состоят? Каково распределение их вкусов? Какой хаб «ближе всего» к данному, а какой «дальше»?
Бонус — диспозиция читателей хабов С++, Python и Java
Дзен-символ языков программирования:
Автор: varagian