- โปรเจกต์ Data Science ที่ดำเนินมาเป็นเวลา 1,600 วันจบลงด้วยความล้มเหลวเมื่อความสนใจค่อยๆ ลดลง
- เพื่อทดลองความท้าทายใหม่ในการจัดการข้อมูลข้อความ จึงทำโปรเจกต์ "การเก็บและวิเคราะห์ข้อมูล news ticker"
- ในเดือนมีนาคม 2020 เลือก news ticker ของ Tagesschau เว็บไซต์ข่าวสาธารณะของเยอรมนีที่ให้ข่าวเกี่ยวกับ COVID-19 เป็นแหล่งข้อมูล
- ในไตรมาส 3 ปี 2022 เมื่อ COVID-19 มีความสำคัญลดลง จึงขยายไปยัง news ticker ที่เกี่ยวกับสงครามยูเครน-รัสเซีย
- ทำการวิเคราะห์ทั้งเมตาแพตเทิร์นของข้อมูล (เช่น ความถี่ในการเผยแพร่) และความหมายตามหัวข้อ
- ทำเพียงการสำรวจข้อมูลระยะสั้นเท่านั้น โดย การวิเคราะห์ที่เป็นรูปธรรมยังไม่เสร็จสมบูรณ์
- ในไตรมาส 3 ปี 2024 โปรเจกต์ถูกยุติลงเพราะความสนใจลดลงและมีเวลาไม่เพียงพอ
การเก็บข้อมูลและการออกแบบระบบ
- ตั้งแต่ปี 2020 ถึง 2024 เป็นเวลา 1,600 วัน มีการเก็บ URL ของข้อมูลข่าวทุกวันและดาวน์โหลดข้อมูลดิบ
- Tagesschau มีรายการข่าวสั้นประจำวัน โดยแต่ละรายการประกอบด้วย timestamp, headline, ข้อความเนื้อหา และองค์ประกอบมัลติมีเดีย
- สร้าง data pipeline แบบกึ่งอัตโนมัติด้วยการทำงานด้วยมือร่วมกับ Python เพื่อแปลงข้อมูลไร้โครงสร้างให้เป็น news snippet แบบมีโครงสร้าง
- เนื่องจากการทำ URL collection แบบอัตโนมัติทำได้ยาก จึงเลือกวิธีเข้าเว็บไซต์ทุกวันเพื่อเก็บลิงก์ด้วยตนเอง เพราะ Tagesschau มี URL schema ที่ไม่มีโครงสร้างแน่นอน
- ทุก 4-8 สัปดาห์ จะใช้ Python ประมวลผลหน้า HTML แบบเป็นชุดและบันทึกเป็นข้อมูลดิบ
- ใช้ BeautifulSoup4 ในการ parse HTML และบันทึกลงฐานข้อมูล SQLite
- แม้หลายส่วนของโปรเจกต์จะถูกทำให้เป็นอัตโนมัติ แต่ ETL pipeline แบบ manual และการวิเคราะห์จริงยังไม่ได้ทำให้เป็นอัตโนมัติ
- เน้นการเก็บข้อมูล HTML ดิบไว้เพื่อรองรับการเปลี่ยนแปลงของโครงสร้าง DOM
บทเรียนจากความล้มเหลวของโปรเจกต์
- คำนึงถึงการเล่าเรื่อง:
- วางแนวทางการเล่าเรื่องตั้งแต่ช่วงเริ่มต้นของโปรเจกต์ เพื่อให้ออกแบบผลลัพธ์ให้แชร์ได้ง่าย
- ทำผลลัพธ์ออกมาให้เร็ว:
- อย่าเอาแต่เก็บข้อมูล แต่ควร ทำการวิเคราะห์เบื้องต้นอย่างรวดเร็วด้วยชุดข้อมูลขนาดเล็ก
- เผยแพร่ผลลัพธ์ไปพร้อมกับ รักษาแรงจูงใจในการทำงาน (ใช้แนวทาง “Show Your Work”)
- ระบบอัตโนมัติ:
- ทำให้การเก็บข้อมูลและ ETL pipeline เป็นอัตโนมัติให้มากที่สุด เพื่อลดงานซ้ำๆ
- ถ้าเป็นตอนนี้ ผู้เขียนคงจะใช้ AI agent ที่อาศัย LLM
- ประเมินความถี่ในการเก็บข้อมูล:
- กำหนดรอบการเก็บข้อมูลไว้ล่วงหน้า (เช่น ทุกวัน vs ทุก 30 วินาที)
- กำหนดความถี่ในการเก็บข้อมูลที่สามารถทำให้เป็นอัตโนมัติได้
- เก็บข้อมูลดิบไว้:
- เก็บข้อมูลดิบไว้เพื่อให้รองรับ logic การ parse ที่เปลี่ยนไปในอนาคตได้
- ใช้คลาวด์:
- สร้างโครงสร้างพื้นฐานที่เรียบง่ายและเชื่อถือได้ พร้อมเปิดโอกาสให้ได้เรียนรู้ทักษะที่ใช้จริงในการทำงาน
บทสรุป: เติบโตผ่านความล้มเหลว
- แม้จะเป็นโปรเจกต์ที่ล้มเหลว แต่ก็กลายเป็นประสบการณ์การเรียนรู้ที่ช่วยให้เป็น "นักปฏิบัติด้านข้อมูลที่ดีกว่าเดิม"
- ความล้มเหลวของโปรเจกต์ data science คือ ประสบการณ์การเรียนรู้ที่มีค่า และเป็นโอกาสในการสะสม “รอยแผลจากสนามจริง”
- น่าเสียดายที่ไม่ได้ใช้โอกาสด้านระบบอัตโนมัติผ่านการประมวลผลภาษาธรรมชาติ
- การพลาดโอกาสในการวิเคราะห์ news snippet ราว 100,000 รายการก็เป็นเรื่องน่าเสียดายมากเช่นกัน
- ยังมี news ticker ใหม่ๆ อย่างการเลือกตั้งสหรัฐฯ ปี 2024 ออกมาอย่างต่อเนื่อง ทำให้คนอื่นสามารถรับช่วงต่อได้
- ผู้เขียนหวังว่าจะมีคนที่สนใจสานต่อโปรเจกต์นี้ และพร้อมจะแชร์ข้อมูลทั้งหมด
“Go out and build something!”
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มองว่าโปรเจกต์นี้ไม่ถึงกับเรียกว่าล้มเหลว แต่เป็นการลองทำด้วยความอยากรู้อยากเห็นแล้วหยุดไปมากกว่า แค่ได้เขียนบล็อกและถูกนำไปแนะนำบน HN ก็ถือว่าประสบความสำเร็จแล้ว
การทำเว็บสแครปปิงยังคงเป็นเรื่องยาก และหลายเว็บไซต์ก็พยายามอย่างมากที่จะป้องกันการสแครป
มีขั้นตอนทำมือโดยเข้าเว็บไซต์ Tagesschau ทุกวันเพื่อเก็บลิงก์ ซึ่งไม่ใช่แผนการดำเนินงานที่เหมาะสม
เคยทำโปรเจกต์งานอดิเรกด้าน data science เกี่ยวกับ COVID แต่ผ่านไป 6 เดือนก็หมดความสนใจ ขณะที่ตัว scraper บนคลาวด์ยังคงทำงานอยู่
ควรใช้ RSS feed เพื่อทำให้อัตโนมัติแทนงานที่ต้องทำด้วยมือ
การได้รับฟีดแบ็กตั้งแต่ช่วงต้นของโปรเจกต์เป็นเรื่องสำคัญ เพราะช่วยปรับทิศทางของโปรเจกต์และเปิดโอกาสให้กลับมาสนใจอีกครั้งได้
ชอบความมีชีวิตชีวาของโปรเจกต์ที่ครอบคลุมความสนใจหลากหลายด้าน และใช้สิ่งที่เรียนรู้จากหลายโปรเจกต์มาต่อยอดเป็นไอเดียใหม่
ชื่อเรื่องอาจทำให้เข้าใจผิดได้ เพราะงานแค่สแครป news feed สามารถตั้งค่าเสร็จได้ภายในไม่กี่วัน
หลายคนมีปัญหาในการทำโปรเจกต์ส่วนตัวให้เสร็จสมบูรณ์ และ data science เป็นงานเชิงสำรวจเพื่อค้นหาข้อมูลเชิงลึกจากชุดข้อมูล
ในกระบวนการเก็บข้อมูล จำเป็นต้องทำงานด้วยมือเพราะรูปแบบ URL ของเว็บไซต์ Tagesschau ไม่มีโครงสร้างที่เป็นระบบ จึงต้องมีแหล่งข้อมูลที่เสถียร
นักพัฒนาเว็บไซต์ไม่ได้คำนึงถึง scraper หากต้องการรวบรวมชุดข้อมูลที่มีเอกลักษณ์ ควรขอให้นักพัฒนาเว็บเปิด API สาธารณะให้