Чӣ тавр ман Ҳабрро таҳлил кардам, қисми 1: тамоюлҳо

Вақте ки Оливьеи солинавӣ ба итмом расид, ман коре надоштам ва ман тасмим гирифтам, ки ҳама мақолаҳоро аз Habrahabr (ва платформаҳои алоқаманд) ба компютери худ зеркашӣ кунам ва таҳқиқ кунам.

Якчанд ҳикояҳои ҷолиб буданд. Нахустини онҳо таҳияи шакл ва мавзӯъҳои мақолаҳо дар тӯли 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 кӯшиш мекунад, ки саҳифаро бо id-и мувофиқ бор кунад ва кӯшиш мекунад, ки аз сохтори 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 аз ҷониби антивируси ман фавран нест карда шуданд. Инҳо мутаносибан мақолаҳо дар бораи як занҷири JavaScript мебошанд, ки PDF-и зарароварро зеркашӣ мекунад, нармафзори ransomware SMS дар шакли маҷмӯи плагинҳои браузер ва сайти CrashSafari.com, ки iPhone-ҳоро ба бозсозӣ мефиристад. Антивирус баъдтар, ҳангоми сканкунии система мақолаи дигареро кашф кард: 338586 дар бораи скриптҳо дар вебсайти мағозаи ҳайвонот, ки протсессори корбарро барои истихроҷи криптовалют истифода мебаранд. Ҳамин тавр, мо метавонем кори антивирусро комилан мувофиқ ҳисоб кунем.

Мақолаҳои "Зиндагӣ" танҳо нисфи ҳадди эҳтимолӣ - 166307 адад буданд. Дар бораи боқимонда, Ҳабр имконоти "саҳифа кӯҳна аст, нест карда шудааст ё тамоман вуҷуд надошт" медиҳад. Хуб, ҳама чиз метавонад рӯй диҳад.

Пас аз боркунии мақолаҳо кори техникӣ сурат гирифт: масалан, санаҳои нашр бояд аз формати "'21 декабри 2006, соати 10:47" ба стандарт табдил дода шаванд. datetime, ва "12,8k" тамошо - дар 12800. Дар ин марҳила, чанд ҳодисаи дигар ба миён омад. Аз ҳама хандаовар бо шумориши овозҳо ва намудҳои додаҳо алоқаманд аст: баъзе паёмҳои кӯҳна изофабор буданд ва ҳар кадом 65535 овоз гирифтанд.

Чӣ тавр ман Ҳабрро таҳлил кардам, қисми 1: тамоюлҳо

Дар натиҷа, матнҳои мақолаҳо (бе расмҳо) барои ман 1.5 гигабайт, шарҳҳо бо мета-маълумот - 3 ва тақрибан сад мегабайт - мета-маълумот дар бораи мақолаҳо. Ин метавонад пурра дар RAM нигоҳ дошта шавад, ки барои ман ногаҳонии гуворо буд.

Ман таҳлили мақолаҳоро на аз худи матнҳо, балки аз мета-маълумотҳо оғоз кардам: санаҳо, тегҳо, марказҳо, диданҳо ва лайкҳо. Маълум шуд, ки вай бисьёр чизхоро гуфта метавонад.

Тамоюлҳои рушди Habrahabr

Мақолаҳо дар сайт аз соли 2006 нашр мешаванд; пуршиддат - дар солҳои 2008-2016.

Чӣ тавр ман Ҳабрро таҳлил кардам, қисми 1: тамоюлҳо

То чӣ андоза фаъолона хондани ин мақолаҳо дар вақтҳои гуногун баҳо додан осон нест. Матнҳои соли 2012 ва хурдтар шарҳҳо ва рейтингҳои бештар гирифтанд, аммо матнҳои навтар назар ва хатчӯбҳои бештар доранд. Ин нишондиҳандаҳо танҳо як маротиба дар соли 2015 ҳамин тавр рафтор карданд (нисфи кам шуданд). Шояд дар шароити буҳрони иқтисодӣ ва сиёсӣ таваҷҷуҳи хонандагон аз блогҳои IT ба мавзӯъҳои дардноктар афтид.

Чӣ тавр ман Ҳабрро таҳлил кардам, қисми 1: тамоюлҳо

Илова ба худи мақолаҳо, ман ба онҳо шарҳҳои бештар зеркашӣ кардам. 6 миллион шарҳ мавҷуд буд, аммо 240 ҳазори онҳо манъ карда шуданд ("UFO парвоз кард ва ин навиштаҷотро дар ин ҷо нашр кард"). Хусусияти муфиди шарҳҳо дар он аст, ки онҳо мӯҳри вақт доранд. Бо омӯзиши вақти шарҳҳо, шумо метавонед тақрибан фаҳмед, ки кай мақолаҳо умуман хонда мешаванд.

Маълум шуд, ки аксари маќолањо аз соати 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, веб дизайн.
  • Мавзӯҳои бештар мавриди баҳс: opera, skype, freelance, vkontakte, ubuntu, work, nokia, nginx, arduino, firefox.

Дар омади гап, азбаски ман мавзӯъҳоро муқоиса мекунам, шумо метавонед онҳоро аз рӯи басомад баҳогузорӣ кунед (ва натиҷаҳоро бо мақолаи монанд аз соли 2013).

  • Дар тӯли тамоми солҳои мавҷудияти Ҳабр, барчаспҳои маъмултарин (бо тартиби камшавӣ) инҳоянд: google, android, javascript, microsoft, linux, php, apple, java, python, барномасозӣ, стартапҳо, таҳия, iOS, стартап, шабакаҳои иҷтимоӣ
  • Дар соли 2017 маъмултаринҳо javascript, python, java, android, developer, linux, c++, барномасозӣ, php, c#, ios, омӯзиши мошинсозӣ, амнияти иттилоотӣ, microsoft, react буданд.

Ҳангоми муқоисаи ин рейтингҳо метавон таваҷҷуҳ кард, масалан, ба марши пирӯзии Python ва аз байн рафтани php ё ба “ғуруби офтоб”-и мавзӯъҳои оғозёбӣ ва болоравии омӯзиши мошинсозӣ.

На ҳама тегҳо дар Habré чунин ранги равшани мавзӯӣ доранд. Масалан, дар ин ҷо даҳҳо тегҳо ҳастанд, ки танҳо як маротиба вохӯрданд, аммо ба назари ман хандаовар менамуданд. Ҳамин тавр: "идея қувваи пешбарандаи пешрафт аст", "боркунӣ аз тасвири нарм", "Стейти Айова", "драма", "супералеш", "муҳаррики буғӣ", "корҳое, ки дар рӯзи шанбе бояд анҷом дода шаванд", "Ман дорам рубох дар гушт суфтакунанда», «а чун харвакта маълум шуд», «мо тегхои хандаовар пайдо карда натавонистем». Барои муайян кардани мавзӯи чунин мақолаҳо, тегҳо кофӣ нестанд - шумо бояд моделсозии мавзӯиро дар матнҳои мақолаҳо анҷом диҳед.

Таҳлили муфассали мундариҷаи мақолаҳо дар мақолаи навбатӣ хоҳад буд. Аввалан, ман моделеро бунёд мекунам, ки шумораи дидани саҳифаҳои мақоларо аз рӯи мундариҷаи он пешгӯӣ мекунад. Дуюм, ман мехоҳам ба шабакаи нейронӣ омӯзам, ки матнҳоро бо ҳамон услубе, ки муаллифони Ҳабр навиштаанд, тавлид кунанд. Пас обуна шавед 🙂

PS Ва дар ин ҷо садо баланд мешавад маҷмӯи маълумот.

Манбаъ: will.com

Илова Эзоҳ