Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Nigbati Olivier Ọdun Tuntun ti pari, Emi ko ni nkankan lati ṣe, ati pe Mo pinnu lati ṣe igbasilẹ gbogbo awọn nkan lati Habrahabr (ati awọn iru ẹrọ ti o jọmọ) si kọnputa mi ati ṣe iwadii diẹ.

O wa jade lati jẹ awọn itan ti o nifẹ pupọ. Ni igba akọkọ ti wọn ni idagbasoke ti ọna kika ati awọn koko-ọrọ ti awọn nkan lori awọn ọdun 12 ti aye ti aaye naa. Fun apẹẹrẹ, awọn agbara ti diẹ ninu awọn koko-ọrọ jẹ itọkasi pupọ. Tesiwaju labẹ gige.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Ilana iṣiro

Lati loye bii Habr ṣe dagbasoke, o jẹ dandan lati lọ nipasẹ gbogbo awọn nkan rẹ ki o jade alaye-meta lati ọdọ wọn (fun apẹẹrẹ, awọn ọjọ). Fori jẹ rọrun, nitori awọn ọna asopọ si gbogbo awọn nkan dabi “habrahabr.ru/post/337722/”, ati awọn nọmba ti wa ni pato muna ni ibere. Ni mimọ pe ifiweranṣẹ ti o kẹhin ni nọmba diẹ kere ju 350 ẹgbẹrun, Mo kan lọ nipasẹ gbogbo awọn ids iwe ti o ṣeeṣe ni lupu kan (koodu Python):

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

Išẹ download_document gbiyanju lati kojọpọ oju-iwe naa pẹlu id ti o baamu ati pe o gbiyanju lati jade alaye ti o nilari lati eto 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)

Lakoko ilana itupalẹ Mo ṣe awari ọpọlọpọ awọn nkan tuntun.

Ni akọkọ, wọn sọ pe ṣiṣẹda awọn ilana diẹ sii ju awọn ohun kohun ninu ero isise ko wulo. Ṣugbọn ninu ọran mi o wa ni pe awọn orisun aropin kii ṣe ero isise, ṣugbọn nẹtiwọọki, ati awọn ilana 100 ṣiṣẹ ni iyara ju 4 tabi, sọ, 20.

Ẹlẹẹkeji, ni diẹ ninu awọn ifiweranṣẹ nibẹ wà awọn akojọpọ ti pataki ohun kikọ - fun apẹẹrẹ, euphemisms bi "% & # @". O wa jade pe html.parser, eyi ti mo ti lo akọkọ, reacts si apapo &# irora, considering o ni ibẹrẹ ti awọn html nkankan. Mo ti wà nipa lati ṣe dudu idan, ṣugbọn awọn forum daba wipe mo ti le nìkan yi awọn parser.

Ni ẹkẹta, Mo ni anfani lati ṣe igbasilẹ gbogbo rẹ ayafi awọn atẹjade mẹta. Awọn iwe aṣẹ ti o jẹ nọmba 65927, 162075, ati 275987 ti paarẹ lẹsẹkẹsẹ nipasẹ ọlọjẹ mi. Iwọnyi jẹ awọn nkan lẹsẹsẹ nipa pq ti awọn iwe afọwọkọ Java ti o ṣe igbasilẹ pdf irira kan, ransomware SMS kan ni irisi eto plug-ins fun awọn aṣawakiri, ati aaye CrashSafari.com, eyiti o firanṣẹ awọn iPhones lati atunbere. Antivirus ṣe awari nkan miiran nigbamii, lakoko ọlọjẹ eto kan: firanṣẹ 338586 nipa awọn iwe afọwọkọ lori oju opo wẹẹbu itaja ọsin ti o lo ero isise olumulo si cryptocurrency mi. Nitorinaa a le ro pe iṣẹ ti antivirus jẹ deede.

Nibẹ wà nikan idaji ti o pọju o pọju ti awọn "ifiwe" ìwé - 166307 ege. Nipa iyoku, Habr fun awọn aṣayan “oju-iwe naa ko ti pẹ, paarẹ tabi ko si rara.” O dara, ohunkohun le ṣẹlẹ.

Ikojọpọ awọn nkan ni atẹle nipasẹ iṣẹ imọ-ẹrọ: fun apẹẹrẹ, awọn ọjọ titẹjade ni lati yipada lati ọna kika “‘December 21, 2006 ni 10:47” si ọkan boṣewa. datetime, ati awọn iwo "12,8k" - ni 12800. Ni ipele yii, ọpọlọpọ awọn iṣẹlẹ diẹ sii farahan. Awọn funniest ọkan ti wa ni jẹmọ si Idibo kika ati data orisi: diẹ ninu awọn atijọ posts ní ohun int aponsedanu, nwọn si gba 65535 votes.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Bi abajade, awọn ọrọ ti awọn nkan (laisi awọn aworan) mu mi 1.5 gigabytes, awọn asọye pẹlu alaye meta - 3 miiran, ati nipa ọgọrun megabyte - alaye meta nipa awọn nkan naa. Eleyi le wa ni pa patapata ni Ramu, eyi ti o wà kan dídùn iyalenu fun mi.

Mo bẹrẹ itupalẹ awọn nkan kii ṣe pẹlu awọn ọrọ funrararẹ, ṣugbọn pẹlu alaye meta: awọn ọjọ, awọn afi, awọn ibudo, awọn iwo ati “awọn ayanfẹ”. Ó wá ṣẹlẹ̀ pé òun náà lè sọ púpọ̀.

Habrahabr idagbasoke awọn aṣa

Awọn nkan lori aaye naa ni a ti tẹjade lati ọdun 2006; julọ ​​intensively ni 2008-2016.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Bawo ni a ṣe ka awọn nkan wọnyi ni agbara ni awọn akoko oriṣiriṣi ko rọrun pupọ lati ṣe ayẹwo. Awọn ọrọ lati 2012 ati kékeré gba awọn asọye ti nṣiṣe lọwọ diẹ sii ati awọn idiyele, ṣugbọn awọn ọrọ tuntun ni awọn iwo ati awọn bukumaaki diẹ sii. Awọn metiriki wọnyi huwa ni ọna kanna (wọn ṣubu nipasẹ idaji) ni ẹẹkan, ni ọdun 2015. Boya, ni ipo ti idaamu aje ati iṣelu, akiyesi awọn oluka ti yipada lati awọn bulọọgi IT si awọn oran irora diẹ sii.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Ni afikun si awọn nkan funrararẹ, Mo tun ṣe igbasilẹ awọn asọye si wọn. Awọn asọye miliọnu 6 wa, sibẹsibẹ, 240 ẹgbẹrun ninu wọn ni idinamọ (“UFO kan fò o si tẹjade akọle yii nibi”). Ẹya ti o wulo ti awọn asọye ni pe wọn ni ontẹ akoko kan. Nipa kikọ akoko ti awọn asọye, o le loye ni aijọju nigbati a ka awọn nkan rara.

O wa ni jade wipe julọ ti awọn ìwé ti wa ni kikọ ati ki o commented ibikan lati 10 to 20 aago, i.e. ni ọjọ iṣẹ aṣoju Moscow kan. Eyi le tumọ si pe a ka Habr fun awọn idi alamọdaju, ati pe o jẹ ọna ti o dara lati fa fifalẹ ni iṣẹ. Nipa ọna, pinpin akoko ti ọjọ yii jẹ iduroṣinṣin lati ipilẹ ti Habr titi di oni.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Sibẹsibẹ, anfani akọkọ ti akoko asọye kii ṣe akoko ti ọjọ, ṣugbọn “igbesi aye ti nṣiṣe lọwọ” ti nkan naa. Mo ṣe iṣiro bawo ni a ṣe pin akoko naa lati titẹjade nkan kan si asọye rẹ. O wa jade pe ni bayi asọye agbedemeji (laini alawọ ewe) wa ni bii awọn wakati 20, i.e. Ni akọkọ ọjọ lẹhin ti atejade, ni apapọ, die-die siwaju sii ju idaji ti gbogbo comments lori ohun article ti wa ni osi. Ati laarin ọjọ meji, 75% ti gbogbo awọn asọye ti wa ni osi. Pẹlupẹlu, awọn nkan iṣaaju ni a ka paapaa yiyara - fun apẹẹrẹ, ni ọdun 2010, idaji awọn asọye wa laarin awọn wakati 6 akọkọ.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

O jẹ iyalẹnu fun mi pe awọn asọye ti gun: apapọ nọmba awọn ohun kikọ ninu asọye ti fẹrẹ ilọpo meji lakoko aye ti Habr!

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Esi ti o rọrun ju awọn asọye jẹ awọn ibo. Ko dabi ọpọlọpọ awọn orisun miiran, lori Habré o le fi kii ṣe awọn anfani nikan, ṣugbọn tun konsi. Sibẹsibẹ, awọn oluka ko lo aye igbeyin nigbagbogbo: ipin lọwọlọwọ ti ikorira jẹ nipa 15% ti gbogbo awọn ibo ti a sọ. Nibẹ ni o wa siwaju sii, ṣugbọn lori akoko awọn onkawe si di alaanu.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Awọn ọrọ tikararẹ yipada ni akoko pupọ. Fun apẹẹrẹ, aṣoju gigun ti ọrọ ko dẹkun lati dagba ni imurasilẹ lati igba ifilọlẹ aaye naa, laibikita awọn rogbodiyan. Láàárín ọdún mẹ́wàá sẹ́yìn, ọ̀pọ̀ ọ̀rọ̀ ti fẹ́rẹ̀ẹ́ tó ìlọ́po mẹ́wàá tó gùn jù!

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Ara ti awọn ọrọ (si isunmọ akọkọ) tun yipada. Lakoko awọn ọdun akọkọ ti aye Habr, fun apẹẹrẹ, ipin koodu ati awọn nọmba ninu awọn ọrọ pọ si:

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Lẹhin ti o loye awọn agbara gbogbogbo ti aaye naa, Mo pinnu lati wiwọn bii olokiki ti awọn akọle oriṣiriṣi ṣe yipada. Awọn koko-ọrọ le ṣe idanimọ lati awọn ọrọ laifọwọyi, ṣugbọn lati bẹrẹ pẹlu, o ko le tun kẹkẹ pada, ṣugbọn lo awọn ami ti a ti ṣetan ti a ṣafikun nipasẹ awọn onkọwe ti nkan kọọkan. Mo ti ṣe afihan awọn aṣa aṣoju mẹrin lori chart. Akori “Google” ni akọkọ jẹ gaba lori (boya ni pataki nitori iṣapeye SEO), ṣugbọn iwuwo padanu ni gbogbo ọdun. Javascript ti jẹ koko-ọrọ olokiki ati tẹsiwaju lati jẹ, ṣugbọn ẹkọ ẹrọ ti bẹrẹ lati gba olokiki ni iyara ni awọn ọdun aipẹ. Lainos maa wa ni ibamu deede jakejado ọdun mẹwa.

Bawo ni MO ṣe itupalẹ Habr, apakan 1: awọn aṣa

Nitoribẹẹ, Mo nifẹ ninu eyiti awọn akọle ṣe ifamọra iṣẹ ṣiṣe awọn oluka diẹ sii. Mo ṣe iṣiro nọmba agbedemeji ti awọn iwo, awọn ibo, ati awọn asọye fun koko kọọkan. Ohun tó ṣẹlẹ̀ nìyí:

  • Awọn koko-ọrọ ti a wo pupọ julọ: arduino, apẹrẹ wẹẹbu, idagbasoke wẹẹbu, daijesti, awọn ọna asopọ, css, html, html5, nginx, algorithms.
  • Awọn koko-ọrọ “fẹran” julọ: VKontakte, arin takiti, jquery, opera, c, html, idagbasoke wẹẹbu, html5, css, apẹrẹ wẹẹbu.
  • Awọn koko ọrọ ti a jiroro julọ: opera, skype, freelancing, VKontakte, ubuntu, work, nokia, nginx, arduino, firefox.

Nipa ọna, niwọn igba ti Mo n ṣe afiwe awọn akọle, Mo le ṣe ipo wọn nipasẹ igbohunsafẹfẹ (ki o ṣe afiwe awọn abajade pẹlu nkan ti o jọra lati ọdun 2013).

  • Ni awọn ọdun ti aye Habr, awọn aami olokiki julọ (ni ọna ti o sọkalẹ) jẹ google, Android, JavaScript, microsoft, Linux, php, apple, java, Python, siseto, awọn ibẹrẹ, idagbasoke, ios, ibẹrẹ, awọn nẹtiwọọki awujọ.
  • Ni ọdun 2017, olokiki julọ ni JavaScript, Python, Java, Android, idagbasoke, linux, c++, siseto, php, c#, ios, ẹkọ ẹrọ, aabo alaye, microsoft, fesi

Nigbati o ba ṣe afiwe awọn iwontun-wonsi wọnyi, o le san akiyesi, fun apẹẹrẹ, si irin-ajo iṣẹgun ti Python ati iparun ti php, tabi si “idinku” ti akori ibẹrẹ ati igbega ti ẹkọ ẹrọ.

Kii ṣe gbogbo awọn afi lori Habré ni iru awọ akori ti o han gbangba. Nibi, fun apẹẹrẹ, awọn aami mejila mejila ti o han ni ẹẹkan, ṣugbọn o kan dabi ẹnipe o dun si mi. Nitorinaa: “imọran jẹ ẹrọ ilọsiwaju”, “gbigbe lati aworan disk floppy kan”, “ipinlẹ Iowa”, “ere”, “superalesha”, “engine steam”, “kini lati ṣe ni ọjọ Satidee”, “Mo ní kọ̀lọ̀kọ̀lọ̀ kan nínú ọlọ́rọ̀”, “ó sì dà bí ìgbà gbogbo,” “a kò lè ṣe àwọn àmì ẹ̀yẹ.” Lati pinnu koko-ọrọ ti iru awọn nkan bẹẹ, awọn afi ko to - iwọ yoo ni lati ṣe awoṣe awoṣe koko lori awọn ọrọ ti awọn nkan naa.

Itupalẹ alaye diẹ sii ti akoonu ti awọn nkan yoo wa ni ifiweranṣẹ atẹle. Ni akọkọ, Emi yoo kọ awoṣe kan ti o sọ asọtẹlẹ nọmba awọn iwo ti nkan kan yoo gba da lori akoonu rẹ. Ni ẹẹkeji, Emi yoo fẹ lati kọ nẹtiwọọki nkankikan lati ṣe agbekalẹ awọn ọrọ ni ara kanna bi awọn onkọwe ti Habr. Nitorina ṣe alabapin :)

PS Ati pe o wa, ti o gbasilẹ ipilẹ data.

orisun: www.habr.com

Fi ọrọìwòye kun