Nola analizatu nuen Habr, 1. zatia: joerak

Urteberriko Olivier amaitu zenean, ez nuen ezer egitekorik, eta Habrahabr-eko artikulu guztiak (eta erlazionatutako plataformak) ordenagailura deskargatzea eta arakatzea erabaki nuen.

Hainbat istorio interesgarri zeuden. Horietako lehena, webguneak iraun duen 12 urteetan artikuluen formatu eta gaien garapena da. Adibidez, gai batzuen dinamika nahiko adierazgarria da. Jarraipena - ebakiaren azpian.

Nola analizatu nuen Habr, 1. zatia: joerak

Analisi prozesua

Habr nola garatu zen ulertzeko, bere artikulu guztiak aztertu eta haietatik metainformazioa atera behar zen (adibidez, datak). Saihesbidea erraza izan zen, artikulu guztietarako estekek "habrahabr.ru/post/337722/" itxura dutelako eta zenbakiak ordena zorrotzean ematen dira. Azken mezuak 350 mila baino apur bat gutxiagoko zenbakia duela jakinda, dokumentuaren ID posible guztiak begizta batean aztertu ditut (Python kodea):

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

Funtzioa download_document orrialdea dagokion idarekin kargatzen saiatzen da eta html egituratik informazio esanguratsua ateratzen saiatzen da.

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)

Analisi prozesuan, hainbat gauza berri aurkitu ditut.

Lehenik eta behin, prozesadorean nukleoak baino prozesu gehiago sortzea alferrikakoa dela diote. Baina nire kasuan, baliabide mugatzailea ez dela prozesadorea, sarea baizik, eta 100 prozesuk 4 edo, demagun, 20 baino azkarrago funtzionatzen dute.

Bigarrenik, mezu batzuetan karaktere berezien konbinazioak zeuden, adibidez, "%&#@" bezalako eufemismoak. Hori atera zen html.parser, lehen erabili nuena, konbinazioaren aurrean erreakzionatzen du &# minez, html entitatearen hasieratzat hartuta. Magia beltza egingo nuen jada, baina foroak iradoki zuen analizatzailea alda dezakezula.

Hirugarrenik, argitalpen guztiak deskargatzea lortu nuen, hiru izan ezik. 65927, 162075 eta 275987 zenbakidun dokumentuak berehala ezabatu ditu nire antibirusak. Hauek, hurrenez hurren, pdf gaizto bat deskargatzen duen javascript kate bati buruzko artikuluak dira, SMS ransomwarea arakatzaile-plugin multzo baten moduan eta iPhoneak berrabiararaztera bidaltzen dituen CrashSafari.com gunea. Antibirusak beste artikulu bat aurkitu zuen geroago, sistemaren miaketa batean: 338586 argitaratu erabiltzailearen prozesadorea kriptografia-moneta meatzeko erabiltzen duten maskota-dendako webguneko scriptei buruz. Beraz, antibirusaren lana nahiko egokia dela uste dugu.

"Zuzeneko" artikuluak gehienezko potentzialaren erdia baino ez ziren izan - 166307 pieza. Gainerakoei buruz, Habrrek aukerak ematen ditu "orria zaharkituta dago, ezabatu egin da edo ez zegoen batere". Tira, edozer gerta daiteke.

Artikuluak igotzean lan teknikoa egin zen: adibidez, argitalpen datak "21ko abenduaren 2006eko 10:47etan" formatura estandarrera bihurtu behar ziren. datetime, eta "12,8k" ikustaldiak - 12800. urtean. Etapa honetan, gertakari batzuk gehiago atera ziren. Dibertigarrienak boto zenbaketarekin eta datu motekin zerikusia du: mezu zahar batzuek int gainezka zuten eta 65535 boto jaso zituzten bakoitzak.

Nola analizatu nuen Habr, 1. zatia: joerak

Ondorioz, artikuluen testuek (argazkirik gabe) 1.5 gigabyte hartu ninduten, metainformaziodun iruzkinek -beste 3, eta ehun megabyte inguru- artikuluei buruzko metainformazioa. Hau guztiz RAM-n gorde daiteke, eta hori sorpresa atsegina izan zen niretzat.

Artikuluen analisia testuetatik ez, metainformaziotik hasi nintzen: datak, etiketak, hubak, bistak eta atseginak. Asko esan zezakeela ikusi zen.

Habrahabr Garapen Joerak

2006tik argitaratu dira webguneko artikuluak; intentsiboena - 2008-2016an.

Nola analizatu nuen Habr, 1. zatia: joerak

Artikulu hauek garai ezberdinetan zenbaterainoko modu aktiboan irakurtzen ziren ez da hain erraza baloratzea. 2012ko eta gazteagoko testuek iruzkin eta balorazio gehiago jaso dituzte, baina testu berriek ikuspegi eta laster-mark gehiago dituzte. Neurri hauek modu berean jokatu zuten (erdira murriztuta) behin bakarrik, 2015ean. Beharbada, krisi ekonomiko eta politikoaren egoeran, irakurleen arreta informatikako blogetatik gai mingarrietara pasa da.

Nola analizatu nuen Habr, 1. zatia: joerak

Artikuluez gain, iruzkin gehiago deskargatu nituen. 6 milioi iruzkin izan ziren, hala ere, horietako 240 mila debekatu zituzten ("OZNI bat hegan sartu zen eta inskripzio hau hemen argitaratu zuen"). Iruzkinen propietate erabilgarria denbora-zigilua dutela da. Iruzkinen denbora aztertuz, gutxi gorabehera, artikuluak noiz irakurtzen diren uler dezakezu.

Agertu zen artikulu gehienak 10:20etatik XNUMX:XNUMXetara nonbait idatzita eta iruzkintzen direla, hau da. Moskuko ohiko lan egun batean. Horrek esan nahi du Habr helburu profesionaletarako irakurtzen dela, eta hau lanean atzeratzeko modu ona dela. Bide batez, egunaren ordu banaketa hori egonkorra da Habr-en sorreratik gaur egunera arte.

Nola analizatu nuen Habr, 1. zatia: joerak

Hala ere, iruzkinen denbora-zigiluaren abantaila nagusia ez da eguneko ordua, artikuluaren "bizitza aktiboaren" iraupena baizik. Artikulua argitaratzen denetik iruzkinera arte nola banatzen den denbora kalkulatu dut. Gertatu zen orain medianako iruzkina (lerro berdea) 20 ordu ingurura datorrela, hau da. argitaratu eta hurrengo egunean, batez beste, artikuluari buruzko iruzkin guztien erdia baino pixka bat gehiago geratzen da. Eta bi egunetan iruzkin guztien %75 uzten dute. Aldi berean, lehenagoko artikuluak are azkarrago irakurtzen ziren - adibidez, 2010ean, iruzkinen erdia lehen 6 orduetan iritsi zen.

Nola analizatu nuen Habr, 1. zatia: joerak

Harrigarria iruditu zait iruzkinak luzatu izana: iruzkin bateko batez besteko karaktere kopurua ia bikoiztu egin da Habr-en bizitzan zehar!

Nola analizatu nuen Habr, 1. zatia: joerak

Iruzkinak baino feedback errazagoak botoak dira. Beste baliabide askotan ez bezala, Habré-n plusak ez ezik, minak ere jar ditzakezu. Dena den, irakurleek ez dute hainbestetan erabiltzen azken aukera: gaur egungo ez-gogoen kuota emandako boto guztien %15 ingurukoa da. Gehiago egoten zen, baina denborarekin irakurleak jatorrago egin dira.

Nola analizatu nuen Habr, 1. zatia: joerak

Testuak beraiek aldatu egin dira denborarekin. Esaterako, testuaren luzera tipikoa ez da etengabe hazteari gunearen hasieratik bertatik, krisiak gorabehera. Hamarkada batean, testuak ia hamar aldiz luzeagoak izan dira!

Nola analizatu nuen Habr, 1. zatia: joerak

Testuen estiloa (lehen hurbilketa batera) ere aldatu zen. Habr-en existentziaren lehen urteetan, adibidez, testuetan kode eta zenbakien kuota handitu egin zen:

Nola analizatu nuen Habr, 1. zatia: joerak

Gunearen dinamika orokorra ulertu ondoren, hainbat gairen ospea nola aldatu zen neurtzea erabaki nuen. Gaiak automatikoki hauta daitezke testuetatik, baina hasteko, ezin duzu gurpila berrasmatu, baizik eta artikulu bakoitzaren egileek jarritako prest dauden etiketak erabili. Lau joera tipiko marraztu ditut taulan. "Google" gaia nagusitu zen hasieran (batez ere SEOgatik agian), baina urteekin pisua galtzen joan da. Javascript gai ezaguna izan da eta poliki-poliki hazten jarraitzen du, baina ikaskuntza automatikoa ospea azkar irabazten hasi da azken urteotan bakarrik. Linuxek, berriz, berdin mantendu du hamarkada osoan zehar.

Nola analizatu nuen Habr, 1. zatia: joerak

Jakina, irakurle jarduera gehiago zein gaik erakartzen duten jakiteko interesa piztu zitzaidan. Gai bakoitzeko ikustaldi, boto eta iruzkinen mediana kalkulatu dut. Hona hemen zer gertatu den:

  • Gehien ikusitako gaiak: arduino, web diseinua, web garapena, laburpena, estekak, css, html, html5, nginx, algoritmoak.
  • Gehien gustatu zaizkigun gaiak: vkontakte, umorea, jquery, opera, c, html, web garapena, html5, css, web diseinua.
  • Gehien eztabaidatutako gaiak: opera, skype, freelance, vkontakte, ubuntu, lana, nokia, nginx, arduino, firefox.

Bide batez, gaiak alderatzen ari naizenez, maiztasunaren arabera sailkatu ditzakezu (eta emaitzak alderatu 2013ko antzeko artikulua).

  • Habr-ek iraun duen urte guztietan, etiketa ezagunenak (beheranzko ordenan) google, android, javascript, microsoft, linux, php, apple, java, python, programazioa, startups, garapena, ios, startup, sare sozialak dira.
  • 2017an, ezagunenak javascript, python, java, android, garapena, linux, c++, programazioa, php, c#, ios, ikaskuntza automatikoa, informazioaren segurtasuna, microsoft, erreakzionatu ziren.

Balorazio hauek alderatzean, kasu egin daiteke, adibidez, Pythonen martxa garaileari eta php-ren desagerpenari, edo startup-en gaien "ilunabarrari" eta ikaskuntza automatikoaren gorakadari.

Habré-ko etiketa guztiek ez dute hain kolore tematiko nabarmenik. Adibidez, hona hemen dozena bat etiketa behin bakarrik elkartu zirenak, baina barregarriak iruditu zitzaizkidan. Beraz: "ideia aurrerapenaren eragilea da", "diskete baten irudi batetik abiarazte", "Iowa State", "drama", "superalesh", "lurrun-makina", "larunbatean egin beharreko gauzak", "badut azeri bat haragi birringailuan", "beti bezala atera zen", "ezin genuen etiketa dibertigarririk asmatu". Artikulu horien gaia zehazteko, etiketak ez dira nahikoa - artikuluen testuen gaikako modelizazioa egin beharko duzu.

Artikuluen edukiaren azterketa zehatzagoa hurrengo postan izango da. Lehenik eta behin, artikulu baten edukiaren arabera orrialde-ikustaldi kopurua aurreikusten duen eredu bat eraikiko dut. Bigarrenik, sare neuronalari Habr-en egileen estilo bereko testuak sortzen irakatsi nahi diot. Beraz, harpidetu 🙂

PS Eta hona hemen bip-a datu multzoa.

Iturria: www.habr.com

Gehitu iruzkin berria