Habrastatistiek: het analyseren van reacties van lezers

Hallo Habr. IN vorig deel De populariteit van verschillende delen van de site werd geanalyseerd en tegelijkertijd rees de vraag: welke gegevens kunnen worden gehaald uit reacties op artikelen. Ik wilde ook één hypothese testen, die ik hieronder zal bespreken.
Habrastatistiek: het analyseren van reacties van lezers

De gegevens bleken behoorlijk interessant; we zijn er ook in geslaagd een kleine “minibeoordeling” van commentatoren te creëren. Vervolg onder de snit.

Gegevensverzameling

Voor analyse gebruiken we gegevens van dit jaar, 2019, vooral omdat ik al een lijst met artikelen in csv-vorm heb ontvangen. Het enige dat overblijft is het extraheren van de opmerkingen uit elk artikel; gelukkig voor ons worden ze daar opgeslagen en hoeven er geen aanvullende verzoeken te worden gedaan.

Om opmerkingen uit een artikel te markeren, is de volgende code 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)

Hierdoor kunnen we een lijst met reacties krijgen die er ongeveer zo uitziet (bijnamen verwijderd om privacyredenen):

xxxxxxx,2019-02-06 11:50:00,0,А можно пример как именно?
xxxxxxx-02-24 16:15:00,+1,Побольше читайте независимые официальные источники чтобы таких вопросов не было.
xxxxxxx,2019-02-23 20:15:00,–5,А не важно главное в итоге в плюсе оказаться

Zoals u kunt zien, kunnen we voor elke opmerking de gebruikersnaam, de datum, de beoordeling en de daadwerkelijke tekst krijgen. Laten we kijken wat we hieruit kunnen halen.

Trouwens, aanvankelijk was het idee om beoordelingen te verzamelen een beetje anders: om te zien welke beoordelingen gebruikers geven. Je kunt bijvoorbeeld naar YouTube kijken - zelfs de meest ideale video, zelfs een video die geen subjectieve informatie bevat, puur ter referentie of als persbericht, krijgt nog steeds een bepaald aantal minnen. De hypothese was dat er gebruikers zijn die puur klinisch gezien helemaal niet van alles houden, misschien wordt serotonine niet in de hersenen aangemaakt of iets anders. Misschien hoeft iemand niet meer op Habré te zitten, maar om depressies te behandelen... Maar het bleek dat ik dit hier niet kan controleren, omdat... de lijst met degenen die beoordelingen hebben gegeven, wordt niet opgeslagen in de opmerking of het artikel. Dat wil zeggen, we zullen werken met de beschikbare gegevens. Het resultaat is een “omgekeerde” beoordeling. U kunt zien welke beoordelingen door gebruikers worden _ontvangen_. Wat in principe ook interessant is.

Verwerking

Om te beginnen een traditionele disclaimer. Deze beoordeling is, net als alle voorgaande, niet-officieel. Ik kan niet garanderen dat ik nergens een fout heb gemaakt. Voor degenen die geïnteresseerd zijn in technische details, is er meer gedetailleerde code beschikbaar in het vorige deel.

Dus laten we beginnen. Opmerkingen voor dit jaar, 2019 (dat nog niet voorbij is), zijn ter analyse verwerkt. Op het moment van schrijven schreven gebruikers 448533 reactie, de grootte van het csv-bestand is 288 MB. Krachtig, indrukwekkend.

Tijd van schrijven

Laten we de reacties per uur groeperen, waarbij weekdagen en weekends afzonderlijk worden verdeeld.

Habrastatistiek: het analyseren van reacties van lezers

Hier zijn we niet geïnteresseerd in absolute waarden, maar in relatieve waarden. Als je het gewoon bekijkt “zoals het is”, dan blijkt dat ook zo te zijnоDe meeste reacties zijn geschreven tijdens werkuren van 10 tot 18 uur. 😉 Aan de andere kant wordt hier geen rekening gehouden met tijdzones, dus de vraag staat nog open.

Laten we eens kijken naar de verdeling van de reacties over het jaar:

Habrastatistiek: het analyseren van reacties van lezers

En toch roteert het; er is duidelijk een golf zichtbaar op weekdagen - de wekelijkse periodiciteit is duidelijk zichtbaar, dus we kunnen met vrij groot vertrouwen zeggen dat mensen Habr lezen en becommentariëren vanaf het werk (maar dit is niet zeker).

Er was trouwens een idee om de hypothese te testen of het aantal ontvangen minnen of plussen verschilt van de dag of het tijdstip van de dag, maar het was niet mogelijk om een ​​relatie te vinden - de tijd waarop de beoordeling werd gegeven, wordt niet opgeslagen, en er is geen direct verband met het tijdstip van de opmerking.

Leden

Natuurlijk weet ik niet het exacte aantal gebruikers op de site. Maar degenen die dit jaar minstens één reactie achterlieten, bleken ongeveer te zijn 25000 mensen.

De grafiek van het aantal berichten dat gebruikers hebben achtergelaten, ziet er behoorlijk interessant uit:

Habrastatistiek: het analyseren van reacties van lezers

In eerste instantie geloofde ik het zelf niet, maar er leek geen sprake te zijn van een vergissing. 5% van de gebruikers laat 60% van de berichten achter. 10% - 74% van alle berichten (waarvan, laat me u eraan herinneren, dit jaar 450 duizend). De meerderheid leest gewoon de site en laat zeer zelden reacties achter, of laat ze helemaal niet achter (die stonden uiteraard niet in mijn lijst).

Beoordelingen

Laten we verder gaan met het laatste en leukste deel van de statistieken: beoordelingen. Om privacyredenen zal ik niet de volledige bijnamen van de gebruikers geven. Iedereen die dat wil, zal zichzelf herkennen, denk ik.

Op aantal reacties voor dit jaar wordt de top 5 ingenomen door VoXXXX (3377 reacties), 0xdXXXXX (3286 reacties), strXXXX (3043 reacties), AmXXXX (2897 reacties) en khXXXX (2748 reacties).

Op aantal ontvangen uitkeringen, top 5 wordt ingenomen door amXXXX (1395 reacties, beoordelingen +3231/-309), tvXXXX (1544 reacties, beoordelingen +3231/-97), WhuXXXX (921 reacties, beoordelingen +2288/-13), MTXXXX (1328 opmerkingen, +1383 /-7) en amaXXXX (736 reacties, beoordeling +1340/-16).

Op absoluut positieve beoordeling (niemand negatief beoordeelde opmerking) de bovenkant van de top wordt ingenomen door Milgard и Boemburum. Bij wijze van uitzondering presenteer ik hun bijnamen volledig, ik denk dat ze het verdienen.

De nadelen zijn ook interessant. Bovenaan door aantal minnen verzameld voor dit jaar zijn bezet door siXX (473 plussen, 699 minnen), khXX (1915 plussen, 573 minnen) en nicXXXXX (456 plussen, 487 minnen). Maar zoals u kunt zien, hebben deze gebruikers voldoende positieve reacties. Maar volgens absoluut minpunt Het antionderwerp omvat vladXXXX (55 opmerkingen, 84 minnen, 0 plussen), ekoXXXX (77 opmerkingen, 92 minnen, 1 plus) en iMXXXX (225 opmerkingen, 205 minnen, 12 plussen).

Conclusie

Ik heb niet alles kunnen berekenen wat gepland was, maar ik hoop dat het interessant was.

Zoals u kunt zien, kan zelfs een dataset met zo'n klein aantal velden interessante gegevens voor analyse opleveren. Er valt nog veel te ontdekken, van het bouwen van een ‘woordenwolk’ tot tekstanalyse. Als er interessante resultaten naar voren komen, zullen deze worden gepubliceerd.

Bron: www.habr.com

Voeg een reactie