5 puan yazan GN⁺ 2025-05-02 | 1 yorum | WhatsApp'ta paylaş
  • Yazar, Hacker News’ün tüm verilerini indirip bunu DuckDB ile analiz etti
  • Toplam 20GB boyutundaki tüm öğeleri (hikâyeler + yorumlar) JSON dosyaları olarak kaydetti ve ileride güncellenebilecek şekilde kurguladı
  • DuckDB kullanarak ‘Python’, ‘JavaScript’, ‘Ruby’, ‘Rust’ gibi ifadelerin anılma oranlarını haftalık bazda zaman serisi olarak analiz etti
  • SQL yazımında LLM kullandı, böylece yeni başlayanlar da karmaşık analizleri kolayca yapabildi
  • İlgili proje herkese açık hn.unlurker.com sitesinde görülebiliyor ve herkes bu verileri analiz temelli olarak yeniden kullanabiliyor

Tüm Hacker News verisini kazımak

  • hn.unlurker.comu oluştururken Go diliyle kendi HN API istemcisini geliştirdi; bu, en yeni Go özellikleri ve linter’ları kullandığı kişisel bir proje olarak başladı
  • Hacker News öğelerini (HN API’deki hikâyeler ve yorumlar) 0 numaradan başlayarak sırayla tamamen indiren scan komutunu hayata geçirdi
  • İndirme işlemi birkaç kez dursa da, yeniden başlatılabilir yapı sayesinde birkaç saat içinde yaklaşık 20GiB JSON dosyası elde etti

DuckDB ile metin zaman serisi analizi

  • grep ile basit desen aramaları yaparken, analiz aracı olarak DuckDB’yi denedi; küçük ölçekli tek dosya analizleri için optimize edilmiş hızlı bir veritabanı
  • JSON dosyalarını tabloya aktararak, öğe metinlerinde geçen dillerin oranını haftalık bazda hesapladı
  • Python, JavaScript, Java, Ruby, Rust anahtar kelimelerini içeren oranları 12 haftalık hareketli ortalama ile görselleştirebilecek SQL yazdı
  • DuckDB’nin yeni arayüzü sayesinde kullanım kolaylaştı ve LLM yardımıyla SQL yazmak da oldukça kolay hale geldi

Sonuçlar ve sonraki plan

  • DuckDB, bu ölçekteki veri analizi için olağanüstü performans ve kullanılabilirlik sundu
  • Veri toplamayı tamamladıktan sonra yazar, yarı şaka yarı ciddi biçimde "LLM tabanlı yüzlerce bot eğitip Hacker News’ün yerini alacağım" dedi
  • Ancak veri toplama ve analiz konusundaki asıl amaca ulaşıldı ve proje burada sonlandı
  • Bundan sonraki analizlerin, bu verilerden yeni içgörüler çıkaracak kişilere kaldığını belirtti

Referans bağlantıları

1 yorum

 
GN⁺ 2025-05-02
Hacker News yorumları
  • İki veritabanı Hacker News tablolarını güncelliyor; böylece indirme yapmadan analiz etmek mümkün

    • BigQuery bir Google Cloud hesabı gerektiriyor ve sorgular muhtemelen ücretsiz katman içinde kalıyor
    • ClickHouse ise kayıt olmadan doğrudan tarayıcıda sorgu çalıştırmaya izin veriyor
  • Geçmişte @fesshole Twitter/Bluesky hesabı için benzer bir çalışma yapmıştım

    • Tüm arşivi indirip modeli ince ayar yaptım ve daha yaratıcı itiraflar ürettim
    • Ama sonunda masum bir makineye uygunsuz şeyler öğrettiğimi fark ettim
  • Hacker News’in tüm içeriğini barındıran 20 GiB’lık bir JSON dosyam vardı

    • Yalnızca metin içeren bir site olmasına rağmen bu miktara şaşırdım
    • 18 yılda 20 milyardan fazla bayt metin paylaşılmış
  • Java için yapılan sorgular, JavaScript’in tüm örneklerini de içerdiği için Java olduğundan fazla temsil ediliyor

  • Hacker News’i indirirken netiketin ne olduğunu merak ediyorum

    • Sunucuya yük bindirmeden önce Dang’e sormak mı gerekir, yoksa büyük teknoloji şirketlerinin bunu zaten defalarca yaptığını mı varsaymak gerekir
  • İleride birçok API’nin duckdb dosyası döndürme seçeneği sunacağını öngörüyorum

    • Nasıl olsa json veritabanına yüklenecekse, yanıt olarak doğrudan veritabanı almak daha verimli
  • Benzer bir işi yapmıştım

    • BigQuery veri kümesini kullanıp veriyi parquet olarak dışa aktardım, indirdim ve duckdb ile sorguladım
  • Tüm Hacker News içeriğini yerelde indirdikten sonra, LLM tabanlı bir bot eğitip katkı sağlayan bir kullanıcı gibi çalıştırmak mümkün olabilir

    • Bunu şaka olarak söyledim ama bir gün birinin gerçekten denemesinden korkuyorum
  • Kümülatif grafikler kullanılmaması yönünde bir talep

    • Okuyucunun algısını çarpıtma ihtimali yüksek
    • Belirli veri noktalarının yüksekliğini değerlendirmek zor ve bağımlılık varmış izlenimi verebilir
  • Geçmişte Hacker News veri dökümleri hazırlamıştım

    • Son dönem öğeleri zaman içinde daha fazla güncellendiği için, yakın zamanda indirilen öğelerin daha eski öğelerden daha da eski görünmesini sağlayan bir özellik güzel olurdu