Скачать пост в виде документа Mathematica, который содержит весь код использованный в статье, вместе с дополнительными файлами, можно здесь (архив, ~147 МБ).

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

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

В посте будут рассматриваться статьи, относящиеся к хабам, всего в анализе участвовало 62000 статей из 264 хабов. Статьи, написанные только для корпоративных блогов компаний в посте не рассматривались, а также не рассматривались посты, не попавшие в группу «интересные».

Ввиду того, что база данных, построенная в посте, формировалась за некоторое время до публикации, а именно 26 апреля 2015 г., посты, опубликованные на Хабрахабре после этой даты (а также, возможно, новые хабы) в данном посте не рассматривались.

Оглавление


Импорт списка хабов
Импорт ссылок на все статьи Хабрахабра
Импорт всех статей Хабрахабра
Функции извлечения конкретнных данных из символьного XML представления поста
Создание базы данных постов Хабрахабра с помощью Dataset
Результаты обработки данных
Краткий анализ хабов
Граф связей хабов на Хабрахабре
Количество статей в зависимости от времени
Количество изображений (видео), используемых в постах в зависимости от времени
Облака ключевых слов Хабрахабра и отдельных хабов
Сайты, на которые ссылаются в статьях на Хабрахабре
Коды, которые приводят в статьях на Хабрахабре
Частота встречи слов
Рейтинг и числа просмотров постов, а также вероятность достижения их определенных значений
Зависимость рейтинга и числа просмотров поста от времени публикации
Зависимость рейтинга поста от его объема
Заключение

Импорт списка хабов


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

HabrAnalysisInWolframLanguage_1.png

HabrAnalysisInWolframLanguage_2.png

HabrAnalysisInWolframLanguage_3.png

HabrAnalysisInWolframLanguage_4.png

Импорт ссылок на все статьи Хабрахабра


Функция импорта ссылки с n-й страницы некоторого хаба:

HabrAnalysisInWolframLanguage_5.png

Функция импорта ссылок на все статьи, находящиеся в некотором хабе:

HabrAnalysisInWolframLanguage_6.png

Функция импорта ссылок на все посты из всех хабов (кроме корпоративных блогов):

HabrAnalysisInWolframLanguage_7.png

Импорт с сохранением в бинарный дамп-файл Wolfram Language (для последующего мгновенного использования) ссылок на все посты из всех хабов:

HabrAnalysisInWolframLanguage_8.png

Импорт всех статей Хабрахабра


Всего в базе ссылок на посты:

HabrAnalysisInWolframLanguage_9.png

HabrAnalysisInWolframLanguage_10.png

При этом, среди них довольно много дублей, что связано с тем, что один и тот же пост часто относится к разным хабам. Всего дублирующихся постов ~30,6%, что видно из кода ниже.

HabrAnalysisInWolframLanguage_11.png

HabrAnalysisInWolframLanguage_12.png

Создадим список, состоящий из уникальных ссылок на посты:

HabrAnalysisInWolframLanguage_13.png

HabrAnalysisInWolframLanguage_14.png

Всего мы имеем 62000 ссылок, которые соответствуют такому же количеству статей.

HabrAnalysisInWolframLanguage_15.png

HabrAnalysisInWolframLanguage_16.png

Создадим функцию, отвечающую за импорт HTML кода веб-страницы (поста) в виде символьного XML объекта (XMLObject) по ссылке на эту страницу, которая на выходе создает серийный пакет .mx языка Wolfram Language.

HabrAnalysisInWolframLanguage_17.png

Запустим загрузку всех постов:

HabrAnalysisInWolframLanguage_18.png

После окончания загрузки мы получим 62000 файлов на жестком диске:

HabrAnalysisInWolframLanguage_19.png

Функции извлечения конкретных данных из символьного XML представления поста


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

Заголовок поста

HabrAnalysisInWolframLanguage_20.png

Список хабов, в которых опубликован пост

HabrAnalysisInWolframLanguage_21.png

Дата и время публикации поста в формате абсолютного времени (для удобства дальнейшей работы).

HabrAnalysisInWolframLanguage_22.gif

Рейтинг поста

HabrAnalysisInWolframLanguage_23.png

Количество просмотров поста

HabrAnalysisInWolframLanguage_24.png

Статистика гиперссылок, приведенных в посте

HabrAnalysisInWolframLanguage_25.png

Количество изображений, использованных в посте

HabrAnalysisInWolframLanguage_26.png

Количество комментариев к посту

HabrAnalysisInWolframLanguage_27.png

Количество видео, вставленных в пост

HabrAnalysisInWolframLanguage_28.png

Текст поста в стандартизованной форме (устранены абзацы, все буквы сделаны прописными)

HabrAnalysisInWolframLanguage_29.gif

Статистика кодов, приведенных в посте

HabrAnalysisInWolframLanguage_30.png

Ключевые слова

HabrAnalysisInWolframLanguage_31.png

Создание базы данных постов Хабрахабра с помощью Dataset


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

HabrAnalysisInWolframLanguage_32.png

Создадим функцию, отсеивающую такие страницы:

HabrAnalysisInWolframLanguage_33.gif

Теперь подгрузим пути до всех файлов .mx, в которых хранятся посты:

HabrAnalysisInWolframLanguage_34.png

HabrAnalysisInWolframLanguage_35.png

И удалим закрытые:

HabrAnalysisInWolframLanguage_36.png

Всего было удалено около 0,5% постов, являющихся закрытыми:

HabrAnalysisInWolframLanguage_37.png

HabrAnalysisInWolframLanguage_38.png

Создадим функцию, которая будет создавать строку базы данных о постах Хабрахабра, которую мы получим ниже. Мы сделаем это с помощью созданных ранее функций, а также функции Association.

HabrAnalysisInWolframLanguage_39.png

Наконец, сформируем с помощью функции Dataset базу данных постов Хабрахабра:

HabrAnalysisInWolframLanguage_40.png

HabrAnalysisInWolframLanguage_41.png

HabrAnalysisInWolframLanguage_42.png

Результаты обработки данных


Краткий анализ хабов


Найдем распределение количества хабов, в которых размещена статья:

HabrAnalysisInWolframLanguage_43.png

HabrAnalysisInWolframLanguage_44.png

Представим этот фрагмент Dataset в виде таблицы:

HabrAnalysisInWolframLanguage_45.png

HabrAnalysisInWolframLanguage_46.png

Найдем самые большие Хабы по количеству статей:

HabrAnalysisInWolframLanguage_47.png

HabrAnalysisInWolframLanguage_48.png

Если рассмотреть только уникальные статьи (относящиеся только к одному хабу, то картина несколько изменится):

HabrAnalysisInWolframLanguage_49.png

HabrAnalysisInWolframLanguage_50.png

Также, найдем количество постов компаний (здесь не учитываются посты, написанные компанией только для своего блога):

HabrAnalysisInWolframLanguage_51.png

HabrAnalysisInWolframLanguage_52.png

Граф связей хабов на Хабрахабре


Создадим функцию, вычисляющую меру схожести двух хабов по спискам постов, которые в них опубликованы, на основе коэффициента Сёренсена:

HabrAnalysisInWolframLanguage_53.gif

Создадим список всех возможных пар хабов (хабы компаний мы не рассматриваем):

HabrAnalysisInWolframLanguage_54.png

Вычислим для каждой пары хабов их коэффициент сходства:

HabrAnalysisInWolframLanguage_55.png

Создадим списки, задающие ребра графа и их веса:

HabrAnalysisInWolframLanguage_56.png

Для раскраски создадим функцию, нормирующую полученные значения коэффициента сходства на отрезок [0; 1]:

HabrAnalysisInWolframLanguage_57.png

Зададим цвет, толщину и прозрачность ребер в зависимости от коэффициента сходства. Чем больше вес ребра, тем оно толще и краснее. Чем его вес меньше, тем оно прозрачнее и тоньше.

HabrAnalysisInWolframLanguage_58.png

Полученный граф интерактивен, при наведении на каждую из вершин можно увидеть ее название.


HabrAnalysisInWolframLanguage_59.png

HabrAnalysisInWolframLanguage_60.png

Можно также изменить стиль этого графа, отобразив названия вершин. Посмотреть этот граф в натуральном размере можно по ссылке (изображение, 12 МБ).

HabrAnalysisInWolframLanguage_61.png

HabrAnalysisInWolframLanguage_62.png

Количество статей в зависимости от времени


Создадим функцию, визуализации количества опубликованных статей как на всем Хабрахабре, так и в некотором хабе:

HabrAnalysisInWolframLanguage_63.png

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

HabrAnalysisInWolframLanguage_64.png

HabrAnalysisInWolframLanguage_65.png

Начиная с 2012 года наблюдается стремительный рост публикаций в хабе “Математика”:

HabrAnalysisInWolframLanguage_66.png

HabrAnalysisInWolframLanguage_67.png

С 2011 года можно наблюдать затухание интереса к Flash:

HabrAnalysisInWolframLanguage_68.png

HabrAnalysisInWolframLanguage_69.png

В то же время, с 2010 года хаб “Game Development” растет просто как на дрожжах:

HabrAnalysisInWolframLanguage_70.png

HabrAnalysisInWolframLanguage_71.png

Что интересно, в хаб “Хабрахабр” поступает все меньше статей.

HabrAnalysisInWolframLanguage_72.png

HabrAnalysisInWolframLanguage_73.png

Количество изображений (видео), используемых в постах в зависимости от времени


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

HabrAnalysisInWolframLanguage_74.png

HabrAnalysisInWolframLanguage_75.png

HabrAnalysisInWolframLanguage_76.png

HabrAnalysisInWolframLanguage_77.png

HabrAnalysisInWolframLanguage_78.png

HabrAnalysisInWolframLanguage_79.png

HabrAnalysisInWolframLanguage_80.png

HabrAnalysisInWolframLanguage_81.png

HabrAnalysisInWolframLanguage_82.png

Посмотрим на некоторые хабы:

HabrAnalysisInWolframLanguage_83.png

HabrAnalysisInWolframLanguage_84.png

HabrAnalysisInWolframLanguage_85.png

HabrAnalysisInWolframLanguage_86.png

HabrAnalysisInWolframLanguage_87.png

HabrAnalysisInWolframLanguage_88.png

Облака ключевых слов Хабрахабра и отдельных хабов


Найдем список количеств употребления ключевых слов среди всех анализируемых постов на Хабрахабре:

HabrAnalysisInWolframLanguage_89.png

HabrAnalysisInWolframLanguage_90.png

Выберем 150 наиболее распространенных среди них:

HabrAnalysisInWolframLanguage_91.png

HabrAnalysisInWolframLanguage_92.png

Создадим из них облако слов, в котором размер слова (или словосочетания) прямо пропорционален количеству его указаний:

HabrAnalysisInWolframLanguage_93.png

HabrAnalysisInWolframLanguage_94.png

Мы также можем создать из некоторой строки маску:

HabrAnalysisInWolframLanguage_95.png

HabrAnalysisInWolframLanguage_96.png

и сделать на ее основе облако слов, содержащее уже 750 самых распространненных ключевых слов (словосочетаний):

HabrAnalysisInWolframLanguage_97.png

HabrAnalysisInWolframLanguage_98.png

Можно также сделать облако слов в любой форме:

HabrAnalysisInWolframLanguage_99.png

HabrAnalysisInWolframLanguage_100.png

Теперь создадим функцию, которая будет визуализировать облака самых популярных ключевых слов некоторого хаба (по умолчанию будет использоваться 100 слов):

HabrAnalysisInWolframLanguage_101.png

100 ключевых слова хаба “Математика”:

HabrAnalysisInWolframLanguage_102.png

HabrAnalysisInWolframLanguage_103.png

30 ключевых слов хаба “Математика”:

HabrAnalysisInWolframLanguage_104.png

HabrAnalysisInWolframLanguage_105.png

Ключевые слова хаба “Программирование”:

HabrAnalysisInWolframLanguage_106.png

HabrAnalysisInWolframLanguage_107.png

Ключевые слова хаба “JAVA”:

HabrAnalysisInWolframLanguage_108.png

HabrAnalysisInWolframLanguage_109.png

200 ключевых слов хаба “Open source”:

HabrAnalysisInWolframLanguage_110.png

HabrAnalysisInWolframLanguage_111.png

Сайты, на которые ссылаются в статьях на Хабрахабре


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

HabrAnalysisInWolframLanguage_112.png

Найдем сайты, на которые чаще всего ссылаются на Хабрахабре:

HabrAnalysisInWolframLanguage_113.png

HabrAnalysisInWolframLanguage_114.png

Картина становится яснее, если убрать главный источник ссылок — сам Хабрахабр.

HabrAnalysisInWolframLanguage_115.png

HabrAnalysisInWolframLanguage_116.png

Найдем сайты, на которые чаще всего ссылаются в хабе “Математика” (при этом мы везде удалим сам Хабрахабр, так как на него всюду ссылаются, что очевидно, чаще всего):

HabrAnalysisInWolframLanguage_117.png

HabrAnalysisInWolframLanguage_118.png

Теперь посмотрим, скажем, на хаб “Разработка под iOS”:

HabrAnalysisInWolframLanguage_119.png

HabrAnalysisInWolframLanguage_120.png

А вот хаб “.NET”:

HabrAnalysisInWolframLanguage_121.png

HabrAnalysisInWolframLanguage_122.png

Коды, которые приводят в статьях на Хабрахабре


Найдем долю статей, в которых нет вставок кода (здесь возможна серьезная погрешность, так как не всегда код вставляется авторами с помощью специального тэга — скажем, в этом посте он вставлен в виде изображений).

HabrAnalysisInWolframLanguage_123.png

HabrAnalysisInWolframLanguage_124.png

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

HabrAnalysisInWolframLanguage_125.png

Найдем распределение языков вставок кода для всего Хабрахабра:

HabrAnalysisInWolframLanguage_126.png

HabrAnalysisInWolframLanguage_127.png

Картина станет более ясной, если удалить вставки, у которых не указан язык программирования:

HabrAnalysisInWolframLanguage_128.png

HabrAnalysisInWolframLanguage_129.png

Посмотрим теперь на самые популярные языки программирования вставок кода в хабе “Алгоритмы”:

HabrAnalysisInWolframLanguage_130.png

HabrAnalysisInWolframLanguage_131.png

Хабе “Программирование”:

HabrAnalysisInWolframLanguage_132.png

HabrAnalysisInWolframLanguage_133.png

Хаб “Веб-разработка”:

HabrAnalysisInWolframLanguage_134.png

HabrAnalysisInWolframLanguage_135.png

Хаб “Настройка Linux”:

HabrAnalysisInWolframLanguage_136.png

HabrAnalysisInWolframLanguage_137.png

Хаб “Поисковые машины и технологии”:

HabrAnalysisInWolframLanguage_138.png

HabrAnalysisInWolframLanguage_139.png

Частота встречи слов


Сервис Яндекса “Подбор слов” очень полезен, если вы хотите написать, скажем, статью, которая будет интересна широкой аудитории. Этот сервис позволяет посмотреть частоту поисковых запросов слов. На основе подгруженной информации о статьях Хабрахабра можно сделать некий аналог этого сервиса, выдающий частоту встречи слов (их групп или регулярных выражений) в тексте статей. Это позволяет проследить интерес аудитории к той или иной теме.

Итак, создадим функцию, которая будет выдавать такого рода частоту встречаемости слов:

HabrAnalysisInWolframLanguage_140.gif

Теперь можно посмотреть разные вещи, скажем, можно сравнить, какое название ресурса “Хабрахабр” или “Хабр” чаще употребляется на Хабрахабре:

HabrAnalysisInWolframLanguage_141.png

HabrAnalysisInWolframLanguage_142.png

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

HabrAnalysisInWolframLanguage_143.png

HabrAnalysisInWolframLanguage_144.png

Сравним частоту упоминаний математических пакетов (выражения вида “строка”~~_ (они использовались и в предыдущем примере) позволяют задавать коллекции строк с разными окончаниями, скажем, выражение “вольфрам”~~_ задаст коллекцию строк “вольфрам”, “вольфраму”, “вольфраме” и пр.):

HabrAnalysisInWolframLanguage_145.png

HabrAnalysisInWolframLanguage_146.png

Можно, конечно, интересоваться разными вещами, скажем, узнать частоту встреч слов группы “Россия”, “США” и “Европа”:

HabrAnalysisInWolframLanguage_147.png

HabrAnalysisInWolframLanguage_148.png

Или же можно наблюдать постепенное угасание (заморозку) интереса к какой-то технологии:

HabrAnalysisInWolframLanguage_149.png

HabrAnalysisInWolframLanguage_150.png

Или рождение новой:

HabrAnalysisInWolframLanguage_151.png

HabrAnalysisInWolframLanguage_152.png

Также можно смотреть на частоту употребления слов в отдельных хабах. Скажем, частота употребления слов “iOS” и “Аndroid” в хабе “Разработка под iOS”.

HabrAnalysisInWolframLanguage_153.png

HabrAnalysisInWolframLanguage_154.png

Или те же слова, но в хабе “Разработка под Android”.

HabrAnalysisInWolframLanguage_155.png

HabrAnalysisInWolframLanguage_156.png

Можно сравнить частоту употребления названий операционных систем в хабе “Open source”:

HabrAnalysisInWolframLanguage_157.png

HabrAnalysisInWolframLanguage_158.png

с Хабрахабром в целом:

HabrAnalysisInWolframLanguage_159.png

HabrAnalysisInWolframLanguage_160.png

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


Выделим пары рейтинг поста + числа просмотров поста:

HabrAnalysisInWolframLanguage_161.png

HabrAnalysisInWolframLanguage_162.png

Построим их распределение на плоскости в обычном и логарифмическом масштабах:

HabrAnalysisInWolframLanguage_163.png

HabrAnalysisInWolframLanguage_164.png

Недостатком этих графиков является то, что они не отражают плотности распределения точек на них.

Построим двумерную и трехмерную плотность распределения рассматриваемых пар:

HabrAnalysisInWolframLanguage_165.png

HabrAnalysisInWolframLanguage_166.png

HabrAnalysisInWolframLanguage_167.png

Средний рейтинг поста на Хабрахабре равен 34.5, а среднее количество просмотров 14237.3

HabrAnalysisInWolframLanguage_168.png

HabrAnalysisInWolframLanguage_169.png

Однако, это не статистическая характеристика. Построим распределение пар (создадим распределение двумерной случайной величины):

HabrAnalysisInWolframLanguage_170.png

HabrAnalysisInWolframLanguage_171.png

Найдем математическое ожидание:

HabrAnalysisInWolframLanguage_172.png

HabrAnalysisInWolframLanguage_173.png

А также среднеквадратическое отклонение:

HabrAnalysisInWolframLanguage_174.png

HabrAnalysisInWolframLanguage_175.png

Также можно найти вероятность, например, того, что пост наберет определенный рейтинг:

HabrAnalysisInWolframLanguage_176.png

HabrAnalysisInWolframLanguage_177.png

Найдем теперь вероятность, того, что пост наберет определенное число просмотров:

HabrAnalysisInWolframLanguage_178.png

HabrAnalysisInWolframLanguage_179.png

Зависимость рейтинга и числа просмотров поста от времени публикации


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

HabrAnalysisInWolframLanguage_180.png

HabrAnalysisInWolframLanguage_181.png

Выделим тройки время публикации поста + рейтинг поста + количество просмотров поста:

HabrAnalysisInWolframLanguage_182.png

Изучим поведение рейтинга постов в зависимости от времени публикации:

HabrAnalysisInWolframLanguage_183.png

HabrAnalysisInWolframLanguage_184.png

HabrAnalysisInWolframLanguage_185.png

HabrAnalysisInWolframLanguage_186.png

HabrAnalysisInWolframLanguage_187.png

HabrAnalysisInWolframLanguage_188.png

HabrAnalysisInWolframLanguage_189.png

HabrAnalysisInWolframLanguage_190.png

Изучим число просмотров  постов в зависимости от времени публикации:

HabrAnalysisInWolframLanguage_191.png

HabrAnalysisInWolframLanguage_192.png

HabrAnalysisInWolframLanguage_193.png

HabrAnalysisInWolframLanguage_194.png

HabrAnalysisInWolframLanguage_195.png

HabrAnalysisInWolframLanguage_196.png

HabrAnalysisInWolframLanguage_197.png

HabrAnalysisInWolframLanguage_198.png

Зависимость рейтинга поста от его объема


Выделим пары вида длина поста + рейтинг поста (длина поста — мы будем ее называть далее объемом поста — врассчитывается как общее числов символов в посте):

HabrAnalysisInWolframLanguage_199.png

HabrAnalysisInWolframLanguage_200.png

Построим их распределение на плоскости в обычном и логарифмическом масштабах:

HabrAnalysisInWolframLanguage_201.png

HabrAnalysisInWolframLanguage_202.png

Построим двумерную и трехмерную плотность распределения рассматриваемых пар:

HabrAnalysisInWolframLanguage_203.png

HabrAnalysisInWolframLanguage_204.png

HabrAnalysisInWolframLanguage_205.png

Средний объем поста на Хабрахабре равен 5989 символов.

HabrAnalysisInWolframLanguage_206.png

HabrAnalysisInWolframLanguage_207.png

Как и раньше, построим распределение рассматриваемых пар (создадим распределение двумерной случайной величины):

HabrAnalysisInWolframLanguage_208.png

HabrAnalysisInWolframLanguage_209.png

Найдем вероятность того, что пост с объемом не превышающим заданное количество символов наберет рейтинг не менее заданного:

HabrAnalysisInWolframLanguage_210.gif

HabrAnalysisInWolframLanguage_211.png

Заключение


Надеюсь, что проведенный анализ смог заинтересовать вас, а также будет вам полезен. Безусловно, на основе полученной базы данных можно провести еще массу всевозможных исследований, скажем, ответить на такие вопросы: будет ли данный пост популярен (предсказание уровня популярности)? что влияет на количество комментариев? как найти оптимальную тему для поста? и многое другое. Но это уже темы для будущих постов.

Обновление от 3:21 30 апреля: благодаря вниманию Power, скорректированы рассчитанные значения, связанные с рейтингом постов. По сравнению с ранее вычисленными значениями, отличия оказались довольно незначительными. Однако, восстановлена цельность всей цепочки алгоритмов, за счет устранения бага в функции extractData[«Raiting»].

Комментарии (58)


  1. valemak
    29.04.2015 18:53
    +2

    Неожиданным оказалась то, что самые плюсуемые статьи — созданные в 4 утра по Москве. Хотя, при дальнейшем размышлении, кажется что это вполне логично — опубликованное глубокой ночью (время московское) прочитывается в начале рабочего дня жителями России, начиная с Владивостока и далее по территории страны, по мере наступления рабочего дня в соответствии с часовым поясом. При этом ещё много часов подряд публикация остаётся на первых страницах — большинство авторов (которые находятся в пределах часовых поясов европейской части России) ещё спят. И даже когда в самой Москве начинается рабочий день, статья ещё в числе самых верхних на странице.

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

    Я же надеюсь, что если статьи с Хабры собирались несколькими пауками, то их IP были из одного часового пояса?


    1. OsipovRoman Автор
      29.04.2015 22:42
      +2

      Статьи собирались только с моего отдельного локального компьютера, так что время одно.


    1. godlin
      30.04.2015 04:35
      +1

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


  1. Aclz
    29.04.2015 18:57
    +2

    А можно тезисно, какую действительно полезную сообществу информацию удалось выудить из всего этого?


    1. valemak
      29.04.2015 19:05
      +2

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


    1. dyadyaSerezha
      30.04.2015 13:38
      +2

      Солидарен с вопросов. Не увидел практически ничего реального полезного, кроме математики ради математики.


  1. Boomburum
    29.04.2015 19:00
    +12

    Объём этой статьи составляет 21500 символов (код поста – 60 тысяч) – ну, математика, не подведи исследователей! :)
    p.s. Очень круто, спасибо!


    1. OsipovRoman Автор
      29.04.2015 22:41
      +5

      Вероятность набрать при это более 40 «лайков» равна около 0.28, что не плохо. Пост это количество на данный момент уже набрал)


  1. valemak
    29.04.2015 19:03
    +2

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


    1. Frolenarzt
      29.04.2015 21:59
      +2

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


  1. thelongrunsmoke
    29.04.2015 19:57
    +2

    Картина становится яснее, если убрать главный источник ссылок — сам Хабрахабр.

    Повторяется дважды, второй раз в облаках с языками.


    1. Mingun
      29.04.2015 20:04
      +1

      Да не только это, весь блок с графиками оптимального времени публикации задвоен (впрочем, это легко можно не заметить :)).


      1. OsipovRoman Автор
        29.04.2015 22:39

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


    1. Power
      30.04.2015 01:54

      Да, во второй раз там должно быть что-то вроде «Посмотрим на самые популярные языки программирования вставок кода в хабе “Алгоритмы”:»


    1. OsipovRoman Автор
      30.04.2015 02:07

      Да, действительно, вкрался повтор фразы, поправил. Спасибо!


  1. Lerg
    29.04.2015 20:59
    +5

    Постройте, пожалуйста, график среднего рейтинга поста в зависимости от дня недели и времени одновременно. Т.е. в начале графика понедельник с 0 до 23, затем вторник с 0 до 23 и в конце воскресенье с 0 до 23. Всего 24 * 7 точек. Спасибо.


    1. OsipovRoman Автор
      29.04.2015 23:07
      +4

      Вот результат:



      Код для копирования
      data=Normal[habrDataset[All,{"PublicationDayOfWeek","PublicationHour","PageViews"}][GroupBy[Key["PublicationDayOfWeek"]],KeySort[Dataset[#][GroupBy[Key["PublicationHour"]],N@Mean[Cases[#,_Integer]]&,"PageViews"]]&,{"PublicationHour","PageViews"}]];
      
      colors=ColorData[109,"ColorList"];index=1;
      
      plots=ListLinePlot[#,PlotRange->All,PlotStyle->{AbsoluteThickness[3],colors[[index++]]}]&/@data;
      
      Legended[Show[Values@plots,PlotRange->All,ImageSize->700],LineLegend[colors[[1;;Length[plots]]],Keys[plots]]]


      1. Lerg
        29.04.2015 23:25

        Спасибо! Очень интересны пики в 4 и 6 часов.
        Моя гипотеза в том, что 4, 5, 6 часов по Москве — самое неудобное время для авторов статей, то есть до 3..4 часов ночи люди ещё могут посидеть, дописать и выложить статью, но как только время доходит до 5 часов, человек ложится спать и оставляет статью на потом.
        Из-за этого в этом промежутке очень мало данных для полноценного анализа. Может быть идеальным временем публикации будет 5 часов в субботу, воскресенье или понедельник, но мы просто не имеем достаточно хороших статей, чтобы подтвердить эту гипотезу.


  1. Himura
    29.04.2015 21:05
    +4

    Ого, потрясающе фундаментальная работа! Судя по данным, технологии Wolfram наконец-то набирают популярность! Прекрасное исследование, огромное спасибо!


  1. opckSheff
    29.04.2015 21:27
    +3

    Отлично. Спасибо за публикацию. На самом деле, можно было бы разделить на несколько частей, объем действительно гигантский, аж колесико мышки перегревается и глаза разбегаются.
    А по теме — очень интересно, наконец научился полноценно работать с dataset'ами.


  1. greabock
    29.04.2015 21:41
    +6

    Было сложно но я доскролил до сюда, чтобы написать этот комментарий.


  1. SamKrew
    29.04.2015 23:50
    +9

    Кто такой David Virtser и почему на его сайт так много ссылок?


    1. capslocky
      30.04.2015 07:50
      +7

      Когда-то давно он сделал хайлайтер кода для Хабра, который автоматом добавляет ссылку на его личный сайт. Но, к сожалению, сам хайлайтер уже давно не работает.


  1. Power
    30.04.2015 01:51
    +2

    А почему у вас получилось, что рейтинг постов не бывает отрицательным? Не ошибка ли это извлечения рейтинга? (Имейте в виду, Хабр вместо минуса перед числом использует тире (ndash).)


    1. OsipovRoman Автор
      30.04.2015 02:03

      Таких постов не так много. Рейтинг -1 у 669 постов, -2 у 113, -3 у 89 и -4 у 85. Меньше нет. В базе они есть.


      1. Power
        30.04.2015 02:32
        +1

        Вы, похоже, ходили по страницам вида http://habrahabr.ru/hub/{hubname}/page{N}/, а надо было по http://habrahabr.ru/hub/{hubname}/all/page{N}/.
        Первое — это «Интересное. Записи, получившие положительную оценку (рейтинг ?-4) пользователей», а второе — «Всё подряд. Все записи хаба (в хронологическом порядке)» (см. справку).


        1. OsipovRoman Автор
          30.04.2015 02:59

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


      1. OsipovRoman Автор
        30.04.2015 02:54

        Но, вообще, вы правы. Из-за этого символа, который на первый взгляд и внутри Wolfram Language отображается как минус, я не заметил эту неточность. Сейчас поправлю все что относится к этому. Благо изменения будут всюду лишь в сотых, а на графиках их вообще заметить будет невозможно.


        1. OsipovRoman Автор
          30.04.2015 03:19

          Благодарю за замеченную неточность. Поправил результаты. Отличия, как и думал, получились крайне малые.


  1. MilkyWay
    30.04.2015 02:31

    А есть ли у вас статистика по переводам (и помнится был формат топик-ссылка в прошлом)? Интересно сколько контента создано только для хабра


    1. OsipovRoman Автор
      30.04.2015 03:57
      +3

      На данный момент нет, но вот теперь, добавил. В целом, даже не знаю, почему мне не пришла в голову мысль вставить это сразу)



      Код для копирования
      extractData["TranslationQ"][data_]:=If[
      FreeQ[data,XMLElement["span",{"class"->"flag flag_translation"},{"перевод"}]],"Original","Translation"]


      1. MilkyWay
        30.04.2015 04:38
        +1

        Благодарю! Ждем статьи о гиктаймсе :)


        1. OsipovRoman Автор
          30.04.2015 10:36
          +1

          Что интересно, сделать клон этой статьи для GeekTimes и Мегамозга не сложно, нужно просто сделать другую базу и поставить на счет. Все произойдет в почти автоматическом режиме.


  1. chiffa_ua
    30.04.2015 02:40
    +2

    Офигенно интересно! Спасибо.

    Насчёт анализа вероятностей, а лотерею просчитать можешь? ;)


    1. opckSheff
      30.04.2015 11:59

      На самом деле, просчитать шанс выиграть в лотерею может любой человек, знакомый с азами теории вероятности. Даже без помощи Wolfram Language, с бумажкой и ручкой. Хотя так, конечно, удобнее. )


  1. Vorchun
    30.04.2015 10:43

    Статистика «только уникальные статьи (относящиеся только к одному хабу)»



    Немного удивлен порядком. Ведь можно говорить как о тренде и популярности? JS неожиданно ниже.


    1. OsipovRoman Автор
      30.04.2015 11:04
      +2

      С одной стороны да, с другой ясно, что Javascript очень связан с другими хабами, куда, почти автоматом, также добавляют пост при публикации. Так что да, «монохабных» постов в нем получается меньше.

      Вот с какими хабами тесно связан хаб Javascript



      Код для копирования
      habs=
      Association@KeyValueMap[#1<>" ("<>ToString[#2]<>")"->#2&,KeySelect[Drop[Normal[Reverse@Sort[Counts[Flatten[habrDataset[Select[And[MemberQ[#Habs,"JavaScript"]]&],"Habs"]]]]],1],Not[StringMatchQ[#,"Блог"~~__]]&]];
      
      Quiet[WordCloud[habs,ImageSize->800,MaxItems->All]]


      1. Vorchun
        30.04.2015 11:32

        ух ты ) Красиво. Вы молодец


    1. pasha_golub
      30.04.2015 12:39

      Если ставить хаб JavaScript, то многие сразу лепят HTML. Так что всё в норме


      1. OsipovRoman Автор
        30.04.2015 12:45

        Чаще всего «лепят» хаб «Веб разработка», как видно из облака слов выше. В 4 с лишним раза чаще, чем «HTML».


        1. pasha_golub
          30.04.2015 12:56

          Именно так! Когда я писал комментарий, этих данных еще не было. Воспользовался встроенным телепатором. Полагаю, что очень рядом получилось :)


  1. Shapelez
    30.04.2015 11:30

    Великолепно, фундаментальная работа!


  1. Rondo
    30.04.2015 11:56
    +1

    Грандиозная работа, большое спасибо за неё!
    Несколько графиков немного сбивают с толку: «Количество %object_name%, публикуемых в %hab_name% за год» — почему-то у всех завален правый край.
    Я конечно понимаю, что 2015 год ещё не закончился и значение за этот год меньше, но ведь можно было или экстраполировать по данным за первые 4 месяца на весь год, или просто урезать график по ширине до первых 4 месяцев 2015 года.


    1. OsipovRoman Автор
      30.04.2015 12:03

      Согласен, но это скорее дело вкуса. Я думаю, что все читатели поняли, что в 2015 году меньше только по причине того, что прошло еще только 4 месяца. Экстраполяция потребовала бы довольно много дополнительных объяснений, построения доп. моделей, выяснения их состоятельности и пр.


    1. opckSheff
      30.04.2015 12:07

      Хабрахабр изменчив, словно живой организм. Экстраполировать, пожалуй, совсем некорректно. ) И вариант «ужать» тоже нежизнеспособен, поскольку для построения уходящего вверх и вправо, как вам хочется, графика экстраполировать все равно придется. Дело в том, что значения графика между отметками на оси абсцисс — это не «количество %object_name%, публикуемых в %hab_name% за месяц», это просто линии, соединяющие точки.


      1. Rondo
        30.04.2015 19:24

        Кстати, лучше тогда делать гистограмму, а не график, если тут линии между точками не несут особого смысла.


  1. DISaccount
    30.04.2015 12:36

    У меня есть предположение, что случайная величина — отношение числа голосов (не рейтинга!) за статью к числу ее просмотров подчинена распределению Пуассона. Могли бы Вы привести этот график (ось абсцисс — число голосов, ось ординат — отношение)?


    1. OsipovRoman Автор
      01.05.2015 12:53
      +1

      Вот то, что вы просили:


      1. DISaccount
        05.05.2015 13:22

        Спасибо! Кажется гипотеза правдоподобна.
        PS: Вы как настоящий трудящийся, в день трудящихся не поленились потрудиться!


  1. antonpv
    30.04.2015 14:22
    +1

    Эпичный пост, однозначно плюс! Всегда было интересно, как делают облачка и фигуры из слов, а тут еще и математически :)


  1. Amazpyel
    30.04.2015 16:29
    +1

    Вы маньяк в хорошем смысле этого слова.


  1. Tiberius
    30.04.2015 19:26
    +1

    Классная статья!
    К сожалению, познакомился с Mathematica лишь недавно, но сразу на курсе лекций был поражён тем, что умеет данный программный пакет, если знать, как с ним обращаться. Хотел про него для Хабра написать, но моих знаний определённо не хватит даже на 1 процентик от данной статьи)))

    И ещё раз спасибо!


  1. RomanPyr
    06.05.2015 12:48
    +1

    А можете сравнить частоту слов: яв~~ и джав~~?


    1. OsipovRoman Автор
      07.05.2015 06:24
      +1


      1. RomanPyr
        07.05.2015 11:45

        Благодарю. Давно об этом мечтал.


        1. OsipovRoman Автор
          07.05.2015 12:42

          Поделитесь, если возможно, почему?


          1. RomanPyr
            07.05.2015 13:10

            Отчасти поэтому.


  1. larichev
    13.05.2015 22:28

    Очень круто. Спасибо.