اللغات

يصل البريد المزعج بكل لغة، وكذلك البريد العادي. يقرأ Spam Scanner كليهما، ويتعامل بحذر مع اللغات التي لا يعرف عنها إلا القليل: مرشِّح البريد المزعج الذي يَسِم كل رسالة عربية أو صينية أسوأ من عدم وجود مرشِّح.

قراءة كل نظام كتابة#

  • الكلمات. يُقسَّم النص باستخدام Intl.Segmenter، الذي يتبع قواعد حدود الكلمات في Unicode ويستخدم قواميس للصينية واليابانية والتايلاندية واللاوية والخميرية والبورمية، وهي أنظمة كتابة تُكتب بلا مسافات. تُقسَّم النصوص الطويلة إلى أجزاء أولًا، لأن أداة التقسيم في Node.js 18 تتباطأ مع السلاسل الطويلة جدًا.
  • التوحيد. يحوّل Unicode NFKC الحروف كاملة العرض ومعظم الحروف المزخرفة (𝐅𝐑𝐄𝐄، Ⓕⓡⓔⓔ) إلى حروف عادية. ويُحوَّل النص إلى أحرف صغيرة وفق قواعد Unicode.
  • التنكّر. تُحذف المحارف غير المرئية داخل الكلمات (free مع مسافة صفرية العرض بين حرفين، والواصلات الناعمة) وتُعدّ. الكلمات التي تخلط بين الأبجديات، مثل pаypal بحرف а سيريلي، تُعاد إلى أبجدية واحدة وتُعدّ. وتُطوى الأرقام المستخدمة كحروف (v1agra). كل نوع من التنكّر سمة مستقلة، وثلاثة محارف غير مرئية أو أكثر، أو كلمتان مختلطتان أو أكثر، تضيف نقاطًا أيضًا.

اكتشاف اللغة#

تُكتشف لغة كل رسالة من نظام كتابتها، ومن حروفها في حالة أنظمة الكتابة المشتركة بين لغات كثيرة:

  • الهانغول كورية؛ والهيراغانا والكاتاكانا تعنيان اليابانية؛ والتايلاندية واليونانية والعبرية والأرمنية والجورجية والبنغالية والتاميلية وغيرها من أنظمة الكتابة التي تستخدمها لغة واحدة تسمّي اللغة مباشرة.
  • الحروف السيريلية الموجودة في لغة واحدة فقط تحسم بين الأوكرانية (і، ї، є، ґ)، والبيلاروسية (ў)، والصربية (ђ، ћ، џ)، والمقدونية (ѓ، ќ، ѕ)، والروسية (ы، э، ё).
  • النص المكتوب بأنظمة كتابة مشتركة بين عدة لغات (اللاتينية والسيريلية والعربية والديفاناغارية وغيرها)، إذا كان طويلًا بما يكفي للحكم، يذهب إلى franc، مع حصره في اللغات الشائعة في البريد الإلكتروني كي لا توسم الرسائل القصيرة بلغات نادرة.

تُعرض اللغة في result.language، ويضيف allowedLanguages: ['en', 'de'] (--allow-language en,de) ثلاث نقاط إلى البريد الذي اكتُشف بثقة أنه بأي لغة أخرى.

اللغات التي لا يعرف النموذج عنها إلا القليل#

يتعلّم المصنِّف من الأمثلة. تحتوي مجموعات بيانات البريد المزعج العامة على بريد مزعج بلغات أجنبية أكثر بكثير من البريد المرغوب بلغات أجنبية، فيتعلّم المصنِّف الساذج أن النص الصيني أو العربي بحد ذاته يعني بريدًا مزعجًا. يصحّح Spam Scanner ذلك بثلاث طرق:

  1. اللغة ليست دليلًا أبدًا. لا تُستخدم اللغة ونظام الكتابة المكتشفان كقرائن.
  2. تُوزن الكلمات داخل لغتها. يُحسب احتمال أن تكون الكلمة مزعجة مقابل عدد الرسائل المزعجة والمرغوبة التي رآها المصنِّف بلغة الرسالة، لا بكل اللغات. تبقى الكلمة البرتغالية اليومية محايدة في نموذج رأى في الغالب بريدًا مزعجًا برتغاليًا.
  3. الثقة تتبع التغطية. تُسحب النتيجة نحو «غير متأكد» بنسبة عدد الرسائل التي رآها المصنِّف من كل نوع في تلك اللغة: تحتاج الثقة الكاملة إلى 1,000 من كل نوع (أو 2% من الفئة الأصغر، للنماذج الشخصية الصغيرة). اللغة التي ليس لها أي بريد مرغوب في بيانات التدريب تحصل دائمًا على «غير متأكد».

لم يرَ النموذج المرفق قط SMS Spam Multilingual Collection، وهي رسائل SMS مترجمة آليًا إلى 21 لغة. قبل هذه القواعد، كان يَسِم 5.7% من البريد المرغوب فيها بأنه مزعج، ومنها 55% من البرتغالية و41% من الفرنسية. ومعها، 0.18%: لا شيء بالصينية أو العربية أو الكورية أو اليابانية أو الهندية أو البرتغالية أو الفرنسية أو 20 لغة أخرى، و0.27% بالإنجليزية.

التقاط البريد المزعج بتلك اللغات#

«غير متأكد» آمن، لكنه لا يلتقط البريد المزعج. ثلاثة أشياء تفعل ذلك:

  • الفحوص الأخرى لا تعتمد على اللغة: النطاقات المشابهة، والروابط المخادعة، والملفات التنفيذية، ووحدات الماكرو، والمصادقة، وقوائم الحظر، والقواعد.
  • نموذج لغوي. تقرأ النماذج المفتوحة الحديثة من 100 إلى 200 لغة، ويسأل Spam Scanner أحدها كلما كان المصنِّف غير متأكد. تتحقق الاختبارات الشاملة من أن qwen3.5:4b يلتقط البريد المزعج ويمرّر البريد المرغوب بالصينية والعربية والكورية والهندية والتايلاندية. النماذج اللغوية
  • التدريب على بريدك. في نموذج مدرَّب على بريدك، تكفي بضع مئات من الرسائل من كل نوع بلغة ما لإعطاء المصنِّف ثقة كاملة فيها. التدريب، ومجموعة بيانات اختيارية تضيف 21 لغة.

عدّل هذه الصفحة على GitHub · Markdown ·