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 است 288 مگابایت. قدرتمند، تاثیرگذار

زمان نوشتن

بیایید نظرات را بر اساس ساعت گروه بندی کنیم، روزهای هفته و آخر هفته را جداگانه تقسیم کنیم.

Habrastatistics: تجزیه و تحلیل نظرات خوانندگان

در اینجا ما به قدر مطلق علاقه نداریم، بلکه به مقادیر نسبی علاقه داریم. اگر فقط به آن نگاه کنید "همانطور که هست"، معلوم می شودоاکثر نظرات در ساعات کاری از ساعت 10 تا 18 نوشته شده است 😉 از طرفی اینجا منطقه زمانی در نظر گرفته نشده است پس سوال همچنان باز است.

بیایید به توزیع نظرات در طول سال نگاه کنیم:

Habrastatistics: تجزیه و تحلیل نظرات خوانندگان

و با این حال می چرخد؛ یک موج در روزهای هفته به وضوح قابل مشاهده است - تناوب هفتگی به وضوح قابل مشاهده است، بنابراین می توانیم با اطمینان نسبتاً بالایی بگوییم که مردم در حال خواندن و اظهار نظر در مورد Habr از محل کار هستند (اما این قطعی نیست).

به هر حال، ایده ای برای آزمایش این فرضیه وجود داشت که آیا تعداد منفی ها یا مثبت های دریافتی با روز یا ساعت روز متفاوت است، اما یافتن رابطه ممکن نبود - زمانی که امتیاز داده شده ذخیره نمی شود، و هیچ ارتباط مستقیمی با زمان کامنت وجود ندارد.

کاربران

البته من تعداد دقیق کاربران سایت را نمی دانم. اما کسانی که امسال حداقل یک کامنت گذاشتند تقریباً بودند مردم 25000.

نمودار تعداد پیام های باقی مانده توسط کاربران بسیار جالب به نظر می رسد:

Habrastatistics: تجزیه و تحلیل نظرات خوانندگان

در ابتدا من خودم آن را باور نکردم، اما به نظر می رسد اشتباهی وجود ندارد. 5 درصد از کاربران 60 درصد پیام ها را ترک می کنند. 10٪ - 74٪ از همه پیام ها (که یادآوری کنم امسال، 450 هزار). اکثریت به سادگی سایت را می خوانند، به ندرت نظر می گذارند، یا اصلا آنها را ترک نمی کنند (آنها، طبیعتاً در لیست من قرار نگرفتند).

رتبه های

بیایید به آخرین و سرگرم کننده ترین بخش آمار - رتبه بندی ها برویم. به دلایل حفظ حریم خصوصی، نام مستعار کاربران را کامل نمی گذارم، هرکسی که بخواهد فکر می کنم خودش را می شناسد.

بر تعداد نظرات برای امسال، 5 مورد برتر توسط VoXXXX (3377 نظر)، 0xdXXXXXX (3286 نظر)، strXXXX (3043 نظر)، AmXXX (2897 نظر) و khXXXX (2748 نظر) اشغال شده اند.

بر تعداد مزایای دریافت شده، 5 مورد برتر توسط amXXXX (1395 نظر، رتبه بندی +3231/-309)، tvXXXX (1544 نظر، رتبه بندی +3231/-97)، WhuXXXX (921 نظر، رتبه بندی +2288/-13)، MTXX (1328 نظر، +1383 /-7) و amaXXXX (736 نظر، رتبه +1340/-16).

بر امتیاز مثبت مطلق (هیچکس نظر دارای امتیاز منفی) بالای صفحه توسط میلفگارد и بومبوروم. من به عنوان یک استثنا، نام مستعار آنها را به طور کامل ارائه می کنم، فکر می کنم آنها شایسته آن هستند.

نکات منفی نیز جالب است. بالا توسط تعداد منهای جمع آوری شده برای این سال آنها را siXX (473 مثبت، 699 منفی)، khXX (1915 مثبت، 573 منفی) و nicXXXXX (456 مثبت، 487 منفی) اشغال کرده‌اند. اما همانطور که می بینید این کاربران به اندازه کافی نظرات مثبت دارند. اما با توجه به منهای مطلق آنتی تاپیک شامل vladXXXXXX (55 نظر، 84 منفی، 0 مثبت)، ekoXXXX (77 نظر، 92 منهای، 1 مثبت) و iMXXX (225 نظر، 205 منهای، 12 مثبت) است.

نتیجه

من قادر به محاسبه همه چیز برنامه ریزی نشده بودم، اما امیدوارم جالب بوده باشد.

همانطور که می بینید، حتی یک مجموعه داده با این تعداد فیلد کم می تواند داده های جالبی برای تجزیه و تحلیل ارائه دهد. هنوز چیزهای زیادی برای کاوش وجود دارد، از ساختن یک "ابر کلمات" گرفته تا تجزیه و تحلیل متن. اگر نتایج جالبی به دست بیاید، منتشر خواهد شد.

منبع: www.habr.com

اضافه کردن نظر