Habrastatistika: analiza komentara čitatelja

Pozdrav Habr. U prethodni dio Analizirana je popularnost različitih dijelova stranice, a ujedno se postavilo pitanje - koji se podaci mogu izvući iz komentara na članke. Također sam želio testirati jednu hipotezu, o kojoj ću govoriti u nastavku.
Habrastatistika: analiza komentara čitatelja

Podaci su se pokazali prilično zanimljivima, uspjeli smo napraviti i mali "mini rejting" komentatora. Nastavak ispod reza.

Prikupljanje podataka

Za analizu ćemo koristiti podatke za ovu, 2019. godinu, tim više što sam već dobio popis članaka u csv obliku. Ostaje samo izdvojiti komentare iz svakog članka, na našu sreću, oni su tamo pohranjeni i ne treba postavljati dodatne zahtjeve.

Za isticanje komentara iz članka dovoljan je sljedeći kod:

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)

To nam omogućuje da dobijemo popis komentara koji izgleda otprilike ovako (nadimci uklonjeni zbog privatnosti):

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

Kao što vidite, za svaki komentar možemo dobiti korisničko ime, datum, ocjenu i stvarni tekst. Da vidimo što možemo dobiti od ovoga.

Usput, u početku je ideja prikupljanja ocjena bila malo drugačija - vidjeti koje ocjene daju korisnici. Na primjer, možete pogledati YouTube - čak i najidealniji video, čak i video koji ne nosi nikakvu subjektivnu informaciju, čisto za referencu ili objavu vijesti, ipak dobije određeni broj minusa. Hipoteza je bila da postoje korisnici kojima se, čisto klinički, baš sve ne sviđa, možda se serotonin ne proizvodi u mozgu ili nešto treće. Možda osoba više ne treba sjediti na Habréu, već liječiti depresiju... Ali kako se pokazalo, ne mogu to provjeriti ovdje, jer... popis onih koji su dali ocjene nije spremljen u komentaru ili članku. Pa, to jest, radit ćemo s dostupnim podacima. Rezultat je "obrnuto" ocjenjivanje - možete vidjeti koje su ocjene _dobili_ korisnici. Što je, u principu, također zanimljivo.

Obrada

Za početak, tradicionalno odricanje od odgovornosti. Ova je ocjena, kao i sve prethodne, neslužbena. Ne garantiram da nigdje nisam pogriješio. Za one koje zanimaju tehnički detalji, dostupan je detaljniji kod u prethodnom dijelu.

Pa krenimo. Na analizu su uzeti komentari za ovu, 2019. godinu (koja još nije završila). U vrijeme pisanja, korisnici su pisali 448533 комментария, veličina csv datoteke je 288 MB. Moćan, impresivan.

Vrijeme pisanja

Grupirajmo komentare po satu, posebno podijelimo radne dane i vikende.

Habrastatistika: analiza komentara čitatelja

Ovdje nas ne zanimaju apsolutne vrijednosti, nego relativne. Ako samo pogledate "kakvo jest", ispada da je takoоVećina komentara napisana je u radnom vremenu od 10 do 18 😉 S druge strane, ovdje se ne računaju vremenske zone pa je pitanje i dalje otvoreno.

Pogledajmo distribuciju komentara tijekom godine:

Habrastatistika: analiza komentara čitatelja

Pa ipak se okreće; radnim danima je jasno vidljiv val - jasno je vidljiva tjedna periodičnost, pa možemo s prilično velikom pouzdanošću reći da ljudi čitaju i komentiraju Habr s posla (ali to nije sigurno).

Usput, postojala je ideja da se testira hipoteza razlikuje li se broj primljenih minusa ili plusa od dana ili doba dana, ali nije bilo moguće pronaći odnos - vrijeme kada je ocjena dana nije spremljeno, a nema izravne veze s vremenom komentara.

Članovi

Naravno, ne znam točan broj korisnika na stranici. Ali oni koji su ove godine ostavili barem jedan komentar pokazali su se otprilike 25000 ljudi.

Grafikon broja poruka koje ostavljaju korisnici izgleda prilično zanimljivo:

Habrastatistika: analiza komentara čitatelja

Isprva nisam ni sam vjerovao, ali činilo se da nema greške. 5% korisnika ostavlja 60% poruka. 10% - 74% svih poruka (od toga, da podsjetim, ove godine 450 tisuća). Većina jednostavno čita stranicu, ostavljajući komentare vrlo rijetko ili ih uopće ne ostavljajući (oni, naravno, nisu bili uključeni u moj popis).

Ocjene

Prijeđimo na posljednji i najzabavniji dio statistike – ocjene. Zbog privatnosti neću navoditi pune nadimke korisnika, tko želi, mislim da će se prepoznati.

Na broj komentara za ovu godinu top 5 zauzimaju VoXXXX (3377 komentara), 0xdXXXX (3286 komentara), strXXXX (3043 komentara), AmXXXX (2897 komentara) i khXXXX (2748 komentara).

Na broj primljenih naknada, top 5 zauzimaju amXXXX (1395 komentara, ocjene +3231/-309), tvXXXX (1544 komentara, ocjene +3231/-97), WhuXXXX (921 komentar, ocjene +2288/-13), MTXXXX (1328 komentara, +1383 /-7) i amaXXXX (736 komentara, ocjena +1340/-16).

Na apsolutno pozitivna ocjena (bilo koji negativno ocijenjen komentar) vrh vrha zauzima Milfgard и Boomburum. Iznimno prenosim njihove nadimke u cijelosti, mislim da to zaslužuju.

Loše strane su također zanimljive. Top by broj prikupljenih minusa za ovu godinu zauzimaju siXX (473 plusa, 699 minusa), khXX (1915 plusa, 573 minusa) i nicXXXXX (456 plusa, 487 minusa). Ali kao što vidite, ovi korisnici imaju dovoljno pozitivnih komentara. Ali prema apsolutni minus Antitop uključuje vladXXXX (55 komentara, 84 minusa, 0 plusa), ekoXXXX (77 komentara, 92 minusa, 1 plus) i iMXXXX (225 komentara, 205 minusa, 12 plusa).

Zaključak

Nisam uspio izračunati sve planirano, ali nadam se da je bilo zanimljivo.

Kao što vidite, čak i skup podataka s tako malim brojem polja može pružiti zanimljive podatke za analizu. Ima još puno toga za kopati, od izgradnje "oblaka riječi" do analize teksta. Ako se pojave zanimljivi rezultati, bit će objavljeni.

Izvor: www.habr.com

Dodajte komentar