เป็นไอเดียที่ปิ๊งขึ้นมาระหว่างกินข้าวกลางวัน จดไว้กันลืมก่อน
ตอนงาน YouFest รอบแรกสุด สุนิตย์พูดเรื่อง Social Network Analysis (SNA) ซึ่งกราฟผลลัพธ์ของงานอยู่ที่ YouFest SNA คนก็สนใจกันค่อนข้างเยอะ
โจทย์ของผมก็ต่อยอดขึ้นมาจากแนวคิดนี้ เผอิญอ่านข่าวแย่งกันเคลมเป็นสายตรงนายใหญ่ เลยสงสัยว่าเราสามารถเอา SNA มาวิเคราะห์ว่าใครเป็นสายตรงตัวจริงได้หรือไม่?
ประเด็นที่ต้องคิดมี 2 เรื่องคือ ซอฟต์แวร์กับ data structure ซึ่งส่วนของซอฟต์แวร์ ผมเชื่อว่ามันน่าจะมีคนทำอันที่เหมาะๆ ไว้แล้ว (ไม่แน่ใจนักว่า Yed ที่สุนิตย์ใช้จะเหมาะสมแค่ไหนสำหรับการวิเคราะห์นักการเมือง ซึ่งจะต้องแสดงผล node จำนวนมากๆ) แต่ยังไม่มีเวลาหาขอติดไว้ก่อน
ส่วนของ data structure เนื่องจากความรู้ทฤษฎีกราฟนั้นคืนครูไปหมดแล้ว ก็ต้องอิงจากประสบการณ์เลือนลางในหัว ไว้จะทำจริงๆ ค่อยไปขอ sit-in คลาสของ อ. มะนาวสักที
แนวคิดหลักๆ คือ
- node = นักการเมือง
- edge = สายสัมพันธ์ระหว่างนักการเมือง
attribute ที่ต้องเก็บมีอะไรบ้าง ที่คิดออกตอนนี้
node
- ชื่อ
- เพศ (ใช้ในการตรวจสอบ edge ที่เป็นสถานภพสมรส)
- วันเกิด (ซึ่งจะ derive มาได้อายุ)
- วันตาย (ซึ่งจะ derive มาได้สถานะว่ายังอยู่หรือตาย)
- สังกัดหรือฝ่าย คนนึงอาจมีได้หลายสังกัด สังกัดไม่จำเป็นต้องเป็นพรรค (ในกรณีของพันธมิตร หรือข้าราชการประจำ) สังกัดมีหลายระดับ (กลุ่มพ่อมดดำ พรรคไทยรักไทย) สังกัดอาจแปรรูปได้ (กรณีงูเห่า) สิ่งที่ยากที่สุดคือการเลือกป้อนค่าสังกัดให้กับ node ซึ่งเป็นการตัดสินใจของคนป้อน ว่าจะเอาละเอียดแค่ไหน อันนี้ต้องคิดต่อไป
- อิทธิพล ความสำคัญของแต่ละคนไม่เท่ากัน ให้ดีกรี 1-10 ส่วนใครจะมีค่าขนาดไหน ขึ้นกับคนป้อนค่าเช่นกัน
edge
ผมไม่แน่ใจนักว่า edge ในที่นี้ควรเป็น one directed edge 2 อัน หรือ undirected edge 1 อันกันแน่ คือถ้าเป็นความสัมพันธ์ระหว่างตัวละคร (แบบที่เราเห็นในแมกกาซีนอนิเม) ที่มี “รักข้างเดียว” มันก็ควรจะเป็น 2x one directed edges แต่พอมาเป็นความสัมพันธ์แบบนักการเมือง มันมีกรณีแบบนั้นหรือเปล่า ถ้าสนธิเกลียดทักษิณ ทักษิณควรจะเป็นศัตรูกับสนธิกลับทันทีหรือไม่?
ระหว่างที่ยังคิดไม่ออก ขอให้แบบง่ายๆ คือเป็น undirected edge ไปก่อน attribute ที่ต้องเก็บคือ
- node 1
- node 2
- relationship type เช่น ลูกพี่ลูกน้อง สามีภรรยา พ่อลูก ศัตรู พันธมิตร ฯลฯ ถ้าคิดง่ายๆ อาจแบ่งเป็น 3 แบบ คือ มิตร ศัตรู เป็นกลาง ฯลฯ
- date - อายุของความสัมพันธ์ น่าจะมีประโยชน์สำหรับการเปรียบเทียบ กรณีอย่างอภิสิทธิ์-กรณ์ เหมือนเคยได้ยินมาว่าสองคนนี้รู้จักกันมาตั้งแต่สมัยเป็นนักเรียนประจำที่อังกฤษ เอาเท่าที่มีหลักฐานเอกสาร
- ระดับความเหนืยวแน่นของความสัมพันธ์ ให้ดีกรี 1-10 เช่นกัน (10 อาจมีค่าเท่ากับ “ตายแทนกันได้”) อันนี้เป็นหน้าที่ของคนป้อนค่าที่จะพิจารณาให้คะแนน
ประเด็นด้าน visualization
- การแสดงสีของทั้ง node และ edge เพื่อบ่งชี้ความเป็นมิตรศัตรู
- การแสดงขนาดของทั้ง node และ edge (ตามอิทธิพลและระดับความเหนียวแน่น) เพื่อช่วยพิจารณาความสนิทสนม
- การ filter การแสดงผลเฉพาะบาง node ตามเงื่อนไขที่ระบุ เพื่อลดความซับซ้อนของภาพลง
- best practice ของ visualization ข้อมูลที่ซับซ้อนมากๆ (> 1000 nodes) เป็นอย่างไร ส่วนใหญ่ที่เห็น (เช่น Internet Maps) มันก็มีไว้เท่เฉยๆ ใช้อะไรจริงไม่ได้
ประเด็นด้าน data structure
- ความสัมพันธ์พัฒนาสถานะได้ เช่น จากรักเป็นแค้น ควรเก็บ revision ด้วย?
- relationship ระหว่าง 2 node ใดๆ ควรมีมากกว่า 1 อัน?
- ในกรณีที่รู้จักกันผ่านสมาคมหรือองค์กร ควรมี node ชนิดที่เป็นองค์กรด้วยหรือไม่? หรือเอาจริงแล้ว เราก็รู้จักกันผ่าน “ตัวบุคคล” ในองค์กรอยู่ดี ให้เป็น attribute ไปก็น่าจะพอ?
ประเด็นอื่นๆ
- ความสัมพันธ์ที่มองไม่เห็น สามารถแยกแยะเป็นชนิด “ข่าวลือ” ได้หรือไม่? (เช่น ทักษิณ-ลิเดีย)
- “มือที่มองไม่เห็น” จะทำอย่างไร? (ทางออกที่ดีที่สุดน่าจะเป็นเก็บตามปกติ แล้วปิดกราฟเป็นความลับ)
- ถ้ามีแกนของเวลาด้วย เราควรจะสามารถทำ animated timeline ได้ด้วย (ถ้ามีข้อมูลด้านเวลาเยอะพอ ปัญหาคือใครจะทำ?)
- ถ้ามีฐานข้อมูลแบบ Google News ด้วย มันน่าจะทำ event-based animation ได้ (เช่น แสดงการเปลี่ยนแปลงความสัมพันธ์ที่อิงตาม incident ต่างๆ)
- จะดึงข้อมูล (ที่ไม่เป็น semantic) จาก politicalbase.in.th มาใช้ได้อย่างไร สุดท้ายคงต้องทำมือ
ไว้ว่างๆ มาคิดต่อ แต่สรุปกับตัวเองว่านี่เรากำลังคิดถึง tool ที่จะเข้ามาช่วยให้การวิเคราะห์เป็น scientific-based มากขึ้น จากเดิมที่อิงจากประสบการณ์ของนักวิเคราะห์อย่างเดียว