Si kam analizuar Habr, pjesa 1: trendet

Kur kur u mbyll sallata Olivie e Vitit të Ri, nuk kisha çfarë të bëja dhe vendosa të shkarkoj në kompjuterin tim të gjitha artikujt nga Habrahabr (dhe platformat përkatëse) për t'i hulumtuar.

Kishin disa disa histori interesante. E para prej tyre është zhvillimi i formateve dhe tematikave të artikujve gjatë 12 vjetëve të ekzistencës së sitit. Për shembull, dinamika e disa temave është tregueshëm e dukshme. Vazhdimi është më poshtë.

Si kam analizuar Habr, pjesa 1: trendet

Procesi i analizës

Për të kuptuar se si është zhvilluar Habr, duhej të kaloja nëpër të gjitha artikujt e tij dhe të nxirrja metainformacionin (p.sh., datat). Kalimi doli lehtë, sepse lidhjet për të gjitha artikujt janë të formatit "habrahabr.ru/post/337722/", dhe numrat jepen strikt sipas rendit. Duke ditur se postimi i fundit ka numër pak më poshtë 350 mijë, thjesht kalova nëpër të gjitha id-të e mundshme të dokumenteve me një cikël (kodi në Python):

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

Funksioni download_document përpiqet të ngrejë faqen me id përkatëse dhe përpiqet të nxjerrë informacionin e rëndësishëm nga struktura html.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Shkarko dhe procesoni një dokument Habr dhe komentet e tij """
    # ngarko dokumentin
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # analizo dokumentin
    soup = BeautifulSoup(r.text, 'html5lib') # në vend të html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # kjo ndodh kur artikulli nuk ekziston ose është fshirë
        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
        # krijo fusha të tjera: hubs, tags, views, comments, votes, etj.
        # ...
    # ruaj rezultatin në një skedar të veçantë
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

Në procesin e analizës, zbulova disa momente të reja.

E para, thonë se krijimi i më shumë proceseve sesa bërthamat në procesor është i padobishëm. Por në rastin tim doli se burimi kufizues nuk është procesori, por rrjeti, dhe 100 procese funksionojnë më shpejt se 4 ose, për të thënë, 20.

E dyta, nĂ« disa postime u gjetĂ«n kombinime specialesh — pĂ«r shembull, eufemizma si "%&#@". Doli se html.parser, qĂ« e pĂ«rdora fillimisht, reagon ndaj kombinimit &# me ndjeshmĂ«ri, duke e konsideruar atĂ« fillim tĂ« njĂ« entiteti html. Kishim menduar tĂ« aplikonim magjinĂ« e zezĂ«, por nĂ« forum mĂ« sugjeruan se mund tĂ« thjesht ndryshoja parser-in.

Së fundmi, unë arrita të eksportoj të gjithë publikimet, përveç tri. Dokumentet me numra 65927, 162075 dhe 275987 u fshinë menjëherë nga antivirusit tim. Këto janë artikujt përkatësisht për një zinxhir javascript-i që ngarkon një pdf me malware, një ransomware SMS në formën e një grupi shtesash për shfletues, dhe faqen CrashSafari.com, e cila e dërgon iPhone në rindezje. Një artikull tjetër antivirus i zbuluar më vonë, gjatë skanimit të sistemit: postimi 338586 për skriptet në faqen e dyqanit të kafshëve, që përdorin procesorin e përdoruesit për minerale kriptomonedhave. Pra, mund të konsiderojmë punën e antivirusit si plotësisht adekuate.

"Artikujt 'live' ishin vetĂ«m gjysma e maksimumit tĂ« mundshĂ«m — 166307 copĂ«. PĂ«r tĂ« tjerĂ«t, Habr jep opsione si 'faqja Ă«shtĂ« e pĂ«rjetshme, Ă«shtĂ« fshirĂ« ose nuk ka ekzistuar fare'. ÇfarĂ« tĂ« themi, ndodhin raste tĂ« tilla.

Pas eksportit tĂ« artikujve filloi puna teknike: pĂ«r shembull, datat e publikimit duhet tĂ« konvertohen nga formati '21 Dhjetor 2006 nĂ« 10:47' nĂ« standardin datetime, dhe '12,8k' shikime — nĂ« 12800. NĂ« kĂ«tĂ« fazĂ« dolĂ«n edhe disa kazusĂ«. MĂ« argĂ«tuesi lidhej me llogaritjen e votave dhe llojet e tĂ« dhĂ«nave: nĂ« disa postime tĂ« vjetra ndodhi njĂ« mbingarkesĂ« int, dhe ato morĂ«n 65535 vota.

Si kam analizuar Habr, pjesa 1: trendet

Si rezultat, tekstet e artikujve (pa figura) mĂ« zĂ«nĂ« 1.5 gigabajt, komentet me metainformacione — edhe 3, dhe rreth njĂ«qind megabajt — metainformacione rreth artikujve. Kjo mund tĂ« mbahet krejtĂ«sisht nĂ« memorie, qĂ« ishte njĂ« surprizĂ« e kĂ«ndshme pĂ«r mua.

Analizën e artikujve e fillova jo me tekstet e veta, por me metainformacionin: datat, etiketat, hub-et, shikimet dhe 'like'-et. Doli se edhe ajo mund të tregojë shumë.

Trendet e zhvillimit të Habrakhabr

Artikujt nĂ« faqen janĂ« publikuar qĂ« nga viti 2006; mĂ« intensivisht — nĂ« vitet 2008-2016.

Si kam analizuar Habr, pjesa 1: trendet

Sa aktivisht janë lexuar këta artikuj në kohë të ndryshme, nuk është kaq e lehtë për t'u vlerësuar. Tekstet e vitit 2012 dhe më të rinjtë janë komentuar dhe renditur më aktivisht, por tekstet më të reja kanë më shumë shikime dhe shtesa në shënim. Këto metrika janë sjellë njësoj (ra nën dy herë) vetëm një herë, në vitin 2015. Ndoshta, në situatën e krizës ekonomike dhe politike, vëmendja e lexuesve u kalua nga bloget IT në pyetje më shqetësuese.

Si kam analizuar Habr, pjesa 1: trendet

Përveç vetë artikujve, kam nxjerrë edhe komentet për ta. U bënë 6 milion komente, por 240 mijë prej tyre ishin të bllokuar ("nlo erdhi dhe publikoi këtë shënim këtu"). Një veçori e dobishme e komenteve është se ata kanë të shënuar kohën. Duke studiuar kohën e komenteve, mund të kuptohet përafërsisht kur lexohen artikujt.

Doli se shumica e artikujve shkruhen dhe komentohen diku midis orës 10 dhe 20, pra në një ditë tipike pune në Moskë. Kjo mund të nënkuptojë se Habr lexohet për qëllime profesionale, si dhe se është një mënyrë e mirë për të procrastinuar në punë. Për më tepër, kjo shpërndarje e kohës është e qëndrueshme që nga themelimi i Habr deri në ditët e sotme.

Si kam analizuar Habr, pjesa 1: trendet

MegjithatĂ«, pĂ«rfitimi kryesor nga marka e kohĂ«s sĂ« komentit nuk Ă«shtĂ« ora e ditĂ«s, por afati "jetĂ«s aktiv" tĂ« artikullit. Kam llogaritur se si distribuohen kohĂ«t nga publikimi i artikullit deri nĂ« komentin e tij. Doli se aktualisht, komenti median (vija e gjelbĂ«r) vjen ndryshe pas rreth 20 orĂ«sh, pra nĂ« ditĂ«n e parĂ« pas publikimit, lihen nĂ« mesatare pak mĂ« shumĂ« se gjysma e tĂ« gjitha komenteve pĂ«r artikullin. Pas dy ditĂ«ve lihen 75% e tĂ« gjitha komenteve. MegjithatĂ«, mĂ« parĂ« artikujt lexoheshin akoma mĂ« shpejt — kĂ«shtu, nĂ« vitin 2010, gjysma e komenteve vinin tĂ«rĂ«sisht brenda 6 orĂ«ve.

Si kam analizuar Habr, pjesa 1: trendet

Më surprizoi që komentet janë zgjeruar: numri mesatar i simboleve në një koment gjatë ekzistencës së Habr është rritur pothuajse dyfish!

Si kam analizuar Habr, pjesa 1: trendet

Një feedback më e thjeshtë se komentet janë votat. Ndryshe nga shumë burime të tjera, në Habr mund të jepen jo vetëm pëlqime, por edhe komente negative. Megjithatë, lexuesit nuk e shfrytëzojnë këtë mundësi shumicën e kohës: pjesa aktuale e votave negative është rreth 15% e të gjitha votave të dhëna. Më parë ka qenë më shumë, por me kalimin e kohës, lexuesit u bënë më të mirë.

Si kam analizuar Habr, pjesa 1: trendet

Tekstet kanë ndryshuar me kalimin e kohës. Për shembull, gjatësia tipike e teksteve vazhdon të rritet që nga fillimi i faqes, pavarësisht krizave. Gjatë një dekade, tekstet u bënë pothuajse dhjetë herë më të gjata!

Si kam analizuar Habr, pjesa 1: trendet

Stilistikë e teksteve (në një përmbledhje të parë) gjithashtu ka ndryshuar. Në vitet e para të ekzistencës së Habr, për shembull, u rrit pjesa e kodit dhe numrave në tekste:

Si kam analizuar Habr, pjesa 1: trendet

Pas tahë në përgjithësi dinamiken e sitit, vendosa të mat si ka ndryshuar popullariteti i temave të ndryshme. Temat mund të dallohen automatikisht nga tekstet, por për fillim nuk është e nevojshme të shpikim biçikletën, por të përdorim etiketat e gatshme që janë vendosur nga autorët e secilës artikull. Katër trende tipike i kam nxjerrë në grafik. Tema "Google" fillimisht dominonte (ndoshta kryesisht në lidhje me optimizimin për motorët e kërkimit), por me kalimin e viteve humbiste peshë. Javascript ka qenë një temë e popullarizuar dhe vazhdon të jetë gradualisht e tillë, ndërsa mësimi i makinerisë filloi të fitojë shumë popullaritet vetëm në vitet e fundit. Linux ka mbetur gjithashtu aktual gjatë gjithë një dekade.

Si kam analizuar Habr, pjesa 1: trendet

Sigurisht, më interesoi të di se cilat tema tërheqin më shumë aktivitet lexuesish. Kam llogaritur numrin median të shikimeve, votave dhe komenteve në çdo temë. Ja çfarë doli:

  • Tema mĂ« tĂ« shikuarat: arduino, dizajn web, zhvillim web, digest, lidhje, css, html, html5, nginx, algoritme.
  • Tema mĂ« "tĂ« pĂ«lqyera": vk.com, humor, jquery, opera, c, html, zhvillim web, html5, css, dizajn web.
  • Tema mĂ« tĂ« diskutuara: opera, skype, freelancing, vk.com, ubuntu, punĂ«, nokia, nginx, arduino, firefox.

Po, ndërsa po krahasoj temat, mund të bëj një renditje të tyre sipas frekuencës (dhe të shqyrtoj rezultatet me një artikull të ngjashëm nga viti 2013).

  • GjatĂ« gjithĂ« viteve tĂ« ekzistencĂ«s sĂ« Habrit, etiketat mĂ« tĂ« njohura (nĂ« renditje tĂ« rĂ«nies) ishin google, android, javascript, microsoft, linux, php, apple, java, python, programim, startup, zhvillim, ios, startup, rrjetet sociale.
  • NĂ« vitin 2017, mĂ« tĂ« njohurat ishin javascript, python, java, android, zhvillim, linux, c++, programim, php, c#, ios, mĂ«simi i makinerisĂ«, siguria informative, microsoft, react.

Kur krahasojmë këto renditje, mund të vëmë re, për shembull, shëtitjen triumfuese të Python-it dhe zhdukjen e php-së, ose "perëndimin" e tematikës së startup-eve dhe ngjitjen e mësimit të makinerisë.

Jo nuk janĂ« tĂ« gjitha etiketat nĂ« Habr qĂ« kanĂ« njĂ« temĂ« kaq tĂ« dukshme. Ja, pĂ«r shembull, njĂ« dhjetĂ«she etiketash qĂ« janĂ« takuar vetĂ«m njĂ« herĂ«, por mĂ« duken tĂ« kĂ«ndshme. Pra: "ideja si motor i progresit", "ngarkimi nga imazhi i disketĂ«s", "shteti Iowa", "dramaturgjia", "superalesha", "motori me avull", "çfarĂ« tĂ« bĂ«j tĂ« shtunĂ«n", "kam njĂ« dhelprim nĂ« grirĂ«s", "dhe doli si gjithmonĂ«", "nuk arrita tĂ« shpik etiketa qesharake". PĂ«r tĂ« pĂ«rcaktuar temĂ«n e artikujve tĂ« tillĂ«, etiketat nuk janĂ« tĂ« mjaftueshme — do tĂ« duhet tĂ« kryejmĂ« modelimin tematik mbi tekstet e artikujve.

NjĂ« analizĂ« mĂ« tĂ« detajuar tĂ« pĂ«rmbajtjes sĂ« artikujve do tĂ« ketĂ« nĂ« postimin tjetĂ«r. SĂ« pari, planifikoj tĂ« ndĂ«rtoj njĂ« model qĂ« parashikon numrin e shikimeve tĂ« artikullit nĂ« varĂ«si tĂ« pĂ«rmbajtjes sĂ« tij. SĂ« dyti, do tĂ« doja tĂ« mĂ«soja njĂ« rrjet nervor tĂ« gjeneronte tekste nĂ« tĂ« njĂ«jtĂ«n stilistika si autorĂ«t e Habr. Prandaj, abonohuni 🙂

P.S. Ja edhe e përgatitur dataset.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster