มีความคิดเมื่อนานมาแล้วว่าถ้าข้อความในทวิตเตอร์มันแทนกระแสที่กำลังเกิดขึ้นในช่วงเวลาหนึ่งได้แล้ว เราจะเอามาใช้ประโยชน์อะไรได้บ้าง?
อย่างง่ายที่สุดก็คือการค้นหาว่ามีอะไรเกี่ยวกับหัวข้อที่เราสนใจที่เกิดขึ้น "เดี๋ยวนี้" บ้าง ซึ่งในส่วนนี้ทวิตเตอร์ก็มีระบบค้นหาให้อยู่แล้ว แต่ปัญหาคือมันตัดคำภาษาไทยได้ไม่ดีเท่าไหร (ส่วนหัวหรือท้ายคำต้องเป็นช่องว่าถึงจะหาเจอ) เลยใช้งานอะไรไม่ได้เต็มที่นัก แต่ก็เป็นปัญหาที่แก้ได้ไม่ยากแค่ต้องอาศัยความถึกหน่อย คือเอาทวีตทั้งหมดมาเก็บไว้ในฐานข้อมูลแล้วใช้ Full text search เอา ซึ่งพอมานั่งคำนวณต้นทุนของระบบที่จะใช้รองรับข้อมูลปริมาณมหาศาลขนาดนี้แล้วก็เกิดอาการหน้ามืด เลยพับโครงการนี้เก็บไปก่อน
พอดีช่วงนี้มีภัยน้ำท่วมเข้ามาก็เลยต้องหาข้อมูลเพื่อติดตามสถานการณ์ แต่นั่งรอฟังข่าวก็ไม่ทันใจเท่าไหร โชคดีที่ในทวิตเตอร์มีการใส่แท็ก #ThaiFlood เอาไว้ทำให้ติดตามข้อมูลได้รวดเร็วมาก แต่ก็ยังใช้งานได้ไม่เต็มที่อยู่ดีเพราะถ้าต้องการข้อมูลที่เฉพาะเจาะจงมากขึ้นเช่น ข้อมูลน้ำท่วมภายในกรุงเทพฯ ก็จะต้องใช้คำค้นว่า "#thaiflood กรุงเทพ" ซึ่งจะได้ผลลัพธ์ที่ไม่ละเอียดนักเพราะกลับไปติดปัญหาเดิมคือเรื่องการตัดคำภาษาไทย
คิดไปคิดมาพบว่าขอบเขตของข้อมูลลดลงมาก เพราะเก็บแค่ทวีตที่ติดแท็ก #ThaiFlood (กับอะไรอีกนิดหน่อย) ก็น่าจะพอแล้ว เลยได้เวลาโยนข้ออ้างทิ้งแล้วลงมือทำโปรเจคที่คิดเอาไว้เสียที
หลังจากเกือบอดนอนในคืนวันเสาร์ก็ได้โปรแกรมรุ่นเบต้าไปกวาดข้อมูลในทวิตเตอร์เข้ามาเก็บเอาไว้ แล้วใช้เวลาที่เหลือค่อยๆ ปรับส่วนค้นหาไป (เพราะวันอาทิตย์ติดธุระเกือบทั้งวัน) จนได้โปรแกรม ค้นหาข้อมูลในทวิตเตอร์ที่เกี่ยวข้องกับน้ำท่วม ออกมา
ซึ่งจากที่ลองใช้งานดูก็ไม่น่ามีปัญหาเรื่องตัดคำภาษาไทยแล้ว (แต่มีปัญหาเรื่องเก็บทวีตได้ไม่ครบถ้วนแทน ซึ่งอัันนี้ก็พยายามปรับคำค้นให้ดีที่สุดแล้วล่ะนะ) น่าจะพอตอบโจทย์ความต้องการของตัวเองได้ระดับนึง ก็เลยคิดต่อว่าแล้วมันพอจะมีประโยชน์กับคนอื่นบ้างหรือเปล่า เลยลองเอามาวางไว้บนเซิร์ฟเวอร์เผื่อจะเป็นประโยชน์กับคนอื่นบ้าง โดยปรับดีไซน์ให้เหมาะกับการเปิดด้วยเว็บเบราเซอร์บนโทรศัพท์มือถือตามนี้ (แต่ก็เข้าจากเว็บเบราเซอร์ในคอมพิวเตอร์ได้ตามปกติ) เพราะข้อมูลพวกนี้น่าจะมีประโยชน์เมื่ออยู่ข้างนอกมากกว่า
ถ้าใครสนใจก็เข้าลองเข้าไปใช้งานได้ที่ movableme.net/floodmon ครับ ส่วนถ้ามีเวลาอาจจะทำฟีเจอร์ในส่วนของการแจ้งเตือนเพิ่มเพราะหลังจากดูสถิติของทวีตที่มีคำว่า "นวนคร" ในวันที่ 17 ตุลาคมที่ผ่านมาเห็นแนวโน้มดังนี้
จะเห็นว่าช่วงที่จำนวนทวีตเพิ่มขึ้นอย่างกะทันหันตรงกับเวลาที่คันกั้นน้ำในนวนครแตกพอดี ซึ่งถ้าเอาข้อมูลเชิงสถิติตรงนี้ไปใช้ต่อในยอดในการระวังภัยก็น่าจะเป็นประโยชน์มากทีเดียว เช่น ถ้าบ้านผมอยู่รังสิตแล้วผมลงทะเบียนรับการแจ้งเตือนข้อมูลที่เกี่ยวกับรังสิตเอาไว้ เมื่อมีเหตุการณ์อะไรเกิดขึ้นที่ทำให้แนวโน้มของจำนวนทวีตเพิ่มขึ้นอย่างรวดเร็วผมก็จะได้รับการแจ้งเตือนจากระบบ แต่ทั้งนี้คงต้องใช้เวลาและทรัพยากรอีกมากทีเดียว ถ้าใตรจะเอาไปทำต่อก็ยินดีครับ
หมายเหตุ : เทคโนโลยีที่ใช้มีดังนี้
- PHP - แต่ปกติผมหาเลี้ยงชีพด้วย Java นะ (กว่าจะหาที่ติดตั้งได้น้ำคงลดไปหมดเสียก่อน)
- MySQL - ใช้ด้วยข้อจำกัดของโฮสต์ที่ใช้ อันที่จริงอยากลองใช้ตัวอื่นบ้างอย่าง postgresql หรือไม่ก็ NoSQL ไปเลย
- twitter-php - เป็นไลบรารีที่ใช้เชื่อมต่อกับทวิตเตอร์ ใช้เพราะมันเรียบง่ายดี และที่อยู่ในหน้า API ของทวิตเตอร์ก็ดูจะเน้น OAuth มากกว่า
- Pingdom - เป็น Web Monitoring Service แต่เอามาใช้แทน Cron ที่โฮสต์ของผมไม่มีเพราะมันจะคอยเรียกให้โปรแกรมทำงานผ่าน URL ที่ทำไว้ตามเวลาที่เรากำหนด ที่เลือกตัวนี้เพราะกำหนด interval ได้น้อยสุด (และฟรี)
- การปรับหน้าเว็บให้เข้ากับเบราเซอร์ในโทรศัพท์ได้กระบวนท่ามาจากกระทู้ของ StackOverflow
- Sublime Text 2 เทพมาก


4 comments
เป็นไอเดียที่ดีมาก แล้วก็เห็นด้วยอีกว่า ตอนเข้าไปอ่าน #ThaiFlood ซึ่งเป็น App ของ android เองรวบรวมเอามารวมไว้ เราจะเห็นได้ว่ามีการ retweet เยอะมาก อ่านแล้วตาลาย คำถามก็คือ จะกรองข้อมูล retweet ไม่ให้ซ้ำกันมากได้หรือไม่ ดูแล้วมันเป็นอะไรที่ยากมากพอสมควรเลย
ที่เคยคิดไว้มันก็ไม่ยากนะ แต่ต้องหาที่เอาไว้เก็บข้อมูลเพื่อเอามาตรวจข้อความซ้ำ ซึ่งต้องมีภาระเรื่องเซิร์ฟเวอร์อีก
ที่เราใช้แก้ปัญหาง่ายๆ ตอนนี้ คือตัดคำว่า "RT" ออกจากผลการค้นหาด้วยเหตุผลที่ว่าเราไม่สามารถหาได้เลยว่าข้อความนั้นมีอายุเท่าไหรแล้ว และยังไงเสียข้อความต้นฉบับก็น่าจะเข้ามาในระบบอยู่แล้ว
แสดงว่าถ้าจะไม่เอา RT ตรงนี้ ต้องไปเพิ่มในส่วนของ API ของ Twitter เองสินะ
ใช่แล้ว
Post new comment