5 điểm bởi GN⁺ 2025-05-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tác giả đã tải xuống toàn bộ dữ liệu của Hacker Newsphân tích bằng DuckDB
  • Lưu toàn bộ item (story + comment) dung lượng khoảng 20GB thành file JSON, đồng thời thiết kế để có thể cập nhật về sau
  • Sử dụng DuckDB để phân tích chuỗi thời gian theo tuần về tỷ lệ nhắc đến các từ khóa như ‘Python’, ‘JavaScript’, ‘Ruby’, ‘Rust’
  • Dùng LLM để viết SQL, giúp cả người mới cũng có thể thực hiện các phân tích phức tạp một cách dễ dàng
  • Có thể xem dự án tại trang công khai hn.unlurker.com, và bất kỳ ai cũng có thể tái sử dụng dữ liệu này để phân tích

Cào toàn bộ dữ liệu Hacker News

  • Khi tạo hn.unlurker.com, tác giả đã tự phát triển một HN API client bằng ngôn ngữ Go, khởi đầu như một dự án cá nhân để tận dụng các tính năng Go mới nhất và linter
  • Triển khai lệnh scan để tải tuần tự toàn bộ item của Hacker News (story và comment trong HN API) bắt đầu từ số 0
  • Việc tải xuống đã bị gián đoạn nhiều lần, nhưng nhờ cấu trúc có thể khởi động lại, tác giả vẫn thu được khoảng 20GiB file JSON chỉ sau vài giờ

Phân tích chuỗi thời gian văn bản bằng DuckDB

  • Trong lúc đang dùng grep để tìm kiếm các mẫu đơn giản, tác giả thử dùng DuckDB như một công cụ phân tích; đây là một DB tốc độ cao, tối ưu cho việc phân tích file đơn quy mô nhỏ
  • Nạp file JSON vào bảng và tính tỷ lệ nhắc đến các ngôn ngữ xuất hiện trong nội dung item theo từng tuần
  • Viết SQL để trực quan hóa trung bình trượt 12 tuần của tỷ lệ chứa các từ khóa Python, JavaScript, Java, Ruby, Rust
  • Nhờ UI mới của DuckDB, việc sử dụng trở nên dễ dàng hơn, và với sự hỗ trợ của LLM thì việc viết SQL cũng rất thuận tiện

Kết quả và kế hoạch tiếp theo

  • DuckDB mang lại hiệu năng và tính tiện dụng vượt trội cho việc phân tích dữ liệu ở quy mô này
  • Sau khi hoàn tất việc thu thập dữ liệu, tác giả nửa đùa nửa thật rằng "sẽ huấn luyện hàng trăm bot dựa trên LLM để thay thế Hacker News"
  • Tuy vậy, mục tiêu thực tế là thu thập và phân tích dữ liệu đã hoàn thành, và dự án kết thúc tại đây
  • Tác giả cho biết phần phân tích tiếp theo sẽ là phần việc của những ai muốn rút ra insight mới từ bộ dữ liệu này

Liên kết tham khảo

1 bình luận

 
GN⁺ 2025-05-02
Ý kiến trên Hacker News
  • Có hai DB cập nhật các bảng Hacker News nên có thể phân tích mà không cần tải xuống

    • BigQuery cần tài khoản Google Cloud, và truy vấn có vẻ nằm trong tầng miễn phí
    • ClickHouse có thể chạy truy vấn trực tiếp trên trình duyệt mà không cần đăng ký
  • Trước đây tôi đã làm việc tương tự với tài khoản Twitter/Bluesky @fesshole

    • Đã tải toàn bộ kho lưu trữ xuống và tinh chỉnh mô hình để tạo ra những lời thú tội dí dỏm hơn
    • Nhưng cuối cùng nhận ra rằng mình đã dạy những điều không phù hợp cho một cỗ máy vô tội
  • Tôi từng có một tệp JSON 20 GiB chứa toàn bộ nội dung Hacker News

    • Dù chỉ là một trang toàn văn bản, tôi vẫn ngạc nhiên với dung lượng này
    • Trong 18 năm đã có hơn 20 tỷ byte văn bản được đăng tải
  • Truy vấn về Java bao gồm mọi trường hợp xuất hiện của JavaScript, nên Java bị đại diện quá mức

  • Tôi tự hỏi phép lịch sự trên mạng khi tải toàn bộ Hacker News là gì

    • Có nên hỏi Dang trước khi gây tải cho máy chủ không, hay nên giả định rằng các công ty công nghệ lớn đã làm việc này nhiều lần rồi
  • Dự đoán rằng trong tương lai nhiều API sẽ cung cấp tùy chọn trả về tệp duckdb

    • Nếu đằng nào cũng sẽ nạp json vào cơ sở dữ liệu, thì nhận luôn cơ sở dữ liệu trong phản hồi sẽ hiệu quả hơn
  • Tôi cũng đã làm việc tương tự

    • Đã dùng dataset BigQuery để xuất dữ liệu sang parquet, tải xuống rồi truy vấn bằng duckdb
  • Sau khi tải toàn bộ nội dung Hacker News về máy, có thể huấn luyện một bot dựa trên LLM và vận hành nó như một người đóng góp

    • Đây là câu nói đùa, nhưng tôi lo rằng một ngày nào đó sẽ có người thử làm vậy
  • Có ý kiến đề nghị đừng dùng biểu đồ cộng dồn

    • Chúng rất dễ làm méo mó nhận thức của người đọc
    • Khó đánh giá chiều cao của từng điểm dữ liệu cụ thể và có thể gợi ra quan hệ phụ thuộc
  • Trước đây tôi đã tạo một bản dump dữ liệu Hacker News

    • Các mục gần đây được cập nhật nhiều hơn theo thời gian, nên sẽ hay nếu có tính năng làm cho những mục tải gần đây trông cũ hơn những mục cũ hơn đã được tải từ trước