Habra Analytics Tools: сравниваем хабы

    Если вы не читаете хабр по выходным, то скорее всего пропустили запуск мини-проекта Habra Analytics Tools. Цель проста — предоставить авторам Хабрахабра инструментарий для анализа статей и хабов. Первые инструменты посвящены анализу и сравнению хабов, и прежде всего они полезны для оценки аудитории статей. Например, график справа показывает, какие хабы также читают подписчики «Google» (высота столбика — процент подписчиков, который так же читает хабы по оси Х), а слева визуальную диспозицию относительно двух других хабов («Искусственный интеллект» и «Linux»).


    Построение диаграмм Венна мы обсудили ранее вот в этой статье, исходники доступны на github (или готовые исполняемые файлы под Windows, Linux и Mac OS) — вам так же нужно будет скачать и распаковать data.7z (также необходим для данной статьи).

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

    Исходные данные тула под названием hubs доступны на github, там же доступны исполняемые файлы для Windows и Linux.

    Зачем это нужно?


    Самое очевидное применение инструмента hubs — это анализ предпочтений целевой аудитории. Представим, что мы пишем для корпоративного блога и хотим узнать, что же еще читают наши подписчики. Какие темы их интересуют? Рассмотрим в качестве примера корпоративный блог Яндекса:

    Для сравнения приведем хаб Яндекса (не корпоративный блог):

    Из двух графиков мы видим, что предпочтения существенно отличаются (хотя их и объединяют некоторая любовь к Гуглу).

    Столь существенная разница возникает прежде всего из-за существенной разницы в аудитории блога и хаба:


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

    Похожие хабы

    Если диаграмма Венна подсказывает взаимное расположении аудиторий двух хабов и отвечает на вопрос: «Как вырастет аудитория хаба X, если мы добавим Y», то гистограмма хабов отвечает на вопрос какие хабы Z1,Z2,… Zn похожи на хаб X?

    Здесь мы предоставляем две метрики для сравнения хабов:
    • Если z% читателей хаба Х читают Y, то X ~ Y = z, пример, если 10% читателей хаба Космонавтика подписаны на хаб C++, то 10 — степень схожести хабов Космонавтика на C++ (данное отношение не симметрично)
    • Коэффициент_Жаккара:


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

    На данной гистограмме мы видим, что у корпоративного хаба есть несколько основных групп читателей, условно назовем их «разработка» — алгоритмы, программирование etc, «безопасность», «Open source», «рефакторинг» и «операционные системы». Данный фактор может быть учтен при написании статей, например, подчеркнув определенные аспекты интересные одной из групп читателей.

    Код, документация и примеры


    Для установки необходимо скачать либо:

    Также необходимо скачать архив data.7z (~15МБ, unzipped ~ 200МБ) и распаковать его в той же директории, что и скрипт. Далее в зависимости от скаченной версии необходимо вызывать python hubs.py, либо ./hubs.efl, либо hubs.exe. Будем придерживаться первой версии.

    Основные команды

    Скрипт является консольным, поэтому его важнейшей командой является help, доступный через флаги -h, --help:
    python hubs.py -h
    пример вывода на экран:


    Основная команда для вывода гистограммы «что еще читают подписчики хаба»:
    python hubs.py --alsoread space
    пример вывода:


    Для каждого хаба в программе используется соответствующее имя из ссылки на этот хаб habrahabr.ru/hubspace — для хаба Космонавтика, space — это имя в программе. Вывод доступных имен хабов и их полные названия, все операции производятся по коротким латинским именам из списка (они же используются в url на хабре)
    python hubs.py --hublist
    В идеале используется вместе с командой grep:


    Как уже было отмечено ранее, yandex — это корпоративный блог и хаб, чтобы устранить неоднозначность используется ключ:
    --company. Поэтому, чтобы создать диаграмму для корпоративного блога Яндекса необходимо вызвать:
    python hubs.py --alsoread yandex --company.

    Для создания гистограммы на основе коэффициента Жаккара используется ключ --similar:
    python hubs.py --similar space

    Для вывода максимальных (минимальных) значений до N хабов по включению или коэффициенту Жаккара без самой гистограммы, необходимо вызвать ключ --max (--min):


    Идеи для следующих tools


    Монитор статей: после написания статьи нужно будет вызвать тул monitor $article_id и она будет записывать и рисовать изменение просмотров (плюсов, etc) во времени, а так же shares and likes в социальных сетях и возможно комментарии читателей.

    Веб интерфейс: все тоже самое, но доступное через веб.

    Идеи, комментарии, помощь зала и предложения особенно приветствуются.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 15

      +1
      Я хоть и восхищаюсь могучей консолью Linux, но хочется в будущем GUI. Мне кажется здесь он был бы уместным. Понятно, что это сильно вторично. Ну и потенциально deb-пакеты были бы нелишними, как мне кажется.
        +1
        Кстати, добавьте в консольный help раздел Examples. Для таких как я было бы понятнее) Если не трудно.
          0
          В идеале нужно будет сделать простой веб-интерфейс — это уже значится в списке «сделать». Но сначала хотелось, чтобы оно просто работало.
            0
            Ругается на мои шрифты. Это нормально?

            meklon@meklon-kubuntu:~/Загрузки/HabraAnalytics$ ./hubs.elf -h
            Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element                                             
            Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element                                             
            Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 78: saw unknown, expected number                                        
            Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.                          
            Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element                                             
            Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element                                             
            Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 78: saw unknown, expected number                                        
            Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.
            

            UPD: ОС — Kubuntu 14.04
              0
                0
                Почитал, но фишка в том, что ~/.fonts.conf у меня отсутствует. Он лежит в ~/.config/fontconfig/fonts.conf
                Систему я обновляю непрерывно еще с 11.10. Видимо что-то устаревшее протащил через апгрейды версий. Да бог с ними, с предупреждениями. Работает же.
                  0
                  У меня что-то не то с версиями QT-библиотеки?
                  meklon@meklon-kubuntu:~/Загрузки/HabraAnalytics$ ./hubs.elf --similar easyelectronics
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 78: saw unknown, expected number
                  Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 78: saw unknown, expected number
                  Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.
                  ----------------------------------------------------------------------
                    Hub metrics for Habrahabr.ru
                    Version 0.1, 2014 by habra-user varagian
                    Send your pizza, beer and kittens to sergey.paramonov@phystech.edu
                  ----------------------------------------------------------------------
                  
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 70: non-double matrix element
                  Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 78: saw unknown, expected number
                  Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 14: reading configurations from ~/.fonts.conf is deprecated.
                  Cannot mix incompatible Qt library (version 0x40806) with this library (version 0x40804)
                  Аварийный останов (сделан дамп памяти)
                  
                    0
                    Видимо, у вас стоит какая-то версия QT (скорее всего 5-я), которая конфликтует с используемой в matplotlib. Гугл не дает простых решений, видимо проще всего использовать исходники на python. Если имеется pip или easy_install, то нужно установить
                    sudo pip install matploblib matploblib_venn argparse numpy urllib3
                    python hubs.py --similar easyelectronics
                      0
                      Хм… Не хочу ковыряться) Потом попробую в Windows загрузиться) Мне утилита не настолько критична. Хотелось просто потрогать. Идея интересная.
              0
              Собранный бинарник для макоси(venn.osx) запустился, а вот с hubs.py я не смог разобраться. Можете так же собрать?
                0
                ок, соберу завтра — под рукой нет Мака
                  0
                  Бинарник для хабов под мак hubs.osx
                  0
                  Запустил утилиту следующим образом
                  hubs.exe -a veeam --max 1000>list.txt
                  

                  В полученном файле было 365 хабов, однако там не оказалось хаба «Виртуализация» (virtulization). Вместе с тем, это хаб, в который мы постоянно пишем, да и вторая Ваша утилита
                  venn.exe -d virtualization veeam
                  
                  показывает, что пересечение 174 человека (70% подписчиков блога).

                  Хаб виртуализации отдельно обновил, но не помогло.
                    0
                    Спасибо за наблюдение!

                    Проверил и оказалось, для компаний граница массива вычислялась неверно (сдвиг на единичку там, где его быть не должно) — поправил, попробуйте вот эту версию: hubs.exe

                    Сейчас диаграмма выглядит так (клибельно):
                      0
                      Да, теперь работает! Спасибо!

                  Only users with full accounts can post comments. Log in, please.