Детальный анализ Хабрахабра с помощью языка Wolfram Language (Mathematica)


    Скачать пост в виде документа 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»].
    Wolfram Research 45,28
    Wolfram Language, Mathematica, Wolfram Alpha и др.
    Поделиться публикацией
    Комментарии 61
    • +2
      Неожиданным оказалась то, что самые плюсуемые статьи — созданные в 4 утра по Москве. Хотя, при дальнейшем размышлении, кажется что это вполне логично — опубликованное глубокой ночью (время московское) прочитывается в начале рабочего дня жителями России, начиная с Владивостока и далее по территории страны, по мере наступления рабочего дня в соответствии с часовым поясом. При этом ещё много часов подряд публикация остаётся на первых страницах — большинство авторов (которые находятся в пределах часовых поясов европейской части России) ещё спят. И даже когда в самой Москве начинается рабочий день, статья ещё в числе самых верхних на странице.

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

      Я же надеюсь, что если статьи с Хабры собирались несколькими пауками, то их IP были из одного часового пояса?
      • +2
        Статьи собирались только с моего отдельного локального компьютера, так что время одно.
        • +1
          У меня есть подозрение, что это происходит именно потому, что новых написанных статей в 4 утра очень мало. Т.е. внимание читающих распределяется неким образом между новыми статьями, и количество новых статей в это время падает сильнее, чем количество читающих.
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            Меня в этой информационной свалке заинтересовали только графики, иллюстрирующие когда лучше размещать публикацию, чтобы получить больше плюсов. Но выводы из них весьма подозрительные…
            • +2
              Солидарен с вопросов. Не увидел практически ничего реального полезного, кроме математики ради математики.
            • +12
              Объём этой статьи составляет 21500 символов (код поста – 60 тысяч) – ну, математика, не подведи исследователей! :)
              p.s. Очень круто, спасибо!
              • +5
                Вероятность набрать при это более 40 «лайков» равна около 0.28, что не плохо. Пост это количество на данный момент уже набрал)
              • +2
                Ещё кажется очень подозрительным высокая плюсуемость субботне-воскресных публикаций. На самом деле, это наихудшие дни в плане рейтинга — маленькая посещаемость из-за чего мало оценок.
                • +2
                  Уже много раз это обсуждалось.
                  В выходные плюсуют больше, потому что конкуренции меньше.
                • +2
                  Картина становится яснее, если убрать главный источник ссылок — сам Хабрахабр.

                  Повторяется дважды, второй раз в облаках с языками.
                  • +1
                    Да не только это, весь блок с графиками оптимального времени публикации задвоен (впрочем, это легко можно не заметить :)).
                    • 0
                      В нем просто две группы графиков — одна коллекция по рейтингу, другая по числу просмотров. Визуально, да, они похожи.
                    • 0
                      Да, во второй раз там должно быть что-то вроде «Посмотрим на самые популярные языки программирования вставок кода в хабе “Алгоритмы”:»
                      • 0
                        Да, действительно, вкрался повтор фразы, поправил. Спасибо!
                      • +5
                        Постройте, пожалуйста, график среднего рейтинга поста в зависимости от дня недели и времени одновременно. Т.е. в начале графика понедельник с 0 до 23, затем вторник с 0 до 23 и в конце воскресенье с 0 до 23. Всего 24 * 7 точек. Спасибо.
                        • +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]]]
                          • 0
                            Спасибо! Очень интересны пики в 4 и 6 часов.
                            Моя гипотеза в том, что 4, 5, 6 часов по Москве — самое неудобное время для авторов статей, то есть до 3..4 часов ночи люди ещё могут посидеть, дописать и выложить статью, но как только время доходит до 5 часов, человек ложится спать и оставляет статью на потом.
                            Из-за этого в этом промежутке очень мало данных для полноценного анализа. Может быть идеальным временем публикации будет 5 часов в субботу, воскресенье или понедельник, но мы просто не имеем достаточно хороших статей, чтобы подтвердить эту гипотезу.
                        • +4
                          Ого, потрясающе фундаментальная работа! Судя по данным, технологии Wolfram наконец-то набирают популярность! Прекрасное исследование, огромное спасибо!
                          • +3
                            Отлично. Спасибо за публикацию. На самом деле, можно было бы разделить на несколько частей, объем действительно гигантский, аж колесико мышки перегревается и глаза разбегаются.
                            А по теме — очень интересно, наконец научился полноценно работать с dataset'ами.
                            • +6
                              Было сложно но я доскролил до сюда, чтобы написать этот комментарий.
                              • +9
                                Кто такой David Virtser и почему на его сайт так много ссылок?
                                • +7
                                  Когда-то давно он сделал хайлайтер кода для Хабра, который автоматом добавляет ссылку на его личный сайт. Но, к сожалению, сам хайлайтер уже давно не работает.
                                • +2
                                  А почему у вас получилось, что рейтинг постов не бывает отрицательным? Не ошибка ли это извлечения рейтинга? (Имейте в виду, Хабр вместо минуса перед числом использует тире (ndash).)
                                  • 0
                                    Таких постов не так много. Рейтинг -1 у 669 постов, -2 у 113, -3 у 89 и -4 у 85. Меньше нет. В базе они есть.
                                    • +1
                                      Вы, похоже, ходили по страницам вида http://habrahabr.ru/hub/{hubname}/page{N}/, а надо было по http://habrahabr.ru/hub/{hubname}/all/page{N}/.
                                      Первое — это «Интересное. Записи, получившие положительную оценку (рейтинг ≥-4) пользователей», а второе — «Всё подряд. Все записи хаба (в хронологическом порядке)» (см. справку).
                                      • 0
                                        Что-ж, в будущем можно будет написать апдейт с учетом не только «интересных» хабов, но и с очень плохим рейтингом. Благо доля их также не очень велика.
                                      • 0
                                        Но, вообще, вы правы. Из-за этого символа, который на первый взгляд и внутри Wolfram Language отображается как минус, я не заметил эту неточность. Сейчас поправлю все что относится к этому. Благо изменения будут всюду лишь в сотых, а на графиках их вообще заметить будет невозможно.
                                        • 0
                                          Благодарю за замеченную неточность. Поправил результаты. Отличия, как и думал, получились крайне малые.
                                    • 0
                                      А есть ли у вас статистика по переводам (и помнится был формат топик-ссылка в прошлом)? Интересно сколько контента создано только для хабра
                                      • +3
                                        На данный момент нет, но вот теперь, добавил. В целом, даже не знаю, почему мне не пришла в голову мысль вставить это сразу)



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


                                        Результат вычислений таков:

                                        • +1
                                          Благодарю! Ждем статьи о гиктаймсе :)
                                          • +1
                                            Что интересно, сделать клон этой статьи для GeekTimes и Мегамозга не сложно, нужно просто сделать другую базу и поставить на счет. Все произойдет в почти автоматическом режиме.
                                      • +2
                                        Офигенно интересно! Спасибо.

                                        Насчёт анализа вероятностей, а лотерею просчитать можешь? ;)
                                        • 0
                                          На самом деле, просчитать шанс выиграть в лотерею может любой человек, знакомый с азами теории вероятности. Даже без помощи Wolfram Language, с бумажкой и ручкой. Хотя так, конечно, удобнее. )
                                        • 0
                                          Статистика «только уникальные статьи (относящиеся только к одному хабу)»



                                          Немного удивлен порядком. Ведь можно говорить как о тренде и популярности? JS неожиданно ниже.
                                          • +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]]
                                            • 0
                                              ух ты ) Красиво. Вы молодец
                                            • 0
                                              Если ставить хаб JavaScript, то многие сразу лепят HTML. Так что всё в норме
                                              • 0
                                                Чаще всего «лепят» хаб «Веб разработка», как видно из облака слов выше. В 4 с лишним раза чаще, чем «HTML».
                                                • 0
                                                  Именно так! Когда я писал комментарий, этих данных еще не было. Воспользовался встроенным телепатором. Полагаю, что очень рядом получилось :)
                                            • 0
                                              Великолепно, фундаментальная работа!
                                              • +1
                                                Грандиозная работа, большое спасибо за неё!
                                                Несколько графиков немного сбивают с толку: «Количество %object_name%, публикуемых в %hab_name% за год» — почему-то у всех завален правый край.
                                                Я конечно понимаю, что 2015 год ещё не закончился и значение за этот год меньше, но ведь можно было или экстраполировать по данным за первые 4 месяца на весь год, или просто урезать график по ширине до первых 4 месяцев 2015 года.
                                                • 0
                                                  Согласен, но это скорее дело вкуса. Я думаю, что все читатели поняли, что в 2015 году меньше только по причине того, что прошло еще только 4 месяца. Экстраполяция потребовала бы довольно много дополнительных объяснений, построения доп. моделей, выяснения их состоятельности и пр.
                                                  • 0
                                                    Хабрахабр изменчив, словно живой организм. Экстраполировать, пожалуй, совсем некорректно. ) И вариант «ужать» тоже нежизнеспособен, поскольку для построения уходящего вверх и вправо, как вам хочется, графика экстраполировать все равно придется. Дело в том, что значения графика между отметками на оси абсцисс — это не «количество %object_name%, публикуемых в %hab_name% за месяц», это просто линии, соединяющие точки.
                                                    • 0
                                                      Кстати, лучше тогда делать гистограмму, а не график, если тут линии между точками не несут особого смысла.
                                                  • 0
                                                    У меня есть предположение, что случайная величина — отношение числа голосов (не рейтинга!) за статью к числу ее просмотров подчинена распределению Пуассона. Могли бы Вы привести этот график (ось абсцисс — число голосов, ось ординат — отношение)?
                                                    • +1
                                                      Вот то, что вы просили:

                                                      • 0
                                                        Спасибо! Кажется гипотеза правдоподобна.
                                                        PS: Вы как настоящий трудящийся, в день трудящихся не поленились потрудиться!
                                                    • +1
                                                      Эпичный пост, однозначно плюс! Всегда было интересно, как делают облачка и фигуры из слов, а тут еще и математически :)
                                                      • +1
                                                        Вы маньяк в хорошем смысле этого слова.
                                                        • +1
                                                          Классная статья!
                                                          К сожалению, познакомился с Mathematica лишь недавно, но сразу на курсе лекций был поражён тем, что умеет данный программный пакет, если знать, как с ним обращаться. Хотел про него для Хабра написать, но моих знаний определённо не хватит даже на 1 процентик от данной статьи)))

                                                          И ещё раз спасибо!
                                                          • +1
                                                            А можете сравнить частоту слов: яв~~ и джав~~?
                                                          • 0
                                                            Очень круто. Спасибо.
                                                            • 0
                                                              Спасибо большое. Огромная полезная работа. Шикарный пост, в избранном.
                                                              Напросился только печальный вывод: хабр говорит про OpenSource, но бОльшей части хабра плевать на OpenSource (уникальные посты этой темы в… внизу). Поправьте меня, если я не прав.
                                                              • +1
                                                                Класс. Громадное исследование, спасибо… Представил прямо инструмент для хабры (типа «чего хочет хабра»), который в процессе работы над публикацией позволяет глянуть перспективы этой публикации.
                                                                • 0
                                                                  Спасибо, я очень рад, что вам понравился пост!

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

                                                                Самое читаемое