Wéi ech Habr analyséiert hunn, Deel 1: Trends

Wéi den Neijoersch-Olivier fäerdeg war, hat ech näischt ze dinn, an ech hu beschloss all Artikelen vun Habrahabr (a verbonne Plattformen) op mäi Computer erofzelueden an ze entdecken.

Et waren e puer interessant Geschichten. Déi éischt vun hinnen ass d'Entwécklung vum Format an Themen vun Artikelen iwwer déi 12 Joer vun der Existenz vum Site. Zum Beispill ass d'Dynamik vun e puer Themen zimlech indikativ. Fortsetzung - ënner dem Schnëtt.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Parsing Prozess

Fir ze verstoen wéi den Habr sech entwéckelt huet, war et néideg all seng Artikelen duerchzegoen an d'Meta-Informatioun vun hinnen ze extrahieren (zum Beispill Datumen). De Contournement war einfach, well Linken op all Artikelen ausgesinn wéi "habrahabr.ru/post/337722/", an d'Zuelen sinn strikt an der Rei. Wësse datt de leschte Post eng Zuel liicht manner wéi 350 Tausend huet, hunn ech just all méiglech Dokument ID an enger Loop duerchgaang (Python Code):

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

Funktioun download_document probéiert d'Säit mat der entspriechender ID ze lueden a probéiert sënnvoll Informatioun aus der HTML Struktur ze extrahieren.

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)

Am Prozess vum Parsing hunn ech e puer nei Saachen entdeckt.

Als éischt soen se datt méi Prozesser erstellen wéi et Kären am Prozessor ass nëtzlos. Awer a mengem Fall ass et erausgestallt datt d'limitéiert Ressource net de Prozessor ass, awer de Reseau, an 100 Prozesser funktionnéieren méi séier wéi 4 oder, zum Beispill, 20.

Zweetens, an e puer Posts goufen et Kombinatioune vu speziellen Zeechen - zum Beispill Euphemismen wéi "%&#@". Et huet sech erausgestallt html.parser, déi ech als éischt benotzt hunn, reagéiert op d'Kombinatioun &# schmerzhafte, betruecht et den Ufank vun der HTML Entitéit. Ech wollt schon schwaarz Magie maachen, awer de Forum huet virgeschloen datt Dir just de Parser kënnt änneren.

Drëttens hunn ech et fäerdeg bruecht all Publikatiounen ze entluede, ausser dräi. Dokumenter nummeréiert 65927, 162075, an 275987 goufen direkt vu mengem Antivirus geläscht. Dëst sinn Artikelen, respektiv, iwwer eng Javascript Kette déi e béiswëlleg PDF erofluet, SMS Ransomware a Form vun enger Rei vu Browser Plugins, an de CrashSafari.com Site deen iPhones an e Restart schéckt. Antivirus entdeckt en aneren Artikel méi spéit, während engem System Scan: Post 338586 iwwer Scripten op der Déierebuttek Websäit, déi de Benotzerprozessor benotze fir d'Krypto Währung ze minimiséieren. Also kënne mir d'Aarbecht vum Antivirus betruechten ass ganz adäquat.

"Live" Artikelen hu sech nëmmen d'Halschent vum potenziellen Maximum erausgestallt - 166307 Stéck. Iwwer de Rescht gëtt Habr Optiounen "d'Säit ass veroudert, gouf geläscht oder guer net existéiert." Gutt, alles ka geschéien.

No der Eropluedung vun Artikelen koumen technesch Aarbechten: zum Beispill hu Verëffentlechungsdatume vum Format "'21. Dezember 2006 um 10:47 Auer" op de Standard ëmgewandelt ginn datetime, an "12,8k" Meenung - an 12800. Op dëser Etapp, e puer méi Tëschefäll eraus. Am witzegsten huet een mat Stëmmzuelen an Datentypen ze dinn: e puer al Posts haten en Int Iwwerfloss a kruten jeeweils 65535 Stëmmen.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Als Resultat hunn d'Texter vun Artikelen (ouni Biller) mech 1.5 Gigabyte geholl, Kommentarer mat Meta-Informatioun - eng aner 3, an ongeféier honnert Megabytes - Meta-Informatioun iwwer Artikelen. Dëst kann komplett am RAM gehal ginn, wat fir mech eng agreabel Iwwerraschung war.

Ech hunn d'Analyse vun Artikelen ugefaang net aus den Texter selwer, mee aus Meta-Informatiounen: Datumen, Tags, Hubs, Meenungen a Likes. Et huet sech erausgestallt, datt si vill soen konnt.

Habrahabr Entwécklung Trends

Artikelen um Site sinn zënter 2006 publizéiert; stäerkste intensiv - an 2008-2016.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Wéi aktiv dës Artikelen zu verschiddenen Zäiten gelies goufen ass net sou einfach ze bewäerten. Texter vun 2012 a méi jonk krute méi Kommentaren a Bewäertungen, awer méi nei Texter hu méi Meenungen a Lieszeechen. Dës Metriken hu sech nëmmen eemol, am Joer 2015, op déiselwecht Manéier (halbéiert) behuelen. Vläicht, an enger Situatioun vu wirtschaftlecher a politescher Kris, ass d'Opmierksamkeet vun de Lieser vun IT Blogs op méi schmerzhafte Themen verlagert.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Zousätzlech zu den Artikelen selwer hunn ech méi Kommentarer op si erofgelueden. Et waren 6 Millioune Kommentaren, awer 240 Tausend vun hinnen goufen verbueden ("en UFO ass erageflunn an dës Inscriptioun hei publizéiert"). Eng nëtzlech Eegeschafte vu Kommentaren ass datt se en Zäitstempel hunn. Andeems Dir d'Zäit vun de Kommentaren studéiert, kënnt Dir ongeféier verstoen wéini Artikelen iwwerhaapt gelies ginn.

Et huet sech erausgestallt, datt déi meescht vun den Artikelen iergendwou vun 10 bis 20 Auer souwuel geschriwwen a kommentéiert sinn, d.h. op engem typesche Moskauer schaffen Dag. Dëst kann heeschen datt Habr fir berufflech Zwecker gelies gëtt, an datt dëst e gudde Wee ass fir op der Aarbecht ze procrastinéieren. Iwwregens ass dës Verdeelung vun der Zäit vum Dag stabil vun der Grënnung vum Habr bis haut.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Den Haaptvirdeel vun engem Kommentarzäitstempel ass awer net d'Zäit vum Dag, mee d'Dauer vum "aktive Liewen" vum Artikel. Ech hunn berechent wéi d'Zäit vun der Verëffentlechung vum Artikel bis zu sengem Kommentar verdeelt ass. Et huet sech erausgestallt, datt elo de Mediankommentar (gréng Linn) an ongeféier 20 Stonnen kënnt, d.h. den éischten Dag no der Verëffentlechung sinn am Duerchschnëtt e bësse méi wéi d'Halschent vun alle Kommentaren zum Artikel verlooss. An zwee Deeg hannerloossen se 75% vun alle Kommentaren. Gläichzäiteg goufen fréier Artikelen nach méi séier gelies - zum Beispill, 2010 ass d'Halschent vun de Kommentarer an den éischte 6 Stonnen komm.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Et ass fir mech iwwerrascht datt d'Kommentaren verlängert sinn: d'Duerchschnëttszuel vun de Personnagen an engem Kommentar ass bal verduebelt iwwer d'Liewensdauer vum Habr!

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Méi einfach Feedback wéi Kommentare sinn Stëmmen. Am Géigesaz zu villen anere Ressourcen, op Habré kënnt Dir net nëmmen Pluses setzen, awer och Minusen. Déi lescht Geleeënheet notzen d'Lieser awer net sou dacks: den Undeel vun den Dislikes läit aktuell bei ronn 15% vun alle ofgestëmmte Stëmmen. Et war fréier méi, awer mat der Zäit sinn d'Lieser méi frëndlech ginn.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

D'Texter selwer hu mat der Zäit geännert. Zum Beispill hält déi typesch Längt vum Text net op, trotz Krisen, stänneg aus dem Start vum Site ze wuessen. An engem Joerzéngt sinn Texter bal zéngmol méi laang ginn!

Wéi ech Habr analyséiert hunn, Deel 1: Trends

De Stil vun den Texter (zu enger éischter Approximatioun) huet och geännert. Wärend den éischte Joere vun der Existenz vum Habr, zum Beispill, ass den Undeel vu Code an Zuelen an Texter eropgaang:

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Nodeems ech d'allgemeng Dynamik vum Site verstanen hunn, hunn ech decidéiert ze moossen wéi d'Popularitéit vu verschiddenen Themen geännert huet. Themen kënnen automatesch aus Texter ausgewielt ginn, awer fir Ufänger kënnt Dir d'Rad net nei erfannen, awer benotzt fäerdeg Tags, déi vun den Auteuren vun all Artikel befestegt sinn. Ech hunn véier typesch Trends op der Grafik gezeechent. D'Thema "Google" huet am Ufank dominéiert (vläicht haaptsächlech wéinst SEO), awer huet iwwer d'Jore Gewiicht verluer. Javascript war e populär Thema a wiisst weider lues, awer Maschinnléieren huet ugefaang séier Popularitéit ze gewannen nëmmen an de leschte Joeren. Linux, op der anerer Säit, ass duerch d'Joerzéngt gläich relevant bliwwen.

Wéi ech Habr analyséiert hunn, Deel 1: Trends

Natierlech gouf ech interesséiert wat Themen méi Lieseraktivitéit unzéien. Ech berechent der median Zuel vun Meenungen, Stëmmen a Kommentaren an all Thema. Hei ass wat geschitt ass:

  • Déi meescht gekuckt Themen: Arduino, Webdesign, Webentwécklung, Verdauung, Linken, css, html, html5, nginx, Algorithmen.
  • Déi meescht "gefällt" Themen: vkontakte, humor, jquery, opera, c, html, webentwécklung, html5, css, webdesign.
  • Déi meescht diskutéiert Themen: Oper, Skype, Freelance, VKontakte, Ubuntu, Aarbecht, Nokia, Nginx, Arduino, Firefox.

Iwwregens, well ech Themen vergläichen, kënnt Dir se no Frequenz rangéieren (a vergläichen d'Resultater mat ähnlechen Artikel aus 2013).

  • Fir all d'Jore vun der Existenz vum Habr sinn déi populärste Tags (an erofgaangend Uerdnung) Google, Android, Javascript, Microsoft, Linux, php, Apple, Java, Python, Programméiere, Startups, Entwécklung, iOS, Startup, Sozial Netzwierker
  • Am 2017 waren déi populärste Javascript, Python, Java, Android, Entwécklung, Linux, C++, Programméiere, php, c#, ios, Maschinnléieren, Informatiounssécherheet, Microsoft, React

Wann Dir dës Bewäertungen vergläicht, kann een oppassen, zum Beispill, op de Victoire vu Python an d'Ausstierwen vu PHP, oder op den "Sonnenuntergang" vun Startup Themen an den Opstig vu Maschinnléieren.

Net all Tags op Habré hunn esou eng offensichtlech thematesch Faarf. Zum Beispill, hei sinn eng Dosen Tags déi nëmmen eemol getraff hunn, awer just fir mech witzeg ausgesinn. Also: "Iddi ass déi dreiwend Kraaft vum Fortschrëtt", "Boot vun engem Diskettbild", "Iowa State", "Drama", "Superalesh", "Dampmaschinn", "Saache fir e Samschdeg ze maachen", "Ech hunn e Fuuss an enger Fleeschrauerei", "a et huet sech erausgestallt wéi ëmmer", "mir konnten net mat witzegen Tags kommen". Fir d'Thema vun esou Artikelen ze bestëmmen, sinn d'Tags net genuch - Dir musst thematesch Modellerung op d'Texter vun den Artikelen ausféieren.

Eng méi detailléiert Analyse vum Inhalt vun den Artikelen wäert am nächste Post sinn. Als éischt wäert ech e Modell bauen deen d'Zuel vun de Säitevisioune fir en Artikel op Basis vu sengem Inhalt virausgesot. Zweetens wëll ech den neurale Netzwierk léieren Texter am selwechte Stil ze generéieren wéi d'Auteuren vun Habr. Also abonnéieren 🙂

PS An hei ass de Piep dataset.

Source: will.com

Setzt e Commentaire