Языки

Спам приходит на любом языке, как и обычная почта. 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 исправляет это тремя способами:

  1. Язык никогда не служит доказательством. Определённые язык и письменность не используются как признаки.
  2. Слова взвешиваются внутри своего языка. Вероятность спама для слова вычисляется относительно количества писем со спамом и ham, которые классификатор видел на языке письма, а не на всех языках. Обычное португальское слово в модели, которая видела в основном португальский спам, остаётся нейтральным.
  3. Уверенность следует за охватом. Результат притягивается к «unsure» пропорционально тому, сколько писем каждого вида классификатор видел на этом языке: для полной уверенности нужно по 1000 каждого (или 2 % меньшего класса для небольших личных моделей). Язык без ham в обучающих данных всегда получает «unsure».

Встроенная модель никогда не видела SMS Spam Multilingual Collection — SMS-сообщения, машинно переведённые на 21 язык. До этих правил она помечала как спам 5,7 % этого ham, включая 55 % португальского и 41 % французского. С ними — 0,18 %: ни одного на китайском, арабском, корейском, японском, хинди, португальском, французском и 20 других языках и 0,27 % на английском.

Как ловить спам на этих языках#

Ответ «unsure» безопасен, но спам он не ловит. Ловят три вещи:

  • Остальные проверки не зависят от языка: похожие домены, обманные ссылки, исполняемые файлы, макросы, аутентификация, чёрные списки, правила.
  • Языковая модель. Современные открытые модели читают на 100–200 языках, и Spam Scanner обращается к модели всякий раз, когда классификатор не уверен. Сквозные тесты проверяют, что qwen3.5:4b ловит спам и пропускает ham на китайском, арабском, корейском, хинди и тайском. Языковые модели
  • Обучение на вашей почте. В модели, обученной на вашей собственной почте, нескольких сотен писем каждого вида на языке достаточно для полной уверенности классификатора на нём. Обучение и дополнительный набор данных, который добавляет 21 язык.

Редактировать эту страницу на GitHub · Markdown ·