Habrastatistics:分析讀者評論

你好哈布爾。在 前一部分 分析了網站各個部分的受歡迎程度,同時出現了問題 - 可以從文章評論中提取哪些數據。我還想檢驗一個假設,我將在下面討論。
Habrastatistics:分析讀者評論

事實證明這些數據非常有趣,我們也能夠編制評論員的小型「迷你評分」。繼續下切。

資料收集

為了進行分析,我們將使用今年 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。強大,令人印象深刻。

寫作時間

讓我們按小時將評論分組,分別劃分工作日和週末。

Habrastatistics:分析讀者評論

這裡我們對絕對值不感興趣,而是對相對值感興趣。如果你只是「照其本來面目」來看,那麼事實證明о大多數評論是在 10 點到 18 點的工作時間寫的 😉 另一方面,這裡沒有考慮時區,所以問題仍然懸而未決。

讓我們來看看全年的評論分佈:

Habrastatistics:分析讀者評論

然而它是旋轉的;工作日的激增是清晰可見的——每週的周期性是清晰可見的,所以我們可以相當有信心地說,人們正在工作中閱讀和評論哈布爾(但這並不確定)。

順便說一句,有一個想法來測試假設收到的減號或加號的數量是否與一天或一天​​中的時間不同,但不可能找到關係 - 給出評級的時間不會被保存,並且與評論時間沒有直接關係。

會員

當然,我不知道該網站的確切用戶數量。但今年至少留下一則評論的人大約有 25000人.

用戶留下的訊息數量的圖表看起來很有趣:

Habrastatistics:分析讀者評論

起初我自己也不相信,但似乎沒有錯。 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 /-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

添加評論