Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Жаңа жылдық Оливье аяқталған кезде, менде ештеңе қалмады, мен Хабрахабрдан (және қатысты платформалардан) барлық мақалаларды компьютеріме жүктеп алып, зерттеуді шештім.

Бірнеше қызықты оқиғалар болды. Оның біріншісі – сайттың 12 жыл ішінде мақала форматы мен тақырыптарын әзірлеу. Мысалы, кейбір тақырыптардың динамикасы айтарлықтай индикативті. Жалғасы - кесіндінің астында.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Талдау процесі

Хабрдың қалай дамығанын түсіну үшін оның барлық мақалаларын қарап шығып, олардан мета-ақпарат алу керек болды (мысалы, күндер). Айналып өту оңай болды, өйткені барлық мақалаларға сілтемелер «habrahabr.ru/post/337722/» сияқты көрінеді және сандар қатаң түрде ретпен берілген. Соңғы жазбаның саны 350 мыңнан сәл аз екенін біле отырып, мен циклдегі барлық ықтимал құжат идентификаторын (Python коды) қарап шықтым:

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

функция download_document сәйкес идентификаторы бар бетті жүктеуге тырысады және html құрылымынан мағыналы ақпаратты шығаруға тырысады.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Download and process a Habr document and its comments """
    # выгрузка документа
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # парсинг документа
    soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # такое бывает, если статья не существовала или удалена
        doc['status'] = 'title_not_found'
    else:
        doc['status'] = 'ok'
        doc['title'] = soup.find("span", {"class": "post__title-text"}).text
        doc['text'] = soup.find("div", {"class": "post__text"}).text
        doc['time'] = soup.find("span", {"class": "post__time"}).text
        # create other fields: hubs, tags, views, comments, votes, etc.
        # ...
    # сохранение результата в отдельный файл
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

Талдау барысында мен бірнеше жаңа нәрселерді аштым.

Біріншіден, олар процессордағы ядролардан гөрі көбірек процестерді жасау пайдасыз дейді. Бірақ менің жағдайда шектеуші ресурс процессор емес, желі екені белгілі болды және 100 процесс 4-тен немесе, айталық, 20-дан жылдамырақ жұмыс істейді.

Екіншіден, кейбір посттарда арнайы таңбалардың тіркесімі болды - мысалы, «%&#@» сияқты эвфемизмдер. Солай болып шықты html.parser, мен бірінші қолданған, комбинацияға жауап береді &# бұл html нысанының басы деп санайтын болсақ. Мен қазірдің өзінде қара сиқырмен айналысатын болдым, бірақ форум талдаушыны өзгертуге болатынын айтты.

Үшіншіден, үшеуінен басқа барлық басылымдарды түсіріп алдым. 65927, 162075 және 275987 нөмірлі құжаттарды менің антивирусым бірден жойды. Бұл, тиісінше, зиянды pdf жүктеп алатын JavaScript тізбегі, браузер плагиндерінің жиынтығы түріндегі SMS төлем бағдарламасы және iPhone телефондарын қайта жүктеуге жіберетін CrashSafari.com сайты туралы мақалалар. Антивирус кейінірек жүйені сканерлеу кезінде тағы бір мақаланы тапты: криптовалютаны өндіру үшін пайдаланушының процессорын пайдаланатын үй жануарлары дүкенінің веб-сайтында сценарийлер туралы 338586 жариялаңыз. Сондықтан антивирустың жұмысы жеткілікті деп санауға болады.

«Тікелей эфир» мақалалары әлеуетті максимумның жартысы ғана болды - 166307 дана. Қалғандары туралы Хабр «бет ескірген, жойылған немесе мүлде жоқ» опцияларын береді. Бәрі де болуы мүмкін.

Мақалаларды жүктеп салу техникалық жұмыстармен жалғасты: мысалы, жарияланым күндерін «21 желтоқсан 2006 ж. 10:47» форматынан стандартқа түрлендіру қажет болды. datetime, және "12,8 мың" көру - 12800. Бұл кезеңде тағы бірнеше оқиға шықты. Ең күлкілісі дауыстарды санау мен деректер түрлеріне қатысты: кейбір ескі хабарламалар толып кетті және әрқайсысы 65535 дауыс алды.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Нәтижесінде мақалалардың мәтіндері (суретсіз) маған 1.5 гигабайт, мета-ақпараты бар пікірлер - тағы 3, ал жүзге жуық мегабайт - мақалалар туралы мета-ақпарат алды. Бұл толықтай жедел жадта сақталуы мүмкін, бұл мен үшін жағымды тосынсый болды.

Мен мақалаларды талдауды мәтіндердің өзінен емес, мета-ақпараттардан бастадым: күндер, тегтер, хабтар, көріністер және ұнатулар. Ол көп нәрсені айта алатыны белгілі болды.

Хабрахабрдың даму тенденциялары

Сайттағы мақалалар 2006 жылдан бері жарияланып келеді; ең қарқынды - 2008-2016 ж.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Бұл мақалалардың әртүрлі уақытта қаншалықты белсенді оқылғанын бағалау оңай емес. 2012 және одан кіші мәтіндер көбірек түсініктемелер мен рейтингтерге ие болды, бірақ жаңа мәтіндерде көбірек көру мен бетбелгі бар. Бұл көрсеткіштер 2015 жылы бір рет бірдей әрекет етті (екі есе қысқарды). Мүмкін, экономикалық және саяси дағдарыс жағдайында оқырмандардың назары IT-блогтардан әлдеқайда ауыр мәселелерге ауды.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Мақаланың өзінен басқа, мен оларға көбірек түсініктеме жүктеп алдым. 6 миллион түсініктеме болды, бірақ олардың 240 мыңына тыйым салынды («НЛО ұшып келіп, бұл жазуды осында жариялады»). Түсініктемелердің пайдалы қасиеті олардың уақыт белгісінің болуы болып табылады. Түсініктемелердің уақытын зерттей отырып, сіз мақалалардың қашан оқылатынын шамамен түсіне аласыз.

Мақалалардың көпшілігі таңғы 10-нан кешкі 20-ге дейін бір жерде жазылады да, түсініктеме береді де, т.б. әдеттегі Мәскеу жұмыс күнінде. Бұл Хабрдың кәсіби мақсатта оқылатынын және бұл жұмысты кейінге қалдырудың жақсы тәсілі екенін білдіруі мүмкін. Айтпақшы, бұл күн уақытының бөлінуі Хабрдың негізін қалағаннан бастап бүгінгі күнге дейін тұрақты.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Дегенмен, түсініктеме уақыт белгісінің басты артықшылығы - күннің уақыты емес, мақаланың «белсенді өмірінің» ұзақтығы. Мақала жарияланғаннан бастап оның түсініктемесіне дейінгі уақыттың қалай бөлінетінін есептедім. Анықталғандай, қазір медианалық түсініктеме (жасыл сызық) шамамен 20 сағаттан кейін келеді, яғни. жарияланғаннан кейінгі бірінші күні, орта есеппен, мақалаға барлық пікірлердің жартысынан сәл астамы қалды. Ал екі күнде олар барлық пікірлердің 75% қалдырады. Сонымен қатар, бұрынғы мақалалар одан да жылдам оқылды - мысалы, 2010 жылы пікірлердің жартысы алғашқы 6 сағатта келді.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Пікірлердің ұзаруы мен үшін таңқаларлық болды: түсініктемедегі кейіпкерлердің орташа саны Хабр өмір сүрген уақытында екі есеге жуық өсті!

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Пікірлер дауыс беруден гөрі оңай кері байланыс. Көптеген басқа ресурстардан айырмашылығы, Habré-де сіз тек плюстарды ғана емес, сонымен қатар минустарды да қоюға болады. Дегенмен, оқырмандар соңғы мүмкіндікті жиі пайдаланбайды: ұнатпаулардың қазіргі үлесі барлық берілген дауыстардың шамамен 15% құрайды. Бұрын көбірек болатын, бірақ уақыт өте оқырмандар мейірімді бола бастады.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Мәтіндердің өзі уақыт өте өзгерді. Мысалы, мәтіннің әдеттегі ұзындығы дағдарыстарға қарамастан, сайтты іске қосқаннан бастап тұрақты өсуін тоқтатпайды. Онжылдықта мәтіндер он есе ұзарды!

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Мәтіндердің стилі де (бірінші жуықтау) өзгерді. Мысалы, Хабрдың өмір сүруінің алғашқы жылдарында мәтіндердегі код пен сандардың үлесі өсті:

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Сайттың жалпы динамикасын түсінгеннен кейін мен әртүрлі тақырыптардың танымалдылығы қалай өзгергенін өлшеуді шештім. Тақырыптарды мәтіндерден автоматты түрде таңдауға болады, бірақ жаңадан бастағандар үшін дөңгелекті қайта ойлап таба алмайсыз, бірақ әр мақаланың авторлары бекіткен дайын тегтерді пайдаланыңыз. Мен диаграммада төрт типтік трендті сыздым. Бастапқыда «Google» тақырыбы басым болды (мүмкін негізінен SEO-ге байланысты), бірақ жылдар бойы салмағын жоғалтады. Javascript танымал тақырып болды және баяу өсуде, бірақ машиналық оқыту соңғы жылдары ғана тез танымал бола бастады. Linux, екінші жағынан, онжылдықта бірдей өзекті болып қалды.

Мен Хабрды қалай талдадым, 1 бөлім: трендтер

Әрине, мені қандай тақырыптар оқырман белсенділігін көбірек тартатыны қызықтырды. Мен әр тақырыптағы көрулердің, дауыстардың және пікірлердің медианалық санын есептедім. Міне, оқиға:

  • Ең көп қаралатын тақырыптар: arduino, веб-дизайн, веб-әзірлеу, дайджест, сілтемелер, css, html, html5, nginx, алгоритмдер.
  • Ең «лайк» тақырыптары: вконтакте, юмор, jquery, opera, c, html, веб әзірлеу, html5, css, веб-дизайн.
  • Ең көп талқыланатын тақырыптар: опера, скайп, фриланс, вконтакте, ubuntu, жұмыс, nokia, nginx, arduino, firefox.

Айтпақшы, мен тақырыптарды салыстырып жатқандықтан, сіз оларды жиілік бойынша (және нәтижелерді 2013 жылғы ұқсас мақала).

  • Хабр өмір сүрген барлық жылдар ішінде ең танымал тегтер (кему ретімен) google, android, javascript, microsoft, linux, php, apple, java, python, бағдарламалау, стартаптар, әзірлеу, ios, стартап, әлеуметтік желілер болып табылады.
  • 2017 жылы ең танымал JavaScript, python, java, android, developer, linux, c++, programming, php, c#, ios, machine learning, ақпараттық қауіпсіздік, microsoft, react болды.

Бұл рейтингтерді салыстыру кезінде, мысалы, Python-ның жеңісті маршына және php-тің жойылуына немесе стартап тақырыптарының «батуы» мен машиналық оқытудың көтерілуіне назар аударуға болады.

Хабредегі барлық тегтерде мұндай айқын тақырыптық бояу жоқ. Мысалы, мұнда тек бір рет кездескен, бірақ маған күлкілі болып көрінген оншақты тегтер бар. Сонымен: «идея - прогрестің қозғаушы күші», «иілгіш кескіннен жүктеп алу», «Айова штаты», «драма», «супералеш», «бу машинасы», «сенбіде істейтін нәрселер», «менде бар еттартқыштағы түлкі», «әдеттегідей болды», «біз күлкілі тегтерді таба алмадық». Мұндай мақалалардың тақырыбын анықтау үшін тегтер жеткіліксіз - мақалалардың мәтіндерінде тақырыптық модельдеуді жүргізуге тура келеді.

Мақаланың мазмұнын толығырақ талдау келесі постта болады. Біріншіден, мен оның мазмұнына қарай мақаланың бет көру санын болжайтын модель құрастырамын. Екіншіден, мен нейрондық желіні Habr авторлары сияқты стильде мәтіндер жасауды үйреткім келеді. Сондықтан жазылыңыз 🙂

PS Міне, сигнал естіледі деректер жинағы.

Ақпарат көзі: www.habr.com

пікір қалдыру