Ki jan mwen analize Habr, pati 1: tandans

Lè Olivier Nouvèl Ane a te fini, mwen pa t gen anyen pou m fè, epi mwen te deside telechaje tout atik ki soti nan Habrahabr (ak platfòm ki gen rapò) sou òdinatè mwen an epi fè kèk rechèch.

Li te tounen plizyè istwa enteresan. Premye a nan yo se devlopman nan fòma a ak sijè nan atik sou 12 ane yo nan egzistans sit la. Pou egzanp, dinamik yo nan kèk sijè yo byen indicative. Kontinye anba koupe a.

Ki jan mwen analize Habr, pati 1: tandans

Pwosesis analiz

Pou konprann ki jan Habr devlope, li te nesesè yo ale nan tout atik li yo ak ekstrè meta-enfòmasyon nan men yo (pa egzanp, dat). Bypass la te fasil, paske lyen ki mennen nan tout atik sanble "habrahabr.ru/post/337722/", ak nimewo yo espesifye entèdi nan lòd. Konnen ke dènye pòs la gen yon nimewo yon ti kras mwens pase 350 mil, mwen tou senpleman te ale nan tout idantite dokiman posib nan yon bouk (kòd Python):

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

Fonksyon download_document eseye chaje paj la ak idantite ki koresponn lan epi li eseye ekstrè enfòmasyon ki gen sans nan estrikti html la.

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)

Pandan pwosesis analiz la mwen dekouvri plizyè bagay nouvo.

Premyèman, yo di ke kreye plis pwosesis pase nwayo nan processeur a pa itil. Men, nan ka mwen an, li te tounen soti ke resous limite a se pa processeur a, men rezo a, ak 100 pwosesis travay pi vit pase 4 oswa, di, 20.

Dezyèmman, nan kèk pòs te gen konbinezon de karaktè espesyal - pou egzanp, efemism tankou "%&#@". Li te tounen soti sa html.parser, ki mwen te itilize an premye, reyaji nan konbinezon an &# douloure, konsidere li nan kòmansman an nan antite html la. Mwen te sou fè maji nwa, men fowòm nan sijere ke mwen te kapab tou senpleman chanje analizeur la.

Twazyèmman, mwen te kapab telechaje tout piblikasyon eksepte twa. Antivirus mwen an te efase dokiman ki gen nimewo 65927, 162075 ak 275987. Sa yo se atik respektivman sou yon chèn nan javascript ki telechaje yon pdf move, yon ransomware SMS nan fòm lan nan yon seri plug-ins pou navigatè, ak sit CrashSafari.com, ki voye iPhone yo rdemare. Antivirus la te dekouvri yon lòt atik pita, pandan yon eskanè sistèm: poste 338586 sou scripts sou sit entènèt yon magazen bèt kay ki sèvi ak processeur itilizatè a pou min cryptocurrency. Se konsa, nou ka konsidere travay la nan antivirus yo dwe byen adekwa.

Te gen sèlman mwatye nan maksimòm potansyèl de atik "viv" - 166307 moso. Konsènan rès la, Habr bay opsyon yo "paj la demode, yo te efase oswa pa t egziste ditou." Oke, anyen ka rive.

Téléchargement atik yo te swiv pa travay teknik: pa egzanp, dat piblikasyon yo te dwe konvèti nan fòma "'Desanm 21, 2006 a 10:47" nan yon sèl estanda. datetime, ak "12,8k" opinyon - nan 12800. Nan etap sa a, plizyè lòt ensidan parèt. Youn ki pi komik la gen rapò ak konte vòt ak kalite done: kèk pòs fin vye granmoun te gen yon debòde int, epi yo te resevwa 65535 vòt.

Ki jan mwen analize Habr, pati 1: tandans

Kòm yon rezilta, tèks yo nan atik yo (san foto) te pran m '1.5 gigabytes, kòmantè ak enfòmasyon meta - yon lòt 3, ak apeprè yon santèn megabyte - enfòmasyon meta sou atik yo. Sa a ka kenbe konplètman nan RAM, ki te yon sipriz bèl pou mwen.

Mwen te kòmanse analize atik pa ak tèks yo tèt yo, men ak enfòmasyon meta: dat, tags, sant, opinyon ak "renmen". Li te tounen soti ke li tou te kapab di anpil.

Tandans devlopman Habrahabr

Atik sou sit la te pibliye depi 2006; pi entansif nan 2008-2016.

Ki jan mwen analize Habr, pati 1: tandans

Ki jan aktivman atik sa yo te li nan diferan moman se pa tèlman fasil yo evalye. Tèks ki soti nan 2012 ak pi piti yo te resevwa kòmantè ak evalyasyon pi aktif, men tèks ki pi nouvo yo gen plis opinyon ak makè. Paramèt sa yo te konpòte menm jan an (yo te tonbe a mwatye) yon sèl fwa, nan 2015. Petèt, nan yon sitiyasyon nan kriz ekonomik ak politik, atansyon lektè yo te deplase soti nan IT blogs nan pwoblèm ki pi douloure.

Ki jan mwen analize Habr, pati 1: tandans

Anplis atik yo menm, mwen te telechaje kòmantè yo tou. Te gen 6 milyon kòmantè, sepandan, 240 mil nan yo te entèdi ("yon UFO te pran vòl epi pibliye inscription sa a isit la"). Yon karakteristik itil nan kòmantè se ke yo gen yon koupon pou tan. Lè w etidye tan kòmantè yo, ou ka apeprè konprann lè atik yo li ditou.

Li te tounen soti ke pi fò nan atik yo ekri ak kòmantè sou yon kote soti nan 10 a 20 è, i.e. nan yon jounen travay tipik nan Moskou. Sa a ka vle di ke Habr li pou rezon pwofesyonèl, e ke li se yon bon fason yo procrastinate nan travay. By wout la, distribisyon sa a nan tan nan jounen an te estab depi fondasyon an menm nan Habr jiska jodi a.

Ki jan mwen analize Habr, pati 1: tandans

Sepandan, benefis prensipal la nan yon timestamp kòmantè se pa lè a nan jounen an, men "lavi aktif" nan atik la. Mwen kalkile ki jan tan an te distribye soti nan piblikasyon an nan yon atik nan kòmantè li yo. Li te tounen soti ke kounye a kòmantè a medyàn (liy vèt) vini nan apeprè 20 èdtan, i.e. Nan premye jou apre piblikasyon an, an mwayèn, yon ti kras plis pase mwatye nan tout kòmantè sou yon atik yo rete. Ak nan de jou, 75% nan tout kòmantè yo kite. Anplis, atik pi bonè yo te li menm pi vit - pou egzanp, nan 2010, mwatye nan kòmantè yo te vini nan premye 6 èdtan yo.

Ki jan mwen analize Habr, pati 1: tandans

Se yon sipriz pou mwen ke kòmantè yo vin pi long: kantite mwayèn karaktè nan yon kòmantè prèske double pandan egzistans Habr!

Ki jan mwen analize Habr, pati 1: tandans

Feedback ki pi senp pase kòmantè se vòt. Kontrèman ak anpil lòt resous, sou Habré ou ka mete non sèlman avantaj, men tou dezavantaj. Sepandan, lektè yo pa sèvi ak dènye opòtinite a souvan: pati aktyèl la nan aversion se apeprè 15% nan tout vòt yo jete. Te gen plis, men apre yon tan, lektè yo te vin pi janti.

Ki jan mwen analize Habr, pati 1: tandans

Tèks yo tèt yo chanje sou tan. Pou egzanp, longè tipik tèks la pa sispann grandi piti piti depi lansman sit la, malgre kriz. Pandan yon deseni, tèks yo vin prèske dis fwa pi long!

Ki jan mwen analize Habr, pati 1: tandans

Style tèks yo (nan yon premye apwoksimasyon) tou chanje. Pandan premye ane yo nan egzistans Habr la, pou egzanp, pataje nan kòd ak nimewo nan tèks yo te ogmante:

Ki jan mwen analize Habr, pati 1: tandans

Èske w fin konprann dinamik jeneral sit la, mwen deside mezire ki jan popilarite divès sijè chanje. Sijè yo ka idantifye nan tèks otomatikman, men pou kòmanse, ou pa ka reenvante volan an, men sèvi ak tags pare yo te ajoute pa otè yo nan chak atik. Mwen te montre kat tandans tipik sou tablo a. "Google" tèm nan okòmansman domine (petèt sitou akòz optimize SEO), men pèdi pwa chak ane. Javascript te yon sijè popilè epi li kontinye ap, men aprantisaj machin te sèlman kòmanse rapidman pran popilarite nan dènye ane yo. Linux rete egalman enpòtan pandan tout deseni a.

Ki jan mwen analize Habr, pati 1: tandans

Natirèlman, mwen te vin enterese nan ki sijè ki atire plis aktivite lektè. Mwen kalkile kantite medyàn opinyon, vòt, ak kòmantè pou chak sijè. Men sa ki te pase:

  • Sijè ki pi wè yo: arduino, konsepsyon entènèt, devlopman entènèt, dijere, lyen, css, html, html5, nginx, algoritm.
  • Sijè ki pi "renmen" yo: VKontakte, imè, jquery, opera, c, html, devlopman entènèt, html5, css, konsepsyon entènèt.
  • Sijè ki pi diskite yo: opera, skype, endependan, VKontakte, ubuntu, travay, nokia, nginx, arduino, firefox.

By wout la, depi m ap konpare sijè, mwen ka klase yo pa frekans (epi konpare rezilta yo ak atik ki sanble soti nan 2013).

  • Pandan plizyè ane nan egzistans Habr, tags ki pi popilè yo (nan lòd desandan) yo te google, android, javascript, microsoft, linux, php, apple, java, python, pwogramasyon, demaraj, devlopman, ios, demaraj, rezo sosyal.
  • Nan 2017, pi popilè yo te javascript, python, java, android, devlopman, linux, c++, pwogramasyon, php, c#, ios, aprantisaj machin, sekirite enfòmasyon, microsoft, reyaji.

Lè w konpare evalyasyon sa yo, ou ka peye atansyon, pou egzanp, nan mach la viktorye nan Python ak disparisyon nan php, oswa nan "n bès" nan tèm nan demaraj ak ogmantasyon nan aprantisaj machin.

Se pa tout tags sou Habré ki gen yon koloran tematik ki evidan. Isit la, pou egzanp, gen yon douzèn Tags ki te parèt yon sèl fwa, men jis te sanble komik pou mwen. Se konsa: "lide se motè pwogrè", "demaraj soti nan yon imaj diskèt", "eta a nan Iowa", "dram", "superalesha", "motè vapè", "sa pou fè nan Samdi", "Mwen gen yon rena nan moulen an", "epi li te tounen tankou toujou," "nou pa t 'kapab vini ak tag komik." Pou detèmine sijè a nan atik sa yo, tags yo pa ase - ou pral gen pote soti nan modèl sijè sou tèks yo nan atik yo.

Yon analiz pi detaye sou kontni atik yo pral nan pwochen pòs la. Premyèman, mwen pral bati yon modèl ki predi kantite opinyon yon atik pral resevwa dapre kontni li yo. Dezyèmman, mwen ta renmen anseye rezo neral la jenere tèks nan menm style ak otè Habr yo. Donk abòne :)

PS Ak isit la li se, anrejistre dataset.

Sous: www.habr.com

Add nouvo kòmantè