เพิ่มประสิทธิภาพการค้นหาข้อความภาษาจีนใน Telegram
สรุป
เพื่อปรับปรุงประสิทธิภาพการค้นหาข้อความภาษาจีนใน Telegram สามารถทำได้โดยการแทรกตัวคั่นที่มองไม่เห็นด้วยตนเอง หรือพัฒนา Tokenizer แบบกำหนดเอง นอกจากนี้ การใช้เทคโนโลยี AI เพื่อการค้นหาเชิงความหมาย (Semantic Search) ยังสามารถเพิ่มความแม่นยำในการค้นหาได้อย่างมาก
ประเด็นสำคัญ
- ฐานข้อมูล Telegram: Telegram ใช้ SQLite เป็นฐานข้อมูล
- กลไกการค้นหาแบบเต็มข้อความ (Full-text search): ฟังก์ชันการค้นหาแบบเต็มข้อความของ Telegram ใช้ Tokenizer ในการแยกสตริงออกเป็นวลี สร้างค่าแฮช และเปรียบเทียบกับตารางแฮชเมื่อทำการค้นหา
- ตัวสร้างโทเค็น (Tokenizer): ตัวสร้างโทเค็นอาศัยตัวคั่นและตัวแบ่งในการตัดสตริง
- การนิยามโทเค็น: เนื้อหาที่อยู่นอกเหนือจากตัวคั่นและตัวแบ่งจะถูกพิจารณาว่าเป็น "โทเค็น" ซึ่งรวมถึงอักษรตัวใหญ่ (*), ตัวเลข (N) และอักขระอื่นๆ (Co) สามประเภท
- การประมวลผลอักขระ CJK: อักขระภาษาจีน ญี่ปุ่น และเกาหลี (CJK) ส่วนใหญ่ใน Unicode จะถูกระบุว่าเป็นโทเค็น
เนื่องจากไม่มีตัวคั่นระหว่างอักขระจีน (汉字) Telegram จึงทำการแฮชสตริงอักขระจีนทั้งหมด ทำให้ประสิทธิภาพการค้นหาไม่ดี บทความนี้ได้เจาะลึกถึงข้อจำกัดของการค้นหาข้อความภาษาจีนใน Telegram จากมุมมองของโค้ด
คำแนะนำในการปรับปรุง
- แทรกตัวคั่นด้วยตนเอง: เพิ่มตัวคั่นที่มองไม่เห็นด้วยตนเองระหว่างอักขระจีน เพื่อปรับปรุงประสิทธิภาพการค้นหา
- ปรับแต่ง Tokenizer: พัฒนา Tokenizer แบบกำหนดเอง และแก้ไขไคลเอนต์ Telegram เพื่อเพิ่มประสิทธิภาพการค้นหา
การค้นหาเชิงความหมายด้วย AI
นอกเหนือจากวิธีการค้นหาแบบดั้งเดิม การนำ AI มาใช้ยังเป็นทางออกที่ดีกว่าสำหรับการค้นหาเชิงความหมาย โปรเจกต์ telegram-search ใช้โมเดลการฝัง (embedding model) ซึ่งช่วยให้ผู้ใช้สามารถค้นหาเนื้อหาที่ต้องการได้ แม้ว่าจะไม่มีคำหลักที่ตรงกันเป๊ะ ตัวอย่างเช่น การป้อน "昨晚吃饭的那个人" (คนที่กินข้าวเมื่อคืน) สามารถค้นหา "昨天晚上和我们一起吃饭的男的" (ผู้ชายที่กินข้าวกับเราเมื่อคืน) ได้
ด้วยวิธีการข้างต้น สามารถปรับปรุงประสบการณ์การค้นหาข้อความภาษาจีนใน Telegram ได้อย่างมาก