Traffy x TeamChadchart = Text Understanding

Guangming C. Sangkeettrakarn
NECTEC
Published in
2 min readJun 16, 2022

หลังจากที่ อ. ชัชชาติ เข้ารับตำแหน่งเป็น ผู้ว่าฯ กทม. ก็มีการนำระบบ Traffy Fondue ไปใช้เพื่อรับแจ้งปัญหาที่เกิดขึ้น และในแต่ละวัน ก็จะมีประชาชนส่งเรื่องผ่านระบบเข้ามากันอย่างล้นหลาม ในฐานะคนทำงานด้านการประมวลผลและทำความเข้าใจข้อมูล (Text Processing and Understanding) ก็รู้สึกสนุกที่เห็นจำนวนเรื่องที่แจ้งเข้ามาใหม่ในแต่ละวัน และจำนวนเรื่องที่ถูกแก้ไข ต่างเบียดกันไปมา อารมณ์เหมือนตัวเลขคนที่ป่วยโควิดรายใหม่ที่เบียดแข่งกับตัวเลขของคนที่หายป่วยแล้ว

https://share.traffy.in.th/teamchadchart

ความน่าสนใจของระบบนี้ คือ เขาการปล่อย API ให้ผู้ที่สนใจสามารถนำข้อมูลไปประมวลผลในรูปแบบที่ตนเองสนใจได้ ทำให้ในช่วงเวลาที่ผ่าน มีการเผยแพร่ผลลัพธ์ของการประมวลผลข้อมูลในแง่มุมที่น่าสนใจมากมาย (หาอ่านดูกันได้นะครับ อย่างน้อยน่าจะผ่านหูผ่านตากันบ้างล่ะ)

เลยมานั่งคิดดูว่า เราสามารถนำข้อมูลเหล่านี้มาประมวลผลอะไรได้อีกบ้าง ที่ทีมงานที่รับผิดชอบ สามารถนำไปต่อยอดใช้ประโยชน์ได้ เราสามารถสกัดข้อมูลที่เป็นประโยชน์ออกมาได้ไหม

ก็เลยมาตั้งต้นว่า ถ้าเราเป็นเจ้าหน้าที่ อะไรบ้างนะ ที่เราอยากได้ หรือเขามี pain point อะไรหรือเปล่า

พอไปดูสถิติทางข้อมูล ก็พบว่า …

มากกว่า 80% (25,xxx จาก 31,xxx) ของเรื่องที่แจ้งมา ไม่ได้เลือกหมวดหมู่ตามที่ระบบกำหนดไว้ให้เลย !!!

นั่นหมายความว่า ผู้ที่เกี่ยวข้องต้องมานั่งอ่านและทำความเข้าใจข้อความหลายหมื่นข้อความ หรือหลายพันข้อความต่อวัน เพื่อระบุในภายหลังว่า เรื่องที่แจ้งมาควรจัดอยู่ในหมวดหมู่ใด และกรณีของปัญหาที่แจ้งมานั้น เป็นเรื่องใด เพื่อส่งเรื่องต่อให้กับหน่วยงานที่รับผิดชอบได้อย่างถูกต้อง…

แค่คิดว่าต้องอ่านข้อความมากมายเหล่านี้ ในทุกวัน ก็เป็นท้อแล้ว (ฮาาาาาา)

โอเค เห็นอย่างนี้แล้ว ก็ตกลงปลงใจว่า สิ่งที่น่าจะทำ ก็คงหนีไม่พ้น การจัดหมวดหมู่ข้อความ (Text Classification) และการสกัดข้อมูล (Information Extraction)

ดังนั้น หากเป็นโจทย์นี้ ข้อมูลอะไรบ้างล่ะ ที่เราอยากสกัดมันออกมา ก็ไปตั้งต้นจาก api ก่อนว่าเขาให้ข้อมูลอะไรเรามาบ้าง

เนื่องจากข้อมูลเกี่ยวกับพิกัดและสถานที่มีให้ชัดเจนอยู่แล้ว ก็ข้ามไปได้เลย ซึ่งปัญหาหลักๆ ก็จะซ่อนอยู่ใน comment ซึ่งเป็นข้อความยาวแบบ free text คืออยากเขียนอะไรก็เขียน นั่นเอง (หัวจะปวด T__T)

หลังจากพิจารณาข้อมูลแล้ว ขอถือวิสาสะตัดสินใจเลยละกันว่า ข้อมูลที่สำคัญที่ควรสกัดออกมาให้ได้ คือ

  1. สิ่งที่เกิดปัญหา (entity)
  2. ลักษณะของปัญหา (issue/case)
  3. หมวดหมู่ของปัญหา (category)

ตัวอย่างจากรูปข้างบน

สิ่งที่เกิดปัญหา -> ทางเดิน

ลักษณะของปัญหา -> ขรุขระ

หมวดหมู่ของปัญหา -> ทางเท้า

(ผมจัดกลุ่ม ทางเดิน,ทางเท้า,ฟุตบาท ไว้ด้วยกัน)

หลังจากนี้ ขอข้ามขั้นตอนในส่วนของการประมวลผลข้อความไปละกันนะครับ เนื่องจากถ้าเขียนไว้ในนี้ด้วย เรื่องนี้ก็น่าจะยาวอีกโข และคิดว่าคนที่ทำงานทางด้านนี้อยู่แล้ว น่าจะเดาต่อได้ไม่ยากครับ แต่หากสนใจในรายละเอียด ก็ comment แลกเปลี่ยนกันได้ครับ หรือหากมีโอกาส ก็จะมาเขียนอธิบายภายหลัง (ถ้าไม่ขี้เกียจอ่ะนะ ฮ่าาาา)

พอได้ผลที่น่าพอใจระดับหนึ่ง ก็เลยทำเป็น API ไว้ เผื่อในอนาคตมีคนอยากจะใช้บ้าง หรือไม่ ก็อาจจะเอาไปฝากไว้ที่ AI for Thai หากใครอยากเอาไปใช้ฟรี ก็ตามไปกันได้ครับ …

แต่ตอนนี้ยังไม่ได้เอาขึ้นนะ ใจเย็นสักนิด :)

ได้ตัววิเคราะห์แล้วยังไงต่อ? หรือจะพอแค่นี้?

แน่นอนว่า ต้องไปต่ออยู่แล้วครับ เพราะเมื่อมีตัวสกัดข้อมูลสวยๆ ออกมาได้ ก็อยากเอาข้อมูลนี้ไปต่อยอด … คิดไปมาหลายตลบว่าจะทำอะไรดีที่แตกต่างจากแหล่งอื่นที่เผยแพร่กันมาก่อนหน้านี้ ?????

Knowledge Graph ก็น่าสนใจดีนะ

หากเราสามารถเชื่อมโยงข้อมูลที่สกัดออกมาได้ ก็จะทำให้มองเห็นความเชื่อมโยงของปัญหาและทำเข้าใจความสัมพันธ์ของข้อมูลได้ง่ายขึ้น

ในเบื้องต้น ก็จับมาทำเป็น Network Graph แบบง่ายๆ ไปก่อนแล้วกัน แล้วเดี๋ยวหากมีเวลาค่อยลงรายละเอียดเชิงลึกกันอีกที

ผลที่ได้ก็ตามรูปครับ

เขียนไปเองว่า ดูหรูหราและเข้าใจง่ายขึ้นเยอะ ฮ่าาาาาาา

อย่างไรก็ตาม ก็ยังมีจุดให้ปรับปรุงอีกพอสมควร แต่สำหรับเวอร์ชันแรก ก็คิดว่าน่าจะพอทำให้เห็นภาพว่า เราจะใช้ข้อมูลเหล่านี้ไปต่อยอดให้เกิดประโยชน์อย่างไรได้อีกบ้าง

สามารถตามไปลองเล่นกันได้ที่ https://abdul.in.th/teamchadchart-m/

หากใครที่เผลอเข้ามาอ่านบทความนี้และสนใจจะลองนำข้อมูลชุดนี้ไปประมวลผลเองดูบ้าง ก็ตามรอยไปได้เลยครับ (แปะอีกที Traffy x TeamChadchart) แล้วอย่าลืมกลับมาแชร์ด้วยนะครับ ว่าไปเจออะไรกันมาบ้าง

สุดท้ายนี้ ต้องขอขอบคุณข้อมูลจาก Traffy x TeamChadchart และหวังว่างานเล็กๆ นี้ จะเป็นประโยชน์ต่อการแก้ปัญหาเมืองของ กทม. นะครับ

ขอให้สนุกกับข้อมูลครับ :)

--

--