Habrastatistik: menganalisis komen pembaca

Hello Habr. DALAM bahagian sebelumnya Populariti pelbagai bahagian laman web telah dianalisis, dan pada masa yang sama timbul persoalan - apakah data yang boleh diekstrak daripada ulasan pada artikel. Saya juga ingin menguji satu hipotesis, yang akan saya bincangkan di bawah.
Habrastatistik: menganalisis komen pembaca

Data ternyata agak menarik; kami juga berjaya mencipta "mini-rating" pengulas. Bersambung di bawah potongan.

Pengumpulan data

Untuk analisis, kami akan menggunakan data untuk tahun ini, 2019, terutamanya kerana saya telah menerima senarai artikel dalam bentuk csv. Apa yang tinggal adalah untuk mengekstrak komen dari setiap artikel, nasib baik untuk kami, ia disimpan di sana, dan tiada permintaan tambahan perlu dibuat.

Untuk menyerlahkan ulasan daripada artikel, kod berikut sudah memadai:

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)

Ini membolehkan kami mendapatkan senarai ulasan yang kelihatan seperti ini (nama panggilan dialih keluar atas sebab privasi):

xxxxxxx,2019-02-06 11:50:00,0,А ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ?
xxxxxxx-02-24 16:15:00,+1,ПобольшС Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ нСзависимыС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ источники Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΡ… вопросов Π½Π΅ Π±Ρ‹Π»ΠΎ.
xxxxxxx,2019-02-23 20:15:00,–5,А Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π² плюсС ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ

Seperti yang anda lihat, untuk setiap ulasan kami boleh mendapatkan nama pengguna, tarikh, penilaian dan teks sebenar. Mari lihat apa yang kita boleh dapat daripada ini.

Ngomong-ngomong, pada mulanya, idea untuk mengumpul rating adalah sedikit berbeza - untuk melihat penilaian yang diberikan pengguna. Sebagai contoh, anda boleh melihat YouTube - walaupun video yang paling ideal, malah video yang tidak membawa sebarang maklumat subjektif, semata-mata untuk rujukan atau keluaran berita, masih mendapat sejumlah tolak tertentu. Hipotesisnya ialah terdapat pengguna yang, secara klinikal semata-mata, tidak menyukai segala-galanya sama sekali, mungkin serotonin tidak dihasilkan dalam otak atau sesuatu yang lain. Mungkin seseorang tidak lagi perlu duduk di HabrΓ©, tetapi untuk merawat kemurungan... Tetapi ternyata, saya tidak boleh menyemak ini di sini, kerana... senarai mereka yang memberi rating tidak disimpan dalam komen atau artikel. Nah, iaitu, kami akan bekerja dengan data yang ada. Hasilnya ialah penilaian "terbalik" - anda boleh melihat penilaian yang _terima_ oleh pengguna. Yang, pada dasarnya, juga menarik.

Pemprosesan

Sebagai permulaan, penafian tradisional. Penilaian ini, seperti semua yang sebelumnya, adalah tidak rasmi. Saya tidak menjamin bahawa saya tidak membuat kesilapan di mana-mana. Bagi mereka yang berminat dengan butiran teknikal, kod yang lebih terperinci disediakan di bahagian sebelumnya.

Jadi mari kita mulakan. Komen untuk tahun ini, 2019 (yang belum berakhir), diambil untuk analisis. Pada masa penulisan, pengguna menulis 448533 коммСнтария, saiz fail csv ialah 288MB. Berkuasa, mengagumkan.

Masa menulis

Mari kumpulkan ulasan mengikut jam, bahagikan hari bekerja dan hujung minggu secara berasingan.

Habrastatistik: menganalisis komen pembaca

Di sini kita tidak berminat dengan nilai mutlak, tetapi dalam nilai relatif. Jika anda hanya melihatnya "sebagaimana adanya", maka ternyata begituΠΎKebanyakan komen ditulis pada waktu bekerja dari 10 hingga 18 πŸ˜‰ Sebaliknya, zon waktu tidak diambil kira di sini, jadi persoalannya masih terbuka.

Mari kita lihat pengedaran komen sepanjang tahun:

Habrastatistik: menganalisis komen pembaca

Namun ia berpusing; lonjakan jelas kelihatan pada hari bekerja - periodicity mingguan jelas kelihatan, jadi kita boleh mengatakan dengan keyakinan yang agak tinggi bahawa orang sedang membaca dan mengulas tentang Habr dari tempat kerja (tetapi ini tidak pasti).

Ngomong-ngomong, terdapat idea untuk menguji hipotesis sama ada bilangan tolak atau tambah yang diterima berbeza dari hari atau masa dalam sehari, tetapi tidak mungkin untuk mencari hubungan - masa penarafan diberikan tidak disimpan, dan tiada kaitan langsung dengan masa komen.

Ahli

Sudah tentu, saya tidak tahu jumlah sebenar pengguna di tapak. Tetapi mereka yang meninggalkan sekurang-kurangnya satu komen tahun ini ternyata lebih kurang Orang 25000.

Graf bilangan mesej yang ditinggalkan oleh pengguna kelihatan agak menarik:

Habrastatistik: menganalisis komen pembaca

Pada mulanya saya sendiri tidak percaya, tetapi nampaknya tidak ada kesilapan. 5% pengguna meninggalkan 60% mesej. 10% - 74% daripada semua mesej (yang mana, biar saya ingatkan anda, tahun ini, 450 ribu). Majoriti hanya membaca laman web ini, meninggalkan komen sangat jarang, atau tidak meninggalkannya sama sekali (mereka, secara semula jadi, tidak termasuk dalam senarai saya).

Penilaian

Mari kita beralih ke bahagian terakhir dan paling menyeronokkan dalam statistik - penilaian. Atas sebab privasi, saya tidak akan memberikan nama panggilan penuh pengguna, sesiapa yang mahu, saya fikir, akan mengenali diri mereka sendiri.

Pada bilangan komen untuk tahun ini, 5 teratas diduduki oleh VoXXXX (3377 ulasan), 0xdXXXXX (3286 ulasan), strXXXX (3043 ulasan), AmXXXX (2897 ulasan) dan khXXXX (2748 ulasan).

Pada bilangan faedah yang diterima, 5 teratas diduduki oleh amXXXX (1395 ulasan, penilaian +3231/-309), tvXXXX (1544 ulasan, penilaian +3231/-97), WhuXXXX (921 ulasan, penilaian +2288/-13), MTXXXX (1328 ulasan, +1383 /-7) dan amaXXXX (736 ulasan, rating +1340/-16).

Pada penilaian positif mutlak (tiada sesiapa komen dinilai negatif) bahagian atas bahagian atas diduduki oleh Milfgard ΠΈ Boomburum. Sebagai pengecualian, saya membentangkan nama panggilan mereka sepenuhnya, saya rasa mereka layak mendapatnya.

Kelemahannya juga menarik. Atas oleh bilangan tolak yang dikumpul untuk tahun ini mereka diduduki oleh siXX (473 tambah, 699 tolak), khXX (1915 tambah, 573 tolak) dan nicXXXX (456 tambah, 487 tolak). Tetapi seperti yang anda lihat, pengguna ini mempunyai cukup komen positif. Tetapi menurut tolak mutlak Antitopik termasuk vladXXXX (55 ulasan, 84 tolak, 0 tambah), ekoXXXX (77 ulasan, 92 tolak, 1 tambah) dan iMXXXX (225 ulasan, 205 tolak, 12 tambah).

Kesimpulan

Saya tidak dapat mengira semua yang dirancang, tetapi saya harap ia menarik.

Seperti yang anda lihat, walaupun set data dengan bilangan medan yang begitu kecil boleh menyediakan data yang menarik untuk analisis. Masih banyak yang perlu digali, daripada membina "awan perkataan" kepada analisis teks. Jika sebarang keputusan menarik muncul, ia akan diterbitkan.

Sumber: www.habr.com

Tambah komen