Habrastatistiek: ontleding van leserskommentaar

Hallo Habr. IN vorige deel Die gewildheid van verskeie afdelings van die webwerf is ontleed, en terselfdertyd het die vraag ontstaan ​​- watter data kan uit kommentaar op artikels onttrek word. Ek wou ook een hipotese toets, wat ek hieronder sal bespreek.
Habrastatistiek: ontleding van leserskommentaar

Die data het baie interessant geblyk te wees, ons het ook daarin geslaag om 'n klein "mini-gradering" van kommentators te skep. Onder die snit voortgegaan.

Data-insameling

Vir ontleding sal ons data vir hierdie jaar, 2019, gebruik, veral omdat ek reeds 'n lys artikels in csv-vorm ontvang het. Al wat oorbly is om die opmerkings uit elke artikel te onttrek, gelukkig vir ons, is dit daar gestoor, en geen bykomende versoeke hoef gemaak te word nie.

Om opmerkings oor 'n artikel uit te lig, is die volgende kode voldoende:

r = requests.get("https://habr.com/ru/post/467453/")
data_html = r.text
comments = data_html.split('<div class="comment" id=')

comments_list = []
for comment in comments:
    body = Str(comment).find_between('<div class="comment__message', '<div class="comment__footer"').find_between('>', '</div>')# .replace('n', '-')
    if len(body) < 4: continue

    body = body.translate(str.maketrans(dict.fromkeys("tnrvf")))
    body = body.replace('"', "'").replace(',', " ").replace('<br>', ' ').replace('<p>', '').replace('</p>', '').replace('  ', ' ')

    user = Str(comment).find_between('data-user-login', '>').find_between('"', '"')
    date_str = Str(comment).find_between('<time class="comment__date-time comment__date-time_published', 'time>').find_between('>', '<')
    vote = Str(comment).find_between('<div class="voting-wjt', '</div>').find_between('<span', 'span>').find_between('>', '<')
    date = dateparser.parse(date_str)

    csv_data = "{},{},{},{}".format(user, date, vote, body)
    comments_list.append(csv_data)

Dit stel ons in staat om 'n lys opmerkings te kry wat iets soos hierdie lyk (byname verwyder vir privaatheidsredes):

xxxxxxx,2019-02-06 11:50:00,0,А ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ?
xxxxxxx-02-24 16:15:00,+1,ПобольшС Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ нСзависимыС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ источники Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΡ… вопросов Π½Π΅ Π±Ρ‹Π»ΠΎ.
xxxxxxx,2019-02-23 20:15:00,–5,А Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π² плюсС ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ

Soos u kan sien, kan ons vir elke opmerking die gebruikersnaam, datum, gradering en die werklike teks kry. Kom ons kyk wat ons hieruit kan kry.

Terloops, aanvanklik was die idee om graderings in te samel 'n bietjie anders - om te sien watter graderings gebruikers gee. Jy kan byvoorbeeld na YouTube kyk - selfs die mees ideale video, selfs 'n video wat geen subjektiewe inligting bevat nie, suiwer vir verwysing of 'n nuusvrystelling, kry steeds 'n sekere aantal minusse. Die hipotese was dat daar gebruikers is wat, suiwer klinies, glad nie van alles hou nie, miskien word serotonien nie in die brein geproduseer nie of iets anders. Miskien hoef 'n persoon nie meer op HabrΓ© te sit nie, maar om depressie te behandel ... Maar soos dit geblyk het, kan ek dit nie hier nagaan nie, want ... die lys van diegene wat graderings gegee het, word nie in die opmerking of artikel gestoor nie. Wel, dit wil sΓͺ, ons sal met die beskikbare data werk. Die resultaat is 'n "omgekeerde" gradering - jy kan sien watter graderings _ontvang_ deur gebruikers. Wat in beginsel ook interessant is.

Processing

Om mee te begin, 'n tradisionele vrywaring. Hierdie gradering, soos alle voriges, is nie-amptelik. Ek waarborg nie dat ek nΓͺrens 'n fout gemaak het nie. Vir diegene wat belangstel in tegniese besonderhede, word meer gedetailleerde kode verskaf in die vorige deel.

So kom ons begin. Kommentaar vir vanjaar, 2019 (wat nog nie verby is nie), is vir ontleding geneem. Met die skryf hiervan het gebruikers geskryf 448533 коммСнтария, die grootte van die csv-lΓͺer is 288 MB. Kragtig, indrukwekkend.

Tyd van skryf

Kom ons groepeer opmerkings per uur, verdeel weeksdae en naweke afsonderlik.

Habrastatistiek: ontleding van leserskommentaar

Hier stel ons nie belang in absolute waardes nie, maar in relatiewe. As jy net daarna kyk β€œsoos dit is”, dan blyk dit soΠΎMeeste van die kommentaar is gedurende werksure van 10 tot 18 geskryf πŸ˜‰ Aan die ander kant word tydsones nie hier in ag geneem nie, so die vraag is nog oop.

Kom ons kyk na die verspreiding van kommentaar deur die jaar:

Habrastatistiek: ontleding van leserskommentaar

En tog draai dit; 'n oplewing is duidelik sigbaar op weeksdae - die weeklikse periodisiteit is duidelik sigbaar, so ons kan met redelike selfvertroue sΓͺ dat mense van die werk af lees en kommentaar lewer (maar dit is nie seker nie).

Terloops, daar was 'n idee om die hipotese te toets of die aantal minusse of plusse wat ontvang word verskil van die dag of tyd van die dag, maar dit was nie moontlik om 'n verhouding te vind nie - die tyd wat die gradering gegee is, word nie gestoor nie, en daar is geen direkte verband met die tyd van die kommentaar nie.

Lede

Ek weet natuurlik nie die presiese aantal gebruikers op die webwerf nie. Maar diegene wat vanjaar ten minste een opmerking gelaat het, was ongeveer 25000 mense.

Die grafiek van die aantal boodskappe wat deur gebruikers gelaat is, lyk nogal interessant:

Habrastatistiek: ontleding van leserskommentaar

Ek het dit eers self nie geglo nie, maar daar was blykbaar geen fout nie. 5% van gebruikers verlaat 60% van boodskappe. 10% - 74% van alle boodskappe (waarvan, laat ek jou herinner, hierdie jaar, 450 duisend). Die meerderheid lees bloot die webwerf, laat kommentaar baie selde, of verlaat dit glad nie (diΓ© is natuurlik nie by my lys ingesluit nie).

Graderings

Kom ons gaan aan na die laaste en lekkerste deel van die statistieke – graderings. Om privaatheidsredes sal ek nie die volle byname van die gebruikers gee nie, wie ook al wil, dink ek, sal hulself herken.

Op aantal opmerkings vir hierdie jaar word die top-5 beset deur VoXXXX (3377 opmerkings), 0xdXXXXX (3286 opmerkings), strXXXX (3043 opmerkings), AmXXXX (2897 opmerkings) en khXXXX (2748 opmerkings).

Op aantal voordele ontvang, top 5 word beset deur amXXXX (1395 opmerkings, graderings +3231/-309), tvXXXX (1544 opmerkings, graderings +3231/-97), WhuXXXX (921 opmerkings, graderings +2288/-13), MTXXXX (1328 opmerkings, +1383 /-7) en amaXXXX (736 opmerkings, gradering +1340/-16).

Op absolute positiewe gradering (niemand negatief gegradeerde kommentaar) word die bokant van die top beset deur Milfgard ΠΈ Boemburum. As uitsondering bied ek hul byname volledig aan, ek dink hulle verdien dit.

Die nadele is ook interessant. Top by aantal minusse ingesamel vir hierdie jaar word hulle beset deur siXX (473 pluspunte, 699 minusse), khXX (1915 pluspunte, 573 minusse) en nicXXXXX (456 pluspunte, 487 minusse). Maar soos u kan sien, het hierdie gebruikers genoeg positiewe opmerkings. Maar volgens absolute minus Die anti-onderwerp sluit in vladXXXX (55 opmerkings, 84 minusse, 0 plusse), ekoXXXX (77 opmerkings, 92 minusse, 1 plus) en iMXXXX (225 opmerkings, 205 minusse, 12 plusse).

Gevolgtrekking

Ek kon nie alles wat beplan is, bereken nie, maar ek hoop dit was interessant.

Soos u kan sien, kan selfs 'n datastel met so 'n klein aantal velde interessante data vir ontleding verskaf. Daar is nog baie om in te delf, van die bou van 'n "woordwolk" tot teksontleding. Indien enige interessante resultate na vore kom, sal dit gepubliseer word.

Bron: will.com

Voeg 'n opmerking