كيف حللت هبر ، الجزء الأول: الاتجاهات

عندما انتهى أوليفر رأس السنة الجديدة ، لم يكن لدي ما أفعله ، وقررت تنزيل جميع المقالات من Habrahabr (والمنصات ذات الصلة) على جهاز الكمبيوتر الخاص بي واستكشافها.

كان هناك العديد من القصص الشيقة. أولها تطوير تنسيق وموضوعات المقالات على مدار 12 عامًا من وجود الموقع. على سبيل المثال ، ديناميكيات بعض الموضوعات إرشادية تمامًا. استمرار - تحت الخفض.

كيف حللت هبر ، الجزء الأول: الاتجاهات

عملية الاعراب

لفهم كيفية تطور Habr ، كان من الضروري مراجعة جميع مقالاته واستخراج المعلومات الوصفية منها (على سبيل المثال ، التواريخ). كان التجاوز سهلاً ، لأن الروابط إلى جميع المقالات تبدو مثل "habrahabr.ru/post/337722/" ، ويتم إعطاء الأرقام بالترتيب الدقيق. مع العلم أن المنشور الأخير يحتوي على رقم أقل بقليل من 350 ألفًا ، فقد مررت للتو بكل معرف المستند المحتمل في حلقة (كود Python):

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

وظيفة download_document يحاول تحميل الصفحة بالمعرف المقابل ويحاول استخراج معلومات مفيدة من بنية html.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Download and process a Habr document and its comments """
    # выгрузка документа
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # парсинг документа
    soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # такое бывает, если статья не существовала или удалена
        doc['status'] = 'title_not_found'
    else:
        doc['status'] = 'ok'
        doc['title'] = soup.find("span", {"class": "post__title-text"}).text
        doc['text'] = soup.find("div", {"class": "post__text"}).text
        doc['time'] = soup.find("span", {"class": "post__time"}).text
        # create other fields: hubs, tags, views, comments, votes, etc.
        # ...
    # сохранение результата в отдельный файл
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

في عملية الإعراب ، اكتشفت عدة أشياء جديدة.

أولاً ، يقولون إن إنشاء عمليات أكثر من عدد النوى في المعالج لا طائل من ورائه. لكن في حالتي ، اتضح أن المورد المحدد ليس المعالج ، ولكن الشبكة ، و 100 عملية تعمل بشكل أسرع من 4 أو ، على سبيل المثال ، 20.

ثانيًا ، في بعض المنشورات ، كانت هناك مجموعات من الأحرف الخاصة - على سبيل المثال ، التعبيرات الملطفة مثل "٪ & # @". اتضح أن html.parser، الذي استخدمته أولاً ، يتفاعل مع المجموعة &# مؤلم ، معتبرا أنها بداية الكيان html. كنت سأفعل السحر الأسود بالفعل ، لكن المنتدى اقترح أنه يمكنك فقط تغيير المحلل اللغوي.

ثالثًا ، تمكنت من تفريغ جميع المطبوعات باستثناء ثلاثة. تم حذف المستندات المرقمة 65927 و 162075 و 275987 على الفور بواسطة برنامج مكافحة الفيروسات الخاص بي. هذه مقالات ، على التوالي ، حول سلسلة جافا سكريبت التي تقوم بتنزيل ملف pdf ضار ، وبرامج الفدية النصية القصيرة في شكل مجموعة من المكونات الإضافية للمتصفح ، وموقع CrashSafari.com الذي يرسل أجهزة iPhone لإعادة التشغيل. اكتشف برنامج مكافحة الفيروسات مقالًا آخر لاحقًا ، أثناء فحص النظام: انشر 338586 حول البرامج النصية على موقع متجر الحيوانات الأليفة التي تستخدم معالج المستخدم لتعدين العملة المشفرة. لذلك يمكننا أن نعتبر أن عمل برنامج مكافحة الفيروسات مناسب تمامًا.

تبين أن المقالات "الحية" تمثل فقط نصف الحد الأقصى المحتمل - 166307 قطعة. بالنسبة للباقي ، يقدم هابر خيارات "الصفحة قديمة أو تم حذفها أو لم تكن موجودة على الإطلاق". حسنًا ، يمكن أن يحدث أي شيء.

أعقب تحميل المقالات العمل الفني: على سبيل المثال ، يجب تحويل تواريخ النشر من التنسيق "21 ديسمبر 2006 الساعة 10:47 صباحًا" إلى المعيار datetime، و "12,8 ألف" مشاهدة - في 12800. في هذه المرحلة ، ظهرت بعض الحوادث الأخرى. الأكثر تسلية يتعلق بعدد الأصوات وأنواع البيانات: بعض المنشورات القديمة بها تجاوز عدد صحيح وحصلت على 65535 صوتًا لكل منها.

كيف حللت هبر ، الجزء الأول: الاتجاهات

نتيجة لذلك ، أخذت نصوص المقالات (بدون صور) 1.5 غيغابايت ، والتعليقات مع المعلومات الفوقية - 3 أخرى ، وحوالي مائة ميغابايت - معلومات تعريفية حول المقالات. يمكن الاحتفاظ بها بالكامل في ذاكرة الوصول العشوائي ، والتي كانت مفاجأة سارة بالنسبة لي.

لقد بدأت تحليل المقالات ليس من النصوص نفسها ، ولكن من المعلومات الوصفية: التواريخ والعلامات والمحاور وجهات النظر والإعجابات. اتضح أنها تستطيع أن تقول الكثير.

اتجاهات التنمية Habrahabr

تم نشر المقالات على الموقع منذ عام 2006 ؛ بشكل مكثف - في 2008-2016.

كيف حللت هبر ، الجزء الأول: الاتجاهات

ليس من السهل تقييم مدى فعالية قراءة هذه المقالات في أوقات مختلفة. تلقت النصوص من عام 2012 وما دونه مزيدًا من التعليقات والتقييمات ، لكن النصوص الأحدث لديها المزيد من المشاهدات والإشارات المرجعية. تصرفت هذه المقاييس بالطريقة نفسها (النصف) مرة واحدة فقط ، في عام 2015. ربما ، في حالة الأزمة الاقتصادية والسياسية ، تحول انتباه القراء من مدونات تكنولوجيا المعلومات إلى موضوعات أكثر إيلامًا.

كيف حللت هبر ، الجزء الأول: الاتجاهات

بالإضافة إلى المقالات نفسها ، قمت بتنزيل المزيد من التعليقات عليها. كان هناك 6 ملايين تعليق ، ومع ذلك ، تم حظر 240 ألف منهم ("طار جسم غامض ونشر هذا النقش هنا"). من الخصائص المفيدة للتعليقات أن لها طابعًا زمنيًا. من خلال دراسة وقت التعليقات ، يمكنك فهم وقت قراءة المقالات تقريبًا.

اتضح أن معظم المقالات مكتوبة ويتم التعليق عليها في مكان ما من الساعة 10 صباحًا حتى الساعة 20 مساءً ، أي في يوم عمل نموذجي في موسكو. قد يعني هذا أن هبر يُقرأ لأغراض مهنية ، وأن هذه طريقة جيدة للتسويف في العمل. بالمناسبة ، هذا التوزيع للوقت من اليوم مستقر منذ تأسيس هبر وحتى يومنا هذا.

كيف حللت هبر ، الجزء الأول: الاتجاهات

ومع ذلك ، فإن الميزة الرئيسية للطابع الزمني للتعليق ليست الوقت من اليوم ، ولكن مدة "الحياة النشطة" للمقالة. لقد حسبت كيف يتم توزيع الوقت من نشر المقال إلى تعليقه. اتضح الآن أن متوسط ​​التعليق (الخط الأخضر) يأتي في حوالي 20 ساعة ، أي في اليوم الأول بعد النشر ، في المتوسط ​​، يتبقى أكثر من نصف جميع التعليقات على المقالة. وفي غضون يومين يتركون 75٪ من جميع التعليقات. في الوقت نفسه ، تمت قراءة المقالات السابقة بشكل أسرع - على سبيل المثال ، في عام 2010 ، جاء نصف التعليقات في الساعات الست الأولى.

كيف حللت هبر ، الجزء الأول: الاتجاهات

لقد فوجئت بإطالة التعليقات: فقد تضاعف متوسط ​​عدد الشخصيات في تعليق تقريبًا على مدار عمر هبر!

كيف حللت هبر ، الجزء الأول: الاتجاهات

ردود الفعل أسهل من التعليقات هي التصويتات. على عكس العديد من الموارد الأخرى ، لا يمكنك وضع الإيجابيات على Habré فحسب ، بل أيضًا على العيوب. ومع ذلك ، لا يستغل القراء الفرصة الأخيرة كثيرًا: تبلغ الحصة الحالية من غير المعجبين حوالي 15٪ من جميع الأصوات المدلى بها. كان هناك المزيد ، لكن بمرور الوقت ، أصبح القراء أكثر لطفًا.

كيف حللت هبر ، الجزء الأول: الاتجاهات

النصوص نفسها تغيرت بمرور الوقت. على سبيل المثال ، لا يتوقف الطول النموذجي للنص عن النمو بشكل مطرد منذ إطلاق الموقع ، على الرغم من الأزمات. في غضون عقد من الزمان ، أصبحت النصوص أطول بعشر مرات تقريبًا!

كيف حللت هبر ، الجزء الأول: الاتجاهات

كما تغير أسلوب النصوص (للتقريب الأول). خلال السنوات الأولى من وجود هبر ، على سبيل المثال ، ازدادت حصة الكود والأرقام في النصوص:

كيف حللت هبر ، الجزء الأول: الاتجاهات

بعد فهم الديناميكيات العامة للموقع ، قررت قياس مدى تغير شعبية الموضوعات المختلفة. يمكن تحديد الموضوعات تلقائيًا من النصوص ، ولكن بالنسبة للمبتدئين ، لا يمكنك إعادة اختراع العجلة ، ولكن يمكنك استخدام العلامات الجاهزة التي تم إلصاقها بواسطة مؤلفي كل مقالة. لقد رسمت أربعة اتجاهات نموذجية على الرسم البياني. سيطر موضوع "Google" في البداية (ربما يرجع ذلك أساسًا إلى تحسين محركات البحث) ، ولكنه كان يفقد الوزن على مر السنين. كان جافا سكريبت موضوعًا شائعًا ويستمر في النمو ببطء ، لكن التعلم الآلي بدأ يكتسب شعبية بسرعة في السنوات الأخيرة فقط. من ناحية أخرى ، ظل نظام Linux على نفس القدر من الأهمية طوال العقد.

كيف حللت هبر ، الجزء الأول: الاتجاهات

بالطبع ، أصبحت مهتمًا بالموضوعات التي تجذب المزيد من نشاط القراء. لقد حسبت متوسط ​​عدد المشاهدات والأصوات والتعليقات في كل موضوع. إليكم ما حدث:

  • الموضوعات الأكثر مشاهدة: اردوينو ، تصميم الويب ، تطوير الويب ، الملخص ، الروابط ، css ، html ، html5 ، nginx ، الخوارزميات.
  • الموضوعات الأكثر "إعجابًا": فكونتاكتي ، فكاهة ، مسج ، أوبرا ، ج ، html ، تطوير الويب ، html5 ، css ، تصميم الويب.
  • الموضوعات الأكثر مناقشة: الأوبرا ، سكايب ، المستقل ، فكونتاكتي ، أوبونتو ، العمل ، نوكيا ، إنجينكس ، أردوينو ، فايرفوكس.

بالمناسبة ، نظرًا لأنني أقارن الموضوعات ، يمكنك ترتيبها حسب التكرار (ومقارنة النتائج بـ مقال مماثل من عام 2013).

  • طوال سنوات وجود Habr ، كانت العلامات الأكثر شيوعًا (بترتيب تنازلي) هي google و android و javascript و microsoft و linux و php و apple و java و python والبرمجة والشركات الناشئة والتطوير و ios و startup والشبكات الاجتماعية
  • في عام 2017 ، كانت الأكثر شيوعًا هي جافا سكريبت ، بيثون ، جافا ، أندرويد ، تطوير ، لينكس ، سي ++ ، برمجة ، php ، c # ، iOS ، تعلم الآلة ، أمن المعلومات ، مايكروسوفت ، رد

عند مقارنة هذه التصنيفات ، يمكن للمرء الانتباه ، على سبيل المثال ، إلى مسيرة بايثون المنتصرة وانقراض php ، أو "غروب الشمس" لموضوعات بدء التشغيل وظهور التعلم الآلي.

لا تحتوي كل العلامات الموجودة على حبري على مثل هذا التلوين الموضوعي الواضح. على سبيل المثال ، إليك عشرات العلامات التي اجتمعت مرة واحدة فقط ، لكنها بدت مضحكة بالنسبة لي. لذلك: "الفكرة هي القوة الدافعة للتقدم" ، "التمهيد من صورة قرص مرن" ، "ولاية أيوا" ، "دراما" ، "سوبراليش" ، "محرك بخاري" ، "أشياء يجب القيام بها يوم السبت" ، "لدي ثعلب في مفرمة لحم "،" اتضح كما هو الحال دائمًا "،" لم نتمكن من الخروج بعلامات مضحكة ". لتحديد موضوع هذه المقالات ، لا تكفي العلامات - سيتعين عليك إجراء نمذجة موضوعية على نصوص المقالات.

سيكون هناك تحليل أكثر تفصيلاً لمحتوى المقالات في المنشور التالي. أولاً ، سأقوم ببناء نموذج يتنبأ بعدد مشاهدات الصفحة لمقالة بناءً على محتواها. ثانيًا ، أريد تعليم الشبكة العصبية إنشاء نصوص بنفس أسلوب مؤلفي هبر. لذا اشترك 🙂

PS وهنا هو صوت الصفير مجموعة البيانات.

المصدر: www.habr.com

إضافة تعليق