Hello Habr. DALAM
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
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.
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:
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:
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
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