Mining the Characteristics of Jupyter Notebooks in Data Science Projects: เมื่อการจำแนกโค้ด คือจุดกำเนิดของ AI ที่ดีในอนาคต

“Data Science Projects” คือ โครงการหรือโพรเจกต์ที่ใช้หลักการทางวิทยาการข้อมูล (Data Science) ในการออกแบบ พัฒนา วิเคราะห์ และประเมินผล เพื่อนำมาปรับปรุงประสิทธิภาพ แก้ปัญหาเฉพาะทาง หรือ สร้างคุณสมบัติใหม่ของซอฟต์แวร์ ที่ตอบสนองความต้องการของผู้ใช้มากยิ่งขึ้น

เครื่องมือที่ช่วยให้นักพัฒนาซอฟต์แวร์สามารถพัฒนา Data Science Projects ได้อย่างมีประสิทธิภาพในปัจจุบัน ได้แก่ “Computational Notebooks” ซึ่งเป็นเครื่องมือที่ช่วยให้การทำงานทางวิทยาการข้อมูล (Data Science) นั้นมีความสะดวกมากยิ่งขึ้น นักพัฒนาซอฟต์แวร์หรือนักวิเคราะห์ข้อมูลสามารถทำงานได้สะดวกมากขึ้นเนื่องจาก Computational Notebooks เป็นเครื่องมือที่ใช้แนวคิดในการรวมโค้ดและการแสดงผลลัพธ์เข้าด้วยกัน ไม่ต้องสลับไปมาระหว่างโปรแกรมแก้ไขโค้ดและโปรแกรมวิเคราะห์ข้อมูล พร้อมตรวจสอบผลลัพธ์ของโค้ดได้ทันที ทั้งยังสามารถสร้างจินตทัศน์ (Visualization) ได้ Computational Notebooks จึงเป็นหนึ่งในเครื่องมือที่ได้รับความนิยมมากในปัจจุบัน

Computational Notebooks ได้ถูกพัฒนาออกมาเป็นจำนวนมากจากผู้ใช้งานทั่วโลก เพื่อแก้ไขปัญหาและโจทย์ใหม่ ๆ ของ Data Science Projects ที่เกิดขึ้นในปัจจุบัน ซึ่งทำให้เกิดคำถามว่า เราจะรู้ได้ยังไงว่า Computational Notebooks รูปแบบไหน คือ Computational Notebooks ที่ถูกเขียนออกมาเป็นอย่างมีคุณภาพเหมาะสมที่จะใช้เป็นแนวทางในเขียนโค้ดหรือวิเคราะห์ข้อมูลสำหรับผู้เริ่มต้นศึกษาการทำงานทางวิทยาการข้อมูล (Data Science) และมีปัจจัยอะไรที่จะสามารถช่วยให้เราจำแนกความแตกต่างทางคุณภาพของ Computational Notebooks นี้ได้?

งานวิจัยในหัวข้อ Mining the Characteristics of Jupyter Notebooks in Data Science Projects ซึ่งเป็นผลงานของนักศึกษาที่ได้เข้าร่วมโครงการแลกเปลี่ยนภาคฤดูร้อน ณ NARA Institute of Science and Technology ประเทศญี่ปุ่น และได้ถูกต่อยอดเป็นผลงานในวิชา Senior Project รุ่นที่ 17 หลักสูตรวิทยาศาสตรบัณฑิต สาขาวิชาเทคโนโลยีสารสนเทศและการสื่อสาร (ICT หลักสูตรนานาชาติ) ประกอบไปด้วย นางสาวฐชา เส็ตตีวงค์ นางสาวอุริสญา แก้วพิชัย และนายวัชรวิชญ์ จิราวัฒวาณิชย์ โดยมี ผศ.ดร. มรกต เชิดเกียรติกุล ผศ.ดร. ชัยยงค์ รักขิตเวชสกุล และ ผศ.ดร. ธันวดี สุเนตนันท์ อาจารย์ประจำกลุ่มวิชาวิทยาการคอมพิวเตอร์ และกลุ่มวิจัยวิศวกรรมซอฟต์แวร์และการวิเคราะห์ธุรกิจ (Software Engineering and Business Analytics Research Clusters (SEBA)) เป็นอาจารย์ที่ปรึกษา ซึ่งเป็นการศึกษาเกี่ยวกับการหาปัจจัยในการจำแนกคุณภาพของ Computational Notebooks ในปัจจุบัน

“เราไม่เคยรู้ว่าลักษณะการสร้าง Computational Notebooks แบบไหนที่มีคุณภาพและเหมาะสม เราไม่มีแนวทางที่จะบอกว่าเวลาคุณพัฒนา Computational Notebooks คุณควรจะเขียนแบบนี้นะ สร้างมันแบบนี้นะ มันจะได้มีคุณภาพ เราไม่เคยมีอะไรแบบนี้ เราก็เลยตั้ง Research Question เรื่องนี้ขึ้นมา คือการศึกษา Characteristics ของ Computational Notebooks ที่สะท้อนถึงคุณภาพ เราพยายามหาว่าอะไรเป็นปัจจัยที่จะบอกได้ว่า อันนี้เป็น Computational Notebooks ที่ดีหรือไม่ดี”

การศึกษาเริ่มต้นจากการรวบรวม Computational Notebooks จากผู้ใช้ระดับ Grand Master (ระดับปรมาจารย์) และ Novice (ระดับเริ่มต้น) จากแพลตฟอร์ม Kaggle ซึ่งเปรียบเสมือนชุมชนด้านวิทยาการคอมพิวเตอร์ จากนั้นจึงเริ่มศึกษาใน 4 หมวดหมู่ ได้แก่ ข้อมูลทั่วไปของ Computational Notebooks นั้น ๆ (Notebook Attributes) คุณภาพของโค้ด (Code Quality) การใช้คำในการอธิบาย (Textual Descriptions) และการนำเสนอข้อมูลผ่านรูปภาพ (Visualization) โดย ผลลัพธ์การศึกษา ณ ปัจจุบัน พบว่าคนส่วนมากให้ความสนใจกับคุณภาพของโค้ด ในส่วนของ Source Code ความซับซ้อนของโค้ด การใช้ Library และจำนวน Library ที่ใช้ในการวิเคราะห์ ปัจจัยเหล่านี้มีส่วนสำคัญในการระบุว่า Computational Notebooks ดีหรือไม่ดี ทั้งนี้ ผลงานวิจัยนี้ยังอยู่ในขั้นตอนการศึกษาต่อเพื่อผลลัพธ์ที่สมบูรณ์

ผศ.ดร. มรกต เชิดเกียรติกุล ได้เล่าถึงปัญหาที่พบระหว่างการวิจัย ได้แก่ การใช้เวลาในการรวบรวมค่อนข้างมาก เนื่องจากขอบเขตของงานนี้คือการศึกษาจาก Data ที่เกิดขึ้นจริง ๆ ใน Kaggle ซึ่งต้องรวบรวม Data ของ Computational Notebooks ออกมาเป็นจำนวนมาก และการการันตีคุณภาพของข้อมูลที่ได้มา เราจะรู้ได้ยังไงว่านี่ไม่ใช่แค่ Computational Notebooks ที่คนมาใส่อะไรมั่ว ๆ หรือคัดลอกมาจากที่อื่น พร้อมพูดทิ้งท้ายถึงการต่อยอดผลงานนี้ในอนาคต

“ทุกอย่างในงานนี้อิงมาจากการเขียนโค้ด เราไปนั่งดูโค้ดเขาว่ามีคุณภาพมากน้อยแค่ไหน เหมือนเราไปวิเคราะห์โค้ดของเขาอีกทีหนึ่ง ปัญหามันก็เลยลึก แต่ในท้ายที่สุดแล้ว โค้ดเหล่านี้ก็จะถูกต่อยอดกลายไปเป็นโมเดล AI ในอนาคต ซึ่งโค้ดที่มีคุณภาพ ก็มีสิทธิที่จะได้รับการยอมรับ และนำไปต่อยอดได้ดีกว่า ดังนั้นการจะส่งต่อโค้ดในการพัฒนาต่อจึงสำคัญ ถ้าเรารู้ว่าโค้ดที่มีคุณภาพเป็นแบบไหนตั้งแต่เริ่ม การฝึกโมเดล AI ในภายภาคหน้าก็จะยิ่งมีคุณภาพ”