Хабрастатыстыка: аналізуем каментары чытачоў

Прывітанне Хабр. У папярэдняй часткі была прааналізавана папулярнасць розных раздзелаў сайта, і паралельна ўзнікла пытанне - якія дадзеныя можна атрымаць з каментароў да артыкулаў. Таксама хацелася праверыць адну гіпотэзу, аб якой скажу ніжэй.
Хабрастатыстыка: аналізуем каментары чытачоў

Дадзеныя атрымаліся даволі цікавыя, таксама ўдалося скласці невялікі "міні-рэйтынг" каментатараў. Працяг пад катом.

збор дадзеных

Для аналізу мы будзем выкарыстоўваць дадзеныя за гэты 2019 год, тым больш што спіс артыкулаў у выглядзе csv у мяне ўжо быў атрыманы. Засталося атрымаць з кожнага артыкула каментары, на шчасце для нас, яны захоўваюцца там жа, і ніякіх дадатковых запытаў рабіць не трэба.

Для вылучэння каментароў з артыкула дастаткова наступнага кода:

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)

Гэта дазваляе нам атрымаць спіс каментароў у прыкладна такім выглядзе (нікі прыбраныя з меркаванняў прыватнасці):

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

Як можна бачыць, для кожнага каментара мы можам атрымаць імя карыстача, дату, рэйтынг, ды і ўласна тэкст. Пабачым, што мы можам з гэтага атрымаць.

Дарэчы, першапачаткова, ідэя збору рэйтынгу была крыху іншая - паглядзець, якія ацэнкі ставяць карыстальнікі. Для прыкладу, можна паглядзець на youtube - нават самы ідэальны ролік, нават ролік не апорны ніякай суб'ектыўнай інфармацыі, чыста даведачны або выпуск навін, усё роўна набірае некаторую пэўную колькасць мінусаў. Гіпотэза была ў тым, што ёсць карыстачы, якім чыста клінічна наогул усё не падабаецца, можа серотонін у мозгу не выпрацоўваецца ці яшчэ нешта. Можа чалавеку ўжо трэба не на Хабры сядзець, а дэпрэсію лячыць… Але як аказалася, праверыць гэта тут я не магу, т.я. спіс якія паставілі адзнакі, у каментары ці артыкуле не захоўваецца. Ну што ёсць, то бок, будзем працаваць з наяўнымі дадзенымі. У выніку атрымаўся «зваротны» рэйтынг - відаць, якія ацэнкі _атрымліваюць_ карыстачы. Што ў прынцыпе, таксама цікава.

Апрацоўка

Для пачатку, традыцыйны disclaimer. Гэты рэйтынг, як і ўсе папярэднія, з'яўляецца неафіцыйным. Я не гарантую, што нідзе не памыліўся. Для тых, каго цікавяць тэхнічныя падрабязнасці, больш падрабязны код прыведзены у папярэдняй частцы.

Такім чынам, прыступім. Для аналізу былі ўзятыя каментарыі за гэты, 2019 год (які яшчэ не скончыўся). На момант напісання тэксту карыстальнікамі было напісана 448533 каментара, памер csv-файла складае 288МБайт. Магутна, выклікае.

Час напісання

Згрупуем каментары па гадзінах, падзяліўшы асобна буднія і выходныя дні.

Хабрастатыстыка: аналізуем каментары чытачоў

Тут нас цікавяць не абсалютныя значэнні, а адносныя. Калі проста глядзець «як ёсць», тое атрымліваецца што бобольшая частка каментароў напісана ў працоўны час з 10 да 18 😉 З іншага боку, тут не ўлічваюцца гадзінныя паясы, так што пытанне пакуль адкрыты.

Паглядзім размеркаванне каментароў на працягу года:

Хабрастатыстыка: аналізуем каментары чытачоў

І ўсё ж яна круціцца выразна бачны ўсплёск у буднія дні - тыднёвая перыядычнасць відавочна прасочваецца, так што з дастаткова вялікай упэўненасцю можна сказаць, што народ чытае і каментуе Хабр з працы (але гэта не дакладна).

Дарэчы, была ідэя праверыць гіпотэзу, ці адрозніваецца колькасць атрыманых мінусаў або плюсаў ад дня ці часу сутак, але залежнасці знайсці не ўдалося - час прастаўлення ацэнкі не захоўваецца, а прамой сувязі з часам каментара тут няма.

Карыстальнікі

Зразумела, дакладнай колькасці карыстальнікаў на сайце я не ведаю. Але тых, хто пакінуў хаця б адзін каментар за гэты год, аказалася прыкладна 25000 чалавек.

Графік колькасці паведамленняў, пакінутых карыстальнікамі, выглядае даволі цікава:

Хабрастатыстыка: аналізуем каментары чытачоў

Я спачатку не паверыў сам, але быццам памылкі няма. 5% карыстальнікаў пакідаюць 60% паведамленняў. 10% - 74% усіх паведамленняў (якіх нагадаю, за гэты год, 450тыс). Большасць жа проста чытае сайт, пакідаючы зусім рэдка каментарыі, ці не пакідаюць іх увогуле (такія натуральна, у мой спіс не патрапілі).

Рэйтынгі

Пераходзім да апошняй, і самай вясёлай часткі статыстыкі - рэйтынгах. З меркаванняў прыватнасці я не буду прыводзіць поўныя нікі карыстальнікаў, хто захоча, думаю, сябе пазнае.

Па колькасці каментароў за гэты год, топ 5 займаюць VoXXXX (3377 каментароў), 0xdXXXXX (3286 каментара), strXXXX (3043 каментара), AmXXXX (2897 каментароў) і khXXXX (2748 каментароў).

Па колькасці атрыманых плюсаў, топ 5 займаюць amXXXX (1395 каментароў, рэйтынгі +3231/-309), tvXXXX (1544 каментара, рэйтынгі +3231/-97), WhuXXXX (921 каментар, рэйтынгі +2288/-13), MTXXXX (1328 каментароў /-1383) і amaXXXX (7 каментарыяў, рэйтынг +736/-1340).

Па абсалютнаму станоўчаму рэйтынгу (ніводнага негатыўна ацэненага каментара) верхавіну топа займаюць Milfgard и Boomburum. У якасці выключэння, прыводжу іх нікі поўнасцю, думаю, яны гэта заслужылі.

З мінусамі таксама цікава. Топ па колькасці набраных мінусаў за гэты год займаюць siXX (473 плюсы, 699 мінусаў), khXX (1915 плюсаў, 573 мінусы) і nicXXXXX (456 плюсу, 487 мінусу). Але як можна бачыць, і станоўчых каментароў у гэтых карыстальнікаў дастаткова. А вось па абсалютнаму мінусу у «антытоп» пападаюць vladXXXX (55 каментароў, 84 мінусу, 0 плюсаў), ekoXXXX (77 каментароў, 92 мінусу, 1 плюс) і iMXXXX (225 каментароў, 205 мінусаў, 12 плюсаў).

Заключэнне

Атрымалася палічыць не ўсё задуманае, але спадзяюся, было цікава.

Як можна бачыць, нават датасет з такой невялікай колькасцю палёў можа даць цікавыя дадзеныя для аналізу. Тут яшчэ ёсць далёка куды капаць, ад пабудовы "аблокі слоў" да аналізу тэксту. Калі з'явяцца нейкія цікавыя вынікі, яны будуць апублікаваны.

Крыніца: habr.com

Дадаць каментар