Хабрастатистика: анализиране на коментари на читатели

Здравей Хабр. IN предишна част Беше анализирана популярността на различни раздели на сайта и в същото време възникна въпросът - какви данни могат да бъдат извлечени от коментари към статии. Също така исках да тествам една хипотеза, която ще обсъдя по-долу.
Хабрастатистика: анализиране на коментари на читатели

Данните се оказаха доста интересни и ние също успяхме да съставим малък „мини-рейтинг“ на коментаторите. Продължава под разреза.

Събиране на данни

За анализ ще използваме данни за тази година, 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 - дори и най-идеалното видео, дори видео, което не носи никаква субективна информация, чисто за справка или съобщение за новини, все още печели определен брой минуси. Хипотезата беше, че има потребители, които чисто клинично не харесват всичко, може би серотонинът не се произвежда в мозъка или нещо друго. Може би човек вече не трябва да седи на Хабре, а да лекува депресия... Но както се оказа, не мога да проверя това тук, защото... списъкът на тези, които са дали оценки, не се записва в коментара или статията. Е, тоест ще работим с наличните данни. Резултатът е „обратна“ оценка – можете да видите какви оценки _получават_ потребителите. Което по принцип също е интересно.

Обработване

Като начало, традиционен отказ от отговорност. Този рейтинг, както и всички предишни, е неофициален. Не гарантирам, че не съм сбъркал някъде. За тези, които се интересуват от технически подробности, е предоставен по-подробен код в предишната част.

Така че да започваме. Коментари за тази година, 2019 (която все още не е приключила), бяха взети за анализ. По време на писането потребителите писаха 448533 комментария, размерът на csv файла е 288MB. Мощен, впечатляващ.

Време на писане

Нека групираме коментарите по часове, разделяйки делничните дни и почивните дни отделно.

Хабрастатистика: анализиране на коментари на читатели

Тук не се интересуваме от абсолютни стойности, а от относителни. Ако просто го погледнете „както е“, тогава се оказва, чеоПовечето от коментарите са написани в работно време от 10 до 18 😉 От друга страна, часовите зони тук не се вземат предвид, така че въпросът все още е отворен.

Нека да разгледаме разпределението на коментарите през годината:

Хабрастатистика: анализиране на коментари на читатели

И все пак се върти; вълната е ясно видима през делничните дни - седмичната периодичност е ясно видима, така че можем да кажем с доста голяма увереност, че хората четат и коментират Habr от работа (но това не е сигурно).

Между другото, имаше идея да се тества хипотезата дали броят на получените минуси или плюсове се различава от деня или часа на деня, но не беше възможно да се намери връзка - времето, за което е дадена оценката, не се запазва и няма пряка връзка с времето на коментара.

Потребители

Разбира се, не знам точния брой потребители на сайта. Но тези, които оставиха поне един коментар тази година, се оказаха приблизително 25000 хора.

Графиката на броя съобщения, оставени от потребителите, изглежда доста интересна:

Хабрастатистика: анализиране на коментари на читатели

Първоначално аз самият не го повярвах, но изглежда нямаше грешка. 5% от потребителите оставят 60% от съобщенията. 10% - 74% от всички съобщения (от които, нека ви напомня, тази година 450 хиляди). Повечето просто четат сайта, оставяйки коментари много рядко или изобщо не ги оставят (тези, естествено, не бяха включени в моя списък).

Оценки

Да преминем към последната и най-забавна част от статистиката – рейтингите. От съображения за поверителност няма да давам пълните никнейми на потребителите, който иска, мисля, че ще се разпознае.

На брой коментари за тази година топ 5 се заема от VoXXXX (3377 коментара), 0xdXXXX (3286 коментара), strXXXX (3043 коментара), AmXXXX (2897 коментара) и khXXXX (2748 коментара).

На брой получени обезщетения, топ 5 са ​​заети от amXXXX (1395 коментара, оценки +3231/-309), tvXXXX (1544 коментара, оценки +3231/-97), WhuXXXX (921 коментара, оценки +2288/-13), MTXXXX (1328 коментара, +1383 /-7) и amaXXXX (736 коментара, рейтинг +1340/-16).

На абсолютна положителна оценка (никой отрицателно оценен коментар) горната част на върха е заета от Милфгард и Бумбурум. По изключение представям прякорите им изцяло, смятам, че си го заслужават.

Минусите също са интересни. Топ от брой събрани минуси за тази година те са заети от siXX (473 плюса, 699 минуса), khXX (1915 плюса, 573 минуса) и nicXXXXX (456 плюса, 487 минуса). Но както виждате, тези потребители имат достатъчно положителни коментари. Но според абсолютен минус Антитопът включва vladXXXX (55 коментара, 84 минуса, 0 плюса), ekoXXXX (77 коментара, 92 минуса, 1 плюс) и iMXXXX (225 коментара, 205 минуса, 12 плюса).

Заключение

Не успях да изчисля всичко планирано, но се надявам да е било интересно.

Както можете да видите, дори набор от данни с толкова малък брой полета може да предостави интересни данни за анализ. Все още има много за ровене, от изграждането на „облак от думи“ до анализ на текст. Ако се появят интересни резултати, те ще бъдат публикувани.

Източник: www.habr.com

Добавяне на нов коментар