5 पॉइंट द्वारा GN⁺ 2025-05-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • लेखक ने Hacker News का पूरा डेटा डाउनलोड किया और उसका DuckDB से विश्लेषण किया
  • करीब 20GB के सभी items (story + comments) को JSON फ़ाइलों में सहेजा, और आगे अपडेट भी संभव रहने लायक संरचना बनाई
  • DuckDB का उपयोग करके ‘Python’, ‘JavaScript’, ‘Ruby’, ‘Rust’ आदि के उल्लेख अनुपात का साप्ताहिक टाइम-सीरीज़ विश्लेषण किया
  • SQL लिखने में LLM का उपयोग किया गया, जिससे शुरुआती लोग भी आसानी से जटिल विश्लेषण कर सके
  • इस प्रोजेक्ट को सार्वजनिक साइट hn.unlurker.com पर देखा जा सकता है, और कोई भी इस डेटा को विश्लेषण के आधार पर दोबारा उपयोग कर सकता है

पूरा Hacker News डेटा स्क्रैप करना

  • hn.unlurker.com बनाते समय Go भाषा में अपना HN API client विकसित किया, और यह latest Go features तथा linter का उपयोग करने वाले एक personal project के रूप में शुरू हुआ
  • Hacker News के items (HN API में story और comments) को 0 से क्रमवार पूरा डाउनलोड करने के लिए scan command लागू की
  • डाउनलोड कई बार रुका, लेकिन restart हो सकने वाली संरचना की वजह से कुछ घंटों में लगभग 20GiB JSON फ़ाइलें इकट्ठी कर ली गईं

DuckDB से text time-series analysis

  • grep से साधारण pattern search करते समय, analysis tool के रूप में DuckDB आज़माया, जो छोटे single-file analysis के लिए optimized एक तेज़ DB है
  • JSON फ़ाइलों को table में लोड किया गया, और items के text में उल्लिखित भाषाओं के अनुपात को साप्ताहिक आधार पर गणना किया गया
  • Python, JavaScript, Java, Ruby, Rust keywords वाले अनुपात को 12-सप्ताह moving average के रूप में visualize करने के लिए SQL लिखा गया
  • DuckDB के नए UI की वजह से इसका उपयोग आसान हुआ, और LLM की मदद से SQL भी आसानी से लिखी जा सकी

नतीजे और आगे की योजना

  • इस स्तर के data analysis के लिए DuckDB ने बेहतरीन performance और usability दी
  • डेटा जुटाने का काम पूरा होने के बाद, लेखक ने आधे मज़ाक और आधे गंभीर अंदाज़ में कहा कि वह "LLM-आधारित सैकड़ों bots को train करके Hacker News की जगह ले लेगा"
  • लेकिन व्यावहारिक रूप से data collection और analysis का उद्देश्य पूरा हो चुका था, और प्रोजेक्ट यहीं समाप्त होता है
  • आगे का analysis अब उस व्यक्ति के हिस्से है जो इस डेटा के आधार पर नई insights निकालना चाहता है

संदर्भ लिंक

1 टिप्पणियां

 
GN⁺ 2025-05-02
Hacker News टिप्पणियाँ
  • दो DB, Hacker News टेबल को अपडेट करते हैं, इसलिए डाउनलोड किए बिना विश्लेषण किया जा सकता है

    • BigQuery के लिए Google Cloud अकाउंट चाहिए, और क्वेरी शायद free tier में आ जाएगी
    • ClickHouse में बिना साइनअप के ब्राउज़र से सीधे क्वेरी चलाई जा सकती है
  • पहले @fesshole Twitter/Bluesky अकाउंट्स पर ऐसा ही कुछ किया था

    • पूरा archive डाउनलोड किया और मॉडल को fine-tune करके और ज़्यादा चतुर confessions जनरेट किए
    • लेकिन आखिर में एहसास हुआ कि एक बेगुनाह मशीन को अनुपयुक्त बातें सिखा दीं
  • Hacker News की सारी सामग्री वाला 20 GiB JSON फ़ाइल था

    • सिर्फ़ टेक्स्ट वाली साइट होने के बावजूद यह मात्रा चौंकाने वाली लगी
    • 18 साल में 20 अरब bytes से ज़्यादा टेक्स्ट पोस्ट किया गया
  • Java के लिए क्वेरी में JavaScript के सभी instances शामिल हो जाते हैं, इसलिए Java ज़रूरत से ज़्यादा represent हो जाता है

  • जिज्ञासा है कि Hacker News डाउनलोड करते समय netiquette क्या है

    • सर्वर पर लोड डालने से पहले क्या Dang से पूछना चाहिए, या मान लेना चाहिए कि बड़ी tech कंपनियाँ यह काम पहले ही कई बार कर चुकी होंगी
  • अनुमान है कि आगे चलकर कई API, duckdb फ़ाइल लौटाने का option देंगी

    • अगर json को वैसे भी database में लोड करना है, तो response में database मिलना ज़्यादा efficient है
  • ऐसा ही काम पहले किया था

    • BigQuery dataset का इस्तेमाल करके data को parquet में export किया, डाउनलोड किया, फिर duckdb से query किया
  • Hacker News की सारी सामग्री लोकल में डाउनलोड करने के बाद, LLM-आधारित bot को train करके contributor की तरह चलाया जा सकता है

    • यह मज़ाक में कहा गया था, लेकिन डर है कि कभी न कभी कोई इसे सच में आज़माएगा
  • cumulative chart का इस्तेमाल न करने का अनुरोध

    • इससे पाठक की धारणा विकृत होने की संभावना अधिक है
    • किसी खास data point की ऊँचाई का अंदाज़ लगाना मुश्किल होता है, और यह dependency का संकेत दे सकता है
  • पहले Hacker News data dump बनाया था

    • हाल के items समय के साथ ज़्यादा update होते हैं, इसलिए ऐसा फ़ीचर अच्छा होगा जिसमें हाल में डाउनलोड किए गए items, पुराने items की तुलना में और पुराने दिखाई दें