تحسين قدرة البحث عن الرسائل باللغة الصينية في Telegram
الخلاصة
علشان نحسن أداء البحث عن الرسائل باللغة الصينية في تليجرام، ممكن نعمل كده عن طريق إننا ندخل فواصل مش باينة يدويًا، أو نطور "توكنايزر" (Tokenizer) خاص بينا. ده غير إن استخدام تقنيات الذكاء الاصطناعي للبحث الدلالي يقدر يحسن دقة البحث بشكل ملحوظ جدًا.
نقاط رئيسية
- قاعدة بيانات Telegram: تليجرام بيستخدم SQLite كقاعدة البيانات بتاعته.
- آلية البحث بالكامل (Full-text search): خاصية البحث بالكامل في تليجرام بتشتغل عن طريق إنها بتقسم النص الطويل (strings) لجمل قصيرة باستخدام الـ Tokenizer، وبعدين بتعمل قيم تجزئة (hash values) ليها. ولما بنعمل بحث، بيتم مقارنة القيم دي بجدول التجزئة (hash table).
- مُولد الكلمات (Token Generator): مُولد الكلمات ده بيعتمد على الفواصل (separators) ومحددات الفصل (delimiters) علشان يقسم النص الطويل (strings).
- تعريف "التوكن" (Token): أي حاجة مش فاصلة أو محدد فصل، بتعتبر "توكن". ودي بتشمل تلات أنواع: الحروف الكبيرة (*)، والأرقام (N)، وأي رموز تانية (Co).
- معالجة حروف CJK (الصينية واليابانية والكورية): أغلب حروف CJK في يونيكود (Unicode) بتتعرف كـ "توكنات".
بما إن مفيش فواصل بين الحروف الصينية، تليجرام بيعمل تجزئة (hashing) للسلسلة الكاملة من الحروف الصينية، وده بيخلي أداء البحث مش كويس. المقال ده بيناقش بالتفصيل، من منظور الكود، القيود اللي موجودة في البحث عن الرسائل باللغة الصينية في تليجرام.
اقتراحات للتحسين
- إدخال فواصل يدويًا: ضيف فواصل مش باينة يدويًا بين الحروف الصينية عشان تحسن أداء البحث.
- تخصيص "توكنايزر" (Tokenizer): طور "توكنايزر" خاص بيك، وعدّل تطبيق تليجرام عشان تقوي خاصية البحث.
البحث الدلالي بالذكاء الاصطناعي
غير طرق البحث التقليدية، دخول الذكاء الاصطناعي (AI) وفر حلول أحسن للبحث الدلالي. مشروع telegram-search بيستخدم نموذج "تضمين" (embedding model)، وده بيخلي المستخدم يلاقي اللي هو عاوزه حتى لو مفيش كلمات مفتاحية مطابقة بالظبط. فمثلاً، لو كتبت "الراجل اللي أكل امبارح بالليل"، ممكن تلاقي "الراجل اللي أكل معانا امبارح بالليل".
عن طريق الطرق اللي فاتت دي، ممكن نحسن بشكل ملحوظ تجربة البحث عن الرسائل باللغة الصينية في تليجرام.