Мови
Спам надходить будь-якою мовою, як і звичайна пошта. 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) додає 3 бали пошті, яку впевнено визначено як написану будь-якою іншою мовою.
Мови, про які модель знає мало#
Класифікатор вчиться на прикладах. Відкриті набори даних спаму містять набагато більше іншомовного спаму, ніж іншомовного hamБажана пошта: протилежність спаму. (бажаних листів), тож наївний класифікатор вивчає, що сам китайський чи арабський текст означає спам. Spam Scanner виправляє це трьома способами:
- Мова ніколи не є доказом. Визначені мова й писемність не використовуються як ознаки.
- Слова зважуються в межах своєї мови. Імовірність спаму для слова обчислюється відносно кількості листів зі спамом і з ham, які класифікатор бачив мовою цього листа, а не всіма мовами. Повсякденне португальське слово в моделі, яка бачила переважно португальський спам, залишається нейтральним.
- Упевненість залежить від покриття. Результат зсувається до «невизначено» тим сильніше, чим менше листів кожного типу класифікатор бачив цією мовою: для повної впевненості потрібно по 1000 кожного (або 2 % меншого класу для малих персональних моделей). Мова без ham у навчальних даних завжди отримує «невизначено».
Вбудована модель ніколи не бачила SMS Spam Multilingual Collection — SMS-повідомлень, машинно перекладених 21 мовою. До цих правил вона позначала як спам 5,7 % цього ham, зокрема 55 % португальського і 41 % французького. З ними — 0,18 %: жодного китайською, арабською, корейською, японською, гінді, португальською, французькою чи ще 20 мовами, і 0,27 % англійською.
Виявлення спаму цими мовами#
«Невизначено» — безпечно, але спаму не ловить. Його ловлять три речі:
- Інші перевірки не залежать від мови: схожі домени, оманливі посилання, виконувані файли, макроси, автентифікація, чорні списки, правила.
- Мовна модель. Сучасні відкриті моделі читають від 100 до 200 мов, і Spam Scanner запитує модель щоразу, коли класифікатор не впевнений. Наскрізні тести перевіряють, що
qwen3.5:4bловить спам і пропускає ham китайською, арабською, корейською, гінді та тайською. Мовні моделі - Навчання на вашій пошті. У моделі, навченій на вашій власній пошті, кількох сотень листів кожного типу певною мовою достатньо для повної впевненості класифікатора в цій мові. Навчання і додатковий набір даних, що додає 21 мову.