Как написать спам-фильтр

Я застрял в необходимости написать простой спам-фильтр Я не совсем уверен, как я собираюсь это сделать.

До сих пор я придумал фильтры слов и доменов, которые будут давать или удалять баллы до определенного порога.

Например, если вы пишете о «v1agr4» из домена, занесенного в черный список, вы получите примерно 2 балла за спам, но если вы пишете о «v1agr4» из учетной записи hotmail.com, вы получите только 1 «точка спама».

Ребята, у вас есть другие предложения / ресурсы?

Это больше об изучении спам-фильтров, чем о разработке чего-то корпоративного уровня.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
0
8 259
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Здесь есть действительно хорошая информация об алгоритме:

http://www.paulgraham.com/spam.html

http://www.paulgraham.com/better.html

Но если серьезно, зачем изобретать велосипед?

Просто скачайте K9: http://keir.net/k9.html

Загляните в Байесовская фильтрация спама.

Я знаю, что у Perl есть для этого библиотека, поэтому я предполагаю, что у java тоже есть такая библиотека.

Некоторые проекты Java с открытым исходным кодом, связанные с байесовской фильтрацией спама (о чем говорила LFSR Consulting):

И еще одно дополнение для C++:

Вы можете делегировать это распределенной службе. Акисмет - очень хорошее решение.

Написание спам-фильтра зависит от ваших требований к масштабируемости.

Если вам нужно масштабируемое решение, то фильтрация содержимого, вероятно, не самый разумный выбор, поскольку она сильно потребляет ресурсы процессора и памяти, и вместо этого вы бы предпочли выбрать либо фильтрацию на основе репутации, либо фильтрацию на основе черного списка, что будет намного удобнее для процессора. на вашем сервере так же гораздо проще писать.

Я написал сообщение в моем блоге, который объясняет идею написания спам-фильтра с точки зрения программиста и охватывает все варианты от фильтрации на основе содержимого до фильтрации на основе черного списка.

Другие вопросы по теме