Traffy x TeamChadchart = Text Understanding
หลังจากที่ อ. ชัชชาติ เข้ารับตำแหน่งเป็น ผู้ว่าฯ กทม. ก็มีการนำระบบ Traffy Fondue ไปใช้เพื่อรับแจ้งปัญหาที่เกิดขึ้น และในแต่ละวัน ก็จะมีประชาชนส่งเรื่องผ่านระบบเข้ามากันอย่างล้นหลาม ในฐานะคนทำงานด้านการประมวลผลและทำความเข้าใจข้อมูล (Text Processing and Understanding) ก็รู้สึกสนุกที่เห็นจำนวนเรื่องที่แจ้งเข้ามาใหม่ในแต่ละวัน และจำนวนเรื่องที่ถูกแก้ไข ต่างเบียดกันไปมา อารมณ์เหมือนตัวเลขคนที่ป่วยโควิดรายใหม่ที่เบียดแข่งกับตัวเลขของคนที่หายป่วยแล้ว
ความน่าสนใจของระบบนี้ คือ เขาการปล่อย API ให้ผู้ที่สนใจสามารถนำข้อมูลไปประมวลผลในรูปแบบที่ตนเองสนใจได้ ทำให้ในช่วงเวลาที่ผ่าน มีการเผยแพร่ผลลัพธ์ของการประมวลผลข้อมูลในแง่มุมที่น่าสนใจมากมาย (หาอ่านดูกันได้นะครับ อย่างน้อยน่าจะผ่านหูผ่านตากันบ้างล่ะ)
เลยมานั่งคิดดูว่า เราสามารถนำข้อมูลเหล่านี้มาประมวลผลอะไรได้อีกบ้าง ที่ทีมงานที่รับผิดชอบ สามารถนำไปต่อยอดใช้ประโยชน์ได้ เราสามารถสกัดข้อมูลที่เป็นประโยชน์ออกมาได้ไหม
ก็เลยมาตั้งต้นว่า ถ้าเราเป็นเจ้าหน้าที่ อะไรบ้างนะ ที่เราอยากได้ หรือเขามี pain point อะไรหรือเปล่า
พอไปดูสถิติทางข้อมูล ก็พบว่า …
มากกว่า 80% (25,xxx จาก 31,xxx) ของเรื่องที่แจ้งมา ไม่ได้เลือกหมวดหมู่ตามที่ระบบกำหนดไว้ให้เลย !!!
นั่นหมายความว่า ผู้ที่เกี่ยวข้องต้องมานั่งอ่านและทำความเข้าใจข้อความหลายหมื่นข้อความ หรือหลายพันข้อความต่อวัน เพื่อระบุในภายหลังว่า เรื่องที่แจ้งมาควรจัดอยู่ในหมวดหมู่ใด และกรณีของปัญหาที่แจ้งมานั้น เป็นเรื่องใด เพื่อส่งเรื่องต่อให้กับหน่วยงานที่รับผิดชอบได้อย่างถูกต้อง…
แค่คิดว่าต้องอ่านข้อความมากมายเหล่านี้ ในทุกวัน ก็เป็นท้อแล้ว (ฮาาาาาา)
โอเค เห็นอย่างนี้แล้ว ก็ตกลงปลงใจว่า สิ่งที่น่าจะทำ ก็คงหนีไม่พ้น การจัดหมวดหมู่ข้อความ (Text Classification) และการสกัดข้อมูล (Information Extraction)
ดังนั้น หากเป็นโจทย์นี้ ข้อมูลอะไรบ้างล่ะ ที่เราอยากสกัดมันออกมา ก็ไปตั้งต้นจาก api ก่อนว่าเขาให้ข้อมูลอะไรเรามาบ้าง
เนื่องจากข้อมูลเกี่ยวกับพิกัดและสถานที่มีให้ชัดเจนอยู่แล้ว ก็ข้ามไปได้เลย ซึ่งปัญหาหลักๆ ก็จะซ่อนอยู่ใน comment ซึ่งเป็นข้อความยาวแบบ free text คืออยากเขียนอะไรก็เขียน นั่นเอง (หัวจะปวด T__T)
หลังจากพิจารณาข้อมูลแล้ว ขอถือวิสาสะตัดสินใจเลยละกันว่า ข้อมูลที่สำคัญที่ควรสกัดออกมาให้ได้ คือ
- สิ่งที่เกิดปัญหา (entity)
- ลักษณะของปัญหา (issue/case)
- หมวดหมู่ของปัญหา (category)
ตัวอย่างจากรูปข้างบน
สิ่งที่เกิดปัญหา -> ทางเดิน
ลักษณะของปัญหา -> ขรุขระ
หมวดหมู่ของปัญหา -> ทางเท้า
(ผมจัดกลุ่ม ทางเดิน,ทางเท้า,ฟุตบาท ไว้ด้วยกัน)
หลังจากนี้ ขอข้ามขั้นตอนในส่วนของการประมวลผลข้อความไปละกันนะครับ เนื่องจากถ้าเขียนไว้ในนี้ด้วย เรื่องนี้ก็น่าจะยาวอีกโข และคิดว่าคนที่ทำงานทางด้านนี้อยู่แล้ว น่าจะเดาต่อได้ไม่ยากครับ แต่หากสนใจในรายละเอียด ก็ comment แลกเปลี่ยนกันได้ครับ หรือหากมีโอกาส ก็จะมาเขียนอธิบายภายหลัง (ถ้าไม่ขี้เกียจอ่ะนะ ฮ่าาาา)
พอได้ผลที่น่าพอใจระดับหนึ่ง ก็เลยทำเป็น API ไว้ เผื่อในอนาคตมีคนอยากจะใช้บ้าง หรือไม่ ก็อาจจะเอาไปฝากไว้ที่ AI for Thai หากใครอยากเอาไปใช้ฟรี ก็ตามไปกันได้ครับ …
แต่ตอนนี้ยังไม่ได้เอาขึ้นนะ ใจเย็นสักนิด :)
ได้ตัววิเคราะห์แล้วยังไงต่อ? หรือจะพอแค่นี้?
แน่นอนว่า ต้องไปต่ออยู่แล้วครับ เพราะเมื่อมีตัวสกัดข้อมูลสวยๆ ออกมาได้ ก็อยากเอาข้อมูลนี้ไปต่อยอด … คิดไปมาหลายตลบว่าจะทำอะไรดีที่แตกต่างจากแหล่งอื่นที่เผยแพร่กันมาก่อนหน้านี้ ?????
Knowledge Graph ก็น่าสนใจดีนะ
หากเราสามารถเชื่อมโยงข้อมูลที่สกัดออกมาได้ ก็จะทำให้มองเห็นความเชื่อมโยงของปัญหาและทำเข้าใจความสัมพันธ์ของข้อมูลได้ง่ายขึ้น
ในเบื้องต้น ก็จับมาทำเป็น Network Graph แบบง่ายๆ ไปก่อนแล้วกัน แล้วเดี๋ยวหากมีเวลาค่อยลงรายละเอียดเชิงลึกกันอีกที
ผลที่ได้ก็ตามรูปครับ
เขียนไปเองว่า ดูหรูหราและเข้าใจง่ายขึ้นเยอะ ฮ่าาาาาาา
อย่างไรก็ตาม ก็ยังมีจุดให้ปรับปรุงอีกพอสมควร แต่สำหรับเวอร์ชันแรก ก็คิดว่าน่าจะพอทำให้เห็นภาพว่า เราจะใช้ข้อมูลเหล่านี้ไปต่อยอดให้เกิดประโยชน์อย่างไรได้อีกบ้าง
สามารถตามไปลองเล่นกันได้ที่ https://abdul.in.th/teamchadchart-m/
หากใครที่เผลอเข้ามาอ่านบทความนี้และสนใจจะลองนำข้อมูลชุดนี้ไปประมวลผลเองดูบ้าง ก็ตามรอยไปได้เลยครับ (แปะอีกที Traffy x TeamChadchart) แล้วอย่าลืมกลับมาแชร์ด้วยนะครับ ว่าไปเจออะไรกันมาบ้าง
สุดท้ายนี้ ต้องขอขอบคุณข้อมูลจาก Traffy x TeamChadchart และหวังว่างานเล็กๆ นี้ จะเป็นประโยชน์ต่อการแก้ปัญหาเมืองของ กทม. นะครับ