5 คะแนน โดย GN⁺ 2025-05-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ผู้เขียนได้ดาวน์โหลดข้อมูลทั้งหมดของ Hacker News และนำมาวิเคราะห์ด้วย DuckDB
  • จัดเก็บไอเท็มทั้งหมด (สตอรี + คอมเมนต์) ขนาดราว 20GB เป็นไฟล์ JSON และออกแบบให้สามารถอัปเดตต่อในอนาคตได้
  • ใช้ DuckDB ทำการวิเคราะห์อนุกรมเวลาแบบรายสัปดาห์ของสัดส่วนการกล่าวถึงคำอย่าง ‘Python’, ‘JavaScript’, ‘Ruby’, ‘Rust’ เป็นต้น
  • ใช้ LLM ช่วยเขียน SQL ทำให้แม้แต่มือใหม่ก็ทำการวิเคราะห์ที่ซับซ้อนได้ง่าย
  • โปรเจกต์นี้ดูได้บนเว็บไซต์สาธารณะ hn.unlurker.com และใครก็สามารถนำข้อมูลนี้ไปต่อยอดเพื่อการวิเคราะห์ได้

ดึงข้อมูล Hacker News ทั้งหมด

  • ระหว่างสร้าง hn.unlurker.com ผู้เขียนได้พัฒนา HN API client ขึ้นเองด้วยภาษา Go โดยเริ่มจากโปรเจกต์ส่วนตัวที่ใช้ความสามารถใหม่ของ Go และ linter
  • สร้างคำสั่ง scan สำหรับดาวน์โหลดไอเท็มของ Hacker News (สตอรีและคอมเมนต์ใน HN API) ทั้งหมดแบบเรียงลำดับตั้งแต่หมายเลข 0 เป็นต้นไป
  • แม้การดาวน์โหลดจะหยุดไปหลายครั้ง แต่ด้วยโครงสร้างที่กลับมาทำงานต่อได้ จึงเก็บไฟล์ JSON ขนาดประมาณ 20GiB ได้ภายในไม่กี่ชั่วโมง

วิเคราะห์อนุกรมเวลาของข้อความด้วย DuckDB

  • เดิมทีใช้ grep ค้นหารูปแบบอย่างง่าย ก่อนจะลองใช้ DuckDB เป็นเครื่องมือวิเคราะห์ ซึ่งเป็นฐานข้อมูลความเร็วสูงที่เหมาะกับการวิเคราะห์ไฟล์เดี่ยวขนาดเล็ก
  • นำไฟล์ JSON เข้าเป็นตาราง และคำนวณสัดส่วนรายสัปดาห์ของภาษาที่ถูกกล่าวถึงในข้อความของไอเท็ม
  • เขียน SQL เพื่อทำภาพข้อมูลของสัดส่วนคีย์เวิร์ดอย่าง Python, JavaScript, Java, Ruby, Rust ด้วยค่าเฉลี่ยเคลื่อนที่ 12 สัปดาห์
  • ด้วย UI ใหม่ของ DuckDB จึงใช้งานได้ง่ายขึ้น และยังเขียน SQL ได้สะดวกด้วยความช่วยเหลือของ LLM

ผลลัพธ์และแผนถัดไป

  • DuckDB มอบประสิทธิภาพและความง่ายในการใช้งานที่ยอดเยี่ยมสำหรับการวิเคราะห์ข้อมูลขนาดระดับนี้
  • หลังจากเก็บข้อมูลเสร็จ ผู้เขียนพูดแบบกึ่งล้อเล่นกึ่งจริงจังว่า “จะฝึกบอตที่ใช้ LLM หลายร้อยตัวมาแทนที่ Hacker News
  • อย่างไรก็ตาม เป้าหมายหลักด้านการเก็บและวิเคราะห์ข้อมูลนั้นสำเร็จแล้ว และโปรเจกต์ก็จบลงเพียงเท่านี้
  • สำหรับการวิเคราะห์ต่อจากนี้ ผู้เขียนบอกว่าเป็นหน้าที่ของคนที่จะนำข้อมูลนี้ไปต่อยอดเพื่อค้นหาอินไซต์ใหม่ ๆ

ลิงก์อ้างอิง

1 ความคิดเห็น

 
GN⁺ 2025-05-02
ความเห็นจาก Hacker News
  • มีฐานข้อมูล 2 แห่งที่อัปเดตตารางของ Hacker News อยู่แล้ว จึงสามารถวิเคราะห์ได้โดยไม่ต้องดาวน์โหลด

    • BigQuery ต้องมีบัญชี Google Cloud และคิวรีน่าจะอยู่ในระดับใช้งานฟรี
    • ClickHouse สามารถรันคิวรีได้โดยตรงในเบราว์เซอร์โดยไม่ต้องสมัครใช้งาน
  • ก่อนหน้านี้เคยทำงานคล้ายกันกับบัญชี Twitter/Bluesky ของ @fesshole

    • ดาวน์โหลดทั้งอาร์ไคฟ์มาแล้วนำโมเดลไป fine-tune เพื่อสร้างคำสารภาพที่มีไหวพริบมากขึ้น
    • แต่สุดท้ายก็พบว่าตัวเองกำลังสอนเนื้อหาที่ไม่เหมาะสมให้กับเครื่องจักรผู้ไร้เดียงสา
  • เคยมีไฟล์ JSON ขนาด 20 GiB ที่บรรจุเนื้อหาทั้งหมดของ Hacker News

    • แม้จะเป็นเว็บไซต์ที่มีแต่ข้อความล้วน ก็ยังรู้สึกประหลาดใจกับปริมาณระดับนี้
    • ตลอด 18 ปี มีข้อความมากกว่า 20 พันล้านไบต์ถูกโพสต์
  • การคิวรีคำว่า Java จะรวมทุกอินสแตนซ์ของ JavaScript ไปด้วย ทำให้ Java ถูกนับมากเกินจริง

  • สงสัยว่ามารยาทที่เหมาะสมในการดาวน์โหลด Hacker News คืออะไร

    • ควรติดต่อ Dang ก่อนจะเพิ่มภาระให้เซิร์ฟเวอร์หรือไม่ หรือควรสมมติว่าบริษัทเทคโนโลยีขนาดใหญ่คงทำแบบนี้กันมาหลายครั้งแล้ว
  • คาดว่าในอนาคต API จำนวนมากจะมีตัวเลือกให้ส่งคืนไฟล์ duckdb

    • ถ้ายังไงก็ต้องโหลด json เข้าไปในฐานข้อมูลอยู่แล้ว การได้รับฐานข้อมูลกลับมาเป็นคำตอบย่อมมีประสิทธิภาพกว่า
  • เคยทำงานลักษณะคล้ายกัน

    • ใช้ชุดข้อมูล BigQuery ส่งออกข้อมูลเป็น parquet แล้วดาวน์โหลดมาคิวรีด้วย duckdb
  • หลังจากดาวน์โหลดเนื้อหาทั้งหมดของ Hacker News มาไว้ในเครื่องแล้ว ก็สามารถฝึกบอตที่ใช้ LLM และให้ทำงานเป็นผู้มีส่วนร่วมได้

    • พูดแบบติดตลก แต่ก็กลัวว่าสักวันจะมีคนลองทำจริง
  • มีคำขอว่าอย่าใช้กราฟสะสม

    • เพราะมีโอกาสสูงที่จะบิดเบือนการรับรู้ของผู้อ่าน
    • ตัดสินความสูงของจุดข้อมูลแต่ละจุดได้ยาก และอาจสื่อว่ามีความสัมพันธ์เชิงพึ่งพากัน
  • ในอดีตเคยทำ data dump ของ Hacker News

    • รายการล่าสุดมักถูกอัปเดตเพิ่มเติมเมื่อเวลาผ่านไป จึงคิดว่าน่าจะดีถ้ามีฟีเจอร์ที่ทำให้รายการที่ดาวน์โหลดล่าสุดดูใหม่กว่ารายการที่เก่ากว่า แทนที่จะดูเก่ากว่า