Kui olin uue aasta Olivier salati Àra söönud, polnud mul midagi teha ja otsustasin alla laadida kÔik Habr-Habra artiklid (ja sarnased platvormid) ning uurida neid.
Tulemusena sain kokku mitmeid huvitavaid teemasid. Esimene neist on artikkelformaatide ja -teemade areng 12 aasta jooksul alates saidi asutamisest. NĂ€iteks on mĂ”nede teemade dĂŒnaamika ĂŒsna rÀÀgib. JĂ€tkub allpool.

Parsimise protsess
Kuna Habr on pidanud lĂ€bi vaatama kĂ”ik oma artiklid ja eraldama neilt metaandmed (nt kuupĂ€evad). Ălevaade oli lihtne, kuna kĂ”igi artiklite lingid jĂ€rgivad struktuuri "habrahabr.ru/post/337722/", kusjuures numbrid on rangelt jĂ€rjestatud. Teades, et viimasel postitusel on number veidi vĂ€hem kui 350 tuhat, kĂŒkitasin lihtsalt kĂ”ik vĂ”imalikud dokumentide id-d tsĂŒkliga (Python'i kood):
import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
docs = p.map(download_document, np.arange(350000))Funktsioon download_document ĂŒritab laadida lehe vastava id-ga ja pĂŒĂŒab HTML struktuurist vĂ€ljatĂ”mmata sisulist teavet.
import requests
from bs4 import BeautifulSoup
def download_document(pid):
""" Laadi alla ja töötle Habr dokumenti ja selle kommentaare """
# dokumendi vÀlja laadimine
r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
# dokumendi parsimine
soup = BeautifulSoup(r.text, 'html5lib') # html.parser asemel
doc = {}
doc['id'] = pid
if not soup.find("span", {"class": "post__title-text"}):
# selliseid juhtumeid juhtub, kui artikkel ei eksisteeri vÔi on kustutatud
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
# loo teised vÀljad: hubid, sildid, vaated, kommentaarid, hÀÀled jne.
# ...
# tulemuse salvestamine eraldi failina
fname = r'files/' + str(pid) + '.pkl'
with open(fname, 'wb') as f:
pickle.dump(doc, f)Parsimise protsessi kÀigus avastasin mitu uut hetke.
Esiteks öeldakse, et protsesside loomine, mis ĂŒletavad protsessori tuumade arvu, on kasutu. Kuid minu puhul selgus, et piirav ressurss on mitte protsessor, vaid vĂ”rk, ja 100 protsessi töötavad kiiremini kui 4 vĂ”i nĂ€iteks 20.
Teiseks, mĂ”nes postituses esines kombinatsioone erimĂ€rkidest â nĂ€iteks eufemisme nagu "%&#@". Selgus, et html.parser, mida ma alguses kasutasin, reageerib kombinatsioonile &# valusalt, pidades seda html-olendi alguseks. Olin juba valmis musta maagia tegemiseks, kuid foorumis öeldi, et lihtsalt parserit vahetad.
Kolmandaks, Ă”nnestus mul eksportida kĂ”ik postitused, vĂ€lja arvatud kolm. Dokumendid numbritega 65927, 162075 ja 275987 kustutas mu viirusetĂ”rje kohe. Need artiklid kĂ€sitlevad vastavalt JavaScripti ahelat, mis laadib alla pahavara PDF-faili, SMS-i vĂ€ljapressijat brauseri pluginate komplektina ning veebisaiti CrashSafari.com, mis viib iPhone'id taaskĂ€ivituma. Veel ĂŒks artikkel, postitus 338586, milles rÀÀgitakse loomaĂ€ri veebisaidil kasutatavatest skriptidest, mis kasutavad kasutaja protsessorit krĂŒptovaluuta kaevandamiseks, tuvastas viirusetĂ”rje hiljem sĂŒsteemi skaneerimise kĂ€igus. Seega vĂ”ib arvata, et viirusetĂ”rje töö oli tĂ€iesti adekvaatne.
"Elusaid" artikleid oli vaid pool potentsiaalsest maksimumist â 166307 tĂŒkki. ĂlejÀÀnud osas ĂŒtleb Habr variandid "leht on aegunud, eemaldatud vĂ”i ei eksisteerinud ĂŒldse". Nojah, igasuguseid asju juhtub.
Artiklite eksportimisele jĂ€rgnes tehniline töö: nĂ€iteks tuli avaldamise kuupĂ€evad muuta vormingust "'21. detsember 2006 kell 10:47" standardseks datetime, ja "12,8k" vaatamist - 12800-ks. Sellel etapil tuli ilmsiks veel mĂ”ned kummalisused. KĂ”ige naljakam on seotud hÀÀlte arvestamise ja andmetĂŒĂŒpidega: mĂ”nedes vanades postitustes toimus tĂ€isarvu ĂŒletĂ€itumine ja need said 65535 hĂ€elt.

Tulemuseks oli see, et artiklite (ilma piltideta) tekstid vĂ”tsid mul 1,5 gigabaiti, kommentaarid koos metaandmetega veel 3 ja umbes sada megabaiti â artiklite metaandmeid. Sellise koguse sai tĂ€iesti hoida töömĂ€lus, mis oli mulle meeldiv ĂŒllatus.
Alustasin artiklite analĂŒĂŒsi mitte tekstidest, vaid metaandmetest: kuupĂ€evadest, sildidest, hubidest, vaatamistest ja "meeldimistest". Selgus, et ka need vĂ”ivad palju rÀÀkida.
HabrHubi arengusuunad
Artikleid on veebisaidil avaldatud alates 2006. aastast; kĂ”ige aktiivsemalt 2008â2016.

Mida aktiivsemalt neid artikleid eri aegadel loeti, on keeruline hinnata. 2012. aasta ja nooremaid tekste kommenteeriti ja hinnati aktiivsemalt, kuid uuematel tekstidel on enam vaatamisi ja lisamisi jĂ€rjehoidjatesse. Need nĂ€itajad kĂ€itusid ĂŒhekordselt ĂŒhtmoodi (kaks korda langesid) ainult 2015. aastal. VĂ”ib-olla, seoses majanduslike ja poliitiliste kriisidega, pöördus lugejate tĂ€helepanu IT-blogidelt valusamate kĂŒsimuste poole.

Lisaks artiklitele kogusin ka nende kommentaare. Kommentaare oli kokku 6 miljonit, kuid 240 000 neist osutusid keelatud olevateks ("UFO tuli ja avaldas selle kirja siin"). Kommentaaride kasulik omadus on see, et neile on mĂ€rkitud aeg. Uurides kommentaaride aega, vĂ”ib umbkaudu mĂ”ista, millal ĂŒldse artikleid loetakse.
Selgus, et enamik artikleid kirjutatakse ja kommenteeritakse kuskil kella 10â20 vahel, st tĂŒĂŒpilise Moskva tööpĂ€eva jooksul. See vĂ”ib tĂ€hendada, et Habrit loetakse ametlikel eesmĂ€rkidel ja see on hea viis tööl prokrastineerimiseks. Muide, see pĂ€evane jaotus on pĂŒsiv alates Habri asutamisest kuni tĂ€naseni.

Siiski, peamine eelisema mĂ€rkmete ajast on mitte pĂ€evaaeg, vaid artikli "aktiivse elu" kestus. Arvutasin, kuidas on jaotatud aeg artikli avaldamisest tema kommentaarideni. Selgus, et praegu jĂ”uab keskmine kommentaar (roheline joon) umbes 20 tunni pĂ€rast, st esimese 24 tunni jooksul jÀÀb keskmiselt veidi ĂŒle poole kĂ”igist artikli kommentaaridest. Kahe pĂ€eva jooksul jĂ€etakse 75% kĂ”igist kommentaaridest. Samas loeti artikleid varem veelgi kiiremini â nĂ€iteks 2010. aastal jĂ”udis pool kommentaare juba esimestel 6 korral.

Minu jaoks oli ĂŒllatav, et kommentaarid on pikenetud: keskmine mĂ€rksĂ”nade arv kommentaaris on Habri eksisteerimise aja jooksul peaaegu kahekordistunud!

Lihtsam tagasiside kui kommentaarid on hÀÀled. Erinevalt paljusid teisi ressursse, saab Habris anda mitte ainult plusse, vaid ka miinuseid. Siiski, viimase vÔimaluse kasutamine pole nii sage: praegune mitte-meeldimise osakaal on umbes 15% kÔikidest antud hÀÀltest. Varem oli neid rohkem, kuid aja jooksul on lugejad muutunud kinderaks.

Aja jooksul on muutunud ka tekstid ise. NĂ€iteks tĂŒĂŒpiline teksti pikkus ei lakka pidevalt kasvamast alates saidi kĂ€ivitamisest, hoolimata kriisidest. Ăheksa aasta jooksul on tekstid muutunud peaaegu kĂŒmme korda pikemaks!

Tekstide stiil (esimeses lÀhenemises) on samuti muutunud. Habri esimesel toimeaastal, nÀiteks, tÔusis koodide ja numbrite osakaal tekstides:

MĂ”istes saidi ĂŒlddĂŒnaamikat, otsustasin mÔÔta, kuidas erinevate teemade populaarsus on muutunud. Teemasid saab tekstidest automaatselt vĂ€lja tuua, kuid alguses ei pea ratast uuesti leiutama, vaid vĂ”ib kasutada iga artikli autori mÀÀratud valmis silte. Neli tĂŒĂŒpilist trendi tĂ”in vĂ€lja graafikule. Teema âGoogleâ domineeris algselt (vĂ”imalik, et peamiselt SEO optimeerimise tĂ”ttu), kuid iga aastaga kaotas see kaalu. Javascript oli populaarne teema ja jĂ€tkab aeglaselt tĂ”usmist, samas kui masinĂ”pe hakkas viimastel aastatel kiiresti populaarsust koguma. Linux jÀÀb aga kogu kĂŒmnendi jooksul sama aktuaalseks.

Loomulikult tekkis mul huvi, millised teemad köidavad rohkem lugejate tÀhelepanu. Otsustasin lugeda vÀlja iga teema mediaanvaatamiste, hÀÀlte ja kommentaaride arvu. Siin on tulemused:
- KĂ”ige rohkem vaadatud teemad: arduino, veebidisain, veebiarendus, ĂŒlevaade, lingid, css, html, html5, nginx, algoritmid.
- KĂ”ige âmeelditudâ teemad: vk, huumor, jquery, opera, c, html, veebiarendus, html5, css, veebidisain.
- KÔige arutatavad teemad: opera, skype, vabakutseline töö, vk, ubuntu, töö, nokia, nginx, arduino, firefox.
Ăksikasjalikult, kuna ma vĂ”rdlen teemasid, vĂ”ib nende reitingu sageduse jĂ€rgi luua (ja vĂ”rrelda tulemusi ).
- Kogu Habr'i eksisteerimise jooksul on kÔige populaarsemateks siltideks (jÀrjestuses languse jÀrgi) saanud google, android, javascript, microsoft, linux, php, apple, java, python, programmeerimine, startup'id, arendus, ios, startup, sotsiaalsed vÔrgustikud.
- Aastal 2017 olid kÔige populaarsemad javascript, python, java, android, arendus, linux, c++, programmeerimine, php, c#, ios, masinÔpe, teabelekke kaitse, microsoft, react.
Nende reitingute vĂ”rreldes vĂ”ib tĂ€helepanu pöörata nĂ€iteks Python'i vĂ”idukĂ€igule ja php kadumisele, vĂ”i âstartupiâ teema loojumise ja masinĂ”ppe tĂ”usule.
Kaugel ei ole kĂ”ik Habris olevad sildid nii ilmselt seotud oma teemaga. NĂ€iteks siin on kĂŒmme sildid, mis esinesid vaid ĂŒks kord, kuid tundusid mulle lihtsalt naljakad. Nii et: "idee on edusamme liigutav jĂ”ud", "bootimine ketta kujutiselt", "Iowa osariik", "dramatiseerimine", "superaljasha", "aurumootor", "mida teha laupĂ€eval", "mul on rebane lihaveskis", "aga lĂ€ks ikka nagu alati", "naljakaid silte vĂ€lja mĂ”elda ei Ă”nnestunud". Selliste artiklite temaatika mÀÀramiseks ei piisa ainult siltidest â tuleb teostada temaatiline modelleerimine artiklite tekstide pĂ”hjal.
Ăksikasjalikum analĂŒĂŒs artiklite sisust on jĂ€rgmises postituses. Esiteks kavatsen koostada mudeli, mis prognoosib artikli vaatamiste arvu selle sisu pĂ”hjal. Teiseks tahan Ă”petada neuralvĂ”rku genereerima tekste samas stiilis nagu Habr autorid. Nii et jĂ€lgige meid đ
P.S. Siin on jahvatatud .
Allikas: habr.com
